From c42f4668010e940d309ec39bf13b803ccf5af041 Mon Sep 17 00:00:00 2001
From: "Richard T. Carback III" <rick.carback@gmail.com>
Date: Mon, 29 Jan 2024 21:39:36 +0000
Subject: [PATCH] Changes to make the module load properly

---
 package.json      |  3 ++-
 src/index.ts      | 18 ++++++++++++------
 webpack.config.js |  1 +
 3 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/package.json b/package.json
index fc38dff..abc5bab 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,8 @@
     "name": "xxdk-wasm",
     "version": "0.3.9",
     "description": "WebAssembly bindings for xxDK.",
-    "module": "src/index.ts",
+    "main": "dist/bundle.js",
+    "module": "dist/bundle.js",
     "directories": {
         "test": "test",
         "src": "src"
diff --git a/src/index.ts b/src/index.ts
index ca4fac4..b4b7079 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -4,15 +4,21 @@ declare global {
   interface Window extends XXDKUtils {}
 }
 
-import '../wasm_exec';
 // @ts-ignore
-import makeWasm from '../xxdk.wasm';
+// import makeWasm from '../xxdk.wasm';
 
 export const loadUtils = () => new Promise<XXDKUtils>(async (res) => {
-  const go = new (window as any).Go();
-  const result = await makeWasm(go.importObject);
-
-  go.run(result.instance);
+    const Go = require('../wasm_exec');
+    const go = new Go();
+    let mod, inst;
+    WebAssembly.instantiateStreaming(fetch("../xxdk.wasm"), go.importObject).then(async (result) => {
+        mod = result.module;
+        inst = result.instance;
+        await go.run(inst);
+        inst = await WebAssembly.instantiate(mod, go.importObject); // reset instance
+    }).catch((err) => {
+        console.error(err);
+    });
 
   const {
     Base64ToUint8Array,
diff --git a/webpack.config.js b/webpack.config.js
index 2278cc2..88f4e3c 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -11,6 +11,7 @@ module.exports = {
             name: 'xxdk-wasm',
             type: 'umd',
         },
+        publicPath: '',
     },
     module: {
         rules: [
-- 
GitLab