Browse Source

fix(build): rm parser-worker patch

Andelf 4 years ago
parent
commit
3d12402b6a
4 changed files with 18 additions and 15 deletions
  1. 3 3
      package.json
  2. 1 2
      shadow-cljs.edn
  3. 14 4
      src/main/frontend/util/pool.cljs
  4. 0 6
      templates/patch.parser.worker.js

+ 3 - 3
package.json

@@ -48,9 +48,9 @@
         "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": "TAILWIND_MODE=watch postcss tailwind.all.css -o static/css/style.css --verbose --watch",
-        "cljs:watch": "PATCH_PARSER_WORKER=$(cat \"./templates/patch.parser.worker.js\" | sed -e \"s#PWD_ROOT#`pwd`#g\") clojure -M:cljs watch parser-worker app electron",
-        "cljs:app-watch": "PATCH_PARSER_WORKER=$(cat \"./templates/patch.parser.worker.js\" | sed -e \"s#PWD_ROOT#`pwd`#g\") clojure -M:cljs watch parser-worker app",
-        "cljs:electron-watch": "PATCH_PARSER_WORKER=$(cat \"./templates/patch.parser.worker.js\" | sed -e \"s#PWD_ROOT#`pwd`#g\") clojure -M:cljs watch parser-worker app electron",
+        "cljs:watch": "clojure -M:cljs watch parser-worker app electron",
+        "cljs:app-watch": "clojure -M:cljs watch parser-worker app",
+        "cljs:electron-watch": "clojure -M:cljs watch parser-worker app electron",
         "cljs:release": "clojure -M:cljs release parser-worker app publishing electron",
         "cljs:release-electron": "clojure -M:cljs release parser-worker app publishing electron --debug",
         "cljs:release-app": "clojure -M:cljs release parser-worker app",

+ 1 - 2
shadow-cljs.edn

@@ -63,8 +63,7 @@
                   :asset-path       "./js"
                   :compiler-options {:source-map false}
                   :modules          {:parser-worker {:entries    [frontend.worker.parser]
-                                                     :web-worker true
-                                                     :prepend    #shadow/env ["PATCH_PARSER_WORKER" :default ";;"]}}
+                                                     :web-worker true}}
                   :release          {:compiler-options {:infer-externs :auto}}}
 
   :test {:target          :node-test

+ 14 - 4
src/main/frontend/util/pool.cljs

@@ -3,18 +3,30 @@
             [frontend.config :as config]
             [frontend.util :as util]
             [promesa.core :as p]
+            [clojure.string :as string]
             ["threads" :refer [Pool Worker spawn]]
             [frontend.mobile.util :as mobile-util]))
 
 (defonce parser-pool (atom nil))
 
+(defn- absolute-path-for-worker
+  "Returns the absolute path to the worker file, on Windows.
+
+   NOTE: This is a bug in threads.js.
+   See-also: https://github.com/andywer/threads.js/blob/8f94053f028b0d4e4fb1fdec535867f6d0e23946/src/master/implementation.browser.ts#L10"
+  [path]
+  (if util/win32?
+    (-> path
+        (p/then #(str "//./" (string/replace % "\\" "/"))))
+    path))
+
 (defn create-parser-pool!
   ([]
    (create-parser-pool! 8))
   ([num]
    (p/let [static-path (if (and (util/electron?)
                                 (= "file:" (.-protocol js/location)))
-                         (ipc/ipc :getDirname)
+                         (absolute-path-for-worker (ipc/ipc :getDirname))
                          "/static")
            path (str static-path "/js/parser-worker.js")
            path (if (or (util/electron?)
@@ -68,6 +80,4 @@
 
 (comment
   (add-parse-job! "- hello" (frontend.format.mldoc/default-config :markdown))
-  (add-parse-job! "*world*" (frontend.format.mldoc/default-config :markdown))
-
-  )
+  (add-parse-job! "*world*" (frontend.format.mldoc/default-config :markdown)))

+ 0 - 6
templates/patch.parser.worker.js

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