diff --git a/package.json b/package.json index 031b9e9..344a9f1 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "server": "vite preview", "lint": "eslint --ext .js,.vue --ignore-path .gitignore --fix src", "test": "vitest --environment jsdom --no-watch", - "wasm": "emcc -O3 src/wasm/filters.cpp -s ENVIRONMENT=worker -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s EXPORTED_FUNCTIONS=\"['_malloc', '_free', '_filter']\" -o public/lib/filters.js" + "wasm": "emcc -O3 src/wasm/filters.cpp -s ENVIRONMENT=worker -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s EXPORTED_FUNCTIONS=\"['_malloc', '_free', '_filter']\" -o src/wasm/bin/filters.js" }, "dependencies": { "@simonwep/pickr": "^1.8.0", diff --git a/src/services/render-service.js b/src/services/render-service.js index 37f8985..3a16798 100644 --- a/src/services/render-service.js +++ b/src/services/render-service.js @@ -31,6 +31,7 @@ import { getLayerCache, setLayerCache } from "@/rendering/cache/bitmap-cache"; import { renderMultiLineText } from "@/rendering/text"; import { loadGoogleFont } from "@/services/font-service"; import FilterWorker from "@/workers/filter.worker.js?worker"; +import wasmUrl from "@/wasm/bin/filters.wasm?url"; const jobQueue = []; let UID = 0; @@ -46,7 +47,7 @@ export const setWasmFilters = enabled => { if ( enabled && !wasmWorker ) { wasmWorker = new FilterWorker(); wasmWorker.onmessage = handleWorkerMessage; - wasmWorker.postMessage({ cmd: "initWasm" }); + wasmWorker.postMessage({ cmd: "initWasm", wasmUrl }); } }; diff --git a/public/lib/filters.js b/src/wasm/bin/filters.js similarity index 100% rename from public/lib/filters.js rename to src/wasm/bin/filters.js diff --git a/public/lib/filters.wasm b/src/wasm/bin/filters.wasm similarity index 100% rename from public/lib/filters.wasm rename to src/wasm/bin/filters.wasm diff --git a/src/workers/filter.worker.js b/src/workers/filter.worker.js index f248ab0..0a5f12e 100644 --- a/src/workers/filter.worker.js +++ b/src/workers/filter.worker.js @@ -20,7 +20,7 @@ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import wasmJs from "@/../public/lib/filters.js"; +import wasmJs from "@/wasm/bin/filters.js"; import FiltersFactory from "@/factories/filters-factory"; import { imageDataAsFloat } from "@/utils/wasm-util"; @@ -42,7 +42,7 @@ self.addEventListener( "message", async ({ data }) => { // as it will load the WASM binary case "initWasm": - const wasm = await fetch( "/lib/filters.wasm" ); + const wasm = await fetch( data.wasmUrl ); const bytes = await wasm.arrayBuffer(); wasmInstance = await wasmJs({ wasmBinary: bytes