From 0fa8705d4a769772eb396294e529726016bd89f1 Mon Sep 17 00:00:00 2001 From: lifegpc Date: Fri, 31 May 2024 10:06:51 +0800 Subject: [PATCH] Update deps --- Dockerfile | 8 ++-- db.ts | 2 +- import_map.json | 18 +++----- page/GalleryPage.ts | 2 +- page/HomeOverviewPage.ts | 2 +- page/MPVPage.ts | 2 +- page/SinglePage.ts | 2 +- scripts/download_ffi.ts | 4 +- server/auth.ts | 24 ---------- server/bs5.ts | 3 -- server/cfg.ts | 50 --------------------- server/dark.ts | 12 ----- server/dmodule.ts | 58 ------------------------- server/md3.ts | 94 ---------------------------------------- server/state.ts | 38 ---------------- utils.ts | 2 +- utils/db_ffi.ts | 2 +- 17 files changed, 19 insertions(+), 304 deletions(-) delete mode 100644 server/auth.ts delete mode 100644 server/bs5.ts delete mode 100644 server/cfg.ts delete mode 100644 server/dark.ts delete mode 100644 server/dmodule.ts delete mode 100644 server/md3.ts delete mode 100644 server/state.ts diff --git a/Dockerfile b/Dockerfile index 04f1117..abf649c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -96,16 +96,16 @@ COPY ./LICENSE ./ ENV LD_LIBRARY_PATH=/app/lib ENV PATH=/app/bin:$PATH +ENV DENO_DEPLOYMENT_ID=${DENO_DEPLOYMENT_ID} +ENV DOCKER=true +ENV DB_USE_FFI=true +ENV DENO_SQLITE_PATH=/app/lib/libsqlite3.so RUN deno task server-build && deno task prebuild && \ deno task cache && rm -rf ~/.cache && \ mkdir -p ./thumbnails && chmod 777 ./thumbnails && \ mkdir -p ./downloads && chmod 777 ./downloads && \ mkdir -p ./data && chmod 777 ./data && chmod 777 /deno-dir -ENV DENO_DEPLOYMENT_ID=${DENO_DEPLOYMENT_ID} -ENV DOCKER=true -ENV DB_USE_FFI=true -ENV DENO_SQLITE_PATH=/app/lib/libsqlite3.so EXPOSE 8000 ENTRYPOINT ["/tini", "--", "deno", "task", "server"] diff --git a/db.ts b/db.ts index 2bd4e82..decb8f4 100644 --- a/db.ts +++ b/db.ts @@ -7,7 +7,7 @@ import { import { unescape } from "@std/html"; import { join, resolve } from "@std/path"; import { SqliteError } from "sqlite/mod.ts"; -import { SqliteError as Sqlite3Error } from "sqlite3/mod.ts"; +import { SqliteError as Sqlite3Error } from "sqlite3"; import { Status } from "sqlite/src/constants.ts"; import { parse_bool, sleep, sure_dir_sync, try_remove_sync } from "./utils.ts"; import { Task, TaskType } from "./task.ts"; diff --git a/import_map.json b/import_map.json index b7f3347..e64b8ce 100644 --- a/import_map.json +++ b/import_map.json @@ -8,9 +8,9 @@ "@std/jsonc": "jsr:/@std/jsonc@0.224.0", "@std/path": "jsr:/@std/path@0.225.1", "@std/semver": "jsr:/@std/semver@0.224.1", - "deno_dom/": "https://deno.land/x/deno_dom@v0.1.43/", + "deno_dom/": "jsr:/@b-fuze/deno-dom@0.1.47/", "sqlite/": "https://deno.land/x/sqlite@v3.8/", - "zipjs/": "https://deno.land/x/zipjs@v2.7.33/", + "zipjs/": "https://deno.land/x/zipjs@v2.7.45/", "$fresh/": "https://deno.land/x/fresh@1.6.3/", "preact": "https://esm.sh/preact@10.19.2", "preact/": "https://esm.sh/preact@10.19.2/", @@ -20,23 +20,17 @@ "twind": "https://esm.sh/twind@0.16.19", "twind/": "https://esm.sh/twind@0.16.19/", "$std/": "https://deno.land/std@0.211.0/", - "preact-material-components/": "https://esm.sh/v122/preact-material-components@1.6.1/deno/", "accept-language-parser/": "https://esm.sh/accept-language-parser@1.5.0/", - "sortable": "https://esm.sh/gh/SortableJS/Sortable@1.15.0/Sortable.min.js", - "esbuild/": "https://deno.land/x/esbuild@v0.20.0/", + "esbuild/": "https://deno.land/x/esbuild@v0.21.4/", "lifegpc-md5": "https://esm.sh/lifegpc-md5@1.0.3", - "meilisearch": "https://esm.sh/meilisearch@0.37.0", + "meilisearch": "https://esm.sh/meilisearch@0.40.0", "lodash/": "https://esm.sh/lodash@4.17.21/", - "mime": "https://esm.sh/mime@4.0.1", + "mime": "https://esm.sh/mime@4.0.3", "pbkdf2-hmac": "https://esm.sh/pbkdf2-hmac@1.2.1", "pbkdf2-hmac/": "https://esm.sh/pbkdf2-hmac@1.2.1/", "randomstring": "https://esm.sh/randomstring@1.3.0", - "@material/web/": "https://unpkg.lifegpc.workers.dev/@material/web@1.0.0-pre.13/", - "@lit-labs/react/": "https://esm.sh/@lit-labs/react@1.2.1/", - "bootstrap/": "https://esm.sh/bootstrap@5.3.0/", - "filesize": "https://esm.sh/filesize@10.1.0", "pwn/": "https://deno.land/x/pwn@1.0.0/", - "sqlite3/": "https://deno.land/x/sqlite3@0.10.0/", + "sqlite3": "jsr:/@db/sqlite@0.11.1", "async/": "https://deno.land/x/async@v2.1.0/" } } diff --git a/page/GalleryPage.ts b/page/GalleryPage.ts index 6812dfa..6404f53 100644 --- a/page/GalleryPage.ts +++ b/page/GalleryPage.ts @@ -1,4 +1,4 @@ -import { DOMParser, Element } from "deno_dom/deno-dom-wasm-noinit.ts"; +import { DOMParser, Element } from "deno_dom/wasm-noinit"; import { extname } from "@std/path"; import { Client } from "../client.ts"; import type { EhFile, PMeta } from "../db.ts"; diff --git a/page/HomeOverviewPage.ts b/page/HomeOverviewPage.ts index ef2a10c..74a47e8 100644 --- a/page/HomeOverviewPage.ts +++ b/page/HomeOverviewPage.ts @@ -1,4 +1,4 @@ -import { DOMParser, Element } from "deno_dom/deno-dom-wasm-noinit.ts"; +import { DOMParser, Element } from "deno_dom/wasm-noinit"; import { initDOMParser } from "../utils.ts"; export class HomeOverviewPage { diff --git a/page/MPVPage.ts b/page/MPVPage.ts index c8a7365..633f994 100644 --- a/page/MPVPage.ts +++ b/page/MPVPage.ts @@ -1,4 +1,4 @@ -import { DOMParser } from "deno_dom/deno-dom-wasm-noinit.ts"; +import { DOMParser } from "deno_dom/wasm-noinit"; import { extname } from "@std/path"; import { Client } from "../client.ts"; import { initDOMParser } from "../utils.ts"; diff --git a/page/SinglePage.ts b/page/SinglePage.ts index 56d001f..7ad80f9 100644 --- a/page/SinglePage.ts +++ b/page/SinglePage.ts @@ -1,4 +1,4 @@ -import { DOMParser } from "deno_dom/deno-dom-wasm-noinit.ts"; +import { DOMParser } from "deno_dom/wasm-noinit"; import { Client } from "../client.ts"; import { initDOMParser } from "../utils.ts"; diff --git a/scripts/download_ffi.ts b/scripts/download_ffi.ts index bdc9a72..9425091 100644 --- a/scripts/download_ffi.ts +++ b/scripts/download_ffi.ts @@ -2,8 +2,8 @@ import { dirname } from "@std/path"; import { sure_dir } from "../utils.ts"; const map = JSON.parse(await Deno.readTextFile("./import_map.json")).imports; -const re = /x\/sqlite3@([0-9\.]+)/; -const sqlite3_version = map["sqlite3/"].match(re)[1]; +const re = /@db\/sqlite@([0-9\.]+)/; +const sqlite3_version = map["sqlite3"].match(re)[1]; async function fetch_file(u: string | URL, p: string) { await sure_dir(dirname(p)); diff --git a/server/auth.ts b/server/auth.ts deleted file mode 100644 index 9bd42f1..0000000 --- a/server/auth.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { parse_bool } from "./parse.ts"; -import { set_state } from "./state.ts"; -import type { StatusData } from "./status.ts"; -import type { BUser } from "./user.ts"; -import type { JSONResult } from "./utils.ts"; - -export async function check_auth_status() { - const re = await fetch("/api/user"); - const u: JSONResult = await re.json(); - if (u.ok) return true; - if (u.status !== 404 && u.status !== 1 && u.status !== 401) { - throw Error(u.error); - } - const re2 = await fetch("/api/status"); - const s: JSONResult = await re2.json(); - if (!s.ok) { - throw Error(u.error); - } - if (s.data.no_user) { - if (!parse_bool(localStorage.getItem("skip_create_root_user"), false)) { - set_state("#/create_root_user"); - } - } else set_state("#/login"); -} diff --git a/server/bs5.ts b/server/bs5.ts deleted file mode 100644 index 1053428..0000000 --- a/server/bs5.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as bs5 from "bootstrap/?target=es2022"; - -export default bs5; diff --git a/server/cfg.ts b/server/cfg.ts deleted file mode 100644 index 8b11f60..0000000 --- a/server/cfg.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { signal } from "@preact/signals"; -import { ConfigType } from "../config.ts"; -import { get_ws_host } from "./utils.ts"; -import type { - ConfigClientSocketData, - ConfigSeverSocketData, -} from "./config.ts"; -import type { DownloadConfig } from "../tasks/download.ts"; -import type { ExportZipConfig } from "../tasks/export_zip.ts"; - -export const cfg = signal(undefined); - -export function initCfg() { - const ws = new WebSocket(`${get_ws_host()}/api/config?current=1&type=ws`); - console.log(ws); - function sendMessage(mes: ConfigClientSocketData) { - ws.send(JSON.stringify(mes)); - } - ws.onmessage = (e) => { - const d: ConfigSeverSocketData = JSON.parse(e.data); - if (d.type === "close") { - ws.close(); - } else if (d.type === "cfg") { - cfg.value = d.cfg; - } - }; - self.addEventListener("beforeunload", () => { - sendMessage({ type: "close" }); - }); -} - -export function generate_download_cfg(): DownloadConfig { - if (!cfg.value) return {}; - const c = cfg.value; - return { - download_original_img: c.download_original_img, - max_download_img_count: c.max_download_img_count, - max_retry_count: c.max_retry_count, - mpv: c.mpv, - remove_previous_gallery: c.remove_previous_gallery, - }; -} - -export function generate_export_zip_cfg(): ExportZipConfig { - if (!cfg.value) return {}; - const c = cfg.value; - return { - jpn_title: c.export_zip_jpn_title, - }; -} diff --git a/server/dark.ts b/server/dark.ts deleted file mode 100644 index ac17cbb..0000000 --- a/server/dark.ts +++ /dev/null @@ -1,12 +0,0 @@ -export function detect_darkmode() { - return window.matchMedia && - window.matchMedia("(prefers-color-scheme: dark)").matches; -} - -export function addDarkModeListener(e: (e: MediaQueryListEvent) => void) { - return window.matchMedia && - window.matchMedia("(prefers-color-scheme: dark)").addEventListener( - "change", - e, - ); -} diff --git a/server/dmodule.ts b/server/dmodule.ts deleted file mode 100644 index 9ee9b74..0000000 --- a/server/dmodule.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { signal } from "@preact/signals"; -import type { - MdDialog as _MdDialog, - MdMenu as _MdMenu, - MdMenuItem as _MdMenuItem, - MdOutlinedButton as _MdOutlinedButton, - MdOutlinedSelect as _MdOutlinedSelect, - MdOutlinedTextField as _MdOutlinedTextField, - MdSelectOption as _MdSelectOption, - MdTextButton as _MdTextButton, - MdTonalButton as _MdTonalButton, -} from "./md3.ts"; -import type _bs5 from "./bs5.ts"; - -export const MdOutlinedTextField = signal< - typeof _MdOutlinedTextField | undefined ->(undefined); - -export const MdOutlinedButton = signal( - undefined, -); - -export const MdTonalButton = signal( - undefined, -); - -export const MdSelectOption = signal( - undefined, -); - -export const MdOutlinedSelect = signal( - undefined, -); - -export const MdDialog = signal(undefined); - -export const MdTextButton = signal(undefined); - -export const MdMenu = signal(undefined); - -export const MdMenuItem = signal(undefined); - -export const bs5 = signal(undefined); - -export async function load_dmodule() { - const md3 = await import("./md3.ts"); - MdOutlinedTextField.value = md3.MdOutlinedTextField; - MdOutlinedButton.value = md3.MdOutlinedButton; - MdTonalButton.value = md3.MdTonalButton; - MdSelectOption.value = md3.MdSelectOption; - MdOutlinedSelect.value = md3.MdOutlinedSelect; - MdDialog.value = md3.MdDialog; - MdTextButton.value = md3.MdTextButton; - MdMenu.value = md3.MdMenu; - MdMenuItem.value = md3.MdMenuItem; - const b = await import("./bs5.ts"); - bs5.value = b.default; -} diff --git a/server/md3.ts b/server/md3.ts deleted file mode 100644 index e975b3e..0000000 --- a/server/md3.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { MdOutlinedTextField as _MdOutlinedTextField } from "@material/web/textfield/outlined-text-field.js?module"; -import { MdOutlinedButton as _MdOutlinedButton } from "@material/web/button/outlined-button.js?module"; -import { MdTonalButton as _MdTonalButton } from "@material/web/button/tonal-button.js?module"; -import { MdSelectOption as _MdSelectOption } from "@material/web/select/select-option.js?module"; -import { MdOutlinedSelect as _MdOutlinedSelect } from "@material/web/select/outlined-select.js?module"; -import { MdDialog as _MdDialog } from "@material/web/dialog/dialog.js?module"; -import { MdTextButton as _MdTextButton } from "@material/web/button/text-button.js?module"; -import { MdMenu as _MdMenu } from "@material/web/menu/menu.js?module"; -import { MdMenuItem as _MdMenuItem } from "@material/web/menu/menu-item.js?module"; -import { createComponent } from "@lit-labs/react/?target=es2022"; -import * as Preact from "preact/compat"; - -export const MdOutlinedTextField = createComponent({ - tagName: "md-outlined-text-field", - elementClass: _MdOutlinedTextField, - // @ts-ignore Checked - react: Preact, -}); - -export const MdOutlinedButton = createComponent({ - tagName: "md-outlined-button", - elementClass: _MdOutlinedButton, - // @ts-ignore Checked - react: Preact, -}); - -export const MdTonalButton = createComponent({ - tagName: "md-tonal-button", - elementClass: _MdTonalButton, - // @ts-ignore Checked - react: Preact, -}); - -export const MdSelectOption = createComponent({ - tagName: "md-select-option", - elementClass: _MdSelectOption, - // @ts-ignore Checked - react: Preact, -}); - -export const MdOutlinedSelect = createComponent({ - tagName: "md-outlined-select", - elementClass: _MdOutlinedSelect, - // @ts-ignore Checked - react: Preact, -}); - -export type DialogAction = { - action: string; -}; - -export const MdDialog = createComponent({ - tagName: "md-dialog", - elementClass: _MdDialog, - // @ts-ignore Checked - react: Preact, - events: { - "onopening": "opening", - "onopened": "opened", - "onclosing": "closing", - "onclosed": "closed", - }, -}); - -export const MdTextButton = createComponent({ - tagName: "md-text-button", - elementClass: _MdTextButton, - // @ts-ignore Checked - react: Preact, -}); - -export const MdMenu = createComponent({ - tagName: "md-menu", - elementClass: _MdMenu, - // @ts-ignore Checked - react: Preact, -}); - -export const MdMenuItem = createComponent({ - tagName: "md-menu-item", - elementClass: _MdMenuItem, - // @ts-ignore Checked - react: Preact, -}); - -export { _MdOutlinedTextField }; -export { _MdOutlinedButton }; -export { _MdTonalButton }; -export { _MdSelectOption }; -export { _MdOutlinedSelect }; -export { _MdDialog }; -export { _MdTextButton }; -export { _MdMenu }; -export { _MdMenuItem }; diff --git a/server/state.ts b/server/state.ts deleted file mode 100644 index 2c2c4ef..0000000 --- a/server/state.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { signal } from "@preact/signals"; -import { StateUpdater } from "preact/hooks"; - -export const state = signal("#/"); -let listener: StateUpdater | undefined = undefined; - -export function initState(l: StateUpdater) { - const hash = document.location.hash; - listener = l; - if (!hash || hash == "#") { - set_state("#/"); - } else { - set_state(hash); - } - self.addEventListener("popstate", (e) => { - const s = e.state; - if (typeof s === "string") { - l(s); - } else { - l("#/"); - } - }); - self.addEventListener("hashchange", (_) => { - const hash = document.location.hash; - if (!hash || hash == "#") { - l("#/"); - } else { - l(hash); - } - }); -} - -export const set_state: StateUpdater = (updater) => { - const v = typeof updater === "function" ? updater(state.value) : updater; - state.value = v; - history.pushState(v, "", v); - if (listener) listener(v); -}; diff --git a/utils.ts b/utils.ts index 3fb5171..1d9d4d5 100644 --- a/utils.ts +++ b/utils.ts @@ -1,6 +1,6 @@ import { exists, existsSync } from "@std/fs/exists"; import { extname } from "@std/path"; -import { initParser } from "deno_dom/deno-dom-wasm-noinit.ts"; +import { initParser } from "deno_dom/wasm-noinit"; import { configure } from "zipjs/index.js"; import { MD5 } from "lifegpc-md5"; diff --git a/utils/db_ffi.ts b/utils/db_ffi.ts index 5f07e48..5e523db 100644 --- a/utils/db_ffi.ts +++ b/utils/db_ffi.ts @@ -1,4 +1,4 @@ -import { Database, DatabaseOpenOptions } from "sqlite3/mod.ts"; +import { Database, DatabaseOpenOptions } from "sqlite3"; import { QueryParameterSet, Row, RowObject } from "./db_interface.ts"; export class DbFfi {