char/avril
(wip) why'd you have to go and make things so complicaaaaated?
git clone https://git.t4t.associates/char/avril
d71572b
main
1import { collect , reportMicrotask , state } from "test:main" ; 2import { 3copy , 4meta , 5schedule , 6sharedSize , 7state as lazyState , 8} from "test:lazy" ; 9import { seed } from "guest:dep" ; 10 11collect (); 12assert ( 13sharedSize ( new SharedArrayBuffer ( 12 )) === 12 , 14"Live intrinsic in lazy module" , 15); 16 17function assert ( value , message ) { 18if ( ! value ) throw Error ( message ); 19} 20assert ( 21state === lazyState && state === snapshotState && state . seed === seed , 22"Export identity" , 23); 24assert ( Object . isFrozen ( state ), "Live initialization descriptors" ); 25assert ( 26Object . getOwnPropertyDescriptor ( state , "seed" ). value === seed , 27"Data descriptor" , 28); 29assert ( 30extensionMeta . url === "ext:test/main.js" && extensionMeta . main === false , 31"Saved import.meta" , 32); 33assert ( 34meta . url === "ext:test/lazy.js" && meta . main === false , 35"Lazy import.meta" , 36); 37assert ( 38extensionMeta . resolve ( "./state.js" ) === "ext:test/state.js" , 39"Saved resolve callback" , 40); 41assert ( 42meta . resolve ( "./state.js" ) === "ext:test/state.js" , 43"Fresh resolve callback" , 44); 45assert ( 46import . meta. main && import . meta. url . includes ( "snapshot-" + seed ), 47"Guest import.meta" , 48); 49assert ( 50import . meta. resolve ( "guest:dep" ). includes ( "snapshot-" + seed ), 51"Fresh loader resolution" , 52); 53assert (( await import ( "guest:dep" )). seed === seed , "Guest dynamic import" ); 54assert ( await seedAsync () === seed , "Async op and promise bridge" ); 55for ( 56const name of [ "ext:test/state.js" , "ext:core/bootstrap" , "private-alias" ] 57) { 58let denied = false ; 59try { 60await import ( name ); 61} catch ( error ) { 62denied = error . message . includes ( "private" ); 63} 64assert ( denied , "Guest imported private module: " + name ); 65} 66let denied = false ; 67let dynamicError ; 68try { 69await extensionDynamic (); 70} catch ( error ) { 71dynamicError = error ; 72denied = error . message . includes ( "not yet implemented" ); 73} 74assert ( denied , "Restored origin marker lost: " + dynamicError ); 75let restarted = false ; 76try { 77startAgain (); 78} catch ( error ) { 79restarted = error . message === "Runtime already started" ; 80} 81assert ( restarted , "Live initialization was not one-shot" ); 82 83const original = { state}; 84original . self = original ; 85const copied = copy ( original ); 86assert ( 87copied !== original && copied . self === copied && copied . state . seed === seed , 88"Clone bridge" , 89); 90const wasm = await WebAssembly . compileStreaming ( seed ); 91assert ( wasm instanceof WebAssembly . Module , "Wasm streaming hook" ); 92schedule (); 93globalThis . afterTasks = () => { 94reportMicrotask (); 95globalThis . rejected = Promise . reject ( Error ( "rejection" )); 96}; 97globalThis . complete = true ;