From c4a92c2657e3740163ba819aea5525dfb7aa1d3b Mon Sep 17 00:00:00 2001 From: charlie Date: Thu, 19 Aug 2021 17:16:06 +0800 Subject: [PATCH] fix(dev): import cljs runtime scripts for parser worker base on file:// --- package.json | 2 +- resources/index.html | 61 ++++++++++++++++++++++++++++++++ src/electron/electron/core.cljs | 24 ++++++++----- src/main/frontend/util/pool.cljs | 2 +- templates/patch.parser.woker.js | 6 ++++ 5 files changed, 84 insertions(+), 11 deletions(-) create mode 100644 resources/index.html create mode 100644 templates/patch.parser.woker.js diff --git a/package.json b/package.json index 30d53c44f..bd2965305 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "css:build": "postcss tailwind.all.css -o static/css/style.css --verbose --env production", "css:watch": "TAILWIND_MODE=watch postcss tailwind.all.css -o static/css/style.css --verbose --watch", "cljs:watch": "clojure -M:cljs watch parser-worker app electron", - "cljs:electron-watch": "clojure -M:cljs watch parser-worker app electron", + "cljs:electron-watch": "PWD=$(pwd) PATCH_PARSER_WORKER=$(cat \"./templates/patch.parser.woker.js\" | sed -e \"s#PWD_ROOT#${PWD}#g\") clojure -M:cljs watch parser-worker app electron", "cljs:release": "clojure -M:cljs release parser-worker app publishing electron", "cljs:test": "clojure -M:test compile test", "cljs:run-test": "node static/tests.js", diff --git a/resources/index.html b/resources/index.html new file mode 100644 index 000000000..44faadf00 --- /dev/null +++ b/resources/index.html @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Logseq: A privacy-first platform for knowledge management and collaboration + + + + +
+ + + + + + + + + + + + + + diff --git a/src/electron/electron/core.cljs b/src/electron/electron/core.cljs index d9322b8c2..c053308c8 100644 --- a/src/electron/electron/core.cljs +++ b/src/electron/electron/core.cljs @@ -15,14 +15,16 @@ [clojure.core.async :as async] [electron.state :as state])) -(defonce PLUGIN_SCHEME "lsp") -(defonce PLUGIN_PROTOCOL (str PLUGIN_SCHEME "://")) -(defonce PLUGIN_URL (str PLUGIN_PROTOCOL "logseq.io/")) +(defonce LSP_SCHEME "lsp") +(defonce LSP_PROTOCOL (str LSP_SCHEME "://")) +(defonce PLUGIN_URL (str LSP_PROTOCOL "logseq.io/")) +(defonce STATIC_URL (str LSP_PROTOCOL "logseq.com/")) (defonce PLUGINS_ROOT (.join path (.homedir os) ".logseq/plugins")) (def ROOT_PATH (path/join js/__dirname "..")) (def MAIN_WINDOW_ENTRY (if dev? - "http://localhost:3001" + ;;"http://localhost:3001" + (str "file://" (path/join js/__dirname "index.html")) (str "file://" (path/join js/__dirname "electron.html")))) (defonce *setup-fn (volatile! nil)) @@ -78,17 +80,21 @@ (callback #js {:path path})))) (.registerFileProtocol - protocol PLUGIN_SCHEME + protocol LSP_SCHEME (fn [^js request callback] (let [url (.-url request) - path' (string/replace url PLUGIN_URL "") + [URL ROOT] (if (string/starts-with? url PLUGIN_URL) + [PLUGIN_URL PLUGINS_ROOT] + [STATIC_URL js/__dirname]) + + path' (string/replace url URL "") path' (js/decodeURIComponent path') - path' (.join path PLUGINS_ROOT path')] + path' (.join path ROOT path')] (callback #js {:path path'})))) #(do - (.unregisterProtocol protocol PLUGIN_SCHEME) + (.unregisterProtocol protocol LSP_SCHEME) (.unregisterProtocol protocol "assets"))) (defn- handle-export-publish-assets [_event html custom-css-path repo-path asset-filenames] @@ -223,7 +229,7 @@ (.quit app)) (do (.registerSchemesAsPrivileged - protocol (bean/->js [{:scheme PLUGIN_SCHEME + protocol (bean/->js [{:scheme LSP_SCHEME :privileges {:standard true :secure true :supportFetchAPI true}}])) diff --git a/src/main/frontend/util/pool.cljs b/src/main/frontend/util/pool.cljs index 54ea4e89a..1430339ed 100644 --- a/src/main/frontend/util/pool.cljs +++ b/src/main/frontend/util/pool.cljs @@ -12,7 +12,7 @@ ([] (create-parser-pool! 8)) ([num] - (p/let [static-path (if (and (util/electron?) (not config/dev?)) + (p/let [static-path (if (util/electron?) (ipc/ipc :getDirname) "/static")] (Pool. diff --git a/templates/patch.parser.woker.js b/templates/patch.parser.woker.js new file mode 100644 index 000000000..f0be5c419 --- /dev/null +++ b/templates/patch.parser.woker.js @@ -0,0 +1,6 @@ +const originImportScripts = globalThis.importScripts +const importScripts = (url) => { + originImportScripts( + (location.href.startsWith('blob') ? 'file://PWD_ROOT/static/js/' : '') + url + ) +};; \ No newline at end of file