From 1c46e0205e6b076ca754727c74394db5b18b9130 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Mon, 10 Mar 2025 12:08:44 +0800 Subject: [PATCH 01/93] init add inference-worker --- package.json | 5 +- shadow-cljs.edn | 4 + src/main/frontend/handler.cljs | 1 + .../inference_worker/inference_worker.cljs | 12 + src/main/frontend/persist_db/browser.cljs | 8 + yarn.lock | 550 +++++++++++++++++- 6 files changed, 556 insertions(+), 24 deletions(-) create mode 100644 src/main/frontend/inference_worker/inference_worker.cljs diff --git a/package.json b/package.json index 8057bd7a0f..30130c22e8 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,9 @@ "del": "^6.0.0", "glob": "9.0.0", "gulp": "^4.0.2", - "gulp-replace": "^1.1.4", "gulp-postcss": "^10.0.0", + "gulp-replace": "^1.1.4", "ip": "1.1.9", - "semver": "7.5.2", "karma": "^6.4.4", "karma-chrome-launcher": "^3.2.0", "karma-cljs-test": "^0.1.0", @@ -33,6 +32,7 @@ "postcss-import-ext-glob": "2.0.1", "postcss-nested": "6.0.0", "purgecss": "4.0.2", + "semver": "7.5.2", "shadow-cljs": "2.26.0", "stylelint": "^13.8.0", "stylelint-config-standard": "^20.0.0", @@ -107,6 +107,7 @@ "@excalidraw/excalidraw": "0.16.1", "@glidejs/glide": "^3.6.0", "@highlightjs/cdn-assets": "10.4.1", + "@huggingface/transformers": "^3.4.0", "@isomorphic-git/lightning-fs": "^4.6.0", "@js-joda/core": "3.2.0", "@js-joda/locale_en-us": "3.1.1", diff --git a/shadow-cljs.edn b/shadow-cljs.edn index ea77c76717..d463ea75c6 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -32,6 +32,10 @@ :depends-on #{:main}} :db-worker {:init-fn frontend.worker.db-worker/init + :depends-on #{:shared} + :web-worker true} + :inference-worker + {:init-fn frontend.inference-worker.inference-worker/init :depends-on #{:shared} :web-worker true}} diff --git a/src/main/frontend/handler.cljs b/src/main/frontend/handler.cljs index 9da704c3e0..2b7af869ff 100644 --- a/src/main/frontend/handler.cljs +++ b/src/main/frontend/handler.cljs @@ -167,6 +167,7 @@ (when (mobile-util/native-platform?) (mobile/mobile-preinit)) (-> (p/let [_ (db-browser/start-db-worker!) + _ (db-browser/start-inference-worker!) repos (repo-handler/get-repos) _ (state/set-repos! repos) _ (mobile-util/hide-splash) ;; hide splash as early as ui is stable diff --git a/src/main/frontend/inference_worker/inference_worker.cljs b/src/main/frontend/inference_worker/inference_worker.cljs new file mode 100644 index 0000000000..3c89ac6a4b --- /dev/null +++ b/src/main/frontend/inference_worker/inference_worker.cljs @@ -0,0 +1,12 @@ +(ns frontend.inference-worker.inference-worker + "Worker used for text embedding and vector-db" + (:require + [lambdaisland.glogi.console :as glogi-console] + [lambdaisland.glogi :as log])) + + + +(defn init + [] + (glogi-console/install!) + (log/info :init 1)) diff --git a/src/main/frontend/persist_db/browser.cljs b/src/main/frontend/persist_db/browser.cljs index f8e4348a46..a0092dff27 100644 --- a/src/main/frontend/persist_db/browser.cljs +++ b/src/main/frontend/persist_db/browser.cljs @@ -148,6 +148,14 @@ (js/console.error error) (notification/show! "It seems that OPFS is not supported on this browser, please upgrade this browser to the latest version or use another browser." :error))))))) +(defn start-inference-worker! + [] + (when-not util/node-test? + (let [worker-url (if (util/electron?) + "js/inference-worker.js" + "static/js/inference-worker.js") + _worker (js/Worker. (str worker-url "?electron=" (util/electron?) "&publishing=" config/publishing?))]))) + (defn =13.7.0": + version "22.13.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.10.tgz#df9ea358c5ed991266becc3109dc2dc9125d77e4" + integrity sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw== + dependencies: + undici-types "~6.20.0" + "@types/node@^20.9.0": version "20.17.10" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.10.tgz#3f7166190aece19a0d1d364d75c8b0b5778c1e18" @@ -1253,6 +1472,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1267,6 +1491,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -2017,6 +2246,11 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chownr@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" + integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== + chrono-node@2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/chrono-node/-/chrono-node-2.2.4.tgz#0fa169e1d158935bb1d541010046f6107576347d" @@ -2202,11 +2436,27 @@ color-space@^2.0.0: resolved "https://registry.yarnpkg.com/color-space/-/color-space-2.0.1.tgz#da39871175baf4a5785ba519397df04b8d67e0fa" integrity sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA== +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colord@^2.9.1: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" @@ -2397,6 +2647,15 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -2735,6 +2994,11 @@ detect-libc@^2.0.0: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== +detect-libc@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + detect-node@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" @@ -2885,6 +3149,11 @@ earcut@^2.2.2: resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -2950,6 +3219,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -3484,6 +3758,11 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" +flatbuffers@^25.1.24: + version "25.2.10" + resolved "https://registry.yarnpkg.com/flatbuffers/-/flatbuffers-25.2.10.tgz#308b750545f62db670ca4c9d7dbc66161420a95e" + integrity sha512-7JlN9ZvLDG1McO3kbX0k4v+SUAg48L1rIwEvN6ZQl/eCtgJz9UylTMzE9wrmYrcorgxm3CX/3T/w5VAub99UUw== + flatted@^3.2.7: version "3.2.9" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" @@ -3521,6 +3800,14 @@ for-own@^1.0.0: dependencies: for-in "^1.0.1" +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + fraction.js@^4.3.6: version "4.3.6" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.6.tgz#e9e3acec6c9a28cf7bc36cbe35eea4ceb2c5c92d" @@ -3786,6 +4073,18 @@ glob@9.0.0: minipass "^4.2.4" path-scurry "^1.5.0" +glob@^10.3.7: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.7: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -3952,6 +4251,11 @@ graphology@0.20.0: events "^3.3.0" obliterator "^1.6.1" +guid-typescript@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/guid-typescript/-/guid-typescript-1.0.9.tgz#e35f77003535b0297ea08548f5ace6adb1480ddc" + integrity sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ== + gulp-cli@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" @@ -4392,6 +4696,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -4767,6 +5076,15 @@ istextorbinary@^3.0.0: binaryextensions "^2.2.0" textextensions "^3.2.0" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jiti@^1.19.1: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" @@ -5120,6 +5438,11 @@ log4js@^6.4.1: rfdc "^1.3.0" streamroller "^3.1.5" +long@^5.0.0, long@^5.2.3: + version "5.3.1" + resolved "https://registry.yarnpkg.com/long/-/long-5.3.1.tgz#9d4222d3213f38a5ec809674834e0f0ab21abe96" + integrity sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng== + longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" @@ -5436,6 +5759,13 @@ minimatch@^8.0.2: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -5472,6 +5802,11 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== +minipass@^7.0.4, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -5480,6 +5815,14 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" +minizlib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.1.tgz#46d5329d1eb3c83924eff1d3b858ca0a31581012" + integrity sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg== + dependencies: + minipass "^7.0.4" + rimraf "^5.0.5" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5500,6 +5843,11 @@ mkdirp@^1.0.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + mldoc@^1.5.9: version "1.5.9" resolved "https://registry.yarnpkg.com/mldoc/-/mldoc-1.5.9.tgz#43d740351c64285f0f4988ac9497922d54ae66fc" @@ -5861,6 +6209,36 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: dependencies: wrappy "1" +onnxruntime-common@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.20.1.tgz#b42e317d4d6728745b9e8089617c8cd938d312dc" + integrity sha512-YiU0s0IzYYC+gWvqD1HzLc46Du1sXpSiwzKb63PACIJr6LfL27VsXSXQvt68EzD3V0D5Bc0vyJTjmMxp0ylQiw== + +onnxruntime-common@1.22.0-dev.20250306-aafa8d170a: + version "1.22.0-dev.20250306-aafa8d170a" + resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.22.0-dev.20250306-aafa8d170a.tgz#e9b2a1744d42f00c54adad96330a4330e2d23193" + integrity sha512-NfIQnW4lIk/8LnhnYqknYPeet0U0+AADgKQRlKex36QrNoVSCY+aNaX6wyy2VzQ4CNWxsYh0E203ajRD/zxn0g== + +onnxruntime-node@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/onnxruntime-node/-/onnxruntime-node-1.20.1.tgz#a5ba0bd160aeccdb4b7d36fbc2f6a97bde1f7843" + integrity sha512-di/I4HDXRw+FLgq+TyHmQEDd3cEp9iFFZm0r4uJ1Wd7b/WE1VXtKWo8yemex347c6GNF/3Pv86ZfPhIWxORr0w== + dependencies: + onnxruntime-common "1.20.1" + tar "^7.0.1" + +onnxruntime-web@1.22.0-dev.20250306-ccf8fdd9ea: + version "1.22.0-dev.20250306-ccf8fdd9ea" + resolved "https://registry.yarnpkg.com/onnxruntime-web/-/onnxruntime-web-1.22.0-dev.20250306-ccf8fdd9ea.tgz#fc9618b8b790dbca5c0884d09fd889237742bf3d" + integrity sha512-YwqS9Qqx2eKFXIx+HQloqRUG5/STHPUuNk8wn+qVVmwXBIfNdXX0/Lm7wgo5CnC2k+yqZmjDV5V1dZi4PeSPGQ== + dependencies: + flatbuffers "^25.1.24" + guid-typescript "^1.0.9" + long "^5.2.3" + onnxruntime-common "1.22.0-dev.20250306-aafa8d170a" + platform "^1.3.6" + protobufjs "^7.2.4" + open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -5951,6 +6329,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + pako@~1.0.2, pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -6104,7 +6487,7 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" -path-scurry@^1.5.0: +path-scurry@^1.11.1, path-scurry@^1.5.0: version "1.11.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== @@ -6308,6 +6691,11 @@ pixi.js@6.2.0: "@pixi/ticker" "6.2.0" "@pixi/utils" "6.2.0" +platform@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== + playwright-core@1.38.1: version "1.38.1" resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.38.1.tgz#75a3c470aa9576b7d7c4e274de3d79977448ba08" @@ -6812,6 +7200,24 @@ prop-types@15.x, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, pro object-assign "^4.1.1" react-is "^16.13.1" +protobufjs@^7.2.4: + version "7.4.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.4.0.tgz#7efe324ce9b3b61c82aae5de810d287bc08a248a" + integrity sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -7389,6 +7795,13 @@ rimraf@^4.4.1: dependencies: glob "^9.2.0" +rimraf@^5.0.5: + version "5.0.10" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -7518,6 +7931,11 @@ semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: dependencies: lru-cache "^6.0.0" +semver@^7.6.3: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + send-intent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/send-intent/-/send-intent-5.0.0.tgz#95d00455a7db4d95d9f79f8203698e96760c7408" @@ -7602,6 +8020,35 @@ shallowequal@^1.1.0: resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== +sharp@^0.33.5: + version "0.33.5" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e" + integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw== + dependencies: + color "^4.2.3" + detect-libc "^2.0.3" + semver "^7.6.3" + optionalDependencies: + "@img/sharp-darwin-arm64" "0.33.5" + "@img/sharp-darwin-x64" "0.33.5" + "@img/sharp-libvips-darwin-arm64" "1.0.4" + "@img/sharp-libvips-darwin-x64" "1.0.4" + "@img/sharp-libvips-linux-arm" "1.0.5" + "@img/sharp-libvips-linux-arm64" "1.0.4" + "@img/sharp-libvips-linux-s390x" "1.0.4" + "@img/sharp-libvips-linux-x64" "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + "@img/sharp-linux-arm" "0.33.5" + "@img/sharp-linux-arm64" "0.33.5" + "@img/sharp-linux-s390x" "0.33.5" + "@img/sharp-linux-x64" "0.33.5" + "@img/sharp-linuxmusl-arm64" "0.33.5" + "@img/sharp-linuxmusl-x64" "0.33.5" + "@img/sharp-wasm32" "0.33.5" + "@img/sharp-win32-ia32" "0.33.5" + "@img/sharp-win32-x64" "0.33.5" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -7654,6 +8101,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -7668,6 +8120,13 @@ simple-get@^3.0.3: once "^1.3.1" simple-concat "^1.0.0" +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -7937,6 +8396,15 @@ strictdom@^1.0.1: resolved "https://registry.yarnpkg.com/strictdom/-/strictdom-1.0.1.tgz#189de91649f73d44d59b8432efa68ef9d2659460" integrity sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg== +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -7946,15 +8414,6 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -7963,6 +8422,15 @@ string-width@^2.0.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.padend@^3.0.0: version "3.1.5" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz#311ef3a4e3c557dd999cdf88fbdde223f2ac0f95" @@ -8013,6 +8481,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -8027,12 +8502,12 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - ansi-regex "^5.0.1" + ansi-regex "^6.0.1" strip-bom@^2.0.0: version "2.0.0" @@ -8270,6 +8745,18 @@ tar@^6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" +tar@^7.0.1: + version "7.4.3" + resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571" + integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw== + dependencies: + "@isaacs/fs-minipass" "^4.0.0" + chownr "^3.0.0" + minipass "^7.1.2" + minizlib "^3.0.1" + mkdirp "^3.0.1" + yallist "^5.0.0" + text-segmentation@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943" @@ -8621,6 +9108,11 @@ undici-types@~6.19.2: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + unified@^9.1.0: version "9.2.2" resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" @@ -8976,6 +9468,15 @@ wide-align@^1.1.2: dependencies: string-width "^1.0.2 || 2 || 3 || 4" +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -8984,14 +9485,14 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" wrappy@1: version "1.0.2" @@ -9066,6 +9567,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yallist@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533" + integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== + yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" From 5632c29ba03d6a2af12a14891d40ff1eee8d56fc Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 10 Mar 2025 15:05:19 +0800 Subject: [PATCH 02/93] wip: webpack integration --- deps.edn | 2 +- package.json | 9 +- public/index.html | 1 + resources/index.html | 1 + shadow-cljs.edn | 4 +- .../inference_worker/inference_worker.cljs | 8 +- webpack.config.js | 29 + yarn.lock | 860 +++++++++++++++++- 8 files changed, 890 insertions(+), 24 deletions(-) create mode 100644 webpack.config.js diff --git a/deps.edn b/deps.edn index 2f62a543c9..701119e6d2 100644 --- a/deps.edn +++ b/deps.edn @@ -24,7 +24,7 @@ hiccups/hiccups {:mvn/version "0.3.0"} tongue/tongue {:mvn/version "0.4.4"} org.clojure/core.async {:mvn/version "1.6.673"} - thheller/shadow-cljs {:mvn/version "2.19.0"} + thheller/shadow-cljs {:mvn/version "2.28.21"} expound/expound {:mvn/version "0.8.6"} com.lambdaisland/glogi {:mvn/version "1.1.144"} binaryage/devtools {:mvn/version "1.0.5"} diff --git a/package.json b/package.json index 30130c22e8..f368966711 100644 --- a/package.json +++ b/package.json @@ -31,14 +31,17 @@ "postcss-import": "15.0.0", "postcss-import-ext-glob": "2.0.1", "postcss-nested": "6.0.0", + "process": "^0.11.10", "purgecss": "4.0.2", "semver": "7.5.2", - "shadow-cljs": "2.26.0", + "shadow-cljs": "2.28.21", "stylelint": "^13.8.0", "stylelint-config-standard": "^20.0.0", "tailwindcss": "3.3.5", "tailwindcss-animate": "^1.0.7", - "typescript": "^4.4.3" + "typescript": "^4.4.3", + "webpack": "^5.98.0", + "webpack-cli": "^6.0.1" }, "scripts": { "watch": "run-p gulp:watch cljs:watch", @@ -50,6 +53,7 @@ "dev-electron-app": "gulp electron", "release-electron": "run-s gulp:build && gulp electronMaker", "debug-electron": "cd static/ && yarn electron:debug", + "webpack": "webpack --watch", "e2e-test": "cross-env DEBUG=pw:api CI=true npx playwright test --reporter github", "run-android-release": "yarn clean && yarn release-app && rm -rf ./public/static && rm -rf ./static/js/*.map && mv static ./public && npx cap sync android && npx cap run android", "run-ios-release": "yarn clean && yarn release-app && rm -rf ./public/static && rm -rf ./static/js/*.map && mv static ./public && npx cap sync ios && npx cap run ios", @@ -173,6 +177,7 @@ "tailwind-capitalize-first-letter": "^1.0.4", "threads": "1.6.5", "url": "^0.11.0", + "util": "^0.12.5", "yargs-parser": "20.2.4" }, "resolutions": { diff --git a/public/index.html b/public/index.html index 0789a46e3b..3aca92f98a 100644 --- a/public/index.html +++ b/public/index.html @@ -55,6 +55,7 @@ + diff --git a/resources/index.html b/resources/index.html index 142c44e26d..cb4340fa8d 100644 --- a/resources/index.html +++ b/resources/index.html @@ -54,6 +54,7 @@ const portal = new MagicPortal(worker); + diff --git a/shadow-cljs.edn b/shadow-cljs.edn index d463ea75c6..7df7f7614a 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -11,7 +11,9 @@ :builds {:app {:target :browser :module-loader true - :js-options {:ignore-asset-requires true + :js-options {:js-provider :external + :external-index "target/index.js" + :ignore-asset-requires true :resolve {"react" {:target :global :global "React"} "react-dom" {:target :global diff --git a/src/main/frontend/inference_worker/inference_worker.cljs b/src/main/frontend/inference_worker/inference_worker.cljs index 3c89ac6a4b..4ba5479e5f 100644 --- a/src/main/frontend/inference_worker/inference_worker.cljs +++ b/src/main/frontend/inference_worker/inference_worker.cljs @@ -1,10 +1,8 @@ (ns frontend.inference-worker.inference-worker "Worker used for text embedding and vector-db" - (:require - [lambdaisland.glogi.console :as glogi-console] - [lambdaisland.glogi :as log])) - - + (:require ["@huggingface/transformers" :refer [AutoTokenizer]] + [lambdaisland.glogi :as log] + [lambdaisland.glogi.console :as glogi-console])) (defn init [] diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000000..ed24a88960 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,29 @@ +const path = require('path'); +const webpack = require('webpack'); + +module.exports = { + mode: "development", + entry: './target/index.js', + output: { + path: path.resolve(__dirname, 'static/js/libs'), + filename: 'bundle.js', + clean: true, + }, + module: { + rules: [ + { + // docs: https://webpack.js.org/configuration/module/#resolvefullyspecified + test: /\.m?js/, + resolve: { + fullySpecified: false, + } + } + ] + }, + plugins: [ + // fix "process is not defined" error: + new webpack.ProvidePlugin({ + process: 'process/browser', + }), + ], +}; diff --git a/yarn.lock b/yarn.lock index 727f4ba52e..9277bdc1b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -345,6 +345,11 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== +"@discoveryjs/json-ext@^0.6.1": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz#f13c7c205915eb91ae54c557f5e92bddd8be0e83" + integrity sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ== + "@dnd-kit/accessibility@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@dnd-kit/accessibility/-/accessibility-3.0.1.tgz#3ccbefdfca595b0a23a5dc57d3de96bc6935641c" @@ -683,6 +688,15 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -693,6 +707,19 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -706,6 +733,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@js-joda/core@3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-3.2.0.tgz#3e61e21b7b2b8a6be746df1335cf91d70db2a273" @@ -1235,6 +1270,27 @@ resolved "https://registry.yarnpkg.com/@types/earcut/-/earcut-2.1.2.tgz#26c6a9506247f8059e5569653385f5dbb5b570db" integrity sha512-EU6fwVNP1TGVTkCILfURtzzwJq/ie5LgipELnzCINgm4VdDIkkbB8wnLSe81J77Bbqf4MiO3sJGhWzc6MCp5dQ== +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/expect@^1.20.4": version "1.20.4" resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" @@ -1270,6 +1326,11 @@ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz#abe102d06ccda1efdf0ed98c10ccf7f36a785a41" integrity sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw== +"@types/json-schema@*", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/keyv@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" @@ -1400,11 +1461,157 @@ dependencies: "@types/node" "*" +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-3.0.1.tgz#76ac285b9658fa642ce238c276264589aa2b6b57" + integrity sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA== + +"@webpack-cli/info@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-3.0.1.tgz#3cff37fabb7d4ecaab6a8a4757d3826cf5888c63" + integrity sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ== + +"@webpack-cli/serve@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-3.0.1.tgz#bd8b1f824d57e30faa19eb78e4c0951056f72f00" + integrity sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg== + "@xmldom/xmldom@^0.8.8": version "0.8.10" resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -1418,6 +1625,11 @@ accepts@~1.3.4: mime-types "~2.1.34" negotiator "0.6.3" +acorn@^8.14.0, acorn@^8.8.2: + version "8.14.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" + integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== + agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -1433,6 +1645,30 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ajv@^8.0.1: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" @@ -1741,6 +1977,13 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + axe-core@^4.4.2: version "4.8.2" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" @@ -2000,6 +2243,16 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.10, browserslist@^ node-releases "^2.0.13" update-browserslist-db "^1.0.13" +browserslist@^4.24.0: + version "4.24.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" + integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== + dependencies: + caniuse-lite "^1.0.30001688" + electron-to-chromium "^1.5.73" + node-releases "^2.0.19" + update-browserslist-db "^1.1.1" + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -2072,6 +2325,14 @@ cacheable-request@^7.0.2: normalize-url "^6.0.1" responselike "^2.0.0" +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -2080,6 +2341,24 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -2124,6 +2403,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001538: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz#9dbc6b9af1ff06b5eb12350c2012b3af56744f3f" integrity sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw== +caniuse-lite@^1.0.30001688: + version "1.0.30001703" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz#977cb4920598c158f491ecf4f4f2cfed9e354718" + integrity sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ== + canvas@^2.11.2: version "2.11.2" resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.11.2.tgz#553d87b1e0228c7ac0fc72887c3adbac4abbd860" @@ -2251,6 +2535,11 @@ chownr@^3.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + chrono-node@2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/chrono-node/-/chrono-node-2.2.4.tgz#0fa169e1d158935bb1d541010046f6107576347d" @@ -2327,6 +2616,15 @@ clone-buffer@^1.0.0: resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + clone-regexp@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" @@ -2462,11 +2760,26 @@ colord@^2.9.1: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + comlink@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.1.tgz#e568b8e86410b809e8600eb2cf40c189371ef981" integrity sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q== +commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" @@ -2906,6 +3219,15 @@ define-data-property@^1.0.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -3126,6 +3448,15 @@ domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -3173,6 +3504,11 @@ electron-to-chromium@^1.4.526: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== +electron-to-chromium@^1.5.73: + version "1.5.113" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.113.tgz#1175b8ba4170541e44e9afa8b992e5bbfff0d150" + integrity sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg== + electron@31.7.5: version "31.7.5" resolved "https://registry.yarnpkg.com/electron/-/electron-31.7.5.tgz#98396c75041808b26c7b6a8844cbedacee93d8a6" @@ -3257,6 +3593,14 @@ engine.io@~6.5.2: engine.io-parser "~5.2.1" ws "~8.17.1" +enhanced-resolve@^5.17.1: + version "5.18.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" + integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + ent@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.1.tgz#68dc99a002f115792c26239baedaaea9e70c0ca2" @@ -3279,6 +3623,11 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +envinfo@^7.14.0: + version "7.14.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" + integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3331,6 +3680,28 @@ es-abstract@^1.22.1: unbox-primitive "^1.0.2" which-typed-array "^1.1.11" +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" + integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -3396,6 +3767,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-goat@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" @@ -3416,6 +3792,14 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + esm@^3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" @@ -3431,6 +3815,23 @@ esniff@^2.0.1: event-emitter "^0.3.5" type "^2.7.2" +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + event-emitter@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" @@ -3449,7 +3850,7 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.3.0: +events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -3586,7 +3987,7 @@ fancy-log@^2.0.0: dependencies: color-support "^1.1.3" -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -3617,6 +4018,11 @@ fast-text-encoding@^1.0.0: resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + fastdom@^1.0.9: version "1.0.11" resolved "https://registry.yarnpkg.com/fastdom/-/fastdom-1.0.11.tgz#f22984f9df6b9a6081e5ce2e49cfb5525daf198a" @@ -3705,7 +4111,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -3758,6 +4164,11 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatbuffers@^25.1.24: version "25.2.10" resolved "https://registry.yarnpkg.com/flatbuffers/-/flatbuffers-25.2.10.tgz#308b750545f62db670ca4c9d7dbc66161420a95e" @@ -3788,6 +4199,13 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -3896,6 +4314,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" @@ -3963,6 +4386,30 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" +get-intrinsic@^1.2.4, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stdin@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" @@ -4038,6 +4485,11 @@ glob-stream@^6.1.0: to-absolute-glob "^2.0.0" unique-stream "^2.0.2" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob-watcher@^5.0.3: version "5.0.5" resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc" @@ -4216,6 +4668,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + got@^11.8.5: version "11.8.6" resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" @@ -4233,7 +4690,7 @@ got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4345,6 +4802,13 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -4355,6 +4819,11 @@ has-symbols@^1.0.2, has-symbols@^1.0.3: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-tostringtag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" @@ -4362,6 +4831,13 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -4422,6 +4898,13 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4568,6 +5051,14 @@ import-lazy@^4.0.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -4632,6 +5123,11 @@ interpret@^1.4.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -4682,6 +5178,14 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" +is-arguments@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" + integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -4752,6 +5256,13 @@ is-core-module@^2.13.0, is-core-module@^2.5.0: dependencies: has "^1.0.3" +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4835,6 +5346,16 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" + integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + dependencies: + call-bound "^1.0.3" + get-proto "^1.0.0" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -4933,6 +5454,16 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + is-regexp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" @@ -4978,6 +5509,13 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: dependencies: which-typed-array "^1.1.11" +is-typed-array@^1.1.3: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -5085,6 +5623,15 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jiti@^1.19.1: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" @@ -5110,7 +5657,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -5364,6 +5911,11 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -5549,6 +6101,11 @@ matcher@^3.0.0: dependencies: escape-string-regexp "^4.0.0" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + mathml-tag-names@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" @@ -5633,6 +6190,11 @@ meow@^9.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -5686,7 +6248,7 @@ mime-db@1.52.0, mime-db@^1.28.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -5938,6 +6500,11 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + next-tick@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -5989,6 +6556,11 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + nopt@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" @@ -6581,6 +7153,11 @@ picocolors@^1.1.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -6691,6 +7268,13 @@ pixi.js@6.2.0: "@pixi/ticker" "6.2.0" "@pixi/utils" "6.2.0" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + platform@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" @@ -6750,6 +7334,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -7321,7 +7910,7 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -7563,6 +8152,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -7706,6 +8302,13 @@ resolve-alpn@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -7745,6 +8348,15 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.20.0: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^1.22.2: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" @@ -7858,6 +8470,15 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -7895,6 +8516,16 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.0.tgz#3b669f04f71ff2dfb5aba7ce2d5a9d79b35622c0" + integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -7951,11 +8582,30 @@ serialize-error@^7.0.1: dependencies: type-fest "^0.13.1" +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -8003,10 +8653,10 @@ shadow-cljs-jar@1.3.4: resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz#0939d91c468b4bc5eab5a958f79e7ef5696fdf62" integrity sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA== -shadow-cljs@2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.26.0.tgz#2a40d32f00da9bdd562ae634fe44ab2fbd0a073f" - integrity sha512-/GkAXhTMGG3rnoRORN5U+1nQfQD2AESb9+fnV8Cu2SxQ+wEoXhtoBnsa1GexFQ8+80Wz/s7rFf0PvTXkuM7lJQ== +shadow-cljs@2.28.21: + version "2.28.21" + resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.28.21.tgz#75e871f22b08f040f1e87c27cf0c02f3d48ffb44" + integrity sha512-O5VUJkTh0bWqPBSKoWnQwEe/jfvbxHkzCA7SEx8f1Eavb7nDFcoNFDkgGjJtaAyaaSw/cmABrT2EeksnXw/25g== dependencies: node-libs-browser "^2.2.1" readline-sync "^1.4.7" @@ -8015,6 +8665,13 @@ shadow-cljs@2.26.0: which "^1.3.1" ws "^7.4.6" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -8257,6 +8914,14 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -8267,7 +8932,7 @@ source-map@^0.5.1, source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -8396,7 +9061,7 @@ strictdom@^1.0.1: resolved "https://registry.yarnpkg.com/strictdom/-/strictdom-1.0.1.tgz#189de91649f73d44d59b8432efa68ef9d2659460" integrity sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg== -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8414,6 +9079,15 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -8481,7 +9155,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -8502,6 +9176,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -8653,6 +9334,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -8733,6 +9421,11 @@ tailwindcss@3.3.5: resolve "^1.22.2" sucrase "^3.32.0" +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tar@^6.1.11: version "6.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" @@ -8757,6 +9450,27 @@ tar@^7.0.1: mkdirp "^3.0.1" yallist "^5.0.0" +terser-webpack-plugin@^5.3.11: + version "5.3.14" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" + integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser@^5.31.1: + version "5.39.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a" + integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + text-segmentation@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943" @@ -9211,6 +9925,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -9277,6 +9999,17 @@ util@^0.11.0: dependencies: inherits "2.0.3" +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -9402,11 +10135,81 @@ void-elements@^2.0.0: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== +watchpack@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +webpack-cli@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-6.0.1.tgz#a1ce25da5ba077151afd73adfa12e208e5089207" + integrity sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw== + dependencies: + "@discoveryjs/json-ext" "^0.6.1" + "@webpack-cli/configtest" "^3.0.1" + "@webpack-cli/info" "^3.0.1" + "@webpack-cli/serve" "^3.0.1" + colorette "^2.0.14" + commander "^12.1.0" + cross-spawn "^7.0.3" + envinfo "^7.14.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^6.0.1" + +webpack-merge@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-6.0.1.tgz#50c776868e080574725abc5869bd6e4ef0a16c6a" + integrity sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.98.0: + version "5.98.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.98.0.tgz#44ae19a8f2ba97537978246072fb89d10d1fbd17" + integrity sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.14.0" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.1" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^4.3.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.11" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -9447,6 +10250,19 @@ which-typed-array@^1.1.11: gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.16, which-typed-array@^1.1.2: + version "1.1.19" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + which@^1.2.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -9468,7 +10284,12 @@ wide-align@^1.1.2: dependencies: string-width "^1.0.2 || 2 || 3 || 4" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +wildcard@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -9485,6 +10306,15 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 849ffd33291cae89079d821910988175ca1db20f Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 10 Mar 2025 16:23:52 +0800 Subject: [PATCH 03/93] prepend bundle to worker js output --- shadow-cljs.edn | 9 +++++++-- webpack.config.js | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 7df7f7614a..a36e405798 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -13,6 +13,9 @@ :module-loader true :js-options {:js-provider :external :external-index "target/index.js" + :external-index-format :esm + :entry-keys ["module" "browser" "main"] + :export-conditions ["module" "import", "browser" "require" "default"] :ignore-asset-requires true :resolve {"react" {:target :global :global "React"} @@ -35,11 +38,13 @@ :db-worker {:init-fn frontend.worker.db-worker/init :depends-on #{:shared} - :web-worker true} + :web-worker true + :prepend "importScripts('libs/bundle.js');\n"} :inference-worker {:init-fn frontend.inference-worker.inference-worker/init :depends-on #{:shared} - :web-worker true}} + :web-worker true + :prepend "importScripts('libs/bundle.js');\n"}} :output-dir "./static/js" :asset-path "/static/js" diff --git a/webpack.config.js b/webpack.config.js index ed24a88960..004b45c92d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -8,6 +8,7 @@ module.exports = { path: path.resolve(__dirname, 'static/js/libs'), filename: 'bundle.js', clean: true, + chunkLoading: false, }, module: { rules: [ From b122d453c23952e9e1e7f3380a2fdb08e823d7fc Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 10 Mar 2025 17:20:39 +0800 Subject: [PATCH 04/93] separate :workers build --- package.json | 6 ++--- public/index.html | 2 +- resources/index.html | 2 +- shadow-cljs.edn | 63 ++++++++++++++++++++++++++++++++------------ webpack.config.js | 8 ++++-- 5 files changed, 57 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index f368966711..bb8094ec10 100644 --- a/package.json +++ b/package.json @@ -65,10 +65,10 @@ "gulp:build": "cross-env NODE_ENV=production gulp build", "css:build": "postcss tailwind.all.css -o static/css/style.css --verbose --env production", "css:watch": "cross-env TAILWIND_MODE=watch postcss tailwind.all.css -o static/css/style.css --verbose --watch", - "cljs:watch": "clojure -M:cljs watch app electron", + "cljs:watch": "clojure -M:cljs watch app workers electron", "cljs:watch-storybook": "clojure -M:cljs watch stories-dev", - "cljs:app-watch": "clojure -M:cljs watch app", - "cljs:electron-watch": "clojure -M:cljs watch app electron --config-merge \"{:asset-path \\\"./js\\\"}\"", + "cljs:app-watch": "clojure -M:cljs watch app workers", + "cljs:electron-watch": "clojure -M:cljs watch app workers electron --config-merge \"{:asset-path \\\"./js\\\"}\"", "cljs:release": "clojure -M:cljs release app publishing electron", "cljs:release-electron": "clojure -M:cljs release app electron --debug && clojure -M:cljs release publishing", "cljs:release-app": "clojure -M:cljs release app", diff --git a/public/index.html b/public/index.html index 3aca92f98a..92fceb7b14 100644 --- a/public/index.html +++ b/public/index.html @@ -55,7 +55,7 @@ - + diff --git a/resources/index.html b/resources/index.html index cb4340fa8d..c4db3df2c5 100644 --- a/resources/index.html +++ b/resources/index.html @@ -54,7 +54,7 @@ const portal = new MagicPortal(worker); - + diff --git a/shadow-cljs.edn b/shadow-cljs.edn index a36e405798..71fff4fd70 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -12,7 +12,7 @@ {:app {:target :browser :module-loader true :js-options {:js-provider :external - :external-index "target/index.js" + :external-index "target/main.js" :external-index-format :esm :entry-keys ["module" "browser" "main"] :export-conditions ["module" "import", "browser" "require" "default"] @@ -34,17 +34,7 @@ :depends-on #{:main}} :tldraw {:entries [frontend.extensions.tldraw] - :depends-on #{:main}} - :db-worker - {:init-fn frontend.worker.db-worker/init - :depends-on #{:shared} - :web-worker true - :prepend "importScripts('libs/bundle.js');\n"} - :inference-worker - {:init-fn frontend.inference-worker.inference-worker/init - :depends-on #{:shared} - :web-worker true - :prepend "importScripts('libs/bundle.js');\n"}} + :depends-on #{:main}}} :output-dir "./static/js" :asset-path "/static/js" @@ -77,6 +67,49 @@ :preloads [devtools.preload shadow.remote.runtime.cljs.browser]}} + :workers {:target :browser + :module-loader true + :js-options {:js-provider :external + :external-index "target/workers.js" + :external-index-format :esm + :entry-keys ["module" "browser" "main"] + :export-conditions ["module" "import", "browser" "require" "default"]} + :modules {:shared + {:entries []} + :db-worker + {:init-fn frontend.worker.db-worker/init + :depends-on #{:shared} + :web-worker true + :prepend "importScripts('libs/workers-bundle.js');\n"} + :inference-worker + {:init-fn frontend.inference-worker.inference-worker/init + :depends-on #{:shared} + :web-worker true + :prepend "importScripts('libs/workers-bundle.js');\n"}} + + :output-dir "./static/js" + :asset-path "/static/js" + :release {:asset-path "https://asset.logseq.com/static/js"} + :compiler-options {:infer-externs :auto + :output-feature-set :es-next-in + :source-map true + :externs ["datascript/externs.js" + "externs.js"] + :warnings {:fn-deprecated false + :redef false} + :cross-chunk-method-motion false} + :closure-defines {goog.debug.LOGGING_ENABLED true} + + ;; NOTE: electron, browser/mobile-app use different asset-paths. + ;; For browser/mobile-app devs, assets are located in /static/js(via HTTP root). + ;; For electron devs, assets are located in ./js(via relative path). + ;; :dev {:asset-path "./js"} + :devtools {:before-load frontend.core/stop ;; before live-reloading any code call this function + :after-load frontend.core/start ;; after live-reloading finishes call this function + :watch-path "/static" + :preloads [devtools.preload + shadow.remote.runtime.cljs.browser]}} + :electron {:target :node-script :output-to "static/electron.js" :main electron.core/main @@ -137,11 +170,7 @@ :depends-on #{:main}} :tldraw {:entries [frontend.extensions.tldraw] - :depends-on #{:main}} - :db-worker - {:init-fn frontend.worker.db-worker/init - :depends-on #{:shared} - :web-worker true}} + :depends-on #{:main}}} :output-dir "./static/js/publishing" :asset-path "static/js" diff --git a/webpack.config.js b/webpack.config.js index 004b45c92d..fae31afa6e 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,10 +3,14 @@ const webpack = require('webpack'); module.exports = { mode: "development", - entry: './target/index.js', + entry: { + main : "./target/main.js", + workers : "./target/workers.js" + }, + output: { path: path.resolve(__dirname, 'static/js/libs'), - filename: 'bundle.js', + filename: '[name]-bundle.js', clean: true, chunkLoading: false, }, From e36543256fbd0808797fc9f8aed0326d1e3fdc69 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 10 Mar 2025 17:23:14 +0800 Subject: [PATCH 05/93] fix: worker repl --- src/dev-cljs/shadow/user.clj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dev-cljs/shadow/user.clj b/src/dev-cljs/shadow/user.clj index ce8846397a..c35b4758e0 100644 --- a/src/dev-cljs/shadow/user.clj +++ b/src/dev-cljs/shadow/user.clj @@ -14,7 +14,7 @@ ;; Get the runtime id from http://localhost:9630/runtimes, pick the one which shows `browser-worker` (defn worker-repl ([] - (when-let [runtime-id (->> (api/repl-runtimes :app) + (when-let [runtime-id (->> (api/repl-runtimes :workers) (filter (fn [runtime] (= :browser-worker (:host runtime)))) (map :client-id) (apply max))] @@ -24,8 +24,8 @@ (if (number? runtime-id-or-which) (do (prn :worker-runtime-id runtime-id-or-which) - (api/repl :app {:runtime-id runtime-id-or-which})) - (let [runtime-ids (->> (api/repl-runtimes :app) + (api/repl :workers {:runtime-id runtime-id-or-which})) + (let [runtime-ids (->> (api/repl-runtimes :workers) (filter (fn [runtime] (= :browser-worker (:host runtime)))) (map :client-id)) runtime-id (apply (if (= :old runtime-id-or-which) min max) runtime-ids)] @@ -33,6 +33,6 @@ (defn runtime-id-list [] - (->> (api/repl-runtimes :app) + (->> (api/repl-runtimes :workers) (filter (fn [runtime] (= :browser-worker (:host runtime)))) (map :client-id))) From 0ecf65aefb9e41b8e6012899690497257b48f8c9 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 11 Mar 2025 13:37:42 +0800 Subject: [PATCH 06/93] chore: use official sqlite-wasm --- gulpfile.js | 1 - package.json | 2 +- public/index.html | 2 +- resources/index.html | 2 +- shadow-cljs.edn | 4 ++-- src/main/frontend/persist_db/browser.cljs | 2 +- src/main/frontend/worker/db_worker.cljs | 14 ++------------ webpack.config.js | 4 ++-- yarn.lock | 10 +++++----- 9 files changed, 15 insertions(+), 26 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 1ae0c46ab4..0d022ec6e3 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -66,7 +66,6 @@ const common = { 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js', 'packages/amplify/dist/amplify.js', 'packages/ui/dist/ui.js', - 'node_modules/@logseq/sqlite-wasm/sqlite-wasm/jswasm/sqlite3.wasm', 'node_modules/react/umd/react.production.min.js', 'node_modules/react/umd/react.development.js', 'node_modules/react-dom/umd/react-dom.production.min.js', diff --git a/package.json b/package.json index bb8094ec10..368bf186a3 100644 --- a/package.json +++ b/package.json @@ -119,10 +119,10 @@ "@logseq/capacitor-file-sync": "5.0.2", "@logseq/diff-merge": "0.2.2", "@logseq/react-tweet-embed": "1.3.1-1", - "@logseq/sqlite-wasm": "=0.1.0", "@radix-ui/colors": "^0.1.8", "@sentry/react": "^6.18.2", "@sentry/tracing": "^6.18.2", + "@sqlite.org/sqlite-wasm": "^3.49.1-build2", "@tabler/icons-react": "^2.47.0", "@tabler/icons-webfont": "^2.47.0", "@tippyjs/react": "4.2.5", diff --git a/public/index.html b/public/index.html index 92fceb7b14..ed0ee8d983 100644 --- a/public/index.html +++ b/public/index.html @@ -55,7 +55,7 @@ - + diff --git a/resources/index.html b/resources/index.html index c4db3df2c5..6e58e262d0 100644 --- a/resources/index.html +++ b/resources/index.html @@ -54,7 +54,7 @@ const portal = new MagicPortal(worker); - + diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 71fff4fd70..844ab21520 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -80,12 +80,12 @@ {:init-fn frontend.worker.db-worker/init :depends-on #{:shared} :web-worker true - :prepend "importScripts('libs/workers-bundle.js');\n"} + :prepend "importScripts('workers-bundle.js');\n"} :inference-worker {:init-fn frontend.inference-worker.inference-worker/init :depends-on #{:shared} :web-worker true - :prepend "importScripts('libs/workers-bundle.js');\n"}} + :prepend "importScripts('workers-bundle.js');\n"}} :output-dir "./static/js" :asset-path "/static/js" diff --git a/src/main/frontend/persist_db/browser.cljs b/src/main/frontend/persist_db/browser.cljs index a0092dff27..0b72188d71 100644 --- a/src/main/frontend/persist_db/browser.cljs +++ b/src/main/frontend/persist_db/browser.cljs @@ -1,5 +1,5 @@ (ns frontend.persist-db.browser - "Browser db persist support, using @logseq/sqlite-wasm. + "Browser db persist support, using sqlite-wasm. This interface uses clj data format as input." (:require ["comlink" :as Comlink] diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index cb66950672..e58b33ca90 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -1,6 +1,6 @@ (ns frontend.worker.db-worker "Worker used for browser DB implementation" - (:require ["@logseq/sqlite-wasm" :default sqlite3InitModule] + (:require ["@sqlite.org/sqlite-wasm" :default sqlite3InitModule] ["comlink" :as Comlink] [cljs-bean.core :as bean] [clojure.edn :as edn] @@ -68,17 +68,7 @@ (defn- init-sqlite-module! [] (when-not @*sqlite - (p/let [href (.. js/location -href) - electron? (string/includes? href "electron=true") - publishing? (string/includes? href "publishing=true") - - _ (reset! *publishing? publishing?) - base-url (str js/self.location.protocol "//" js/self.location.host) - sqlite-wasm-url (if electron? - (js/URL. "sqlite3.wasm" (.. js/location -href)) - (str base-url (string/replace js/self.location.pathname "db-worker.js" ""))) - sqlite (sqlite3InitModule (clj->js {:url sqlite-wasm-url - :print js/console.log + (p/let [sqlite (sqlite3InitModule (clj->js {:print js/console.log :printErr js/console.error}))] (reset! *sqlite sqlite) nil))) diff --git a/webpack.config.js b/webpack.config.js index fae31afa6e..4eadeca2a9 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -9,9 +9,9 @@ module.exports = { }, output: { - path: path.resolve(__dirname, 'static/js/libs'), + path: path.resolve(__dirname, 'static/js'), filename: '[name]-bundle.js', - clean: true, + clean: false, chunkLoading: false, }, module: { diff --git a/yarn.lock b/yarn.lock index 9277bdc1b1..eb90fc672f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -771,11 +771,6 @@ resolved "https://registry.yarnpkg.com/@logseq/react-tweet-embed/-/react-tweet-embed-1.3.1-1.tgz#119d22be8234de006fc35c3fa2a36f85634c5be6" integrity sha512-9O0oHs5depCvh6ZQvwtl1xb7B80YG5rUfY10uSUat5itOlcE3IWaYYpe6p/tcHErqHWnWgkXHitAB9M29FMbQg== -"@logseq/sqlite-wasm@=0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@logseq/sqlite-wasm/-/sqlite-wasm-0.1.0.tgz#b866d22d7a83bfa6815fe7f4d8899097b49af642" - integrity sha512-Ft/ZY8b2s35pFS7L7NX0CKWa5WkeKueYB7l5AYFFvQ2QQ0s7O4zlEi+jIX/ZdO2vnf2p4ALg+QvgaPgu6w2o5w== - "@mapbox/node-pre-gyp@^1.0.0": version "1.0.11" resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" @@ -1167,6 +1162,11 @@ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== +"@sqlite.org/sqlite-wasm@^3.49.1-build2": + version "3.49.1-build2" + resolved "https://registry.yarnpkg.com/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.49.1-build2.tgz#dba6fc58f9e68b20812872e6a27b07a267b2f1de" + integrity sha512-pZi8OSjNDZEYkvefsTOFKNRRN0GG9S5mtB6qBmrFZ5sraF5vxElPnTOl0DbJgiz9twlsOF5OzVkOce6Uc1TXsw== + "@stylelint/postcss-css-in-js@^0.37.2": version "0.37.3" resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz#d149a385e07ae365b0107314c084cb6c11adbf49" From 68426d54eb51afb8fc457d4462bdfbb3959a43d1 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 11 Mar 2025 15:30:24 +0800 Subject: [PATCH 07/93] get rid of shared module --- .../src/logseq/publishing/export.cljs | 6 +++--- .../src/logseq/publishing/html.cljs | 5 ++--- public/index.html | 1 - resources/index.html | 1 - shadow-cljs.edn | 20 +++++-------------- 5 files changed, 10 insertions(+), 23 deletions(-) diff --git a/deps/publishing/src/logseq/publishing/export.cljs b/deps/publishing/src/logseq/publishing/export.cljs index 44a0d53537..6ad6bbdb26 100644 --- a/deps/publishing/src/logseq/publishing/export.cljs +++ b/deps/publishing/src/logseq/publishing/export.cljs @@ -1,14 +1,14 @@ (ns ^:node-only logseq.publishing.export "This electron only ns (for the main process) exports files from multiple locations to provide a complete publishing app" - (:require ["fs-extra" :as fse] + (:require ["fs" :as fs] + ["fs-extra" :as fse] ["path" :as node-path] - ["fs" :as fs] [promesa.core :as p])) (def ^:api js-files "js files from publishing release build" - (->> ["shared.js" "main.js" "code-editor.js" "excalidraw.js" "tldraw.js" "db-worker.js"] + (->> ["main.js" "code-editor.js" "excalidraw.js" "tldraw.js" "db-worker.js"] ;; Add source maps for all js files as it doesn't affect initial load time (mapcat #(vector % (str % ".map"))) vec)) diff --git a/deps/publishing/src/logseq/publishing/html.cljs b/deps/publishing/src/logseq/publishing/html.cljs index 47e48bbd2b..fbccdddfaa 100644 --- a/deps/publishing/src/logseq/publishing/html.cljs +++ b/deps/publishing/src/logseq/publishing/html.cljs @@ -2,10 +2,10 @@ "This frontend only ns builds the publishing html including doing all the necessary db filtering" (:require [clojure.string :as string] + [datascript.core :as d] + [datascript.transit :as dt] [goog.string :as gstring] [goog.string.format] - [datascript.transit :as dt] - [datascript.core :as d] [logseq.publishing.db :as db])) ;; Copied from hiccup but tweaked for publish usage @@ -124,7 +124,6 @@ necessary db filtering" [:script {:src "static/js/react.production.min.js"}] [:script {:src "static/js/react-dom.production.min.js"}] [:script {:src "static/js/ui.js"}] - [:script {:src "static/js/shared.js"}] [:script {:src "static/js/main.js"}] [:script {:src "static/js/interact.min.js"}] [:script {:src "static/js/highlight.min.js"}] diff --git a/public/index.html b/public/index.html index ed0ee8d983..73d3015898 100644 --- a/public/index.html +++ b/public/index.html @@ -57,7 +57,6 @@ - diff --git a/resources/index.html b/resources/index.html index 6e58e262d0..1f974f2821 100644 --- a/resources/index.html +++ b/resources/index.html @@ -56,7 +56,6 @@ const portal = new MagicPortal(worker); - diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 844ab21520..88919e11fc 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -21,11 +21,8 @@ :global "React"} "react-dom" {:target :global :global "ReactDOM"}}} ;; handle `require(xxx.css)` - :modules {:shared - {:entries []} - :main - {:init-fn frontend.core/init - :depends-on #{:shared}} + :modules {:main + {:init-fn frontend.core/init} :code-editor {:entries [frontend.extensions.code] :depends-on #{:main}} @@ -74,16 +71,12 @@ :external-index-format :esm :entry-keys ["module" "browser" "main"] :export-conditions ["module" "import", "browser" "require" "default"]} - :modules {:shared - {:entries []} - :db-worker + :modules {:db-worker {:init-fn frontend.worker.db-worker/init - :depends-on #{:shared} :web-worker true :prepend "importScripts('workers-bundle.js');\n"} :inference-worker {:init-fn frontend.inference-worker.inference-worker/init - :depends-on #{:shared} :web-worker true :prepend "importScripts('workers-bundle.js');\n"}} @@ -157,11 +150,8 @@ :global "React"} "react-dom" {:target :global :global "ReactDOM"}}} - :modules {:shared - {:entries []} - :main - {:init-fn frontend.publishing/init - :depends-on #{:shared}} + :modules {:main + {:init-fn frontend.publishing/init} :code-editor {:entries [frontend.extensions.code] :depends-on #{:main}} From 8f1b61036175d7b77bd89b5de551b6f3973a36dc Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 11 Mar 2025 15:51:22 +0800 Subject: [PATCH 08/93] chore: remove unused package --- package.json | 1 - shadow-cljs.edn | 9 ++++++--- yarn.lock | 41 +---------------------------------------- 3 files changed, 7 insertions(+), 44 deletions(-) diff --git a/package.json b/package.json index 368bf186a3..30716fd9b9 100644 --- a/package.json +++ b/package.json @@ -164,7 +164,6 @@ "react-dom": "17.0.2", "react-grid-layout": "0.16.6", "react-intersection-observer": "^9.3.5", - "react-resize-context": "3.0.0", "react-textarea-autosize": "8.3.3", "react-tippy": "1.4.0", "react-transition-group": "4.3.0", diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 88919e11fc..45b71c0962 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -71,14 +71,17 @@ :external-index-format :esm :entry-keys ["module" "browser" "main"] :export-conditions ["module" "import", "browser" "require" "default"]} - :modules {:db-worker + :modules {:shared {:entries []} + :db-worker {:init-fn frontend.worker.db-worker/init :web-worker true - :prepend "importScripts('workers-bundle.js');\n"} + :prepend "importScripts('workers-bundle.js');\n" + :depends-on #{:shared}} :inference-worker {:init-fn frontend.inference-worker.inference-worker/init :web-worker true - :prepend "importScripts('workers-bundle.js');\n"}} + :prepend "importScripts('workers-bundle.js');\n" + :depends-on #{:shared}}} :output-dir "./static/js" :asset-path "/static/js" diff --git a/yarn.lock b/yarn.lock index eb90fc672f..0814f42305 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2047,11 +2047,6 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -batch-processor@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" - integrity sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA== - big-integer@1.6.x: version "1.6.51" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" @@ -3518,13 +3513,6 @@ electron@31.7.5: "@types/node" "^20.9.0" extract-zip "^2.0.1" -element-resize-detector@^1.1.14: - version "1.2.4" - resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz#3e6c5982dd77508b5fa7e6d5c02170e26325c9b1" - integrity sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg== - dependencies: - batch-processor "1.0.0" - elementtree@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/elementtree/-/elementtree-0.1.7.tgz#9ac91be6e52fb6e6244c4e54a4ac3ed8ae8e29c0" @@ -4023,13 +4011,6 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== -fastdom@^1.0.9: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fastdom/-/fastdom-1.0.11.tgz#f22984f9df6b9a6081e5ce2e49cfb5525daf198a" - integrity sha512-jl9MwXDFxhg354W4E3s1UMsLh3HWFuVMQiRUlXpHckcHRXQvUe76yzBf1Z7b+x5Ci4TUJ1KmynI9alGUXG95IQ== - dependencies: - strictdom "^1.0.1" - fastest-levenshtein@^1.0.12: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -5966,7 +5947,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@^4.17.10, lodash@^4.17.21: +lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7994,16 +7975,6 @@ react-resizable@1.x: prop-types "15.x" react-draggable "^4.0.3" -react-resize-context@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-resize-context/-/react-resize-context-3.0.0.tgz#fb3c3d24a8c1cbe86d3e1b1da72a9952e462a031" - integrity sha512-ocDhYfPgFxaPvKdtouwIxNwGBWbCTTrzjY/wK941ng3XyfWd/wQOh/GnJRTMZpcjrKSnK7OgIVTbJZJRxM/QAA== - dependencies: - element-resize-detector "^1.1.14" - fastdom "^1.0.9" - lodash "^4.17.10" - shallowequal "^1.1.0" - react-textarea-autosize@8.3.3: version "8.3.3" resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz#f70913945369da453fd554c168f6baacd1fa04d8" @@ -8672,11 +8643,6 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - sharp@^0.33.5: version "0.33.5" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e" @@ -9056,11 +9022,6 @@ streamroller@^3.1.5: debug "^4.3.4" fs-extra "^8.1.0" -strictdom@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strictdom/-/strictdom-1.0.1.tgz#189de91649f73d44d59b8432efa68ef9d2659460" - integrity sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg== - "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" From da1c4dd465661758bf794071c0bd0cfd21ed852a Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 11 Mar 2025 15:57:14 +0800 Subject: [PATCH 09/93] disable js-toast temporally to open the app --- deps/shui/src/logseq/shui/toaster/core.cljs | 37 +++++++++++---------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/deps/shui/src/logseq/shui/toaster/core.cljs b/deps/shui/src/logseq/shui/toaster/core.cljs index 4115a1ddb1..52e77f7da6 100644 --- a/deps/shui/src/logseq/shui/toaster/core.cljs +++ b/deps/shui/src/logseq/shui/toaster/core.cljs @@ -1,8 +1,8 @@ (ns logseq.shui.toaster.core - (:require [rum.core :as rum] + (:require [cljs-bean.core :as bean] [daiquiri.interpreter :refer [interpret]] [logseq.shui.util :as util] - [cljs-bean.core :as bean])) + [rum.core :as rum])) (defonce ^:private Toaster (util/lsui-wrap "Toaster")) (defonce ^:private *toast (atom nil)) @@ -22,23 +22,24 @@ (rum/defc install-toaster < rum/static [] - (let [^js js-toast (js/window.LSUI.useToast)] - (rum/use-effect! - (fn [] - (reset! *toast {:toast (.-toast js-toast) - :dismiss (.-dismiss js-toast) - :update (.-update js-toast)}) - #()) - []) - [:<> (Toaster)])) + ;; (let [^js js-toast (js/window.LSUI.useToast)] + ;; (rum/use-effect! + ;; (fn [] + ;; (reset! *toast {:toast (.-toast js-toast) + ;; :dismiss (.-dismiss js-toast) + ;; :update (.-update js-toast)}) + ;; #()) + ;; []) + ;; [:<> (Toaster)]) + ) (defn update-html-props [v] (update-keys v - #(case % - :class :className - :for :htmlFor - %))) + #(case % + :class :className + :for :htmlFor + %))) (defn interpret-vals [config ks & args] @@ -46,7 +47,7 @@ (let [v (get config k) v (if (fn? v) (apply v args) v)] (if (vector? v) (assoc config k (interpret v)) config))) - config ks)) + config ks)) (defn toast! ([content-or-config] (toast! content-or-config :default nil)) @@ -56,12 +57,12 @@ (let [config (if (map? content-or-config) content-or-config (-> {:description content-or-config} - (merge (if (map? status) status {:variant status})))) + (merge (if (map? status) status {:variant status})))) config (update-html-props (merge config opts)) id (or (:id config) (gen-id)) config (assoc config :id id) config (interpret-vals config [:title :description :action :icon] - {:id id :dismiss! #(dismiss id) :update! #(toast! (assoc %1 :id id))})] + {:id id :dismiss! #(dismiss id) :update! #(toast! (assoc %1 :id id))})] (js->clj (toast (clj->js config)))) :exception))) From ebeeb280ef436c36bf391050005f0cca5a194212 Mon Sep 17 00:00:00 2001 From: charlie Date: Tue, 11 Mar 2025 16:16:37 +0800 Subject: [PATCH 10/93] enhance(webpack): add externals for React and ReactDOM --- webpack.config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/webpack.config.js b/webpack.config.js index 4eadeca2a9..5d3e953781 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -8,6 +8,11 @@ module.exports = { workers : "./target/workers.js" }, + externals: { + 'react': 'React', + 'react-dom': 'ReactDOM', + }, + output: { path: path.resolve(__dirname, 'static/js'), filename: '[name]-bundle.js', From c269046b443832f903e95f15ed63dcb42a9727f6 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 11 Mar 2025 16:21:44 +0800 Subject: [PATCH 11/93] Revert "disable js-toast temporally to open the app" This reverts commit da1c4dd465661758bf794071c0bd0cfd21ed852a. --- deps/shui/src/logseq/shui/toaster/core.cljs | 37 ++++++++++----------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/deps/shui/src/logseq/shui/toaster/core.cljs b/deps/shui/src/logseq/shui/toaster/core.cljs index 52e77f7da6..4115a1ddb1 100644 --- a/deps/shui/src/logseq/shui/toaster/core.cljs +++ b/deps/shui/src/logseq/shui/toaster/core.cljs @@ -1,8 +1,8 @@ (ns logseq.shui.toaster.core - (:require [cljs-bean.core :as bean] + (:require [rum.core :as rum] [daiquiri.interpreter :refer [interpret]] [logseq.shui.util :as util] - [rum.core :as rum])) + [cljs-bean.core :as bean])) (defonce ^:private Toaster (util/lsui-wrap "Toaster")) (defonce ^:private *toast (atom nil)) @@ -22,24 +22,23 @@ (rum/defc install-toaster < rum/static [] - ;; (let [^js js-toast (js/window.LSUI.useToast)] - ;; (rum/use-effect! - ;; (fn [] - ;; (reset! *toast {:toast (.-toast js-toast) - ;; :dismiss (.-dismiss js-toast) - ;; :update (.-update js-toast)}) - ;; #()) - ;; []) - ;; [:<> (Toaster)]) - ) + (let [^js js-toast (js/window.LSUI.useToast)] + (rum/use-effect! + (fn [] + (reset! *toast {:toast (.-toast js-toast) + :dismiss (.-dismiss js-toast) + :update (.-update js-toast)}) + #()) + []) + [:<> (Toaster)])) (defn update-html-props [v] (update-keys v - #(case % - :class :className - :for :htmlFor - %))) + #(case % + :class :className + :for :htmlFor + %))) (defn interpret-vals [config ks & args] @@ -47,7 +46,7 @@ (let [v (get config k) v (if (fn? v) (apply v args) v)] (if (vector? v) (assoc config k (interpret v)) config))) - config ks)) + config ks)) (defn toast! ([content-or-config] (toast! content-or-config :default nil)) @@ -57,12 +56,12 @@ (let [config (if (map? content-or-config) content-or-config (-> {:description content-or-config} - (merge (if (map? status) status {:variant status})))) + (merge (if (map? status) status {:variant status})))) config (update-html-props (merge config opts)) id (or (:id config) (gen-id)) config (assoc config :id id) config (interpret-vals config [:title :description :action :icon] - {:id id :dismiss! #(dismiss id) :update! #(toast! (assoc %1 :id id))})] + {:id id :dismiss! #(dismiss id) :update! #(toast! (assoc %1 :id id))})] (js->clj (toast (clj->js config)))) :exception))) From e2271dd03da0d19fc8a675794fe889c73dbba143 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Thu, 13 Mar 2025 21:00:35 +0800 Subject: [PATCH 12/93] use forked sqlite-wasm --- package.json | 2 +- src/main/frontend/worker/db_worker.cljs | 2 +- yarn.lock | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 30716fd9b9..33afe84eef 100644 --- a/package.json +++ b/package.json @@ -119,10 +119,10 @@ "@logseq/capacitor-file-sync": "5.0.2", "@logseq/diff-merge": "0.2.2", "@logseq/react-tweet-embed": "1.3.1-1", + "@logseq/sqlite-wasm": "=0.1.1", "@radix-ui/colors": "^0.1.8", "@sentry/react": "^6.18.2", "@sentry/tracing": "^6.18.2", - "@sqlite.org/sqlite-wasm": "^3.49.1-build2", "@tabler/icons-react": "^2.47.0", "@tabler/icons-webfont": "^2.47.0", "@tippyjs/react": "4.2.5", diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index e58b33ca90..f101f168be 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -1,6 +1,6 @@ (ns frontend.worker.db-worker "Worker used for browser DB implementation" - (:require ["@sqlite.org/sqlite-wasm" :default sqlite3InitModule] + (:require ["@logseq/sqlite-wasm" :default sqlite3InitModule] ["comlink" :as Comlink] [cljs-bean.core :as bean] [clojure.edn :as edn] diff --git a/yarn.lock b/yarn.lock index 0814f42305..3e6f0b8733 100644 --- a/yarn.lock +++ b/yarn.lock @@ -771,6 +771,11 @@ resolved "https://registry.yarnpkg.com/@logseq/react-tweet-embed/-/react-tweet-embed-1.3.1-1.tgz#119d22be8234de006fc35c3fa2a36f85634c5be6" integrity sha512-9O0oHs5depCvh6ZQvwtl1xb7B80YG5rUfY10uSUat5itOlcE3IWaYYpe6p/tcHErqHWnWgkXHitAB9M29FMbQg== +"@logseq/sqlite-wasm@=0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@logseq/sqlite-wasm/-/sqlite-wasm-0.1.1.tgz#0645307b78da637e01aced6b3f04b318639dc538" + integrity sha512-cdUYfMgBYO2JrwNqsLGZZ1T0RAZe7SzlplLqlDWN/Wn7hXQbMteWcXTRxPGXSS0yx/4e91VeqRtmC+qexL4gKw== + "@mapbox/node-pre-gyp@^1.0.0": version "1.0.11" resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" @@ -1162,11 +1167,6 @@ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== -"@sqlite.org/sqlite-wasm@^3.49.1-build2": - version "3.49.1-build2" - resolved "https://registry.yarnpkg.com/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.49.1-build2.tgz#dba6fc58f9e68b20812872e6a27b07a267b2f1de" - integrity sha512-pZi8OSjNDZEYkvefsTOFKNRRN0GG9S5mtB6qBmrFZ5sraF5vxElPnTOl0DbJgiz9twlsOF5OzVkOce6Uc1TXsw== - "@stylelint/postcss-css-in-js@^0.37.2": version "0.37.3" resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz#d149a385e07ae365b0107314c084cb6c11adbf49" From 95c0f2ef1c7761ea23076305d40c82d3280bf20f Mon Sep 17 00:00:00 2001 From: rcmerci Date: Thu, 13 Mar 2025 22:07:30 +0800 Subject: [PATCH 13/93] feat: init add frontend.inference-worker.text-embedding --- deps/db/src/logseq/db/frontend/property.cljs | 11 ++- deps/db/src/logseq/db/frontend/schema.cljs | 2 +- package.json | 1 + .../inference_worker/inference_worker.cljs | 38 ++++++++- src/main/frontend/inference_worker/state.cljs | 9 +++ .../inference_worker/text_embedding.cljs | 77 +++++++++++++++++++ src/main/frontend/persist_db/browser.cljs | 9 ++- src/main/frontend/state.cljs | 10 ++- src/main/frontend/util.cljc | 2 +- src/main/frontend/worker/db/migrate.cljs | 3 +- src/main/frontend/worker/db/validate.cljs | 2 +- src/main/frontend/worker/db_listener.cljs | 2 +- src/main/frontend/worker/db_metadata.cljs | 2 +- src/main/frontend/worker/db_worker.cljs | 11 ++- src/main/frontend/worker/file.cljs | 2 +- src/main/frontend/worker/pipeline.cljs | 2 +- src/main/frontend/worker/rtc/core.cljs | 2 +- .../rtc/full_upload_download_graph.cljs | 2 +- .../frontend/worker/rtc/log_and_state.cljs | 2 +- .../frontend/worker/rtc/remote_update.cljs | 2 +- src/main/frontend/worker/rtc/skeleton.cljs | 2 +- .../{worker => worker_common}/util.cljc | 4 +- yarn.lock | 36 ++------- 23 files changed, 173 insertions(+), 60 deletions(-) create mode 100644 src/main/frontend/inference_worker/state.cljs create mode 100644 src/main/frontend/inference_worker/text_embedding.cljs rename src/main/frontend/{worker => worker_common}/util.cljc (93%) diff --git a/deps/db/src/logseq/db/frontend/property.cljs b/deps/db/src/logseq/db/frontend/property.cljs index d3e65ddc6c..17b0acf657 100644 --- a/deps/db/src/logseq/db/frontend/property.cljs +++ b/deps/db/src/logseq/db/frontend/property.cljs @@ -584,7 +584,14 @@ :schema {:type :class :cardinality :many :public? true} - :queryable? true}))) + :queryable? true} + :logseq.property.search/hnsw-label {:title "HNSW label" + :schema {:type :raw-number + :public? false + :hide? true} + :rtc {:rtc/ignore-attr-when-init-upload true + :rtc/ignore-attr-when-init-download true + :rtc/ignore-attr-when-syncing true}}))) (def built-in-properties (->> built-in-properties* @@ -647,7 +654,7 @@ "logseq.property.linked-references" "logseq.property.asset" "logseq.property.table" "logseq.property.node" "logseq.property.code" "logseq.property.journal" "logseq.property.class" "logseq.property.view" - "logseq.property.user" "logseq.property.history"}) + "logseq.property.user" "logseq.property.history" "logseq.property.search"}) (defn logseq-property? "Determines if keyword is a logseq property" diff --git a/deps/db/src/logseq/db/frontend/schema.cljs b/deps/db/src/logseq/db/frontend/schema.cljs index c950914ffd..af87b318cc 100644 --- a/deps/db/src/logseq/db/frontend/schema.cljs +++ b/deps/db/src/logseq/db/frontend/schema.cljs @@ -37,7 +37,7 @@ (map (juxt :major :minor) [(parse-schema-version x) (parse-schema-version y)]))) -(def version (parse-schema-version "64.3")) +(def version (parse-schema-version "64.4")) (defn major-version "Return a number. diff --git a/package.json b/package.json index 33afe84eef..2fb8cf7bc4 100644 --- a/package.json +++ b/package.json @@ -144,6 +144,7 @@ "fuse.js": "6.4.6", "grapheme-splitter": "1.0.4", "graphology": "0.20.0", + "hnswlib-wasm": "^0.8.2", "html2canvas": "^1.4.1", "ignore": "5.1.8", "inter-ui": "^3.19.3", diff --git a/src/main/frontend/inference_worker/inference_worker.cljs b/src/main/frontend/inference_worker/inference_worker.cljs index 4ba5479e5f..2938acd1be 100644 --- a/src/main/frontend/inference_worker/inference_worker.cljs +++ b/src/main/frontend/inference_worker/inference_worker.cljs @@ -1,10 +1,40 @@ (ns frontend.inference-worker.inference-worker "Worker used for text embedding and vector-db" - (:require ["@huggingface/transformers" :refer [AutoTokenizer]] - [lambdaisland.glogi :as log] - [lambdaisland.glogi.console :as glogi-console])) + (:require ["comlink" :as Comlink] + [frontend.inference-worker.text-embedding :as infer-worker.text-embedding] + [lambdaisland.glogi.console :as glogi-console] + [logseq.db :as ldb] + [promesa.core :as p] + [shadow.cljs.modern :refer [defclass]])) + +#_:clj-kondo/ignore +(defclass InferenceWorker + (extends js/Object) + (constructor + [this] + (super)) + + Object + (init + [_this] + (infer-worker.text-embedding/ index +(defonce *hnsw-index (atom {})) + +(defonce *extractor (atom nil)) diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs new file mode 100644 index 0000000000..a54bbb4158 --- /dev/null +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -0,0 +1,77 @@ +(ns frontend.inference-worker.text-embedding + "text embedding fns" + (:require ["@huggingface/transformers" :refer [pipeline]] + ["hnswlib-wasm" :refer [loadHnswlib]] + [frontend.inference-worker.state :as infer-worker.state] + [lambdaisland.glogi :as log] + [promesa.core :as p])) + +(def ^:private embedding-opts #js{"pooling" "mean" "normalize" true}) + +(def ^:private num-dimensions 384) +(def ^:private init-max-elems 100) + +(defn- split-into-chunks + [js-array chunk-size] + (let [length (alength js-array) + result (array)] + (loop [i 0] + (when (< i length) + (.push result (.slice js-array i (+ i chunk-size))) + (recur (+ i chunk-size)))) + result)) + +(defn- ensure-hnsw-index! + [repo] + (or (@infer-worker.state/*hnsw-index repo) + (let [hnsw-ctor (.-HierarchicalNSW ^js @infer-worker.state/*hnswlib) + hnsw (new hnsw-ctor "l2" num-dimensions repo) + file-exists? (.checkFileExists (.-EmscriptenFileSystemManager ^js @infer-worker.state/*hnswlib) repo)] + (if file-exists? + (.readIndex hnsw repo init-max-elems) + (.initIndex hnsw init-max-elems 16 200 100)) + (.setEfSearch hnsw 32) + (swap! infer-worker.state/*hnsw-index assoc repo hnsw) + (@infer-worker.state/*hnsw-index repo)))) + +(defn updates))) diff --git a/src/main/frontend/worker/db/validate.cljs b/src/main/frontend/worker/db/validate.cljs index 851754ea8c..8583cdd54f 100644 --- a/src/main/frontend/worker/db/validate.cljs +++ b/src/main/frontend/worker/db/validate.cljs @@ -1,6 +1,6 @@ (ns frontend.worker.db.validate "Validate db" - (:require [frontend.worker.util :as worker-util] + (:require [frontend.worker-common.util :as worker-util] [logseq.db.frontend.validate :as db-validate])) (defn validate-db diff --git a/src/main/frontend/worker/db_listener.cljs b/src/main/frontend/worker/db_listener.cljs index 43f4bff212..2ab67cda24 100644 --- a/src/main/frontend/worker/db_listener.cljs +++ b/src/main/frontend/worker/db_listener.cljs @@ -2,10 +2,10 @@ "Db listeners for worker-db." (:require [cljs-bean.core :as bean] [datascript.core :as d] + [frontend.worker-common.util :as worker-util] [frontend.worker.pipeline :as worker-pipeline] [frontend.worker.search :as search] [frontend.worker.state :as worker-state] - [frontend.worker.util :as worker-util] [logseq.common.util :as common-util] [logseq.outliner.batch-tx :as batch-tx] [promesa.core :as p])) diff --git a/src/main/frontend/worker/db_metadata.cljs b/src/main/frontend/worker/db_metadata.cljs index 4e796fc562..02337de625 100644 --- a/src/main/frontend/worker/db_metadata.cljs +++ b/src/main/frontend/worker/db_metadata.cljs @@ -1,6 +1,6 @@ (ns frontend.worker.db-metadata "Fns to read/write metadata.edn file for db-based." - (:require [frontend.worker.util :as worker-util] + (:require [frontend.worker-common.util :as worker-util] [promesa.core :as p])) (defn (.-name dir) (string/replace-first ".logseq-pool-" "") diff --git a/src/main/frontend/worker/file.cljs b/src/main/frontend/worker/file.cljs index b06d333b31..b54ff43945 100644 --- a/src/main/frontend/worker/file.cljs +++ b/src/main/frontend/worker/file.cljs @@ -9,8 +9,8 @@ [frontend.common.async-util :as async-util] [frontend.common.file.core :as common-file] [frontend.common.file.util :as wfu] + [frontend.worker-common.util :as worker-util] [frontend.worker.state :as worker-state] - [frontend.worker.util :as worker-util] [goog.object :as gobj] [lambdaisland.glogi :as log] [logseq.common.date :as common-date] diff --git a/src/main/frontend/worker/pipeline.cljs b/src/main/frontend/worker/pipeline.cljs index a8fef1d348..4d89ca300c 100644 --- a/src/main/frontend/worker/pipeline.cljs +++ b/src/main/frontend/worker/pipeline.cljs @@ -1,11 +1,11 @@ (ns frontend.worker.pipeline "Pipeline work after transaction" (:require [datascript.core :as d] + [frontend.worker-common.util :as worker-util] [frontend.worker.commands :as commands] [frontend.worker.file :as file] [frontend.worker.react :as worker-react] [frontend.worker.state :as worker-state] - [frontend.worker.util :as worker-util] [logseq.common.defkeywords :refer [defkeywords]] [logseq.db :as ldb] [logseq.db.frontend.validate :as db-validate] diff --git a/src/main/frontend/worker/rtc/core.cljs b/src/main/frontend/worker/rtc/core.cljs index b7cf385d7b..ebd7c4dfdc 100644 --- a/src/main/frontend/worker/rtc/core.cljs +++ b/src/main/frontend/worker/rtc/core.cljs @@ -3,6 +3,7 @@ (:require [clojure.data :as data] [datascript.core :as d] [frontend.common.missionary :as c.m] + [frontend.worker-common.util :as worker-util] [frontend.worker.device :as worker-device] [frontend.worker.rtc.asset :as r.asset] [frontend.worker.rtc.branch-graph :as r.branch-graph] @@ -16,7 +17,6 @@ [frontend.worker.rtc.ws :as ws] [frontend.worker.rtc.ws-util :as ws-util :refer [gen-get-ws-create-map--memoized]] [frontend.worker.state :as worker-state] - [frontend.worker.util :as worker-util] [lambdaisland.glogi :as log] [logseq.common.config :as common-config] [logseq.db :as ldb] diff --git a/src/main/frontend/worker/rtc/full_upload_download_graph.cljs b/src/main/frontend/worker/rtc/full_upload_download_graph.cljs index b51876e851..811f9b34a1 100644 --- a/src/main/frontend/worker/rtc/full_upload_download_graph.cljs +++ b/src/main/frontend/worker/rtc/full_upload_download_graph.cljs @@ -5,6 +5,7 @@ [clojure.set :as set] [datascript.core :as d] [frontend.common.missionary :as c.m] + [frontend.worker-common.util :as worker-util] [frontend.worker.crypt :as crypt] [frontend.worker.db-listener :as db-listener] [frontend.worker.rtc.client-op :as client-op] @@ -12,7 +13,6 @@ [frontend.worker.rtc.log-and-state :as rtc-log-and-state] [frontend.worker.rtc.ws-util :as ws-util] [frontend.worker.state :as worker-state] - [frontend.worker.util :as worker-util] [logseq.db :as ldb] [logseq.db.frontend.malli-schema :as db-malli-schema] [logseq.db.frontend.schema :as db-schema] diff --git a/src/main/frontend/worker/rtc/log_and_state.cljs b/src/main/frontend/worker/rtc/log_and_state.cljs index 6d4a1d6d8d..a21940844f 100644 --- a/src/main/frontend/worker/rtc/log_and_state.cljs +++ b/src/main/frontend/worker/rtc/log_and_state.cljs @@ -1,7 +1,7 @@ (ns frontend.worker.rtc.log-and-state "Fns to generate rtc related logs" (:require [frontend.common.missionary :as c.m] - [frontend.worker.util :as worker-util] + [frontend.worker-common.util :as worker-util] [lambdaisland.glogi :as log] [logseq.common.defkeywords :refer [defkeywords]] [malli.core :as ma] diff --git a/src/main/frontend/worker/rtc/remote_update.cljs b/src/main/frontend/worker/rtc/remote_update.cljs index 28294f1db0..ac7fd91225 100644 --- a/src/main/frontend/worker/rtc/remote_update.cljs +++ b/src/main/frontend/worker/rtc/remote_update.cljs @@ -4,6 +4,7 @@ [clojure.set :as set] [clojure.string :as string] [datascript.core :as d] + [frontend.worker-common.util :as worker-util] [frontend.worker.handler.page :as worker-page] [frontend.worker.rtc.asset :as r.asset] [frontend.worker.rtc.client-op :as client-op] @@ -11,7 +12,6 @@ [frontend.worker.rtc.log-and-state :as rtc-log-and-state] [frontend.worker.rtc.malli-schema :as rtc-schema] [frontend.worker.state :as worker-state] - [frontend.worker.util :as worker-util] [lambdaisland.glogi :as log] [logseq.clj-fractional-indexing :as index] [logseq.common.defkeywords :refer [defkeywords]] diff --git a/src/main/frontend/worker/rtc/skeleton.cljs b/src/main/frontend/worker/rtc/skeleton.cljs index 99c7157ec1..2608ff991a 100644 --- a/src/main/frontend/worker/rtc/skeleton.cljs +++ b/src/main/frontend/worker/rtc/skeleton.cljs @@ -2,8 +2,8 @@ "Validate skeleton data between server and client" (:require [clojure.data :as data] [datascript.core :as d] + [frontend.worker-common.util :as worker-util] [frontend.worker.rtc.ws-util :as ws-util] - [frontend.worker.util :as worker-util] [lambdaisland.glogi :as log] [logseq.db :as ldb] [logseq.db.frontend.schema :as db-schema] diff --git a/src/main/frontend/worker/util.cljc b/src/main/frontend/worker_common/util.cljc similarity index 93% rename from src/main/frontend/worker/util.cljc rename to src/main/frontend/worker_common/util.cljc index d791dcef29..63d51564ab 100644 --- a/src/main/frontend/worker/util.cljc +++ b/src/main/frontend/worker_common/util.cljc @@ -1,6 +1,6 @@ -(ns frontend.worker.util +(ns frontend.worker-common.util "Worker utils" - #?(:cljs (:require-macros [frontend.worker.util])) + #?(:cljs (:require-macros [frontend.worker-common.util])) #?(:cljs (:refer-clojure :exclude [format])) #?(:cljs (:require [clojure.string :as string] [goog.crypt :as crypt] diff --git a/yarn.lock b/yarn.lock index 3e6f0b8733..240beb55c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4895,6 +4895,11 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hnswlib-wasm@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/hnswlib-wasm/-/hnswlib-wasm-0.8.2.tgz#8b6a9534d99f23d30b1fd29ac7c45410ee5941c1" + integrity sha512-qEgKETj4rMOYRA1esP0bxVosw9Wrz5S/HvjI2FBWOXG5rf5/Es4OoEWGVvztFihDNU5if61l6QGhW5ILtt+PqA== + hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -9022,7 +9027,7 @@ streamroller@^3.1.5: debug "^4.3.4" fs-extra "^8.1.0" -"string-width-cjs@npm:string-width@^4.2.0": +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9040,15 +9045,6 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -9116,7 +9112,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -9137,13 +9133,6 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -10250,7 +10239,7 @@ wildcard@^2.0.1: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -10267,15 +10256,6 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 53cc7485d8caab403a3d23aa7cba1d42910b868c Mon Sep 17 00:00:00 2001 From: rcmerci Date: Thu, 13 Mar 2025 22:42:31 +0800 Subject: [PATCH 14/93] enhance(text-embedding): smaller init-max-elems, dynamically resizeIndex --- .../inference_worker/text_embedding.cljs | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs index a54bbb4158..0f5481b6b7 100644 --- a/src/main/frontend/inference_worker/text_embedding.cljs +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -3,6 +3,7 @@ (:require ["@huggingface/transformers" :refer [pipeline]] ["hnswlib-wasm" :refer [loadHnswlib]] [frontend.inference-worker.state :as infer-worker.state] + [frontend.worker-common.util :as worker-util] [lambdaisland.glogi :as log] [promesa.core :as p])) @@ -43,6 +44,15 @@ :dims (.-dims r) :size (.-size r)})) +(defn- add-items + [^js hnsw data-coll] + (try (.addItems hnsw data-coll true) + (catch js/WebAssembly.Exception _ + (let [current-count (.getCurrentCount hnsw) + new-size (+ current-count (max (* 2 (alength data-coll)) current-count))] + (.resizeIndex hnsw new-size) + (.addItems hnsw data-coll true))))) + (defn Date: Fri, 14 Mar 2025 16:45:14 +0800 Subject: [PATCH 15/93] enhance(text-embedding): connect db-worker and infer-worker --- src/main/frontend/handler.cljs | 1 + .../frontend/inference_worker/inference_worker.cljs | 9 ++++++++- src/main/frontend/inference_worker/state.cljs | 2 ++ src/main/frontend/persist_db/browser.cljs | 7 +++++++ src/main/frontend/worker/db_worker.cljs | 13 ++++++++++--- src/main/frontend/worker/file.cljs | 2 +- src/main/frontend/worker/state.cljs | 1 + 7 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/main/frontend/handler.cljs b/src/main/frontend/handler.cljs index 2b7af869ff..a8b17bb1a2 100644 --- a/src/main/frontend/handler.cljs +++ b/src/main/frontend/handler.cljs @@ -168,6 +168,7 @@ (mobile/mobile-preinit)) (-> (p/let [_ (db-browser/start-db-worker!) _ (db-browser/start-inference-worker!) + _ (db-browser/ index diff --git a/src/main/frontend/persist_db/browser.cljs b/src/main/frontend/persist_db/browser.cljs index 2d5712fc2b..66c825e7bc 100644 --- a/src/main/frontend/persist_db/browser.cljs +++ b/src/main/frontend/persist_db/browser.cljs @@ -163,6 +163,13 @@ (.init wrapped-worker) (log/info "init infer-worker spent:" (str (- (util/time-ms) t1) "ms")))))) +(defn page-block-uuid->redo-ops {:doc "{repo { [op1 op2 ...]}}"}) (defonce *main-thread (atom nil)) +(defonce *infer-worker (atom nil)) (defonce *state (atom {:worker/object nil From d48a30000dea7b6741dc517945258ad0905f9549 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Fri, 14 Mar 2025 17:30:25 +0800 Subject: [PATCH 16/93] enhance(text-embedding): add api delete-labels --- src/main/frontend/inference_worker/inference_worker.cljs | 6 +++++- src/main/frontend/inference_worker/text_embedding.cljs | 4 ++++ src/main/frontend/worker/embedding.cljs | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/main/frontend/worker/embedding.cljs diff --git a/src/main/frontend/inference_worker/inference_worker.cljs b/src/main/frontend/inference_worker/inference_worker.cljs index ff33e82063..2450795b36 100644 --- a/src/main/frontend/inference_worker/inference_worker.cljs +++ b/src/main/frontend/inference_worker/inference_worker.cljs @@ -36,9 +36,13 @@ (p/let [labels (infer-worker.text-embedding/ Date: Sat, 15 Mar 2025 15:30:44 +0800 Subject: [PATCH 17/93] dev: update cljfmt.edn --- .cljfmt.edn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.cljfmt.edn b/.cljfmt.edn index 0544419004..9e710cf7fd 100644 --- a/.cljfmt.edn +++ b/.cljfmt.edn @@ -1,3 +1,5 @@ {:extra-indents {missionary.core/sp [[:block 0]] - missionary.core/ap [[:block 0]]} + missionary.core/ap [[:block 0]] + frontend.worker-common.util/profile [[:inner 0]] + frontend.util/profile [[:inner 0]]} :sort-ns-references? true} From a5db52bf3791512cf6f1cb072a8ac37da5b1345c Mon Sep 17 00:00:00 2001 From: rcmerci Date: Sat, 15 Mar 2025 20:56:22 +0800 Subject: [PATCH 18/93] feat(embedding): text-embedding graph blocks and query hnsw new properties: :logseq.property.embedding/hnsw-label, :logseq.property.embedding/hnsw-label-updated-at add ns frontend.worker.embedding --- deps/db/src/logseq/db/frontend/property.cljs | 23 +-- .../inference_worker/inference_worker.cljs | 24 +++- .../inference_worker/text_embedding.cljs | 99 ++++++++++--- src/main/frontend/worker/db/migrate.cljs | 2 +- src/main/frontend/worker/embedding.cljs | 136 +++++++++++++++++- 5 files changed, 244 insertions(+), 40 deletions(-) diff --git a/deps/db/src/logseq/db/frontend/property.cljs b/deps/db/src/logseq/db/frontend/property.cljs index 17b0acf657..c5cd4f2725 100644 --- a/deps/db/src/logseq/db/frontend/property.cljs +++ b/deps/db/src/logseq/db/frontend/property.cljs @@ -585,13 +585,20 @@ :cardinality :many :public? true} :queryable? true} - :logseq.property.search/hnsw-label {:title "HNSW label" - :schema {:type :raw-number - :public? false - :hide? true} - :rtc {:rtc/ignore-attr-when-init-upload true - :rtc/ignore-attr-when-init-download true - :rtc/ignore-attr-when-syncing true}}))) + :logseq.property.embedding/hnsw-label {:title "HNSW label" + :schema {:type :raw-number + :public? false + :hide? true} + :rtc {:rtc/ignore-attr-when-init-upload true + :rtc/ignore-attr-when-init-download true + :rtc/ignore-attr-when-syncing true}} + :logseq.property.embedding/hnsw-label-updated-at {:title "HNSW label updated-at" + :schema {:type :datetime + :public? false + :hide? true} + :rtc {:rtc/ignore-attr-when-init-upload true + :rtc/ignore-attr-when-init-download true + :rtc/ignore-attr-when-syncing true}}))) (def built-in-properties (->> built-in-properties* @@ -654,7 +661,7 @@ "logseq.property.linked-references" "logseq.property.asset" "logseq.property.table" "logseq.property.node" "logseq.property.code" "logseq.property.journal" "logseq.property.class" "logseq.property.view" - "logseq.property.user" "logseq.property.history" "logseq.property.search"}) + "logseq.property.user" "logseq.property.history" "logseq.property.embedding"}) (defn logseq-property? "Determines if keyword is a logseq property" diff --git a/src/main/frontend/inference_worker/inference_worker.cljs b/src/main/frontend/inference_worker/inference_worker.cljs index 2450795b36..183a511335 100644 --- a/src/main/frontend/inference_worker/inference_worker.cljs +++ b/src/main/frontend/inference_worker/inference_worker.cljs @@ -5,7 +5,6 @@ [frontend.inference-worker.text-embedding :as infer-worker.text-embedding] [lambdaisland.glogi :as log] [lambdaisland.glogi.console :as glogi-console] - [logseq.db :as ldb] [promesa.core :as p] [shadow.cljs.modern :refer [defclass]])) @@ -28,21 +27,32 @@ (text-embedding [_this text-coll] - (p/let [output (infer-worker.text-embedding/js)) (text-embedding+store! - [_this repo text-coll delete-labels] - (p/let [labels (infer-worker.text-embedding/js)) (delete-labels [_this repo labels] (infer-worker.text-embedding/delete-items repo labels)) + (force-reset-index! + [_this repo] + (js/Promise. (infer-worker.text-embedding/task--force-reset-index! repo))) + + (write-index! + [_this repo] + (js/Promise. (infer-worker.text-embedding/task--write-index! repo))) + (search [_this repo query-string nums-neighbors] - (infer-worker.text-embedding/= (+ add-count current-count) max-elems) + (let [new-size (+ current-count (max (* 2 add-count) current-count))] + (log/info :hnsw-resize {:from current-count :to new-size}) + (.resizeIndex hnsw new-size))) + (.addItems hnsw data-coll replace-deleted?))) (defn delete-items [repo labels] (.markDeleteItems ^js (ensure-hnsw-index! repo) (into-array labels))) -(defn updates))) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 53682d3fd3..735d0b6cd8 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -1,5 +1,137 @@ (ns frontend.worker.embedding - "Fns about text-embedding, add/delete/search vectors") + "Fns about text-embedding, add/delete/search items in hnsw" + (:require [cljs.pprint :as pp] + [clojure.string :as string] + [datascript.core :as d] + [frontend.common.missionary :as c.m] + [frontend.worker-common.util :as worker-util] + [frontend.worker.state :as worker-state] + [missionary.core :as m])) +(defn- stale-block-filter-preds + "When `reset?`, ignore :logseq.property.embedding/hnsw-label-updated-at in block" + [reset?] + (let [preds (cond-> [(comp nil? :db/ident) + (fn [b] + (let [title (:block/title b)] + (and (not (string/blank? title)) + (not (string/starts-with? title "$$$"))))) + (fn [b] + (not (keyword-identical? + :logseq.property/description + (:db/ident (:logseq.property/created-from-property b)))))] -(defn block-updated-at hnsw-label-updated-at))))))] + (apply every-pred preds))) + +(defn- stale-block-lazy-seq + [db reset?] + (->> (rseq (d/index-range db :block/updated-at nil nil)) + (sequence + (comp (map :e) + (partition-all 100) + (mapcat #(d/pull-many db [:db/id :db/ident :block/uuid :block/title :block/updated-at + {:logseq.property/description [:block/title]} + {:logseq.property/created-from-property [:db/ident]} + :logseq.property.embedding/hnsw-label-updated-at + :logseq.property.embedding/hnsw-label] %)) + (filter (stale-block-filter-preds reset?)) + (map (fn [b] + (assoc b :block.temp/text-to-embedding + (if-let [desc (:block/title (:logseq.property/description b))] + (str (:block/title b) ": " desc) + (:block/title b))))))))) + +(defn- partition-by-text-size + [text-size] + (let [*current-size (volatile! 0) + *partition-index (volatile! 0)] + (partition-by + (fn [block] + (let [block-text-size (count (:block.temp/text-to-embedding block))] + (vswap! *current-size + block-text-size) + (if (>= text-size @*current-size) + @*partition-index + (do (vreset! *current-size block-text-size) + (vswap! *partition-index inc)))))))) + +(defn- labels-update-tx-data + [db e+updated-at-coll added-labels] + (assert (= (count e+updated-at-coll) (count added-labels))) + (let [es (map first e+updated-at-coll) + exist-es (set (keep + (fn [b] (when (:block/uuid b) (:db/id b))) + (d/pull-many db [:block/uuid :db/id] es)))] + (mapcat + (fn [[e updated-at] label] + (when (contains? exist-es e) + [[:db/add e :logseq.property.embedding/hnsw-label label] + [:db/add e :logseq.property.embedding/hnsw-label-updated-at updated-at]])) + e+updated-at-coll added-labels))) + +(defn :logseq.property.embedding/hnsw-label-updated-at" + [repo conn] + (m/sp + (let [^js infer-worker @worker-state/*infer-worker] + (assert (some? infer-worker)) + (let [stale-blocks (stale-block-lazy-seq @conn false)] + (doseq [stale-block-chunk (sequence (partition-by-text-size 2000) stale-blocks)] + (let [e+updated-at-coll (map (juxt :db/id :block/updated-at) stale-block-chunk) + delete-labels (into-array (keep :logseq.property.embedding/hnsw-label stale-block-chunk)) + added-labels (worker-util/profile :text-embedding + (c.m/clj (c.m/> (map vector distances neighbors) + (keep (fn [[distance label]] (when-not (js/isNaN distance) label)))) + datoms (mapcat #(d/datoms db :avet :logseq.property.embedding/hnsw-label %) labels) + blocks (d/pull-many db [:block/uuid :block/title] (map :e datoms))] + (prn :query-result r) + (pp/pprint blocks))))) + +(comment + (def repo (frontend.worker.state/get-current-repo)) + (def conn (frontend.worker.state/get-datascript-conn (frontend.worker.state/get-current-repo))) + (( Date: Sat, 15 Mar 2025 22:43:28 +0800 Subject: [PATCH 19/93] fix: remove outdated hnsw-label --- .../inference_worker/text_embedding.cljs | 3 +- src/main/frontend/worker/embedding.cljs | 37 ++++++++++++++----- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs index d6da10f076..e0f0fd0ee7 100644 --- a/src/main/frontend/inference_worker/text_embedding.cljs +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -120,7 +120,8 @@ [repo] (m/sp (let [hnsw (ensure-hnsw-index! repo)] - (m/? (task--write-index!* repo hnsw))))) + (m/? (task--write-index!* repo hnsw)) + (.getCurrentCount hnsw)))) (defn- search-knn [repo query-point num-neighbors] diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 735d0b6cd8..eac7684030 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -6,6 +6,7 @@ [frontend.common.missionary :as c.m] [frontend.worker-common.util :as worker-util] [frontend.worker.state :as worker-state] + [logseq.db :as ldb] [missionary.core :as m])) (defn- stale-block-filter-preds @@ -15,11 +16,11 @@ (fn [b] (let [title (:block/title b)] (and (not (string/blank? title)) - (not (string/starts-with? title "$$$"))))) - (fn [b] - (not (keyword-identical? - :logseq.property/description - (:db/ident (:logseq.property/created-from-property b)))))] + (not (ldb/hidden? title)) + (nil? (:logseq.property/view-for b)) + (not (keyword-identical? + :logseq.property/description + (:db/ident (:logseq.property/created-from-property b)))))))] (not reset?) (conj (fn [b] @@ -38,6 +39,7 @@ (mapcat #(d/pull-many db [:db/id :db/ident :block/uuid :block/title :block/updated-at {:logseq.property/description [:block/title]} {:logseq.property/created-from-property [:db/ident]} + :logseq.property/view-for :logseq.property.embedding/hnsw-label-updated-at :logseq.property.embedding/hnsw-label] %)) (filter (stale-block-filter-preds reset?)) @@ -113,8 +115,18 @@ (d/transact! conn tx-data)))) (c.m/clj (c.m/> (map vector distances neighbors) (keep (fn [[distance label]] (when-not (js/isNaN distance) label)))) - datoms (mapcat #(d/datoms db :avet :logseq.property.embedding/hnsw-label %) labels) - blocks (d/pull-many db [:block/uuid :block/title] (map :e datoms))] + datoms (map (fn [label] + (->> label + (d/datoms @conn :avet :logseq.property.embedding/hnsw-label) + (sort-by :tx >))) labels) + result-es (keep (comp :e first) datoms) + es-with-outdated-hnsw-label (map :e (mapcat next datoms)) + blocks (d/pull-many @conn [:block/uuid :block/title] result-es)] + (remove-outdated-hnsw-label! conn es-with-outdated-hnsw-label) (prn :query-result r) (pp/pprint blocks))))) (comment (def repo (frontend.worker.state/get-current-repo)) (def conn (frontend.worker.state/get-datascript-conn (frontend.worker.state/get-current-repo))) + (.force-reset-index! @worker-state/*infer-worker repo) (( Date: Sat, 15 Mar 2025 22:56:45 +0800 Subject: [PATCH 20/93] fix: use d/entity instead of d/pull because :block/title in entity will replace :block/uuid by its block/title --- src/main/frontend/worker/db_worker.cljs | 3 ++- src/main/frontend/worker/embedding.cljs | 13 +++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index 0cd1928b80..4b56a85d00 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -42,7 +42,8 @@ [logseq.outliner.op :as outliner-op] [me.tonsky.persistent-sorted-set :as set :refer [BTSet]] [promesa.core :as p] - [shadow.cljs.modern :refer [defclass]])) + [shadow.cljs.modern :refer [defclass]] + [frontend.worker.embedding])) (defonce *sqlite worker-state/*sqlite) (defonce *sqlite-conns worker-state/*sqlite-conns) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index eac7684030..d79b461c9f 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -34,14 +34,7 @@ [db reset?] (->> (rseq (d/index-range db :block/updated-at nil nil)) (sequence - (comp (map :e) - (partition-all 100) - (mapcat #(d/pull-many db [:db/id :db/ident :block/uuid :block/title :block/updated-at - {:logseq.property/description [:block/title]} - {:logseq.property/created-from-property [:db/ident]} - :logseq.property/view-for - :logseq.property.embedding/hnsw-label-updated-at - :logseq.property.embedding/hnsw-label] %)) + (comp (map #(d/entity db (:e %))) (filter (stale-block-filter-preds reset?)) (map (fn [b] (assoc b :block.temp/text-to-embedding @@ -141,7 +134,7 @@ (sort-by :tx >))) labels) result-es (keep (comp :e first) datoms) es-with-outdated-hnsw-label (map :e (mapcat next datoms)) - blocks (d/pull-many @conn [:block/uuid :block/title] result-es)] + blocks (map #(select-keys (d/entity @conn %) [:db/id :block/title]) result-es)] (remove-outdated-hnsw-label! conn es-with-outdated-hnsw-label) (prn :query-result r) (pp/pprint blocks))))) @@ -153,4 +146,4 @@ (( Date: Sat, 15 Mar 2025 23:48:26 +0800 Subject: [PATCH 21/93] enhance(embedding): add user-defined class/prop --- src/main/frontend/worker/embedding.cljs | 32 ++++++++++++++++++------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index d79b461c9f..61161a99ff 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -9,13 +9,19 @@ [logseq.db :as ldb] [missionary.core :as m])) +;;; TODOs: +;;; - [x] add :logseq.property/description into text-to-embedding +;;; - add tags to text-to-embedding + (defn- stale-block-filter-preds "When `reset?`, ignore :logseq.property.embedding/hnsw-label-updated-at in block" [reset?] - (let [preds (cond-> [(comp nil? :db/ident) - (fn [b] - (let [title (:block/title b)] - (and (not (string/blank? title)) + (let [preds (cond-> [(fn [b] + (let [db-ident (:db/ident b) + title (:block/title b)] + (and (or (nil? db-ident) + (not (string/starts-with? (namespace db-ident) "logseq."))) + (not (string/blank? title)) (not (ldb/hidden? title)) (nil? (:logseq.property/view-for b)) (not (keyword-identical? @@ -34,7 +40,8 @@ [db reset?] (->> (rseq (d/index-range db :block/updated-at nil nil)) (sequence - (comp (map #(d/entity db (:e %))) + ;; NOTE: assoc :block.temp/search?, so uuid in :block/title will be replaced by content + (comp (map #(assoc (d/entity db (:e %)) :block.temp/search? true)) (filter (stale-block-filter-preds reset?)) (map (fn [b] (assoc b :block.temp/text-to-embedding @@ -124,7 +131,7 @@ (let [^js infer-worker @worker-state/*infer-worker] (assert (some? infer-worker)) (let [{:keys [distances neighbors] :as r} - (worker-util/profile :search + (worker-util/profile (str "search: '" query-string "'") (js->clj (c.m/> (map vector distances neighbors) (keep (fn [[distance label]] (when-not (js/isNaN distance) label)))) @@ -134,10 +141,17 @@ (sort-by :tx >))) labels) result-es (keep (comp :e first) datoms) es-with-outdated-hnsw-label (map :e (mapcat next datoms)) - blocks (map #(select-keys (d/entity @conn %) [:db/id :block/title]) result-es)] + blocks (map #(select-keys (assoc (d/entity @conn %) :block.temp/search? true) + [:db/id :block/title :logseq.property.embedding/hnsw-label]) result-es)] (remove-outdated-hnsw-label! conn es-with-outdated-hnsw-label) (prn :query-result r) - (pp/pprint blocks))))) + (pp/print-table ["id" "hnsw-label" "title"] (map #(-> % + (update-keys name) + (update-vals (fn [v] + (if (and (string? v) (> (count v) 60)) + (str (subs v 0 60) "[TRUNCATED]") + v)))) + blocks)))))) (comment (def repo (frontend.worker.state/get-current-repo)) @@ -146,4 +160,4 @@ (( Date: Sun, 16 Mar 2025 12:08:11 +0800 Subject: [PATCH 22/93] fix: can't use fuse.js --- src/main/frontend/worker/search.cljs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/frontend/worker/search.cljs b/src/main/frontend/worker/search.cljs index b2baecc3d6..20c90f9d9a 100644 --- a/src/main/frontend/worker/search.cljs +++ b/src/main/frontend/worker/search.cljs @@ -1,6 +1,6 @@ (ns frontend.worker.search "Full-text and fuzzy search" - (:require ["fuse.js" :as fuse] + (:require ["fuse.js" :as Fuse] [cljs-bean.core :as bean] [clojure.set :as set] [clojure.string :as string] @@ -13,6 +13,8 @@ [logseq.db.sqlite.util :as sqlite-util] [logseq.graph-parser.text :as text])) +(def fuse (aget Fuse "default")) + ;; TODO: use sqlite for fuzzy search ;; maybe https://github.com/nalgeon/sqlean/blob/main/docs/fuzzy.md? (defonce fuzzy-search-indices (atom {})) From 6b8c1dde93396a32506f4eede244fd4e1aa689a3 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Tue, 18 Mar 2025 15:43:44 +0800 Subject: [PATCH 23/93] feat(embedding): check webgpu available --- src/main/frontend/handler.cljs | 9 ++++++--- src/main/frontend/persist_db/browser.cljs | 10 ++++++++-- src/main/frontend/worker/embedding.cljs | 10 ++++------ 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/frontend/handler.cljs b/src/main/frontend/handler.cljs index 83280d3428..66ecb6efd7 100644 --- a/src/main/frontend/handler.cljs +++ b/src/main/frontend/handler.cljs @@ -169,15 +169,18 @@ (when (mobile-util/native-platform?) (mobile/mobile-preinit)) (-> (p/let [_ (db-browser/start-db-worker!) - _ (db-browser/start-inference-worker!) - _ (db-browser/ :logseq.property.embedding/hnsw-label-updated-at" [repo conn] (m/sp - (let [^js infer-worker @worker-state/*infer-worker] - (assert (some? infer-worker)) + (when-let [^js infer-worker @worker-state/*infer-worker] (let [stale-blocks (stale-block-lazy-seq @conn false)] (doseq [stale-block-chunk (sequence (partition-by-text-size 2000) stale-blocks)] (let [e+updated-at-coll (map (juxt :db/id :block/updated-at) stale-block-chunk) @@ -100,8 +100,7 @@ "force re-embedding all block-data in graph" [repo conn] (m/sp - (let [^js infer-worker @worker-state/*infer-worker] - (assert (some? infer-worker)) + (when-let [^js infer-worker @worker-state/*infer-worker] (c.m/clj (c.m/ Date: Tue, 18 Mar 2025 18:37:25 +0800 Subject: [PATCH 24/93] feat(embedding): add vector-search-state-flows --- .../components/vector_search/sidebar.cljs | 1 + .../handler/db_based/vector_search_flows.cljs | 11 +++ src/main/frontend/handler/events.cljs | 3 + src/main/frontend/handler/worker.cljs | 3 + .../inference_worker/inference_worker.cljs | 6 +- .../inference_worker/text_embedding.cljs | 12 +++- src/main/frontend/state.cljs | 4 +- src/main/frontend/worker/embedding.cljs | 72 ++++++++++++++++--- src/main/frontend/worker/rtc/core.cljs | 5 +- 9 files changed, 102 insertions(+), 15 deletions(-) create mode 100644 src/main/frontend/components/vector_search/sidebar.cljs create mode 100644 src/main/frontend/handler/db_based/vector_search_flows.cljs diff --git a/src/main/frontend/components/vector_search/sidebar.cljs b/src/main/frontend/components/vector_search/sidebar.cljs new file mode 100644 index 0000000000..b939c53c7d --- /dev/null +++ b/src/main/frontend/components/vector_search/sidebar.cljs @@ -0,0 +1 @@ +(ns frontend.components.vector-search.sidebar) diff --git a/src/main/frontend/handler/db_based/vector_search_flows.cljs b/src/main/frontend/handler/db_based/vector_search_flows.cljs new file mode 100644 index 0000000000..47f1c19f1b --- /dev/null +++ b/src/main/frontend/handler/db_based/vector_search_flows.cljs @@ -0,0 +1,11 @@ +(ns frontend.handler.db-based.vector-search-flows + "Flows for vector-search state" + (:require [electron.state :as state] + [missionary.core :as m])) + +(def vector-search-state-flow + (m/watch (:vector-search/state @state/state))) + +(comment + ((m/reduce (fn [_ x] (prn :xx x)) vector-search-state-flow) prn js/console.log) + ) diff --git a/src/main/frontend/handler/events.cljs b/src/main/frontend/handler/events.cljs index 4bdefaae51..299806b4e8 100644 --- a/src/main/frontend/handler/events.cljs +++ b/src/main/frontend/handler/events.cljs @@ -1044,6 +1044,9 @@ (state/set-state! :error/multiple-tabs-access-opfs? true) (shui/dialog-open! multi-tabs-dialog)) +(defmethod handle :vector-search/sync-state [[_ state]] + (state/set-state! :vector-search/state state)) + (defmethod handle :rtc/sync-state [[_ state]] (state/update-state! :rtc/state (fn [old] (merge old state)))) diff --git a/src/main/frontend/handler/worker.cljs b/src/main/frontend/handler/worker.cljs index 9d11de38a0..4d12a776d9 100644 --- a/src/main/frontend/handler/worker.cljs +++ b/src/main/frontend/handler/worker.cljs @@ -37,6 +37,9 @@ (let [state data] (state/pub-event! [:rtc/sync-state state]))) +(defmethod handle :vector-search-sync-state [_ _worker data] + (state/pub-event! [:vector-search/sync-state data])) + (defmethod handle :sync-db-changes [_ _worker data] (state/pub-event! [:db/sync-changes data])) diff --git a/src/main/frontend/inference_worker/inference_worker.cljs b/src/main/frontend/inference_worker/inference_worker.cljs index 183a511335..e5958bc76a 100644 --- a/src/main/frontend/inference_worker/inference_worker.cljs +++ b/src/main/frontend/inference_worker/inference_worker.cljs @@ -52,7 +52,11 @@ (search [_this repo query-string nums-neighbors] - (infer-worker.text-embedding/js (infer-worker.text-embedding/index-info repo)))) (defn init [] diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs index e0f0fd0ee7..dc4345d23a 100644 --- a/src/main/frontend/inference_worker/text_embedding.cljs +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -120,8 +120,7 @@ [repo] (m/sp (let [hnsw (ensure-hnsw-index! repo)] - (m/? (task--write-index!* repo hnsw)) - (.getCurrentCount hnsw)))) + (m/? (task--write-index!* repo hnsw))))) (defn- search-knn [repo query-point num-neighbors] @@ -135,6 +134,14 @@ query-point (:data query-embedding)] (search-knn repo query-point num-neighbors))) +(defn index-info + [repo] + (let [^js hnsw (ensure-hnsw-index! repo)] + {:current-count (.getCurrentCount hnsw) + :max-elements (.getMaxElements hnsw) + :ef-search (.getEfSearch hnsw) + :num-dims (.getNumDimensions hnsw)})) + (defn index-info {} ;; repo->index-info + :repo->index-building-canceler {} ;; repo->canceler + :repo->search-canceler {}}) ;; repo->canceler + +(def ^:private vector-search-state-keys (set (keys empty-vector-search-state))) + +(def ^:private *vector-search-state (atom empty-vector-search-state + :validator + (fn [v] (= vector-search-state-keys (set (keys v)))))) + +(defn- reset-*vector-search-state! + [repo & {:keys [index-info index-building-canceler search-canceler]}] + (reset! *vector-search-state + (cond-> @*vector-search-state + index-info (assoc :repo->index-info {repo index-info}) + index-building-canceler (assoc-in [:repo->index-building-canceler repo] index-building-canceler) + search-canceler (assoc-in [:repo->search-canceler repo] search-canceler)))) + +(defn- cancel-action! + [repo action] + (assert (contains? #{:index-building :search} action)) + (let [k {:index-building :repo->index-building-canceler + :search :repo->search-canceler}] + (when-let [canceler (get-in @*vector-search-state [k repo])] + (canceler)) + (swap! *vector-search-state medley/dissoc-in [k repo]))) (defn- stale-block-filter-preds "When `reset?`, ignore :logseq.property.embedding/hnsw-label-updated-at in block" @@ -77,7 +108,13 @@ [:db/add e :logseq.property.embedding/hnsw-label-updated-at updated-at]])) e+updated-at-coll added-labels))) -(defn clj (c.m/ :logseq.property.embedding/hnsw-label-updated-at" [repo conn] @@ -93,15 +130,17 @@ infer-worker repo (into-array (map :block.temp/text-to-embedding stale-block-chunk)) delete-labels false))) tx-data (labels-update-tx-data @conn e+updated-at-coll added-labels)] - (d/transact! conn tx-data))) + (d/transact! conn tx-data) + (m/? (task--update-index-info! repo infer-worker)))) (c.m/ m + (update :index-building-canceler keys) + (update :search-canceler keys)))) + (c.m/throttle 300 (m/watch *vector-search-state)))) + +(when-not common-config/PUBLISHING ; NOTE: we may support vector-search in publishing mode later + (c.m/run-background-task + ::subscribe-state + (m/reduce + (fn [_ m] (worker-util/post-message :vector-search-sync-state m)) + vector-search-state-flow))) + (comment (def repo (frontend.worker.state/get-current-repo)) (def conn (frontend.worker.state/get-datascript-conn (frontend.worker.state/get-current-repo))) (.force-reset-index! @worker-state/*infer-worker repo) - (( Date: Tue, 18 Mar 2025 21:55:51 +0800 Subject: [PATCH 25/93] feat(vec-search): add debug-ui at sidebar --- .../frontend/components/right_sidebar.cljs | 11 ++++++++ .../components/vector_search/sidebar.cljs | 28 ++++++++++++++++++- .../handler/db_based/vector_search_flows.cljs | 5 ++-- src/main/frontend/worker/embedding.cljs | 5 ++-- 4 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 7d84710a58..db440b5ad0 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -8,6 +8,7 @@ [frontend.components.page :as page] [frontend.components.profiler :as profiler] [frontend.components.shortcut-help :as shortcut-help] + [frontend.components.vector-search.sidebar :as vector-search] [frontend.context.i18n :refer [t]] [frontend.date :as date] [frontend.db :as db] @@ -139,6 +140,10 @@ [[:.flex.items-center (ui/icon "cloud" {:class "text-md mr-2"}) "(Dev) Profiler"] (profiler/profiler)] + :vector-search + [[:.flex.items-center (ui/icon "file-search" {:class "text-md mr-2"}) "(Dev) VectorSearch"] + (vector-search/vector-search-sidebar)] + ["" [:span]])) (defonce *drag-to @@ -414,6 +419,12 @@ [:button.button.cp__right-sidebar-settings-btn {:on-click (fn [_e] (state/sidebar-add-block! repo "rtc" :rtc))} "(Dev) RTC"]]) + (when (state/sub [:ui/developer-mode?]) + [:div.text-sm + [:button.button.cp__right-sidebar-settings-btn + {:on-click (fn [_e] + (state/sidebar-add-block! repo "vector-search" :vector-search))} + "(Dev) vector-search"]]) (when (state/sub [:ui/developer-mode?]) [:div.text-sm [:button.button.cp__right-sidebar-settings-btn {:on-click (fn [_e] diff --git a/src/main/frontend/components/vector_search/sidebar.cljs b/src/main/frontend/components/vector_search/sidebar.cljs index b939c53c7d..00be10bdc7 100644 --- a/src/main/frontend/components/vector_search/sidebar.cljs +++ b/src/main/frontend/components/vector_search/sidebar.cljs @@ -1 +1,27 @@ -(ns frontend.components.vector-search.sidebar) +(ns frontend.components.vector-search.sidebar + (:require [fipp.edn :as fipp] + [frontend.common.missionary :as c.m] + [frontend.handler.db-based.vector-search-flows :as vector-search-flows] + [frontend.hooks :as hooks] + [frontend.state :as state] + [lambdaisland.glogi :as log] + [missionary.core :as m] + [rum.core :as rum])) + +(rum/defc vector-search-sidebar + [] + (let [repo (state/get-current-repo) + [vec-search-state set-vec-search-state] (hooks/use-state nil)] + (hooks/use-effect! + (fn [] + (c.m/run-task ;; return canceler + (m/reduce + (fn [_ v] (set-vec-search-state v)) + vector-search-flows/vector-search-state-flow) + ::update-vec-search-state :succ (constantly nil) :fail #(log/info :update-vec-search-state-stopped %))) + []) + (let [state-map (get-in vec-search-state [:repo->index-info repo])] + [:div.pb-4 + [:pre.select-text + (with-out-str + (fipp/pprint state-map {:width 10}))]]))) diff --git a/src/main/frontend/handler/db_based/vector_search_flows.cljs b/src/main/frontend/handler/db_based/vector_search_flows.cljs index 47f1c19f1b..318ca2dda6 100644 --- a/src/main/frontend/handler/db_based/vector_search_flows.cljs +++ b/src/main/frontend/handler/db_based/vector_search_flows.cljs @@ -1,11 +1,10 @@ (ns frontend.handler.db-based.vector-search-flows "Flows for vector-search state" - (:require [electron.state :as state] + (:require [frontend.state :as state] [missionary.core :as m])) (def vector-search-state-flow (m/watch (:vector-search/state @state/state))) (comment - ((m/reduce (fn [_ x] (prn :xx x)) vector-search-state-flow) prn js/console.log) - ) + ((m/reduce (fn [_ x] (prn :xx x)) vector-search-state-flow) prn js/console.log)) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 2bedeb8c1e..1e7dfdad68 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -109,7 +109,7 @@ e+updated-at-coll added-labels))) (defn- task--update-index-info! - [repo infer-worker] + [repo ^js infer-worker] (m/sp (reset-*vector-search-state! repo :index-info (js->clj (c.m/ m (update :index-building-canceler keys) - (update :search-canceler keys)))) + (update :search-canceler keys) + (dissoc :repo->search-canceler :repo->index-building-canceler)))) (c.m/throttle 300 (m/watch *vector-search-state)))) (when-not common-config/PUBLISHING ; NOTE: we may support vector-search in publishing mode later From 47c24177a69b2817380acea94eda38b8b3166632 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Tue, 18 Mar 2025 23:37:10 +0800 Subject: [PATCH 26/93] feat(vec-search): update debug ui --- .../components/vector_search/sidebar.cljs | 53 ++++- src/main/frontend/worker/db_worker.cljs | 21 +- src/main/frontend/worker/embedding.cljs | 185 ++++++++++-------- 3 files changed, 170 insertions(+), 89 deletions(-) diff --git a/src/main/frontend/components/vector_search/sidebar.cljs b/src/main/frontend/components/vector_search/sidebar.cljs index 00be10bdc7..59758ab7bd 100644 --- a/src/main/frontend/components/vector_search/sidebar.cljs +++ b/src/main/frontend/components/vector_search/sidebar.cljs @@ -3,25 +3,64 @@ [frontend.common.missionary :as c.m] [frontend.handler.db-based.vector-search-flows :as vector-search-flows] [frontend.hooks :as hooks] + [frontend.persist-db.browser :as db-browser] [frontend.state :as state] - [lambdaisland.glogi :as log] + [frontend.util :as util] + [logseq.db :as ldb] + [logseq.shui.ui :as shui] [missionary.core :as m] [rum.core :as rum])) (rum/defc vector-search-sidebar [] (let [repo (state/get-current-repo) - [vec-search-state set-vec-search-state] (hooks/use-state nil)] + ^js worker @db-browser/*worker + [vec-search-state set-vec-search-state] (hooks/use-state nil) + [query-string set-query-string] (hooks/use-state nil) + [result set-result] (hooks/use-state nil)] (hooks/use-effect! (fn [] - (c.m/run-task ;; return canceler + (c.m/run-task (m/reduce (fn [_ v] (set-vec-search-state v)) vector-search-flows/vector-search-state-flow) - ::update-vec-search-state :succ (constantly nil) :fail #(log/info :update-vec-search-state-stopped %))) + ::update-vec-search-state :succ (constantly nil))) []) - (let [state-map (get-in vec-search-state [:repo->index-info repo])] - [:div.pb-4 + (hooks/use-effect! + (fn [] + (c.m/run-task + (m/sp + (-> (c.m/index-info repo])] [:pre.select-text (with-out-str - (fipp/pprint state-map {:width 10}))]]))) + (fipp/pprint state-map {:width 10}))]) + (shui/button + {:size :sm + :class "mx-2" + :on-click (fn [_] (.vec-search-embedding-stale-blocks worker repo))} + "embedding-stale-blocks") + (shui/button + {:size :sm + :class "mx-2" + :on-click (fn [_] (.vec-search-re-embedding-graph-data worker repo))} + "force-embedding-all-graph-blocks") + (when (get-in vec-search-state [:repo->index-info repo :indexing?]) + (shui/button + {:size :sm + :class "mx-2" + :on-click (fn [_] (.vec-search-cancel-indexing worker repo))} + "cancel-current-indexing")) + [:hr] + [:b "Search:"] + [:input.form-input.my-2.py-1 + {:on-change (fn [e] (set-query-string (util/evalue e)))}] + [:b "Search Result:"] + [:pre.select-text + (with-out-str + (fipp/pprint result {:width 10}))]])) diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index 83c9a0e9d1..64b2ac5eb9 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -16,7 +16,7 @@ [frontend.worker.db.migrate :as db-migrate] [frontend.worker.db.validate :as worker-db-validate] [frontend.worker.device :as worker-device] - [frontend.worker.embedding] + [frontend.worker.embedding :as embedding] [frontend.worker.export :as worker-export] [frontend.worker.file :as file] [frontend.worker.handler.page :as worker-page] @@ -924,7 +924,24 @@ [this repo] (p/let [r (.listDB this) dbs (ldb/read-transit-str r)] - (p/all (map #(.unsafeUnlinkDB this (:name %)) dbs))))) + (p/all (map #(.unsafeUnlinkDB this (:name %)) dbs)))) + + (vec-search-embedding-stale-blocks + [this repo] + (embedding/embedding-stale-blocks! repo)) + + (vec-search-re-embedding-graph-data + [this repo] + (embedding/re-embedding-graph-data! repo)) + + (vec-search-search + [this repo query-string nums-neighbors] + (with-write-transit-str + (embedding/task--search repo query-string nums-neighbors))) + + (vec-search-cancel-indexing + [this repo] + (embedding/cancel-indexing repo))) (defn- rename-page! [repo conn page-uuid new-name] diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 1e7dfdad68..35dc780a5d 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -18,9 +18,9 @@ ;;; - [ ] expose index-state to ui (def ^:private empty-vector-search-state - {:repo->index-info {} ;; repo->index-info - :repo->index-building-canceler {} ;; repo->canceler - :repo->search-canceler {}}) ;; repo->canceler + {:repo->index-info {} ;; repo->index-info + :repo->canceler {} ;; repo->canceler + }) (def ^:private vector-search-state-keys (set (keys empty-vector-search-state))) @@ -29,21 +29,23 @@ (fn [v] (= vector-search-state-keys (set (keys v)))))) (defn- reset-*vector-search-state! - [repo & {:keys [index-info index-building-canceler search-canceler]}] + [repo & {:keys [index-info canceler]}] (reset! *vector-search-state (cond-> @*vector-search-state - index-info (assoc :repo->index-info {repo index-info}) - index-building-canceler (assoc-in [:repo->index-building-canceler repo] index-building-canceler) - search-canceler (assoc-in [:repo->search-canceler repo] search-canceler)))) + index-info (assoc :repo->index-info {repo index-info}) + canceler (assoc-in [:repo->canceler repo] canceler))) + nil) -(defn- cancel-action! - [repo action] - (assert (contains? #{:index-building :search} action)) - (let [k {:index-building :repo->index-building-canceler - :search :repo->search-canceler}] - (when-let [canceler (get-in @*vector-search-state [k repo])] - (canceler)) - (swap! *vector-search-state medley/dissoc-in [k repo]))) +(defn cancel-indexing + [repo] + (when-let [canceler (get-in @*vector-search-state [:repo->canceler repo])] + (canceler) + (swap! *vector-search-state assoc-in [:repo->canceler repo] nil) + (swap! *vector-search-state assoc-in [:repo->index-info repo :indexing?] false))) + +(defn- indexing? + [repo] + (get-in @*vector-search-state [:repo->index-info repo :indexing?])) (defn- stale-block-filter-preds "When `reset?`, ignore :logseq.property.embedding/hnsw-label-updated-at in block" @@ -109,50 +111,73 @@ e+updated-at-coll added-labels))) (defn- task--update-index-info! - [repo ^js infer-worker] + [repo ^js infer-worker indexing?*] (m/sp (reset-*vector-search-state! repo :index-info - (js->clj (c.m/clj (c.m/ :logseq.property.embedding/hnsw-label-updated-at" - [repo conn] + [repo] (m/sp (when-let [^js infer-worker @worker-state/*infer-worker] - (let [stale-blocks (stale-block-lazy-seq @conn false)] - (doseq [stale-block-chunk (sequence (partition-by-text-size 2000) stale-blocks)] - (let [e+updated-at-coll (map (juxt :db/id :block/updated-at) stale-block-chunk) - delete-labels (into-array (keep :logseq.property.embedding/hnsw-label stale-block-chunk)) - added-labels (worker-util/profile :text-embedding - (c.m/clj (c.m/> (map vector distances neighbors) - (keep (fn [[distance label]] (when-not (js/isNaN distance) label)))) - datoms (map (fn [label] - (->> label - (d/datoms @conn :avet :logseq.property.embedding/hnsw-label) - (sort-by :tx >))) labels) - result-es (keep (comp :e first) datoms) - es-with-outdated-hnsw-label (map :e (mapcat next datoms)) - blocks (map #(select-keys (assoc (d/entity @conn %) :block.temp/search? true) - [:db/id :block/title :logseq.property.embedding/hnsw-label]) result-es)] - (remove-outdated-hnsw-label! conn es-with-outdated-hnsw-label) - (prn :query-result r) - (pp/print-table ["id" "hnsw-label" "title"] (map #(-> % - (update-keys name) - (update-vals (fn [v] - (if (and (string? v) (> (count v) 60)) - (str (subs v 0 60) "[TRUNCATED]") - v)))) - blocks)))))) + (when-not (indexing? repo) + (when-let [^js infer-worker @worker-state/*infer-worker] + (when-let [conn (worker-state/get-datascript-conn repo)] + (let [{:keys [distances neighbors] :as r} + (worker-util/profile (str "search: '" query-string "'") + (js->clj (c.m/> (map vector distances neighbors) + (keep (fn [[distance label]] (when-not (js/isNaN distance) label)))) + datoms (map (fn [label] + (->> label + (d/datoms @conn :avet :logseq.property.embedding/hnsw-label) + (sort-by :tx >))) labels) + result-es (keep (comp :e first) datoms) + es-with-outdated-hnsw-label (map :e (mapcat next datoms)) + blocks (map #(select-keys (assoc (d/entity @conn %) :block.temp/search? true) + [:db/id :block/title :logseq.property.embedding/hnsw-label]) result-es)] + (remove-outdated-hnsw-label! conn es-with-outdated-hnsw-label) + (prn :query-result r) + (pp/print-table ["id" "hnsw-label" "title"] (map #(-> % + (update-keys name) + (update-vals (fn [v] + (if (and (string? v) (> (count v) 60)) + (str (subs v 0 60) "[TRUNCATED]") + v)))) + blocks)) + blocks)))))) (def ^:private vector-search-state-flow (m/eduction - (map (fn [m] (-> m - (update :index-building-canceler keys) - (update :search-canceler keys) - (dissoc :repo->search-canceler :repo->index-building-canceler)))) + (map (fn [m] (dissoc m :repo->canceler))) (c.m/throttle 300 (m/watch *vector-search-state)))) (when-not common-config/PUBLISHING ; NOTE: we may support vector-search in publishing mode later @@ -210,7 +235,7 @@ (def repo (frontend.worker.state/get-current-repo)) (def conn (frontend.worker.state/get-datascript-conn (frontend.worker.state/get-current-repo))) (.force-reset-index! @worker-state/*infer-worker repo) - ((task--embedding-stale-blocks! repo conn) prn js/console.log) - ((task--re-embedding-graph-data! repo conn) prn js/console.log) + ((task--embedding-stale-blocks! repo) prn js/console.log) + ((task--re-embedding-graph-data! repo) prn js/console.log) - ((task--search repo conn "perf performance datomic stat" 10) prn js/console.log)) + ((task--search repo "perf performance datomic stat" 10) prn js/console.log)) From a7273847bc3d2bfb7a4891f0ec4ff0b5f0053d7d Mon Sep 17 00:00:00 2001 From: rcmerci Date: Thu, 20 Mar 2025 22:27:56 +0800 Subject: [PATCH 27/93] feat(vec-search): debug ui support selecting model --- deps/db/src/logseq/db/frontend/kv_entity.cljs | 6 +- .../components/vector_search/sidebar.cljs | 67 +++++++++---- src/main/frontend/core.cljs | 1 + src/main/frontend/handler.cljs | 4 +- .../vector_search_background_tasks.cljs | 22 +++++ .../handler/db_based/vector_search_flows.cljs | 9 ++ .../inference_worker/inference_worker.cljs | 8 ++ src/main/frontend/inference_worker/state.cljs | 1 + .../inference_worker/text_embedding.cljs | 98 +++++++++++++------ src/main/frontend/worker/db_worker.cljs | 14 +++ src/main/frontend/worker/embedding.cljs | 37 ++++++- 11 files changed, 214 insertions(+), 53 deletions(-) create mode 100644 src/main/frontend/handler/db_based/vector_search_background_tasks.cljs diff --git a/deps/db/src/logseq/db/frontend/kv_entity.cljs b/deps/db/src/logseq/db/frontend/kv_entity.cljs index 03fd8f4e8a..7327edef2c 100644 --- a/deps/db/src/logseq/db/frontend/kv_entity.cljs +++ b/deps/db/src/logseq/db/frontend/kv_entity.cljs @@ -25,4 +25,8 @@ RTC won't start when major-schema-versions don't match" :logseq.kv/graph-backup-folder {:doc "Backup folder for automated backup feature" :rtc {:rtc/ignore-entity-when-init-upload true :rtc/ignore-entity-when-init-download true}} - :logseq.kv/graph-initial-schema-version {:doc "Graph's schema version when created"}) + :logseq.kv/graph-initial-schema-version {:doc "Graph's schema version when created"} + + :logseq.kv/graph-text-embedding-model-name {:doc "Graph's text-embedding model name" + :rtc {:rtc/ignore-entity-when-init-upload true + :rtc/ignore-entity-when-init-download true}}) diff --git a/src/main/frontend/components/vector_search/sidebar.cljs b/src/main/frontend/components/vector_search/sidebar.cljs index 59758ab7bd..ed915b32d8 100644 --- a/src/main/frontend/components/vector_search/sidebar.cljs +++ b/src/main/frontend/components/vector_search/sidebar.cljs @@ -15,6 +15,7 @@ [] (let [repo (state/get-current-repo) ^js worker @db-browser/*worker + [model-info set-model-info] (hooks/use-state nil) [vec-search-state set-vec-search-state] (hooks/use-state nil) [query-string set-query-string] (hooks/use-state nil) [result set-result] (hooks/use-state nil)] @@ -26,6 +27,18 @@ vector-search-flows/vector-search-state-flow) ::update-vec-search-state :succ (constantly nil))) []) + (hooks/use-effect! + (fn [] + (c.m/run-task + (m/reduce + (constantly nil) + (m/ap + (m/?> vector-search-flows/infer-worker-ready-flow) + (let [model-info (ldb/read-transit-str (c.m/index-info repo])] [:pre.select-text (with-out-str (fipp/pprint state-map {:width 10}))]) - (shui/button - {:size :sm - :class "mx-2" - :on-click (fn [_] (.vec-search-embedding-stale-blocks worker repo))} - "embedding-stale-blocks") - (shui/button - {:size :sm - :class "mx-2" - :on-click (fn [_] (.vec-search-re-embedding-graph-data worker repo))} - "force-embedding-all-graph-blocks") - (when (get-in vec-search-state [:repo->index-info repo :indexing?]) - (shui/button - {:size :sm - :class "mx-2" - :on-click (fn [_] (.vec-search-cancel-indexing worker repo))} - "cancel-current-indexing")) [:hr] - [:b "Search:"] + [:b "Actions"] + [:div + (shui/button + {:size :sm + :class "mx-2" + :on-click (fn [_] (.vec-search-embedding-stale-blocks worker repo))} + "embedding-stale-blocks") + (shui/button + {:size :sm + :class "mx-2" + :on-click (fn [_] (.vec-search-re-embedding-graph-data worker repo))} + "force-embedding-all-graph-blocks") + (when (get-in vec-search-state [:repo->index-info repo :indexing?]) + (shui/button + {:size :sm + :class "mx-2" + :on-click (fn [_] (.vec-search-cancel-indexing worker repo))} + "cancel-current-indexing"))] + [:hr] + [:b "Settings"] + (shui/select + {:on-value-change (fn [model-name] + (c.m/run-task + (m/sp + (c.m/ flows/current-repo-flow) + (when-let [^js worker @db-browser/*worker] + (c.m/js (keys infer-worker.text-embedding/available-embedding-models))) + (set-db-worker-proxy [_this proxy] (reset! infer-worker.state/*db-worker proxy) diff --git a/src/main/frontend/inference_worker/state.cljs b/src/main/frontend/inference_worker/state.cljs index f4ee28f685..33eb98aaad 100644 --- a/src/main/frontend/inference_worker/state.cljs +++ b/src/main/frontend/inference_worker/state.cljs @@ -9,3 +9,4 @@ (defonce *hnsw-index (atom {})) (defonce *extractor (atom nil)) +(defonce *model-name+config (atom nil)) diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs index dc4345d23a..967a23f071 100644 --- a/src/main/frontend/inference_worker/text_embedding.cljs +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -2,6 +2,7 @@ "text embedding fns" (:require ["@huggingface/transformers" :refer [pipeline]] ["hnswlib-wasm" :refer [loadHnswlib]] + [clojure.data :as data] [frontend.common.missionary :as c.m] [frontend.inference-worker.state :as infer-worker.state] [frontend.worker-common.util :as worker-util] @@ -9,9 +10,16 @@ [missionary.core :as m] [promesa.core :as p])) +(add-watch infer-worker.state/*hnsw-index :delete-obj-when-dissoc + (fn [_ _ o n] + (let [[old-only] (data/diff o n)] + (doseq [[repo ^js hnsw-index] old-only] + (when hnsw-index + (log/info :delete-hnsw-index repo) + (.delete hnsw-index)))))) + (def ^:private embedding-opts #js{"pooling" "mean" "normalize" true}) -(def ^:private num-dimensions 384) (def ^:private init-max-elems 100) (defn- split-into-chunks @@ -24,23 +32,37 @@ (recur (+ i chunk-size)))) result)) -(defn- init-index +(defn- init-index! [^js hnsw] (.initIndex hnsw init-max-elems 16 200 100) (.setEfSearch hnsw 64 ;;default 32 )) -(defn- ^js ensure-hnsw-index! +(defn- ^js get-hnsw-index [repo] (or (@infer-worker.state/*hnsw-index repo) (let [hnsw-ctor (.-HierarchicalNSW ^js @infer-worker.state/*hnswlib) - hnsw (new hnsw-ctor "cosine" num-dimensions "") + hnsw (new hnsw-ctor "cosine" (or (:dims (:hnsw-config (second @infer-worker.state/*model-name+config))) 384) "") file-exists? (.checkFileExists (.-EmscriptenFileSystemManager ^js @infer-worker.state/*hnswlib) repo)] - (if file-exists? + (when file-exists? (.readIndex hnsw repo init-max-elems) - (init-index hnsw)) - (swap! infer-worker.state/*hnsw-index assoc repo hnsw) - (@infer-worker.state/*hnsw-index repo)))) + (swap! infer-worker.state/*hnsw-index assoc repo hnsw) + hnsw)))) + +(defn- ^js new-hnsw-index! + [repo] + (when (get-hnsw-index repo) + (swap! infer-worker.state/*hnsw-index dissoc repo)) + (let [hnsw-ctor (.-HierarchicalNSW ^js @infer-worker.state/*hnswlib) + hnsw (new hnsw-ctor "cosine" (or (:dims (:hnsw-config (second @infer-worker.state/*model-name+config))) 384) "")] + (init-index! hnsw) + (swap! infer-worker.state/*hnsw-index assoc repo hnsw) + hnsw)) + +(defn- model-loaded? + [] + (and @infer-worker.state/*extractor + @infer-worker.state/*model-name+config)) (defn js (-> (:tf-config config) + (assoc "device" "webgpu") + (assoc "progress_callback" #(log/info :progress %)))))] + (reset! infer-worker.state/*extractor extractor) + (reset! infer-worker.state/*model-name+config [model-name config]) + true))) + (defn index-info {} ;; repo->index-info - :repo->canceler {} ;; repo->canceler + :repo->canceler {} ;; repo->canceler }) (def ^:private vector-search-state-keys (set (keys empty-vector-search-state))) @@ -98,7 +99,7 @@ (defn- labels-update-tx-data [db e+updated-at-coll added-labels] - (assert (= (count e+updated-at-coll) (count added-labels))) + (assert (= (count e+updated-at-coll) (count added-labels)) [e+updated-at-coll added-labels]) (let [es (map first e+updated-at-coll) exist-es (set (keep (fn [b] (when (:block/uuid b) (:db/id b))) @@ -179,6 +180,34 @@ :re-embedding-graph-data! :succ (constantly nil))] (reset-*vector-search-state! repo :canceler canceler)))) +(defn task--embedding-model-info + [repo] + (m/sp + (when-let [^js infer-worker @worker-state/*infer-worker] + (let [available-model-names (c.m/ Date: Fri, 21 Mar 2025 01:38:39 +0800 Subject: [PATCH 28/93] feat(vec-search): debug ui show load-model-progress --- .../components/vector_search/sidebar.cljs | 17 +++++- .../handler/db_based/vector_search_flows.cljs | 3 ++ src/main/frontend/handler/events.cljs | 3 ++ src/main/frontend/handler/worker.cljs | 5 +- .../inference_worker/text_embedding.cljs | 12 ++++- src/main/frontend/persist_db/browser.cljs | 1 + src/main/frontend/state.cljs | 3 +- src/main/frontend/worker/db_worker.cljs | 6 ++- src/main/frontend/worker/embedding.cljs | 54 +++++++++++-------- 9 files changed, 76 insertions(+), 28 deletions(-) diff --git a/src/main/frontend/components/vector_search/sidebar.cljs b/src/main/frontend/components/vector_search/sidebar.cljs index ed915b32d8..f3a64938ff 100644 --- a/src/main/frontend/components/vector_search/sidebar.cljs +++ b/src/main/frontend/components/vector_search/sidebar.cljs @@ -17,6 +17,7 @@ ^js worker @db-browser/*worker [model-info set-model-info] (hooks/use-state nil) [vec-search-state set-vec-search-state] (hooks/use-state nil) + [load-model-progress set-load-model-progress] (hooks/use-state nil) [query-string set-query-string] (hooks/use-state nil) [result set-result] (hooks/use-state nil)] (hooks/use-effect! @@ -24,9 +25,20 @@ (c.m/run-task (m/reduce (fn [_ v] (set-vec-search-state v)) - vector-search-flows/vector-search-state-flow) + (m/ap + (m/?> vector-search-flows/infer-worker-ready-flow) + (c.m/ vector-search-flows/vector-search-state-flow))) ::update-vec-search-state :succ (constantly nil))) []) + (hooks/use-effect! + (fn [] + (c.m/run-task + (m/reduce + (fn [_ v] (set-load-model-progress v)) + vector-search-flows/load-model-progress-flow) + ::update-load-model-progress :succ (constantly nil))) + []) (hooks/use-effect! (fn [] (c.m/run-task @@ -50,7 +62,8 @@ [(hooks/use-debounced-value query-string 200)]) [:div [:b "State"] - (let [state-map (get-in vec-search-state [:repo->index-info repo])] + (let [state-map (assoc (get-in vec-search-state [:repo->index-info repo]) + :load-model-progress load-model-progress)] [:pre.select-text (with-out-str (fipp/pprint state-map {:width 10}))]) diff --git a/src/main/frontend/handler/db_based/vector_search_flows.cljs b/src/main/frontend/handler/db_based/vector_search_flows.cljs index a449949dd2..4950e78c28 100644 --- a/src/main/frontend/handler/db_based/vector_search_flows.cljs +++ b/src/main/frontend/handler/db_based/vector_search_flows.cljs @@ -15,5 +15,8 @@ (def vector-search-state-flow (m/watch (:vector-search/state @state/state))) +(def load-model-progress-flow + (m/watch (:vector-search/load-model-progress @state/state))) + (comment ((m/reduce (fn [_ x] (prn :xx x)) vector-search-state-flow) prn js/console.log)) diff --git a/src/main/frontend/handler/events.cljs b/src/main/frontend/handler/events.cljs index 299806b4e8..1cb9afe8d4 100644 --- a/src/main/frontend/handler/events.cljs +++ b/src/main/frontend/handler/events.cljs @@ -1095,6 +1095,9 @@ (defmethod handle :editor/hide-action-bar [] (shui/popup-hide! :selection-action-bar)) +(defmethod handle :vector-search/load-model-progress [[_ data]] + (state/set-state! :vector-search/load-model-progress data)) + (defn run! [] (let [chan (state/get-events-chan)] diff --git a/src/main/frontend/handler/worker.cljs b/src/main/frontend/handler/worker.cljs index 4d12a776d9..6b145cd79d 100644 --- a/src/main/frontend/handler/worker.cljs +++ b/src/main/frontend/handler/worker.cljs @@ -1,5 +1,5 @@ (ns frontend.handler.worker - "Handle messages received from the db worker" + "Handle messages received from the webworkers" (:require [cljs-bean.core :as bean] [frontend.handler.file-based.file :as file-handler] [frontend.handler.notification :as notification] @@ -52,6 +52,9 @@ (defmethod handle :capture-error [_ _worker data] (state/pub-event! [:capture-error data])) +(defmethod handle :vector-search/load-model-progress [_ _ data] + (state/pub-event! [:vector-search/load-model-progress data])) + (defmethod handle :default [_ _worker data] (prn :debug "Worker data not handled: " data)) diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs index 967a23f071..071c531739 100644 --- a/src/main/frontend/inference_worker/text_embedding.cljs +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -7,6 +7,7 @@ [frontend.inference-worker.state :as infer-worker.state] [frontend.worker-common.util :as worker-util] [lambdaisland.glogi :as log] + [logseq.common.config :as common-config] [missionary.core :as m] [promesa.core :as p])) @@ -173,13 +174,15 @@ "Xenova/jina-embeddings-v2-base-zh" {:tf-config {:dtype "fp32"} :hnsw-config {:dims 768}}}) +(def ^:private *load-model-progress (atom nil)) + (defn js (-> (:tf-config config) (assoc "device" "webgpu") - (assoc "progress_callback" #(log/info :progress %)))))] + (assoc "progress_callback" #(reset! *load-model-progress %)))))] (reset! infer-worker.state/*extractor extractor) (reset! infer-worker.state/*model-name+config [model-name config]) true))) @@ -192,6 +195,13 @@ (.setDebugLogs (.-EmscriptenFileSystemManager ^js @infer-worker.state/*hnswlib) true) (log/info :loaded :hnswlib)))) +(when-not common-config/PUBLISHING + (c.m/run-background-task + ::push-load-model-progress + (m/reduce + (fn [_ v] (worker-util/post-message :vector-search/load-model-progress v)) + (c.m/throttle 500 (m/watch *load-model-progress))))) + (comment (def repo "repo-1") (def hnsw (ensure-hnsw-index! repo)) diff --git a/src/main/frontend/persist_db/browser.cljs b/src/main/frontend/persist_db/browser.cljs index 07184d1638..0fd5502a5f 100644 --- a/src/main/frontend/persist_db/browser.cljs +++ b/src/main/frontend/persist_db/browser.cljs @@ -164,6 +164,7 @@ worker (js/Worker. (str worker-url "?electron=" (util/electron?) "&publishing=" config/publishing?)) wrapped-worker (Comlink/wrap worker) t1 (util/time-ms)] + (worker-handler/handle-message! worker wrapped-worker) (reset! state/*infer-worker wrapped-worker) (p/do! (.init wrapped-worker) diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index e1a88a6ee6..80b1526db0 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -332,7 +332,8 @@ :db/async-queries (atom {}) :db/latest-transacted-entity-uuids (atom {}) - :vector-search/state (atom {})}))) + :vector-search/state (atom {}) + :vector-search/load-model-progress (atom nil)}))) ;; Block ast state ;; =============== diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index d6a798a147..1c805b697e 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -955,7 +955,11 @@ (vec-search-cancel-indexing [this repo] - (embedding/cancel-indexing repo))) + (embedding/cancel-indexing repo)) + + (vec-search-update-index-info + [this repo] + (js/Promise. (embedding/task--update-index-info! repo)))) (defn- rename-page! [repo conn page-uuid new-name] diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index ed05da6e99..0133eda405 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -111,13 +111,25 @@ [:db/add e :logseq.property.embedding/hnsw-label-updated-at updated-at]])) e+updated-at-coll added-labels))) -(defn- task--update-index-info! - [repo ^js infer-worker indexing?*] +(defn- task--update-index-info!* + ([repo ^js infer-worker] + (m/sp + (reset-*vector-search-state! repo :index-info + (merge (:index-info @*vector-search-state) + (js->clj (c.m/clj (c.m/clj (c.m/ Date: Fri, 21 Mar 2025 15:37:34 +0800 Subject: [PATCH 29/93] fix(vec-search): new-hnsw-index when force-reset-index --- src/main/frontend/inference_worker/text_embedding.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs index 071c531739..172efdf4cd 100644 --- a/src/main/frontend/inference_worker/text_embedding.cljs +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -136,7 +136,7 @@ Return synced? (bool)" [repo] (m/sp - (when-let [hnsw (get-hnsw-index repo)] + (when-let [hnsw (new-hnsw-index! repo)] (when-not (zero? (.getCurrentCount hnsw)) (init-index! hnsw) (m/? (task--write-index!* repo hnsw)))))) From e1147c3264c67ea8691c311deb1f2c7daa70d65a Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 15 Jul 2025 15:59:01 +0800 Subject: [PATCH 30/93] fix: c.m/run-task args --- .../components/vector_search/sidebar.cljs | 21 ++++++++++++------- .../inference_worker/inference_worker.cljs | 7 +------ src/main/frontend/inference_worker/state.cljs | 2 -- src/main/frontend/persist_db/browser.cljs | 8 +++---- src/main/frontend/worker/db_worker.cljs | 4 ++++ src/main/frontend/worker/embedding.cljs | 12 ++++++----- 6 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/main/frontend/components/vector_search/sidebar.cljs b/src/main/frontend/components/vector_search/sidebar.cljs index 8414d2dbf8..ae368f26a6 100644 --- a/src/main/frontend/components/vector_search/sidebar.cljs +++ b/src/main/frontend/components/vector_search/sidebar.cljs @@ -21,42 +21,46 @@ (hooks/use-effect! (fn [] (c.m/run-task + ::update-vec-search-state (m/reduce - (fn [_ v] (set-vec-search-state v)) + (fn [_ v] + (set-vec-search-state v)) (m/ap (m/?> vector-search-flows/infer-worker-ready-flow) (c.m/ vector-search-flows/vector-search-state-flow))) - ::update-vec-search-state :succ (constantly nil))) + :succ (constantly nil))) []) (hooks/use-effect! (fn [] (c.m/run-task + ::update-load-model-progress (m/reduce (fn [_ v] (set-load-model-progress v)) vector-search-flows/load-model-progress-flow) - ::update-load-model-progress :succ (constantly nil))) + :succ (constantly nil))) []) (hooks/use-effect! (fn [] (c.m/run-task + ::fetch-model-info (m/reduce (constantly nil) (m/ap (m/?> vector-search-flows/infer-worker-ready-flow) - (let [model-info (state/ (c.m/js (keys infer-worker.text-embedding/available-embedding-models))) - (set-db-worker-proxy - [_this proxy] - (reset! infer-worker.state/*db-worker proxy) - (log/info :set-db-worker-proxy :done)) - (text-embedding [_this text-coll] (p/chain @@ -60,7 +55,7 @@ (search [_this repo query-string nums-neighbors] - (infer-worker.text-embedding/ index diff --git a/src/main/frontend/persist_db/browser.cljs b/src/main/frontend/persist_db/browser.cljs index dcbc6d17cb..f0d6c96a41 100644 --- a/src/main/frontend/persist_db/browser.cljs +++ b/src/main/frontend/persist_db/browser.cljs @@ -94,7 +94,7 @@ (str (namespace qkw) "/" (name qkw)) direct-pass? (if direct-pass? - (into-array args) + args (ldb/write-transit-str args)))] (if direct-pass? result @@ -144,10 +144,8 @@ (defn clj (c.m/clj (c.m/> (map vector distances neighbors) (keep (fn [[distance label]] (when-not (js/isNaN distance) label)))) datoms (map (fn [label] From f3e1da67c713b9b122ecaa64cfb11eedbbf3cf75 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 15 Jul 2025 16:52:30 +0800 Subject: [PATCH 31/93] fix: infer worker doesn't work --- package.json | 2 +- src/main/frontend/common/thread_api.cljc | 6 ++++-- src/main/frontend/persist_db/browser.cljs | 12 ++++++++---- src/main/frontend/worker/db_worker.cljs | 15 +++++++++------ 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index ef720e6df2..ce11e165a6 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "cljs:mobile-watch": "clojure -M:cljs watch mobile", "cljs:release-mobile": "clojure -M:cljs release mobile", "cljs:dev-watch": "clojure -M:cljs watch app electron mobile", - "cljs:app-watch": "clojure -M:cljs watch app", + "cljs:app-watch": "clojure -M:cljs watch app workers", "cljs:electron-watch": "clojure -M:cljs watch app electron --config-merge \"{:asset-path \\\"./js\\\"}\"", "cljs:release": "clojure -M:cljs release app publishing electron", "cljs:release-electron": "clojure -M:cljs release app electron --debug && clojure -M:cljs release publishing", diff --git a/src/main/frontend/common/thread_api.cljc b/src/main/frontend/common/thread_api.cljc index 20563d7b48..92caa87dfe 100644 --- a/src/main/frontend/common/thread_api.cljc +++ b/src/main/frontend/common/thread_api.cljc @@ -29,8 +29,10 @@ (let [qkw (keyword qualified-kw-str)] (vswap! *profile update qkw inc) (if-let [f (@*thread-apis qkw)] - (let [result (apply f (cond-> args-transit-str-or-args-array - (not direct-pass?) ldb/read-transit-str)) + (let [result (if (= qkw :thread-api/set-infer-worker-proxy) + (f args-transit-str-or-args-array) + (apply f (cond-> args-transit-str-or-args-array + (not direct-pass?) ldb/read-transit-str))) result-promise (if (fn? result) ;; missionary task is a fn (js/Promise. result) diff --git a/src/main/frontend/persist_db/browser.cljs b/src/main/frontend/persist_db/browser.cljs index f0d6c96a41..485873830c 100644 --- a/src/main/frontend/persist_db/browser.cljs +++ b/src/main/frontend/persist_db/browser.cljs @@ -93,8 +93,12 @@ (p/let [result (.remoteInvoke ^js wrapped-worker* (str (namespace qkw) "/" (name qkw)) direct-pass? - (if direct-pass? - args + (cond + (= qkw :thread-api/set-infer-worker-proxy) + (first args) + direct-pass? + (into-array args) + :else (ldb/write-transit-str args)))] (if direct-pass? result @@ -144,8 +148,8 @@ (defn Date: Tue, 15 Jul 2025 17:49:01 +0800 Subject: [PATCH 32/93] Add qwen3 embedding --- src/main/frontend/inference_worker/text_embedding.cljs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs index 172efdf4cd..ab33804646 100644 --- a/src/main/frontend/inference_worker/text_embedding.cljs +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -97,12 +97,12 @@ (when (model-loaded?) (let [hnsw (or (get-hnsw-index repo) (new-hnsw-index! repo)) {:keys [data _type dims _size]} (worker-util/profile : Date: Wed, 16 Jul 2025 04:02:22 +0800 Subject: [PATCH 33/93] fix: vector search --- .../db/src/logseq/db/common/initial_data.cljs | 1 + package.json | 2 +- .../components/vector_search/sidebar.cljs | 18 ++++----- .../vector_search_background_tasks.cljs | 11 +++--- .../inference_worker/inference_worker.cljs | 4 +- .../inference_worker/text_embedding.cljs | 37 +++++++++++-------- src/main/frontend/persist_db/browser.cljs | 5 ++- yarn.lock | 18 ++++----- 8 files changed, 53 insertions(+), 43 deletions(-) diff --git a/deps/db/src/logseq/db/common/initial_data.cljs b/deps/db/src/logseq/db/common/initial_data.cljs index a0a8a3b546..d938c524c2 100644 --- a/deps/db/src/logseq/db/common/initial_data.cljs +++ b/deps/db/src/logseq/db/common/initial_data.cljs @@ -348,6 +348,7 @@ :logseq.kv/graph-uuid :logseq.kv/latest-code-lang :logseq.kv/graph-backup-folder + :logseq.kv/graph-text-embedding-model-name :logseq.property/empty-placeholder]) favorites (when db-graph? (get-favorites db)) views (when db-graph? (get-views-data db)) diff --git a/package.json b/package.json index ce11e165a6..b3d4b7536e 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "@excalidraw/excalidraw": "0.16.1", "@glidejs/glide": "^3.6.0", "@highlightjs/cdn-assets": "10.4.1", - "@huggingface/transformers": "^3.4.0", + "@huggingface/transformers": "^3.6.3", "@ionic/core": "^8.5.4", "@ionic/react": "^8.5.4", "@isomorphic-git/lightning-fs": "^4.6.0", diff --git a/src/main/frontend/components/vector_search/sidebar.cljs b/src/main/frontend/components/vector_search/sidebar.cljs index ae368f26a6..7b0903ce36 100644 --- a/src/main/frontend/components/vector_search/sidebar.cljs +++ b/src/main/frontend/components/vector_search/sidebar.cljs @@ -1,10 +1,10 @@ (ns frontend.components.vector-search.sidebar - (:require [fipp.edn :as fipp] + (:require [clojure.string :as string] + [fipp.edn :as fipp] [frontend.common.missionary :as c.m] [frontend.handler.db-based.vector-search-flows :as vector-search-flows] [frontend.state :as state] [frontend.util :as util] - [logseq.db :as ldb] [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [missionary.core :as m] @@ -54,13 +54,13 @@ []) (hooks/use-effect! (fn [] - (c.m/run-task - :update-search-result - (m/sp - (-> (c.m/ (c.m/ flows/current-repo-flow) - (c.m/js (-> (:tf-config config) - (assoc "device" "webgpu") - (assoc "progress_callback" #(reset! *load-model-progress %)))))] - (reset! infer-worker.state/*extractor extractor) - (reset! infer-worker.state/*model-name+config [model-name config]) - true))) + (if (= model-name (first @infer-worker.state/*model-name+config)) + true + (when-let [config (get available-embedding-models model-name)] + (p/let [extractor (pipeline "feature-extraction" model-name + (clj->js + (-> (:tf-config config) + (assoc "device" "webgpu") + (assoc "progress_callback" #(reset! *load-model-progress %)))))] + (reset! infer-worker.state/*extractor extractor) + (reset! infer-worker.state/*model-name+config [model-name config]) + true)))) (defn Date: Wed, 16 Jul 2025 14:40:18 +0800 Subject: [PATCH 34/93] perf improvement --- src/main/frontend/mixins.cljs | 3 ++- src/main/frontend/worker/embedding.cljs | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/frontend/mixins.cljs b/src/main/frontend/mixins.cljs index 25f502d771..a46b3ab1f1 100644 --- a/src/main/frontend/mixins.cljs +++ b/src/main/frontend/mixins.cljs @@ -9,7 +9,8 @@ (defn detach "Detach all event listeners." [state] - (some-> state ::event-handler .removeAll)) + (when-let [^EventHandler handler (some-> state ::event-handler)] + (.removeAll handler))) (defn listen "Register an event `handler` for events of `type` on `target`." diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 6a0dca8cba..07cbe3cfd4 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -51,20 +51,20 @@ (defn- stale-block-filter-preds "When `reset?`, ignore :logseq.property.embedding/hnsw-label-updated-at in block" [reset?] - (let [preds (cond-> [(fn [b] - (let [db-ident (:db/ident b) - title (:block/title b)] - (and (or (nil? db-ident) - (not (string/starts-with? (namespace db-ident) "logseq."))) - (not (string/blank? title)) - (not (ldb/hidden? title)) - (nil? (:logseq.property/view-for b)) - (not (keyword-identical? - :logseq.property/description - (:db/ident (:logseq.property/created-from-property b)))))))] + (let [preds (cond->> (list (fn [b] + (let [db-ident (:db/ident b) + title (:block/title b)] + (and (or (nil? db-ident) + (not (string/starts-with? (namespace db-ident) "logseq."))) + (not (string/blank? title)) + (not (ldb/hidden? title)) + (nil? (:logseq.property/view-for b)) + (not (keyword-identical? + :logseq.property/description + (:db/ident (:logseq.property/created-from-property b)))))))) (not reset?) - (conj (fn [b] + (cons (fn [b] (let [block-updated-at (:block/updated-at b) hnsw-label-updated-at (:logseq.property.embedding/hnsw-label-updated-at b)] (or (nil? hnsw-label-updated-at) From 00405d98d39e19193f6e6439788f8279a141d67e Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 16 Jul 2025 15:59:22 +0800 Subject: [PATCH 35/93] add local embedding model settings --- shadow-cljs.edn | 6 +- src/main/frontend/components/settings.cljs | 76 +++++++++++++++++++++- src/resources/dicts/en.edn | 2 + 3 files changed, 81 insertions(+), 3 deletions(-) diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 95dec915f4..fb51fdd13f 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -39,7 +39,7 @@ :output-dir "./static/js" :asset-path "/static/js" :release {:asset-path "https://asset.logseq.com/static/js"} - :compiler-options {:infer-externs :auto + :compiler-options {:infer-externs false :output-feature-set :es-next-in :source-map true :externs ["datascript/externs.js" @@ -66,7 +66,9 @@ :after-load frontend.core/start ;; after live-reloading finishes call this function :watch-path "/static" :preloads [devtools.preload - shadow.remote.runtime.cljs.browser]}} + shadow.remote.runtime.cljs.browser] + ;; :ignore-warnings true + }} :workers {:target :browser :module-loader true diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index 3b438cd148..f330c94f95 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -1,7 +1,9 @@ (ns frontend.components.settings (:require [clojure.string :as string] [electron.ipc :as ipc] + [fipp.edn :as fipp] [frontend.colors :as colors] + [frontend.common.missionary :as c.m] [frontend.components.assets :as assets] [frontend.components.file-sync :as fs] [frontend.components.shortcut :as shortcut] @@ -13,6 +15,7 @@ [frontend.dicts :as dicts] [frontend.handler.config :as config-handler] [frontend.handler.db-based.rtc :as rtc-handler] + [frontend.handler.db-based.vector-search-flows :as vector-search-flows] [frontend.handler.file-sync :as file-sync-handler] [frontend.handler.global-config :as global-config-handler] [frontend.handler.notification :as notification] @@ -35,6 +38,7 @@ [logseq.db :as ldb] [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] + [missionary.core :as m] [promesa.core :as p] [reitit.frontend.easy :as rfe] [rum.core :as rum])) @@ -1189,6 +1193,70 @@ (rtc-handler/ vector-search-flows/infer-worker-ready-flow) + (let [model-info (c.m/ Date: Wed, 16 Jul 2025 18:59:38 +0800 Subject: [PATCH 36/93] enhance(ux): show embedding model download progress --- src/main/frontend/components/settings.cljs | 50 +++++++++++++--------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index f330c94f95..a2ac063551 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -1,7 +1,7 @@ (ns frontend.components.settings (:require [clojure.string :as string] + [clojure.walk :as walk] [electron.ipc :as ipc] - [fipp.edn :as fipp] [frontend.colors :as colors] [frontend.common.missionary :as c.m] [frontend.components.assets :as assets] @@ -1197,9 +1197,9 @@ [] (let [[model-info set-model-info] (hooks/use-state nil) [load-model-progress set-load-model-progress] (hooks/use-state nil) + {:keys [status]} load-model-progress repo (state/get-current-repo) - current-model (:graph-text-embedding-model-name model-info) - model-ready? (= "ready" (get load-model-progress "status"))] + current-model (:graph-text-embedding-model-name model-info)] (hooks/use-effect! (fn [] (c.m/run-task @@ -1217,7 +1217,7 @@ (c.m/run-task ::update-load-model-progress (m/reduce - (fn [_ v] (set-load-model-progress v)) + (fn [_ v] (set-load-model-progress (walk/keywordize-keys v))) vector-search-flows/load-model-progress-flow) :succ (constantly nil))) []) @@ -1230,15 +1230,17 @@ [:div.rounded-md.sm:max-w-tss.sm:col-span-2 [:div.flex.flex-col.gap-2 (shui/select - {:on-value-change (fn [model-name] - (c.m/run-task - ::load-model - (m/sp - (c.m/ + {:on-value-change (fn [model-name] + (c.m/run-task + ::load-model + (m/sp + (c.m/ Date: Sat, 19 Jul 2025 14:36:11 +0800 Subject: [PATCH 37/93] enhance: index embedding for updated blocks every 30s --- .../vector_search_background_tasks.cljs | 19 +++++++++++++------ .../inference_worker/text_embedding.cljs | 1 - src/main/frontend/worker/db_worker.cljs | 4 ++++ src/main/frontend/worker/embedding.cljs | 8 ++++++++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs b/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs index b30032fd26..9fd89b2f2d 100644 --- a/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs +++ b/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs @@ -3,9 +3,9 @@ (:require [frontend.common.missionary :as c.m] [frontend.config :as config] [frontend.flows :as flows] + [frontend.handler.db-based.vector-search-flows :as vector-search-flows] [frontend.state :as state] - [missionary.core :as m] - [promesa.core :as p])) + [missionary.core :as m])) (defn- run-background-task-when-not-publishing [key' task] @@ -15,7 +15,14 @@ (run-background-task-when-not-publishing ::init-load-model-when-switch-graph (m/reduce - (fn [_ repo] - (when repo - (state/ vector-search-flows/infer-worker-ready-flow) + (when-let [repo (m/?< flows/current-repo-flow)] + (c.m/ Date: Sat, 19 Jul 2025 15:15:24 +0800 Subject: [PATCH 38/93] enhance: don't update index info if there's no block update --- src/main/frontend/worker/embedding.cljs | 27 +++++++++++++------------ 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 3934b397fe..53c07cd968 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -138,20 +138,21 @@ (m/sp (when-let [^js infer-worker @worker-state/*infer-worker] (when-let [conn (worker-state/get-datascript-conn repo)] - (m/? (task--update-index-info!* repo infer-worker true)) (let [stale-blocks (stale-block-lazy-seq @conn false)] - (doseq [stale-block-chunk (sequence (partition-by-text-size 2000) stale-blocks)] - (let [e+updated-at-coll (map (juxt :db/id :block/updated-at) stale-block-chunk) - delete-labels (into-array (keep :logseq.property.embedding/hnsw-label stale-block-chunk)) - added-labels (c.m/ Date: Sat, 19 Jul 2025 15:17:11 +0800 Subject: [PATCH 39/93] fix: inference worker js path --- src/main/frontend/persist_db/browser.cljs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/frontend/persist_db/browser.cljs b/src/main/frontend/persist_db/browser.cljs index 800a36c65c..00c503cce8 100644 --- a/src/main/frontend/persist_db/browser.cljs +++ b/src/main/frontend/persist_db/browser.cljs @@ -135,9 +135,7 @@ (defn start-inference-worker! [] (when-not util/node-test? - (let [worker-url (if (util/electron?) - "js/inference-worker.js" - "static/js/inference-worker.js") + (let [worker-url "js/inference-worker.js" worker (js/Worker. (str worker-url "?electron=" (util/electron?) "&publishing=" config/publishing?)) wrapped-worker (Comlink/wrap worker) t1 (util/time-ms)] @@ -145,7 +143,6 @@ (reset! state/*infer-worker wrapped-worker) (p/do! (let [embedding-model-name (ldb/get-key-value (db/get-db) :logseq.kv/graph-text-embedding-model-name)] - (prn :debug :embedding-model-name embedding-model-name) (.init wrapped-worker embedding-model-name)) (log/info "init infer-worker spent:" (str (- (util/time-ms) t1) "ms")))))) From f296c1e67d53364d15af620cd1fbb3a503a868c0 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Sat, 19 Jul 2025 15:32:16 +0800 Subject: [PATCH 40/93] fix: auto embedding stops when switching graph --- .../db_based/vector_search_background_tasks.cljs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs b/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs index 9fd89b2f2d..07b99d9473 100644 --- a/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs +++ b/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs @@ -12,6 +12,7 @@ (when-not config/publishing? (c.m/run-background-task key' task))) +(defonce *indexing-interval (atom nil)) (run-background-task-when-not-publishing ::init-load-model-when-switch-graph (m/reduce @@ -20,9 +21,10 @@ (m/?> vector-search-flows/infer-worker-ready-flow) (when-let [repo (m/?< flows/current-repo-flow)] (c.m/ Date: Mon, 21 Jul 2025 13:30:45 +0800 Subject: [PATCH 41/93] feat: add semantic search result when searching blocks --- src/main/frontend/worker/db_worker.cljs | 29 +++--- src/main/frontend/worker/embedding.cljs | 12 ++- src/main/frontend/worker/search.cljs | 133 ++++++++++++++---------- 3 files changed, 99 insertions(+), 75 deletions(-) diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index ddb725489a..c7a08fba26 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -453,24 +453,25 @@ (defn- search-blocks [repo q option] - (p/let [search-db (get-search-db repo) - conn (worker-state/get-datascript-conn repo)] + (let [search-db (get-search-db repo) + conn (worker-state/get-datascript-conn repo)] (search/search-blocks repo conn search-db q option))) (def-thread-api :thread-api/block-refs-check [repo id {:keys [unlinked?]}] - (when-let [conn (worker-state/get-datascript-conn repo)] - (let [db @conn - block (d/entity db id)] - (if unlinked? - (p/let [title (string/lower-case (:block/title block)) - result (search-blocks repo title {:limit 100})] - (boolean (some (fn [b] - (let [block (d/entity db (:db/id b))] - (and (not= id (:db/id block)) - (not ((set (map :db/id (:block/refs block))) id)) - (string/includes? (string/lower-case (:block/title block)) title)))) result))) - (some? (first (common-initial-data/get-block-refs db (:db/id block)))))))) + (m/sp + (when-let [conn (worker-state/get-datascript-conn repo)] + (let [db @conn + block (d/entity db id)] + (if unlinked? + (let [title (string/lower-case (:block/title block)) + result (m/? (search-blocks repo title {:limit 100}))] + (boolean (some (fn [b] + (let [block (d/entity db (:db/id b))] + (and (not= id (:db/id block)) + (not ((set (map :db/id (:block/refs block))) id)) + (string/includes? (string/lower-case (:block/title block)) title)))) result))) + (some? (first (common-initial-data/get-block-refs db (:db/id block))))))))) (def-thread-api :thread-api/get-block-parents [repo id depth] diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 53c07cd968..22a4f2339d 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -245,7 +245,7 @@ (when-not (indexing? repo) (when-let [^js infer-worker @worker-state/*infer-worker] (when-let [conn (worker-state/get-datascript-conn repo)] - (let [{:keys [distances neighbors] :as r} + (let [{:keys [distances neighbors]} (worker-util/profile (str "search: '" query-string "'") (js->clj (c.m/> (map vector distances neighbors) @@ -256,17 +256,19 @@ (sort-by :tx >))) labels) result-es (keep (comp :e first) datoms) es-with-outdated-hnsw-label (map :e (mapcat next datoms)) - blocks (map #(select-keys (assoc (d/entity @conn %) :block.temp/search? true) - [:db/id :block/title :logseq.property.embedding/hnsw-label]) result-es)] + blocks (map #(d/entity @conn %) result-es)] (remove-outdated-hnsw-label! conn es-with-outdated-hnsw-label) - (prn :query-result r) (pp/print-table ["id" "hnsw-label" "title"] (map #(-> % (update-keys name) (update-vals (fn [v] (if (and (string? v) (> (count v) 60)) (str (subs v 0 60) "[TRUNCATED]") v)))) - blocks)) + (map #(select-keys % + [:db/id + :block/title + :logseq.property.embedding/hnsw-label]) + blocks))) blocks)))))) (def ^:private vector-search-state-flow diff --git a/src/main/frontend/worker/search.cljs b/src/main/frontend/worker/search.cljs index 89b21b8561..c7f83cb52b 100644 --- a/src/main/frontend/worker/search.cljs +++ b/src/main/frontend/worker/search.cljs @@ -6,6 +6,7 @@ [clojure.string :as string] [datascript.core :as d] [frontend.common.search-fuzzy :as fuzzy] + [frontend.worker.embedding :as embedding] [goog.object :as gobj] [logseq.common.config :as common-config] [logseq.common.util :as common-util] @@ -13,7 +14,8 @@ [logseq.db :as ldb] [logseq.db.frontend.content :as db-content] [logseq.db.sqlite.util :as sqlite-util] - [logseq.graph-parser.text :as text])) + [logseq.graph-parser.text :as text] + [missionary.core :as m])) (def fuse (aget Fuse "default")) @@ -292,66 +294,85 @@ DROP TRIGGER IF EXISTS blocks_au; [repo conn search-db q {:keys [limit page enable-snippet? built-in? dev? page-only? library-page-search?] :as option :or {enable-snippet? true}}] - (when-not (string/blank? q) - (let [match-input (get-match-input q) - page-count (count (d/datoms @conn :avet :block/name)) - large-graph? (> page-count 2500) - non-match-input (when (<= (count q) 2) - (str "%" (string/replace q #"\s+" "%") "%")) - limit (or limit 100) + (m/sp + (when-not (string/blank? q) + (let [match-input (get-match-input q) + page-count (count (d/datoms @conn :avet :block/name)) + large-graph? (> page-count 2500) + non-match-input (when (<= (count q) 2) + (str "%" (string/replace q #"\s+" "%") "%")) + limit (or limit 100) ;; https://www.sqlite.org/fts5.html#the_highlight_function ;; the 2nd column in blocks_fts (content) ;; pfts_2lqh is a key for retrieval ;; highlight and snippet only works for some matching with high rank - snippet-aux "snippet(blocks_fts, 1, '$pfts_2lqh>$', '$$', '$> (concat fuzzy-result matched-result non-match-result) - (common-util/distinct-by :id) - (keep (fn [result] - (let [{:keys [id page title snippet]} result - block-id (uuid id)] - (when-let [block (d/entity @conn [:block/uuid block-id])] - (when-not (and library-page-search? - (or (:block/parent block) - (not (ldb/internal-page? block)))) ; remove pages that already have parents - (when (if dev? - true - (if built-in? - (or (not (ldb/built-in? block)) - (not (ldb/private-built-in-page? block)) - (ldb/class? block)) - (or (not (ldb/built-in? block)) - (ldb/class? block)))) - {:db/id (:db/id block) - :block/uuid block-id - :block/title (if (ldb/page? block) - (ldb/get-title-with-parents block) - (or snippet title)) - :block/page (if (common-util/uuid-string? page) - (uuid page) - nil) - :block/tags (seq (map :db/id (:block/tags block))) - :page? (ldb/page? block) - :alias (some-> (first (:block/_alias block)) - (select-keys [:block/uuid :block/title]))}))))))) - page-or-object-result (filter (fn [b] (or (:page? b) (:block/tags result))) result)] - (->> - (concat page-or-object-result - (remove (fn [b] (or (:page? b) (:block/tags result))) result)) - (common-util/distinct-by :block/uuid))))) + fuzzy-result (when-not (or page large-graph?) (fuzzy-search repo @conn q option)) + semantic-search-result* (m/? (embedding/task--search repo q 20)) + semantic-search-result (->> semantic-search-result* + (map (fn [b] + (let [page-id (when-let [id (:block/uuid (:block/page b))] (str id))] + (cond-> + {:id (str (:block/uuid b)) + :title (:block/title b) + :semantic-search? true} + page-id + (assoc :page page-id)))))) + result (->> (concat fuzzy-result + matched-result + non-match-result + semantic-search-result) + (common-util/distinct-by :id) + (keep (fn [result] + (let [{:keys [id page title snippet semantic-search?]} result + block-id (uuid id)] + (when-let [block (d/entity @conn [:block/uuid block-id])] + (when-not (and library-page-search? + (or (:block/parent block) + (not (ldb/internal-page? block)))) ; remove pages that already have parents + (when (if dev? + true + (if built-in? + (or (not (ldb/built-in? block)) + (not (ldb/private-built-in-page? block)) + (ldb/class? block)) + (or (not (ldb/built-in? block)) + (ldb/class? block)))) + {:db/id (:db/id block) + :block/uuid (:block/uuid block) + :block/title (if (ldb/page? block) + (ldb/get-title-with-parents block) + (or snippet title)) + :block/page (or + (:block/uuid (:block/page block)) + (when page + (if (common-util/uuid-string? page) + (uuid page) + nil))) + :block/tags (seq (map :db/id (:block/tags block))) + :page? (ldb/page? block) + :alias (some-> (first (:block/_alias block)) + (select-keys [:block/uuid :block/title])) + :semantic-search? semantic-search?}))))))) + filter-pred (fn [b] (and (or (:page? b) (:block/tags result)) (not (:semantic-search? b)))) + page-or-object-result (filter filter-pred result)] + (->> + (concat page-or-object-result + (remove filter-pred result)) + (common-util/distinct-by :block/uuid)))))) (defn truncate-table! [db] From 910c8f448fae39530a50a673b419907f93e06ed0 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 21 Jul 2025 16:13:17 +0800 Subject: [PATCH 42/93] Use missionary clock for auto embedding --- src/main/frontend/common/missionary.cljs | 3 ++- .../vector_search_background_tasks.cljs | 20 +++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/frontend/common/missionary.cljs b/src/main/frontend/common/missionary.cljs index ec1adb26c9..c4623253ad 100644 --- a/src/main/frontend/common/missionary.cljs +++ b/src/main/frontend/common/missionary.cljs @@ -116,7 +116,8 @@ (defn- fail-case-default-handler [e] - (when-not (instance? Cancelled e) + (if (instance? Cancelled e) + (log/warn :run-task*-cancelled e) (log/error :run-task*-failed e))) (defn run-task diff --git a/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs b/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs index 07b99d9473..684d625ba1 100644 --- a/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs +++ b/src/main/frontend/handler/db_based/vector_search_background_tasks.cljs @@ -5,26 +5,24 @@ [frontend.flows :as flows] [frontend.handler.db-based.vector-search-flows :as vector-search-flows] [frontend.state :as state] - [missionary.core :as m])) + [missionary.core :as m]) + (:import [missionary Cancelled])) (defn- run-background-task-when-not-publishing [key' task] (when-not config/publishing? (c.m/run-background-task key' task))) -(defonce *indexing-interval (atom nil)) (run-background-task-when-not-publishing ::init-load-model-when-switch-graph (m/reduce (constantly nil) (m/ap - (m/?> vector-search-flows/infer-worker-ready-flow) + (m/?< vector-search-flows/infer-worker-ready-flow) (when-let [repo (m/?< flows/current-repo-flow)] - (c.m/ Date: Mon, 21 Jul 2025 16:22:17 +0800 Subject: [PATCH 43/93] enhance: start embedding after selected a model --- src/main/frontend/components/settings.cljs | 4 +++- src/main/frontend/components/settings.css | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index a2ac063551..feeb764b0d 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -1237,7 +1237,9 @@ (m/sp (c.m/ Date: Mon, 21 Jul 2025 16:37:35 +0800 Subject: [PATCH 44/93] fix: cancel index when switching to another model --- src/main/frontend/components/settings.cljs | 4 +++- src/main/frontend/worker/embedding.cljs | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index feeb764b0d..e2065f5405 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -1239,7 +1239,9 @@ (state/canceler repo])] (canceler) (swap! *vector-search-state assoc-in [:repo->canceler repo] nil) - (swap! *vector-search-state assoc-in [:repo->index-info repo :indexing?] false))) + (swap! *vector-search-state assoc-in [:repo->index-info repo :indexing?] false) + nil)) (defn- indexing? [repo] From 3f20f447909dce13b14c6327aae51081c550e479 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 21 Jul 2025 17:06:17 +0800 Subject: [PATCH 45/93] enhance: add embedding indicator --- src/main/frontend/components/header.cljs | 37 +++++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/src/main/frontend/components/header.cljs b/src/main/frontend/components/header.cljs index 4533760faa..8cce3304ce 100644 --- a/src/main/frontend/components/header.cljs +++ b/src/main/frontend/components/header.cljs @@ -20,6 +20,7 @@ [frontend.db :as db] [frontend.handler :as handler] [frontend.handler.db-based.rtc-flows :as rtc-flows] + [frontend.handler.db-based.vector-search-flows :as vector-search-flows] [frontend.handler.page :as page-handler] [frontend.handler.plugin :as plugin-handler] [frontend.handler.route :as route-handler] @@ -342,6 +343,30 @@ (:block/uuid page) {:header? true})]))]) +(rum/defc semantic-search-progressing + [repo] + (let [[vec-search-state set-vec-search-state] (hooks/use-state nil) + indexing? (get-in vec-search-state [:repo->index-info repo :indexing?])] + (hooks/use-effect! + (fn [] + (c.m/run-task + ::update-vec-search-state + (m/reduce + (fn [_ v] + (set-vec-search-state v)) + (m/ap + (m/?> vector-search-flows/infer-worker-ready-flow) + (c.m/ vector-search-flows/vector-search-state-flow))) + :succ (constantly nil))) + []) + (when indexing? + (shui/button + {:class "opacity-50" + :variant :ghost + :size :sm} + "Embeddding...")))) + (rum/defc ^:large-vars/cleanup-todo header-aux < rum/reactive [{:keys [current-repo default-home new-block-mode]}] (let [electron-mac? (and util/mac? (util/electron?)) @@ -349,7 +374,8 @@ (state/set-left-sidebar-open! (not (:ui/left-sidebar-open? @state/state))))}) custom-home-page? (and (state/custom-home-page?) - (= (state/sub-default-home-page) (state/get-current-page)))] + (= (state/sub-default-home-page) (state/get-current-page))) + db-based? (config/db-based-graph? current-repo)] [:div.cp__header.drag-region#head {:class (util/classnames [{:electron-mac electron-mac? :native-ios (mobile-util/native-ios?) @@ -387,11 +413,11 @@ [:div.r.flex.drag-region.justify-between.items-center.gap-2.overflow-x-hidden.w-full [:div.flex.flex-1 (block-breadcrumb (state/get-current-page))] - [:div.flex + [:div.flex.items-center (when (and current-repo (ldb/get-graph-rtc-uuid (db/get-db)) (user-handler/logged-in?) - (config/db-based-graph? current-repo) + db-based? (user-handler/rtc-group?)) [:<> (recent-slider) @@ -404,9 +430,12 @@ (when (user-handler/logged-in?) (rtc-indicator/uploading-detail)) + (when db-based? + (semantic-search-progressing current-repo)) + (when (and current-repo (not (config/demo-graph? current-repo)) - (not (config/db-based-graph? current-repo)) + (not db-based?) (user-handler/alpha-or-beta-user?)) (fs-sync/indicator)) From 690b92c975e0e234429e45b287f43f73dc2c2f70 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 21 Jul 2025 17:15:06 +0800 Subject: [PATCH 46/93] enhance: adjust batch embedding size to cut down resource usage --- src/main/frontend/components/header.cljs | 2 +- src/main/frontend/worker/embedding.cljs | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/frontend/components/header.cljs b/src/main/frontend/components/header.cljs index 8cce3304ce..5690c513bd 100644 --- a/src/main/frontend/components/header.cljs +++ b/src/main/frontend/components/header.cljs @@ -365,7 +365,7 @@ {:class "opacity-50" :variant :ghost :size :sm} - "Embeddding...")))) + "Embedding...")))) (rum/defc ^:large-vars/cleanup-todo header-aux < rum/reactive [{:keys [current-repo default-home new-block-mode]}] diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index a759393dee..fb1a025dce 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -132,6 +132,18 @@ (when-let [^js infer-worker @worker-state/*infer-worker] (m/? (task--update-index-info!* repo infer-worker))))) +(defn- get-partition-size + [repo] + (let [conn (worker-state/get-datascript-conn repo) + embedding-model-name (ldb/get-key-value @conn :logseq.kv/graph-text-embedding-model-name)] + (case embedding-model-name + "Xenova/all-MiniLM-L6-v2" + 2000 + "Xenova/jina-embeddings-v2-base-zh" + 500 + "onnx-community/Qwen3-Embedding-0.6B-ONNX" + 100))) + (defn- task--embedding-stale-blocks! "embedding outdated block-data outdate rule: block/updated-at > :logseq.property.embedding/hnsw-label-updated-at" @@ -142,7 +154,7 @@ (let [stale-blocks (stale-block-lazy-seq @conn false)] (when (seq stale-blocks) (m/? (task--update-index-info!* repo infer-worker true)) - (doseq [stale-block-chunk (sequence (partition-by-text-size 2000) stale-blocks)] + (doseq [stale-block-chunk (sequence (partition-by-text-size (get-partition-size repo)) stale-blocks)] (let [e+updated-at-coll (map (juxt :db/id :block/updated-at) stale-block-chunk) delete-labels (into-array (keep :logseq.property.embedding/hnsw-label stale-block-chunk)) added-labels (c.m/ Date: Mon, 21 Jul 2025 17:21:20 +0800 Subject: [PATCH 47/93] perf: skip refresh ui for embedding data transactions --- src/main/frontend/modules/outliner/pipeline.cljs | 3 ++- src/main/frontend/worker/embedding.cljs | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/frontend/modules/outliner/pipeline.cljs b/src/main/frontend/modules/outliner/pipeline.cljs index 23fca2b2fb..75ad541080 100644 --- a/src/main/frontend/modules/outliner/pipeline.cljs +++ b/src/main/frontend/modules/outliner/pipeline.cljs @@ -86,7 +86,8 @@ (state/set-state! :editor/edit-block-fn nil) (when delete-blocks? (util/mobile-keep-keyboard-open)) - (react/refresh! repo affected-keys) + (when-not (:skip-refresh? tx-meta) + (react/refresh! repo affected-keys)) (when edit-block-f (util/schedule edit-block-f))) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index fb1a025dce..ace9bb31fa 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -162,7 +162,7 @@ infer-worker repo (into-array (map :block.temp/text-to-embedding stale-block-chunk)) delete-labels false)) tx-data (labels-update-tx-data @conn e+updated-at-coll added-labels)] - (d/transact! conn tx-data) + (d/transact! conn tx-data {:skip-refresh? true}) (m/? (task--update-index-info!* repo infer-worker true)))) (c.m/ Date: Mon, 21 Jul 2025 17:44:45 +0800 Subject: [PATCH 48/93] enhance: set embedding distance to 0.3 to keep search result related --- src/main/frontend/inference_worker/text_embedding.cljs | 3 +-- src/main/frontend/worker/embedding.cljs | 4 +++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs index b78324f2ac..ccd33e587f 100644 --- a/src/main/frontend/inference_worker/text_embedding.cljs +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -36,8 +36,7 @@ (defn- init-index! [^js hnsw] (.initIndex hnsw init-max-elems 16 200 100) - (.setEfSearch hnsw 64 ;;default 32 - )) + (.setEfSearch hnsw 32)) (defn- ^js get-hnsw-index [repo] diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index ace9bb31fa..d0e7b4c85b 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -264,7 +264,9 @@ (worker-util/profile (str "search: '" query-string "'") (js->clj (c.m/> (map vector distances neighbors) - (keep (fn [[distance label]] (when-not (js/isNaN distance) label)))) + (keep (fn [[distance label]] + (when-not (or (js/isNaN distance) (> distance 0.3)) + label)))) datoms (map (fn [label] (->> label (d/datoms @conn :avet :logseq.property.embedding/hnsw-label) From 2c27aee09d1b2c9c3e0aac6e633fa7283b05feaf Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 21 Jul 2025 20:14:14 +0800 Subject: [PATCH 49/93] use db/id for hnsw label Because db/id is unique, auto-increment so that old ids are not re-used. --- deps/db/src/logseq/db/frontend/property.cljs | 7 -- src/main/frontend/components/settings.cljs | 95 ++++++++++--------- .../inference_worker/inference_worker.cljs | 4 +- .../inference_worker/text_embedding.cljs | 17 +++- src/main/frontend/worker/db/migrate.cljs | 2 +- src/main/frontend/worker/embedding.cljs | 82 +++++++--------- 6 files changed, 96 insertions(+), 111 deletions(-) diff --git a/deps/db/src/logseq/db/frontend/property.cljs b/deps/db/src/logseq/db/frontend/property.cljs index 17d1d40da3..08194764ef 100644 --- a/deps/db/src/logseq/db/frontend/property.cljs +++ b/deps/db/src/logseq/db/frontend/property.cljs @@ -560,13 +560,6 @@ :cardinality :many :public? true} :queryable? true} - :logseq.property.embedding/hnsw-label {:title "HNSW label" - :schema {:type :raw-number - :public? false - :hide? true} - :rtc {:rtc/ignore-attr-when-init-upload true - :rtc/ignore-attr-when-init-download true - :rtc/ignore-attr-when-syncing true}} :logseq.property.embedding/hnsw-label-updated-at {:title "HNSW label updated-at" :schema {:type :datetime :public? false diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index e2065f5405..bd819bb470 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -1222,54 +1222,57 @@ :succ (constantly nil))) []) [:div.panel-wrap - [:div.flex.flex-col.gap-2 - [:div.it.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start - [:label.block.text-sm.font-medium.leading-8.opacity-70 - {:for "local-embedding-model"} - "Local embedding model"] - [:div.rounded-md.sm:max-w-tss.sm:col-span-2 - [:div.flex.flex-col.gap-2 - (shui/select - (cond-> - {:on-value-change (fn [model-name] - (c.m/run-task - ::load-model - (m/sp - (c.m/ + {:on-value-change (fn [model-name] + (c.m/run-task + ::load-model + (m/sp + (c.m/js)) (delete-labels diff --git a/src/main/frontend/inference_worker/text_embedding.cljs b/src/main/frontend/inference_worker/text_embedding.cljs index ccd33e587f..5f32ee9375 100644 --- a/src/main/frontend/inference_worker/text_embedding.cljs +++ b/src/main/frontend/inference_worker/text_embedding.cljs @@ -74,7 +74,7 @@ :size (.-size r)})) (defn- add-items - [^js hnsw data-coll replace-deleted?] + [^js hnsw data-coll labels replace-deleted?] (let [max-elems (.getMaxElements hnsw) current-count (.getCurrentCount hnsw) add-count (count data-coll)] @@ -82,7 +82,15 @@ (let [new-size (+ current-count (max (* 2 add-count) current-count))] (log/info :hnsw-resize {:from current-count :to new-size}) (.resizeIndex hnsw new-size))) - (.addItems hnsw data-coll replace-deleted?))) + ;; (.addItems hnsw data-coll labels replace-deleted?) + (dorun + (mapcat + (fn [embedding label] + (assert (and embedding label) {:embedding embedding + :label label}) + (.addPoint hnsw embedding label replace-deleted?)) + data-coll + labels)))) (defn delete-items [repo labels] @@ -91,7 +99,7 @@ (defn task--text-embedding&store! "return labels(js-array)" - [repo text-array delete-labels replace-deleted?] + [repo text-array labels replace-deleted?] (m/sp (when (model-loaded?) (let [hnsw (or (get-hnsw-index repo) (new-hnsw-index! repo)) @@ -99,9 +107,8 @@ (c.m/updates)))] diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index d0e7b4c85b..e9026c157f 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -99,18 +99,16 @@ (vswap! *partition-index inc)))))))) (defn- labels-update-tx-data - [db e+updated-at-coll added-labels] - (assert (= (count e+updated-at-coll) (count added-labels)) [e+updated-at-coll added-labels]) + [db e+updated-at-coll] (let [es (map first e+updated-at-coll) exist-es (set (keep (fn [b] (when (:block/uuid b) (:db/id b))) (d/pull-many db [:block/uuid :db/id] es)))] - (mapcat - (fn [[e updated-at] label] + (keep + (fn [[e updated-at]] (when (contains? exist-es e) - [[:db/add e :logseq.property.embedding/hnsw-label label] - [:db/add e :logseq.property.embedding/hnsw-label-updated-at updated-at]])) - e+updated-at-coll added-labels))) + [:db/add e :logseq.property.embedding/hnsw-label-updated-at updated-at])) + e+updated-at-coll))) (defn- task--update-index-info!* ([repo ^js infer-worker] @@ -156,12 +154,14 @@ (m/? (task--update-index-info!* repo infer-worker true)) (doseq [stale-block-chunk (sequence (partition-by-text-size (get-partition-size repo)) stale-blocks)] (let [e+updated-at-coll (map (juxt :db/id :block/updated-at) stale-block-chunk) - delete-labels (into-array (keep :logseq.property.embedding/hnsw-label stale-block-chunk)) - added-labels (c.m/clj (c.m/> (map vector distances neighbors) (keep (fn [[distance label]] - (when-not (or (js/isNaN distance) (> distance 0.3)) + (when-not (or (js/isNaN distance) (> distance 0.65)) label)))) - datoms (map (fn [label] - (->> label - (d/datoms @conn :avet :logseq.property.embedding/hnsw-label) - (sort-by :tx >))) labels) - result-es (keep (comp :e first) datoms) - es-with-outdated-hnsw-label (map :e (mapcat next datoms)) - blocks (map #(d/entity @conn %) result-es)] - (remove-outdated-hnsw-label! conn es-with-outdated-hnsw-label) - (pp/print-table ["id" "hnsw-label" "title"] (map #(-> % - (update-keys name) - (update-vals (fn [v] - (if (and (string? v) (> (count v) 60)) - (str (subs v 0 60) "[TRUNCATED]") - v)))) - (map #(select-keys % - [:db/id - :block/title - :logseq.property.embedding/hnsw-label]) - blocks))) + blocks (map #(d/entity @conn %) labels)] + (pp/print-table ["id" "title"] (map #(-> % + (update-keys name) + (update-vals (fn [v] + (if (and (string? v) (> (count v) 60)) + (str (subs v 0 60) "[TRUNCATED]") + v)))) + (map #(select-keys % + [:db/id + :block/title]) + blocks))) blocks)))))) (def ^:private vector-search-state-flow From 337b28e5d4553b14992e1f41148b2cf012622295 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 21 Jul 2025 20:53:35 +0800 Subject: [PATCH 50/93] set batch size to 500 --- src/main/frontend/worker/embedding.cljs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index e9026c157f..78bbbddd31 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -140,7 +140,8 @@ "Xenova/jina-embeddings-v2-base-zh" 500 "onnx-community/Qwen3-Embedding-0.6B-ONNX" - 100))) + 100 + 500))) (defn- task--embedding-stale-blocks! "embedding outdated block-data @@ -257,7 +258,7 @@ (keep (fn [[distance label]] (when-not (or (js/isNaN distance) (> distance 0.65)) label)))) - blocks (map #(d/entity @conn %) labels)] + blocks (keep #(d/entity @conn %) labels)] (pp/print-table ["id" "title"] (map #(-> % (update-keys name) (update-vals (fn [v] From 0722688fd8680b35865d57a2563f9aa9b4cc79f2 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 21 Jul 2025 21:47:36 +0800 Subject: [PATCH 51/93] feat: hybrid search --- src/main/frontend/worker/embedding.cljs | 27 +++----- src/main/frontend/worker/search.cljs | 87 ++++++++++++++++++------- 2 files changed, 71 insertions(+), 43 deletions(-) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 78bbbddd31..48223e95f8 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -1,7 +1,6 @@ (ns frontend.worker.embedding "Fns about text-embedding, add/delete/search items in hnsw" - (:require [cljs.pprint :as pp] - [clojure.string :as string] + (:require [clojure.string :as string] [datascript.core :as d] [frontend.common.missionary :as c.m] [frontend.worker-common.util :as worker-util] @@ -253,23 +252,13 @@ (when-let [conn (worker-state/get-datascript-conn repo)] (let [{:keys [distances neighbors]} (worker-util/profile (str "search: '" query-string "'") - (js->clj (c.m/> (map vector distances neighbors) - (keep (fn [[distance label]] - (when-not (or (js/isNaN distance) (> distance 0.65)) - label)))) - blocks (keep #(d/entity @conn %) labels)] - (pp/print-table ["id" "title"] (map #(-> % - (update-keys name) - (update-vals (fn [v] - (if (and (string? v) (> (count v) 60)) - (str (subs v 0 60) "[TRUNCATED]") - v)))) - (map #(select-keys % - [:db/id - :block/title]) - blocks))) - blocks)))))) + (js->clj (c.m/> (map vector distances neighbors) + (keep (fn [[distance label]] + (when-not (or (js/isNaN distance) (> distance 0.5)) + (when-let [block (d/entity @conn label)] + {:block block + :distance distance}))))))))))) (def ^:private vector-search-state-flow (m/eduction diff --git a/src/main/frontend/worker/search.cljs b/src/main/frontend/worker/search.cljs index c7f83cb52b..4952229cd1 100644 --- a/src/main/frontend/worker/search.cljs +++ b/src/main/frontend/worker/search.cljs @@ -23,6 +23,18 @@ ;; maybe https://github.com/nalgeon/sqlean/blob/main/docs/fuzzy.md? (defonce fuzzy-search-indices (atom {})) +;; Configuration for re-ranking +(def config + {:keyword-weight 0.4 + :semantic-weight 0.6}) + +;; Normalize scores to [0, 1] range using min-max normalization +(defn normalize-score [score min-score max-score] + (if (= min-score max-score) + 0.0 + (let [normalized (/ (- score min-score) (- max-score min-score))] + (max 0.0 (min 1.0 normalized))))) + (defn- add-blocks-fts-triggers! "Table bindings of blocks tables and the blocks FTS virtual tables" [db] @@ -173,10 +185,11 @@ DROP TRIGGER IF EXISTS blocks_au; :rowMode "array"})) blocks (bean/->clj result)] (map (fn [block] - (let [[id page title snippet] (if enable-snippet? - (update block 3 get-snippet-result) - block)] + (let [[id page title rank snippet] (if enable-snippet? + (update block 4 get-snippet-result) + block)] {:id id + :keyword-score (when rank (Math/abs rank)) :page page :title title :snippet snippet})) blocks)) @@ -285,6 +298,39 @@ DROP TRIGGER IF EXISTS blocks_au; (filter (fn [{:keys [title]}] (exact-matched? q title))))))))) +;; Combine and re-rank results +(defn combine-results [keyword-results semantic-results] + (let [;; Extract score ranges for normalization + keyword-scores (map :keyword-score keyword-results) + semantic-scores (map :semantic-score semantic-results) + k-min (if (seq keyword-scores) (apply min keyword-scores) 0.0) + k-max (if (seq keyword-scores) (apply max keyword-scores) 1.0) + s-min (if (seq semantic-scores) (apply min semantic-scores) 0.0) + s-max (if (seq semantic-scores) (apply max semantic-scores) 1.0) + ;; Merge results by ID + all-ids (set/union (set (map :id keyword-results)) + (set (map :id semantic-results))) + merged (map (fn [id] + (let [k-result (first (filter #(= (:id %) id) keyword-results)) + s-result (first (filter #(= (:id %) id) semantic-results)) + k-score (or (:keyword-score k-result) 0.0) + s-score (or (:semantic-score s-result) 0.0) + norm-k-score (normalize-score k-score k-min k-max) + norm-s-score (normalize-score s-score s-min s-max) + ;; Weighted combination + combined-score (+ (* (:keyword-weight config) norm-k-score) + (* (:semantic-weight config) norm-s-score))] + (merge k-result + s-result + {:id id + :combined-score combined-score + :keyword-score k-score + :semantic-score s-score}))) + all-ids)] + ;; Sort by combined score + (prn :debug :merged (sort-by :combined-score #(compare %2 %1) merged)) + (sort-by :combined-score #(compare %2 %1) merged))) + (defn search-blocks "Options: * :page - the page to specifically search on @@ -308,8 +354,8 @@ DROP TRIGGER IF EXISTS blocks_au; ;; highlight and snippet only works for some matching with high rank snippet-aux "snippet(blocks_fts, 1, '$pfts_2lqh>$', '$> semantic-search-result* - (map (fn [b] - (let [page-id (when-let [id (:block/uuid (:block/page b))] (str id))] + (map (fn [{:keys [block distance]}] + (let [page-id (when-let [id (:block/uuid (:block/page block))] (str id))] (cond-> - {:id (str (:block/uuid b)) - :title (:block/title b) - :semantic-search? true} + {:id (str (:block/uuid block)) + :title (:block/title block) + :semantic-score (/ 1.0 (+ 1.0 distance))} page-id (assoc :page page-id)))))) - result (->> (concat fuzzy-result - matched-result - non-match-result - semantic-search-result) + combined-result (combine-results (concat fuzzy-result matched-result) semantic-search-result) + result (->> (concat combined-result + non-match-result) (common-util/distinct-by :id) (keep (fn [result] - (let [{:keys [id page title snippet semantic-search?]} result + (let [{:keys [id page title snippet]} result block-id (uuid id)] (when-let [block (d/entity @conn [:block/uuid block-id])] (when-not (and library-page-search? @@ -365,14 +410,8 @@ DROP TRIGGER IF EXISTS blocks_au; :block/tags (seq (map :db/id (:block/tags block))) :page? (ldb/page? block) :alias (some-> (first (:block/_alias block)) - (select-keys [:block/uuid :block/title])) - :semantic-search? semantic-search?}))))))) - filter-pred (fn [b] (and (or (:page? b) (:block/tags result)) (not (:semantic-search? b)))) - page-or-object-result (filter filter-pred result)] - (->> - (concat page-or-object-result - (remove filter-pred result)) - (common-util/distinct-by :block/uuid)))))) + (select-keys [:block/uuid :block/title]))})))))))] + (common-util/distinct-by :block/uuid result))))) (defn truncate-table! [db] From dbe2708e5e00fddf4b5ed29a9dff676408ff8bf7 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 21 Jul 2025 22:46:02 +0800 Subject: [PATCH 52/93] Add webpack build --- package.json | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index b3d4b7536e..58e702ebe6 100644 --- a/package.json +++ b/package.json @@ -50,17 +50,18 @@ }, "scripts": { "watch": "run-p gulp:watch cljs:watch", - "electron-watch": "run-p gulp:watch cljs:electron-watch", - "app-watch": "run-p gulp:watch cljs:app-watch", - "dev": "run-p gulp:watch gulp:mobile-watch cljs:dev-watch", - "release": "run-s gulp:build cljs:release", - "release-app": "run-s gulp:build cljs:release-app", + "electron-watch": "run-p gulp:watch cljs:electron-watch webpack", + "app-watch": "run-p gulp:watch cljs:app-watch webpack", + "dev": "run-p gulp:watch gulp:mobile-watch cljs:dev-watch webpack", + "release": "run-s gulp:build cljs:release webpack-build", + "release-app": "run-s gulp:build cljs:release-app webpack-build", "release-mobile": "run-s gulp:buildMobile cljs:release-mobile", "dev-release-app": "run-s gulp:build cljs:dev-release-app", "dev-electron-app": "gulp electron", "release-electron": "run-s gulp:build && gulp electronMaker", "debug-electron": "cd static/ && yarn electron:debug", "webpack": "webpack --watch", + "webpack-build": "npx webpack build", "sync-android-release": "yarn clean && yarn release-mobile && rm -rf ./static/mobile/**/*.map && npx cap sync android", "sync-ios-release": "yarn clean && yarn release-mobile && rm -rf ./static/mobile/**/*.map && npx cap sync ios", "clean": "gulp clean", @@ -72,27 +73,27 @@ "gulp:buildMobile": "cross-env NODE_ENV=production gulp buildMobile", "css:build": "postcss tailwind.all.css -o static/css/style.css --verbose --env production", "css:watch": "cross-env TAILWIND_MODE=watch postcss tailwind.all.css -o static/css/style.css --verbose --watch", - "cljs:watch": "clojure -M:cljs watch app electron", + "cljs:watch": "clojure -M:cljs watch app workers electron", "cljs:storybook-watch": "clojure -M:cljs watch stories-dev", "gulp:mobile-watch": "gulp watchMobile", "css:mobile-build": "postcss tailwind.mobile.css -o static/mobile/style.css --verbose --env production", "css:mobile-watch": "cross-env TAILWIND_MODE=watch postcss tailwind.mobile.css -o static/mobile/style.css --verbose --watch", "cljs:mobile-watch": "clojure -M:cljs watch mobile", "cljs:release-mobile": "clojure -M:cljs release mobile", - "cljs:dev-watch": "clojure -M:cljs watch app electron mobile", + "cljs:dev-watch": "clojure -M:cljs watch app workers electron mobile", "cljs:app-watch": "clojure -M:cljs watch app workers", - "cljs:electron-watch": "clojure -M:cljs watch app electron --config-merge \"{:asset-path \\\"./js\\\"}\"", - "cljs:release": "clojure -M:cljs release app publishing electron", - "cljs:release-electron": "clojure -M:cljs release app electron --debug && clojure -M:cljs release publishing", - "cljs:release-app": "clojure -M:cljs release app", - "cljs:release-publishing": "clojure -M:cljs release publishing", + "cljs:electron-watch": "clojure -M:cljs watch app workers electron --config-merge \"{:asset-path \\\"./js\\\"}\"", + "cljs:release": "clojure -M:cljs release app workers publishing electron", + "cljs:release-electron": "clojure -M:cljs release app workers electron --debug && clojure -M:cljs release publishing", + "cljs:release-app": "clojure -M:cljs release app workers", + "cljs:release-publishing": "clojure -M:cljs release app publishing", "cljs:test": "clojure -M:test compile test", "cljs:run-test": "node static/tests.js", - "cljs:dev-release-app": "clojure -M:cljs release app --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\"", - "cljs:dev-release-electron": "clojure -M:cljs release app electron --debug --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\" && clojure -M:cljs release publishing", - "cljs:debug": "clojure -M:cljs release app --debug", - "cljs:report": "clojure -M:cljs run shadow.cljs.build-report app report.html", - "cljs:build-electron": "clojure -A:cljs compile app electron", + "cljs:dev-release-app": "clojure -M:cljs release app workers --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\"", + "cljs:dev-release-electron": "clojure -M:cljs release app workers electron --debug --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\" && clojure -M:cljs release publishing", + "cljs:debug": "clojure -M:cljs release app workers --debug", + "cljs:report": "clojure -M:cljs run shadow.cljs.build-report app workers report.html", + "cljs:build-electron": "clojure -A:cljs compile app workers electron", "cljs:lint": "clojure -M:clj-kondo --parallel --lint src --cache false", "ios:dev": "cross-env PLATFORM=ios gulp cap", "android:dev": "cross-env PLATFORM=android gulp cap", From 31004ee371709bdf3927ecc8f4b285daea56e29e Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 12:40:25 +0800 Subject: [PATCH 53/93] wip: webpack release build --- deps.edn | 11 +- externs/app.txt | 39 +++ package.json | 2 +- shadow-cljs.edn | 20 +- src/main/frontend/core.cljs | 6 +- yarn.lock | 574 ++++-------------------------------- 6 files changed, 110 insertions(+), 542 deletions(-) create mode 100644 externs/app.txt diff --git a/deps.edn b/deps.edn index cf32722fc9..07b3c7f520 100644 --- a/deps.edn +++ b/deps.edn @@ -25,7 +25,7 @@ hiccups/hiccups {:mvn/version "0.3.0"} tongue/tongue {:mvn/version "0.4.4"} org.clojure/core.async {:mvn/version "1.6.673"} - thheller/shadow-cljs {:mvn/version "2.28.23"} + thheller/shadow-cljs {:mvn/version "3.1.7"} expound/expound {:mvn/version "0.8.6"} com.lambdaisland/glogi {:mvn/version "1.1.144"} binaryage/devtools {:mvn/version "1.0.5"} @@ -53,16 +53,14 @@ :git/sha "d61ce7e29186de021a2a453a8cee68efb5a88440"}} :aliases {:cljs {:extra-paths ["src/dev-cljs/" "src/test/" "src/electron/"] - :extra-deps {org.clojure/clojurescript {:mvn/version "1.11.132"} - org.clojure/tools.namespace {:mvn/version "0.2.11"} + :extra-deps {org.clojure/tools.namespace {:mvn/version "0.2.11"} cider/cider-nrepl {:mvn/version "0.55.1"} org.clojars.knubie/cljs-run-test {:mvn/version "1.0.1"} tortue/spy {:mvn/version "2.14.0"}} :main-opts ["-m" "shadow.cljs.devtools.cli"]} :test {:extra-paths ["src/test/"] - :extra-deps {org.clojure/clojurescript {:mvn/version "1.11.132"} - org.clojure/test.check {:mvn/version "1.1.1"} + :extra-deps {org.clojure/test.check {:mvn/version "1.1.1"} pjstadig/humane-test-output {:mvn/version "0.11.0"} org.clojars.knubie/cljs-run-test {:mvn/version "1.0.1"} tortue/spy {:mvn/version "2.14.0"} @@ -70,8 +68,7 @@ :main-opts ["-m" "shadow.cljs.devtools.cli"]} :rtc-e2e-test {:extra-paths ["src/rtc_e2e_test"] - :extra-deps {org.clojure/clojurescript {:mvn/version "1.11.132"} - cider/cider-nrepl {:mvn/version "0.50.2"}} + :extra-deps {cider/cider-nrepl {:mvn/version "0.50.2"}} :main-opts ["-m" "shadow.cljs.devtools.cli"]} :bench {:extra-paths ["src/bench/"] diff --git a/externs/app.txt b/externs/app.txt new file mode 100644 index 0000000000..0ea823e902 --- /dev/null +++ b/externs/app.txt @@ -0,0 +1,39 @@ +require +DEBUG +convertFileSrc +getPlatform +handleError +isLoggingEnabled +isNative +isNativePlatform +isPluginAvailable +platform +pluginMethodNoop +registerPlugin +registerHelper +Pass +showHint +createRef +call +setState +forceUpdate +memo +createElement +render +unmount +createContext +createPortal +createRef +createElement +ref +path +current +useState +useReducer +useEffect +useLayoutEffect +useCallback +useMemo +useRef +renderToString +newStore diff --git a/package.json b/package.json index 58e702ebe6..1193e89b41 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "process": "^0.11.10", "purgecss": "4.0.2", "semver": "7.5.2", - "shadow-cljs": "2.28.21", + "shadow-cljs": "^3.1.7", "stylelint": "^13.8.0", "stylelint-config-standard": "^20.0.0", "tailwindcss": "3.3.5", diff --git a/shadow-cljs.edn b/shadow-cljs.edn index fb51fdd13f..aa36888b37 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -23,7 +23,7 @@ :resolve {"react" {:target :global :global "React"} "react-dom" {:target :global - :global "ReactDOM"}}} ;; handle `require(xxx.css)` + :global "ReactDOM"}}} :modules {:main {:init-fn frontend.core/init} :code-editor @@ -40,7 +40,7 @@ :asset-path "/static/js" :release {:asset-path "https://asset.logseq.com/static/js"} :compiler-options {:infer-externs false - :output-feature-set :es-next-in + :output-feature-set :es2020 :source-map true :externs ["datascript/externs.js" "externs.js"] @@ -77,23 +77,23 @@ :external-index-format :esm :entry-keys ["module" "browser" "main"] :export-conditions ["module" "import", "browser" "require" "default"]} - :modules {:shared {:entries []} + :modules {:workers-shared {:entries []} :db-worker {:init-fn frontend.worker.db-worker/init :web-worker true - :prepend "importScripts('workers-bundle.js');\n" - :depends-on #{:shared}} + ;; :prepend "importScripts('workers-bundle.js');\n" + :depends-on #{:workers-shared}} :inference-worker {:init-fn frontend.inference-worker.inference-worker/init :web-worker true - :prepend "importScripts('workers-bundle.js');\n" - :depends-on #{:shared}}} + ;; :prepend "importScripts('workers-bundle.js');\n" + :depends-on #{:workers-shared}}} :output-dir "./static/js" :asset-path "/static/js" :release {:asset-path "https://asset.logseq.com/static/js"} :compiler-options {:infer-externs :auto - :output-feature-set :es-next-in + :output-feature-set :es2020 :source-map true :externs ["datascript/externs.js" "externs.js"] @@ -131,7 +131,7 @@ :asset-path "./js" :release {:asset-path "http://localhost"} :compiler-options {:infer-externs :auto - :output-feature-set :es-next-in + :output-feature-set :es-2020 :source-map true :externs ["datascript/externs.js" "externs.js"] @@ -220,7 +220,7 @@ :closure-defines {logseq.common.config/PUBLISHING true goog.debug.LOGGING_ENABLED true} :compiler-options {:infer-externs :auto - :output-feature-set :es-next + :output-feature-set :es-2020 :source-map true :externs ["datascript/externs.js" "externs.js"] diff --git a/src/main/frontend/core.cljs b/src/main/frontend/core.cljs index bb08161e27..ab59ac0c26 100644 --- a/src/main/frontend/core.cljs +++ b/src/main/frontend/core.cljs @@ -18,7 +18,7 @@ [frontend.spec] [logseq.api] [logseq.db.frontend.kv-entity] - [malli.dev.cljs :as md] + ;; [malli.dev.cljs :as md] [reitit.frontend :as rf] [reitit.frontend.easy :as rfe])) @@ -53,8 +53,8 @@ (defonce root (rdc/createRoot (.getElementById js/document "root"))) (defn ^:export start [] - (when config/dev? - (md/start!)) + ;; (when config/dev? + ;; (md/start!)) (set-router!) (.render ^js root (page/current-page)) diff --git a/yarn.lock b/yarn.lock index 0ed5a0aa34..3f0de25458 100644 --- a/yarn.lock +++ b/yarn.lock @@ -846,10 +846,10 @@ resolved "https://registry.yarnpkg.com/@logseq/react-tweet-embed/-/react-tweet-embed-1.3.1-1.tgz#119d22be8234de006fc35c3fa2a36f85634c5be6" integrity sha512-9O0oHs5depCvh6ZQvwtl1xb7B80YG5rUfY10uSUat5itOlcE3IWaYYpe6p/tcHErqHWnWgkXHitAB9M29FMbQg== -"@logseq/sqlite-wasm@=0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@logseq/sqlite-wasm/-/sqlite-wasm-0.1.1.tgz#0645307b78da637e01aced6b3f04b318639dc538" - integrity sha512-cdUYfMgBYO2JrwNqsLGZZ1T0RAZe7SzlplLqlDWN/Wn7hXQbMteWcXTRxPGXSS0yx/4e91VeqRtmC+qexL4gKw== +"@logseq/sqlite-wasm@=0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@logseq/sqlite-wasm/-/sqlite-wasm-0.1.0.tgz#b866d22d7a83bfa6815fe7f4d8899097b49af642" + integrity sha512-Ft/ZY8b2s35pFS7L7NX0CKWa5WkeKueYB7l5AYFFvQ2QQ0s7O4zlEi+jIX/ZdO2vnf2p4ALg+QvgaPgu6w2o5w== "@mapbox/node-pre-gyp@^1.0.0": version "1.0.11" @@ -2124,23 +2124,6 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -asn1.js@^4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -assert@^1.1.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.1.tgz#038ab248e4ff078e7bc2485ba6e6388466c78f76" - integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A== - dependencies: - object.assign "^4.1.4" - util "^0.10.4" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -2298,7 +2281,7 @@ base64-arraybuffer@^1.0.2: resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== -base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: +base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -2362,16 +2345,6 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.2.tgz#3d8fed6796c24e177737f7cc5172ee04ef39ec99" - integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== - -bn.js@^5.2.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" - integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== - body-parser@^1.19.0: version "1.20.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" @@ -2459,74 +2432,6 @@ braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238" - integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ== - dependencies: - bn.js "^5.2.1" - randombytes "^2.1.0" - safe-buffer "^5.2.1" - -browserify-sign@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" - integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== - dependencies: - bn.js "^5.2.1" - browserify-rsa "^4.1.0" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.5" - hash-base "~3.0" - inherits "^2.0.4" - parse-asn1 "^5.1.7" - readable-stream "^2.3.8" - safe-buffer "^5.2.1" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.24.4: version "4.25.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" @@ -2552,20 +2457,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -2574,10 +2465,13 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" bytes@3.1.2: version "3.1.2" @@ -2823,14 +2717,6 @@ chrono-node@2.2.4: dependencies: dayjs "^1.10.0" -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.6.tgz#8fe672437d01cd6c4561af5334e0cc50ff1955f7" - integrity sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw== - dependencies: - inherits "^2.0.4" - safe-buffer "^5.2.1" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -3128,21 +3014,11 @@ connect@^3.7.0: parseurl "~1.3.3" utils-merge "1.0.1" -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== - content-type@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" @@ -3344,47 +3220,6 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -create-ecdh@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hash@~1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" - integrity sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - ripemd160 "^2.0.0" - sha.js "^2.4.0" - -create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -3417,24 +3252,6 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.1" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz#bb8921bec9acc81633379aa8f52d69b0b69e0dac" - integrity sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ== - dependencies: - browserify-cipher "^1.0.1" - browserify-sign "^4.2.3" - create-ecdh "^4.0.4" - create-hash "^1.2.0" - create-hmac "^1.1.7" - diffie-hellman "^5.0.3" - hash-base "~3.0.4" - inherits "^2.0.4" - pbkdf2 "^3.1.2" - public-encrypt "^4.0.3" - randombytes "^2.1.0" - randomfill "^1.0.4" - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -3787,14 +3604,6 @@ dependency-graph@^0.11.0: resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -3848,15 +3657,6 @@ diff@^5.1.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== -diffie-hellman@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -3904,11 +3704,6 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -4034,19 +3829,6 @@ elementtree@^0.1.7: dependencies: sax "1.1.4" -elliptic@^6.5.3, elliptic@^6.5.5: - version "6.6.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" - integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - emoji-mart@^5.5.2: version "5.6.0" resolved "https://registry.yarnpkg.com/emoji-mart/-/emoji-mart-5.6.0.tgz#71b3ed0091d3e8c68487b240d9d6d9a73c27f023" @@ -4375,19 +4157,11 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0, events@^3.3.0: +events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -5453,38 +5227,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" - integrity sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw== - dependencies: - inherits "^2.0.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-base@~3.0, hash-base@~3.0.4: - version "3.0.5" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.5.tgz#52480e285395cf7fba17dc4c9e47acdc7f248a8a" - integrity sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg== - dependencies: - inherits "^2.0.4" - safe-buffer "^5.2.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - hasown@^2.0.0, hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -5497,15 +5239,6 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hnswlib-wasm@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/hnswlib-wasm/-/hnswlib-wasm-0.8.2.tgz#8b6a9534d99f23d30b1fd29ac7c45410ee5941c1" @@ -5595,11 +5328,6 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== - https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -5615,7 +5343,7 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.13, ieee754@^1.1.4: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -5674,7 +5402,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6205,7 +5933,7 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -6225,6 +5953,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + ismobilejs@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ismobilejs/-/ismobilejs-1.1.1.tgz#c56ca0ae8e52b24ca0f22ba5ef3215a2ddbbaa0e" @@ -6784,15 +6517,6 @@ mathml-tag-names@^2.1.3: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mdast-util-from-markdown@^0.8.0: version "0.8.5" resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" @@ -6934,14 +6658,6 @@ micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: braces "^3.0.3" picomatch "^2.3.1" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -6994,16 +6710,6 @@ mini-svg-data-uri@^1.2.3: resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - minimatch@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -7264,35 +6970,6 @@ node-html-parser@5.4.2: css-select "^4.2.1" he "1.2.0" -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-releases@^2.0.19: version "2.0.19" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" @@ -7444,7 +7121,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.7: +object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.7: version "4.1.7" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== @@ -7567,11 +7244,6 @@ ordered-read-streams@^1.0.0: dependencies: readable-stream "^2.0.1" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== - os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" @@ -7674,7 +7346,7 @@ package-json-from-dist@^1.0.0: resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== -pako@~1.0.2, pako@~1.0.5: +pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -7686,18 +7358,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" - integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== - dependencies: - asn1.js "^4.10.1" - browserify-aes "^1.2.0" - evp_bytestokey "^1.0.3" - hash-base "~3.0" - pbkdf2 "^3.1.2" - safe-buffer "^5.2.1" - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -7764,11 +7424,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-complete-extname@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz#f889985dc91000c815515c0bfed06c5acda0752b" @@ -7883,18 +7538,6 @@ path@0.12.7: process "^0.11.1" util "^0.10.3" -pbkdf2@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.3.tgz#8be674d591d65658113424592a95d1517318dd4b" - integrity sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA== - dependencies: - create-hash "~1.1.3" - create-hmac "^1.1.7" - ripemd160 "=2.0.1" - safe-buffer "^5.2.1" - sha.js "^2.4.11" - to-buffer "^1.2.0" - pdfjs-dist@4.2.67: version "4.2.67" resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-4.2.67.tgz#dd2a65a4b00d95cd4bc2c1f6a27c5e9eb31d512a" @@ -8577,18 +8220,6 @@ protobufjs@^7.2.4: "@types/node" ">=13.7.0" long "^5.0.0" -public-encrypt@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -8614,7 +8245,7 @@ pumpify@^1.3.5: inherits "^2.0.3" pump "^2.0.0" -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== @@ -8660,11 +8291,6 @@ qs@^6.12.3: dependencies: side-channel "^1.1.0" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -8680,21 +8306,13 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -8873,7 +8491,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@^2.3.8, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -8909,7 +8527,7 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -readline-sync@^1.4.7: +readline-sync@^1.4.10: version "1.4.10" resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== @@ -9192,22 +8810,6 @@ rimraf@^6.0.1: glob "^11.0.0" package-json-from-dist "^1.0.0" -ripemd160@=2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" - integrity sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w== - dependencies: - hash-base "^2.0.0" - inherits "^2.0.1" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - roarr@^2.15.3: version "2.15.4" resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" @@ -9238,7 +8840,7 @@ safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -9418,41 +9020,28 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: - version "2.4.12" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" - integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== - dependencies: - inherits "^2.0.4" - safe-buffer "^5.2.1" - to-buffer "^1.2.0" - shadow-cljs-jar@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz#0939d91c468b4bc5eab5a958f79e7ef5696fdf62" integrity sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA== -shadow-cljs@2.28.21: - version "2.28.21" - resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.28.21.tgz#75e871f22b08f040f1e87c27cf0c02f3d48ffb44" - integrity sha512-O5VUJkTh0bWqPBSKoWnQwEe/jfvbxHkzCA7SEx8f1Eavb7nDFcoNFDkgGjJtaAyaaSw/cmABrT2EeksnXw/25g== +shadow-cljs@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-3.1.7.tgz#78ad9ff810d515a7c5ca457fa27a8f572bdbd87b" + integrity sha512-q1SCy5m5EpNfrn6C0vKa2ho6gwW6rdSU1Ge22HbbZ813TpR/1hBXdlgTF2RE49yIqJxxhVtfcLz0jWa0Ul32IQ== dependencies: - node-libs-browser "^2.2.1" - readline-sync "^1.4.7" + buffer "^6.0.3" + process "^0.11.10" + readline-sync "^1.4.10" shadow-cljs-jar "1.3.4" - source-map-support "^0.4.15" - which "^1.3.1" - ws "^7.4.6" + source-map-support "^0.5.21" + which "^5.0.0" + ws "^8.18.1" shallow-clone@^3.0.0: version "3.0.1" @@ -9752,14 +9341,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map-support@~0.5.20: +source-map-support@^0.5.21, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -9885,14 +9467,6 @@ stop-iteration-iterator@^1.1.0: es-errors "^1.3.0" internal-slot "^1.1.0" -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - stream-buffers@2.2.x: version "2.2.0" resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" @@ -9903,17 +9477,6 @@ stream-exhaust@^1.0.1: resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - stream-shift@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" @@ -10024,7 +9587,7 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -10503,13 +10066,6 @@ time-stamp@^1.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw== -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - tiny-typed-emitter@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" @@ -10542,20 +10098,6 @@ to-absolute-glob@^2.0.0: is-absolute "^1.0.0" is-negated-glob "^1.0.0" -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== - -to-buffer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.1.tgz#2ce650cdb262e9112a18e65dc29dcb513c8155e0" - integrity sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ== - dependencies: - isarray "^2.0.5" - safe-buffer "^5.2.1" - typed-array-buffer "^1.0.3" - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -10666,11 +10208,6 @@ tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -10984,20 +10521,13 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.10.3, util@^0.10.4: +util@^0.10.3: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - util@^0.12.5: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" @@ -11134,11 +10664,6 @@ vinyl@^2.0.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" @@ -11306,6 +10831,13 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +which@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-5.0.0.tgz#d93f2d93f79834d4363c7d0c23e00d07c466c8d6" + integrity sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ== + dependencies: + isexe "^3.1.1" + wide-align@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" @@ -11382,10 +10914,10 @@ write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.4.6: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +ws@^8.18.1: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== ws@~8.17.1: version "8.17.1" @@ -11443,7 +10975,7 @@ xpath@^0.0.32: resolved "https://registry.yarnpkg.com/xpath/-/xpath-0.0.32.tgz#1b73d3351af736e17ec078d6da4b8175405c48af" integrity sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw== -xtend@^4.0.0, xtend@~4.0.1: +xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== From f86be0f3a8f5688ae51f51f44ea9cf70ce274e2a Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 13:11:15 +0800 Subject: [PATCH 54/93] add more externs --- externs/app.txt | 45 +++++++++++++++++++++++++++++++++++++++++++++ shadow-cljs.edn | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/externs/app.txt b/externs/app.txt index 0ea823e902..0cbe536b8f 100644 --- a/externs/app.txt +++ b/externs/app.txt @@ -36,4 +36,49 @@ useCallback useMemo useRef renderToString +idb-keyval newStore +isError +value +CodeMirror +over +forEachNode +on +getTextArea +setUser +nativeEvent +which +multipliedBy +minus +plus +isInteger +isPositive +isLessThan +toNumber +modulo +exponentiatedBy +dividedBy +multipliedBy +negated +isZero +isGreaterThanOrEqualTo +isLessThan +shiftedBy +s +dividedToIntegerBy +abs +toFraction +e +getCursor +getLineTokens +getTokenAt +getValue +completionActive +state +mime +getWrapperElement +doc +lastLine +getLine +setOption +string diff --git a/shadow-cljs.edn b/shadow-cljs.edn index aa36888b37..bca72aa9a4 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -39,7 +39,7 @@ :output-dir "./static/js" :asset-path "/static/js" :release {:asset-path "https://asset.logseq.com/static/js"} - :compiler-options {:infer-externs false + :compiler-options {:infer-externs :auto :output-feature-set :es2020 :source-map true :externs ["datascript/externs.js" From 5d7f56361ac45197623dbca4dc6ab77ee49c8daf Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 14:36:10 +0800 Subject: [PATCH 55/93] downgrade shadow-cljs --- deps.edn | 2 +- externs/app.txt | 1 + package.json | 2 +- shadow-cljs.edn | 8 +- src/main/frontend/modules/shortcut/core.cljs | 2 +- yarn.lock | 574 +++++++++++++++++-- 6 files changed, 529 insertions(+), 60 deletions(-) diff --git a/deps.edn b/deps.edn index 07b3c7f520..ac22ad20b0 100644 --- a/deps.edn +++ b/deps.edn @@ -25,7 +25,7 @@ hiccups/hiccups {:mvn/version "0.3.0"} tongue/tongue {:mvn/version "0.4.4"} org.clojure/core.async {:mvn/version "1.6.673"} - thheller/shadow-cljs {:mvn/version "3.1.7"} + thheller/shadow-cljs {:mvn/version "2.28.23"} expound/expound {:mvn/version "0.8.6"} com.lambdaisland/glogi {:mvn/version "1.1.144"} binaryage/devtools {:mvn/version "1.0.5"} diff --git a/externs/app.txt b/externs/app.txt index 0cbe536b8f..1f9dbd3b0d 100644 --- a/externs/app.txt +++ b/externs/app.txt @@ -82,3 +82,4 @@ lastLine getLine setOption string +dispose diff --git a/package.json b/package.json index 1193e89b41..9a234ce9e9 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "process": "^0.11.10", "purgecss": "4.0.2", "semver": "7.5.2", - "shadow-cljs": "^3.1.7", + "shadow-cljs": "2.28.23", "stylelint": "^13.8.0", "stylelint-config-standard": "^20.0.0", "tailwindcss": "3.3.5", diff --git a/shadow-cljs.edn b/shadow-cljs.edn index bca72aa9a4..02fa512cd5 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -40,7 +40,7 @@ :asset-path "/static/js" :release {:asset-path "https://asset.logseq.com/static/js"} :compiler-options {:infer-externs :auto - :output-feature-set :es2020 + :output-feature-set :es-next-in :source-map true :externs ["datascript/externs.js" "externs.js"] @@ -81,19 +81,19 @@ :db-worker {:init-fn frontend.worker.db-worker/init :web-worker true - ;; :prepend "importScripts('workers-bundle.js');\n" + :prepend "importScripts('workers-bundle.js');\n" :depends-on #{:workers-shared}} :inference-worker {:init-fn frontend.inference-worker.inference-worker/init :web-worker true - ;; :prepend "importScripts('workers-bundle.js');\n" + :prepend "importScripts('workers-bundle.js');\n" :depends-on #{:workers-shared}}} :output-dir "./static/js" :asset-path "/static/js" :release {:asset-path "https://asset.logseq.com/static/js"} :compiler-options {:infer-externs :auto - :output-feature-set :es2020 + :output-feature-set :es-next-in :source-map true :externs ["datascript/externs.js" "externs.js"] diff --git a/src/main/frontend/modules/shortcut/core.cljs b/src/main/frontend/modules/shortcut/core.cljs index 2695f72129..df0f7c9197 100644 --- a/src/main/frontend/modules/shortcut/core.cljs +++ b/src/main/frontend/modules/shortcut/core.cljs @@ -219,7 +219,7 @@ (doseq [{:keys [handler group dispatch-fn]} (vals @*installed-handlers) :when (not= group :shortcut.handler/misc)] (if dispose? - (.dispose handler) + (.dispose ^js handler) (events/unlisten handler EventType/SHORTCUT_TRIGGERED dispatch-fn))))) (defn listen-all! [] diff --git a/yarn.lock b/yarn.lock index 3f0de25458..bc8bcb0f80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -846,10 +846,10 @@ resolved "https://registry.yarnpkg.com/@logseq/react-tweet-embed/-/react-tweet-embed-1.3.1-1.tgz#119d22be8234de006fc35c3fa2a36f85634c5be6" integrity sha512-9O0oHs5depCvh6ZQvwtl1xb7B80YG5rUfY10uSUat5itOlcE3IWaYYpe6p/tcHErqHWnWgkXHitAB9M29FMbQg== -"@logseq/sqlite-wasm@=0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@logseq/sqlite-wasm/-/sqlite-wasm-0.1.0.tgz#b866d22d7a83bfa6815fe7f4d8899097b49af642" - integrity sha512-Ft/ZY8b2s35pFS7L7NX0CKWa5WkeKueYB7l5AYFFvQ2QQ0s7O4zlEi+jIX/ZdO2vnf2p4ALg+QvgaPgu6w2o5w== +"@logseq/sqlite-wasm@=0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@logseq/sqlite-wasm/-/sqlite-wasm-0.1.1.tgz#0645307b78da637e01aced6b3f04b318639dc538" + integrity sha512-cdUYfMgBYO2JrwNqsLGZZ1T0RAZe7SzlplLqlDWN/Wn7hXQbMteWcXTRxPGXSS0yx/4e91VeqRtmC+qexL4gKw== "@mapbox/node-pre-gyp@^1.0.0": version "1.0.11" @@ -2124,6 +2124,23 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1.js@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +assert@^1.1.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.1.tgz#038ab248e4ff078e7bc2485ba6e6388466c78f76" + integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A== + dependencies: + object.assign "^4.1.4" + util "^0.10.4" + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -2281,7 +2298,7 @@ base64-arraybuffer@^1.0.2: resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== -base64-js@^1.3.1, base64-js@^1.5.1: +base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -2345,6 +2362,16 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.2.tgz#3d8fed6796c24e177737f7cc5172ee04ef39ec99" + integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== + +bn.js@^5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" + integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== + body-parser@^1.19.0: version "1.20.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" @@ -2432,6 +2459,74 @@ braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238" + integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ== + dependencies: + bn.js "^5.2.1" + randombytes "^2.1.0" + safe-buffer "^5.2.1" + +browserify-sign@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" + integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== + dependencies: + bn.js "^5.2.1" + browserify-rsa "^4.1.0" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.5" + hash-base "~3.0" + inherits "^2.0.4" + parse-asn1 "^5.1.7" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.24.4: version "4.25.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" @@ -2457,6 +2552,20 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -2465,13 +2574,10 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== bytes@3.1.2: version "3.1.2" @@ -2717,6 +2823,14 @@ chrono-node@2.2.4: dependencies: dayjs "^1.10.0" +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.6.tgz#8fe672437d01cd6c4561af5334e0cc50ff1955f7" + integrity sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -3014,11 +3128,21 @@ connect@^3.7.0: parseurl "~1.3.3" utils-merge "1.0.1" +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + content-type@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" @@ -3220,6 +3344,47 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +create-ecdh@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hash@~1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + integrity sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -3252,6 +3417,24 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" +crypto-browserify@^3.11.0: + version "3.12.1" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz#bb8921bec9acc81633379aa8f52d69b0b69e0dac" + integrity sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ== + dependencies: + browserify-cipher "^1.0.1" + browserify-sign "^4.2.3" + create-ecdh "^4.0.4" + create-hash "^1.2.0" + create-hmac "^1.1.7" + diffie-hellman "^5.0.3" + hash-base "~3.0.4" + inherits "^2.0.4" + pbkdf2 "^3.1.2" + public-encrypt "^4.0.3" + randombytes "^2.1.0" + randomfill "^1.0.4" + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -3604,6 +3787,14 @@ dependency-graph@^0.11.0: resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -3657,6 +3848,15 @@ diff@^5.1.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== +diffie-hellman@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -3704,6 +3904,11 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -3829,6 +4034,19 @@ elementtree@^0.1.7: dependencies: sax "1.1.4" +elliptic@^6.5.3, elliptic@^6.5.5: + version "6.6.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emoji-mart@^5.5.2: version "5.6.0" resolved "https://registry.yarnpkg.com/emoji-mart/-/emoji-mart-5.6.0.tgz#71b3ed0091d3e8c68487b240d9d6d9a73c27f023" @@ -4157,11 +4375,19 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0, events@^3.3.0: +events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -5227,6 +5453,38 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + integrity sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw== + dependencies: + inherits "^2.0.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-base@~3.0, hash-base@~3.0.4: + version "3.0.5" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.5.tgz#52480e285395cf7fba17dc4c9e47acdc7f248a8a" + integrity sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + hasown@^2.0.0, hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -5239,6 +5497,15 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hnswlib-wasm@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/hnswlib-wasm/-/hnswlib-wasm-0.8.2.tgz#8b6a9534d99f23d30b1fd29ac7c45410ee5941c1" @@ -5328,6 +5595,11 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -5343,7 +5615,7 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.1.13, ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -5402,7 +5674,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5933,7 +6205,7 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -5953,11 +6225,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isexe@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" - integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== - ismobilejs@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ismobilejs/-/ismobilejs-1.1.1.tgz#c56ca0ae8e52b24ca0f22ba5ef3215a2ddbbaa0e" @@ -6517,6 +6784,15 @@ mathml-tag-names@^2.1.3: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + mdast-util-from-markdown@^0.8.0: version "0.8.5" resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" @@ -6658,6 +6934,14 @@ micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: braces "^3.0.3" picomatch "^2.3.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -6710,6 +6994,16 @@ mini-svg-data-uri@^1.2.3: resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + minimatch@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -6970,6 +7264,35 @@ node-html-parser@5.4.2: css-select "^4.2.1" he "1.2.0" +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + node-releases@^2.0.19: version "2.0.19" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" @@ -7121,7 +7444,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.7: +object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.7: version "4.1.7" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== @@ -7244,6 +7567,11 @@ ordered-read-streams@^1.0.0: dependencies: readable-stream "^2.0.1" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" @@ -7346,7 +7674,7 @@ package-json-from-dist@^1.0.0: resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== -pako@~1.0.2: +pako@~1.0.2, pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -7358,6 +7686,18 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" + integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== + dependencies: + asn1.js "^4.10.1" + browserify-aes "^1.2.0" + evp_bytestokey "^1.0.3" + hash-base "~3.0" + pbkdf2 "^3.1.2" + safe-buffer "^5.2.1" + parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -7424,6 +7764,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + path-complete-extname@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz#f889985dc91000c815515c0bfed06c5acda0752b" @@ -7538,6 +7883,18 @@ path@0.12.7: process "^0.11.1" util "^0.10.3" +pbkdf2@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.3.tgz#8be674d591d65658113424592a95d1517318dd4b" + integrity sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA== + dependencies: + create-hash "~1.1.3" + create-hmac "^1.1.7" + ripemd160 "=2.0.1" + safe-buffer "^5.2.1" + sha.js "^2.4.11" + to-buffer "^1.2.0" + pdfjs-dist@4.2.67: version "4.2.67" resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-4.2.67.tgz#dd2a65a4b00d95cd4bc2c1f6a27c5e9eb31d512a" @@ -8220,6 +8577,18 @@ protobufjs@^7.2.4: "@types/node" ">=13.7.0" long "^5.0.0" +public-encrypt@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -8245,7 +8614,7 @@ pumpify@^1.3.5: inherits "^2.0.3" pump "^2.0.0" -punycode@^1.4.1: +punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== @@ -8291,6 +8660,11 @@ qs@^6.12.3: dependencies: side-channel "^1.1.0" +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -8306,13 +8680,21 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -randombytes@^2.1.0: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" +randomfill@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + range-parser@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -8491,7 +8873,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@^2.3.8, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -8527,7 +8909,7 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -readline-sync@^1.4.10: +readline-sync@^1.4.7: version "1.4.10" resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== @@ -8810,6 +9192,22 @@ rimraf@^6.0.1: glob "^11.0.0" package-json-from-dist "^1.0.0" +ripemd160@=2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + integrity sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w== + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + roarr@^2.15.3: version "2.15.4" resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" @@ -8840,7 +9238,7 @@ safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -9020,28 +9418,41 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: + version "2.4.12" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" + integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.0" + shadow-cljs-jar@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz#0939d91c468b4bc5eab5a958f79e7ef5696fdf62" integrity sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA== -shadow-cljs@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-3.1.7.tgz#78ad9ff810d515a7c5ca457fa27a8f572bdbd87b" - integrity sha512-q1SCy5m5EpNfrn6C0vKa2ho6gwW6rdSU1Ge22HbbZ813TpR/1hBXdlgTF2RE49yIqJxxhVtfcLz0jWa0Ul32IQ== +shadow-cljs@2.28.23: + version "2.28.23" + resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.28.23.tgz#06f2bc1f5345e35f8b0f995b4749ae4575654abe" + integrity sha512-SM7LeLctZLLCm6Y3NxWOH4GvHqHDZ6Jz9bUgfpJrk1jMADqIp3rliD6Rrd12gLX2b9/oEh6UyD7X+yw6O1++sw== dependencies: - buffer "^6.0.3" - process "^0.11.10" - readline-sync "^1.4.10" + node-libs-browser "^2.2.1" + readline-sync "^1.4.7" shadow-cljs-jar "1.3.4" - source-map-support "^0.5.21" - which "^5.0.0" - ws "^8.18.1" + source-map-support "^0.4.15" + which "^1.3.1" + ws "^7.4.6" shallow-clone@^3.0.0: version "3.0.1" @@ -9341,7 +9752,14 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.21, source-map-support@~0.5.20: +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -9467,6 +9885,14 @@ stop-iteration-iterator@^1.1.0: es-errors "^1.3.0" internal-slot "^1.1.0" +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + stream-buffers@2.2.x: version "2.2.0" resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" @@ -9477,6 +9903,17 @@ stream-exhaust@^1.0.1: resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + stream-shift@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" @@ -9587,7 +10024,7 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -10066,6 +10503,13 @@ time-stamp@^1.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw== +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + tiny-typed-emitter@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" @@ -10098,6 +10542,20 @@ to-absolute-glob@^2.0.0: is-absolute "^1.0.0" is-negated-glob "^1.0.0" +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== + +to-buffer@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.1.tgz#2ce650cdb262e9112a18e65dc29dcb513c8155e0" + integrity sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -10208,6 +10666,11 @@ tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -10521,13 +10984,20 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.10.3: +util@^0.10.3, util@^0.10.4: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + util@^0.12.5: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" @@ -10664,6 +11134,11 @@ vinyl@^2.0.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" @@ -10831,13 +11306,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -which@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/which/-/which-5.0.0.tgz#d93f2d93f79834d4363c7d0c23e00d07c466c8d6" - integrity sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ== - dependencies: - isexe "^3.1.1" - wide-align@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" @@ -10914,10 +11382,10 @@ write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^8.18.1: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== +ws@^7.4.6: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@~8.17.1: version "8.17.1" @@ -10975,7 +11443,7 @@ xpath@^0.0.32: resolved "https://registry.yarnpkg.com/xpath/-/xpath-0.0.32.tgz#1b73d3351af736e17ec078d6da4b8175405c48af" integrity sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw== -xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== From 4b935df5d3ad1d799de8cf496a1c3160a8bf8317 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 14:42:54 +0800 Subject: [PATCH 56/93] fix: katex path --- src/main/frontend/extensions/latex.cljs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/frontend/extensions/latex.cljs b/src/main/frontend/extensions/latex.cljs index 1fdf29eb46..eb6921b794 100644 --- a/src/main/frontend/extensions/latex.cljs +++ b/src/main/frontend/extensions/latex.cljs @@ -37,10 +37,11 @@ (when-not @*loading? (reset! *loading? true) (loader/load - (config/asset-uri "/js/katex.min.js") + ;; FIXME: use /js instead of /static/js after deploying to asset.logseq.com + (config/asset-uri "/static/js/katex.min.js") (fn [] (loader/load - (config/asset-uri "/js/mhchem.min.js") + (config/asset-uri "/static/js/mhchem.min.js") (fn [] (-> (when-let [enhancers (and config/lsp-enabled? (seq (hook-extensions-enhancers-by-key :katex)))] From 9335281d4af4fc9f816c398f0bb031c5bdac9889 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 15:25:50 +0800 Subject: [PATCH 57/93] fix: webpack release failed to require path --- externs/app.txt | 1 + src/main/frontend/utils.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/externs/app.txt b/externs/app.txt index 1f9dbd3b0d..3591345ce0 100644 --- a/externs/app.txt +++ b/externs/app.txt @@ -83,3 +83,4 @@ getLine setOption string dispose +path diff --git a/src/main/frontend/utils.js b/src/main/frontend/utils.js index b6162c576a..28398f7ece 100644 --- a/src/main/frontend/utils.js +++ b/src/main/frontend/utils.js @@ -1,4 +1,4 @@ -import path from 'path/path.js' +import path from 'path' // TODO split the capacitor abilities to a separate file for capacitor APIs import { Capacitor } from '@capacitor/core' @@ -481,4 +481,4 @@ export function base64ToUint8Array (base64String) { console.error('Invalid Base64 string:', e) return null } -} \ No newline at end of file +} From aeeaad3eb0f4551b2dfbf22693222380d241e585 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 20:12:19 +0800 Subject: [PATCH 58/93] fix: embedding status --- src/main/frontend/components/header.cljs | 2 +- src/main/frontend/worker/embedding.cljs | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/frontend/components/header.cljs b/src/main/frontend/components/header.cljs index 5690c513bd..ea7484dbd1 100644 --- a/src/main/frontend/components/header.cljs +++ b/src/main/frontend/components/header.cljs @@ -346,7 +346,7 @@ (rum/defc semantic-search-progressing [repo] (let [[vec-search-state set-vec-search-state] (hooks/use-state nil) - indexing? (get-in vec-search-state [:repo->index-info repo :indexing?])] + {:keys [indexing?] :as status} (get-in vec-search-state [:repo->index-info repo])] (hooks/use-effect! (fn [] (c.m/run-task diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 48223e95f8..85e7dccf1b 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -212,9 +212,10 @@ [repo] (when-not (indexing? repo) (when-let [conn (worker-state/get-datascript-conn repo)] - (if (first (d/datoms @conn :avet :logseq.property.embedding/hnsw-label-updated-at)) ; embedding exists - (embedding-stale-blocks! repo) - (re-embedding-graph-data! repo))))) + (when (ldb/get-key-value @conn :logseq.kv/graph-text-embedding-model-name) + (if (first (d/datoms @conn :avet :logseq.property.embedding/hnsw-label-updated-at)) ; embedding exists + (embedding-stale-blocks! repo) + (re-embedding-graph-data! repo)))))) (defn task--embedding-model-info [repo] From 48ae054ce88e94ff9e0a48d568e8852a3484f9be Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 20:22:22 +0800 Subject: [PATCH 59/93] fix: lint --- scripts/src/logseq/tasks/dev/lint.clj | 3 +-- src/main/frontend/common/missionary.cljs | 3 +-- src/main/frontend/components/header.cljs | 2 +- src/main/frontend/inference_worker/inference_worker.cljs | 2 -- src/resources/dicts/en.edn | 1 - 5 files changed, 3 insertions(+), 8 deletions(-) diff --git a/scripts/src/logseq/tasks/dev/lint.clj b/scripts/src/logseq/tasks/dev/lint.clj index 3f5e6a7be9..c9305399d4 100644 --- a/scripts/src/logseq/tasks/dev/lint.clj +++ b/scripts/src/logseq/tasks/dev/lint.clj @@ -61,7 +61,7 @@ (defn- validate-worker-not-in-frontend [] (let [res (shell {:out :string :continue true} - "grep -r --exclude-dir=worker" "\\[frontend.worker.*:" "src/main/frontend") + "grep -r --exclude-dir=worker --exclude-dir=inference_worker" "\\[frontend.worker.*:" "src/main/frontend") ;; allow reset-file b/c it's only affects tests allowed-exceptions #{"src/main/frontend/handler/file_based/file.cljs: [frontend.worker.file.reset :as file-reset]"} invalid-lines (when (= 0 (:exit res)) @@ -79,4 +79,3 @@ [] (validate-frontend-not-in-worker) (validate-worker-not-in-frontend)) - diff --git a/src/main/frontend/common/missionary.cljs b/src/main/frontend/common/missionary.cljs index c4623253ad..ec1adb26c9 100644 --- a/src/main/frontend/common/missionary.cljs +++ b/src/main/frontend/common/missionary.cljs @@ -116,8 +116,7 @@ (defn- fail-case-default-handler [e] - (if (instance? Cancelled e) - (log/warn :run-task*-cancelled e) + (when-not (instance? Cancelled e) (log/error :run-task*-failed e))) (defn run-task diff --git a/src/main/frontend/components/header.cljs b/src/main/frontend/components/header.cljs index ea7484dbd1..d733becc5f 100644 --- a/src/main/frontend/components/header.cljs +++ b/src/main/frontend/components/header.cljs @@ -346,7 +346,7 @@ (rum/defc semantic-search-progressing [repo] (let [[vec-search-state set-vec-search-state] (hooks/use-state nil) - {:keys [indexing?] :as status} (get-in vec-search-state [:repo->index-info repo])] + {:keys [indexing?]} (get-in vec-search-state [:repo->index-info repo])] (hooks/use-effect! (fn [] (c.m/run-task diff --git a/src/main/frontend/inference_worker/inference_worker.cljs b/src/main/frontend/inference_worker/inference_worker.cljs index 4c0e731e04..8502b5e70d 100644 --- a/src/main/frontend/inference_worker/inference_worker.cljs +++ b/src/main/frontend/inference_worker/inference_worker.cljs @@ -1,9 +1,7 @@ (ns frontend.inference-worker.inference-worker "Worker used for text embedding and vector-db" (:require ["comlink" :as Comlink] - [frontend.inference-worker.state :as infer-worker.state] [frontend.inference-worker.text-embedding :as infer-worker.text-embedding] - [lambdaisland.glogi :as log] [lambdaisland.glogi.console :as glogi-console] [promesa.core :as p] [shadow.cljs.modern :refer [defclass]])) diff --git a/src/resources/dicts/en.edn b/src/resources/dicts/en.edn index 65a8c53387..f89424ca4a 100644 --- a/src/resources/dicts/en.edn +++ b/src/resources/dicts/en.edn @@ -214,7 +214,6 @@ :context-menu/template-include-parent-block "Including the parent block in the template?" :context-menu/template-exists-warning "Template already exists!" :settings-page/ai "AI" - :settings-page/tab-ai "AI" :settings-page/git-tip "If you have Logseq Sync enabled, you can view a page's edit history directly. This section is for tech-savvy only." :settings-page/git-desc-1 "To view page's edit history, click the three horizontal dots in the top-right corner and select \"View page history\"." :settings-page/git-desc-2 "For professional users, Logseq also supports using " From 0f48207329fc0e259393cb94af53622b9cf52afb Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 20:48:55 +0800 Subject: [PATCH 60/93] add tags to embedding --- src/main/frontend/worker/embedding.cljs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 85e7dccf1b..0000ed652f 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -12,10 +12,9 @@ ;;; TODOs: ;;; - [x] add :logseq.property/description into text-to-embedding -;;; - [ ] add tags to text-to-embedding +;;; - [x] add tags to text-to-embedding ;;; - [x] check webgpu available, transformers.js is slow without webgpu(the difference is ~70 times) ;;; - [x] expose index-state to ui -;;; - [ ] show progress when loading/downloading models (def ^:private empty-vector-search-state {:repo->index-info {} ;; repo->index-info @@ -75,14 +74,17 @@ [db reset?] (->> (rseq (d/index-range db :block/updated-at nil nil)) (sequence - ;; NOTE: assoc :block.temp/search?, so uuid in :block/title will be replaced by content - (comp (map #(assoc (d/entity db (:e %)) :block.temp/search? true)) + (comp (map #(d/entity db (:e %))) (filter (stale-block-filter-preds reset?)) (map (fn [b] (assoc b :block.temp/text-to-embedding - (if-let [desc (:block/title (:logseq.property/description b))] - (str (:block/title b) ": " desc) - (:block/title b))))))))) + (str (:block/title b) + (let [tags (->> (:block/tags b) + (map :block/title))] + (when (seq tags) + (str " tags: " (string/join ", " tags)))) + (when-let [desc (:block/title (:logseq.property/description b))] + (str " description: " desc)))))))))) (defn- partition-by-text-size [text-size] From 6a22385f0beae521d87bc207e3b608e4231cfd4b Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 20:54:29 +0800 Subject: [PATCH 61/93] replace uuid ref with block title when embedding --- deps/db/src/logseq/db/common/entity_plus.cljc | 4 ++-- src/main/frontend/worker/embedding.cljs | 7 ++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/deps/db/src/logseq/db/common/entity_plus.cljc b/deps/db/src/logseq/db/common/entity_plus.cljc index cdcc99141e..a4173324be 100644 --- a/deps/db/src/logseq/db/common/entity_plus.cljc +++ b/deps/db/src/logseq/db/common/entity_plus.cljc @@ -95,8 +95,8 @@ (get (.-kv e) k) (if db-based? (let [result (lookup-entity e k default-value) - ;; Replace title for pages only, otherwise it'll recursively - ;; replace block id refs if there're cycle references of blocks + ;; Replace title for pages only, otherwise it'll recursively + ;; replace block id refs if there're cycle references of blocks refs (:block/refs e) result' (if (and (string? result) refs) (db-content/id-ref->title-ref result refs) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 0000ed652f..0caf41d26b 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -8,6 +8,7 @@ [lambdaisland.glogi :as log] [logseq.common.config :as common-config] [logseq.db :as ldb] + [logseq.db.frontend.content :as db-content] [missionary.core :as m])) ;;; TODOs: @@ -78,7 +79,7 @@ (filter (stale-block-filter-preds reset?)) (map (fn [b] (assoc b :block.temp/text-to-embedding - (str (:block/title b) + (str (db-content/recur-replace-uuid-in-block-title b) (let [tags (->> (:block/tags b) (map :block/title))] (when (seq tags) @@ -136,10 +137,6 @@ (let [conn (worker-state/get-datascript-conn repo) embedding-model-name (ldb/get-key-value @conn :logseq.kv/graph-text-embedding-model-name)] (case embedding-model-name - "Xenova/all-MiniLM-L6-v2" - 2000 - "Xenova/jina-embeddings-v2-base-zh" - 500 "onnx-community/Qwen3-Embedding-0.6B-ONNX" 100 500))) From d488c53fd697dff4013193e59eebeca9360f2890 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 23 Jul 2025 22:12:20 +0800 Subject: [PATCH 62/93] adjust page/object sorting weight --- deps/outliner/src/logseq/outliner/core.cljs | 2 +- .../src/logseq/outliner/pipeline.cljs | 13 ++++--- src/main/frontend/components/settings.cljs | 2 +- src/main/frontend/worker/embedding.cljs | 18 +++++---- src/main/frontend/worker/search.cljs | 38 ++++++++++--------- src/resources/dicts/en.edn | 1 + 6 files changed, 41 insertions(+), 33 deletions(-) diff --git a/deps/outliner/src/logseq/outliner/core.cljs b/deps/outliner/src/logseq/outliner/core.cljs index 7c63af3ed1..e60d2665f5 100644 --- a/deps/outliner/src/logseq/outliner/core.cljs +++ b/deps/outliner/src/logseq/outliner/core.cljs @@ -251,7 +251,7 @@ collapse-or-expand? (= outliner-op :collapse-expand-blocks) m* (cond-> (-> data' - (dissoc :block/children :block/meta :block/unordered + (dissoc :block/children :block/meta :block/unordered :block/path-refs :block.temp/ast-title :block.temp/ast-body :block/level :block.temp/load-status :block.temp/has-children?) common-util/remove-nils diff --git a/deps/outliner/src/logseq/outliner/pipeline.cljs b/deps/outliner/src/logseq/outliner/pipeline.cljs index 9dbb1f80ee..a232d245e2 100644 --- a/deps/outliner/src/logseq/outliner/pipeline.cljs +++ b/deps/outliner/src/logseq/outliner/pipeline.cljs @@ -50,7 +50,7 @@ (recur (into parent-refs (:block-ref-ids parent)) (:parent-id parent)) ;; exits when top-level parent is reached - parent-refs)))}) + (remove nil? parent-refs))))}) children-maps)] children-refs)) @@ -87,10 +87,13 @@ old-refs (if db-before (set (map :db/id (:block/path-refs (d/entity db-before (:db/id block))))) #{}) - new-refs (set (concat - (some-> (:db/id (:block/page block)) vector) - (map :db/id (:block/refs block)) - parents-refs)) + new-refs (->> + (concat + (some-> (:db/id (:block/page block)) vector) + (map :db/id (:block/refs block)) + parents-refs) + (remove nil?) + set) refs-changed? (not= old-refs new-refs) children (when refs-changed? (when-not page? diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index bd819bb470..17d19b7dd4 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -1258,7 +1258,7 @@ (for [model-name (:available-model-names model-info)] (shui/select-item {:value model-name} model-name))))) - (when status + (when (and status current-model) [:div.text-muted-foreground.text-sm (let [{:keys [file progress loaded total]} load-model-progress] (case status diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 0caf41d26b..1ab93da469 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -79,14 +79,16 @@ (filter (stale-block-filter-preds reset?)) (map (fn [b] (assoc b :block.temp/text-to-embedding - (str (db-content/recur-replace-uuid-in-block-title b) - (let [tags (->> (:block/tags b) - (map :block/title))] - (when (seq tags) - (str " tags: " (string/join ", " tags)))) - (when-let [desc (:block/title (:logseq.property/description b))] - (str " description: " desc)))))))))) - + (db-content/recur-replace-uuid-in-block-title b) + ;; FIXME: tags and properties can affect sorting + ;; (str (db-content/recur-replace-uuid-in-block-title b) + ;; (let [tags (->> (:block/tags b) + ;; (map :block/title))] + ;; (when (seq tags) + ;; (str " " (string/join ", " (map (fn [t] (str "#" t)) tags))))) + ;; (when-let [desc (:block/title (:logseq.property/description b))] + ;; (str "\nDescription: " desc))) + ))))))) (defn- partition-by-text-size [text-size] (let [*current-size (volatile! 0) diff --git a/src/main/frontend/worker/search.cljs b/src/main/frontend/worker/search.cljs index 4952229cd1..41017b9c33 100644 --- a/src/main/frontend/worker/search.cljs +++ b/src/main/frontend/worker/search.cljs @@ -299,37 +299,39 @@ DROP TRIGGER IF EXISTS blocks_au; (exact-matched? q title))))))))) ;; Combine and re-rank results -(defn combine-results [keyword-results semantic-results] +(defn combine-results + [db keyword-results semantic-results] (let [;; Extract score ranges for normalization keyword-scores (map :keyword-score keyword-results) - semantic-scores (map :semantic-score semantic-results) k-min (if (seq keyword-scores) (apply min keyword-scores) 0.0) k-max (if (seq keyword-scores) (apply max keyword-scores) 1.0) - s-min (if (seq semantic-scores) (apply min semantic-scores) 0.0) - s-max (if (seq semantic-scores) (apply max semantic-scores) 1.0) - ;; Merge results by ID all-ids (set/union (set (map :id keyword-results)) (set (map :id semantic-results))) merged (map (fn [id] - (let [k-result (first (filter #(= (:id %) id) keyword-results)) + (let [block (when id (d/entity db [:block/uuid (uuid id)])) + k-result (first (filter #(= (:id %) id) keyword-results)) s-result (first (filter #(= (:id %) id) semantic-results)) + result (merge s-result k-result) k-score (or (:keyword-score k-result) 0.0) s-score (or (:semantic-score s-result) 0.0) norm-k-score (normalize-score k-score k-min k-max) - norm-s-score (normalize-score s-score s-min s-max) ;; Weighted combination combined-score (+ (* (:keyword-weight config) norm-k-score) - (* (:semantic-weight config) norm-s-score))] - (merge k-result - s-result - {:id id - :combined-score combined-score + (* (:semantic-weight config) s-score) + (cond + (ldb/page? block) + 1 + (:block/tags block) + 0.02 + :else + 0))] + (merge result + {:combined-score combined-score :keyword-score k-score :semantic-score s-score}))) - all-ids)] - ;; Sort by combined score - (prn :debug :merged (sort-by :combined-score #(compare %2 %1) merged)) - (sort-by :combined-score #(compare %2 %1) merged))) + all-ids) + sorted-result (sort-by :combined-score #(compare %2 %1) merged)] + sorted-result)) (defn search-blocks "Options: @@ -365,7 +367,7 @@ DROP TRIGGER IF EXISTS blocks_au; (search-blocks-aux search-db match-sql q match-input page limit enable-snippet?)) non-match-result (when (and (not page-only?) non-match-input) (search-blocks-aux search-db non-match-sql q non-match-input page limit enable-snippet?)) - ;; fuzzy is too slow for large graphs + ;; fuzzy is too slow for large graphs fuzzy-result (when-not (or page large-graph?) (fuzzy-search repo @conn q option)) semantic-search-result* (m/? (embedding/task--search repo q 10)) semantic-search-result (->> semantic-search-result* @@ -377,7 +379,7 @@ DROP TRIGGER IF EXISTS blocks_au; :semantic-score (/ 1.0 (+ 1.0 distance))} page-id (assoc :page page-id)))))) - combined-result (combine-results (concat fuzzy-result matched-result) semantic-search-result) + combined-result (combine-results @conn (concat fuzzy-result matched-result) semantic-search-result) result (->> (concat combined-result non-match-result) (common-util/distinct-by :id) diff --git a/src/resources/dicts/en.edn b/src/resources/dicts/en.edn index f89424ca4a..65a8c53387 100644 --- a/src/resources/dicts/en.edn +++ b/src/resources/dicts/en.edn @@ -214,6 +214,7 @@ :context-menu/template-include-parent-block "Including the parent block in the template?" :context-menu/template-exists-warning "Template already exists!" :settings-page/ai "AI" + :settings-page/tab-ai "AI" :settings-page/git-tip "If you have Logseq Sync enabled, you can view a page's edit history directly. This section is for tech-savvy only." :settings-page/git-desc-1 "To view page's edit history, click the three horizontal dots in the top-right corner and select \"View page history\"." :settings-page/git-desc-2 "For professional users, Logseq also supports using " From 65afa1e76275457038d01dfae576b6282a77cb28 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 28 Jul 2025 12:20:11 +0800 Subject: [PATCH 63/93] fix: lint --- src/main/frontend/components/settings.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index 17d19b7dd4..ef16fb71d4 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -1315,7 +1315,7 @@ [:keymap "keymap" (t :settings-page/tab-keymap) (ui/icon "keyboard")] (when db-based? - [:ai "AI" (t :settings-page/ai) (ui/icon "wand")]) + [:ai (t :settings-page/tabs-ai) (t :settings-page/ai) (ui/icon "wand")]) (when (util/electron?) [:version-control "git" (t :settings-page/tab-version-control) (ui/icon "history")]) From 44d6c127310098d9dd2ac3a8d459f00051f0e86d Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 28 Jul 2025 12:21:35 +0800 Subject: [PATCH 64/93] update output-feature-set to es-next-in --- shadow-cljs.edn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 02fa512cd5..fa7352ecd7 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -131,7 +131,7 @@ :asset-path "./js" :release {:asset-path "http://localhost"} :compiler-options {:infer-externs :auto - :output-feature-set :es-2020 + :output-feature-set :es-next-in :source-map true :externs ["datascript/externs.js" "externs.js"] @@ -220,7 +220,7 @@ :closure-defines {logseq.common.config/PUBLISHING true goog.debug.LOGGING_ENABLED true} :compiler-options {:infer-externs :auto - :output-feature-set :es-2020 + :output-feature-set :es-next-in :source-map true :externs ["datascript/externs.js" "externs.js"] From c71e51bc785e4c3fd047c3293e4665b04b981e5b Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 28 Jul 2025 12:23:56 +0800 Subject: [PATCH 65/93] add webpack to release-mobile --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9a234ce9e9..63694a53a4 100644 --- a/package.json +++ b/package.json @@ -55,10 +55,10 @@ "dev": "run-p gulp:watch gulp:mobile-watch cljs:dev-watch webpack", "release": "run-s gulp:build cljs:release webpack-build", "release-app": "run-s gulp:build cljs:release-app webpack-build", - "release-mobile": "run-s gulp:buildMobile cljs:release-mobile", - "dev-release-app": "run-s gulp:build cljs:dev-release-app", + "release-mobile": "run-s gulp:buildMobile cljs:release-mobile webpack-build", + "dev-release-app": "run-s gulp:build cljs:dev-release-app webpack-build", "dev-electron-app": "gulp electron", - "release-electron": "run-s gulp:build && gulp electronMaker", + "release-electron": "run-s gulp:build && gulp electronMaker webpack-build", "debug-electron": "cd static/ && yarn electron:debug", "webpack": "webpack --watch", "webpack-build": "npx webpack build", From dcd6d741460a2e94c3a8a436557b56d63790530d Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 28 Jul 2025 12:26:49 +0800 Subject: [PATCH 66/93] fix: typo --- src/main/frontend/components/settings.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index ef16fb71d4..8780728b59 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -1315,7 +1315,7 @@ [:keymap "keymap" (t :settings-page/tab-keymap) (ui/icon "keyboard")] (when db-based? - [:ai (t :settings-page/tabs-ai) (t :settings-page/ai) (ui/icon "wand")]) + [:ai (t :settings-page/tab-ai) (t :settings-page/ai) (ui/icon "wand")]) (when (util/electron?) [:version-control "git" (t :settings-page/tab-version-control) (ui/icon "history")]) From af33e6964bb75fc6081878b9d01135832a63553d Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 28 Jul 2025 12:30:30 +0800 Subject: [PATCH 67/93] fix: ns --- src/main/frontend/worker/rtc/ws_util.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/worker/rtc/ws_util.cljs b/src/main/frontend/worker/rtc/ws_util.cljs index ae0fa6ddc9..f45ed4981b 100644 --- a/src/main/frontend/worker/rtc/ws_util.cljs +++ b/src/main/frontend/worker/rtc/ws_util.cljs @@ -1,12 +1,12 @@ (ns frontend.worker.rtc.ws-util "Add RTC related logic to the function based on ws." (:require [cljs-http-missionary.client :as http] + [frontend.worker-common.util :as worker-util] [frontend.worker.rtc.db :as rtc-db] [frontend.worker.rtc.exception :as r.ex] [frontend.worker.rtc.malli-schema :as rtc-schema] [frontend.worker.rtc.ws :as ws] [frontend.worker.state :as worker-state] - [frontend.worker.util :as worker-util] [goog.string :as gstring] [logseq.graph-parser.utf8 :as utf8] [missionary.core :as m])) From 18914d2fa2684f4d43cb5a265e4bda521e4f6ff8 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 28 Jul 2025 12:43:24 +0800 Subject: [PATCH 68/93] fix: add workers to mobile and electron release --- .github/workflows/clj-e2e.yml | 2 +- .github/workflows/clj-rtc-e2e.yml | 2 +- .github/workflows/deploy-db-test-pages.yml | 2 +- package.json | 4 ++-- scripts/src/logseq/tasks/dev.clj | 20 ++++++++++---------- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/clj-e2e.yml b/.github/workflows/clj-e2e.yml index 4b66342063..3cd5a9c8c1 100644 --- a/.github/workflows/clj-e2e.yml +++ b/.github/workflows/clj-e2e.yml @@ -78,7 +78,7 @@ jobs: # NOTE: require the app to be build with DEV-RELEASE flag - name: Prepare E2E test build run: | - yarn gulp:build && clojure -M:cljs release app --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug + yarn gulp:build && clojure -M:cljs release app --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-build - name: Run e2e tests run: cd clj-e2e && timeout 30m bb dev diff --git a/.github/workflows/clj-rtc-e2e.yml b/.github/workflows/clj-rtc-e2e.yml index 2e1d195270..c2685deeb1 100644 --- a/.github/workflows/clj-rtc-e2e.yml +++ b/.github/workflows/clj-rtc-e2e.yml @@ -79,7 +79,7 @@ jobs: # NOTE: require the app to be build with DEV-RELEASE flag - name: Prepare E2E test build run: | - yarn gulp:build && clojure -M:cljs release app --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug + yarn gulp:build && clojure -M:cljs release app --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-build rsync -avz --exclude node_modules --exclude android --exclude ios ./static/ ./public/ ls -lR ./public diff --git a/.github/workflows/deploy-db-test-pages.yml b/.github/workflows/deploy-db-test-pages.yml index 00e74dbffe..d7b8051d0f 100644 --- a/.github/workflows/deploy-db-test-pages.yml +++ b/.github/workflows/deploy-db-test-pages.yml @@ -42,7 +42,7 @@ jobs: - name: Build Released-Web run: | - yarn gulp:build && clojure -M:cljs release app --config-merge '{:compiler-options {:source-map true :source-map-include-sources-content true :source-map-detail-level :symbols}}' + yarn gulp:build && clojure -M:cljs release app --config-merge '{:compiler-options {:source-map true :source-map-include-sources-content true :source-map-detail-level :symbols}}' && yarn webpack-build rsync -avz --exclude node_modules --exclude android --exclude ios ./static/ ./public/ ls -lR ./public && mkdir r2 && mv ./public/js/main.js.map ./r2/db-test.main.js.map sed -i 's/=main.js.map/=https:\/\/assets.logseq.io\/db-test.main.js.map/g' ./public/js/main.js diff --git a/package.json b/package.json index 63694a53a4..212b153bf5 100644 --- a/package.json +++ b/package.json @@ -78,8 +78,8 @@ "gulp:mobile-watch": "gulp watchMobile", "css:mobile-build": "postcss tailwind.mobile.css -o static/mobile/style.css --verbose --env production", "css:mobile-watch": "cross-env TAILWIND_MODE=watch postcss tailwind.mobile.css -o static/mobile/style.css --verbose --watch", - "cljs:mobile-watch": "clojure -M:cljs watch mobile", - "cljs:release-mobile": "clojure -M:cljs release mobile", + "cljs:mobile-watch": "clojure -M:cljs watch mobile workers", + "cljs:release-mobile": "clojure -M:cljs release mobile workers", "cljs:dev-watch": "clojure -M:cljs watch app workers electron mobile", "cljs:app-watch": "clojure -M:cljs watch app workers", "cljs:electron-watch": "clojure -M:cljs watch app workers electron --config-merge \"{:asset-path \\\"./js\\\"}\"", diff --git a/scripts/src/logseq/tasks/dev.clj b/scripts/src/logseq/tasks/dev.clj index 1cc71cb551..a738329041 100644 --- a/scripts/src/logseq/tasks/dev.clj +++ b/scripts/src/logseq/tasks/dev.clj @@ -1,17 +1,17 @@ (ns logseq.tasks.dev "Tasks for general development. For desktop or mobile development see their namespaces" - (:require [babashka.process :refer [shell]] + (:require [babashka.cli :as cli] [babashka.fs :as fs] - [babashka.cli :as cli] - [logseq.tasks.util :as task-util] - [logseq.tasks.dev.lint :as dev-lint] + [babashka.process :refer [shell]] + [clojure.core.async :as async] + [clojure.data :as data] + [clojure.edn :as edn] [clojure.java.io :as io] [clojure.pprint :as pp] - [clojure.edn :as edn] - [clojure.data :as data] - [clojure.core.async :as async] - [clojure.string :as string])) + [clojure.string :as string] + [logseq.tasks.dev.lint :as dev-lint] + [logseq.tasks.util :as task-util])) (defn test "Run tests. Pass args through to cmd 'yarn cljs:run-test'" @@ -75,7 +75,7 @@ (fs/glob "." "{src/main,deps/graph-parser/src}/**")))))] (do (println "Building publishing js asset...") - (shell "clojure -M:cljs release publishing")) + (shell "clojure -M:cljs release publishing workers")) (println "Publishing js asset is up to date"))) (defn publishing-backend @@ -110,4 +110,4 @@ (let [db-graph (fs/path parent-graph-dir (fs/file-name file-graph))] (println "Importing" (str db-graph) "...") (apply shell "bb" "dev:db-import" file-graph db-graph import-options) - (shell "bb" "dev:validate-db" db-graph "-gHc"))))) \ No newline at end of file + (shell "bb" "dev:validate-db" db-graph "-gHc"))))) From 0c3697e972319c5bb07c2b2347751a7340d144f6 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 28 Jul 2025 12:50:06 +0800 Subject: [PATCH 69/93] fix: add workers to rtc test workflow --- .github/workflows/clj-e2e.yml | 2 +- .github/workflows/clj-rtc-e2e.yml | 2 +- .github/workflows/deploy-db-test-pages.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/clj-e2e.yml b/.github/workflows/clj-e2e.yml index 3cd5a9c8c1..7c61e9b6f9 100644 --- a/.github/workflows/clj-e2e.yml +++ b/.github/workflows/clj-e2e.yml @@ -78,7 +78,7 @@ jobs: # NOTE: require the app to be build with DEV-RELEASE flag - name: Prepare E2E test build run: | - yarn gulp:build && clojure -M:cljs release app --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-build + yarn gulp:build && clojure -M:cljs release app workers --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-build - name: Run e2e tests run: cd clj-e2e && timeout 30m bb dev diff --git a/.github/workflows/clj-rtc-e2e.yml b/.github/workflows/clj-rtc-e2e.yml index c2685deeb1..63dd059aa3 100644 --- a/.github/workflows/clj-rtc-e2e.yml +++ b/.github/workflows/clj-rtc-e2e.yml @@ -79,7 +79,7 @@ jobs: # NOTE: require the app to be build with DEV-RELEASE flag - name: Prepare E2E test build run: | - yarn gulp:build && clojure -M:cljs release app --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-build + yarn gulp:build && clojure -M:cljs release app workers --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-build rsync -avz --exclude node_modules --exclude android --exclude ios ./static/ ./public/ ls -lR ./public diff --git a/.github/workflows/deploy-db-test-pages.yml b/.github/workflows/deploy-db-test-pages.yml index d7b8051d0f..4147606248 100644 --- a/.github/workflows/deploy-db-test-pages.yml +++ b/.github/workflows/deploy-db-test-pages.yml @@ -42,7 +42,7 @@ jobs: - name: Build Released-Web run: | - yarn gulp:build && clojure -M:cljs release app --config-merge '{:compiler-options {:source-map true :source-map-include-sources-content true :source-map-detail-level :symbols}}' && yarn webpack-build + yarn gulp:build && clojure -M:cljs release app workers --config-merge '{:compiler-options {:source-map true :source-map-include-sources-content true :source-map-detail-level :symbols}}' && yarn webpack-build rsync -avz --exclude node_modules --exclude android --exclude ios ./static/ ./public/ ls -lR ./public && mkdir r2 && mv ./public/js/main.js.map ./r2/db-test.main.js.map sed -i 's/=main.js.map/=https:\/\/assets.logseq.io\/db-test.main.js.map/g' ./public/js/main.js From 7f18e941d0f7f369bd62e1d20b7c233d06f6c09a Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 28 Jul 2025 16:26:56 +0800 Subject: [PATCH 70/93] separate config for app and mobile --- resources/mobile/index.html | 1 + shadow-cljs.edn | 10 ++++++-- webpack.config.js | 48 +++++++++++++++++++++++++++---------- 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/resources/mobile/index.html b/resources/mobile/index.html index 411ee6744d..7f6ee8cba1 100644 --- a/resources/mobile/index.html +++ b/resources/mobile/index.html @@ -36,6 +36,7 @@ const portal = new MagicPortal(worker); + -