@mirascript/wasm 0.1.47 → 0.1.49

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":"web.d.ts","sourceRoot":"","sources":["../../src/loader/web.ts"],"names":[],"mappings":"AAgEA,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,YAAY,CAKrC,CAAC"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/loader/web.ts"],"names":[],"mappings":"AA4EA,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,YAAY,CAYrC,CAAC"}
@@ -1,48 +1,60 @@
1
1
  /** 从 Document 推断 URL */
2
- async function load4() {
2
+ async function loadDocument() {
3
3
  const fallbackUrl = (document?.currentScript instanceof HTMLScriptElement
4
4
  ? document.currentScript.src
5
5
  : (document.currentScript?.href?.baseVal ?? '')) || document.location.href;
6
6
  return await body(fetch(new URL('../../lib/wasm_bg.wasm', fallbackUrl)));
7
7
  }
8
8
  /** 从 import.meta.url 推断 URL */
9
- async function load2() {
9
+ async function loadUrl() {
10
10
  return await body(fetch(new URL('../../lib/wasm_bg.wasm', import.meta.url)));
11
11
  }
12
- /** 从 import.meta.resolve 推断 URL */
13
- async function load3() {
14
- return await body(fetch(new URL(import.meta.resolve('../../lib/wasm_bg.wasm'))));
15
- }
16
12
  /** 由 esm 加载模块 */
17
- async function load1() {
18
- /** 加载模块 */
19
- async function loadMod(mod) {
20
- if (mod && typeof mod == 'object' && 'default' in mod) {
21
- return loadMod(mod.default);
22
- }
23
- if (mod instanceof URL ||
24
- (typeof mod == 'string' &&
25
- (mod.startsWith('data:') ||
26
- mod.startsWith('http:') ||
27
- mod.startsWith('https:') ||
28
- mod.startsWith('//')))) {
29
- return await body(fetch(mod));
30
- }
31
- if (mod instanceof Response) {
32
- return await body(mod);
33
- }
34
- if (ArrayBuffer.isView(mod) || mod instanceof ArrayBuffer) {
35
- return mod;
36
- }
37
- if (mod instanceof WebAssembly.Module) {
38
- return mod;
39
- }
40
- throw new Error('Failed to load wasm module');
41
- }
13
+ async function loadEsm() {
42
14
  // use ?url to force vite to load as bytes
43
15
  // https://github.com/vitejs/vite/issues/12366
44
- const mod = await import('../../lib/wasm_bg.wasm?url', { with: { type: 'bytes' } });
45
- return await loadMod(mod);
16
+ const m = await import('../../lib/wasm_bg.wasm?url', { with: { type: 'bytes' } });
17
+ return await mod(m);
18
+ }
19
+ /** 由 esm.sh 加载模块 */
20
+ async function loadEsmSh() {
21
+ const url = new URL(import.meta.url);
22
+ const { pathname } = url;
23
+ if (!pathname.includes('/@mirascript/wasm')) {
24
+ throw new Error('Not loaded from esm.sh');
25
+ }
26
+ const segments = pathname.split('/');
27
+ let newUrl = url.origin;
28
+ for (let i = 0; i < segments.length; i++) {
29
+ const segment = segments[i];
30
+ newUrl += segment + '/';
31
+ if (i >= 1 && segments[i - 1] === '@mirascript' && (segment === 'wasm' || segment?.startsWith('wasm@'))) {
32
+ break;
33
+ }
34
+ }
35
+ newUrl += 'lib/wasm_bg.wasm';
36
+ return await body(fetch(newUrl));
37
+ }
38
+ /** 加载模块 */
39
+ async function mod(m) {
40
+ if (m && typeof m == 'object' && 'default' in m) {
41
+ return mod(m.default);
42
+ }
43
+ if (m instanceof URL ||
44
+ (typeof m == 'string' &&
45
+ (m.startsWith('data:') || m.startsWith('http:') || m.startsWith('https:') || m.startsWith('//')))) {
46
+ return await body(fetch(m));
47
+ }
48
+ if (m instanceof Response) {
49
+ return await body(m);
50
+ }
51
+ if (ArrayBuffer.isView(m) || m instanceof ArrayBuffer) {
52
+ return m;
53
+ }
54
+ if (m instanceof WebAssembly.Module) {
55
+ return m;
56
+ }
57
+ throw new Error('Failed to load wasm module');
46
58
  }
47
59
  /** 获取模块的响应体 */
48
60
  async function body(response) {
@@ -55,9 +67,18 @@ async function body(response) {
55
67
  }
56
68
  }
57
69
  export const module = /* @__PURE__ */ (async () => {
58
- return load1()
59
- .catch(async () => load2())
60
- .catch(async () => load3())
61
- .catch(async () => load4());
70
+ const candidates = [loadEsmSh, loadEsm, loadUrl, loadDocument];
71
+ for (const candidate of candidates) {
72
+ try {
73
+ const mod = await candidate();
74
+ if (mod == null)
75
+ continue;
76
+ return mod;
77
+ }
78
+ catch {
79
+ // ignore
80
+ }
81
+ }
82
+ throw new Error('Failed to load wasm module');
62
83
  })();
63
84
  //# sourceMappingURL=web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/loader/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/loader/web.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirascript/wasm",
3
- "version": "0.1.47",
3
+ "version": "0.1.49",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "description": "MiraScript compiler for WebAssembly",
@@ -18,7 +18,7 @@
18
18
  "devDependencies": {
19
19
  "@types/node": "^25.2.3",
20
20
  "nodemon": "^3.1.11",
21
- "@mirascript/constants": "~0.1.47"
21
+ "@mirascript/constants": "~0.1.49"
22
22
  },
23
23
  "scripts": {
24
24
  "wasm": "wasm-pack build --target web --out-dir ../../packages/wasm/lib --no-pack ../../crates/wasm",
package/src/loader/web.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** 从 Document 推断 URL */
2
- async function load4() {
2
+ async function loadDocument() {
3
3
  const fallbackUrl =
4
4
  (document?.currentScript instanceof HTMLScriptElement
5
5
  ? document.currentScript.src
@@ -8,48 +8,60 @@ async function load4() {
8
8
  }
9
9
 
10
10
  /** 从 import.meta.url 推断 URL */
11
- async function load2() {
11
+ async function loadUrl() {
12
12
  return await body(fetch(new URL('../../lib/wasm_bg.wasm', import.meta.url)));
13
13
  }
14
14
 
15
- /** import.meta.resolve 推断 URL */
16
- async function load3() {
17
- return await body(fetch(new URL(import.meta.resolve('../../lib/wasm_bg.wasm'))));
15
+ /** esm 加载模块 */
16
+ async function loadEsm() {
17
+ // use ?url to force vite to load as bytes
18
+ // https://github.com/vitejs/vite/issues/12366
19
+ const m: unknown = await import('../../lib/wasm_bg.wasm?url', { with: { type: 'bytes' } });
20
+ return await mod(m);
18
21
  }
19
22
 
20
- /** 由 esm 加载模块 */
21
- async function load1() {
22
- /** 加载模块 */
23
- async function loadMod(mod: unknown): Promise<BufferSource> {
24
- if (mod && typeof mod == 'object' && 'default' in mod) {
25
- return loadMod(mod.default);
26
- }
27
- if (
28
- mod instanceof URL ||
29
- (typeof mod == 'string' &&
30
- (mod.startsWith('data:') ||
31
- mod.startsWith('http:') ||
32
- mod.startsWith('https:') ||
33
- mod.startsWith('//')))
34
- ) {
35
- return await body(fetch(mod));
36
- }
37
- if (mod instanceof Response) {
38
- return await body(mod);
39
- }
40
- if (ArrayBuffer.isView(mod) || mod instanceof ArrayBuffer) {
41
- return mod as ArrayBuffer;
42
- }
43
- if (mod instanceof WebAssembly.Module) {
44
- return mod as unknown as BufferSource;
23
+ /** 由 esm.sh 加载模块 */
24
+ async function loadEsmSh() {
25
+ const url = new URL(import.meta.url);
26
+ const { pathname } = url;
27
+ if (!pathname.includes('/@mirascript/wasm')) {
28
+ throw new Error('Not loaded from esm.sh');
29
+ }
30
+ const segments = pathname.split('/');
31
+ let newUrl = url.origin;
32
+ for (let i = 0; i < segments.length; i++) {
33
+ const segment = segments[i]!;
34
+ newUrl += segment + '/';
35
+ if (i >= 1 && segments[i - 1] === '@mirascript' && (segment === 'wasm' || segment?.startsWith('wasm@'))) {
36
+ break;
45
37
  }
46
- throw new Error('Failed to load wasm module');
47
38
  }
39
+ newUrl += 'lib/wasm_bg.wasm';
40
+ return await body(fetch(newUrl));
41
+ }
48
42
 
49
- // use ?url to force vite to load as bytes
50
- // https://github.com/vitejs/vite/issues/12366
51
- const mod: unknown = await import('../../lib/wasm_bg.wasm?url', { with: { type: 'bytes' } });
52
- return await loadMod(mod);
43
+ /** 加载模块 */
44
+ async function mod(m: unknown): Promise<BufferSource> {
45
+ if (m && typeof m == 'object' && 'default' in m) {
46
+ return mod(m.default);
47
+ }
48
+ if (
49
+ m instanceof URL ||
50
+ (typeof m == 'string' &&
51
+ (m.startsWith('data:') || m.startsWith('http:') || m.startsWith('https:') || m.startsWith('//')))
52
+ ) {
53
+ return await body(fetch(m));
54
+ }
55
+ if (m instanceof Response) {
56
+ return await body(m);
57
+ }
58
+ if (ArrayBuffer.isView(m) || m instanceof ArrayBuffer) {
59
+ return m as ArrayBuffer;
60
+ }
61
+ if (m instanceof WebAssembly.Module) {
62
+ return m as unknown as BufferSource;
63
+ }
64
+ throw new Error('Failed to load wasm module');
53
65
  }
54
66
 
55
67
  /** 获取模块的响应体 */
@@ -63,8 +75,15 @@ async function body(response: Response | Promise<Response>): Promise<BufferSourc
63
75
  }
64
76
 
65
77
  export const module: Promise<BufferSource> = /* @__PURE__ */ (async () => {
66
- return load1()
67
- .catch(async () => load2())
68
- .catch(async () => load3())
69
- .catch(async () => load4());
78
+ const candidates = [loadEsmSh, loadEsm, loadUrl, loadDocument];
79
+ for (const candidate of candidates) {
80
+ try {
81
+ const mod = await candidate();
82
+ if (mod == null) continue;
83
+ return mod;
84
+ } catch {
85
+ // ignore
86
+ }
87
+ }
88
+ throw new Error('Failed to load wasm module');
70
89
  })();