@@ -40,14 +40,19 @@ var assert = (condition, message = "Assertion failed") => {
4040var assertEq = ( a , b , message = "Assertion failed" ) => {
4141 if ( a !== b ) throw new Error ( `${ message } : '${ a } ' !== '${ b } '` ) ;
4242} ;
43+ console . log ( "v2" ) ;
4344var JsonParser = class {
4445 #queue;
4546 #text = "" ;
4647 #index = 0 ;
4748 #stream;
4849 constructor ( queue ) {
50+ console . log ( "v2" ) ;
4951 this . #queue = queue . pipe ( ( r ) => [ ...r ] ) . flat ( ) ;
50- this . #stream = this . parseValue ( ) ;
52+ this . #stream = ( async ( ) => {
53+ await this . #skipWhiteSpaces( ) ;
54+ return await this . parseValue ( ) ;
55+ } ) ( ) ;
5156 }
5257 #isWhitespace( char ) {
5358 return char === " " || char === "\n" || char === " " || char === "\r" ;
@@ -77,8 +82,8 @@ var JsonParser = class {
7782 return chunk ;
7883 }
7984 async #skipWhiteSpaces( ) {
80- for ( let char = await this . #peekNonEof ( 1 , "skipWhiteSpaces" ) ; this . # isWhitespace( char ) ; char = await this . #peekNonEof( 1 , "skipWhiteSpaces" ) ) {
81- this . #nextNonEof( ) ;
85+ while ( this . #isWhitespace( await this . #peekNonEof( ) ) ) {
86+ await this . #nextNonEof( ) ;
8287 }
8388 }
8489 async #expectNext( expected ) {
@@ -112,8 +117,7 @@ var JsonParser = class {
112117 } ;
113118 return result ;
114119 }
115- async parseValue ( skip = true ) {
116- if ( skip ) await this . #skipWhiteSpaces( ) ;
120+ async parseValue ( ) {
117121 const next = await this . #peekNonEof( ) ;
118122 switch ( next ) {
119123 case "{" :
@@ -141,6 +145,7 @@ var JsonParser = class {
141145 case "9" :
142146 return this . parseNumber ( ) ;
143147 default :
148+ console . error ( this . #text. slice ( this . #index - 10 ) ) ;
144149 throw new Error ( `Unexpected token ${ next } at index ${ this . #index} while parsing value in JSON` ) ;
145150 }
146151 }
@@ -154,6 +159,7 @@ var JsonParser = class {
154159 await key . wait ;
155160 await this . #skipWhiteSpaces( ) ;
156161 await this . #expectNext( ":" ) ;
162+ await this . #skipWhiteSpaces( ) ;
157163 const val = await this . parseValue ( ) ;
158164 update ( ( data ) => void ( data [ key . data ] = val ) , true ) ;
159165 await val . wait ;
@@ -170,7 +176,7 @@ var JsonParser = class {
170176 do {
171177 await this . #skipWhiteSpaces( ) ;
172178 if ( await this . #peekNonEof( ) === "]" ) break ;
173- const val = await this . parseValue ( false ) ;
179+ const val = await this . parseValue ( ) ;
174180 update ( ( data ) => void data . push ( val ) , true ) ;
175181 await val . wait ;
176182 await this . #skipWhiteSpaces( ) ;
0 commit comments