From 5a97202d7e83f689eb8076603c616589615d27ce Mon Sep 17 00:00:00 2001
From: "Richard T. Carback III" <rick.carback@gmail.com>
Date: Thu, 8 Feb 2024 22:13:16 +0000
Subject: [PATCH] Export the workers as named modules in the webpack build

---
 assets/jsutils/channelsIndexedDbWorker.js |  4 ++--
 assets/jsutils/dmIndexedDbWorker.js       |  4 ++--
 assets/jsutils/logFileWorker.js           |  4 ++--
 assets/jsutils/stateIndexedDbWorker.js    |  4 ++--
 package.json                              |  1 -
 src/index.ts                              |  7 ++++---
 webpack.config.js                         | 16 ++++++++++++----
 7 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/assets/jsutils/channelsIndexedDbWorker.js b/assets/jsutils/channelsIndexedDbWorker.js
index f37ab6a..f3ca2dc 100644
--- a/assets/jsutils/channelsIndexedDbWorker.js
+++ b/assets/jsutils/channelsIndexedDbWorker.js
@@ -6,9 +6,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 // NOTE: wasm_exec.js must always be in the same directory as this script.
-importScripts('wasm_exec.js');
+importScripts(require('./wasm_exec.js'));
 // NOTE: This relative path must be preserved in distribution.
-const binPath = '../wasm/xxdk-channelsIndexedDkWorker.wasm'
+const binPath = require('../wasm/xxdk-channelsIndexedDkWorker.wasm');
 
 const isReady = new Promise((resolve) => {
     self.onWasmInitialized = resolve;
diff --git a/assets/jsutils/dmIndexedDbWorker.js b/assets/jsutils/dmIndexedDbWorker.js
index 5605dba..56819be 100644
--- a/assets/jsutils/dmIndexedDbWorker.js
+++ b/assets/jsutils/dmIndexedDbWorker.js
@@ -6,9 +6,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 // NOTE: wasm_exec.js must always be in the same directory as this script.
-importScripts('wasm_exec.js');
+importScripts(require('./wasm_exec.js'));
 // NOTE: This relative path must be preserved in distribution.
-const binPath = '../wasm/xxdk-dmIndexedDkWorker.wasm'
+const binPath = require('../wasm/xxdk-dmIndexedDkWorker.wasm');
 
 const isReady = new Promise((resolve) => {
     self.onWasmInitialized = resolve;
diff --git a/assets/jsutils/logFileWorker.js b/assets/jsutils/logFileWorker.js
index 1ef114b..5f8f31f 100644
--- a/assets/jsutils/logFileWorker.js
+++ b/assets/jsutils/logFileWorker.js
@@ -6,9 +6,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 // NOTE: wasm_exec.js must always be in the same directory as this script.
-importScripts('wasm_exec.js');
+importScripts(require('./wasm_exec.js'));
 // NOTE: This relative path must be preserved in distribution.
-const binPath = '../wasm/xxdk-logFileWorker.wasm'
+const binPath = require('../wasm/xxdk-logFileWorker.wasm');
 
 const isReady = new Promise((resolve) => {
     self.onWasmInitialized = resolve;
diff --git a/assets/jsutils/stateIndexedDbWorker.js b/assets/jsutils/stateIndexedDbWorker.js
index b4009ef..091564b 100644
--- a/assets/jsutils/stateIndexedDbWorker.js
+++ b/assets/jsutils/stateIndexedDbWorker.js
@@ -6,9 +6,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 // NOTE: wasm_exec.js must always be in the same directory as this script.
-importScripts('wasm_exec.js');
+importScripts(require('./wasm_exec.js'));
 // NOTE: This relative path must be preserved in distribution.
-const binPath = '../wasm/xxdk-stateIndexedDkWorker.wasm'
+const binPath = require('../wasm/xxdk-stateIndexedDkWorker.wasm');
 
 const isReady = new Promise((resolve) => {
     self.onWasmInitialized = resolve;
diff --git a/package.json b/package.json
index 798ebe6..753d897 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,6 @@
         "src": "src"
     },
     "files": [
-        "src/index.ts",
         "dist/*"
     ],
     "scripts": {
diff --git a/src/index.ts b/src/index.ts
index 39e2737..dde5e7f 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,8 +1,9 @@
 import type { XXDKUtils } from './types';
 
-import '../wasm_exec.js';
+import('../assets/jsutils/wasm_exec.js');
 
-const xxdkWasm: URL = require('../xxdk.wasm');
+
+const xxdkWasm: URL = require('../assets/wasm/xxdk.wasm');
 
 declare global {
   interface Window extends XXDKUtils {
@@ -22,10 +23,10 @@ export const loadWasm = () => new Promise<void>(async () => {
     // if (typeof window == "undefined") {
     const go = new window!.Go();
 
-    
     let isReady = new Promise((resolve) => {
         window!.onWasmInitialized = resolve;
     });
+
     console.log(go);
     console.log(xxdk_wasm_path);
     console.log("IMPORT");
diff --git a/webpack.config.js b/webpack.config.js
index 7944eec..fe82740 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,11 +1,19 @@
 const path = require('path');
 
 module.exports = {
-    entry: './src/index.ts',
+    entry: {
+        bundle: './src/index.ts',
+        logFileWorker: './assets/jsutils/logFileWorker.js',
+        channelsIndexDbWorker: './assets/jsutils/channelsIndexedDbWorker.js',
+        dmIndexedDbWorker: './assets/jsutils/dmIndexedDbWorker.js',
+        ndf: './assets/jsutils/ndf.js',
+        stateIndexedDbWorker: './assets/jsutils/stateIndexedDbWorker.js',
+        wasm_exec: './assets/jsutils/wasm_exec.js',
+    },
     devtool: 'inline-source-map',
     mode: 'development',
     output: {
-        filename: 'bundle.js',
+        filename: '[name].js',
         path: path.resolve(__dirname, 'dist'),
         globalObject: 'this',
         library: {
@@ -26,12 +34,12 @@ module.exports = {
                 test: /\.wasm$/,
                 type: 'asset/resource',
                 generator: {
-                    filename: 'wasm-assets/[hash][ext][query]'
+                    filename: 'assets/wasm/[hash][ext][query]'
                 }
             }
         ]
     },
     resolve: {
-        extensions: ['.tsx', '.ts', '.js'],
+        extensions: ['.tsx', '.ts', 'js' ],
     },
 };
-- 
GitLab