Просмотр исходного кода

fix: add shadow-cljs.edn for publish worker

Tienson Qin 3 недель назад
Родитель
Сommit
d4d8b1a7e6

+ 2 - 4
deps.edn

@@ -30,7 +30,6 @@
   expound/expound                       {:mvn/version "0.8.6"}
   expound/expound                       {:mvn/version "0.8.6"}
   com.lambdaisland/glogi                {:git/url "https://github.com/lambdaisland/glogi"
   com.lambdaisland/glogi                {:git/url "https://github.com/lambdaisland/glogi"
                                          :git/sha "30328a045141717aadbbb693465aed55f0904976"}
                                          :git/sha "30328a045141717aadbbb693465aed55f0904976"}
-  binaryage/devtools                    {:mvn/version "1.0.5"}
   camel-snake-kebab/camel-snake-kebab   {:mvn/version "0.4.3"}
   camel-snake-kebab/camel-snake-kebab   {:mvn/version "0.4.3"}
   instaparse/instaparse                 {:mvn/version "1.4.10"}
   instaparse/instaparse                 {:mvn/version "1.4.10"}
   org.clojars.mmb90/cljs-cache          {:mvn/version "0.1.4"}
   org.clojars.mmb90/cljs-cache          {:mvn/version "0.1.4"}
@@ -38,7 +37,6 @@
   logseq/common                         {:local/root "deps/common"}
   logseq/common                         {:local/root "deps/common"}
   logseq/graph-parser                   {:local/root "deps/graph-parser"}
   logseq/graph-parser                   {:local/root "deps/graph-parser"}
   logseq/outliner                       {:local/root "deps/outliner"}
   logseq/outliner                       {:local/root "deps/outliner"}
-  logseq/publish                        {:local/root "deps/publish"}
   logseq/publishing                     {:local/root "deps/publishing"}
   logseq/publishing                     {:local/root "deps/publishing"}
   logseq/cli                            {:local/root "deps/cli"}
   logseq/cli                            {:local/root "deps/cli"}
   logseq/shui                           {:local/root "deps/shui"}
   logseq/shui                           {:local/root "deps/shui"}
@@ -57,9 +55,9 @@
                   :extra-deps  {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"}
                                 cider/cider-nrepl                {:mvn/version "0.55.1"}
                                 org.clojars.knubie/cljs-run-test {:mvn/version "1.0.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"]}
                   :main-opts   ["-m" "shadow.cljs.devtools.cli"]}
-
            :test {:extra-paths ["src/test/"]
            :test {:extra-paths ["src/test/"]
                   :extra-deps  {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"}
                                 pjstadig/humane-test-output      {:mvn/version "0.11.0"}

+ 10 - 14
deps/db/src/logseq/db/common/entity_plus.cljc

@@ -53,25 +53,21 @@
   []
   []
   (vreset! *seen-immutable-entities {}))
   (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
 (defn entity-memoized
   [db eid]
   [db eid]
   (if (and (qualified-keyword? eid) (not (exists? js/process))) ; don't memoize on node
   (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
     (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)))
     (d/entity db eid)))
 
 
 (defn unsafe->Entity
 (defn unsafe->Entity

+ 20 - 2
deps/publish/deps.edn

@@ -1,6 +1,24 @@
 {:deps
 {: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
  :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"}}
   {:replace-deps {clj-kondo/clj-kondo {:mvn/version "2024.09.27"}}
    :main-opts  ["-m" "clj-kondo.main"]}}}
    :main-opts  ["-m" "clj-kondo.main"]}}}

+ 8 - 1
deps/publish/package.json

@@ -1,5 +1,12 @@
 {
 {
   "name": "@logseq/publish",
   "name": "@logseq/publish",
   "version": "1.0.0",
   "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"
+  }
 }
 }

+ 12 - 0
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}}}}

+ 7 - 13
deps/publish/src/logseq/publish/worker.cljs

