jseption 0.0.5 → 0.0.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.
Files changed (90) hide show
  1. package/README.md +30 -6
  2. package/dist/atoms.d.ts +1 -0
  3. package/dist/atoms.js +2 -1
  4. package/dist/atoms.js.map +1 -1
  5. package/dist/builtins/base64.d.ts +14 -0
  6. package/dist/builtins/base64.js +219 -0
  7. package/dist/builtins/base64.js.map +1 -0
  8. package/dist/builtins/bigint.js +3 -3
  9. package/dist/builtins/bigint.js.map +1 -1
  10. package/dist/builtins/date.d.ts +1 -0
  11. package/dist/builtins/date.js +26 -12
  12. package/dist/builtins/date.js.map +1 -1
  13. package/dist/builtins/error.js +9 -0
  14. package/dist/builtins/error.js.map +1 -1
  15. package/dist/builtins/float16.d.ts +3 -0
  16. package/dist/builtins/float16.js +69 -0
  17. package/dist/builtins/float16.js.map +1 -0
  18. package/dist/builtins/function.js +2 -2
  19. package/dist/builtins/index.js +9 -6
  20. package/dist/builtins/index.js.map +1 -1
  21. package/dist/builtins/iterator.d.ts +2 -0
  22. package/dist/builtins/iterator.js +624 -0
  23. package/dist/builtins/iterator.js.map +1 -0
  24. package/dist/builtins/json.d.ts +13 -1
  25. package/dist/builtins/json.js +283 -211
  26. package/dist/builtins/json.js.map +1 -1
  27. package/dist/builtins/mapset.js +365 -6
  28. package/dist/builtins/mapset.js.map +1 -1
  29. package/dist/builtins/math.js +203 -3
  30. package/dist/builtins/math.js.map +1 -1
  31. package/dist/builtins/native.js +6 -6
  32. package/dist/builtins/object.js +9 -2
  33. package/dist/builtins/object.js.map +1 -1
  34. package/dist/builtins/promise.js +31 -11
  35. package/dist/builtins/promise.js.map +1 -1
  36. package/dist/builtins/proxy.js +2 -2
  37. package/dist/builtins/reflect.js +6 -2
  38. package/dist/builtins/reflect.js.map +1 -1
  39. package/dist/builtins/regexp.js +74 -3
  40. package/dist/builtins/regexp.js.map +1 -1
  41. package/dist/builtins/string.js +1 -1
  42. package/dist/builtins/symbol.js +1 -1
  43. package/dist/builtins/symbol.js.map +1 -1
  44. package/dist/builtins/typedarray.d.ts +4 -1
  45. package/dist/builtins/typedarray.js +325 -37
  46. package/dist/builtins/typedarray.js.map +1 -1
  47. package/dist/builtins/weakref.js +7 -7
  48. package/dist/embed.d.ts +5 -0
  49. package/dist/embed.js +36 -11
  50. package/dist/embed.js.map +1 -1
  51. package/dist/interpreter.js +15 -14
  52. package/dist/interpreter.js.map +1 -1
  53. package/dist/jit.d.ts +1 -0
  54. package/dist/jit.js +51 -13
  55. package/dist/jit.js.map +1 -1
  56. package/dist/jit_hook.d.ts +1 -0
  57. package/dist/jit_hook.js.map +1 -1
  58. package/dist/jit_runtime.d.ts +1 -1
  59. package/dist/jit_runtime.js +6 -6
  60. package/dist/jit_runtime.js.map +1 -1
  61. package/dist/jit_stack.d.ts +1 -0
  62. package/dist/jit_stack.js +2 -1
  63. package/dist/jit_stack.js.map +1 -1
  64. package/dist/jseption.d.ts +2 -0
  65. package/dist/jseption.js +1 -0
  66. package/dist/jseption.js.map +1 -1
  67. package/dist/membrane.d.ts +6 -0
  68. package/dist/membrane.js +7 -3
  69. package/dist/membrane.js.map +1 -1
  70. package/dist/module.js +5 -3
  71. package/dist/module.js.map +1 -1
  72. package/dist/parser.js +26 -9
  73. package/dist/parser.js.map +1 -1
  74. package/dist/print.d.ts +12 -0
  75. package/dist/print.js +494 -0
  76. package/dist/print.js.map +1 -0
  77. package/dist/qjs.js +13 -10
  78. package/dist/qjs.js.map +1 -1
  79. package/dist/quickjs.d.ts +8 -0
  80. package/dist/quickjs.js +132 -53
  81. package/dist/quickjs.js.map +1 -1
  82. package/dist/std.d.ts +4 -2
  83. package/dist/std.js +42 -8
  84. package/dist/std.js.map +1 -1
  85. package/dist/values.d.ts +31 -27
  86. package/dist/values.js.map +1 -1
  87. package/dist/version.d.ts +1 -1
  88. package/dist/version.js +1 -1
  89. package/dist/version.js.map +1 -1
  90. package/package.json +1 -1
@@ -11,14 +11,14 @@ function js_weakref_constructor(ctx, new_target, argv) {
11
11
  const arg = argv[0];
12
12
  if (!js_weakref_is_target(arg))
13
13
  return JS_ThrowTypeError(ctx, 'invalid target');
14
- const obj = js_create_from_ctor(ctx, new_target, 54 /* JSClassID.WEAK_REF */);
14
+ const obj = js_create_from_ctor(ctx, new_target, 55 /* JSClassID.WEAK_REF */);
15
15
  if (JS_IsException(obj))
16
16
  return JS_EXCEPTION;
17
17
  JS_SetOpaque(obj, new JSWeakRefData(arg));
18
18
  return obj;
19
19
  }
