1
0
Эх сурвалжийг харах

refactor: use webpack only for workers

Tienson Qin 1 сар өмнө
parent
commit
abe03fdaca

+ 1 - 1
.github/workflows/clj-e2e.yml

@@ -78,7 +78,7 @@ jobs:
       # NOTE: require the app to be build with DEV-RELEASE flag
       - name: Prepare E2E test build
         run: |
-          yarn gulp:build && clojure -M:cljs release app workers --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-app-build
+          yarn gulp:build && clojure -M:cljs release app db-worker inference-worker --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-app-build
 
       - name: Run e2e tests
         run: cd clj-e2e && timeout 30m bb dev

+ 1 - 1
.github/workflows/clj-rtc-e2e.yml

@@ -79,7 +79,7 @@ jobs:
       # NOTE: require the app to be build with DEV-RELEASE flag
       - name: Prepare E2E test build
         run: |
-          yarn gulp:build && clojure -M:cljs release app workers --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-app-build
+          yarn gulp:build && clojure -M:cljs release app db-worker inference-worker --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug && yarn webpack-app-build
           rsync -avz --exclude node_modules --exclude android --exclude ios ./static/ ./public/
           ls -lR ./public
 

+ 1 - 1
.github/workflows/deploy-db-test-pages.yml

@@ -42,7 +42,7 @@ jobs:
 
       - name: Build Released-Web
         run: |
-          yarn gulp:build && clojure -M:cljs release app workers  --config-merge '{:compiler-options {:source-map true :source-map-include-sources-content true :source-map-detail-level :symbols}}' && yarn webpack-app-build
+          yarn gulp:build && clojure -M:cljs release app db-worker inference-worker  --config-merge '{:compiler-options {:source-map true :source-map-include-sources-content true :source-map-detail-level :symbols}}' && yarn webpack-app-build
           rsync -avz --exclude node_modules --exclude android --exclude ios --exclude mobile ./static/ ./public/
           ls -lR ./public && mkdir r2 && mv ./public/js/main.js.map ./r2/db-test.main.js.map
           sed -i 's/=main.js.map/=https:\/\/assets.logseq.io\/db-test.main.js.map/g' ./public/js/main.js

+ 0 - 1
deps/publishing/src/logseq/publishing/html.cljs

@@ -124,7 +124,6 @@ necessary db filtering"
             [:script {:src "static/js/react.production.min.js"}]
             [:script {:src "static/js/react-dom.production.min.js"}]
             [:script {:src "static/js/ui.js"}]
-            [:script {:src "static/js/main-bundle.js"}]
             [:script {:src "static/js/main.js"}]
             ;; Deferring scripts above results in errors
             [:script {:defer true :src "static/js/interact.min.js"}]

+ 0 - 2
gulpfile.js

