fix(dev): import cljs runtime scripts for parser worker base on file://

pull/2714/head
charlie 2021-08-19 17:16:06 +08:00
parent 655dd0beae
commit c4a92c2657
5 changed files with 84 additions and 11 deletions

View File

@ -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",

61
resources/index.html Normal file
View File

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="minimum-scale=1, initial-scale=1, width=device-width, shrink-to-fit=no" name="viewport">
<link href="./css/style.css" rel="stylesheet" type="text/css">
<link href="./img/logo.png" rel="shortcut icon" type="image/png">
<link href="./img/logo.png" rel="shortcut icon" sizes="192x192">
<link href="./img/logo.png" rel="apple-touch-icon">
<meta content="Logseq" name="apple-mobile-web-app-title">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="yes" name="apple-touch-fullscreen">
<meta content="black-translucent" name="apple-mobile-web-app-status-bar-style">
<meta content="yes" name="mobile-web-app-capable">
<meta content="summary" name="twitter:card">
<meta content="A privacy-first, open-source platform for knowledge management and collaboration." name="twitter:description">
<meta content="@logseq" name="twitter:site">
<meta content="A privacy-first, open-source platform for knowledge management and collaboration." name="twitter:title">
<meta content="https://asset.logseq.com/static/img/logo.png" name="twitter:image:src">
<meta content="A privacy-first, open-source platform for knowledge management and collaboration." name="twitter:image:alt">
<meta content="A privacy-first, open-source platform for knowledge management and collaboration." property="og:title">
<meta content="site" property="og:type">
<meta content="https://logseq.com" property="og:url">
<meta content="https://asset.logseq.com/static/img/logo.png" property="og:image">
<meta content="A privacy-first, open-source platform for knowledge management and collaboration." property="og:description">
<title>Logseq: A privacy-first platform for knowledge management and collaboration</title>
<meta content="logseq" property="og:site_name">
<meta content="A privacy-first, open-source platform for knowledge management and collaboration." name="description">
</head>
<body>
<div id="root"></div>
<script>window.__LSP__HOST__ = true</script>
<script>window.user = null</script>
<script>
window.EXCALIDRAW_ASSET_PATH = "./js/";
</script>
<script src="./js/magic_portal.js"></script>
<script>let worker = new Worker('./js/worker.js')
const portal = new MagicPortal(worker);
(async () => {
const git = await portal.get('git')
window.git = git
const fs = await portal.get('fs')
window.fs = fs
const pfs = await portal.get('pfs')
window.pfs = pfs
const gitHttp = await portal.get('gitHttp')
window.gitHttp = gitHttp
const workerThread = await portal.get('workerThread')
window.workerThread = workerThread
})()
</script>
<script defer src="./js/highlight.min.js"></script>
<script defer src="./js/interact.min.js"></script>
<script defer src="./js/lsplugin.core.js"></script>
<script defer src="./js/main.js"></script>
<script defer src="./js/code-editor.js"></script>
<script defer src="./js/age-encryption.js"></script>
<script defer src="./js/excalidraw.js"></script>
</body>
</html>

View File

@ -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}}]))

View File

@ -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.

View File

@ -0,0 +1,6 @@
const originImportScripts = globalThis.importScripts
const importScripts = (url) => {
originImportScripts(
(location.href.startsWith('blob') ? 'file://PWD_ROOT/static/js/' : '') + url
)
};;