20
20
  function js_weakref_deref(ctx, this_val, argv) {
21
- const wrd = JS_GetOpaque2(ctx, this_val, 54 /* JSClassID.WEAK_REF */);
21
+ const wrd = JS_GetOpaque2(ctx, this_val, 55 /* JSClassID.WEAK_REF */);
22
22
  if (!wrd)
23
23
  return JS_EXCEPTION;
24
24
  const target = wrd.target.deref();
@@ -67,14 +67,14 @@ function js_finrec_constructor(ctx, new_target, argv) {
67
67
  const cb = argv[0];
68
68
  if (!JS_IsFunction(ctx, cb))
69
69
  return JS_ThrowTypeError(ctx, 'argument must be a function');
70
- const obj = js_create_from_ctor(ctx, new_target, 55 /* JSClassID.FINALIZATION_REGISTRY */);
70
+ const obj = js_create_from_ctor(ctx, new_target, 56 /* JSClassID.FINALIZATION_REGISTRY */);
71
71
  if (JS_IsException(obj))
72
72
  return JS_EXCEPTION;
73
73
  JS_SetOpaque(obj, new JSFinalizationRegistryData(ctx, cb));
74
74
  return obj;
75
75
  }
76
76
  function js_finrec_register(ctx, this_val, argv) {
77
- const frd = JS_GetOpaque2(ctx, this_val, 55 /* JSClassID.FINALIZATION_REGISTRY */);
77
+ const frd = JS_GetOpaque2(ctx, this_val, 56 /* JSClassID.FINALIZATION_REGISTRY */);
78
78
  if (!frd)
79
79
  return JS_EXCEPTION;
80
80
  const target = argv[0];
@@ -92,7 +92,7 @@ function js_finrec_register(ctx, this_val, argv) {
92
92
  return undefined;
93
93
  }
94
94
  function js_finrec_unregister(ctx, this_val, argv) {
95
- const frd = JS_GetOpaque2(ctx, this_val, 55 /* JSClassID.FINALIZATION_REGISTRY */);
95
+ const frd = JS_GetOpaque2(ctx, this_val, 56 /* JSClassID.FINALIZATION_REGISTRY */);
96
96
  if (!frd)
97
97
  return JS_EXCEPTION;
98
98
  const token = argv[0];
@@ -118,12 +118,12 @@ const js_finrec_proto_funcs = [
118
118
  export function JS_AddIntrinsicWeakRef(ctx) {
119
119
  /* WeakRef */
120
120
  const weakref_proto = JS_NewObject(ctx);
121
- ctx.class_proto[54 /* JSClassID.WEAK_REF */] = weakref_proto;
121
+ ctx.class_proto[55 /* JSClassID.WEAK_REF */] = weakref_proto;
122
122
  JS_SetPropertyFunctionList(ctx, weakref_proto, js_weakref_proto_funcs);
123
123
  JS_NewGlobalCConstructor(ctx, 'WeakRef', js_weakref_constructor, 1, weakref_proto);
124
124
  /* FinalizationRegistry */
125
125
  const finrec_proto = JS_NewObject(ctx);
126
- ctx.class_proto[55 /* JSClassID.FINALIZATION_REGISTRY */] = finrec_proto;
126
+ ctx.class_proto[56 /* JSClassID.FINALIZATION_REGISTRY */] = finrec_proto;
127
127
  JS_SetPropertyFunctionList(ctx, finrec_proto, js_finrec_proto_funcs);
128
128
  JS_NewGlobalCConstructor(ctx, 'FinalizationRegistry', js_finrec_constructor, 1, finrec_proto);
129
129
  }
package/dist/embed.d.ts CHANGED
@@ -6,6 +6,11 @@ export interface ToGuestOptions {
6
6
  /** deep-convert the arguments guest code passes to a wrapped host function
7
7
  * into plain host values (default: pass the guest values through) */
8
8
  convertArgs?: boolean;
9
+ /** hand the guest host `ArrayBuffer`s, typed arrays and `DataView`s over
10
+ * the host memory itself rather than copies (default: copies). A
11
+ * `SharedArrayBuffer`, and a view over one, always crosses live: that is
12
+ * what it is for (a WebAssembly memory another thread fills). */
13
+ liveBuffers?: boolean;
9
14
  }
10
15
  export declare function isGuestValue(v: unknown): boolean;
11
16
  export declare function drainJobs(ctx: JSContext): void;
package/dist/embed.js CHANGED
@@ -10,7 +10,16 @@
10
10
  import { JS_IsException, JS_IsObject, JS_GetClassID, JS_GetAnyOpaque, JS_NewObject, JS_NewArrayFrom, JS_NewCFunction, JS_Call, JS_CallConstructor, JS_Throw, JS_GetException, JS_GetPropertyStr, JS_SetPropertyStr, JS_ToString, JS_NewErrorNative, JS_ExecutePendingJob, JS_IsJobPending, js_meta, } from "./quickjs.js";
11
11
  import { JS_NewPromiseCapability } from "./builtins/promise.js";
12
12
  import { JS_NewDate } from "./builtins/date.js";
13
- import { JS_NewArrayBufferCopy } from "./builtins/typedarray.js";
13
+ import { JS_NewArrayBufferCopy, JS_NewArrayBufferFrom, isSharedArrayBuffer } from "./builtins/typedarray.js";
14
+ /* the host getters of a view's buffer, offset and length: a guest view is a
15
+ host view re-prototyped, so its own `buffer` is the guest's getter */
16
+ const TA_PROTO = Object.getPrototypeOf(Uint8Array.prototype);
17
+ const hostGetter = (proto, key) => Object.getOwnPropertyDescriptor(proto, key).get;
18
+ const viewBuffer = (v) => (v instanceof DataView ? hostGetter(DataView.prototype, 'buffer') : hostGetter(TA_PROTO, 'buffer')).call(v);
19
+ const viewOffset = (v) => (v instanceof DataView ? hostGetter(DataView.prototype, 'byteOffset') : hostGetter(TA_PROTO, 'byteOffset')).call(v);
20
+ const viewLength = (v) => (v instanceof DataView ? hostGetter(DataView.prototype, 'byteLength') : hostGetter(TA_PROTO, 'length')).call(v);
21
+ /* the host constructor of a view: DataView, or the typed array kind */
22
+ const viewCtor = (v) => globalThis[v[Symbol.toStringTag]];
14
23
  const HOST_INTRINSIC_PROTOS = new Set([
15
24
  Object.prototype, Array.prototype, Function.prototype, Error.prototype, Date.prototype, RegExp.prototype,
16
25
  Map.prototype, Set.prototype, Promise.prototype, ArrayBuffer.prototype,
@@ -122,11 +131,20 @@ function toGuestRec(ctx, v, opts, seen) {
122
131
  s.add(toGuestRec(ctx, val, opts, seen));
123
132
  return s;
124
133
  }
125
- if (o instanceof ArrayBuffer)
134
+ if (o instanceof ArrayBuffer || isSharedArrayBuffer(o)) {
135
+ if (opts.liveBuffers || isSharedArrayBuffer(o))
136
+ return remember(JS_NewArrayBufferFrom(ctx, o));
126
137
  return remember(JS_NewArrayBufferCopy(ctx, new Uint8Array(o)));
138
+ }
127
139
  if (ArrayBuffer.isView(o)) {
128
- const buf = JS_NewArrayBufferCopy(ctx, new Uint8Array(o.buffer, o.byteOffset, o.byteLength));
129
140
  const name = o[Symbol.toStringTag]; /* "Uint8Array", "DataView", ... */
141
+ const buffer = viewBuffer(o);
142
+ if (opts.liveBuffers || isSharedArrayBuffer(buffer)) {
143
+ /* a view over the same host memory, through one guest buffer per host buffer */
144
+ const buf = toGuestRec(ctx, buffer, opts, seen);
145
+ return remember(construct(ctx, name, [buf, viewOffset(o), viewLength(o)]));
146
+ }
147
+ const buf = JS_NewArrayBufferCopy(ctx, new Uint8Array(buffer, viewOffset(o), o.byteLength));
130
148
  return remember(construct(ctx, name, [buf]));
131
149
  }
132
150
  const proto = Object.getPrototypeOf(o);
@@ -237,7 +255,7 @@ function fromGuestRec(ctx, v, seen, hook) {
237
255
  return cached;
238
256
  const o = v;
239
257
  switch (JS_GetClassID(v)) {
240
- case 45 /* JSClassID.PROMISE */:
258
+ case 46 /* JSClassID.PROMISE */:
241
259
  return guestPromiseToHost(ctx, v);
242
260
  case 10 /* JSClassID.DATE */:
243
261
  return new Date(JS_GetAnyOpaque(v));
@@ -245,14 +263,14 @@ function fromGuestRec(ctx, v, seen, hook) {
245
263
  return guestErrorToHost(ctx, v);
246
264
  case 18 /* JSClassID.REGEXP */:
247
265
  return new RegExp(o.source, o.flags);
248
- case 34 /* JSClassID.MAP */: {
266
+ case 35 /* JSClassID.MAP */: {
249
267
  const m = new Map();
250
268
  seen.set(v, m);
251
269
  for (const [k, val] of Map.prototype.entries.call(o))
252
270
  m.set(fromGuestRec(ctx, k, seen, hook), fromGuestRec(ctx, val, seen, hook));
253
271
  return m;
254
272
  }
255
- case 35 /* JSClassID.SET */: {
273
+ case 36 /* JSClassID.SET */: {
256
274
  const s = new Set();
257
275
  seen.set(v, s);
258
276
  for (const val of Set.prototype.values.call(o))
@@ -260,13 +278,20 @@ function fromGuestRec(ctx, v, seen, hook) {
260
278
  return s;
261
279
  }
262
280
  case 19 /* JSClassID.ARRAY_BUFFER */:
263
- /* the guest object is the host ArrayBuffer re-prototyped: copy it */
264
- return new Uint8Array(o).slice().buffer;
281
+ /* the guest object holds the host ArrayBuffer: copy it */
282
+ return new Uint8Array(JS_GetAnyOpaque(v).buffer).slice().buffer;
283
+ case 20 /* JSClassID.SHARED_ARRAY_BUFFER */:
284
+ /* shared memory is shared: the host buffer itself */
285
+ return JS_GetAnyOpaque(v).buffer;
265
286
  }
266
287
  if (ArrayBuffer.isView(o)) {
267
- /* guest typed arrays are host views re-prototyped: copy with the host constructor */
268
- const Ctor = globalThis[o[Symbol.toStringTag]];
269
- return Ctor ? new Ctor(o) : new Uint8Array(o);
288
+ /* guest typed arrays are host views re-prototyped: a view over shared memory
289
+ stays over it; anything else is copied with the host constructor */
290
+ const Ctor = viewCtor(o) ?? Uint8Array;
291
+ const buffer = viewBuffer(o);
292
+ if (isSharedArrayBuffer(buffer))
293
+ return new Ctor(buffer, viewOffset(o), viewLength(o));
294
+ return new Ctor(o);
270
295
  }
271
296
  if (Array.isArray(o)) {
272
297
  const a = [];
package/dist/embed.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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","sourcesContent":["/* Embedding helpers: moving values between the host and the guest.\n *\n * Guest values are host values, but the sandbox requires that nothing the\n * guest can reach has a host intrinsic in its prototype chain. A host\n * object therefore cannot be handed to the guest as is: `toGuest` copies\n * plain data into guest objects, wraps host functions in guest functions,\n * and bridges host promises to guest promises. `fromGuest` does the\n * reverse so the host gets ordinary host objects (and can call guest\n * functions / await guest promises). Primitives cross unchanged. */\n\nimport {\n JSContext, JSValue, JSClassID, JS_IsException, JS_IsObject, JS_GetClassID, JS_GetAnyOpaque,\n JS_NewObject, JS_NewArrayFrom, JS_NewCFunction, JS_Call, JS_CallConstructor, JS_Throw,\n JS_GetException, JS_GetPropertyStr, JS_SetPropertyStr, JS_ToString, JS_NewErrorNative,\n JS_ExecutePendingJob, JS_IsJobPending, js_meta,\n} from './quickjs.ts';\nimport { JSErrorEnum } from './values.ts';\nimport { JS_NewPromiseCapability } from './builtins/promise.ts';\nimport { JS_NewDate } from './builtins/date.ts';\nimport { JS_NewArrayBufferCopy } from './builtins/typedarray.ts';\n\nexport interface ToGuestOptions {\n /** convert a host value the default rules reject (class instances); return\n * undefined to fall through to the TypeError */\n custom?: (ctx: JSContext, value: object) => JSValue | undefined;\n /** deep-convert the arguments guest code passes to a wrapped host function\n * into plain host values (default: pass the guest values through) */\n convertArgs?: boolean;\n}\n\nconst HOST_INTRINSIC_PROTOS = new Set<object>([\n Object.prototype, Array.prototype, Function.prototype, Error.prototype, Date.prototype, RegExp.prototype,\n Map.prototype, Set.prototype, Promise.prototype, ArrayBuffer.prototype,\n Object.getPrototypeOf(Uint8Array.prototype),\n]);\n\n/* true if the value is already safe to hand to the guest: engine metadata or\n a prototype chain that never reaches a host intrinsic */\nexport function isGuestValue(v: unknown): boolean {\n if (typeof v === 'function' || (typeof v === 'object' && v !== null)) {\n if (js_meta.has(v as object)) return true;\n let p: object | null = v as object;\n while (p !== null) {\n if (HOST_INTRINSIC_PROTOS.has(p) || p === globalThis) return false;\n p = Object.getPrototypeOf(p);\n }\n return true;\n }\n return true;\n}\n\n/* run the guest job queue (promise reactions) until it is empty */\nexport function drainJobs(ctx: JSContext): void {\n const rt = ctx.rt;\n const pctx = { ctx: null as JSContext | null };\n while (JS_IsJobPending(rt)) JS_ExecutePendingJob(rt, pctx);\n}\n\nfunction guestCtor(ctx: JSContext, name: string): JSValue {\n return JS_GetPropertyStr(ctx, ctx.global_obj, name);\n}\n\nfunction throwGuestException(ctx: JSContext): never {\n throw guestErrorToHost(ctx, JS_GetException(ctx));\n}\n\n/* convert a guest exception value into a host Error for host callers */\nexport function guestErrorToHost(ctx: JSContext, exc: JSValue): Error {\n if (JS_IsObject(exc) && JS_GetClassID(exc) === JSClassID.ERROR) {\n const o = exc as any;\n const err = new Error(String(o.message ?? ''));\n err.name = String(o.name ?? 'Error');\n if (typeof o.stack === 'string') (err as any).guestStack = o.stack;\n return err;\n }\n const err = new Error(typeof exc === 'string' ? exc : String(JS_ToString(ctx, exc)));\n (err as any).guestValue = exc;\n return err;\n}\n\nconst ERROR_KINDS: Record<string, JSErrorEnum> = {\n EvalError: JSErrorEnum.EVAL_ERROR, RangeError: JSErrorEnum.RANGE_ERROR, ReferenceError: JSErrorEnum.REFERENCE_ERROR,\n SyntaxError: JSErrorEnum.SYNTAX_ERROR, TypeError: JSErrorEnum.TYPE_ERROR, URIError: JSErrorEnum.URI_ERROR,\n};\n\n/* host value -> guest value */\nexport function toGuest(ctx: JSContext, value: unknown, opts: ToGuestOptions = {}): JSValue {\n return toGuestRec(ctx, value, opts, new Map());\n}\n\nfunction toGuestRec(ctx: JSContext, v: unknown, opts: ToGuestOptions, seen: Map<object, JSValue>): JSValue {\n switch (typeof v) {\n case 'undefined': case 'boolean': case 'number': case 'string': case 'bigint': case 'symbol':\n return v as JSValue;\n case 'function':\n if (isGuestValue(v)) return v as JSValue;\n return hostFunction(ctx, v as (...args: any[]) => unknown, (v as Function).name, (v as Function).length, opts);\n }\n if (v === null) return null;\n const o = v as any;\n if (isGuestValue(o)) return o;\n const cached = seen.get(o);\n if (cached !== undefined) return cached;\n const remember = (g: JSValue): JSValue => { seen.set(o, g); return g; };\n\n if (typeof o.then === 'function') return remember(hostPromise(ctx, o, opts));\n if (Array.isArray(o)) {\n const arr = JS_NewArrayFrom(ctx, []) as any;\n seen.set(o, arr);\n for (let i = 0; i < o.length; i++) arr[i] = toGuestRec(ctx, o[i], opts, seen);\n return arr;\n }\n if (o instanceof Date) return remember(JS_NewDate(ctx, o.getTime()));\n if (o instanceof RegExp) return remember(construct(ctx, 'RegExp', [o.source, o.flags]));\n if (o instanceof Error) {\n const kind = ERROR_KINDS[o.name] ?? JSErrorEnum.PLAIN_ERROR;\n const err = JS_NewErrorNative(ctx, kind, String(o.message));\n return remember(err);\n }\n if (o instanceof Map) {\n const m = construct(ctx, 'Map', []) as any;\n seen.set(o, m);\n for (const [k, val] of o) m.set(toGuestRec(ctx, k, opts, seen), toGuestRec(ctx, val, opts, seen));\n return m;\n }\n if (o instanceof Set) {\n const s = construct(ctx, 'Set', []) as any;\n seen.set(o, s);\n for (const val of o) s.add(toGuestRec(ctx, val, opts, seen));\n return s;\n }\n if (o instanceof ArrayBuffer) return remember(JS_NewArrayBufferCopy(ctx, new Uint8Array(o)));\n if (ArrayBuffer.isView(o)) {\n const buf = JS_NewArrayBufferCopy(ctx, new Uint8Array(o.buffer, o.byteOffset, o.byteLength));\n const name = (o as any)[Symbol.toStringTag] as string; /* \"Uint8Array\", \"DataView\", ... */\n return remember(construct(ctx, name, [buf]));\n }\n const proto = Object.getPrototypeOf(o);\n if (proto === Object.prototype || proto === null) {\n const g = JS_NewObject(ctx) as any;\n seen.set(o, g);\n for (const k of Reflect.ownKeys(o)) {\n const d = Reflect.getOwnPropertyDescriptor(o, k)!;\n if (!d.enumerable) continue;\n g[k] = toGuestRec(ctx, o[k], opts, seen);\n }\n return g;\n }\n if (opts.custom) {\n const r = opts.custom(ctx, o);\n if (r !== undefined) return remember(r);\n }\n throw new TypeError(`toGuest: cannot pass a host ${proto?.constructor?.name ?? 'object'} to the guest; ` +\n 'pass plain data, functions, promises, or provide a custom converter');\n}\n\nfunction construct(ctx: JSContext, ctorName: string, args: unknown[]): JSValue {\n const r = JS_CallConstructor(ctx, guestCtor(ctx, ctorName), args as JSValue[]);\n if (JS_IsException(r)) throwGuestException(ctx);\n return r;\n}\n\n/* a guest function that calls the host function. Host exceptions become\n guest errors; host return values (including promises) are converted. */\nexport function hostFunction(ctx: JSContext, fn: (...args: any[]) => unknown, name = fn.name || 'hostFunction',\n length = fn.length, opts: ToGuestOptions = {}): JSValue {\n return JS_NewCFunction(ctx, (ctx2: JSContext, this_val: JSValue, argv: JSValue[]) => {\n try {\n const args = opts.convertArgs ? argv.map(a => fromGuest(ctx2, a)) : argv;\n const self = opts.convertArgs ? fromGuest(ctx2, this_val) : this_val;\n return toGuest(ctx2, fn.apply(self, args), opts);\n } catch (e) {\n return JS_Throw(ctx2, toGuest(ctx2, e, opts));\n }\n }, name, length);\n}\n\n/* a guest promise that settles when the host promise does; guest jobs are\n run after the settlement so `await` continuations execute promptly */\nexport function hostPromise(ctx: JSContext, p: PromiseLike<unknown>, opts: ToGuestOptions = {}): JSValue {\n return hostPromiseWith(ctx, p, v => toGuest(ctx, v, opts), e => toGuest(ctx, e, opts));\n}\n\n/* hostPromise with the conversions supplied by the caller (the membrane\n converts results live); `reject` converts a rejection reason or an\n exception thrown by `resolve` */\nexport function hostPromiseWith(ctx: JSContext, p: PromiseLike<unknown>, resolve: (v: unknown) => JSValue,\n reject: (e: unknown) => JSValue): JSValue {\n const funcs: [JSValue, JSValue] = [undefined, undefined];\n const promise = JS_NewPromiseCapability(ctx, funcs);\n if (JS_IsException(promise)) throwGuestException(ctx);\n const settle = (ok: boolean, v: unknown) => {\n let fn = ok ? funcs[0] : funcs[1];\n let g: JSValue;\n try { g = ok ? resolve(v) : reject(v); } catch (e) { fn = funcs[1]; g = reject(e); }\n JS_Call(ctx, fn, undefined, [g]);\n drainJobs(ctx);\n };\n p.then(v => settle(true, v), e => settle(false, e));\n return promise;\n}\n\n/* define a global variable in the guest */\nexport function expose(ctx: JSContext, name: string, value: unknown, opts: ToGuestOptions = {}): void {\n if (JS_SetPropertyStr(ctx, ctx.global_obj, name, toGuest(ctx, value, opts)) < 0) throwGuestException(ctx);\n}\n\n/* guest value -> plain host value: objects and arrays are copied, guest\n functions become host functions (that call into the guest), guest\n promises become host promises, errors become host Errors */\nexport function fromGuest(ctx: JSContext, value: JSValue): unknown {\n return fromGuestRec(ctx, value, new Map(), undefined);\n}\n\n/* returned by a fromGuestWith hook to let the default conversion handle a value */\nexport const FROM_GUEST_DEFAULT: unique symbol = Symbol('fromGuest default');\nexport type FromGuestHook = (v: JSValue) => unknown;\n\n/* fromGuest with a hook that is offered every value first, at every depth\n (the membrane unwraps its proxies and wraps guest functions this way) */\nexport function fromGuestWith(ctx: JSContext, value: JSValue, hook: FromGuestHook): unknown {\n return fromGuestRec(ctx, value, new Map(), hook);\n}\n\nfunction fromGuestRec(ctx: JSContext, v: JSValue, seen: Map<object, unknown>, hook: FromGuestHook | undefined): unknown {\n if (hook !== undefined) {\n const r = hook(v);\n if (r !== FROM_GUEST_DEFAULT) return r;\n }\n if (typeof v === 'function') {\n return (...args: unknown[]) => {\n const r = JS_Call(ctx, v, undefined, args.map(a => toGuest(ctx, a)));\n if (JS_IsException(r)) throwGuestException(ctx);\n return fromGuest(ctx, r);\n };\n }\n if (typeof v !== 'object' || v === null) return v;\n const cached = seen.get(v);\n if (cached !== undefined) return cached;\n const o = v as any;\n switch (JS_GetClassID(v)) {\n case JSClassID.PROMISE:\n return guestPromiseToHost(ctx, v);\n case JSClassID.DATE:\n return new Date(JS_GetAnyOpaque(v) as number);\n case JSClassID.ERROR:\n return guestErrorToHost(ctx, v);\n case JSClassID.REGEXP:\n return new RegExp(o.source, o.flags);\n case JSClassID.MAP: {\n const m = new Map(); seen.set(v, m);\n for (const [k, val] of Map.prototype.entries.call(o)) m.set(fromGuestRec(ctx, k, seen, hook), fromGuestRec(ctx, val, seen, hook));\n return m;\n }\n case JSClassID.SET: {\n const s = new Set(); seen.set(v, s);\n for (const val of Set.prototype.values.call(o)) s.add(fromGuestRec(ctx, val, seen, hook));\n return s;\n }\n case JSClassID.ARRAY_BUFFER:\n /* the guest object is the host ArrayBuffer re-prototyped: copy it */\n return new Uint8Array(o as ArrayBuffer).slice().buffer;\n }\n if (ArrayBuffer.isView(o)) {\n /* guest typed arrays are host views re-prototyped: copy with the host constructor */\n const Ctor = (globalThis as any)[(o as any)[Symbol.toStringTag]];\n return Ctor ? new Ctor(o as any) : new Uint8Array(o as any);\n }\n if (Array.isArray(o)) {\n const a: unknown[] = []; seen.set(v, a);\n for (let i = 0; i < o.length; i++) a[i] = fromGuestRec(ctx, o[i], seen, hook);\n return a;\n }\n const r: Record<PropertyKey, unknown> = {}; seen.set(v, r);\n for (const k of Reflect.ownKeys(o)) {\n const d = Reflect.getOwnPropertyDescriptor(o, k)!;\n if (!d.enumerable) continue;\n r[k] = fromGuestRec(ctx, o[k], seen, hook);\n }\n return r;\n}\n\n/* a host promise that settles when the guest promise does */\nexport function guestPromiseToHost(ctx: JSContext, promise: JSValue): Promise<unknown> {\n return guestPromiseToHostWith(ctx, promise, v => fromGuest(ctx, v), e => fromGuestRejection(ctx, e));\n}\n\n/* guestPromiseToHost with the conversions supplied by the caller */\nexport function guestPromiseToHostWith(ctx: JSContext, promise: JSValue, convert: (v: JSValue) => unknown,\n convertRejection: (e: JSValue) => unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n const then = JS_GetPropertyStr(ctx, promise, 'then');\n const settle = (fn: (x: unknown) => void, conv: (v: JSValue) => unknown, v: JSValue): JSValue => {\n try { fn(conv(v)); } catch (e) { reject(e); }\n return undefined;\n };\n const onFul = JS_NewCFunction(ctx, (_c, _t, argv) => settle(resolve, convert, argv[0]), 'resolve', 1);\n const onRej = JS_NewCFunction(ctx, (_c, _t, argv) => settle(reject, convertRejection, argv[0]), 'reject', 1);\n const r = JS_Call(ctx, then, promise, [onFul, onRej]);\n if (JS_IsException(r)) reject(guestErrorToHost(ctx, JS_GetException(ctx)));\n drainJobs(ctx);\n });\n}\n\nfunction fromGuestRejection(ctx: JSContext, reason: JSValue): unknown {\n if (JS_IsObject(reason) && JS_GetClassID(reason) === JSClassID.ERROR) return guestErrorToHost(ctx, reason);\n return fromGuest(ctx, reason);\n}\n"]}
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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","sourcesContent":["/* Embedding helpers: moving values between the host and the guest.\n *\n * Guest values are host values, but the sandbox requires that nothing the\n * guest can reach has a host intrinsic in its prototype chain. A host\n * object therefore cannot be handed to the guest as is: `toGuest` copies\n * plain data into guest objects, wraps host functions in guest functions,\n * and bridges host promises to guest promises. `fromGuest` does the\n * reverse so the host gets ordinary host objects (and can call guest\n * functions / await guest promises). Primitives cross unchanged. */\n\nimport {\n JSContext, JSValue, JSClassID, JS_IsException, JS_IsObject, JS_GetClassID, JS_GetAnyOpaque,\n JS_NewObject, JS_NewArrayFrom, JS_NewCFunction, JS_Call, JS_CallConstructor, JS_Throw,\n JS_GetException, JS_GetPropertyStr, JS_SetPropertyStr, JS_ToString, JS_NewErrorNative,\n JS_ExecutePendingJob, JS_IsJobPending, js_meta,\n} from './quickjs.ts';\nimport { JSErrorEnum } from './values.ts';\nimport { JS_NewPromiseCapability } from './builtins/promise.ts';\nimport { JS_NewDate } from './builtins/date.ts';\nimport { JS_NewArrayBufferCopy, JS_NewArrayBufferFrom, isSharedArrayBuffer } from './builtins/typedarray.ts';\n\nexport interface ToGuestOptions {\n /** convert a host value the default rules reject (class instances); return\n * undefined to fall through to the TypeError */\n custom?: (ctx: JSContext, value: object) => JSValue | undefined;\n /** deep-convert the arguments guest code passes to a wrapped host function\n * into plain host values (default: pass the guest values through) */\n convertArgs?: boolean;\n /** hand the guest host `ArrayBuffer`s, typed arrays and `DataView`s over\n * the host memory itself rather than copies (default: copies). A\n * `SharedArrayBuffer`, and a view over one, always crosses live: that is\n * what it is for (a WebAssembly memory another thread fills). */\n liveBuffers?: boolean;\n}\n\n/* the host getters of a view's buffer, offset and length: a guest view is a\n host view re-prototyped, so its own `buffer` is the guest's getter */\nconst TA_PROTO = Object.getPrototypeOf(Uint8Array.prototype) as object;\nconst hostGetter = (proto: object, key: string) => Object.getOwnPropertyDescriptor(proto, key)!.get!;\nconst viewBuffer = (v: ArrayBufferView): ArrayBuffer | SharedArrayBuffer =>\n (v instanceof DataView ? hostGetter(DataView.prototype, 'buffer') : hostGetter(TA_PROTO, 'buffer')).call(v);\nconst viewOffset = (v: ArrayBufferView): number =>\n (v instanceof DataView ? hostGetter(DataView.prototype, 'byteOffset') : hostGetter(TA_PROTO, 'byteOffset')).call(v);\nconst viewLength = (v: ArrayBufferView): number =>\n (v instanceof DataView ? hostGetter(DataView.prototype, 'byteLength') : hostGetter(TA_PROTO, 'length')).call(v);\n/* the host constructor of a view: DataView, or the typed array kind */\nconst viewCtor = (v: ArrayBufferView): any => (globalThis as any)[(v as any)[Symbol.toStringTag] as string];\n\nconst HOST_INTRINSIC_PROTOS = new Set<object>([\n Object.prototype, Array.prototype, Function.prototype, Error.prototype, Date.prototype, RegExp.prototype,\n Map.prototype, Set.prototype, Promise.prototype, ArrayBuffer.prototype,\n Object.getPrototypeOf(Uint8Array.prototype),\n]);\n\n/* true if the value is already safe to hand to the guest: engine metadata or\n a prototype chain that never reaches a host intrinsic */\nexport function isGuestValue(v: unknown): boolean {\n if (typeof v === 'function' || (typeof v === 'object' && v !== null)) {\n if (js_meta.has(v as object)) return true;\n let p: object | null = v as object;\n while (p !== null) {\n if (HOST_INTRINSIC_PROTOS.has(p) || p === globalThis) return false;\n p = Object.getPrototypeOf(p);\n }\n return true;\n }\n return true;\n}\n\n/* run the guest job queue (promise reactions) until it is empty */\nexport function drainJobs(ctx: JSContext): void {\n const rt = ctx.rt;\n const pctx = { ctx: null as JSContext | null };\n while (JS_IsJobPending(rt)) JS_ExecutePendingJob(rt, pctx);\n}\n\nfunction guestCtor(ctx: JSContext, name: string): JSValue {\n return JS_GetPropertyStr(ctx, ctx.global_obj, name);\n}\n\nfunction throwGuestException(ctx: JSContext): never {\n throw guestErrorToHost(ctx, JS_GetException(ctx));\n}\n\n/* convert a guest exception value into a host Error for host callers */\nexport function guestErrorToHost(ctx: JSContext, exc: JSValue): Error {\n if (JS_IsObject(exc) && JS_GetClassID(exc) === JSClassID.ERROR) {\n const o = exc as any;\n const err = new Error(String(o.message ?? ''));\n err.name = String(o.name ?? 'Error');\n if (typeof o.stack === 'string') (err as any).guestStack = o.stack;\n return err;\n }\n const err = new Error(typeof exc === 'string' ? exc : String(JS_ToString(ctx, exc)));\n (err as any).guestValue = exc;\n return err;\n}\n\nconst ERROR_KINDS: Record<string, JSErrorEnum> = {\n EvalError: JSErrorEnum.EVAL_ERROR, RangeError: JSErrorEnum.RANGE_ERROR, ReferenceError: JSErrorEnum.REFERENCE_ERROR,\n SyntaxError: JSErrorEnum.SYNTAX_ERROR, TypeError: JSErrorEnum.TYPE_ERROR, URIError: JSErrorEnum.URI_ERROR,\n};\n\n/* host value -> guest value */\nexport function toGuest(ctx: JSContext, value: unknown, opts: ToGuestOptions = {}): JSValue {\n return toGuestRec(ctx, value, opts, new Map());\n}\n\nfunction toGuestRec(ctx: JSContext, v: unknown, opts: ToGuestOptions, seen: Map<object, JSValue>): JSValue {\n switch (typeof v) {\n case 'undefined': case 'boolean': case 'number': case 'string': case 'bigint': case 'symbol':\n return v as JSValue;\n case 'function':\n if (isGuestValue(v)) return v as JSValue;\n return hostFunction(ctx, v as (...args: any[]) => unknown, (v as Function).name, (v as Function).length, opts);\n }\n if (v === null) return null;\n const o = v as any;\n if (isGuestValue(o)) return o;\n const cached = seen.get(o);\n if (cached !== undefined) return cached;\n const remember = (g: JSValue): JSValue => { seen.set(o, g); return g; };\n\n if (typeof o.then === 'function') return remember(hostPromise(ctx, o, opts));\n if (Array.isArray(o)) {\n const arr = JS_NewArrayFrom(ctx, []) as any;\n seen.set(o, arr);\n for (let i = 0; i < o.length; i++) arr[i] = toGuestRec(ctx, o[i], opts, seen);\n return arr;\n }\n if (o instanceof Date) return remember(JS_NewDate(ctx, o.getTime()));\n if (o instanceof RegExp) return remember(construct(ctx, 'RegExp', [o.source, o.flags]));\n if (o instanceof Error) {\n const kind = ERROR_KINDS[o.name] ?? JSErrorEnum.PLAIN_ERROR;\n const err = JS_NewErrorNative(ctx, kind, String(o.message));\n return remember(err);\n }\n if (o instanceof Map) {\n const m = construct(ctx, 'Map', []) as any;\n seen.set(o, m);\n for (const [k, val] of o) m.set(toGuestRec(ctx, k, opts, seen), toGuestRec(ctx, val, opts, seen));\n return m;\n }\n if (o instanceof Set) {\n const s = construct(ctx, 'Set', []) as any;\n seen.set(o, s);\n for (const val of o) s.add(toGuestRec(ctx, val, opts, seen));\n return s;\n }\n if (o instanceof ArrayBuffer || isSharedArrayBuffer(o)) {\n if (opts.liveBuffers || isSharedArrayBuffer(o)) return remember(JS_NewArrayBufferFrom(ctx, o));\n return remember(JS_NewArrayBufferCopy(ctx, new Uint8Array(o)));\n }\n if (ArrayBuffer.isView(o)) {\n const name = (o as any)[Symbol.toStringTag] as string; /* \"Uint8Array\", \"DataView\", ... */\n const buffer = viewBuffer(o);\n if (opts.liveBuffers || isSharedArrayBuffer(buffer)) {\n /* a view over the same host memory, through one guest buffer per host buffer */\n const buf = toGuestRec(ctx, buffer, opts, seen);\n return remember(construct(ctx, name, [buf, viewOffset(o), viewLength(o)]));\n }\n const buf = JS_NewArrayBufferCopy(ctx, new Uint8Array(buffer, viewOffset(o), o.byteLength));\n return remember(construct(ctx, name, [buf]));\n }\n const proto = Object.getPrototypeOf(o);\n if (proto === Object.prototype || proto === null) {\n const g = JS_NewObject(ctx) as any;\n seen.set(o, g);\n for (const k of Reflect.ownKeys(o)) {\n const d = Reflect.getOwnPropertyDescriptor(o, k)!;\n if (!d.enumerable) continue;\n g[k] = toGuestRec(ctx, o[k], opts, seen);\n }\n return g;\n }\n if (opts.custom) {\n const r = opts.custom(ctx, o);\n if (r !== undefined) return remember(r);\n }\n throw new TypeError(`toGuest: cannot pass a host ${proto?.constructor?.name ?? 'object'} to the guest; ` +\n 'pass plain data, functions, promises, or provide a custom converter');\n}\n\nfunction construct(ctx: JSContext, ctorName: string, args: unknown[]): JSValue {\n const r = JS_CallConstructor(ctx, guestCtor(ctx, ctorName), args as JSValue[]);\n if (JS_IsException(r)) throwGuestException(ctx);\n return r;\n}\n\n/* a guest function that calls the host function. Host exceptions become\n guest errors; host return values (including promises) are converted. */\nexport function hostFunction(ctx: JSContext, fn: (...args: any[]) => unknown, name = fn.name || 'hostFunction',\n length = fn.length, opts: ToGuestOptions = {}): JSValue {\n return JS_NewCFunction(ctx, (ctx2: JSContext, this_val: JSValue, argv: JSValue[]) => {\n try {\n const args = opts.convertArgs ? argv.map(a => fromGuest(ctx2, a)) : argv;\n const self = opts.convertArgs ? fromGuest(ctx2, this_val) : this_val;\n return toGuest(ctx2, fn.apply(self, args), opts);\n } catch (e) {\n return JS_Throw(ctx2, toGuest(ctx2, e, opts));\n }\n }, name, length);\n}\n\n/* a guest promise that settles when the host promise does; guest jobs are\n run after the settlement so `await` continuations execute promptly */\nexport function hostPromise(ctx: JSContext, p: PromiseLike<unknown>, opts: ToGuestOptions = {}): JSValue {\n return hostPromiseWith(ctx, p, v => toGuest(ctx, v, opts), e => toGuest(ctx, e, opts));\n}\n\n/* hostPromise with the conversions supplied by the caller (the membrane\n converts results live); `reject` converts a rejection reason or an\n exception thrown by `resolve` */\nexport function hostPromiseWith(ctx: JSContext, p: PromiseLike<unknown>, resolve: (v: unknown) => JSValue,\n reject: (e: unknown) => JSValue): JSValue {\n const funcs: [JSValue, JSValue] = [undefined, undefined];\n const promise = JS_NewPromiseCapability(ctx, funcs);\n if (JS_IsException(promise)) throwGuestException(ctx);\n const settle = (ok: boolean, v: unknown) => {\n let fn = ok ? funcs[0] : funcs[1];\n let g: JSValue;\n try { g = ok ? resolve(v) : reject(v); } catch (e) { fn = funcs[1]; g = reject(e); }\n JS_Call(ctx, fn, undefined, [g]);\n drainJobs(ctx);\n };\n p.then(v => settle(true, v), e => settle(false, e));\n return promise;\n}\n\n/* define a global variable in the guest */\nexport function expose(ctx: JSContext, name: string, value: unknown, opts: ToGuestOptions = {}): void {\n if (JS_SetPropertyStr(ctx, ctx.global_obj, name, toGuest(ctx, value, opts)) < 0) throwGuestException(ctx);\n}\n\n/* guest value -> plain host value: objects and arrays are copied, guest\n functions become host functions (that call into the guest), guest\n promises become host promises, errors become host Errors */\nexport function fromGuest(ctx: JSContext, value: JSValue): unknown {\n return fromGuestRec(ctx, value, new Map(), undefined);\n}\n\n/* returned by a fromGuestWith hook to let the default conversion handle a value */\nexport const FROM_GUEST_DEFAULT: unique symbol = Symbol('fromGuest default');\nexport type FromGuestHook = (v: JSValue) => unknown;\n\n/* fromGuest with a hook that is offered every value first, at every depth\n (the membrane unwraps its proxies and wraps guest functions this way) */\nexport function fromGuestWith(ctx: JSContext, value: JSValue, hook: FromGuestHook): unknown {\n return fromGuestRec(ctx, value, new Map(), hook);\n}\n\nfunction fromGuestRec(ctx: JSContext, v: JSValue, seen: Map<object, unknown>, hook: FromGuestHook | undefined): unknown {\n if (hook !== undefined) {\n const r = hook(v);\n if (r !== FROM_GUEST_DEFAULT) return r;\n }\n if (typeof v === 'function') {\n return (...args: unknown[]) => {\n const r = JS_Call(ctx, v, undefined, args.map(a => toGuest(ctx, a)));\n if (JS_IsException(r)) throwGuestException(ctx);\n return fromGuest(ctx, r);\n };\n }\n if (typeof v !== 'object' || v === null) return v;\n const cached = seen.get(v);\n if (cached !== undefined) return cached;\n const o = v as any;\n switch (JS_GetClassID(v)) {\n case JSClassID.PROMISE:\n return guestPromiseToHost(ctx, v);\n case JSClassID.DATE:\n return new Date(JS_GetAnyOpaque(v) as number);\n case JSClassID.ERROR:\n return guestErrorToHost(ctx, v);\n case JSClassID.REGEXP:\n return new RegExp(o.source, o.flags);\n case JSClassID.MAP: {\n const m = new Map(); seen.set(v, m);\n for (const [k, val] of Map.prototype.entries.call(o)) m.set(fromGuestRec(ctx, k, seen, hook), fromGuestRec(ctx, val, seen, hook));\n return m;\n }\n case JSClassID.SET: {\n const s = new Set(); seen.set(v, s);\n for (const val of Set.prototype.values.call(o)) s.add(fromGuestRec(ctx, val, seen, hook));\n return s;\n }\n case JSClassID.ARRAY_BUFFER:\n /* the guest object holds the host ArrayBuffer: copy it */\n return new Uint8Array((JS_GetAnyOpaque(v) as { buffer: ArrayBuffer }).buffer).slice().buffer;\n case JSClassID.SHARED_ARRAY_BUFFER:\n /* shared memory is shared: the host buffer itself */\n return (JS_GetAnyOpaque(v) as { buffer: SharedArrayBuffer }).buffer;\n }\n if (ArrayBuffer.isView(o)) {\n /* guest typed arrays are host views re-prototyped: a view over shared memory\n stays over it; anything else is copied with the host constructor */\n const Ctor = viewCtor(o) ?? Uint8Array;\n const buffer = viewBuffer(o);\n if (isSharedArrayBuffer(buffer)) return new Ctor(buffer, viewOffset(o), viewLength(o));\n return new Ctor(o as any);\n }\n if (Array.isArray(o)) {\n const a: unknown[] = []; seen.set(v, a);\n for (let i = 0; i < o.length; i++) a[i] = fromGuestRec(ctx, o[i], seen, hook);\n return a;\n }\n const r: Record<PropertyKey, unknown> = {}; seen.set(v, r);\n for (const k of Reflect.ownKeys(o)) {\n const d = Reflect.getOwnPropertyDescriptor(o, k)!;\n if (!d.enumerable) continue;\n r[k] = fromGuestRec(ctx, o[k], seen, hook);\n }\n return r;\n}\n\n/* a host promise that settles when the guest promise does */\nexport function guestPromiseToHost(ctx: JSContext, promise: JSValue): Promise<unknown> {\n return guestPromiseToHostWith(ctx, promise, v => fromGuest(ctx, v), e => fromGuestRejection(ctx, e));\n}\n\n/* guestPromiseToHost with the conversions supplied by the caller */\nexport function guestPromiseToHostWith(ctx: JSContext, promise: JSValue, convert: (v: JSValue) => unknown,\n convertRejection: (e: JSValue) => unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n const then = JS_GetPropertyStr(ctx, promise, 'then');\n const settle = (fn: (x: unknown) => void, conv: (v: JSValue) => unknown, v: JSValue): JSValue => {\n try { fn(conv(v)); } catch (e) { reject(e); }\n return undefined;\n };\n const onFul = JS_NewCFunction(ctx, (_c, _t, argv) => settle(resolve, convert, argv[0]), 'resolve', 1);\n const onRej = JS_NewCFunction(ctx, (_c, _t, argv) => settle(reject, convertRejection, argv[0]), 'reject', 1);\n const r = JS_Call(ctx, then, promise, [onFul, onRej]);\n if (JS_IsException(r)) reject(guestErrorToHost(ctx, JS_GetException(ctx)));\n drainJobs(ctx);\n });\n}\n\nfunction fromGuestRejection(ctx: JSContext, reason: JSValue): unknown {\n if (JS_IsObject(reason) && JS_GetClassID(reason) === JSClassID.ERROR) return guestErrorToHost(ctx, reason);\n return fromGuest(ctx, reason);\n}\n"]}
@@ -18,7 +18,7 @@ export const GEN_MAGIC_THROW = 2;
18
18
  --------------------------------------------------------------------- */
19
19
  export function js_class_has_bytecode(class_id) {
20
20
  return class_id === 13 /* JSClassID.BYTECODE_FUNCTION */ || class_id === 16 /* JSClassID.GENERATOR_FUNCTION */ ||
21
- class_id === 48 /* JSClassID.ASYNC_FUNCTION */ || class_id === 52 /* JSClassID.ASYNC_GENERATOR_FUNCTION */;
21
+ class_id === 49 /* JSClassID.ASYNC_FUNCTION */ || class_id === 53 /* JSClassID.ASYNC_GENERATOR_FUNCTION */;
22
22
  }
23
23
  export function get_var_ref(ctx, sf, var_idx, is_arg) {
24
24
  for (const vr of sf.var_refs) {
@@ -54,8 +54,8 @@ export function close_lexical_var(ctx, sf, var_idx) {
54
54
  function func_kind_to_class_id(kind) {
55
55
  switch (kind) {
56
56
  case 1 /* JSFunctionKind.GENERATOR */: return 16 /* JSClassID.GENERATOR_FUNCTION */;
57
- case 2 /* JSFunctionKind.ASYNC */: return 48 /* JSClassID.ASYNC_FUNCTION */;
58
- case 3 /* JSFunctionKind.ASYNC_GENERATOR */: return 52 /* JSClassID.ASYNC_GENERATOR_FUNCTION */;
57
+ case 2 /* JSFunctionKind.ASYNC */: return 49 /* JSClassID.ASYNC_FUNCTION */;
58
+ case 3 /* JSFunctionKind.ASYNC_GENERATOR */: return 53 /* JSClassID.ASYNC_GENERATOR_FUNCTION */;
59
59
  default: return 13 /* JSClassID.BYTECODE_FUNCTION */;
60
60
  }
61
61
  }
@@ -139,7 +139,7 @@ export function js_closure(ctx, b, cur_var_refs, sf) {
139
139
  js_function_set_properties(ctx, func_obj, name_atom, b.defined_arg_count);
140
140
  if (b.func_kind & 1 /* JSFunctionKind.GENERATOR */) {
141
141
  /* generators have a prototype field which is used as prototype for the generator object */
142
- const proto_class_id = (b.func_kind === 3 /* JSFunctionKind.ASYNC_GENERATOR */) ? 53 /* JSClassID.ASYNC_GENERATOR */ : 43 /* JSClassID.GENERATOR */;
142
+ const proto_class_id = (b.func_kind === 3 /* JSFunctionKind.ASYNC_GENERATOR */) ? 54 /* JSClassID.ASYNC_GENERATOR */ : 44 /* JSClassID.GENERATOR */;
143
143
  const gproto = JS_NewObjectProto(ctx, ctx.class_proto[proto_class_id]);
144
144
  if (JS_IsException(gproto))
145
145
  return JS_EXCEPTION;
@@ -3207,7 +3207,7 @@ function free_generator_stack(ctx, s) {
3207
3207
  s.state = 4 /* JSGeneratorState.COMPLETED */;
3208
3208
  }
3209
3209
  export function js_generator_next(ctx, this_val, argv, pdone, magic) {
3210
- const s = JS_GetOpaque(this_val, 43 /* JSClassID.GENERATOR */);
3210
+ const s = JS_GetOpaque(this_val, 44 /* JSClassID.GENERATOR */);
3211
3211
  pdone.done = 1;
3212
3212
  if (!s)
3213
3213
  return JS_ThrowTypeError(ctx, 'not a generator');
@@ -3287,7 +3287,7 @@ export function js_generator_function_call(ctx, func_obj, this_obj, argv, flags)
3287
3287
  free_generator_stack(ctx, s);
3288
3288
  return JS_EXCEPTION;
3289
3289
  }
3290
- const obj = js_create_from_ctor(ctx, func_obj, 43 /* JSClassID.GENERATOR */);
3290
+ const obj = js_create_from_ctor(ctx, func_obj, 44 /* JSClassID.GENERATOR */);
3291
3291
  if (JS_IsException(obj)) {
3292
3292
  free_generator_stack(ctx, s);
3293
3293
  return JS_EXCEPTION;
@@ -3315,7 +3315,7 @@ function js_async_function_resolve_create(ctx, s) {
3315
3315
  js_async_function_resolve_call(ctx, s, is_reject, args.length > 0 ? args[0] : undefined);
3316
3316
  return undefined;
3317
3317
  };
3318
- const f = js_new_host_function(ctx, impl, false, '', 1, ctx.function_proto, (49 /* JSClassID.ASYNC_FUNCTION_RESOLVE */ + i));
3318
+ const f = js_new_host_function(ctx, impl, false, '', 1, ctx.function_proto, (50 /* JSClassID.ASYNC_FUNCTION_RESOLVE */ + i));
3319
3319
  js_meta.get(f).u = s;
3320
3320
  funcs[i] = f;
3321
3321
  }
@@ -3558,7 +3558,7 @@ function js_async_generator_resume_next(ctx, s) {
3558
3558
  }
3559
3559
  function js_async_generator_resolve_function(ctx, this_obj, argv, magic, func_data) {
3560
3560
  const is_reject = (magic & 1) !== 0;
3561
- const s = JS_GetOpaque(func_data[0], 53 /* JSClassID.ASYNC_GENERATOR */);
3561
+ const s = JS_GetOpaque(func_data[0], 54 /* JSClassID.ASYNC_GENERATOR */);
3562
3562
  const arg = argv[0];
3563
3563
  if (!s)
3564
3564
  return undefined;
@@ -3570,8 +3570,9 @@ function js_async_generator_resolve_function(ctx, this_obj, argv, magic, func_da
3570
3570
  else
3571
3571
  js_async_generator_resolve(ctx, s, arg, true);
3572
3572
  }
3573
- else {
3574
- /* restart function execution after await() */
3573
+ else if (s.state === 3 /* JSAsyncGeneratorState.EXECUTING */) {
3574
+ /* restart function execution after await() (only while it is executing:
3575
+ QuickJS e7b9f21) */
3575
3576
  const fs = s.func_state;
3576
3577
  fs.throw_flag = is_reject;
3577
3578
  if (is_reject) {
@@ -3587,7 +3588,7 @@ function js_async_generator_resolve_function(ctx, this_obj, argv, magic, func_da
3587
3588
  }
3588
3589
  /* magic = GEN_MAGIC_x */
3589
3590
  export function js_async_generator_next(ctx, this_val, argv, magic) {
3590
- const s = JS_GetOpaque(this_val, 53 /* JSClassID.ASYNC_GENERATOR */);
3591
+ const s = JS_GetOpaque(this_val, 54 /* JSClassID.ASYNC_GENERATOR */);
3591
3592
  const resolving_funcs = [undefined, undefined];
3592
3593
  const promise = JS_NewPromiseCapability(ctx, resolving_funcs);
3593
3594
  if (JS_IsException(promise))
@@ -3612,7 +3613,7 @@ export function js_async_generator_function_call(ctx, func_obj, this_obj, argv,
3612
3613
  const func_ret = async_func_resume(ctx, s.func_state);
3613
3614
  if (JS_IsException(func_ret))
3614
3615
  return JS_EXCEPTION;
3615
- const obj = js_create_from_ctor(ctx, func_obj, 53 /* JSClassID.ASYNC_GENERATOR */);
3616
+ const obj = js_create_from_ctor(ctx, func_obj, 54 /* JSClassID.ASYNC_GENERATOR */);
3616
3617
  if (JS_IsException(obj))
3617
3618
  return JS_EXCEPTION;
3618
3619
  s.generator = obj;
@@ -3640,7 +3641,7 @@ export function JS_CreateAsyncFromSyncIterator(ctx, sync_iter) {
3640
3641
  const next_method = JS_GetProperty(ctx, sync_iter, JS_ATOM_next);
3641
3642
  if (JS_IsException(next_method))
3642
3643
  return JS_EXCEPTION;
3643
- const async_iter = JS_NewObjectClass(ctx, 51 /* JSClassID.ASYNC_FROM_SYNC_ITERATOR */);
3644
+ const async_iter = JS_NewObjectClass(ctx, 52 /* JSClassID.ASYNC_FROM_SYNC_ITERATOR */);
3644
3645
  if (JS_IsException(async_iter))
3645
3646
  return async_iter;
3646
3647
  JS_SetOpaque(async_iter, new JSAsyncFromSyncIteratorData(sync_iter, next_method));
@@ -3671,7 +3672,7 @@ function js_async_from_sync_iterator_next(ctx, this_val, argv, magic) {
3671
3672
  JS_Call(ctx, resolving_funcs[1], undefined, [err]);
3672
3673
  return promise;
3673
3674
  };
3674
- const s = JS_GetOpaque(this_val, 51 /* JSClassID.ASYNC_FROM_SYNC_ITERATOR */);
3675
+ const s = JS_GetOpaque(this_val, 52 /* JSClassID.ASYNC_FROM_SYNC_ITERATOR */);
3675
3676
  if (!s) {
3676
3677
  JS_ThrowTypeError(ctx, 'not an Async-from-Sync Iterator');
3677
3678
  return reject();