@@ -291,15 +291,11 @@
 (def ref-regex
 (def ref-regex
   (js/RegExp. "\\[\\[([0-9a-fA-F-]{36})\\]\\]|\\(\\(([0-9a-fA-F-]{36})\\)\\)" "g"))
   (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]
 (defn content->nodes [content uuid->title graph-uuid]
   (let [s (or content "")
   (let [s (or content "")
@@ -396,9 +392,9 @@
                 (:block/title block)
                 (:block/title block)
                 (:block/name block)
                 (:block/name block)
                 "")
                 "")
-        format (keyword (or (:block/format block) :markdown))
+        format :markdown
         ctx (assoc ctx :format format)
         ctx (assoc ctx :format format)
-        ast (inline-ast raw format)
+        ast (inline-ast raw)
         content (if (seq ast)
         content (if (seq ast)
                   (inline->nodes-seq ctx ast)
                   (inline->nodes-seq ctx ast)
                   (content->nodes raw (:uuid->title ctx) (:graph-uuid ctx)))]
                   (content->nodes raw (:uuid->title ctx) (:graph-uuid ctx)))]
@@ -406,9 +402,7 @@
 
 
 (defn block-content-from-ref [ref ctx]
 (defn block-content-from-ref [ref ctx]
   (let [raw (or (get ref "source_block_content") "")
   (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)
         content (if (seq ast)
                   (inline->nodes-seq ctx ast)
                   (inline->nodes-seq ctx ast)
                   (content->nodes raw (:uuid->title ctx) (:graph-uuid ctx)))]
                   (content->nodes raw (:uuid->title ctx) (:graph-uuid ctx)))]

+ 1 - 0
deps/publish/worker/wrangler.toml

@@ -1,6 +1,7 @@
 name = "logseq-publish"
 name = "logseq-publish"
 main = "dist/worker/main.js"
 main = "dist/worker/main.js"
 compatibility_date = "2025-02-04"
 compatibility_date = "2025-02-04"
+compatibility_flags = ["nodejs_compat"]
 
 
 # Workers Logs
 # Workers Logs
 # Docs: https://developers.cloudflare.com/workers/observability/logs/workers-logs/
 # Docs: https://developers.cloudflare.com/workers/observability/logs/workers-logs/

+ 84 - 0
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==
+
[email protected]:
+  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==

+ 1 - 1
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: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: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: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: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": "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",
         "cljs:release-electron": "clojure -M:cljs release app db-worker inference-worker electron --debug && clojure -M:cljs release publishing",

+ 1 - 8
shadow-cljs.edn

@@ -217,11 +217,4 @@
                 :entries [logseq.shui.storybook]
                 :entries [logseq.shui.storybook]
                 :output-dir "packages/ui/.storybook/cljs"
                 :output-dir "packages/ui/.storybook/cljs"
                 :devtools {:enabled true}
                 :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}}}}

+ 3 - 0
src/main/frontend/common/missionary.cljs

@@ -4,6 +4,7 @@
   (:require [cljs.core.async.impl.channels]
   (:require [cljs.core.async.impl.channels]
             [clojure.core.async :as a]
             [clojure.core.async :as a]
             [lambdaisland.glogi :as log]
             [lambdaisland.glogi :as log]
+            [logseq.db.common.entity-plus :as entity-plus]
             [missionary.core :as m]
             [missionary.core :as m]
             [promesa.protocols :as pt])
             [promesa.protocols :as pt])
   (:import [missionary Cancelled]))
   (:import [missionary Cancelled]))
@@ -158,6 +159,8 @@
   [key']
   [key']
   (contains? @*background-task-cancelers key'))
   (contains? @*background-task-cancelers key'))
 
 
+(reset! entity-plus/*reset-cache-background-task-running-f background-task-running?)
+
 (comment
 (comment
   (defn >!
   (defn >!
     "Return a task that
     "Return a task that