From d4d8b1a7e623a483136fc64796d2ee2df2f28a10 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Sun, 28 Dec 2025 14:28:44 +0800 Subject: [PATCH] fix: add shadow-cljs.edn for publish worker --- deps.edn | 6 +- deps/db/src/logseq/db/common/entity_plus.cljc | 24 +++--- deps/publish/deps.edn | 22 ++++- deps/publish/package.json | 9 +- deps/publish/shadow-cljs.edn | 12 +++ deps/publish/src/logseq/publish/worker.cljs | 20 ++--- deps/publish/worker/wrangler.toml | 1 + deps/publish/yarn.lock | 84 +++++++++++++++++++ package.json | 2 +- shadow-cljs.edn | 9 +- src/main/frontend/common/missionary.cljs | 3 + 11 files changed, 149 insertions(+), 43 deletions(-) create mode 100644 deps/publish/shadow-cljs.edn create mode 100644 deps/publish/yarn.lock diff --git a/deps.edn b/deps.edn index 2c5b565204..b07329829e 100644 --- a/deps.edn +++ b/deps.edn @@ -30,7 +30,6 @@ expound/expound {:mvn/version "0.8.6"} com.lambdaisland/glogi {:git/url "https://github.com/lambdaisland/glogi" :git/sha "30328a045141717aadbbb693465aed55f0904976"} - binaryage/devtools {:mvn/version "1.0.5"} camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.3"} instaparse/instaparse {:mvn/version "1.4.10"} org.clojars.mmb90/cljs-cache {:mvn/version "0.1.4"} @@ -38,7 +37,6 @@ logseq/common {:local/root "deps/common"} logseq/graph-parser {:local/root "deps/graph-parser"} logseq/outliner {:local/root "deps/outliner"} - logseq/publish {:local/root "deps/publish"} logseq/publishing {:local/root "deps/publishing"} logseq/cli {:local/root "deps/cli"} logseq/shui {:local/root "deps/shui"} @@ -57,9 +55,9 @@ :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"}} + tortue/spy {:mvn/version "2.14.0"} + binaryage/devtools {:mvn/version "1.0.5"}} :main-opts ["-m" "shadow.cljs.devtools.cli"]} - :test {:extra-paths ["src/test/"] :extra-deps {org.clojure/test.check {:mvn/version "1.1.1"} pjstadig/humane-test-output {:mvn/version "0.11.0"} diff --git a/deps/db/src/logseq/db/common/entity_plus.cljc b/deps/db/src/logseq/db/common/entity_plus.cljc index 85b02552ce..9266589c74 100644 --- a/deps/db/src/logseq/db/common/entity_plus.cljc +++ b/deps/db/src/logseq/db/common/entity_plus.cljc @@ -53,25 +53,21 @@ [] (vreset! *seen-immutable-entities {})) -(def ^:private *reset-cache-background-task-running? - ;; missionary is not compatible with nbb, so entity-memoized is disabled in nbb - (delay - ;; FIXME: Correct dependency ordering instead of resolve workaround - #?(:org.babashka/nbb false - :cljs (when-let [f (resolve 'frontend.common.missionary/background-task-running?)] - (f :logseq.db.common.entity-plus/reset-immutable-entities-cache!))))) +(defonce *reset-cache-background-task-running-f (atom nil)) (defn entity-memoized [db eid] (if (and (qualified-keyword? eid) (not (exists? js/process))) ; don't memoize on node (when-not (contains? nil-db-ident-entities eid) ;fast return nil - (if (and @*reset-cache-background-task-running? - (contains? immutable-db-ident-entities eid)) ;return cache entity if possible which isn't nil - (or (get @*seen-immutable-entities eid) - (let [r (d/entity db eid)] - (when r (vswap! *seen-immutable-entities assoc eid r)) - r)) - (d/entity db eid))) + (let [f @*reset-cache-background-task-running-f] + (if (and (fn? f) + (f :logseq.db.common.entity-plus/reset-immutable-entities-cache!) + (contains? immutable-db-ident-entities eid)) ;return cache entity if possible which isn't nil + (or (get @*seen-immutable-entities eid) + (let [r (d/entity db eid)] + (when r (vswap! *seen-immutable-entities assoc eid r)) + r)) + (d/entity db eid)))) (d/entity db eid))) (defn unsafe->Entity diff --git a/deps/publish/deps.edn b/deps/publish/deps.edn index d10302cd6f..3978f821a5 100644 --- a/deps/publish/deps.edn +++ b/deps/publish/deps.edn @@ -1,6 +1,24 @@ {:deps - {} + {org.clojure/clojure {:mvn/version "1.11.1"} + rum/rum {:git/url "https://github.com/logseq/rum" ;; fork + :sha "5d672bf84ed944414b9f61eeb83808ead7be9127"} + + datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork + :sha "ff5a7d5326e2546f40146e4a489343f557519bc3"} + datascript-transit/datascript-transit {:mvn/version "0.3.0"} + funcool/promesa {:mvn/version "11.0.678"} + thheller/shadow-cljs {:mvn/version "3.3.4"} + logseq/common {:local/root "../common"} + logseq/graph-parser {:local/root "../graph-parser"} + logseq/db {:local/root "../db"} + missionary/missionary {:mvn/version "b.46"} + com.cognitect/transit-cljs {:mvn/version "0.8.280"}} :aliases - {:clj-kondo + {:cljs {: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"]} + :clj-kondo {:replace-deps {clj-kondo/clj-kondo {:mvn/version "2024.09.27"}} :main-opts ["-m" "clj-kondo.main"]}}} diff --git a/deps/publish/package.json b/deps/publish/package.json index ca28bfa59e..f1746bc521 100644 --- a/deps/publish/package.json +++ b/deps/publish/package.json @@ -1,5 +1,12 @@ { "name": "@logseq/publish", "version": "1.0.0", - "private": true + "private": true, + "scripts": { + "watch": "clojure -M:cljs watch publish-worker", + "release": "clojure -M:cljs release publish-worker" + }, + "dependencies": { + "shadow-cljs": "^3.3.4" + } } diff --git a/deps/publish/shadow-cljs.edn b/deps/publish/shadow-cljs.edn new file mode 100644 index 0000000000..396ea96b6e --- /dev/null +++ b/deps/publish/shadow-cljs.edn @@ -0,0 +1,12 @@ +;; shadow-cljs configuration +{:deps true + :http {:port 9631} + :nrepl {:port 8702} + :builds + {:publish-worker {:target :esm + :output-dir "worker/dist/worker" + :modules {:main {:exports {default logseq.publish.worker/worker + PublishMetaDO logseq.publish.worker/PublishMetaDO}}} + :js-options {:js-provider :import} + :closure-defines {shadow.cljs.devtools.client.env/enabled false} + :devtools {:enabled false}}}} diff --git a/deps/publish/src/logseq/publish/worker.cljs b/deps/publish/src/logseq/publish/worker.cljs index aa4694a6ad..fa9dcbe1f9 100644 --- a/deps/publish/src/logseq/publish/worker.cljs +++ b/deps/publish/src/logseq/publish/worker.cljs @@ -291,15 +291,11 @@ (def ref-regex (js/RegExp. "\\[\\[([0-9a-fA-F-]{36})\\]\\]|\\(\\(([0-9a-fA-F-]{36})\\)\\)" "g")) -(defonce inline-configs - {:markdown (gp-mldoc/default-config :markdown) - :org (gp-mldoc/default-config :org)}) +(defonce inline-config + (gp-mldoc/default-config :markdown)) -(defn inline-config [format] - (get inline-configs format (:markdown inline-configs))) - -(defn inline-ast [text format] - (gp-mldoc/inline->edn text (inline-config format))) +(defn inline-ast [text] + (gp-mldoc/inline->edn text inline-config)) (defn content->nodes [content uuid->title graph-uuid] (let [s (or content "") @@ -396,9 +392,9 @@ (:block/title block) (:block/name block) "") - format (keyword (or (:block/format block) :markdown)) + format :markdown ctx (assoc ctx :format format) - ast (inline-ast raw format) + ast (inline-ast raw) content (if (seq ast) (inline->nodes-seq ctx ast) (content->nodes raw (:uuid->title ctx) (:graph-uuid ctx)))] @@ -406,9 +402,7 @@ (defn block-content-from-ref [ref ctx] (let [raw (or (get ref "source_block_content") "") - format (keyword (or (get ref "source_block_format") "markdown")) - ctx (assoc ctx :format format) - ast (inline-ast raw format) + ast (inline-ast raw) content (if (seq ast) (inline->nodes-seq ctx ast) (content->nodes raw (:uuid->title ctx) (:graph-uuid ctx)))] diff --git a/deps/publish/worker/wrangler.toml b/deps/publish/worker/wrangler.toml index 4c276d7106..6dac02dd6e 100644 --- a/deps/publish/worker/wrangler.toml +++ b/deps/publish/worker/wrangler.toml @@ -1,6 +1,7 @@ name = "logseq-publish" main = "dist/worker/main.js" compatibility_date = "2025-02-04" +compatibility_flags = ["nodejs_compat"] # Workers Logs # Docs: https://developers.cloudflare.com/workers/observability/logs/workers-logs/ diff --git a/deps/publish/yarn.lock b/deps/publish/yarn.lock new file mode 100644 index 0000000000..bef063c8df --- /dev/null +++ b/deps/publish/yarn.lock @@ -0,0 +1,84 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +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" + +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== + +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== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +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== + +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.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-3.3.4.tgz#d1593c1ad4eee1ed34f57aa68cdfc5caaf5696d9" + integrity sha512-xZV+Ek5TeQtqcY++Otpto5DW+gXu/znIJjtTZjhfQl1yYxnfQNSyC2pS9/XoI3kmmQza3oY5WA0b45gS7W7W5g== + dependencies: + buffer "^6.0.3" + process "^0.11.10" + readline-sync "^1.4.10" + shadow-cljs-jar "1.3.4" + source-map-support "^0.5.21" + which "^5.0.0" + ws "^8.18.1" + +source-map-support@^0.5.21: + 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@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +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" + +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== diff --git a/package.json b/package.json index be702898c1..0ee4089e00 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "cljs:mobile-watch": "clojure -M:cljs watch mobile db-worker --config-merge \"{:output-dir \\\"./static/mobile/js\\\" :asset-path \\\"/static/mobile/js\\\" :release {:asset-path \\\"http://localhost\\\"}}\"", "cljs:release-mobile": "clojure -M:cljs release mobile db-worker --config-merge \"{:output-dir \\\"./static/mobile/js\\\" :asset-path \\\"/static/mobile/js\\\" :release {:asset-path \\\"http://localhost\\\"}}\"", "cljs:dev-watch": "clojure -M:cljs watch app db-worker inference-worker electron mobile", - "cljs:app-watch": "clojure -M:cljs watch app db-worker inference-worker publish-worker", + "cljs:app-watch": "clojure -M:cljs watch app db-worker inference-worker", "cljs:electron-watch": "clojure -M:cljs watch app db-worker inference-worker electron --config-merge \"{:asset-path \\\"./js\\\"}\"", "cljs:release": "clojure -M:cljs release app db-worker inference-worker publishing electron", "cljs:release-electron": "clojure -M:cljs release app db-worker inference-worker electron --debug && clojure -M:cljs release publishing", diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 732944b6e0..9dcb23828b 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -217,11 +217,4 @@ :entries [logseq.shui.storybook] :output-dir "packages/ui/.storybook/cljs" :devtools {:enabled true} - :compiler-options {:optimizations :simple}} - - :publish-worker {:target :esm - :output-dir "deps/publish/worker/dist/worker" - :modules {:main {:exports {default logseq.publish.worker/worker - PublishMetaDO logseq.publish.worker/PublishMetaDO}}} - :js-options {:js-provider :import} - :devtools {:enabled false}}}} + :compiler-options {:optimizations :simple}}}} diff --git a/src/main/frontend/common/missionary.cljs b/src/main/frontend/common/missionary.cljs index d334fa9651..ad9c068de0 100644 --- a/src/main/frontend/common/missionary.cljs +++ b/src/main/frontend/common/missionary.cljs @@ -4,6 +4,7 @@ (:require [cljs.core.async.impl.channels] [clojure.core.async :as a] [lambdaisland.glogi :as log] + [logseq.db.common.entity-plus :as entity-plus] [missionary.core :as m] [promesa.protocols :as pt]) (:import [missionary Cancelled])) @@ -158,6 +159,8 @@ [key'] (contains? @*background-task-cancelers key')) +(reset! entity-plus/*reset-cache-background-task-running-f background-task-running?) + (comment (defn >! "Return a task that