@@ -8,20 +8,22 @@ importScripts('/engine262/engine262.js');
88const {
99 Agent,
1010 Value,
11+ JSStringValue,
1112 ManagedRealm,
1213
13- Type,
1414 CreateDataProperty,
1515 OrdinaryObjectCreate,
1616 CreateBuiltinFunction,
1717
18+ evalQ,
19+ skipDebugger,
20+ ThrowCompletion,
1821 AbruptCompletion,
19- Throw,
2022
2123 setSurroundingAgent,
2224 inspect,
2325 FEATURES ,
24- } = self [ '@engine262/engine262' ] ;
26+ } = /** @type { import('../../engine262/declaration/index.d.mts') } */ ( self [ '@engine262/engine262' ] )
2527
2628postMessage ( { type : 'initialize' , value : { FEATURES } } ) ;
2729
@@ -66,11 +68,11 @@ addEventListener('message', ({ data }) => {
6668 } ) ;
6769 return Value . undefined ;
6870 } , 1 , Value ( 'print' ) , [ ] ) ;
69- CreateDataProperty ( realm . GlobalObject , Value ( 'print' ) , print ) ;
71+ skipDebugger ( CreateDataProperty ( realm . GlobalObject , Value ( 'print' ) , print ) )
7072
7173 {
7274 const console = OrdinaryObjectCreate ( agent . intrinsic ( '%Object.prototype%' ) ) ;
73- CreateDataProperty ( realm . GlobalObject , Value ( 'console' ) , console ) ;
75+ skipDebugger ( CreateDataProperty ( realm . GlobalObject , Value ( 'console' ) , console ) ) ;
7476
7577 [
7678 'log' ,
@@ -85,15 +87,15 @@ addEventListener('message', ({ data }) => {
8587 value : {
8688 method,
8789 values : args . map ( ( a , i ) => {
88- if ( i === 0 && Type ( a ) === 'String' ) {
90+ if ( i === 0 && a instanceof JSStringValue ) {
8991 return a . stringValue ( ) ;
9092 }
9193 return inspect ( a ) ;
9294 } ) ,
9395 } ,
9496 } ) ;
9597 return Value . undefined ;
96- } , 1 , Value ( '' ) , null ) ;
98+ } , 1 , Value ( '' ) , [ ] ) ;
9799 CreateDataProperty ( console , Value ( method ) , fn ) ;
98100 } ) ;
99101 }
@@ -110,21 +112,15 @@ addEventListener('message', ({ data }) => {
110112 if ( state . get ( 'mode' ) === 'script' ) {
111113 result = realm . evaluateScript ( code , { specifier : 'code.js' } ) ;
112114 } else {
113- result = realm . createSourceTextModule ( 'code.mjs' , code ) ;
114- if ( ! ( result instanceof AbruptCompletion ) ) {
115- const module = result ;
116- realm . moduleEntry = module ;
117- result = module . LoadRequestedModules ( ) ;
118- if ( ! ( result instanceof AbruptCompletion ) ) {
119- result = module . Link ( ) ;
120- if ( ! ( result instanceof AbruptCompletion ) ) {
121- result = module . Evaluate ( ) ;
122- if ( result . PromiseState === 'rejected' ) {
123- result = Throw ( result . PromiseResult ) ;
124- }
115+ result = evalQ ( ( Q ) => {
116+ const module = Q ( realm . createSourceTextModule ( 'code.mjs' , code ) )
117+ Q ( module . LoadRequestedModules ( ) )
118+ Q ( module . Link ( ) )
119+ const promise = Q ( skipDebugger ( module . Evaluate ( ) ) )
120+ if ( promise . PromiseState === 'rejected' ) {
121+ return ThrowCompletion ( promise . PromiseResult || Value . undefined )
125122 }
126- }
127- }
123+ } )
128124 }
129125 if ( result instanceof AbruptCompletion ) {
130126 postMessage ( {
0 commit comments