@@ -184,14 +184,12 @@ const common = {
   syncWorkersToMobile () {
     return gulp.src([
       path.join(outputPath, 'js/db-worker.js'),
-      path.join(outputPath, 'js/inference-worker.js'),
     ], { base: outputJsPath }).pipe(gulp.dest(mobileJsPath))
   },
 
   keepSyncWorkersToMobile () {
     return gulp.watch([
       path.join(outputPath, 'js/db-worker.js'),
-      path.join(outputPath, 'js/inference-worker.js'),
     ], { ignoreInitial: false }, common.syncWorkersToMobile)
   },
 

+ 16 - 15
package.json

@@ -40,6 +40,7 @@
         "purgecss": "4.0.2",
         "semver": "7.5.2",
         "shadow-cljs": "2.28.23",
+        "source-map-loader": "^5.0.0",
         "stylelint": "^13.8.0",
         "stylelint-config-standard": "^20.0.0",
         "tailwindcss": "3.3.5",
@@ -51,7 +52,7 @@
     "scripts": {
         "watch": "run-p gulp:watch cljs:watch webpack-app-watch",
         "electron-watch": "run-p gulp:watch cljs:electron-watch webpack-app-watch",
-        "app-watch": "run-p gulp:watch cljs:app-watch webpack-app-watch",
+        "app-watch": "run-p gulp:watch webpack-app-watch cljs:app-watch",
         "mobile-watch": "run-p gulp:mobile-watch cljs:mobile-watch webpack-mobile-watch",
         "dev": "run-p gulp:watch gulp:mobile-watch cljs:dev-watch webpack",
         "release": "run-s gulp:build cljs:release webpack-app-build",
@@ -77,27 +78,27 @@
         "gulp:buildMobile": "cross-env NODE_ENV=production gulp buildMobile",
         "css:build": "postcss tailwind.all.css -o static/css/style.css --verbose --env production",
         "css:watch": "cross-env TAILWIND_MODE=watch postcss tailwind.all.css -o static/css/style.css --verbose --watch",
-        "cljs:watch": "clojure -M:cljs watch app workers electron",
+        "cljs:watch": "clojure -M:cljs watch app db-worker inference-worker electron",
         "cljs:storybook-watch": "clojure -M:cljs watch stories-dev",
         "gulp:mobile-watch": "gulp watchMobile",
         "css:mobile-build": "postcss tailwind.mobile.css -o static/mobile/css/style.css --verbose --env production",
         "css:mobile-watch": "cross-env TAILWIND_MODE=watch postcss tailwind.mobile.css -o static/mobile/css/style.css --verbose --watch",
-        "cljs:mobile-watch": "clojure -M:cljs watch mobile workers --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 workers --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 workers electron mobile",
-        "cljs:app-watch": "clojure -M:cljs watch app workers",
-        "cljs:electron-watch": "clojure -M:cljs watch app workers electron --config-merge \"{:asset-path \\\"./js\\\"}\"",
-        "cljs:release": "clojure -M:cljs release app workers publishing electron",
-        "cljs:release-electron": "clojure -M:cljs release app workers electron --debug && clojure -M:cljs release publishing",
-        "cljs:release-app": "clojure -M:cljs release app workers",
+        "cljs:mobile-watch": "clojure -M:cljs watch mobile db-worker inference-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 inference-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",
+        "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",
+        "cljs:release-app": "clojure -M:cljs release app db-worker inference-worker",
         "cljs:release-publishing": "clojure -M:cljs release app publishing",
         "cljs:test": "clojure -M:test compile test",
         "cljs:run-test": "node static/tests.js",
-        "cljs:dev-release-app": "clojure -M:cljs release app workers --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\"",
-        "cljs:dev-release-electron": "clojure -M:cljs release app workers electron --debug --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\" && clojure -M:cljs release publishing",
-        "cljs:debug": "clojure -M:cljs release app workers --debug",
-        "cljs:report": "clojure -M:cljs run shadow.cljs.build-report app workers report.html",
-        "cljs:build-electron": "clojure -A:cljs compile app workers electron",
+        "cljs:dev-release-app": "clojure -M:cljs release app db-worker inference-worker --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\"",
+        "cljs:dev-release-electron": "clojure -M:cljs release app db-worker inference-worker electron --debug --config-merge \"{:closure-defines {frontend.config/DEV-RELEASE true}}\" && clojure -M:cljs release publishing",
+        "cljs:debug": "clojure -M:cljs release app db-worker inference-worker --debug",
+        "cljs:report": "clojure -M:cljs run shadow.cljs.build-report app db-worker inference-worker report.html",
+        "cljs:build-electron": "clojure -A:cljs compile app db-worker inference-worker electron",
         "cljs:lint": "clojure -M:clj-kondo --parallel --lint src --cache false",
         "ios:dev": "cross-env PLATFORM=ios gulp cap",
         "android:dev": "cross-env PLATFORM=android gulp cap",

+ 0 - 1
resources/index.html

@@ -58,7 +58,6 @@ const portal = new MagicPortal(worker);
 <script defer src="./js/lsplugin.core.js"></script>
 <script defer src="./js/react.production.min.js"></script>
 <script defer src="./js/react-dom.production.min.js"></script>
-<script defer src="./js/main-bundle.js"></script>
 <script defer src="./js/ui.js"></script>
 <script defer src="./js/main.js"></script>
 <script defer src="./js/amplify.js"></script>

+ 0 - 1
resources/mobile/index.html

@@ -36,7 +36,6 @@ const portal = new MagicPortal(worker);
 <script defer src="./js/ui.js"></script>
 <script defer src="./js/amplify.js"></script>
 <script defer src="./js/silkhq.js"></script>
-<script defer src="./js/main-bundle.js"></script>
 <script defer src="./js/main.js"></script>
 <script defer src="./js/code-editor.js"></script>
 <script>

+ 55 - 43
shadow-cljs.edn

@@ -14,12 +14,7 @@
  :builds
  {:app {:target        :browser
         :module-loader true
-        :js-options    {:js-provider    :external
-                        :external-index "target/main.js"
-                        :external-index-format :esm
-                        :entry-keys ["module" "browser" "main"]
-                        :export-conditions ["module" "import", "browser" "require" "default"]
-                        :ignore-asset-requires true
+        :js-options    {:ignore-asset-requires true
                         :resolve {"react" {:target :global
                                            :global "React"}
                                   "react-dom" {:target :global
@@ -65,42 +60,59 @@
                    ;; :ignore-warnings true
                    }}
 
-  :workers {:target        :browser
-            :module-loader true
-            :js-options    {:js-provider    :external
-                            :external-index "target/workers.js"
-                            :external-index-format :esm
-                            :entry-keys ["module" "browser" "main"]
-                            :export-conditions ["module" "import", "browser" "require" "default"]}
-            :modules       {:workers-shared {:entries []}
-                            :db-worker
-                            {:init-fn frontend.worker.db-worker/init
-                             :web-worker true
-                             :prepend "importScripts('workers-bundle.js');\n"
-                             :depends-on #{:workers-shared}}
-                            :inference-worker
-                            {:init-fn frontend.inference-worker.inference-worker/init
-                             :web-worker true
-                             :prepend "importScripts('workers-bundle.js');\n"
-                             :depends-on #{:workers-shared}}}
-
-            :output-dir       "./static/js"
-            :asset-path       "/static/js"
-            :release          {:asset-path "https://asset.logseq.com/static/js"}
-            :compiler-options {:infer-externs      :auto
-                               :output-feature-set :es-next-in
-                               :source-map true
-                               :externs ["datascript/externs.js"
-                                         "externs.js"]
-                               :warnings {:fn-deprecated false
-                                          :redef false}}
-            :closure-defines {goog.debug.LOGGING_ENABLED true}
-            :devtools {:before-load frontend.core/stop          ;; before live-reloading any code call this function
-                       :after-load frontend.core/start          ;; after live-reloading finishes call this function
-                       :watch-path "/static"
-                       :preloads [devtools.preload
-                                  shadow.remote.runtime.cljs.browser]
-                       :loader-mode :eval}}
+  :db-worker {:target        :browser
+              :js-options    {:js-provider    :external
+                              :external-index "target/db-worker.js"
+                              :external-index-format :esm
+                              :entry-keys ["module" "browser" "main"]
+                              :export-conditions ["module" "import", "browser" "require" "default"]}
+              :modules       {:db-worker
+                              {:init-fn frontend.worker.db-worker/init
+                               :web-worker true
+                               :prepend-js "importScripts('db-worker-bundle.js');"}}
+
+              :output-dir       "./static/js"
+              :asset-path       "/static/js"
+              :release          {:asset-path "https://asset.logseq.com/static/js"}
+              :compiler-options {:infer-externs      :auto
+                                 :output-feature-set :es-next-in
+                                 :source-map true
+                                 :externs ["datascript/externs.js"
+                                           "externs.js"]
+                                 :warnings {:fn-deprecated false
+                                            :redef false}}
+              :closure-defines {goog.debug.LOGGING_ENABLED true}
+              :devtools {:watch-path "/static"
+                         :preloads [devtools.preload
+                                    shadow.remote.runtime.cljs.browser]
+                         :loader-mode :eval}}
+
+  :inference-worker {:target        :browser
+                     :module-loader true
+                     :js-options    {:js-provider    :external
+                                     :external-index "target/inference-worker.js"
+                                     :external-index-format :esm
+                                     :entry-keys ["module" "browser" "main"]
+                                     :export-conditions ["module" "import", "browser" "require" "default"]}
+                     :modules       {:inference-worker
+                                     {:init-fn frontend.inference-worker.inference-worker/init
+                                      :web-worker true
+                                      :prepend-js "importScripts('inference-worker-bundle.js');\n"}}
+
+                     :output-dir       "./static/js"
+                     :asset-path       "/static/js"
+                     :release          {:asset-path "https://asset.logseq.com/static/js"}
+                     :compiler-options {:infer-externs      :auto
+                                        :output-feature-set :es-next-in
+                                        :source-map true
+                                        :externs ["datascript/externs.js"
+                                                  "externs.js"]
+                                        :warnings {:fn-deprecated false
+                                                   :redef false}}
+                     :closure-defines {goog.debug.LOGGING_ENABLED true}
+                     :devtools {:watch-path "/static"
+                                :preloads [devtools.preload
+                                           shadow.remote.runtime.cljs.browser]}}
   :mobile {:target        :browser
            :module-loader true
            :js-options    {:js-provider    :external
@@ -218,7 +230,7 @@
                                   :externs ["datascript/externs.js"
                                             "externs.js"]
                                   :warnings {:fn-deprecated false
-                                             :redef false} }
+                                             :redef false}}
                :devtools {:before-load frontend.core/stop
                           :after-load frontend.core/start
                           :preloads [devtools.preload]}}

+ 3 - 4
webpack.config.js

@@ -29,8 +29,8 @@ var config = {
 var AppConfig = Object.assign({}, config, {
   name: "app",
   entry: {
-    main : "./target/main.js",
-    workers : "./target/workers.js",
+    "db-worker" : "./target/db-worker.js",
+    "inference-worker" : "./target/inference-worker.js"
   },
 
   output: {
@@ -44,8 +44,7 @@ var AppConfig = Object.assign({}, config, {
 var MobileConfig = Object.assign({}, config, {
   name: "mobile",
   entry: {
-    main : "./target/mobile.js",
-    workers : "./target/workers.js",
+    "db-worker" : "./target/db-worker.js",
   },
 
   output: {

+ 17 - 2
yarn.lock

@@ -5359,6 +5359,13 @@ [email protected]:
   dependencies:
     safer-buffer ">= 2.1.2 < 3"
 
+iconv-lite@^0.6.3:
+  version "0.6.3"
+  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+  integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+  dependencies:
+    safer-buffer ">= 2.1.2 < 3.0.0"
+
 ieee754@^1.1.13, ieee754@^1.1.4:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
@@ -8955,7 +8962,7 @@ safe-regex@^1.1.0:
   dependencies:
     ret "~0.1.10"
 
-"safer-buffer@>= 2.1.2 < 3":
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@@ -9404,11 +9411,19 @@ socket.io@^4.7.2:
     socket.io-adapter "~2.5.2"
     socket.io-parser "~4.2.4"
 
-source-map-js@^1.2.1:
+source-map-js@^1.0.2, source-map-js@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
   integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
 
+source-map-loader@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-5.0.0.tgz#f593a916e1cc54471cfc8851b905c8a845fc7e38"
+  integrity sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==
+  dependencies:
+    iconv-lite "^0.6.3"
+    source-map-js "^1.0.2"
+
 source-map-resolve@^0.5.0:
   version "0.5.3"
   resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"