@mirascript/wasm 0.1.5 → 0.1.7

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":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAWnD,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,SAAS,CAKlC,CAAC"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/loader/web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA8BnD,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,SAAS,CAYlC,CAAC"}
@@ -5,10 +5,35 @@ async function loadFallback() {
5
5
  : (document.currentScript?.href?.baseVal ?? '')) || document.location.href;
6
6
  return await fetch(new URL('../../lib/wasm_bg.wasm', fallbackUrl));
7
7
  }
8
+ /** 加载模块 */
9
+ async function loadMod(mod) {
10
+ if (mod && typeof mod == 'object' && 'default' in mod) {
11
+ return loadMod(mod.default);
12
+ }
13
+ if (typeof mod == 'string' && mod.startsWith('data:')) {
14
+ return fetch(mod);
15
+ }
16
+ if (mod instanceof Response ||
17
+ ArrayBuffer.isView(mod) ||
18
+ mod instanceof ArrayBuffer ||
19
+ mod instanceof WebAssembly.Module) {
20
+ return mod;
21
+ }
22
+ throw new Error('Failed to load wasm module');
23
+ }
8
24
  export const module = /* @__PURE__ */ (async () => {
9
- if (!import.meta.url) {
10
- return await loadFallback();
25
+ try {
26
+ // use ?url to force vite to load as bytes
27
+ // https://github.com/vitejs/vite/issues/12366
28
+ return await loadMod(await import('../../lib/wasm_bg.wasm?url', { with: { type: 'bytes' } }));
29
+ }
30
+ catch {
31
+ if (!import.meta.url) {
32
+ return await loadFallback();
33
+ }
34
+ else {
35
+ return await fetch(new URL('../../lib/wasm_bg.wasm?url', import.meta.url));
36
+ }
11
37
  }
12
- return await fetch(new URL('../../lib/wasm_bg.wasm?url', import.meta.url));
13
38
  })();
14
39
  //# sourceMappingURL=web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/loader/web.ts"],"names":[],"mappings":"AAEA,WAAW;AACX,KAAK,UAAU,YAAY;IACvB,MAAM,WAAW,GACb,CAAC,QAAQ,EAAE,aAAa,YAAY,iBAAiB;QACjD,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG;QAC5B,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnF,OAAO,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAuB,eAAe,CAAC,CAAC,KAAK,IAAI,EAAE;IAClE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,OAAO,MAAM,YAAY,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/loader/web.ts"],"names":[],"mappings":"AAEA,WAAW;AACX,KAAK,UAAU,YAAY;IACvB,MAAM,WAAW,GACb,CAAC,QAAQ,EAAE,aAAa,YAAY,iBAAiB;QACjD,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG;QAC5B,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnF,OAAO,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,WAAW;AACX,KAAK,UAAU,OAAO,CAAC,GAAY;IAC/B,IAAI,GAAG,IAAI,OAAO,GAAG,IAAI,QAAQ,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;QACpD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,OAAO,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,IACI,GAAG,YAAY,QAAQ;QACvB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;QACvB,GAAG,YAAY,WAAW;QAC1B,GAAG,YAAY,WAAW,CAAC,MAAM,EACnC,CAAC;QACC,OAAO,GAAG,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAuB,eAAe,CAAC,CAAC,KAAK,IAAI,EAAE;IAClE,IAAI,CAAC;QACD,0CAA0C;QAC1C,8CAA8C;QAC9C,OAAO,MAAM,OAAO,CAAC,MAAM,MAAM,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO,MAAM,YAAY,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;AACL,CAAC,CAAC,EAAE,CAAC"}
package/lib/wasm.d.ts CHANGED
@@ -3,12 +3,12 @@
3
3
  export function main(): void;
4
4
  export function compile_buffer(script: Uint8Array, config: Config): CompileResult;
5
5
  export function compile(script: string, config: Config): CompileResult;
6
- export function constant_keywords(): string[];
6
+ export function get_diagnostic_message(code: DiagnosticCode): string | undefined;
7
7
  export function numeric_keywords(): string[];
8
- export function reserved_keywords(): string[];
9
- export function control_keywords(): string[];
10
8
  export function keywords(): string[];
11
- export function get_diagnostic_message(code: DiagnosticCode): string | undefined;
9
+ export function constant_keywords(): string[];
10
+ export function control_keywords(): string[];
11
+ export function reserved_keywords(): string[];
12
12
  export enum DiagnosticCode {
13
13
  ErrorStart = 1000,
14
14
  InternalError = 1001,
package/lib/wasm.js CHANGED
@@ -183,32 +183,36 @@ export function compile(script, config) {
183
183
  return CompileResult.__wrap(ret);
184
184
  }
185
185
 
186
- function getArrayJsValueFromWasm0(ptr, len) {
187
- ptr = ptr >>> 0;
188
- const mem = getDataViewMemory0();
189
- const result = [];
190
- for (let i = ptr; i < ptr + 4 * len; i += 4) {
191
- result.push(takeObject(mem.getUint32(i, true)));
192
- }
193
- return result;
194
- }
195
186
  /**
196
- * @returns {string[]}
187
+ * @param {DiagnosticCode} code
188
+ * @returns {string | undefined}
197
189
  */
198
- export function constant_keywords() {
190
+ export function get_diagnostic_message(code) {
199
191
  try {
200
192
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
201
- wasm.constant_keywords(retptr);
193
+ wasm.get_diagnostic_message(retptr, code);
202
194
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
203
195
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
204
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
205
- wasm.__wbindgen_export(r0, r1 * 4, 4);
196
+ let v1;
197
+ if (r0 !== 0) {
198
+ v1 = getStringFromWasm0(r0, r1).slice();
199
+ wasm.__wbindgen_export(r0, r1 * 1, 1);
200
+ }
206
201
  return v1;
207
202
  } finally {
208
203
  wasm.__wbindgen_add_to_stack_pointer(16);
209
204
  }
210
205
  }
211
206
 
207
+ function getArrayJsValueFromWasm0(ptr, len) {
208
+ ptr = ptr >>> 0;
209
+ const mem = getDataViewMemory0();
210
+ const result = [];
211
+ for (let i = ptr; i < ptr + 4 * len; i += 4) {
212
+ result.push(takeObject(mem.getUint32(i, true)));
213
+ }
214
+ return result;
215
+ }
212
216
  /**
213
217
  * @returns {string[]}
214
218
  */
@@ -229,10 +233,10 @@ export function numeric_keywords() {
229
233
  /**
230
234
  * @returns {string[]}
231
235
  */
232
- export function reserved_keywords() {
236
+ export function keywords() {
233
237
  try {
234
238
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
235
- wasm.reserved_keywords(retptr);
239
+ wasm.keywords(retptr);
236
240
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
237
241
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
238
242
  var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
@@ -246,10 +250,10 @@ export function reserved_keywords() {
246
250
  /**
247
251
  * @returns {string[]}
248
252
  */
249
- export function control_keywords() {
253
+ export function constant_keywords() {
250
254
  try {
251
255
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
252
- wasm.control_keywords(retptr);
256
+ wasm.constant_keywords(retptr);
253
257
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
254
258
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
255
259
  var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
@@ -263,10 +267,10 @@ export function control_keywords() {
263
267
  /**
264
268
  * @returns {string[]}
265
269
  */
266
- export function keywords() {
270
+ export function control_keywords() {
267
271
  try {
268
272
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
269
- wasm.keywords(retptr);
273
+ wasm.control_keywords(retptr);
270
274
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
271
275
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
272
276
  var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
@@ -278,20 +282,16 @@ export function keywords() {
278
282
  }
279
283
 
280
284
  /**
281
- * @param {DiagnosticCode} code
282
- * @returns {string | undefined}
285
+ * @returns {string[]}
283
286
  */
284
- export function get_diagnostic_message(code) {
287
+ export function reserved_keywords() {
285
288
  try {
286
289
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
287
- wasm.get_diagnostic_message(retptr, code);
290
+ wasm.reserved_keywords(retptr);
288
291
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
289
292
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
290
- let v1;
291
- if (r0 !== 0) {
292
- v1 = getStringFromWasm0(r0, r1).slice();
293
- wasm.__wbindgen_export(r0, r1 * 1, 1);
294
- }
293
+ var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
294
+ wasm.__wbindgen_export(r0, r1 * 4, 4);
295
295
  return v1;
296
296
  } finally {
297
297
  wasm.__wbindgen_add_to_stack_pointer(16);
package/lib/wasm_bg.wasm CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirascript/wasm",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "description": "MiraScript compiler for WebAssembly",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,4 @@
1
+ declare module '*.wasm?url' {
2
+ const value: BufferSource;
3
+ export default value;
4
+ }
package/src/loader/web.ts CHANGED
@@ -9,9 +9,35 @@ async function loadFallback() {
9
9
  return await fetch(new URL('../../lib/wasm_bg.wasm', fallbackUrl));
10
10
  }
11
11
 
12
+ /** 加载模块 */
13
+ async function loadMod(mod: unknown): Promise<InitInput> {
14
+ if (mod && typeof mod == 'object' && 'default' in mod) {
15
+ return loadMod(mod.default);
16
+ }
17
+ if (typeof mod == 'string' && mod.startsWith('data:')) {
18
+ return fetch(mod);
19
+ }
20
+ if (
21
+ mod instanceof Response ||
22
+ ArrayBuffer.isView(mod) ||
23
+ mod instanceof ArrayBuffer ||
24
+ mod instanceof WebAssembly.Module
25
+ ) {
26
+ return mod;
27
+ }
28
+ throw new Error('Failed to load wasm module');
29
+ }
30
+
12
31
  export const module: Promise<InitInput> = /* @__PURE__ */ (async () => {
13
- if (!import.meta.url) {
14
- return await loadFallback();
32
+ try {
33
+ // use ?url to force vite to load as bytes
34
+ // https://github.com/vitejs/vite/issues/12366
35
+ return await loadMod(await import('../../lib/wasm_bg.wasm?url', { with: { type: 'bytes' } }));
36
+ } catch {
37
+ if (!import.meta.url) {
38
+ return await loadFallback();
39
+ } else {
40
+ return await fetch(new URL('../../lib/wasm_bg.wasm?url', import.meta.url));
41
+ }
15
42
  }
16
- return await fetch(new URL('../../lib/wasm_bg.wasm?url', import.meta.url));
17
43
  })();