jseption 0.0.4 → 0.0.6
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.
- package/README.md +56 -4
- package/dist/atoms.d.ts +1 -0
- package/dist/atoms.js +2 -1
- package/dist/atoms.js.map +1 -1
- package/dist/builtins/base64.d.ts +14 -0
- package/dist/builtins/base64.js +219 -0
- package/dist/builtins/base64.js.map +1 -0
- package/dist/builtins/bigint.js +3 -3
- package/dist/builtins/bigint.js.map +1 -1
- package/dist/builtins/date.d.ts +1 -0
- package/dist/builtins/date.js +26 -12
- package/dist/builtins/date.js.map +1 -1
- package/dist/builtins/error.js +9 -0
- package/dist/builtins/error.js.map +1 -1
- package/dist/builtins/float16.d.ts +3 -0
- package/dist/builtins/float16.js +69 -0
- package/dist/builtins/float16.js.map +1 -0
- package/dist/builtins/function.js +2 -2
- package/dist/builtins/index.js +9 -6
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/iterator.d.ts +2 -0
- package/dist/builtins/iterator.js +624 -0
- package/dist/builtins/iterator.js.map +1 -0
- package/dist/builtins/json.d.ts +13 -1
- package/dist/builtins/json.js +283 -211
- package/dist/builtins/json.js.map +1 -1
- package/dist/builtins/mapset.js +365 -6
- package/dist/builtins/mapset.js.map +1 -1
- package/dist/builtins/math.js +203 -3
- package/dist/builtins/math.js.map +1 -1
- package/dist/builtins/native.js +6 -6
- package/dist/builtins/object.js +9 -2
- package/dist/builtins/object.js.map +1 -1
- package/dist/builtins/promise.js +31 -11
- package/dist/builtins/promise.js.map +1 -1
- package/dist/builtins/proxy.js +2 -2
- package/dist/builtins/reflect.js +6 -2
- package/dist/builtins/reflect.js.map +1 -1
- package/dist/builtins/regexp.js +74 -3
- package/dist/builtins/regexp.js.map +1 -1
- package/dist/builtins/string.js +1 -1
- package/dist/builtins/symbol.js +1 -1
- package/dist/builtins/symbol.js.map +1 -1
- package/dist/builtins/typedarray.d.ts +1 -0
- package/dist/builtins/typedarray.js +302 -32
- package/dist/builtins/typedarray.js.map +1 -1
- package/dist/builtins/weakref.js +7 -7
- package/dist/embed.d.ts +5 -0
- package/dist/embed.js +47 -15
- package/dist/embed.js.map +1 -1
- package/dist/interpreter.js +15 -14
- package/dist/interpreter.js.map +1 -1
- package/dist/jit.d.ts +1 -0
- package/dist/jit.js +51 -13
- package/dist/jit.js.map +1 -1
- package/dist/jit_hook.d.ts +1 -0
- package/dist/jit_hook.js.map +1 -1
- package/dist/jit_runtime.d.ts +1 -1
- package/dist/jit_runtime.js +6 -6
- package/dist/jit_runtime.js.map +1 -1
- package/dist/jit_stack.d.ts +1 -0
- package/dist/jit_stack.js +2 -1
- package/dist/jit_stack.js.map +1 -1
- package/dist/jseption.d.ts +4 -0
- package/dist/jseption.js +2 -0
- package/dist/jseption.js.map +1 -1
- package/dist/membrane.d.ts +16 -0
- package/dist/membrane.js +576 -0
- package/dist/membrane.js.map +1 -0
- package/dist/module.js +5 -3
- package/dist/module.js.map +1 -1
- package/dist/parser.js +26 -9
- package/dist/parser.js.map +1 -1
- package/dist/print.d.ts +12 -0
- package/dist/print.js +494 -0
- package/dist/print.js.map +1 -0
- package/dist/qjs.js +13 -10
- package/dist/qjs.js.map +1 -1
- package/dist/quickjs.d.ts +8 -0
- package/dist/quickjs.js +132 -53
- package/dist/quickjs.js.map +1 -1
- package/dist/std.d.ts +4 -2
- package/dist/std.js +42 -8
- package/dist/std.js.map +1 -1
- package/dist/values.d.ts +31 -27
- package/dist/values.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"membrane.js","sourceRoot":"","sources":["../src/membrane.ts"],"names":[],"mappings":"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","sourcesContent":["/* The membrane: live host objects for the guest.\n *\n * `toGuest`/`expose` (src/embed.ts) copy plain data and wrap functions; a\n * host class instance is refused. The membrane instead hands the guest a\n * live view of a host object graph: every host object or function the guest\n * reaches from a root crosses as a host `Proxy` whose handler lives here.\n * Each trap forwards the operation to the host object and converts what\n * comes back the same way, so nested objects, method results and\n * constructed instances are proxied lazily.\n *\n * A membrane proxy is not a guest Proxy (src/builtins/proxy.ts): the guest\n * Proxy calls guest handler code, while this handler is host code that must\n * never return a host value. The proxy's target is a private dummy (an empty\n * null-prototype object, or an empty function for callables) so the host\n * Proxy invariants never force a host value out, and the proxy has no engine\n * metadata, so the engine treats it as an ordinary object or host function\n * (`Reflect.get`, `Reflect.apply`, ... on it run the traps).\n *\n * The sandbox rules (always on; a policy can only narrow them):\n * 1. host intrinsics (Function and its async/generator variants, eval,\n * globalThis, Reflect, Proxy, Object, the Error constructors, the\n * intrinsic prototypes, the methods of Object, Reflect, Object.prototype\n * and Function.prototype) are never wrapped: they read as undefined, or\n * raise a guest TypeError where a value is required;\n * 2. constructor, prototype, __proto__, caller, callee, arguments and the\n * legacy __define/lookup{G,S}etter__ read as undefined; the prototype of\n * a proxy is the guest Object.prototype (Function.prototype for\n * callables); writes are refused unless the policy is writable, and\n * setPrototypeOf / preventExtensions are always refused;\n * 3. lookups stop at the host Object.prototype / Function.prototype and\n * continue on the guest's own, so call/apply/bind/toString/hasOwnProperty\n * are the guest intrinsics operating on the proxy, never host methods;\n * 4. getters run on the host, their results are converted like any value;\n * 5. only the well-known symbols iterator, asyncIterator, toStringTag and\n * toPrimitive (and hasInstance, answered by the membrane) are forwarded;\n * host symbols are neither listed nor returned;\n * 6. `policy.allow(target, key)` filters every key-based operation.\n *\n * See docs/MEMBRANE.md. */\n\nimport {\n JSContext, JSValue, JSClassID, JS_IsException, JS_GetException, JS_NewCFunction, JS_Call, JS_Throw,\n JS_NewArrayFrom, JS_NewErrorNative, JS_SetPropertyStr, JS_GetClassID, js_meta,\n} from './quickjs.ts';\nimport { JSErrorEnum } from './values.ts';\nimport {\n toGuest, drainJobs, guestErrorToHost, hostPromiseWith, guestPromiseToHostWith, fromGuestWith, FROM_GUEST_DEFAULT,\n} from './embed.ts';\nimport { JS_NewDate } from './builtins/date.ts';\n\nexport interface MembranePolicy {\n /** called for every key-based operation (read, `in`, own keys, descriptors,\n * writes) on the host object `target`; any result but `true` hides the key */\n allow?(target: object, key: PropertyKey): boolean;\n /** let the guest set, define and delete properties on host objects\n * (default false: read-only) */\n writable?: boolean;\n}\n\n/* ------------------------------------------------------------------ */\n/* host intrinsics, collected once at module load */\n\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor as Function;\nconst GeneratorFunction = Object.getPrototypeOf(function* () {}).constructor as Function;\nconst AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor as Function;\n\n/* never wrapped, never returned to the guest */\nconst FORBIDDEN = new Set<unknown>();\n/* the host prototype walk stops here and continues on the guest prototype */\nconst WALK_STOP = new Set<unknown>([Object.prototype, Function.prototype, globalThis]);\n\nfunction forbid(v: unknown): void {\n if ((typeof v === 'object' && v !== null) || typeof v === 'function') FORBIDDEN.add(v);\n}\n\n/* the functions stored on an object (values and accessors) */\nfunction forbidMembers(o: object): void {\n for (const k of Reflect.ownKeys(o)) {\n const d = Reflect.getOwnPropertyDescriptor(o, k);\n if (!d) continue;\n if (typeof d.value === 'function') forbid(d.value);\n forbid(d.get);\n forbid(d.set);\n }\n}\n\n(function collectIntrinsics() {\n const g = globalThis as Record<string, unknown>;\n for (const v of [Function, AsyncFunction, GeneratorFunction, AsyncGeneratorFunction, eval, globalThis, Reflect, Proxy, Object]) forbid(v);\n /* the host error constructors expose stack-trace hooks (captureStackTrace,\n prepareStackTrace) that can hand out host frames */\n for (const name of ['Error', 'EvalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError',\n 'AggregateError', 'SuppressedError']) forbid(g[name]);\n /* the prototype of every standard constructor */\n const ctors = ['Object', 'Function', 'Array', 'String', 'Number', 'Boolean', 'Symbol', 'BigInt', 'Error', 'EvalError',\n 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError', 'AggregateError', 'SuppressedError', 'Date',\n 'RegExp', 'Map', 'Set', 'WeakMap', 'WeakSet', 'WeakRef', 'FinalizationRegistry', 'Promise', 'ArrayBuffer',\n 'SharedArrayBuffer', 'DataView', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', 'Int16Array', 'Uint16Array',\n 'Int32Array', 'Uint32Array', 'Float16Array', 'Float32Array', 'Float64Array', 'BigInt64Array', 'BigUint64Array',\n 'Iterator', 'AsyncIterator', 'DisposableStack', 'AsyncDisposableStack'];\n for (const name of ctors) {\n const c = g[name] as { prototype?: unknown } | undefined;\n if (typeof c === 'function') forbid(c.prototype);\n }\n const TypedArray = Object.getPrototypeOf(Int8Array) as Function;\n forbid(TypedArray); forbid(TypedArray.prototype);\n for (const F of [AsyncFunction, GeneratorFunction, AsyncGeneratorFunction]) {\n forbid(F.prototype); /* %AsyncFunction.prototype%, %GeneratorFunction.prototype%, ... */\n forbid((F.prototype as { prototype?: unknown }).prototype); /* %GeneratorPrototype%, %AsyncGeneratorPrototype% */\n }\n const arrayIter = Object.getPrototypeOf([][Symbol.iterator]());\n forbid(arrayIter);\n forbid(Object.getPrototypeOf(arrayIter)); /* %IteratorPrototype% */\n forbid(Object.getPrototypeOf(Object.getPrototypeOf((async function* () {})()))); /* %AsyncGeneratorPrototype% */\n forbid(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf((async function* () {})())))); /* %AsyncIteratorPrototype% */\n forbid(Object.getPrototypeOf(new Map().entries()));\n forbid(Object.getPrototypeOf(new Set().values()));\n forbid(Object.getPrototypeOf(''[Symbol.iterator]()));\n forbid(Object.getPrototypeOf(/a/[Symbol.matchAll]('a')));\n /* %ThrowTypeError% and the methods that reach code, prototypes or properties\n of arbitrary objects */\n forbid(Reflect.getOwnPropertyDescriptor(Function.prototype, 'caller')?.get);\n for (const o of [Object, Reflect, Proxy, Object.prototype, Function.prototype]) forbidMembers(o);\n})();\n\nconst BLOCKED_KEYS = new Set<PropertyKey>([\n 'constructor', 'prototype', '__proto__', 'caller', 'callee', 'arguments',\n '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__',\n]);\n\nconst WELL_KNOWN_SYMBOLS = new Set<symbol>(\n Reflect.ownKeys(Symbol).map(k => (Symbol as unknown as Record<PropertyKey, unknown>)[k])\n .filter((v): v is symbol => typeof v === 'symbol'));\n/* the well-known symbols forwarded as keys */\nconst FORWARDED_SYMBOLS = new Set<symbol>([Symbol.iterator, Symbol.asyncIterator, Symbol.toStringTag, Symbol.toPrimitive]);\n\nconst ERROR_KINDS: [Function, JSErrorEnum][] = [\n [TypeError, JSErrorEnum.TYPE_ERROR], [RangeError, JSErrorEnum.RANGE_ERROR], [SyntaxError, JSErrorEnum.SYNTAX_ERROR],\n [ReferenceError, JSErrorEnum.REFERENCE_ERROR], [URIError, JSErrorEnum.URI_ERROR], [EvalError, JSErrorEnum.EVAL_ERROR],\n];\nconst STANDARD_ERROR_NAMES = new Set(['Error', 'TypeError', 'RangeError', 'SyntaxError', 'ReferenceError', 'URIError', 'EvalError']);\n\nfunction isHostConstructor(f: Function): boolean {\n try {\n Reflect.construct(String, [], f);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isObjectLike(v: unknown): v is object {\n return (typeof v === 'object' && v !== null) || typeof v === 'function';\n}\n\n/* ------------------------------------------------------------------ */\n/* registries shared by every membrane */\n\n/* membrane proxy -> the host object it stands for */\nconst proxyHost = new WeakMap<object, { host: object; membrane: Membrane }>();\n/* host callable made for a guest function -> that guest function */\nconst callableGuest = new WeakMap<Function, JSValue>();\n/* host Error thrown to host code for a guest exception -> the guest exception */\nconst thrownGuest = new WeakMap<object, JSValue>();\n/* one membrane per context and policy */\nconst membranes = new WeakMap<JSContext, { plain?: Membrane; byPolicy: WeakMap<MembranePolicy, Membrane> }>();\n/* membrane traps running now, per runtime. Compiled guest code pushes no interpreter frame, so\n when it calls into host code through a proxy, `rt.current_stack_frame` is null although guest\n code is on the stack; this count is what tells a guest callback the host calls back that it is\n not the outermost call */\nconst trapDepth = new WeakMap<object, number>();\n\nfunction membraneFor(ctx: JSContext, policy: MembranePolicy | undefined): Membrane {\n let e = membranes.get(ctx);\n if (!e) { e = { byPolicy: new WeakMap() }; membranes.set(ctx, e); }\n if (policy === undefined) return (e.plain ??= new Membrane(ctx, {}));\n let m = e.byPolicy.get(policy);\n if (!m) { m = new Membrane(ctx, policy); e.byPolicy.set(policy, m); }\n return m;\n}\n\n/* ------------------------------------------------------------------ */\n\nclass Membrane {\n private readonly proxies = new WeakMap<object, object>(); /* host object -> proxy */\n private readonly callables = new WeakMap<object, Function>(); /* guest function -> host callable */\n private readonly hasInstanceFns = new WeakMap<object, JSValue>();\n private readonly guestSymbols = new WeakSet<symbol>(); /* symbols the guest handed to the host */\n private readonly writable: boolean;\n private readonly allowFn: ((target: object, key: PropertyKey) => boolean) | undefined;\n\n constructor(readonly ctx: JSContext, policy: MembranePolicy) {\n this.writable = policy.writable === true;\n this.allowFn = typeof policy.allow === 'function' ? policy.allow.bind(policy) : undefined;\n }\n\n /* ---------------- host -> guest ---------------- */\n\n toGuest(v: unknown, seen?: Map<object, JSValue>): JSValue {\n switch (typeof v) {\n case 'undefined': case 'boolean': case 'number': case 'string': case 'bigint':\n return v as JSValue;\n case 'symbol':\n return this.symbolCrosses(v) ? v : undefined;\n }\n if (v === null) return null;\n const o = v as object;\n if (FORBIDDEN.has(o)) return undefined;\n const p = proxyHost.get(o);\n if (p !== undefined) return p.membrane.ctx === this.ctx ? o : this.toGuest(p.host, seen);\n if (typeof o === 'function') {\n const g = callableGuest.get(o);\n if (g !== undefined) return g;\n }\n if (this.isGuestOwned(o)) return o;\n if (o instanceof Promise) {\n return hostPromiseWith(this.ctx, o, r => this.toGuest(r), e => this.thrownToGuest(e));\n }\n if (Array.isArray(o)) {\n /* arrays are snapshots: a fresh guest array whose elements are converted */\n seen ??= new Map();\n const cached = seen.get(o);\n if (cached !== undefined) return cached;\n const arr = JS_NewArrayFrom(this.ctx, []) as unknown as JSValue[];\n seen.set(o, arr);\n const len = o.length;\n for (let i = 0; i < len; i++) arr[i] = this.toGuest(o[i], seen);\n return arr;\n }\n if (o instanceof Date) return JS_NewDate(this.ctx, Date.prototype.getTime.call(o));\n if (o instanceof Error) return this.errorToGuest(o);\n if (o instanceof RegExp || o instanceof ArrayBuffer || ArrayBuffer.isView(o)) return toGuest(this.ctx, o);\n return this.wrap(o);\n }\n\n /* a well-known or registered symbol, or one the guest gave to the host */\n private symbolCrosses(s: symbol): boolean {\n return WELL_KNOWN_SYMBOLS.has(s) || Symbol.keyFor(s) !== undefined || this.guestSymbols.has(s);\n }\n\n /* an engine object, or an object whose prototype chain reaches this\n context's guest Object.prototype / Function.prototype */\n private isGuestOwned(o: object): boolean {\n if (js_meta.has(o)) return true;\n try {\n return this.chainReachesGuest(o);\n } catch {\n return false; /* a host proxy whose getPrototypeOf throws */\n }\n }\n\n private chainReachesGuest(o: object): boolean {\n const ctx = this.ctx;\n const op = ctx.class_proto[JSClassID.OBJECT], fp = ctx.function_proto;\n let p: object | null = Reflect.getPrototypeOf(o);\n for (let i = 0; i < 64 && p !== null; i++) {\n if (p === op || p === fp) return true;\n if (WALK_STOP.has(p) || FORBIDDEN.has(p) || proxyHost.has(p)) return false;\n p = Reflect.getPrototypeOf(p);\n }\n return false;\n }\n\n private errorToGuest(e: Error): JSValue {\n let kind = JSErrorEnum.PLAIN_ERROR;\n for (const [C, k] of ERROR_KINDS) if (e instanceof C) { kind = k; break; }\n let message = '', name: unknown;\n try { const m = e.message; message = typeof m === 'string' ? m : ''; name = e.name; } catch { /* hostile getter */ }\n const g = JS_NewErrorNative(this.ctx, kind, message);\n if (kind === JSErrorEnum.PLAIN_ERROR && typeof name === 'string' && !STANDARD_ERROR_NAMES.has(name)) {\n Reflect.defineProperty(g, 'name', { value: name, writable: true, enumerable: false, configurable: true });\n }\n return g;\n }\n\n /* convert anything the host threw into a value to throw in the guest; the\n host exception object itself never crosses */\n thrownToGuest(e: unknown): JSValue {\n if (isObjectLike(e)) {\n const g = thrownGuest.get(e);\n if (g !== undefined) return g; /* a guest exception that passed through host code */\n if (proxyHost.has(e) || this.isGuestOwned(e)) return e as JSValue; /* thrown by guest code */\n if (e instanceof Error) return this.errorToGuest(e);\n let message = 'host exception';\n try {\n const m = (e as { message?: unknown }).message;\n if (typeof m === 'string') message = m;\n } catch { /* hostile getter */ }\n return JS_NewErrorNative(this.ctx, JSErrorEnum.PLAIN_ERROR, message);\n }\n if (typeof e === 'symbol') return this.symbolCrosses(e) ? e : undefined;\n return e as JSValue;\n }\n\n private guestTypeError(message: string): JSValue {\n return JS_NewErrorNative(this.ctx, JSErrorEnum.TYPE_ERROR, message);\n }\n\n /* the proxy for a host object (one per host object) */\n wrap(host: object): object {\n const cached = this.proxies.get(host);\n if (cached !== undefined) return cached;\n let target: object;\n const callable = typeof host === 'function';\n if (callable) {\n /* constructible or not like the host function; no own properties, so\n no target invariant constrains the traps */\n const f: Function = isHostConstructor(host as Function) ? Function.prototype.bind.call(function () {}, null) : () => {};\n Reflect.deleteProperty(f, 'name');\n Reflect.deleteProperty(f, 'length');\n Reflect.setPrototypeOf(f, null);\n target = f;\n } else {\n target = Object.create(null);\n }\n const proxy = new Proxy(target, this.handler(host, callable));\n this.proxies.set(host, proxy);\n proxyHost.set(proxy, { host, membrane: this });\n return proxy;\n }\n\n private keyAllowed(host: object, key: PropertyKey): boolean {\n if (typeof key === 'symbol') {\n if (WELL_KNOWN_SYMBOLS.has(key) && !FORWARDED_SYMBOLS.has(key)) return false;\n } else if (BLOCKED_KEYS.has(key)) {\n return false;\n }\n return this.allowFn === undefined || this.allowFn(host, key) === true;\n }\n\n /* listed by ownKeys: host symbols other than the forwarded well-known ones stay hidden */\n private keyListed(host: object, key: string | symbol): boolean {\n if (typeof key === 'symbol' && !FORWARDED_SYMBOLS.has(key) && !this.guestSymbols.has(key)) return false;\n return this.keyAllowed(host, key);\n }\n\n /* walk the host prototype chain up to (not including) the host\n Object.prototype / Function.prototype */\n private lookup(host: object, key: PropertyKey): PropertyDescriptor | undefined {\n let o: object | null = host;\n for (let depth = 0; o !== null && depth < 10000; depth++) {\n if (WALK_STOP.has(o)) return undefined;\n const d = Reflect.getOwnPropertyDescriptor(o, key);\n if (d !== undefined) return d;\n o = Reflect.getPrototypeOf(o);\n }\n return undefined;\n }\n\n private hostOf(v: unknown, fallback: object): object {\n return isObjectLike(v) ? proxyHost.get(v)?.host ?? fallback : fallback;\n }\n\n private hasInstance(host: object): JSValue {\n let f = this.hasInstanceFns.get(host);\n if (f === undefined) {\n f = JS_NewCFunction(this.ctx, (ctx, _this, argv) => {\n const v = argv[0];\n const h = isObjectLike(v) ? proxyHost.get(v)?.host : undefined;\n if (h === undefined) return false;\n try {\n return h instanceof (host as Function);\n } catch (e) {\n return JS_Throw(ctx, this.thrownToGuest(e));\n }\n }, '[Symbol.hasInstance]', 1);\n this.hasInstanceFns.set(host, f);\n }\n return f;\n }\n\n private handler(host: object, callable: boolean): ProxyHandler<object> {\n const m = this;\n const ctx = this.ctx;\n const guestProto = () => (callable ? ctx.function_proto : ctx.class_proto[JSClassID.OBJECT]) as object;\n /* every trap converts what the host throws, and counts as guest code on the stack while it\n runs host code */\n const rt = ctx.rt;\n const guard = <A extends unknown[], R>(fn: (...args: A) => R) => (...args: A): R => {\n trapDepth.set(rt, (trapDepth.get(rt) ?? 0) + 1);\n try {\n return fn(...args);\n } catch (e) {\n throw m.thrownToGuest(e);\n } finally {\n trapDepth.set(rt, trapDepth.get(rt)! - 1);\n }\n };\n const refuse = (what: string, key?: PropertyKey): never => {\n const k = key === undefined ? '' : ` '${typeof key === 'symbol' ? key.description ?? 'symbol' : key}'`;\n throw m.guestTypeError(`cannot ${what}${k}: host object is read-only`);\n };\n const proxyOf = () => m.proxies.get(host);\n\n return {\n get: guard((_t: object, key: PropertyKey, receiver: unknown) => {\n if (callable && key === Symbol.hasInstance) return m.hasInstance(host);\n if (!m.keyAllowed(host, key)) return undefined;\n const d = m.lookup(host, key);\n if (d === undefined) return Reflect.get(guestProto(), key, receiver);\n if ('value' in d) return m.toGuest(d.value);\n if (d.get === undefined) return undefined;\n return m.toGuest(Reflect.apply(d.get, m.hostOf(receiver, host), []));\n }),\n has: guard((_t: object, key: PropertyKey) => {\n if (callable && key === Symbol.hasInstance) return true;\n if (!m.keyAllowed(host, key)) return false;\n if (m.lookup(host, key) !== undefined) return true;\n return Reflect.has(guestProto(), key);\n }),\n ownKeys: guard((_t: object) => Reflect.ownKeys(host).filter(k => m.keyListed(host, k))),\n getOwnPropertyDescriptor: guard((_t: object, key: PropertyKey) => {\n if (!m.keyAllowed(host, key)) return undefined;\n const d = Reflect.getOwnPropertyDescriptor(host, key);\n if (d === undefined) return undefined;\n if ('value' in d) {\n return { value: m.toGuest(d.value), writable: m.writable && d.writable === true, enumerable: d.enumerable === true, configurable: true };\n }\n return {\n get: d.get === undefined ? undefined : m.toGuest(d.get) as (() => unknown) | undefined,\n set: d.set === undefined || !m.writable ? undefined : m.toGuest(d.set) as ((v: unknown) => void) | undefined,\n enumerable: d.enumerable === true, configurable: true,\n };\n }),\n set: guard((_t: object, key: PropertyKey, value: unknown, receiver: unknown) => {\n if (receiver !== proxyOf() && !(isObjectLike(receiver) && proxyHost.has(receiver))) {\n /* a guest object inheriting from the proxy: the property lands on it */\n return Reflect.defineProperty(receiver as object, key, { value, writable: true, enumerable: true, configurable: true });\n }\n if (!m.writable || !m.keyAllowed(host, key)) refuse('assign to property', key);\n return Reflect.set(host, key, m.fromGuest(value as JSValue), m.hostOf(receiver, host));\n }),\n defineProperty: guard((_t: object, key: PropertyKey, desc: PropertyDescriptor) => {\n if (!m.writable || !m.keyAllowed(host, key)) refuse('define property', key);\n if (desc.configurable === false) throw m.guestTypeError('cannot define a non-configurable property on a host object');\n const hd: PropertyDescriptor = {};\n if ('value' in desc) hd.value = m.fromGuest(desc.value as JSValue);\n if ('get' in desc) hd.get = m.fromGuest(desc.get as JSValue) as () => unknown;\n if ('set' in desc) hd.set = m.fromGuest(desc.set as JSValue) as (v: unknown) => void;\n if ('writable' in desc) hd.writable = desc.writable;\n if ('enumerable' in desc) hd.enumerable = desc.enumerable;\n hd.configurable = true;\n return Reflect.defineProperty(host, key, hd);\n }),\n deleteProperty: guard((_t: object, key: PropertyKey) => {\n if (!m.writable || !m.keyAllowed(host, key)) refuse('delete property', key);\n return Reflect.deleteProperty(host, key);\n }),\n getPrototypeOf: () => guestProto(),\n setPrototypeOf: () => false,\n isExtensible: () => true,\n preventExtensions: () => false,\n apply: guard((_t: object, thisArg: unknown, args: unknown[]) => {\n const hostThis = thisArg === ctx.global_obj ? undefined : m.fromGuest(thisArg as JSValue);\n const hostArgs = args.map(a => m.fromGuest(a as JSValue));\n return m.toGuest(Reflect.apply(host as Function, hostThis, hostArgs));\n }),\n construct: guard((_t: object, args: unknown[], newTarget: unknown) => {\n if (newTarget !== proxyOf()) throw m.guestTypeError('host constructors cannot be subclassed from the guest');\n const r = m.toGuest(Reflect.construct(host as Function, args.map(a => m.fromGuest(a as JSValue))));\n if (!isObjectLike(r)) throw m.guestTypeError('host constructor returned a value that cannot cross the membrane');\n return r;\n }),\n };\n }\n\n /* ---------------- guest -> host ---------------- */\n\n fromGuest(v: JSValue): unknown {\n return fromGuestWith(this.ctx, v, x => this.fromGuestHook(x));\n }\n\n private fromGuestHook(v: JSValue): unknown {\n if (typeof v === 'symbol') {\n if (!WELL_KNOWN_SYMBOLS.has(v) && Symbol.keyFor(v) === undefined) this.guestSymbols.add(v);\n return v;\n }\n if (!isObjectLike(v)) return FROM_GUEST_DEFAULT;\n const p = proxyHost.get(v);\n if (p !== undefined) return p.host;\n if (typeof v === 'function') return this.callable(v);\n if (JS_GetClassID(v) === JSClassID.PROMISE) {\n return guestPromiseToHostWith(this.ctx, v, x => this.fromGuest(x),\n e => (JS_GetClassID(e) === JSClassID.ERROR ? guestErrorToHost(this.ctx, e) : this.fromGuest(e)));\n }\n return FROM_GUEST_DEFAULT;\n }\n\n /* a host function that runs the guest function (one per guest function) */\n private callable(fn: JSValue): Function {\n const cached = this.callables.get(fn as object);\n if (cached !== undefined) return cached;\n const m = this;\n const ctx = this.ctx;\n const c = {\n guestCallback(this: unknown, ...args: unknown[]): unknown {\n /* outermost: no guest code below this call, neither an interpreter frame nor a membrane\n trap (the way compiled guest code reaches host code) */\n const outermost = ctx.rt.current_stack_frame === null && (trapDepth.get(ctx.rt) ?? 0) === 0;\n try {\n const r = JS_Call(ctx, fn, m.toGuest(this), args.map(a => m.toGuest(a)));\n if (JS_IsException(r)) {\n const exc = JS_GetException(ctx);\n const he = guestErrorToHost(ctx, exc);\n thrownGuest.set(he, exc);\n throw he;\n }\n return m.fromGuest(r);\n } finally {\n /* called from host code outside any guest call (an event, a timer, a\n promise reaction): run the guest jobs the callback queued */\n if (outermost) drainJobs(ctx);\n }\n },\n }.guestCallback;\n this.callables.set(fn as object, c);\n callableGuest.set(c, fn);\n return c;\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* public API */\n\n/** the guest view of a host value: primitives as is, host objects and\n * functions as live membrane proxies (see docs/MEMBRANE.md) */\nexport function toGuestLive(ctx: JSContext, value: unknown, policy?: MembranePolicy): JSValue {\n if (FORBIDDEN.has(value)) throw new TypeError('toGuestLive: refusing to hand a host intrinsic to the guest');\n return membraneFor(ctx, policy).toGuest(value);\n}\n\n/** define the global `name` in the guest as a live view of `root` */\nexport function exposeLive(ctx: JSContext, name: string, root: unknown, policy?: MembranePolicy): void {\n const g = toGuestLive(ctx, root, policy);\n if (JS_SetPropertyStr(ctx, ctx.global_obj, name, g) < 0) {\n throw guestErrorToHost(ctx, JS_GetException(ctx));\n }\n}\n\n/** true if `value` is a membrane proxy */\nexport function isLiveProxy(value: unknown): boolean {\n return isObjectLike(value) && proxyHost.has(value);\n}\n"]}
|
package/dist/module.js
CHANGED
|
@@ -414,7 +414,7 @@ function js_create_module_function(ctx, m) {
|
|
|
414
414
|
const b = m.func_bytecode;
|
|
415
415
|
/* create the module variables; the other variables are imported from other modules */
|
|
416
416
|
const var_refs = b.closure_var.map(cv => cv.is_local ? new_var_ref_cell(cv.is_lexical ? JS_UNINITIALIZED : undefined) : null);
|
|
417
|
-
const proto = ctx.class_proto[
|
|
417
|
+
const proto = ctx.class_proto[49 /* JSClassID.ASYNC_FUNCTION */] ?? ctx.function_proto;
|
|
418
418
|
const f = js_closure_from_refs(ctx, b, var_refs, proto, false);
|
|
419
419
|
if (JS_IsException(f))
|
|
420
420
|
return -1;
|
|
@@ -890,10 +890,12 @@ function js_async_module_execution_rejected(ctx, module, error) {
|
|
|
890
890
|
module.eval_exception = error;
|
|
891
891
|
module.status = 5 /* JSModuleStatus.EVALUATED */;
|
|
892
892
|
module.async_evaluation = false;
|
|
893
|
-
|
|
894
|
-
|
|
893
|
+
/* the module's own promise is rejected before its parents' (af16a97, after a
|
|
894
|
+
specification change) */
|
|
895
895
|
if (module.promise !== undefined)
|
|
896
896
|
JS_Call(ctx, module.resolving_funcs[1], undefined, [error]);
|
|
897
|
+
for (const m of module.async_parent_modules)
|
|
898
|
+
js_async_module_execution_rejected(ctx, m, error);
|
|
897
899
|
}
|
|
898
900
|
function js_async_module_execution_fulfilled(ctx, module) {
|
|
899
901
|
if (module.status === 5 /* JSModuleStatus.EVALUATED */)
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * ES modules: loading, linking, evaluation (with top-level await), module\n * namespace objects, dynamic import() and import.meta.\n *\n * Ported from quickjs.c (js_create_module_function, js_inner_module_linking,\n * js_resolve_export, js_build_module_ns, js_inner_module_evaluation,\n * js_async_module_execution_fulfilled/rejected, js_dynamic_import), with one\n * change of shape: QuickJS asks a synchronous loader for each module while it\n * resolves the graph, but a browser fetches asynchronously, so here the whole\n * graph is fetched first (in parallel where the loader allows), and linking and\n * evaluation run once every module is there. A loader that answers\n * synchronously makes the whole sequence synchronous.\n *\n * The sandbox stays closed by default: with no loader set, nothing can be\n * imported. The embedder's loader decides what a specifier means.\n */\nimport {\n JSContext, JSRuntime, JSValue, JSAtom, JSClassID, JS_EXCEPTION, JS_UNINITIALIZED, JS_IsException, JS_IsObject,\n JS_NewAtom, JS_AtomGetStr, JS_Call, JS_NewCFunction, JS_EnqueueJob, JS_ToString, JS_Throw,\n JS_ThrowTypeError, JS_ThrowSyntaxError, JS_ThrowReferenceError, JS_NewObjectProto, JS_DefinePropertyValueStr,\n JS_GetPropertyStr, JS_GetFunctionData, js_take_exception, js_ensure_meta, js_host_exception_to_guest, hooks,\n JS_PROP_C_W_E, JS_ATOM_default, JS_ATOM__star_,\n JS_EVAL_TYPE_MODULE, JS_EVAL_FLAG_COMPILE_ONLY, JS_EVAL_FLAG_STRIP_TYPES, JS_EVAL_FLAG_JSX,\n} from './quickjs.ts';\nimport {\n JSModuleDef, JSModuleStatus, JSExportEntry, JSExportType, JSModuleKind, JSFunctionBytecode,\n JSVarRef, JSPromiseState, new_var_ref_cell,\n} from './values.ts';\nimport { js_closure_from_refs } from './interpreter.ts';\nimport { JS_NewPromiseCapability, JS_PromiseState, JS_PromiseResult, perform_promise_then } from './builtins/promise.ts';\nimport { JS_ParseJSON } from './builtins/json.ts';\nimport { toGuest, drainJobs } from './embed.ts';\n\n/* ---------------------------------------------------------------------\n The embedder's loader\n --------------------------------------------------------------------- */\n\n/* what a loader returns for a module id */\nexport interface JSModuleSource {\n /* JavaScript (or TypeScript, or JSON) source text */\n source?: string;\n /* bytecode written by JS_WriteObject for a compiled module */\n bytecode?: Uint8Array;\n /* import.meta.url (defaults to the id) */\n url?: string;\n /* 'js' (default), 'ts' (stripped like JS_EVAL_FLAG_STRIP_TYPES; also chosen by a .ts, .mts or\n .cts id), 'jsx' (JSX compiled like JS_EVAL_FLAG_JSX; also chosen by a .jsx id), 'tsx' (both;\n also chosen by a .tsx id), or 'json' (only for imports `with { type: \"json\" }`) */\n type?: JSModuleSourceType;\n /* a host module: its exports as host values, marshalled into the guest with toGuest()\n (`default` is the default export) */\n exports?: Record<string, unknown>;\n}\nexport type JSModuleLoadResult = string | Uint8Array | JSModuleSource;\nexport type JSModuleSourceType = 'js' | 'ts' | 'jsx' | 'tsx' | 'json';\n\n/* the source type an id implies: .ts, .mts and .cts are TypeScript, .tsx TSX, .jsx JSX. When the\n id is a URL (it has a scheme), its query and fragment are not part of the path, so\n `https://app/App.tsx?v=3` and `file:///a.ts#x` are TSX and TypeScript; other ids (file paths)\n are matched as they are, since `?` and `#` are ordinary characters there */\nexport function js_module_type_of(id: string): 'js' | 'ts' | 'jsx' | 'tsx' {\n const path = /^[a-z][a-z0-9+.-]*:/i.test(id) ? id.replace(/[?#].*$/s, '') : id;\n return /\\.[mc]?ts$/.test(path) ? 'ts' : /\\.tsx$/.test(path) ? 'tsx' : /\\.jsx$/.test(path) ? 'jsx' : 'js';\n}\n\n/* the JS_Eval flags that compile a source type */\nexport function js_module_type_flags(type: string): number {\n return (type === 'ts' || type === 'tsx' ? JS_EVAL_FLAG_STRIP_TYPES : 0) | (type === 'jsx' || type === 'tsx' ? JS_EVAL_FLAG_JSX : 0);\n}\n\nexport interface JSModuleLoader {\n /* the normalized id of `specifier` imported from `referrer` (the importing module's id, a\n script's file name, or null from the host). Default: URL-style resolution of relative\n specifiers (`./`, `../`, `/`) against the referrer; other specifiers are kept as they are */\n resolve?(specifier: string, referrer: string | null, attributes: Record<string, string>): string;\n /* the module for an id: its source, bytecode or host exports, or a promise of them */\n load(id: string, attributes: Record<string, string>): JSModuleLoadResult | PromiseLike<JSModuleLoadResult>;\n}\n\n/* Set (or clear, with null) the module loader of a runtime */\nexport function JS_SetModuleLoader(rt: JSRuntime, loader: JSModuleLoader | null): void {\n rt.module_loader = loader;\n}\n\n/* the default resolution: relative specifiers against the referrer, URL style */\nexport function js_default_module_resolve(specifier: string, referrer: string | null): string {\n if (!(specifier.startsWith('./') || specifier.startsWith('../') || specifier.startsWith('/'))) return specifier;\n if (referrer === null) return normalize_path(specifier);\n if (/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(referrer)) {\n try { return new URL(specifier, referrer).href; } catch { /* not a URL: fall through */ }\n }\n if (specifier.startsWith('/')) return normalize_path(specifier);\n const slash = referrer.lastIndexOf('/');\n const dir = slash >= 0 ? referrer.slice(0, slash + 1) : '';\n return normalize_path(dir + specifier);\n}\n\n/* collapse `.` and `..` segments of a path */\nfunction normalize_path(path: string): string {\n const abs = path.startsWith('/');\n const out: string[] = [];\n for (const seg of path.split('/')) {\n if (seg === '' || seg === '.') continue;\n if (seg === '..') {\n if (out.length > 0 && out[out.length - 1] !== '..') out.pop();\n else if (!abs) out.push('..');\n continue;\n }\n out.push(seg);\n }\n const r = out.join('/');\n return abs ? '/' + r : r;\n}\n\n/* QuickJS's JS_DetectModule heuristic: after comments, the source starts with `export`, or\n with `import` not followed by `(` or `.` */\nexport function JS_DetectModule(input: string): boolean {\n let p = 0;\n const n = input.length;\n if (input.startsWith('#!')) { while (p < n && input[p] !== '\\n') p++; }\n const skip = (): void => {\n for (;;) {\n while (p < n && /\\s/.test(input[p])) p++;\n if (input.startsWith('//', p)) { while (p < n && input[p] !== '\\n') p++; continue; }\n if (input.startsWith('/*', p)) { const e = input.indexOf('*/', p + 2); p = e < 0 ? n : e + 2; continue; }\n break;\n }\n };\n const word = (): string => { const m = /^[A-Za-z_$][\\w$]*/.exec(input.slice(p, p + 32)); return m ? m[0] : ''; };\n skip();\n const w = word();\n if (w === 'export') return true;\n if (w !== 'import') return false;\n p += 6;\n skip();\n return !(input[p] === '(' || input[p] === '.');\n}\n\n/* ---------------------------------------------------------------------\n Errors\n --------------------------------------------------------------------- */\n\nfunction throw_type_error(ctx: JSContext, msg: string): JSValue {\n JS_ThrowTypeError(ctx, msg);\n return js_take_exception(ctx);\n}\nfunction throw_syntax_error(ctx: JSContext, msg: string): JSValue {\n JS_ThrowSyntaxError(ctx, msg);\n return js_take_exception(ctx);\n}\n\n/* a value thrown by the embedder's loader, as a guest value */\nfunction host_error_to_guest(ctx: JSContext, e: unknown): JSValue {\n try { return toGuest(ctx, e); } catch { return throw_type_error(ctx, String(e)); }\n}\n\n/* a value caught in this file, in the engine's convention: guest values pass through, host\n errors become guest errors */\nfunction caught(ctx: JSContext, e: unknown): JSValue {\n js_host_exception_to_guest(ctx, e);\n return js_take_exception(ctx);\n}\n\nfunction mname(ctx: JSContext, m: JSModuleDef): string { return JS_AtomGetStr(ctx, m.module_name); }\n\n/* ---------------------------------------------------------------------\n Compiled modules\n --------------------------------------------------------------------- */\n\n/* every function of a module knows its module (import.meta, the referrer of import()) */\nfunction js_mark_module_functions(b: JSFunctionBytecode, m: JSModuleDef): void {\n b.module = m;\n for (const c of b.cpool) if (c instanceof JSFunctionBytecode) js_mark_module_functions(c, m);\n}\n\n/* the module record of a compiled module body */\nexport function js_module_set_function(m: JSModuleDef, b: JSFunctionBytecode): void {\n m.func_bytecode = b;\n js_mark_module_functions(b, m);\n}\n\n/* called by the parser for JS_EVAL_TYPE_MODULE */\nfunction js_module_compiled(ctx: JSContext, m: JSModuleDef, b: JSFunctionBytecode, flags: number): JSValue {\n js_module_set_function(m, b);\n if (flags & JS_EVAL_FLAG_COMPILE_ONLY) return m as unknown as JSValue;\n return js_module_eval_function(ctx, m);\n}\n\nfunction module_key(id: string, kind: 'js' | 'json'): string {\n return kind === 'json' ? id + '\\u0000json' : id;\n}\n\n/* register a root module (JS_Eval, JS_EvalFunction) under its name, if the name is free */\nfunction js_register_module(ctx: JSContext, m: JSModuleDef): void {\n const key = module_key(mname(ctx, m), m.kind === JSModuleKind.JSON ? 'json' : 'js');\n if (!ctx.module_map.has(key)) ctx.module_map.set(key, m);\n}\n\n/* a synthetic module (JSON or host values) with the given named exports */\nfunction js_new_synthetic_module(ctx: JSContext, id: string, kind: JSModuleKind, exports: Map<string, JSValue>): JSModuleDef {\n const m = new JSModuleDef(JS_NewAtom(ctx, id));\n m.kind = kind;\n m.realm = ctx;\n m.synthetic_exports = new Map();\n for (const [name, v] of exports) {\n const atom = JS_NewAtom(ctx, name);\n m.export_entries.push(new JSExportEntry(atom, atom, JSExportType.LOCAL));\n m.synthetic_exports.set(atom, v);\n }\n return m;\n}\n\n/* the module for what the loader returned; throws a guest value on failure */\nfunction js_module_from_load_result(ctx: JSContext, id: string, kind: 'js' | 'json', r: JSModuleLoadResult): JSModuleDef {\n let src: JSModuleSource;\n if (typeof r === 'string') src = { source: r };\n else if (r instanceof Uint8Array) src = { bytecode: r };\n else if (r !== null && typeof r === 'object') src = r;\n else throw throw_type_error(ctx, `the module loader returned no module for '${id}'`);\n\n if (src.exports !== undefined) {\n if (kind === 'json') throw throw_type_error(ctx, `'${id}' is a host module, not a JSON module`);\n const exports = new Map<string, JSValue>();\n for (const k of Object.keys(src.exports)) {\n try { exports.set(k, toGuest(ctx, src.exports[k])); }\n catch (e) { throw host_error_to_guest(ctx, e); }\n }\n const m = js_new_synthetic_module(ctx, id, JSModuleKind.HOST, exports);\n m.url = src.url ?? null;\n return m;\n }\n const type = src.type ?? (src.bytecode ? 'js' : js_module_type_of(id));\n if (kind === 'json' || type === 'json') {\n if (kind !== 'json') throw throw_type_error(ctx, `'${id}' is a JSON module: import it with { type: \"json\" }`);\n if (type !== 'json' && src.type !== undefined) throw throw_type_error(ctx, `'${id}' is not a JSON module`);\n if (typeof src.source !== 'string') throw throw_type_error(ctx, `the module loader returned no JSON source for '${id}'`);\n const v = JS_ParseJSON(ctx, src.source, id);\n if (JS_IsException(v)) throw js_take_exception(ctx);\n const m = js_new_synthetic_module(ctx, id, JSModuleKind.JSON, new Map([['default', v]]));\n m.url = src.url ?? null;\n return m;\n }\n let m: JSModuleDef;\n if (src.bytecode !== undefined) {\n const read = hooks_bytecode.read;\n if (read === null) throw throw_type_error(ctx, 'bytecode modules are not supported in this build');\n const v = read(ctx, src.bytecode);\n if (JS_IsException(v)) throw js_take_exception(ctx);\n if (!(v instanceof JSModuleDef)) throw throw_type_error(ctx, `the bytecode for '${id}' is not a module`);\n m = v;\n /* the module takes the id it was loaded under */\n m.module_name = JS_NewAtom(ctx, id);\n } else {\n if (typeof src.source !== 'string') throw throw_type_error(ctx, `the module loader returned no source for '${id}'`);\n const flags = JS_EVAL_TYPE_MODULE | JS_EVAL_FLAG_COMPILE_ONLY | js_module_type_flags(type);\n const v = hooks.JS_EvalInternal(ctx, undefined, src.source, id, flags, -1);\n if (JS_IsException(v)) throw js_take_exception(ctx);\n m = v as unknown as JSModuleDef;\n }\n m.url = src.url ?? null;\n return m;\n}\n\n/* set by src/bytecode.ts: read a compiled module from bytes */\nexport const hooks_bytecode: { read: ((ctx: JSContext, bytes: Uint8Array) => JSValue) | null } = { read: null };\n\n/* ---------------------------------------------------------------------\n Fetching the module graph\n --------------------------------------------------------------------- */\n\ntype LoadCallback = (err: JSValue | undefined, m: JSModuleDef | null) => void;\n\ninterface InflightLoad { waiters: LoadCallback[] }\n\n/* the module type a request asks for, or a guest error */\nfunction js_request_kind(ctx: JSContext, attrs: Record<string, string> | null): 'js' | 'json' | JSValue {\n if (attrs === null) return 'js';\n for (const k of Object.keys(attrs)) {\n if (k !== 'type') return throw_syntax_error(ctx, `unsupported import attribute '${k}'`);\n }\n const t = attrs.type;\n if (t === undefined) return 'js';\n if (t === 'json') return 'json';\n return throw_type_error(ctx, `unsupported module type '${t}'`);\n}\n\nfunction js_resolve_specifier(ctx: JSContext, specifier: string, referrer: string | null,\n attrs: Record<string, string>): string {\n const loader = ctx.rt.module_loader as JSModuleLoader | null;\n if (loader === null) throw throw_type_error(ctx, `cannot import '${specifier}': no module loader is set`);\n let id: unknown;\n try {\n id = loader.resolve ? loader.resolve(specifier, referrer, attrs) : js_default_module_resolve(specifier, referrer);\n } catch (e) {\n throw host_error_to_guest(ctx, e);\n }\n if (typeof id !== 'string') throw throw_type_error(ctx, `the module loader could not resolve '${specifier}'`);\n return id;\n}\n\n/* the module for `id`: from the context's map, or fetched with the loader. `cb` runs once,\n synchronously if the module is there or the loader answers synchronously */\nfunction js_fetch_module(ctx: JSContext, specifier: string, id: string, kind: 'js' | 'json',\n attrs: Record<string, string>, cb: LoadCallback): void {\n const key = module_key(id, kind);\n const existing = ctx.module_map.get(key) as JSModuleDef | undefined;\n if (existing !== undefined) { cb(undefined, existing); return; }\n const inflight = ctx.module_inflight.get(key) as InflightLoad | undefined;\n if (inflight !== undefined) { inflight.waiters.push(cb); return; }\n const loader = ctx.rt.module_loader as JSModuleLoader | null;\n if (loader === null) { cb(throw_type_error(ctx, `cannot import '${specifier}': no module loader is set`), null); return; }\n const entry: InflightLoad = { waiters: [cb] };\n ctx.module_inflight.set(key, entry);\n let is_async = false;\n const settle = (err: JSValue | undefined, m: JSModuleDef | null): void => {\n ctx.module_inflight.delete(key);\n if (m !== null) ctx.module_map.set(key, m);\n for (const w of entry.waiters) w(err, m);\n /* a load that finished in a host callback: run the guest jobs it started */\n if (is_async) drainJobs(ctx);\n };\n const done = (r: JSModuleLoadResult): void => {\n let m: JSModuleDef;\n try {\n m = js_module_from_load_result(ctx, id, kind, r);\n } catch (e) {\n settle(caught(ctx, e), null);\n return;\n }\n settle(undefined, m);\n };\n let r: JSModuleLoadResult | PromiseLike<JSModuleLoadResult>;\n try {\n r = loader.load(id, attrs);\n } catch (e) {\n settle(host_error_to_guest(ctx, e), null);\n return;\n }\n if (r !== null && typeof r === 'object' && typeof (r as PromiseLike<unknown>).then === 'function') {\n is_async = true;\n (r as PromiseLike<JSModuleLoadResult>).then(done, e => settle(host_error_to_guest(ctx, e), null));\n } else {\n done(r as JSModuleLoadResult);\n }\n}\n\n/* Make sure every request of `root`, transitively, has its module. `cb(err)` runs once; it\n runs synchronously when every module was already loaded or loaded synchronously */\nfunction js_load_graph(ctx: JSContext, root: JSModuleDef, cb: (err: JSValue | undefined) => void): void {\n let pending = 0;\n let finished = false;\n const visited = new Set<JSModuleDef>();\n const fail = (err: JSValue): void => { if (!finished) { finished = true; cb(err); } };\n const one_done = (): void => { if (--pending === 0 && !finished) { finished = true; cb(undefined); } };\n const visit = (m: JSModuleDef): void => {\n if (visited.has(m) || finished) return;\n visited.add(m);\n const referrer = mname(ctx, m);\n for (const rme of m.req_module_entries) {\n if (finished) return;\n if (rme.module !== null) { visit(rme.module); continue; }\n const specifier = JS_AtomGetStr(ctx, rme.module_name);\n const attrs = rme.attributes ?? {};\n const kind = js_request_kind(ctx, rme.attributes);\n if (kind !== 'js' && kind !== 'json') { fail(kind); return; }\n let id: string;\n try { id = js_resolve_specifier(ctx, specifier, referrer, attrs); } catch (e) { fail(caught(ctx, e)); return; }\n pending++;\n js_fetch_module(ctx, specifier, id, kind, attrs, (err, m1) => {\n if (finished) return;\n if (err !== undefined) { fail(err); return; }\n rme.module = m1;\n visit(m1!);\n one_done();\n });\n }\n };\n pending++;\n visit(root);\n one_done();\n}\n\n/* ---------------------------------------------------------------------\n Module functions and linking (js_create_module_function, js_link_module)\n --------------------------------------------------------------------- */\n\nfunction js_create_module_function(ctx: JSContext, m: JSModuleDef): number {\n if (m.func_created) return 0;\n if (m.kind !== JSModuleKind.JS) {\n /* initialize the exported variables */\n for (const me of m.export_entries) me.var_ref = new_var_ref_cell(undefined);\n } else {\n const b = m.func_bytecode!;\n /* create the module variables; the other variables are imported from other modules */\n const var_refs: (JSVarRef | null)[] = b.closure_var.map(cv =>\n cv.is_local ? new_var_ref_cell(cv.is_lexical ? JS_UNINITIALIZED : undefined) : null);\n const proto = ctx.class_proto[JSClassID.ASYNC_FUNCTION] ?? ctx.function_proto;\n const f = js_closure_from_refs(ctx, b, var_refs as JSVarRef[], proto, false);\n if (JS_IsException(f)) return -1;\n m.func_obj = f;\n }\n m.func_created = true;\n /* do it on the dependencies */\n for (const rme of m.req_module_entries) {\n if (js_create_module_function(ctx, rme.module!) < 0) return -1;\n }\n return 0;\n}\n\nfunction module_var_refs(m: JSModuleDef): JSVarRef[] {\n return JS_GetFunctionData(m.func_obj)!.var_refs as JSVarRef[];\n}\n\n/* the variable of a local export */\nfunction export_var_ref(m: JSModuleDef, me: JSExportEntry): JSVarRef {\n if (me.var_ref === null) me.var_ref = module_var_refs(m)[me.var_idx];\n return me.var_ref;\n}\n\nconst enum ResolveResult { FOUND, NOT_FOUND, CIRCULAR, AMBIGUOUS }\n\n/* a resolved binding: a module variable, or the namespace of a module */\ninterface ResolvedBinding { module: JSModuleDef; me: JSExportEntry; ns: JSModuleDef | null }\n\nfunction same_binding(a: ResolvedBinding, b: ResolvedBinding): boolean {\n if (a.ns !== null || b.ns !== null) return a.ns === b.ns;\n return a.module === b.module && a.me.var_idx === b.me.var_idx && a.me.local_name === b.me.local_name;\n}\n\n/* ResolveExport (js_resolve_export1) */\nfunction js_resolve_export1(m: JSModuleDef, export_name: JSAtom, set: Map<JSModuleDef, Set<JSAtom>>,\n out: { b: ResolvedBinding | null }): ResolveResult {\n out.b = null;\n let names = set.get(m);\n if (names === undefined) { names = new Set(); set.set(m, names); }\n if (names.has(export_name)) return ResolveResult.CIRCULAR;\n names.add(export_name);\n const me = m.export_entries.find(e => e.export_name === export_name) ?? null;\n if (me !== null) {\n if (me.export_type === JSExportType.LOCAL) {\n out.b = { module: m, me, ns: null };\n return ResolveResult.FOUND;\n }\n const m1 = m.req_module_entries[me.req_module_idx].module!;\n if (me.local_name === JS_ATOM__star_) {\n /* export * as ns from */\n out.b = { module: m, me, ns: m1 };\n return ResolveResult.FOUND;\n }\n return js_resolve_export1(m1, me.local_name, set, out);\n }\n if (export_name === JS_ATOM_default) return ResolveResult.NOT_FOUND;\n /* not found in the direct or indirect exports: try the star exports */\n let star: ResolvedBinding | null = null;\n for (const se of m.star_export_entries) {\n const m1 = m.req_module_entries[se.req_module_idx].module!;\n const r = { b: null as ResolvedBinding | null };\n const ret = js_resolve_export1(m1, export_name, set, r);\n if (ret === ResolveResult.AMBIGUOUS) return ret;\n if (ret === ResolveResult.FOUND) {\n if (star !== null) {\n if (!same_binding(star, r.b!)) return ResolveResult.AMBIGUOUS;\n } else {\n star = r.b;\n }\n }\n }\n if (star !== null) { out.b = star; return ResolveResult.FOUND; }\n return ResolveResult.NOT_FOUND;\n}\n\nfunction js_resolve_export(m: JSModuleDef, export_name: JSAtom, out: { b: ResolvedBinding | null }): ResolveResult {\n return js_resolve_export1(m, export_name, new Map(), out);\n}\n\nfunction js_resolve_export_throw_error(ctx: JSContext, res: ResolveResult, m: JSModuleDef, export_name: JSAtom): void {\n const n = JS_AtomGetStr(ctx, export_name), mn = mname(ctx, m);\n switch (res) {\n case ResolveResult.CIRCULAR:\n JS_ThrowSyntaxError(ctx, `circular reference when looking for export '${n}' in module '${mn}'`);\n break;\n case ResolveResult.AMBIGUOUS:\n JS_ThrowSyntaxError(ctx, `export '${n}' in module '${mn}' is ambiguous`);\n break;\n default:\n JS_ThrowSyntaxError(ctx, `Could not find export '${n}' in module '${mn}'`);\n break;\n }\n}\n\n/* the variable a resolved binding reads */\nfunction binding_var_ref(ctx: JSContext, b: ResolvedBinding): JSVarRef | null {\n if (b.ns !== null) {\n const ns = js_get_module_ns(ctx, b.ns);\n if (JS_IsException(ns)) return null;\n return new_var_ref_cell(ns);\n }\n return export_var_ref(b.module, b.me);\n}\n\n/* Prepare a module to be executed by resolving all the imported variables */\nfunction js_inner_module_linking(ctx: JSContext, m: JSModuleDef, stack: { top: JSModuleDef | null }, index: number): number {\n if (m.status === JSModuleStatus.LINKING || m.status === JSModuleStatus.LINKED ||\n m.status === JSModuleStatus.EVALUATING_ASYNC || m.status === JSModuleStatus.EVALUATED) return index;\n m.status = JSModuleStatus.LINKING;\n m.dfs_index = index;\n m.dfs_ancestor_index = index;\n index++;\n /* push 'm' on stack */\n m.stack_prev = stack.top;\n stack.top = m;\n\n for (const rme of m.req_module_entries) {\n const m1 = rme.module!;\n index = js_inner_module_linking(ctx, m1, stack, index);\n if (index < 0) return -1;\n if (m1.status === JSModuleStatus.LINKING) m.dfs_ancestor_index = Math.min(m.dfs_ancestor_index, m1.dfs_ancestor_index);\n }\n\n /* check the indirect exports */\n for (const me of m.export_entries) {\n if (me.export_type === JSExportType.INDIRECT && me.local_name !== JS_ATOM__star_) {\n const m1 = m.req_module_entries[me.req_module_idx].module!;\n const r = { b: null as ResolvedBinding | null };\n const ret = js_resolve_export(m1, me.local_name, r);\n if (ret !== ResolveResult.FOUND) {\n js_resolve_export_throw_error(ctx, ret, m1, me.local_name);\n return -1;\n }\n }\n }\n\n if (m.kind === JSModuleKind.JS) {\n const var_refs = module_var_refs(m);\n for (const mi of m.import_entries) {\n const m1 = m.req_module_entries[mi.req_module_idx].module!;\n if (mi.is_star) {\n /* namespace import */\n const ns = js_get_module_ns(ctx, m1);\n if (JS_IsException(ns)) return -1;\n var_refs[mi.var_idx].set(ns);\n } else {\n const r = { b: null as ResolvedBinding | null };\n const ret = js_resolve_export(m1, mi.import_name, r);\n if (ret !== ResolveResult.FOUND) {\n js_resolve_export_throw_error(ctx, ret, m1, mi.import_name);\n return -1;\n }\n const vr = binding_var_ref(ctx, r.b!);\n if (vr === null) return -1;\n var_refs[mi.var_idx] = vr;\n }\n }\n /* keep the exported variables in the module export entries */\n for (const me of m.export_entries) {\n if (me.export_type === JSExportType.LOCAL) export_var_ref(m, me);\n }\n /* initialize the global variables: with `this` true, the module function only runs its\n hoisted definitions */\n const ret = JS_Call(ctx, m.func_obj, true, []);\n if (JS_IsException(ret)) return -1;\n }\n\n if (m.dfs_index === m.dfs_ancestor_index) {\n for (;;) {\n /* pop m1 from stack */\n const m1: JSModuleDef = stack.top!;\n stack.top = m1.stack_prev;\n m1.status = JSModuleStatus.LINKED;\n if (m1 === m) break;\n }\n }\n return index;\n}\n\nfunction js_link_module(ctx: JSContext, m: JSModuleDef): number {\n const stack = { top: null as JSModuleDef | null };\n if (js_inner_module_linking(ctx, m, stack, 0) < 0) {\n while (stack.top !== null) {\n const m1 = stack.top;\n m1.status = JSModuleStatus.UNLINKED;\n stack.top = m1.stack_prev;\n }\n return -1;\n }\n return 0;\n}\n\n/* ---------------------------------------------------------------------\n Module namespace objects\n --------------------------------------------------------------------- */\n\n/* GetExportedNames */\nfunction get_exported_names(m: JSModuleDef, from_star: boolean, visited: Set<JSModuleDef>, out: JSAtom[]): void {\n if (visited.has(m)) return;\n visited.add(m);\n for (const me of m.export_entries) {\n if (from_star && me.export_name === JS_ATOM_default) continue;\n if (!out.includes(me.export_name)) out.push(me.export_name);\n }\n for (const se of m.star_export_entries) {\n get_exported_names(m.req_module_entries[se.req_module_idx].module!, true, visited, out);\n }\n}\n\nfunction compare_code_units(a: string, b: string): number { return a < b ? -1 : a > b ? 1 : 0; }\n\n/* Build the namespace object of a module: a host Proxy over a frozen-shape, null-prototype\n target, so that native property access sees the live bindings (spec 10.4.6) */\nfunction js_build_module_ns(ctx: JSContext, m: JSModuleDef): JSValue {\n const names: JSAtom[] = [];\n get_exported_names(m, false, new Set(), names);\n const bindings = new Map<string, () => JSValue>();\n for (const name of names) {\n const r = { b: null as ResolvedBinding | null };\n const ret = js_resolve_export(m, name, r);\n if (ret === ResolveResult.AMBIGUOUS) continue; /* ambiguous exports are left out */\n if (ret !== ResolveResult.FOUND) {\n js_resolve_export_throw_error(ctx, ret, m, name);\n return JS_EXCEPTION;\n }\n const b = r.b!;\n const key = JS_AtomGetStr(ctx, name);\n if (b.ns !== null) {\n /* the namespace of another module: resolved lazily (cycles) */\n const target_module = b.ns;\n bindings.set(key, () => {\n const v = js_get_module_ns(ctx, target_module);\n if (JS_IsException(v)) throw js_take_exception(ctx);\n return v;\n });\n } else {\n const vr = export_var_ref(b.module, b.me);\n bindings.set(key, () => {\n const v = vr.get();\n if (v === JS_UNINITIALIZED) {\n JS_ThrowReferenceError(ctx, `'${key}' is not initialized`);\n throw js_take_exception(ctx);\n }\n return v;\n });\n }\n }\n const keys = [...bindings.keys()].sort(compare_code_units);\n const target: Record<PropertyKey, unknown> = Object.create(null);\n for (const k of keys) Reflect.defineProperty(target, k, { value: undefined, writable: true, enumerable: true, configurable: false });\n Reflect.defineProperty(target, Symbol.toStringTag, { value: 'Module', writable: false, enumerable: false, configurable: false });\n Object.preventExtensions(target);\n const value_of = (k: string): JSValue => bindings.get(k)!();\n const handler: ProxyHandler<object> = Object.assign(Object.create(null), {\n get(t: object, key: string | symbol, receiver: unknown): unknown {\n if (typeof key === 'symbol') return Reflect.get(t, key, receiver);\n return bindings.has(key) ? value_of(key) : undefined;\n },\n set(): boolean { return false; },\n has(t: object, key: string | symbol): boolean {\n if (typeof key === 'symbol') return Reflect.has(t, key);\n return bindings.has(key);\n },\n deleteProperty(t: object, key: string | symbol): boolean {\n if (typeof key === 'symbol') return Reflect.deleteProperty(t, key);\n return !bindings.has(key);\n },\n getOwnPropertyDescriptor(t: object, key: string | symbol): PropertyDescriptor | undefined {\n if (typeof key === 'symbol') return Reflect.getOwnPropertyDescriptor(t, key);\n if (!bindings.has(key)) return undefined;\n return { value: value_of(key), writable: true, enumerable: true, configurable: false };\n },\n defineProperty(t: object, key: string | symbol, desc: PropertyDescriptor): boolean {\n if (typeof key === 'symbol') return Reflect.defineProperty(t, key, desc);\n if (!bindings.has(key)) return false;\n const value = value_of(key); /* TDZ */\n if (desc.configurable === true || desc.enumerable === false || desc.get !== undefined || desc.set !== undefined ||\n desc.writable === false) return false;\n if ('value' in desc) return Object.is(desc.value, value);\n return true;\n },\n ownKeys(): PropertyKey[] { return [...keys, Symbol.toStringTag]; },\n });\n const ns = new Proxy(target, handler);\n js_ensure_meta(ns, JSClassID.MODULE_NS).realm = ctx;\n return ns;\n}\n\nexport function js_get_module_ns(ctx: JSContext, m: JSModuleDef): JSValue {\n if (m.module_ns === undefined) {\n const ns = js_build_module_ns(ctx, m);\n if (JS_IsException(ns)) return ns;\n m.module_ns = ns;\n }\n return m.module_ns;\n}\n\n/* the namespace object of a module that has been linked */\nexport function JS_GetModuleNamespace(ctx: JSContext, m: JSModuleDef): JSValue {\n return js_get_module_ns(ctx, m);\n}\n\n/* ---------------------------------------------------------------------\n Evaluation (js_inner_module_evaluation and the asynchronous completion)\n --------------------------------------------------------------------- */\n\n/* run a module without top-level await: 0, or -1 with the error in out.error */\nfunction js_execute_sync_module(ctx: JSContext, m: JSModuleDef, out: { error: JSValue }): number {\n if (m.kind !== JSModuleKind.JS) {\n for (const me of m.export_entries) me.var_ref!.set(m.synthetic_exports!.get(me.export_name));\n return 0;\n }\n const promise = JS_Call(ctx, m.func_obj, undefined, []);\n if (JS_IsException(promise)) { out.error = js_take_exception(ctx); return -1; }\n const state = JS_PromiseState(ctx, promise);\n if (state === JSPromiseState.FULFILLED) return 0;\n if (state === JSPromiseState.REJECTED) {\n out.error = JS_PromiseResult(ctx, promise);\n /* the rejection is reported through the module's own promise */\n perform_promise_then(ctx, promise, [undefined, undefined], [undefined, undefined]);\n return -1;\n }\n out.error = throw_type_error(ctx, 'promise is pending');\n return -1;\n}\n\nfunction js_execute_async_module(ctx: JSContext, m: JSModuleDef): void {\n const promise = JS_Call(ctx, m.func_obj, undefined, []);\n if (JS_IsException(promise)) {\n js_async_module_execution_rejected(ctx, m, js_take_exception(ctx));\n return;\n }\n const on_fulfilled = JS_NewCFunction(ctx, () => { js_async_module_execution_fulfilled(ctx, m); return undefined; }, '', 0);\n const on_rejected = JS_NewCFunction(ctx, (_c, _t, argv) => { js_async_module_execution_rejected(ctx, m, argv[0]); return undefined; }, '', 1);\n perform_promise_then(ctx, promise, [on_fulfilled, on_rejected], [undefined, undefined]);\n}\n\nfunction js_inner_module_evaluation(ctx: JSContext, m: JSModuleDef, index: number, stack: { top: JSModuleDef | null },\n out: { error: JSValue }): number {\n if (m.status === JSModuleStatus.EVALUATING_ASYNC || m.status === JSModuleStatus.EVALUATED) {\n if (m.eval_has_exception) { out.error = m.eval_exception; return -1; }\n return index;\n }\n if (m.status === JSModuleStatus.EVALUATING) return index;\n m.status = JSModuleStatus.EVALUATING;\n m.dfs_index = index;\n m.dfs_ancestor_index = index;\n m.pending_async_dependencies = 0;\n index++;\n /* push 'm' on stack */\n m.stack_prev = stack.top;\n stack.top = m;\n\n for (const rme of m.req_module_entries) {\n let m1 = rme.module!;\n index = js_inner_module_evaluation(ctx, m1, index, stack, out);\n if (index < 0) return -1;\n if (m1.status === JSModuleStatus.EVALUATING) {\n m.dfs_ancestor_index = Math.min(m.dfs_ancestor_index, m1.dfs_ancestor_index);\n } else {\n m1 = m1.cycle_root!;\n if (m1.eval_has_exception) { out.error = m1.eval_exception; return -1; }\n }\n if (m1.async_evaluation) {\n m.pending_async_dependencies++;\n m1.async_parent_modules.push(m);\n }\n }\n\n if (m.pending_async_dependencies > 0) {\n m.async_evaluation = true;\n m.async_evaluation_timestamp = ctx.rt.module_async_evaluation_next_timestamp++;\n } else if (m.has_tla) {\n m.async_evaluation = true;\n m.async_evaluation_timestamp = ctx.rt.module_async_evaluation_next_timestamp++;\n js_execute_async_module(ctx, m);\n } else {\n if (js_execute_sync_module(ctx, m, out) < 0) return -1;\n }\n\n if (m.dfs_index === m.dfs_ancestor_index) {\n for (;;) {\n /* pop m1 from stack */\n const m1: JSModuleDef = stack.top!;\n stack.top = m1.stack_prev;\n m1.status = m1.async_evaluation ? JSModuleStatus.EVALUATING_ASYNC : JSModuleStatus.EVALUATED;\n m1.cycle_root = m;\n if (m1 === m) break;\n }\n }\n return index;\n}\n\n/* Run the module function of the module and of all its requested modules. Returns a\n promise (or an exception) */\nfunction js_evaluate_module(ctx: JSContext, m: JSModuleDef): JSValue {\n if (m.status === JSModuleStatus.EVALUATING_ASYNC || m.status === JSModuleStatus.EVALUATED) m = m.cycle_root!;\n /* a promise may be created only on the cycle_root of a cycle */\n if (m.promise !== undefined) return m.promise;\n const funcs: [JSValue, JSValue] = [undefined, undefined];\n const promise = JS_NewPromiseCapability(ctx, funcs);\n if (JS_IsException(promise)) return promise;\n m.promise = promise;\n m.resolving_funcs = funcs;\n const stack = { top: null as JSModuleDef | null };\n const out = { error: undefined as JSValue };\n if (js_inner_module_evaluation(ctx, m, 0, stack, out) < 0) {\n while (stack.top !== null) {\n const m1 = stack.top;\n m1.status = JSModuleStatus.EVALUATED;\n m1.eval_has_exception = true;\n m1.eval_exception = out.error;\n m1.cycle_root = m;\n stack.top = m1.stack_prev;\n }\n JS_Call(ctx, m.resolving_funcs[1], undefined, [m.eval_exception]);\n } else if (!m.async_evaluation) {\n JS_Call(ctx, m.resolving_funcs[0], undefined, [undefined]);\n }\n return m.promise;\n}\n\nfunction js_set_module_evaluated(ctx: JSContext, m: JSModuleDef): void {\n m.status = JSModuleStatus.EVALUATED;\n if (m.promise !== undefined) JS_Call(ctx, m.resolving_funcs[0], undefined, [undefined]);\n}\n\n/* the async parents of a module whose evaluation finished, ready to run */\nfunction gather_available_ancestors(module: JSModuleDef, exec_list: JSModuleDef[]): void {\n for (const m of module.async_parent_modules) {\n if (!exec_list.includes(m) && !m.cycle_root!.eval_has_exception) {\n m.pending_async_dependencies--;\n if (m.pending_async_dependencies === 0) {\n exec_list.push(m);\n if (!m.has_tla) gather_available_ancestors(m, exec_list);\n }\n }\n }\n}\n\nfunction js_async_module_execution_rejected(ctx: JSContext, module: JSModuleDef, error: JSValue): void {\n if (module.status === JSModuleStatus.EVALUATED) return;\n module.eval_has_exception = true;\n module.eval_exception = error;\n module.status = JSModuleStatus.EVALUATED;\n module.async_evaluation = false;\n for (const m of module.async_parent_modules) js_async_module_execution_rejected(ctx, m, error);\n if (module.promise !== undefined) JS_Call(ctx, module.resolving_funcs[1], undefined, [error]);\n}\n\nfunction js_async_module_execution_fulfilled(ctx: JSContext, module: JSModuleDef): void {\n if (module.status === JSModuleStatus.EVALUATED) return;\n module.async_evaluation = false;\n js_set_module_evaluated(ctx, module);\n const exec_list: JSModuleDef[] = [];\n gather_available_ancestors(module, exec_list);\n /* sort by increasing async_evaluation timestamp */\n exec_list.sort((a, b) => a.async_evaluation_timestamp - b.async_evaluation_timestamp);\n for (const m of exec_list) {\n if (m.status === JSModuleStatus.EVALUATED) continue; /* rejected meanwhile */\n if (m.has_tla) {\n js_execute_async_module(ctx, m);\n } else {\n const out = { error: undefined as JSValue };\n if (js_execute_sync_module(ctx, m, out) < 0) {\n js_async_module_execution_rejected(ctx, m, out.error);\n } else {\n m.async_evaluation = false;\n js_set_module_evaluated(ctx, m);\n }\n }\n }\n}\n\n/* ---------------------------------------------------------------------\n Running modules\n --------------------------------------------------------------------- */\n\n/* link and evaluate a module whose graph is loaded: the evaluation promise, or an exception */\nfunction js_link_and_evaluate(ctx: JSContext, m: JSModuleDef): JSValue {\n if (js_create_module_function(ctx, m) < 0) return JS_EXCEPTION;\n if (js_link_module(ctx, m) < 0) return JS_EXCEPTION;\n return js_evaluate_module(ctx, m);\n}\n\n/* Load the graph of `m`, link and evaluate it, then call `ok(ns)` or `fail(error)` */\nfunction js_run_module(ctx: JSContext, m: JSModuleDef, ok: (ns: JSValue) => void, fail: (e: JSValue) => void): void {\n js_load_graph(ctx, m, err => {\n if (err !== undefined) { fail(err); return; }\n const p = js_link_and_evaluate(ctx, m);\n if (JS_IsException(p)) { fail(js_take_exception(ctx)); return; }\n const on_ful = JS_NewCFunction(ctx, () => {\n const ns = js_get_module_ns(ctx, m);\n if (JS_IsException(ns)) fail(js_take_exception(ctx)); else ok(ns);\n return undefined;\n }, '', 0);\n const on_rej = JS_NewCFunction(ctx, (_c, _t, argv) => { fail(argv[0]); return undefined; }, '', 1);\n perform_promise_then(ctx, p, [on_ful, on_rej], [undefined, undefined]);\n });\n}\n\n/* JS_EvalFunction of a compiled module (and JS_Eval of a module): with a loader that\n answers synchronously, this is QuickJS's behaviour (load or link errors are thrown, the\n result is the evaluation promise); otherwise a promise that settles with the evaluation */\nfunction js_module_eval_function(ctx: JSContext, m: JSModuleDef): JSValue {\n js_register_module(ctx, m);\n let sync = true;\n let result: JSValue = undefined;\n let error: JSValue = undefined;\n let has_error = false;\n let funcs: [JSValue, JSValue] | null = null;\n let promise: JSValue = undefined;\n js_load_graph(ctx, m, err => {\n if (sync) {\n if (err !== undefined) { has_error = true; error = err; return; }\n result = js_link_and_evaluate(ctx, m);\n return;\n }\n if (err !== undefined) { JS_Call(ctx, funcs![1], undefined, [err]); return; }\n const p = js_link_and_evaluate(ctx, m);\n if (JS_IsException(p)) { JS_Call(ctx, funcs![1], undefined, [js_take_exception(ctx)]); return; }\n JS_Call(ctx, funcs![0], undefined, [p]);\n });\n if (has_error) return JS_Throw(ctx, error);\n if (result !== undefined) return result;\n /* still loading */\n sync = false;\n funcs = [undefined, undefined];\n promise = JS_NewPromiseCapability(ctx, funcs);\n return promise;\n}\n\nfunction js_new_promise(ctx: JSContext): { promise: JSValue; resolve: (v: JSValue) => void; reject: (e: JSValue) => void } {\n const funcs: [JSValue, JSValue] = [undefined, undefined];\n const promise = JS_NewPromiseCapability(ctx, funcs);\n return {\n promise,\n resolve: v => { JS_Call(ctx, funcs[0], undefined, [v]); },\n reject: e => { JS_Call(ctx, funcs[1], undefined, [e]); },\n };\n}\n\n/* Evaluate `source` as a module named `url`: a promise for its namespace object. `flags` may hold\n JS_EVAL_FLAG_STRIP_TYPES and JS_EVAL_FLAG_JSX */\nexport function JS_EvalModule(ctx: JSContext, source: string, url: string, flags = 0): JSValue {\n const p = js_new_promise(ctx);\n const v = hooks.JS_EvalInternal(ctx, undefined, source, url, JS_EVAL_TYPE_MODULE | JS_EVAL_FLAG_COMPILE_ONLY |\n (flags & (JS_EVAL_FLAG_STRIP_TYPES | JS_EVAL_FLAG_JSX)), -1);\n if (JS_IsException(v)) { p.reject(js_take_exception(ctx)); return p.promise; }\n const m = v as unknown as JSModuleDef;\n js_register_module(ctx, m);\n js_run_module(ctx, m, p.resolve, p.reject);\n return p.promise;\n}\n\n/* import(specifier) from the host: a promise for the namespace object */\nexport function JS_ImportModule(ctx: JSContext, specifier: string, referrer: string | null = null,\n attributes: Record<string, string> | null = null): JSValue {\n const p = js_new_promise(ctx);\n js_import(ctx, specifier, referrer, attributes, p.resolve, p.reject);\n return p.promise;\n}\n\nfunction js_import(ctx: JSContext, specifier: string, referrer: string | null, attributes: Record<string, string> | null,\n ok: (ns: JSValue) => void, fail: (e: JSValue) => void): void {\n const kind = js_request_kind(ctx, attributes);\n if (kind !== 'js' && kind !== 'json') { fail(kind); return; }\n const attrs = attributes ?? {};\n let id: string;\n try { id = js_resolve_specifier(ctx, specifier, referrer, attrs); } catch (e) { fail(caught(ctx, e)); return; }\n js_fetch_module(ctx, specifier, id, kind, attrs, (err, m) => {\n if (err !== undefined) { fail(err); return; }\n js_run_module(ctx, m!, ok, fail);\n });\n}\n\n/* the name a function's code is known by: its module's id, or its script's file name */\nfunction js_referrer_of(ctx: JSContext, b: JSFunctionBytecode | null): string | null {\n if (b === null) return null;\n if (b.module !== null) return mname(ctx, b.module);\n if (b.has_debug && b.debug.filename) return JS_AtomGetStr(ctx, b.debug.filename);\n return null;\n}\n\n/* import(specifier, options) */\nfunction js_dynamic_import(ctx: JSContext, b: JSFunctionBytecode | null, specifier: JSValue, options: JSValue): JSValue {\n const p = js_new_promise(ctx);\n if (JS_IsException(p.promise)) return p.promise;\n const reject_now = (): JSValue => { p.reject(js_take_exception(ctx)); return p.promise; };\n /* the string conversion must occur here */\n const spec = JS_ToString(ctx, specifier);\n if (JS_IsException(spec)) return reject_now();\n let attributes: Record<string, string> | null = null;\n if (options !== undefined) {\n if (!JS_IsObject(options)) { JS_ThrowTypeError(ctx, 'options must be an object'); return reject_now(); }\n const with_obj = JS_GetPropertyStr(ctx, options, 'with');\n if (JS_IsException(with_obj)) return reject_now();\n if (with_obj !== undefined) {\n if (!JS_IsObject(with_obj)) { JS_ThrowTypeError(ctx, 'options.with must be an object'); return reject_now(); }\n attributes = Object.create(null);\n let keys: PropertyKey[];\n try { keys = Reflect.ownKeys(with_obj as object); } catch (e) { p.reject(host_error_to_guest(ctx, e)); return p.promise; }\n for (const k of keys) {\n if (typeof k !== 'string') continue;\n let d: PropertyDescriptor | undefined;\n try { d = Reflect.getOwnPropertyDescriptor(with_obj as object, k); } catch (e) { p.reject(host_error_to_guest(ctx, e)); return p.promise; }\n if (!d || !d.enumerable) continue;\n const v = JS_GetPropertyStr(ctx, with_obj, k);\n if (JS_IsException(v)) return reject_now();\n if (typeof v !== 'string') { JS_ThrowTypeError(ctx, 'module attribute values must be strings'); return reject_now(); }\n attributes![k] = v;\n }\n }\n }\n const kind = js_request_kind(ctx, attributes);\n if (kind !== 'js' && kind !== 'json') { p.reject(kind); return p.promise; }\n const referrer = js_referrer_of(ctx, b);\n /* not run synchronously: it could recurse into js_evaluate_module() */\n JS_EnqueueJob(ctx, () => {\n js_import(ctx, spec as string, referrer, attributes, p.resolve, p.reject);\n return undefined;\n }, []);\n return p.promise;\n}\n\n/* import.meta: a null-prototype object with `url` and `resolve` */\nfunction js_import_meta(ctx: JSContext, b: JSFunctionBytecode | null): JSValue {\n const m = b?.module ?? null;\n if (m === null) return JS_ThrowTypeError(ctx, 'import.meta not supported in this context');\n if (m.meta_obj === undefined) {\n const meta = JS_NewObjectProto(ctx, null);\n if (JS_IsException(meta)) return meta;\n const id = mname(ctx, m);\n JS_DefinePropertyValueStr(ctx, meta, 'url', m.url ?? id, JS_PROP_C_W_E);\n const resolve = JS_NewCFunction(ctx, (c, _t, argv) => {\n const spec = JS_ToString(c, argv[0]);\n if (JS_IsException(spec)) return spec;\n try {\n return js_resolve_specifier(c, spec as string, id, {});\n } catch (e) {\n return JS_Throw(c, caught(c, e));\n }\n }, 'resolve', 1);\n JS_DefinePropertyValueStr(ctx, meta, 'resolve', resolve, JS_PROP_C_W_E);\n m.meta_obj = meta;\n }\n return m.meta_obj;\n}\n\nhooks.js_module_compiled = js_module_compiled;\nhooks.js_dynamic_import = js_dynamic_import;\nhooks.js_import_meta = js_import_meta;\nhooks.js_module_eval_function = js_module_eval_function;\n"]}
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * ES modules: loading, linking, evaluation (with top-level await), module\n * namespace objects, dynamic import() and import.meta.\n *\n * Ported from quickjs.c (js_create_module_function, js_inner_module_linking,\n * js_resolve_export, js_build_module_ns, js_inner_module_evaluation,\n * js_async_module_execution_fulfilled/rejected, js_dynamic_import), with one\n * change of shape: QuickJS asks a synchronous loader for each module while it\n * resolves the graph, but a browser fetches asynchronously, so here the whole\n * graph is fetched first (in parallel where the loader allows), and linking and\n * evaluation run once every module is there. A loader that answers\n * synchronously makes the whole sequence synchronous.\n *\n * The sandbox stays closed by default: with no loader set, nothing can be\n * imported. The embedder's loader decides what a specifier means.\n */\nimport {\n JSContext, JSRuntime, JSValue, JSAtom, JSClassID, JS_EXCEPTION, JS_UNINITIALIZED, JS_IsException, JS_IsObject,\n JS_NewAtom, JS_AtomGetStr, JS_Call, JS_NewCFunction, JS_EnqueueJob, JS_ToString, JS_Throw,\n JS_ThrowTypeError, JS_ThrowSyntaxError, JS_ThrowReferenceError, JS_NewObjectProto, JS_DefinePropertyValueStr,\n JS_GetPropertyStr, JS_GetFunctionData, js_take_exception, js_ensure_meta, js_host_exception_to_guest, hooks,\n JS_PROP_C_W_E, JS_ATOM_default, JS_ATOM__star_,\n JS_EVAL_TYPE_MODULE, JS_EVAL_FLAG_COMPILE_ONLY, JS_EVAL_FLAG_STRIP_TYPES, JS_EVAL_FLAG_JSX,\n} from './quickjs.ts';\nimport {\n JSModuleDef, JSModuleStatus, JSExportEntry, JSExportType, JSModuleKind, JSFunctionBytecode,\n JSVarRef, JSPromiseState, new_var_ref_cell,\n} from './values.ts';\nimport { js_closure_from_refs } from './interpreter.ts';\nimport { JS_NewPromiseCapability, JS_PromiseState, JS_PromiseResult, perform_promise_then } from './builtins/promise.ts';\nimport { JS_ParseJSON } from './builtins/json.ts';\nimport { toGuest, drainJobs } from './embed.ts';\n\n/* ---------------------------------------------------------------------\n The embedder's loader\n --------------------------------------------------------------------- */\n\n/* what a loader returns for a module id */\nexport interface JSModuleSource {\n /* JavaScript (or TypeScript, or JSON) source text */\n source?: string;\n /* bytecode written by JS_WriteObject for a compiled module */\n bytecode?: Uint8Array;\n /* import.meta.url (defaults to the id) */\n url?: string;\n /* 'js' (default), 'ts' (stripped like JS_EVAL_FLAG_STRIP_TYPES; also chosen by a .ts, .mts or\n .cts id), 'jsx' (JSX compiled like JS_EVAL_FLAG_JSX; also chosen by a .jsx id), 'tsx' (both;\n also chosen by a .tsx id), or 'json' (only for imports `with { type: \"json\" }`) */\n type?: JSModuleSourceType;\n /* a host module: its exports as host values, marshalled into the guest with toGuest()\n (`default` is the default export) */\n exports?: Record<string, unknown>;\n}\nexport type JSModuleLoadResult = string | Uint8Array | JSModuleSource;\nexport type JSModuleSourceType = 'js' | 'ts' | 'jsx' | 'tsx' | 'json';\n\n/* the source type an id implies: .ts, .mts and .cts are TypeScript, .tsx TSX, .jsx JSX. When the\n id is a URL (it has a scheme), its query and fragment are not part of the path, so\n `https://app/App.tsx?v=3` and `file:///a.ts#x` are TSX and TypeScript; other ids (file paths)\n are matched as they are, since `?` and `#` are ordinary characters there */\nexport function js_module_type_of(id: string): 'js' | 'ts' | 'jsx' | 'tsx' {\n const path = /^[a-z][a-z0-9+.-]*:/i.test(id) ? id.replace(/[?#].*$/s, '') : id;\n return /\\.[mc]?ts$/.test(path) ? 'ts' : /\\.tsx$/.test(path) ? 'tsx' : /\\.jsx$/.test(path) ? 'jsx' : 'js';\n}\n\n/* the JS_Eval flags that compile a source type */\nexport function js_module_type_flags(type: string): number {\n return (type === 'ts' || type === 'tsx' ? JS_EVAL_FLAG_STRIP_TYPES : 0) | (type === 'jsx' || type === 'tsx' ? JS_EVAL_FLAG_JSX : 0);\n}\n\nexport interface JSModuleLoader {\n /* the normalized id of `specifier` imported from `referrer` (the importing module's id, a\n script's file name, or null from the host). Default: URL-style resolution of relative\n specifiers (`./`, `../`, `/`) against the referrer; other specifiers are kept as they are */\n resolve?(specifier: string, referrer: string | null, attributes: Record<string, string>): string;\n /* the module for an id: its source, bytecode or host exports, or a promise of them */\n load(id: string, attributes: Record<string, string>): JSModuleLoadResult | PromiseLike<JSModuleLoadResult>;\n}\n\n/* Set (or clear, with null) the module loader of a runtime */\nexport function JS_SetModuleLoader(rt: JSRuntime, loader: JSModuleLoader | null): void {\n rt.module_loader = loader;\n}\n\n/* the default resolution: relative specifiers against the referrer, URL style */\nexport function js_default_module_resolve(specifier: string, referrer: string | null): string {\n if (!(specifier.startsWith('./') || specifier.startsWith('../') || specifier.startsWith('/'))) return specifier;\n if (referrer === null) return normalize_path(specifier);\n if (/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(referrer)) {\n try { return new URL(specifier, referrer).href; } catch { /* not a URL: fall through */ }\n }\n if (specifier.startsWith('/')) return normalize_path(specifier);\n const slash = referrer.lastIndexOf('/');\n const dir = slash >= 0 ? referrer.slice(0, slash + 1) : '';\n return normalize_path(dir + specifier);\n}\n\n/* collapse `.` and `..` segments of a path */\nfunction normalize_path(path: string): string {\n const abs = path.startsWith('/');\n const out: string[] = [];\n for (const seg of path.split('/')) {\n if (seg === '' || seg === '.') continue;\n if (seg === '..') {\n if (out.length > 0 && out[out.length - 1] !== '..') out.pop();\n else if (!abs) out.push('..');\n continue;\n }\n out.push(seg);\n }\n const r = out.join('/');\n return abs ? '/' + r : r;\n}\n\n/* QuickJS's JS_DetectModule heuristic: after comments, the source starts with `export`, or\n with `import` not followed by `(` or `.` */\nexport function JS_DetectModule(input: string): boolean {\n let p = 0;\n const n = input.length;\n if (input.startsWith('#!')) { while (p < n && input[p] !== '\\n') p++; }\n const skip = (): void => {\n for (;;) {\n while (p < n && /\\s/.test(input[p])) p++;\n if (input.startsWith('//', p)) { while (p < n && input[p] !== '\\n') p++; continue; }\n if (input.startsWith('/*', p)) { const e = input.indexOf('*/', p + 2); p = e < 0 ? n : e + 2; continue; }\n break;\n }\n };\n const word = (): string => { const m = /^[A-Za-z_$][\\w$]*/.exec(input.slice(p, p + 32)); return m ? m[0] : ''; };\n skip();\n const w = word();\n if (w === 'export') return true;\n if (w !== 'import') return false;\n p += 6;\n skip();\n return !(input[p] === '(' || input[p] === '.');\n}\n\n/* ---------------------------------------------------------------------\n Errors\n --------------------------------------------------------------------- */\n\nfunction throw_type_error(ctx: JSContext, msg: string): JSValue {\n JS_ThrowTypeError(ctx, msg);\n return js_take_exception(ctx);\n}\nfunction throw_syntax_error(ctx: JSContext, msg: string): JSValue {\n JS_ThrowSyntaxError(ctx, msg);\n return js_take_exception(ctx);\n}\n\n/* a value thrown by the embedder's loader, as a guest value */\nfunction host_error_to_guest(ctx: JSContext, e: unknown): JSValue {\n try { return toGuest(ctx, e); } catch { return throw_type_error(ctx, String(e)); }\n}\n\n/* a value caught in this file, in the engine's convention: guest values pass through, host\n errors become guest errors */\nfunction caught(ctx: JSContext, e: unknown): JSValue {\n js_host_exception_to_guest(ctx, e);\n return js_take_exception(ctx);\n}\n\nfunction mname(ctx: JSContext, m: JSModuleDef): string { return JS_AtomGetStr(ctx, m.module_name); }\n\n/* ---------------------------------------------------------------------\n Compiled modules\n --------------------------------------------------------------------- */\n\n/* every function of a module knows its module (import.meta, the referrer of import()) */\nfunction js_mark_module_functions(b: JSFunctionBytecode, m: JSModuleDef): void {\n b.module = m;\n for (const c of b.cpool) if (c instanceof JSFunctionBytecode) js_mark_module_functions(c, m);\n}\n\n/* the module record of a compiled module body */\nexport function js_module_set_function(m: JSModuleDef, b: JSFunctionBytecode): void {\n m.func_bytecode = b;\n js_mark_module_functions(b, m);\n}\n\n/* called by the parser for JS_EVAL_TYPE_MODULE */\nfunction js_module_compiled(ctx: JSContext, m: JSModuleDef, b: JSFunctionBytecode, flags: number): JSValue {\n js_module_set_function(m, b);\n if (flags & JS_EVAL_FLAG_COMPILE_ONLY) return m as unknown as JSValue;\n return js_module_eval_function(ctx, m);\n}\n\nfunction module_key(id: string, kind: 'js' | 'json'): string {\n return kind === 'json' ? id + '\\u0000json' : id;\n}\n\n/* register a root module (JS_Eval, JS_EvalFunction) under its name, if the name is free */\nfunction js_register_module(ctx: JSContext, m: JSModuleDef): void {\n const key = module_key(mname(ctx, m), m.kind === JSModuleKind.JSON ? 'json' : 'js');\n if (!ctx.module_map.has(key)) ctx.module_map.set(key, m);\n}\n\n/* a synthetic module (JSON or host values) with the given named exports */\nfunction js_new_synthetic_module(ctx: JSContext, id: string, kind: JSModuleKind, exports: Map<string, JSValue>): JSModuleDef {\n const m = new JSModuleDef(JS_NewAtom(ctx, id));\n m.kind = kind;\n m.realm = ctx;\n m.synthetic_exports = new Map();\n for (const [name, v] of exports) {\n const atom = JS_NewAtom(ctx, name);\n m.export_entries.push(new JSExportEntry(atom, atom, JSExportType.LOCAL));\n m.synthetic_exports.set(atom, v);\n }\n return m;\n}\n\n/* the module for what the loader returned; throws a guest value on failure */\nfunction js_module_from_load_result(ctx: JSContext, id: string, kind: 'js' | 'json', r: JSModuleLoadResult): JSModuleDef {\n let src: JSModuleSource;\n if (typeof r === 'string') src = { source: r };\n else if (r instanceof Uint8Array) src = { bytecode: r };\n else if (r !== null && typeof r === 'object') src = r;\n else throw throw_type_error(ctx, `the module loader returned no module for '${id}'`);\n\n if (src.exports !== undefined) {\n if (kind === 'json') throw throw_type_error(ctx, `'${id}' is a host module, not a JSON module`);\n const exports = new Map<string, JSValue>();\n for (const k of Object.keys(src.exports)) {\n try { exports.set(k, toGuest(ctx, src.exports[k])); }\n catch (e) { throw host_error_to_guest(ctx, e); }\n }\n const m = js_new_synthetic_module(ctx, id, JSModuleKind.HOST, exports);\n m.url = src.url ?? null;\n return m;\n }\n const type = src.type ?? (src.bytecode ? 'js' : js_module_type_of(id));\n if (kind === 'json' || type === 'json') {\n if (kind !== 'json') throw throw_type_error(ctx, `'${id}' is a JSON module: import it with { type: \"json\" }`);\n if (type !== 'json' && src.type !== undefined) throw throw_type_error(ctx, `'${id}' is not a JSON module`);\n if (typeof src.source !== 'string') throw throw_type_error(ctx, `the module loader returned no JSON source for '${id}'`);\n const v = JS_ParseJSON(ctx, src.source, id);\n if (JS_IsException(v)) throw js_take_exception(ctx);\n const m = js_new_synthetic_module(ctx, id, JSModuleKind.JSON, new Map([['default', v]]));\n m.url = src.url ?? null;\n return m;\n }\n let m: JSModuleDef;\n if (src.bytecode !== undefined) {\n const read = hooks_bytecode.read;\n if (read === null) throw throw_type_error(ctx, 'bytecode modules are not supported in this build');\n const v = read(ctx, src.bytecode);\n if (JS_IsException(v)) throw js_take_exception(ctx);\n if (!(v instanceof JSModuleDef)) throw throw_type_error(ctx, `the bytecode for '${id}' is not a module`);\n m = v;\n /* the module takes the id it was loaded under */\n m.module_name = JS_NewAtom(ctx, id);\n } else {\n if (typeof src.source !== 'string') throw throw_type_error(ctx, `the module loader returned no source for '${id}'`);\n const flags = JS_EVAL_TYPE_MODULE | JS_EVAL_FLAG_COMPILE_ONLY | js_module_type_flags(type);\n const v = hooks.JS_EvalInternal(ctx, undefined, src.source, id, flags, -1);\n if (JS_IsException(v)) throw js_take_exception(ctx);\n m = v as unknown as JSModuleDef;\n }\n m.url = src.url ?? null;\n return m;\n}\n\n/* set by src/bytecode.ts: read a compiled module from bytes */\nexport const hooks_bytecode: { read: ((ctx: JSContext, bytes: Uint8Array) => JSValue) | null } = { read: null };\n\n/* ---------------------------------------------------------------------\n Fetching the module graph\n --------------------------------------------------------------------- */\n\ntype LoadCallback = (err: JSValue | undefined, m: JSModuleDef | null) => void;\n\ninterface InflightLoad { waiters: LoadCallback[] }\n\n/* the module type a request asks for, or a guest error */\nfunction js_request_kind(ctx: JSContext, attrs: Record<string, string> | null): 'js' | 'json' | JSValue {\n if (attrs === null) return 'js';\n for (const k of Object.keys(attrs)) {\n if (k !== 'type') return throw_syntax_error(ctx, `unsupported import attribute '${k}'`);\n }\n const t = attrs.type;\n if (t === undefined) return 'js';\n if (t === 'json') return 'json';\n return throw_type_error(ctx, `unsupported module type '${t}'`);\n}\n\nfunction js_resolve_specifier(ctx: JSContext, specifier: string, referrer: string | null,\n attrs: Record<string, string>): string {\n const loader = ctx.rt.module_loader as JSModuleLoader | null;\n if (loader === null) throw throw_type_error(ctx, `cannot import '${specifier}': no module loader is set`);\n let id: unknown;\n try {\n id = loader.resolve ? loader.resolve(specifier, referrer, attrs) : js_default_module_resolve(specifier, referrer);\n } catch (e) {\n throw host_error_to_guest(ctx, e);\n }\n if (typeof id !== 'string') throw throw_type_error(ctx, `the module loader could not resolve '${specifier}'`);\n return id;\n}\n\n/* the module for `id`: from the context's map, or fetched with the loader. `cb` runs once,\n synchronously if the module is there or the loader answers synchronously */\nfunction js_fetch_module(ctx: JSContext, specifier: string, id: string, kind: 'js' | 'json',\n attrs: Record<string, string>, cb: LoadCallback): void {\n const key = module_key(id, kind);\n const existing = ctx.module_map.get(key) as JSModuleDef | undefined;\n if (existing !== undefined) { cb(undefined, existing); return; }\n const inflight = ctx.module_inflight.get(key) as InflightLoad | undefined;\n if (inflight !== undefined) { inflight.waiters.push(cb); return; }\n const loader = ctx.rt.module_loader as JSModuleLoader | null;\n if (loader === null) { cb(throw_type_error(ctx, `cannot import '${specifier}': no module loader is set`), null); return; }\n const entry: InflightLoad = { waiters: [cb] };\n ctx.module_inflight.set(key, entry);\n let is_async = false;\n const settle = (err: JSValue | undefined, m: JSModuleDef | null): void => {\n ctx.module_inflight.delete(key);\n if (m !== null) ctx.module_map.set(key, m);\n for (const w of entry.waiters) w(err, m);\n /* a load that finished in a host callback: run the guest jobs it started */\n if (is_async) drainJobs(ctx);\n };\n const done = (r: JSModuleLoadResult): void => {\n let m: JSModuleDef;\n try {\n m = js_module_from_load_result(ctx, id, kind, r);\n } catch (e) {\n settle(caught(ctx, e), null);\n return;\n }\n settle(undefined, m);\n };\n let r: JSModuleLoadResult | PromiseLike<JSModuleLoadResult>;\n try {\n r = loader.load(id, attrs);\n } catch (e) {\n settle(host_error_to_guest(ctx, e), null);\n return;\n }\n if (r !== null && typeof r === 'object' && typeof (r as PromiseLike<unknown>).then === 'function') {\n is_async = true;\n (r as PromiseLike<JSModuleLoadResult>).then(done, e => settle(host_error_to_guest(ctx, e), null));\n } else {\n done(r as JSModuleLoadResult);\n }\n}\n\n/* Make sure every request of `root`, transitively, has its module. `cb(err)` runs once; it\n runs synchronously when every module was already loaded or loaded synchronously */\nfunction js_load_graph(ctx: JSContext, root: JSModuleDef, cb: (err: JSValue | undefined) => void): void {\n let pending = 0;\n let finished = false;\n const visited = new Set<JSModuleDef>();\n const fail = (err: JSValue): void => { if (!finished) { finished = true; cb(err); } };\n const one_done = (): void => { if (--pending === 0 && !finished) { finished = true; cb(undefined); } };\n const visit = (m: JSModuleDef): void => {\n if (visited.has(m) || finished) return;\n visited.add(m);\n const referrer = mname(ctx, m);\n for (const rme of m.req_module_entries) {\n if (finished) return;\n if (rme.module !== null) { visit(rme.module); continue; }\n const specifier = JS_AtomGetStr(ctx, rme.module_name);\n const attrs = rme.attributes ?? {};\n const kind = js_request_kind(ctx, rme.attributes);\n if (kind !== 'js' && kind !== 'json') { fail(kind); return; }\n let id: string;\n try { id = js_resolve_specifier(ctx, specifier, referrer, attrs); } catch (e) { fail(caught(ctx, e)); return; }\n pending++;\n js_fetch_module(ctx, specifier, id, kind, attrs, (err, m1) => {\n if (finished) return;\n if (err !== undefined) { fail(err); return; }\n rme.module = m1;\n visit(m1!);\n one_done();\n });\n }\n };\n pending++;\n visit(root);\n one_done();\n}\n\n/* ---------------------------------------------------------------------\n Module functions and linking (js_create_module_function, js_link_module)\n --------------------------------------------------------------------- */\n\nfunction js_create_module_function(ctx: JSContext, m: JSModuleDef): number {\n if (m.func_created) return 0;\n if (m.kind !== JSModuleKind.JS) {\n /* initialize the exported variables */\n for (const me of m.export_entries) me.var_ref = new_var_ref_cell(undefined);\n } else {\n const b = m.func_bytecode!;\n /* create the module variables; the other variables are imported from other modules */\n const var_refs: (JSVarRef | null)[] = b.closure_var.map(cv =>\n cv.is_local ? new_var_ref_cell(cv.is_lexical ? JS_UNINITIALIZED : undefined) : null);\n const proto = ctx.class_proto[JSClassID.ASYNC_FUNCTION] ?? ctx.function_proto;\n const f = js_closure_from_refs(ctx, b, var_refs as JSVarRef[], proto, false);\n if (JS_IsException(f)) return -1;\n m.func_obj = f;\n }\n m.func_created = true;\n /* do it on the dependencies */\n for (const rme of m.req_module_entries) {\n if (js_create_module_function(ctx, rme.module!) < 0) return -1;\n }\n return 0;\n}\n\nfunction module_var_refs(m: JSModuleDef): JSVarRef[] {\n return JS_GetFunctionData(m.func_obj)!.var_refs as JSVarRef[];\n}\n\n/* the variable of a local export */\nfunction export_var_ref(m: JSModuleDef, me: JSExportEntry): JSVarRef {\n if (me.var_ref === null) me.var_ref = module_var_refs(m)[me.var_idx];\n return me.var_ref;\n}\n\nconst enum ResolveResult { FOUND, NOT_FOUND, CIRCULAR, AMBIGUOUS }\n\n/* a resolved binding: a module variable, or the namespace of a module */\ninterface ResolvedBinding { module: JSModuleDef; me: JSExportEntry; ns: JSModuleDef | null }\n\nfunction same_binding(a: ResolvedBinding, b: ResolvedBinding): boolean {\n if (a.ns !== null || b.ns !== null) return a.ns === b.ns;\n return a.module === b.module && a.me.var_idx === b.me.var_idx && a.me.local_name === b.me.local_name;\n}\n\n/* ResolveExport (js_resolve_export1) */\nfunction js_resolve_export1(m: JSModuleDef, export_name: JSAtom, set: Map<JSModuleDef, Set<JSAtom>>,\n out: { b: ResolvedBinding | null }): ResolveResult {\n out.b = null;\n let names = set.get(m);\n if (names === undefined) { names = new Set(); set.set(m, names); }\n if (names.has(export_name)) return ResolveResult.CIRCULAR;\n names.add(export_name);\n const me = m.export_entries.find(e => e.export_name === export_name) ?? null;\n if (me !== null) {\n if (me.export_type === JSExportType.LOCAL) {\n out.b = { module: m, me, ns: null };\n return ResolveResult.FOUND;\n }\n const m1 = m.req_module_entries[me.req_module_idx].module!;\n if (me.local_name === JS_ATOM__star_) {\n /* export * as ns from */\n out.b = { module: m, me, ns: m1 };\n return ResolveResult.FOUND;\n }\n return js_resolve_export1(m1, me.local_name, set, out);\n }\n if (export_name === JS_ATOM_default) return ResolveResult.NOT_FOUND;\n /* not found in the direct or indirect exports: try the star exports */\n let star: ResolvedBinding | null = null;\n for (const se of m.star_export_entries) {\n const m1 = m.req_module_entries[se.req_module_idx].module!;\n const r = { b: null as ResolvedBinding | null };\n const ret = js_resolve_export1(m1, export_name, set, r);\n if (ret === ResolveResult.AMBIGUOUS) return ret;\n if (ret === ResolveResult.FOUND) {\n if (star !== null) {\n if (!same_binding(star, r.b!)) return ResolveResult.AMBIGUOUS;\n } else {\n star = r.b;\n }\n }\n }\n if (star !== null) { out.b = star; return ResolveResult.FOUND; }\n return ResolveResult.NOT_FOUND;\n}\n\nfunction js_resolve_export(m: JSModuleDef, export_name: JSAtom, out: { b: ResolvedBinding | null }): ResolveResult {\n return js_resolve_export1(m, export_name, new Map(), out);\n}\n\nfunction js_resolve_export_throw_error(ctx: JSContext, res: ResolveResult, m: JSModuleDef, export_name: JSAtom): void {\n const n = JS_AtomGetStr(ctx, export_name), mn = mname(ctx, m);\n switch (res) {\n case ResolveResult.CIRCULAR:\n JS_ThrowSyntaxError(ctx, `circular reference when looking for export '${n}' in module '${mn}'`);\n break;\n case ResolveResult.AMBIGUOUS:\n JS_ThrowSyntaxError(ctx, `export '${n}' in module '${mn}' is ambiguous`);\n break;\n default:\n JS_ThrowSyntaxError(ctx, `Could not find export '${n}' in module '${mn}'`);\n break;\n }\n}\n\n/* the variable a resolved binding reads */\nfunction binding_var_ref(ctx: JSContext, b: ResolvedBinding): JSVarRef | null {\n if (b.ns !== null) {\n const ns = js_get_module_ns(ctx, b.ns);\n if (JS_IsException(ns)) return null;\n return new_var_ref_cell(ns);\n }\n return export_var_ref(b.module, b.me);\n}\n\n/* Prepare a module to be executed by resolving all the imported variables */\nfunction js_inner_module_linking(ctx: JSContext, m: JSModuleDef, stack: { top: JSModuleDef | null }, index: number): number {\n if (m.status === JSModuleStatus.LINKING || m.status === JSModuleStatus.LINKED ||\n m.status === JSModuleStatus.EVALUATING_ASYNC || m.status === JSModuleStatus.EVALUATED) return index;\n m.status = JSModuleStatus.LINKING;\n m.dfs_index = index;\n m.dfs_ancestor_index = index;\n index++;\n /* push 'm' on stack */\n m.stack_prev = stack.top;\n stack.top = m;\n\n for (const rme of m.req_module_entries) {\n const m1 = rme.module!;\n index = js_inner_module_linking(ctx, m1, stack, index);\n if (index < 0) return -1;\n if (m1.status === JSModuleStatus.LINKING) m.dfs_ancestor_index = Math.min(m.dfs_ancestor_index, m1.dfs_ancestor_index);\n }\n\n /* check the indirect exports */\n for (const me of m.export_entries) {\n if (me.export_type === JSExportType.INDIRECT && me.local_name !== JS_ATOM__star_) {\n const m1 = m.req_module_entries[me.req_module_idx].module!;\n const r = { b: null as ResolvedBinding | null };\n const ret = js_resolve_export(m1, me.local_name, r);\n if (ret !== ResolveResult.FOUND) {\n js_resolve_export_throw_error(ctx, ret, m1, me.local_name);\n return -1;\n }\n }\n }\n\n if (m.kind === JSModuleKind.JS) {\n const var_refs = module_var_refs(m);\n for (const mi of m.import_entries) {\n const m1 = m.req_module_entries[mi.req_module_idx].module!;\n if (mi.is_star) {\n /* namespace import */\n const ns = js_get_module_ns(ctx, m1);\n if (JS_IsException(ns)) return -1;\n var_refs[mi.var_idx].set(ns);\n } else {\n const r = { b: null as ResolvedBinding | null };\n const ret = js_resolve_export(m1, mi.import_name, r);\n if (ret !== ResolveResult.FOUND) {\n js_resolve_export_throw_error(ctx, ret, m1, mi.import_name);\n return -1;\n }\n const vr = binding_var_ref(ctx, r.b!);\n if (vr === null) return -1;\n var_refs[mi.var_idx] = vr;\n }\n }\n /* keep the exported variables in the module export entries */\n for (const me of m.export_entries) {\n if (me.export_type === JSExportType.LOCAL) export_var_ref(m, me);\n }\n /* initialize the global variables: with `this` true, the module function only runs its\n hoisted definitions */\n const ret = JS_Call(ctx, m.func_obj, true, []);\n if (JS_IsException(ret)) return -1;\n }\n\n if (m.dfs_index === m.dfs_ancestor_index) {\n for (;;) {\n /* pop m1 from stack */\n const m1: JSModuleDef = stack.top!;\n stack.top = m1.stack_prev;\n m1.status = JSModuleStatus.LINKED;\n if (m1 === m) break;\n }\n }\n return index;\n}\n\nfunction js_link_module(ctx: JSContext, m: JSModuleDef): number {\n const stack = { top: null as JSModuleDef | null };\n if (js_inner_module_linking(ctx, m, stack, 0) < 0) {\n while (stack.top !== null) {\n const m1 = stack.top;\n m1.status = JSModuleStatus.UNLINKED;\n stack.top = m1.stack_prev;\n }\n return -1;\n }\n return 0;\n}\n\n/* ---------------------------------------------------------------------\n Module namespace objects\n --------------------------------------------------------------------- */\n\n/* GetExportedNames */\nfunction get_exported_names(m: JSModuleDef, from_star: boolean, visited: Set<JSModuleDef>, out: JSAtom[]): void {\n if (visited.has(m)) return;\n visited.add(m);\n for (const me of m.export_entries) {\n if (from_star && me.export_name === JS_ATOM_default) continue;\n if (!out.includes(me.export_name)) out.push(me.export_name);\n }\n for (const se of m.star_export_entries) {\n get_exported_names(m.req_module_entries[se.req_module_idx].module!, true, visited, out);\n }\n}\n\nfunction compare_code_units(a: string, b: string): number { return a < b ? -1 : a > b ? 1 : 0; }\n\n/* Build the namespace object of a module: a host Proxy over a frozen-shape, null-prototype\n target, so that native property access sees the live bindings (spec 10.4.6) */\nfunction js_build_module_ns(ctx: JSContext, m: JSModuleDef): JSValue {\n const names: JSAtom[] = [];\n get_exported_names(m, false, new Set(), names);\n const bindings = new Map<string, () => JSValue>();\n for (const name of names) {\n const r = { b: null as ResolvedBinding | null };\n const ret = js_resolve_export(m, name, r);\n if (ret === ResolveResult.AMBIGUOUS) continue; /* ambiguous exports are left out */\n if (ret !== ResolveResult.FOUND) {\n js_resolve_export_throw_error(ctx, ret, m, name);\n return JS_EXCEPTION;\n }\n const b = r.b!;\n const key = JS_AtomGetStr(ctx, name);\n if (b.ns !== null) {\n /* the namespace of another module: resolved lazily (cycles) */\n const target_module = b.ns;\n bindings.set(key, () => {\n const v = js_get_module_ns(ctx, target_module);\n if (JS_IsException(v)) throw js_take_exception(ctx);\n return v;\n });\n } else {\n const vr = export_var_ref(b.module, b.me);\n bindings.set(key, () => {\n const v = vr.get();\n if (v === JS_UNINITIALIZED) {\n JS_ThrowReferenceError(ctx, `'${key}' is not initialized`);\n throw js_take_exception(ctx);\n }\n return v;\n });\n }\n }\n const keys = [...bindings.keys()].sort(compare_code_units);\n const target: Record<PropertyKey, unknown> = Object.create(null);\n for (const k of keys) Reflect.defineProperty(target, k, { value: undefined, writable: true, enumerable: true, configurable: false });\n Reflect.defineProperty(target, Symbol.toStringTag, { value: 'Module', writable: false, enumerable: false, configurable: false });\n Object.preventExtensions(target);\n const value_of = (k: string): JSValue => bindings.get(k)!();\n const handler: ProxyHandler<object> = Object.assign(Object.create(null), {\n get(t: object, key: string | symbol, receiver: unknown): unknown {\n if (typeof key === 'symbol') return Reflect.get(t, key, receiver);\n return bindings.has(key) ? value_of(key) : undefined;\n },\n set(): boolean { return false; },\n has(t: object, key: string | symbol): boolean {\n if (typeof key === 'symbol') return Reflect.has(t, key);\n return bindings.has(key);\n },\n deleteProperty(t: object, key: string | symbol): boolean {\n if (typeof key === 'symbol') return Reflect.deleteProperty(t, key);\n return !bindings.has(key);\n },\n getOwnPropertyDescriptor(t: object, key: string | symbol): PropertyDescriptor | undefined {\n if (typeof key === 'symbol') return Reflect.getOwnPropertyDescriptor(t, key);\n if (!bindings.has(key)) return undefined;\n return { value: value_of(key), writable: true, enumerable: true, configurable: false };\n },\n defineProperty(t: object, key: string | symbol, desc: PropertyDescriptor): boolean {\n if (typeof key === 'symbol') return Reflect.defineProperty(t, key, desc);\n if (!bindings.has(key)) return false;\n const value = value_of(key); /* TDZ */\n if (desc.configurable === true || desc.enumerable === false || desc.get !== undefined || desc.set !== undefined ||\n desc.writable === false) return false;\n if ('value' in desc) return Object.is(desc.value, value);\n return true;\n },\n ownKeys(): PropertyKey[] { return [...keys, Symbol.toStringTag]; },\n });\n const ns = new Proxy(target, handler);\n js_ensure_meta(ns, JSClassID.MODULE_NS).realm = ctx;\n return ns;\n}\n\nexport function js_get_module_ns(ctx: JSContext, m: JSModuleDef): JSValue {\n if (m.module_ns === undefined) {\n const ns = js_build_module_ns(ctx, m);\n if (JS_IsException(ns)) return ns;\n m.module_ns = ns;\n }\n return m.module_ns;\n}\n\n/* the namespace object of a module that has been linked */\nexport function JS_GetModuleNamespace(ctx: JSContext, m: JSModuleDef): JSValue {\n return js_get_module_ns(ctx, m);\n}\n\n/* ---------------------------------------------------------------------\n Evaluation (js_inner_module_evaluation and the asynchronous completion)\n --------------------------------------------------------------------- */\n\n/* run a module without top-level await: 0, or -1 with the error in out.error */\nfunction js_execute_sync_module(ctx: JSContext, m: JSModuleDef, out: { error: JSValue }): number {\n if (m.kind !== JSModuleKind.JS) {\n for (const me of m.export_entries) me.var_ref!.set(m.synthetic_exports!.get(me.export_name));\n return 0;\n }\n const promise = JS_Call(ctx, m.func_obj, undefined, []);\n if (JS_IsException(promise)) { out.error = js_take_exception(ctx); return -1; }\n const state = JS_PromiseState(ctx, promise);\n if (state === JSPromiseState.FULFILLED) return 0;\n if (state === JSPromiseState.REJECTED) {\n out.error = JS_PromiseResult(ctx, promise);\n /* the rejection is reported through the module's own promise */\n perform_promise_then(ctx, promise, [undefined, undefined], [undefined, undefined]);\n return -1;\n }\n out.error = throw_type_error(ctx, 'promise is pending');\n return -1;\n}\n\nfunction js_execute_async_module(ctx: JSContext, m: JSModuleDef): void {\n const promise = JS_Call(ctx, m.func_obj, undefined, []);\n if (JS_IsException(promise)) {\n js_async_module_execution_rejected(ctx, m, js_take_exception(ctx));\n return;\n }\n const on_fulfilled = JS_NewCFunction(ctx, () => { js_async_module_execution_fulfilled(ctx, m); return undefined; }, '', 0);\n const on_rejected = JS_NewCFunction(ctx, (_c, _t, argv) => { js_async_module_execution_rejected(ctx, m, argv[0]); return undefined; }, '', 1);\n perform_promise_then(ctx, promise, [on_fulfilled, on_rejected], [undefined, undefined]);\n}\n\nfunction js_inner_module_evaluation(ctx: JSContext, m: JSModuleDef, index: number, stack: { top: JSModuleDef | null },\n out: { error: JSValue }): number {\n if (m.status === JSModuleStatus.EVALUATING_ASYNC || m.status === JSModuleStatus.EVALUATED) {\n if (m.eval_has_exception) { out.error = m.eval_exception; return -1; }\n return index;\n }\n if (m.status === JSModuleStatus.EVALUATING) return index;\n m.status = JSModuleStatus.EVALUATING;\n m.dfs_index = index;\n m.dfs_ancestor_index = index;\n m.pending_async_dependencies = 0;\n index++;\n /* push 'm' on stack */\n m.stack_prev = stack.top;\n stack.top = m;\n\n for (const rme of m.req_module_entries) {\n let m1 = rme.module!;\n index = js_inner_module_evaluation(ctx, m1, index, stack, out);\n if (index < 0) return -1;\n if (m1.status === JSModuleStatus.EVALUATING) {\n m.dfs_ancestor_index = Math.min(m.dfs_ancestor_index, m1.dfs_ancestor_index);\n } else {\n m1 = m1.cycle_root!;\n if (m1.eval_has_exception) { out.error = m1.eval_exception; return -1; }\n }\n if (m1.async_evaluation) {\n m.pending_async_dependencies++;\n m1.async_parent_modules.push(m);\n }\n }\n\n if (m.pending_async_dependencies > 0) {\n m.async_evaluation = true;\n m.async_evaluation_timestamp = ctx.rt.module_async_evaluation_next_timestamp++;\n } else if (m.has_tla) {\n m.async_evaluation = true;\n m.async_evaluation_timestamp = ctx.rt.module_async_evaluation_next_timestamp++;\n js_execute_async_module(ctx, m);\n } else {\n if (js_execute_sync_module(ctx, m, out) < 0) return -1;\n }\n\n if (m.dfs_index === m.dfs_ancestor_index) {\n for (;;) {\n /* pop m1 from stack */\n const m1: JSModuleDef = stack.top!;\n stack.top = m1.stack_prev;\n m1.status = m1.async_evaluation ? JSModuleStatus.EVALUATING_ASYNC : JSModuleStatus.EVALUATED;\n m1.cycle_root = m;\n if (m1 === m) break;\n }\n }\n return index;\n}\n\n/* Run the module function of the module and of all its requested modules. Returns a\n promise (or an exception) */\nfunction js_evaluate_module(ctx: JSContext, m: JSModuleDef): JSValue {\n if (m.status === JSModuleStatus.EVALUATING_ASYNC || m.status === JSModuleStatus.EVALUATED) m = m.cycle_root!;\n /* a promise may be created only on the cycle_root of a cycle */\n if (m.promise !== undefined) return m.promise;\n const funcs: [JSValue, JSValue] = [undefined, undefined];\n const promise = JS_NewPromiseCapability(ctx, funcs);\n if (JS_IsException(promise)) return promise;\n m.promise = promise;\n m.resolving_funcs = funcs;\n const stack = { top: null as JSModuleDef | null };\n const out = { error: undefined as JSValue };\n if (js_inner_module_evaluation(ctx, m, 0, stack, out) < 0) {\n while (stack.top !== null) {\n const m1 = stack.top;\n m1.status = JSModuleStatus.EVALUATED;\n m1.eval_has_exception = true;\n m1.eval_exception = out.error;\n m1.cycle_root = m;\n stack.top = m1.stack_prev;\n }\n JS_Call(ctx, m.resolving_funcs[1], undefined, [m.eval_exception]);\n } else if (!m.async_evaluation) {\n JS_Call(ctx, m.resolving_funcs[0], undefined, [undefined]);\n }\n return m.promise;\n}\n\nfunction js_set_module_evaluated(ctx: JSContext, m: JSModuleDef): void {\n m.status = JSModuleStatus.EVALUATED;\n if (m.promise !== undefined) JS_Call(ctx, m.resolving_funcs[0], undefined, [undefined]);\n}\n\n/* the async parents of a module whose evaluation finished, ready to run */\nfunction gather_available_ancestors(module: JSModuleDef, exec_list: JSModuleDef[]): void {\n for (const m of module.async_parent_modules) {\n if (!exec_list.includes(m) && !m.cycle_root!.eval_has_exception) {\n m.pending_async_dependencies--;\n if (m.pending_async_dependencies === 0) {\n exec_list.push(m);\n if (!m.has_tla) gather_available_ancestors(m, exec_list);\n }\n }\n }\n}\n\nfunction js_async_module_execution_rejected(ctx: JSContext, module: JSModuleDef, error: JSValue): void {\n if (module.status === JSModuleStatus.EVALUATED) return;\n module.eval_has_exception = true;\n module.eval_exception = error;\n module.status = JSModuleStatus.EVALUATED;\n module.async_evaluation = false;\n /* the module's own promise is rejected before its parents' (af16a97, after a\n specification change) */\n if (module.promise !== undefined) JS_Call(ctx, module.resolving_funcs[1], undefined, [error]);\n for (const m of module.async_parent_modules) js_async_module_execution_rejected(ctx, m, error);\n}\n\nfunction js_async_module_execution_fulfilled(ctx: JSContext, module: JSModuleDef): void {\n if (module.status === JSModuleStatus.EVALUATED) return;\n module.async_evaluation = false;\n js_set_module_evaluated(ctx, module);\n const exec_list: JSModuleDef[] = [];\n gather_available_ancestors(module, exec_list);\n /* sort by increasing async_evaluation timestamp */\n exec_list.sort((a, b) => a.async_evaluation_timestamp - b.async_evaluation_timestamp);\n for (const m of exec_list) {\n if (m.status === JSModuleStatus.EVALUATED) continue; /* rejected meanwhile */\n if (m.has_tla) {\n js_execute_async_module(ctx, m);\n } else {\n const out = { error: undefined as JSValue };\n if (js_execute_sync_module(ctx, m, out) < 0) {\n js_async_module_execution_rejected(ctx, m, out.error);\n } else {\n m.async_evaluation = false;\n js_set_module_evaluated(ctx, m);\n }\n }\n }\n}\n\n/* ---------------------------------------------------------------------\n Running modules\n --------------------------------------------------------------------- */\n\n/* link and evaluate a module whose graph is loaded: the evaluation promise, or an exception */\nfunction js_link_and_evaluate(ctx: JSContext, m: JSModuleDef): JSValue {\n if (js_create_module_function(ctx, m) < 0) return JS_EXCEPTION;\n if (js_link_module(ctx, m) < 0) return JS_EXCEPTION;\n return js_evaluate_module(ctx, m);\n}\n\n/* Load the graph of `m`, link and evaluate it, then call `ok(ns)` or `fail(error)` */\nfunction js_run_module(ctx: JSContext, m: JSModuleDef, ok: (ns: JSValue) => void, fail: (e: JSValue) => void): void {\n js_load_graph(ctx, m, err => {\n if (err !== undefined) { fail(err); return; }\n const p = js_link_and_evaluate(ctx, m);\n if (JS_IsException(p)) { fail(js_take_exception(ctx)); return; }\n const on_ful = JS_NewCFunction(ctx, () => {\n const ns = js_get_module_ns(ctx, m);\n if (JS_IsException(ns)) fail(js_take_exception(ctx)); else ok(ns);\n return undefined;\n }, '', 0);\n const on_rej = JS_NewCFunction(ctx, (_c, _t, argv) => { fail(argv[0]); return undefined; }, '', 1);\n perform_promise_then(ctx, p, [on_ful, on_rej], [undefined, undefined]);\n });\n}\n\n/* JS_EvalFunction of a compiled module (and JS_Eval of a module): with a loader that\n answers synchronously, this is QuickJS's behaviour (load or link errors are thrown, the\n result is the evaluation promise); otherwise a promise that settles with the evaluation */\nfunction js_module_eval_function(ctx: JSContext, m: JSModuleDef): JSValue {\n js_register_module(ctx, m);\n let sync = true;\n let result: JSValue = undefined;\n let error: JSValue = undefined;\n let has_error = false;\n let funcs: [JSValue, JSValue] | null = null;\n let promise: JSValue = undefined;\n js_load_graph(ctx, m, err => {\n if (sync) {\n if (err !== undefined) { has_error = true; error = err; return; }\n result = js_link_and_evaluate(ctx, m);\n return;\n }\n if (err !== undefined) { JS_Call(ctx, funcs![1], undefined, [err]); return; }\n const p = js_link_and_evaluate(ctx, m);\n if (JS_IsException(p)) { JS_Call(ctx, funcs![1], undefined, [js_take_exception(ctx)]); return; }\n JS_Call(ctx, funcs![0], undefined, [p]);\n });\n if (has_error) return JS_Throw(ctx, error);\n if (result !== undefined) return result;\n /* still loading */\n sync = false;\n funcs = [undefined, undefined];\n promise = JS_NewPromiseCapability(ctx, funcs);\n return promise;\n}\n\nfunction js_new_promise(ctx: JSContext): { promise: JSValue; resolve: (v: JSValue) => void; reject: (e: JSValue) => void } {\n const funcs: [JSValue, JSValue] = [undefined, undefined];\n const promise = JS_NewPromiseCapability(ctx, funcs);\n return {\n promise,\n resolve: v => { JS_Call(ctx, funcs[0], undefined, [v]); },\n reject: e => { JS_Call(ctx, funcs[1], undefined, [e]); },\n };\n}\n\n/* Evaluate `source` as a module named `url`: a promise for its namespace object. `flags` may hold\n JS_EVAL_FLAG_STRIP_TYPES and JS_EVAL_FLAG_JSX */\nexport function JS_EvalModule(ctx: JSContext, source: string, url: string, flags = 0): JSValue {\n const p = js_new_promise(ctx);\n const v = hooks.JS_EvalInternal(ctx, undefined, source, url, JS_EVAL_TYPE_MODULE | JS_EVAL_FLAG_COMPILE_ONLY |\n (flags & (JS_EVAL_FLAG_STRIP_TYPES | JS_EVAL_FLAG_JSX)), -1);\n if (JS_IsException(v)) { p.reject(js_take_exception(ctx)); return p.promise; }\n const m = v as unknown as JSModuleDef;\n js_register_module(ctx, m);\n js_run_module(ctx, m, p.resolve, p.reject);\n return p.promise;\n}\n\n/* import(specifier) from the host: a promise for the namespace object */\nexport function JS_ImportModule(ctx: JSContext, specifier: string, referrer: string | null = null,\n attributes: Record<string, string> | null = null): JSValue {\n const p = js_new_promise(ctx);\n js_import(ctx, specifier, referrer, attributes, p.resolve, p.reject);\n return p.promise;\n}\n\nfunction js_import(ctx: JSContext, specifier: string, referrer: string | null, attributes: Record<string, string> | null,\n ok: (ns: JSValue) => void, fail: (e: JSValue) => void): void {\n const kind = js_request_kind(ctx, attributes);\n if (kind !== 'js' && kind !== 'json') { fail(kind); return; }\n const attrs = attributes ?? {};\n let id: string;\n try { id = js_resolve_specifier(ctx, specifier, referrer, attrs); } catch (e) { fail(caught(ctx, e)); return; }\n js_fetch_module(ctx, specifier, id, kind, attrs, (err, m) => {\n if (err !== undefined) { fail(err); return; }\n js_run_module(ctx, m!, ok, fail);\n });\n}\n\n/* the name a function's code is known by: its module's id, or its script's file name */\nfunction js_referrer_of(ctx: JSContext, b: JSFunctionBytecode | null): string | null {\n if (b === null) return null;\n if (b.module !== null) return mname(ctx, b.module);\n if (b.has_debug && b.debug.filename) return JS_AtomGetStr(ctx, b.debug.filename);\n return null;\n}\n\n/* import(specifier, options) */\nfunction js_dynamic_import(ctx: JSContext, b: JSFunctionBytecode | null, specifier: JSValue, options: JSValue): JSValue {\n const p = js_new_promise(ctx);\n if (JS_IsException(p.promise)) return p.promise;\n const reject_now = (): JSValue => { p.reject(js_take_exception(ctx)); return p.promise; };\n /* the string conversion must occur here */\n const spec = JS_ToString(ctx, specifier);\n if (JS_IsException(spec)) return reject_now();\n let attributes: Record<string, string> | null = null;\n if (options !== undefined) {\n if (!JS_IsObject(options)) { JS_ThrowTypeError(ctx, 'options must be an object'); return reject_now(); }\n const with_obj = JS_GetPropertyStr(ctx, options, 'with');\n if (JS_IsException(with_obj)) return reject_now();\n if (with_obj !== undefined) {\n if (!JS_IsObject(with_obj)) { JS_ThrowTypeError(ctx, 'options.with must be an object'); return reject_now(); }\n attributes = Object.create(null);\n let keys: PropertyKey[];\n try { keys = Reflect.ownKeys(with_obj as object); } catch (e) { p.reject(host_error_to_guest(ctx, e)); return p.promise; }\n for (const k of keys) {\n if (typeof k !== 'string') continue;\n let d: PropertyDescriptor | undefined;\n try { d = Reflect.getOwnPropertyDescriptor(with_obj as object, k); } catch (e) { p.reject(host_error_to_guest(ctx, e)); return p.promise; }\n if (!d || !d.enumerable) continue;\n const v = JS_GetPropertyStr(ctx, with_obj, k);\n if (JS_IsException(v)) return reject_now();\n if (typeof v !== 'string') { JS_ThrowTypeError(ctx, 'module attribute values must be strings'); return reject_now(); }\n attributes![k] = v;\n }\n }\n }\n const kind = js_request_kind(ctx, attributes);\n if (kind !== 'js' && kind !== 'json') { p.reject(kind); return p.promise; }\n const referrer = js_referrer_of(ctx, b);\n /* not run synchronously: it could recurse into js_evaluate_module() */\n JS_EnqueueJob(ctx, () => {\n js_import(ctx, spec as string, referrer, attributes, p.resolve, p.reject);\n return undefined;\n }, []);\n return p.promise;\n}\n\n/* import.meta: a null-prototype object with `url` and `resolve` */\nfunction js_import_meta(ctx: JSContext, b: JSFunctionBytecode | null): JSValue {\n const m = b?.module ?? null;\n if (m === null) return JS_ThrowTypeError(ctx, 'import.meta not supported in this context');\n if (m.meta_obj === undefined) {\n const meta = JS_NewObjectProto(ctx, null);\n if (JS_IsException(meta)) return meta;\n const id = mname(ctx, m);\n JS_DefinePropertyValueStr(ctx, meta, 'url', m.url ?? id, JS_PROP_C_W_E);\n const resolve = JS_NewCFunction(ctx, (c, _t, argv) => {\n const spec = JS_ToString(c, argv[0]);\n if (JS_IsException(spec)) return spec;\n try {\n return js_resolve_specifier(c, spec as string, id, {});\n } catch (e) {\n return JS_Throw(c, caught(c, e));\n }\n }, 'resolve', 1);\n JS_DefinePropertyValueStr(ctx, meta, 'resolve', resolve, JS_PROP_C_W_E);\n m.meta_obj = meta;\n }\n return m.meta_obj;\n}\n\nhooks.js_module_compiled = js_module_compiled;\nhooks.js_dynamic_import = js_dynamic_import;\nhooks.js_import_meta = js_import_meta;\nhooks.js_module_eval_function = js_module_eval_function;\n"]}
|