import { collect, reportMicrotask, state } from "test:main"; import { copy, meta, schedule, sharedSize, state as lazyState, } from "test:lazy"; import { seed } from "guest:dep"; collect(); assert( sharedSize(new SharedArrayBuffer(12)) === 12, "Live intrinsic in lazy module", ); function assert(value, message) { if (!value) throw Error(message); } assert( state === lazyState && state === snapshotState && state.seed === seed, "Export identity", ); assert(Object.isFrozen(state), "Live initialization descriptors"); assert( Object.getOwnPropertyDescriptor(state, "seed").value === seed, "Data descriptor", ); assert( extensionMeta.url === "ext:test/main.js" && extensionMeta.main === false, "Saved import.meta", ); assert( meta.url === "ext:test/lazy.js" && meta.main === false, "Lazy import.meta", ); assert( extensionMeta.resolve("./state.js") === "ext:test/state.js", "Saved resolve callback", ); assert( meta.resolve("./state.js") === "ext:test/state.js", "Fresh resolve callback", ); assert( import.meta.main && import.meta.url.includes("snapshot-" + seed), "Guest import.meta", ); assert( import.meta.resolve("guest:dep").includes("snapshot-" + seed), "Fresh loader resolution", ); assert((await import("guest:dep")).seed === seed, "Guest dynamic import"); assert(await seedAsync() === seed, "Async op and promise bridge"); for ( const name of ["ext:test/state.js", "ext:core/bootstrap", "private-alias"] ) { let denied = false; try { await import(name); } catch (error) { denied = error.message.includes("private"); } assert(denied, "Guest imported private module: " + name); } let denied = false; let dynamicError; try { await extensionDynamic(); } catch (error) { dynamicError = error; denied = error.message.includes("not yet implemented"); } assert(denied, "Restored origin marker lost: " + dynamicError); let restarted = false; try { startAgain(); } catch (error) { restarted = error.message === "Runtime already started"; } assert(restarted, "Live initialization was not one-shot"); const original = { state }; original.self = original; const copied = copy(original); assert( copied !== original && copied.self === copied && copied.state.seed === seed, "Clone bridge", ); const wasm = await WebAssembly.compileStreaming(seed); assert(wasm instanceof WebAssembly.Module, "Wasm streaming hook"); schedule(); globalThis.afterTasks = () => { reportMicrotask(); globalThis.rejected = Promise.reject(Error("rejection")); }; globalThis.complete = true;