@wasmedia/wenblend 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAEnE,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AACtF,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAoGrF,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAE1D;AAED,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GACvE,IAAI,CAEN;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAW7F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,aAAa,EACvB,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC7B,OAAO,CAAC,UAAU,CAAC,CAkBrB"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAEnE,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AACtF,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAyKrF,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAE1D;AAED,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GACvE,IAAI,CAEN;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAW7F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,aAAa,EACvB,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC7B,OAAO,CAAC,UAAU,CAAC,CAkBrB"}
package/dist/loader.js CHANGED
@@ -20,10 +20,6 @@
20
20
  * Without the hook, each factory call runs the glue's own createWasm,
21
21
  * which fetches and compiles the .wasm from scratch every time.
22
22
  */
23
- const MODULE_FILE = {
24
- enblend: "wenblend.js",
25
- enfuse: "wenfuse.js",
26
- };
27
23
  const WASM_FILE = {
28
24
  enblend: "wenblend.wasm",
29
25
  enfuse: "wenfuse.wasm",
@@ -34,9 +30,58 @@ const WASM_FILE = {
34
30
  // to the same key.
35
31
  const factories = new Map();
36
32
  const compiled = new Map();
33
+ /*
34
+ * The default URLs are spelled out, one `new URL()` with a string literal
35
+ * per file, never built from a template: bundlers (Vite, webpack, Parcel)
36
+ * recognise the literal form and emit exactly that file, with a hashed name,
37
+ * while Vite turns a template literal into a glob over the whole directory
38
+ * — every glue, wasm, source map and .d.ts in dist/ — and under its dev
39
+ * server's dependency pre-bundling into a lookup that yields `undefined`
40
+ * (#24). `../dist/` resolves to dist/ both from the compiled dist/loader.js
41
+ * and from src/loader.ts under the test runner.
42
+ *
43
+ * The wasm gets its own literal for the same reason: a bundler that emits
44
+ * the glue as `wenblend-<hash>.js` does not put a `wenblend.wasm` beside it,
45
+ * so with no `wasmPath` the wasm is not looked up beside the glue.
46
+ */
47
+ function defaultGlueUrl(tool) {
48
+ return tool === "enblend"
49
+ ? new URL("../dist/wenblend.js", import.meta.url).href
50
+ : new URL("../dist/wenfuse.js", import.meta.url).href;
51
+ }
52
+ function defaultWasmUrl(tool) {
53
+ return tool === "enblend"
54
+ ? new URL("../dist/wenblend.wasm", import.meta.url)
55
+ : new URL("../dist/wenfuse.wasm", import.meta.url);
56
+ }
37
57
  function glueUrl(tool, options) {
38
- return options?.wasmPath
39
- ?? new URL(`../dist/${MODULE_FILE[tool]}`, import.meta.url).href;
58
+ const path = options?.wasmPath;
59
+ if (path === undefined)
60
+ return defaultGlueUrl(tool);
61
+ return isBareSpecifier(path) ? resolveBareSpecifier(path) : path;
62
+ }
63
+ /**
64
+ * True for what `import()` would treat as a package name rather than a
65
+ * location: not an absolute URL, and not `/`, `./` or `../`. Such a path
66
+ * never loaded before bare specifiers were supported, so none that worked
67
+ * changes meaning.
68
+ */
69
+ function isBareSpecifier(path) {
70
+ return !/^[a-zA-Z][a-zA-Z\d+.-]*:/.test(path) && !/^\.{0,2}\//.test(path);
71
+ }
72
+ /**
73
+ * Resolve a bare specifier, e.g. `@wasmedia/wenblend/wasm/enblend`, the way
74
+ * `import()` from this module would: Node's package resolution, or the
75
+ * page's import map. The `.wasm` is then loaded from beside the resolved
76
+ * glue, as for any other `wasmPath`.
77
+ */
78
+ function resolveBareSpecifier(specifier) {
79
+ const resolve = import.meta.resolve;
80
+ if (typeof resolve !== "function") {
81
+ throw new Error(`wasmPath "${specifier}" is a bare specifier, and import.meta.resolve is not available here to resolve it; ` +
82
+ "pass the glue's URL instead");
83
+ }
84
+ return resolve(specifier);
40
85
  }
41
86
  /**
42
87
  * The glue's absolute URL. `new URL` needs an absolute base, but `wasmPath`
@@ -49,22 +94,40 @@ function resolvedGlueUrl(tool, options) {
49
94
  function cacheKey(tool, options) {
50
95
  return `${tool} ${resolvedGlueUrl(tool, options).href}`;
51
96
  }
97
+ /**
98
+ * Import a tool's glue. When the default URL fails, the usual cause is a
99
+ * bundler that moved this module away from dist/ without rewriting the URL
100
+ * — Vite's dev server pre-bundles dependencies into node_modules/.vite/deps/,
101
+ * from where no relative URL reaches dist/ — so the error says what to do.
102
+ */
52
103
  async function importFactory(tool, options) {
53
- const mod = await import(/* webpackIgnore: true */ glueUrl(tool, options));
104
+ const url = glueUrl(tool, options);
105
+ let mod;
106
+ try {
107
+ mod = await import(/* webpackIgnore: true */ /* @vite-ignore */ url);
108
+ }
109
+ catch (err) {
110
+ if (options?.wasmPath !== undefined)
111
+ throw err;
112
+ throw new Error(`could not import the ${tool} glue from its default URL ${url}. If a bundler moved wenblend away from ` +
113
+ `its dist/ directory (Vite's dev server does when it pre-bundles dependencies), add "@wasmedia/wenblend" ` +
114
+ `to Vite's optimizeDeps.exclude, or pass wasmPath. Cause: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
115
+ }
54
116
  return (mod.default ?? mod);
55
117
  }
56
118
  /**
57
119
  * Fetch and compile a tool's .wasm.
58
120
  *
59
- * The URL is the one the glue itself would use: its `locateFile` default
60
- * resolves the .wasm name against the glue's own directory. `file:` URLs
121
+ * With `wasmPath`, the URL is the one the glue itself would use: its
122
+ * `locateFile` default resolves the .wasm name against the glue's own
123
+ * directory. Without it, the default wasm URL (see `defaultWasmUrl`). `file:` URLs
61
124
  * (Node) are read from disk, because Node's fetch does not do `file:`;
62
125
  * everything else is fetched, streaming-compiled where the server's MIME
63
126
  * type allows and compiled from bytes where it does not — the same
64
127
  * fallback the glue performs.
65
128
  */
66
129
  async function compileWasm(tool, options) {
67
- const url = new URL(WASM_FILE[tool], resolvedGlueUrl(tool, options));
130
+ const url = options?.wasmPath === undefined ? defaultWasmUrl(tool) : new URL(WASM_FILE[tool], resolvedGlueUrl(tool, options));
68
131
  if (url.protocol === "file:") {
69
132
  // A variable specifier keeps bundlers from trying to resolve a Node
70
133
  // builtin into browser code; this branch only runs under Node.
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -87,7 +87,11 @@ export type FuseOptions = CommonOptions;
87
87
  /** Progress phases reported by the loader. */
88
88
  export type LoadPhase = "loading" | "initializing" | "ready";
89
89
  export interface LoaderOptions {
90
- /** Override the module URL (for bundlers or custom hosting). */
90
+ /**
91
+ * Override the URL of the tool's `.js` glue (for bundlers or custom hosting); the `.wasm` is loaded
92
+ * from beside it. An absolute URL, a path starting with `/`, `./` or `../`, or a bare specifier such as
93
+ * `@wasmedia/wenblend/wasm/enblend`, resolved with `import.meta.resolve` where that exists.
94
+ */
91
95
  wasmPath?: string;
92
96
  /**
93
97
  * Where file mode loads @wasmedia/wopfs from. The default imports
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuGH,kFAAkF;AAClF,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,QAAQ,CAAS;IACjB,MAAM,CAAS;IAExB,YAAY,OAAe,EAAE,QAAgB,EAAE,MAAc;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC;;;;;OAKG;IACM,MAAM,CAAqB;IACpC,iEAAiE;IACxD,MAAM,CAAS;IAExB,YAAY,MAA0B,EAAE,MAAM,GAAG,EAAE;QACjD,KAAK,CACH,gBAAgB,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,MAAM,eAAe,IAAI;YAChF,wEAAwE;YACxE,+CAA+C,CAClD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2GH,kFAAkF;AAClF,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,QAAQ,CAAS;IACjB,MAAM,CAAS;IAExB,YAAY,OAAe,EAAE,QAAgB,EAAE,MAAc;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC;;;;;OAKG;IACM,MAAM,CAAqB;IACpC,iEAAiE;IACxD,MAAM,CAAS;IAExB,YAAY,MAA0B,EAAE,MAAM,GAAG,EAAE;QACjD,KAAK,CACH,gBAAgB,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,MAAM,eAAe,IAAI;YAChF,wEAAwE;YACxE,+CAA+C,CAClD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
Binary file
package/dist/wenfuse.wasm CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wasmedia/wenblend",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "description": "Enblend and Enfuse compiled to WebAssembly for browsers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -59,9 +59,10 @@
59
59
  "@playwright/test": "1.63.0",
60
60
  "@types/node": "^22.20.4",
61
61
  "typescript": "^5.7.0",
62
+ "vite": "7.3.6",
62
63
  "vitest": "^3.0.0"
63
64
  },
64
65
  "dependencies": {
65
- "@wasmedia/wopfs": "0.2.0"
66
+ "@wasmedia/wopfs": "0.3.0"
66
67
  }
67
68
  }
package/src/loader.ts CHANGED
@@ -41,11 +41,6 @@ export type InstanceHooks = Pick<WasmModule, "print" | "printErr">;
41
41
  export type ModuleFactory = (config?: Record<string, unknown>) => Promise<WasmModule>;
42
42
  type FactoryLoader = (tool: Tool, options?: LoaderOptions) => Promise<ModuleFactory>;
43
43
 
44
- const MODULE_FILE: Record<Tool, string> = {
45
- enblend: "wenblend.js",
46
- enfuse: "wenfuse.js",
47
- };
48
-
49
44
  const WASM_FILE: Record<Tool, string> = {
50
45
  enblend: "wenblend.wasm",
51
46
  enfuse: "wenfuse.wasm",
@@ -58,9 +53,63 @@ const WASM_FILE: Record<Tool, string> = {
58
53
  const factories = new Map<string, Promise<ModuleFactory>>();
59
54
  const compiled = new Map<string, Promise<WebAssembly.Module>>();
60
55
 
56
+ /*
57
+ * The default URLs are spelled out, one `new URL()` with a string literal
58
+ * per file, never built from a template: bundlers (Vite, webpack, Parcel)
59
+ * recognise the literal form and emit exactly that file, with a hashed name,
60
+ * while Vite turns a template literal into a glob over the whole directory
61
+ * — every glue, wasm, source map and .d.ts in dist/ — and under its dev
62
+ * server's dependency pre-bundling into a lookup that yields `undefined`
63
+ * (#24). `../dist/` resolves to dist/ both from the compiled dist/loader.js
64
+ * and from src/loader.ts under the test runner.
65
+ *
66
+ * The wasm gets its own literal for the same reason: a bundler that emits
67
+ * the glue as `wenblend-<hash>.js` does not put a `wenblend.wasm` beside it,
68
+ * so with no `wasmPath` the wasm is not looked up beside the glue.
69
+ */
70
+ function defaultGlueUrl(tool: Tool): string {
71
+ return tool === "enblend"
72
+ ? new URL("../dist/wenblend.js", import.meta.url).href
73
+ : new URL("../dist/wenfuse.js", import.meta.url).href;
74
+ }
75
+
76
+ function defaultWasmUrl(tool: Tool): URL {
77
+ return tool === "enblend"
78
+ ? new URL("../dist/wenblend.wasm", import.meta.url)
79
+ : new URL("../dist/wenfuse.wasm", import.meta.url);
80
+ }
81
+
61
82
  function glueUrl(tool: Tool, options?: LoaderOptions): string {
62
- return options?.wasmPath
63
- ?? new URL(`../dist/${MODULE_FILE[tool]}`, import.meta.url).href;
83
+ const path = options?.wasmPath;
84
+ if (path === undefined) return defaultGlueUrl(tool);
85
+ return isBareSpecifier(path) ? resolveBareSpecifier(path) : path;
86
+ }
87
+
88
+ /**
89
+ * True for what `import()` would treat as a package name rather than a
90
+ * location: not an absolute URL, and not `/`, `./` or `../`. Such a path
91
+ * never loaded before bare specifiers were supported, so none that worked
92
+ * changes meaning.
93
+ */
94
+ function isBareSpecifier(path: string): boolean {
95
+ return !/^[a-zA-Z][a-zA-Z\d+.-]*:/.test(path) && !/^\.{0,2}\//.test(path);
96
+ }
97
+
98
+ /**
99
+ * Resolve a bare specifier, e.g. `@wasmedia/wenblend/wasm/enblend`, the way
100
+ * `import()` from this module would: Node's package resolution, or the
101
+ * page's import map. The `.wasm` is then loaded from beside the resolved
102
+ * glue, as for any other `wasmPath`.
103
+ */
104
+ function resolveBareSpecifier(specifier: string): string {
105
+ const resolve = (import.meta as { resolve?: (s: string) => string }).resolve;
106
+ if (typeof resolve !== "function") {
107
+ throw new Error(
108
+ `wasmPath "${specifier}" is a bare specifier, and import.meta.resolve is not available here to resolve it; ` +
109
+ "pass the glue's URL instead",
110
+ );
111
+ }
112
+ return resolve(specifier);
64
113
  }
65
114
 
66
115
  /**
@@ -76,23 +125,43 @@ function cacheKey(tool: Tool, options?: LoaderOptions): string {
76
125
  return `${tool} ${resolvedGlueUrl(tool, options).href}`;
77
126
  }
78
127
 
128
+ /**
129
+ * Import a tool's glue. When the default URL fails, the usual cause is a
130
+ * bundler that moved this module away from dist/ without rewriting the URL
131
+ * — Vite's dev server pre-bundles dependencies into node_modules/.vite/deps/,
132
+ * from where no relative URL reaches dist/ — so the error says what to do.
133
+ */
79
134
  async function importFactory(tool: Tool, options?: LoaderOptions): Promise<ModuleFactory> {
80
- const mod = await import(/* webpackIgnore: true */ glueUrl(tool, options));
135
+ const url = glueUrl(tool, options);
136
+ let mod;
137
+ try {
138
+ mod = await import(/* webpackIgnore: true */ /* @vite-ignore */ url);
139
+ } catch (err) {
140
+ if (options?.wasmPath !== undefined) throw err;
141
+ throw new Error(
142
+ `could not import the ${tool} glue from its default URL ${url}. If a bundler moved wenblend away from ` +
143
+ `its dist/ directory (Vite's dev server does when it pre-bundles dependencies), add "@wasmedia/wenblend" ` +
144
+ `to Vite's optimizeDeps.exclude, or pass wasmPath. Cause: ${err instanceof Error ? err.message : String(err)}`,
145
+ { cause: err },
146
+ );
147
+ }
81
148
  return (mod.default ?? mod) as ModuleFactory;
82
149
  }
83
150
 
84
151
  /**
85
152
  * Fetch and compile a tool's .wasm.
86
153
  *
87
- * The URL is the one the glue itself would use: its `locateFile` default
88
- * resolves the .wasm name against the glue's own directory. `file:` URLs
154
+ * With `wasmPath`, the URL is the one the glue itself would use: its
155
+ * `locateFile` default resolves the .wasm name against the glue's own
156
+ * directory. Without it, the default wasm URL (see `defaultWasmUrl`). `file:` URLs
89
157
  * (Node) are read from disk, because Node's fetch does not do `file:`;
90
158
  * everything else is fetched, streaming-compiled where the server's MIME
91
159
  * type allows and compiled from bytes where it does not — the same
92
160
  * fallback the glue performs.
93
161
  */
94
162
  async function compileWasm(tool: Tool, options?: LoaderOptions): Promise<WebAssembly.Module> {
95
- const url = new URL(WASM_FILE[tool], resolvedGlueUrl(tool, options));
163
+ const url =
164
+ options?.wasmPath === undefined ? defaultWasmUrl(tool) : new URL(WASM_FILE[tool], resolvedGlueUrl(tool, options));
96
165
  if (url.protocol === "file:") {
97
166
  // A variable specifier keeps bundlers from trying to resolve a Node
98
167
  // builtin into browser code; this branch only runs under Node.
package/src/types.ts CHANGED
@@ -95,7 +95,11 @@ export type FuseOptions = CommonOptions;
95
95
  export type LoadPhase = "loading" | "initializing" | "ready";
96
96
 
97
97
  export interface LoaderOptions {
98
- /** Override the module URL (for bundlers or custom hosting). */
98
+ /**
99
+ * Override the URL of the tool's `.js` glue (for bundlers or custom hosting); the `.wasm` is loaded
100
+ * from beside it. An absolute URL, a path starting with `/`, `./` or `../`, or a bare specifier such as
101
+ * `@wasmedia/wenblend/wasm/enblend`, resolved with `import.meta.resolve` where that exists.
102
+ */
99
103
  wasmPath?: string;
100
104
  /**
101
105
  * Where file mode loads @wasmedia/wopfs from. The default imports