biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: VAR_KW@0..4 "var" [] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@4..6 "a" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@6..8 "=" [] [Whitespace(" ")],
                            expression: JsNumberLiteralExpression {
                                value_token: JS_NUMBER_LITERAL@8..9 "5" [] [],
                            },
                        },
                    },
                ],
            },
            semicolon_token: SEMICOLON@9..10 ";" [] [],
        },
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: LET_KW@10..15 "let" [Newline("\n")] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsObjectBindingPattern {
                            l_curly_token: L_CURLY@15..17 "{" [] [Whitespace(" ")],
                            properties: JsObjectBindingPatternPropertyList [
                                JsObjectBindingPatternShorthandProperty {
                                    identifier: JsIdentifierBinding {
                                        name_token: IDENT@17..20 "foo" [] [],
                                    },
                                    init: missing (optional),
                                },
                                COMMA@20..22 "," [] [Whitespace(" ")],
                                JsObjectBindingPatternShorthandProperty {
                                    identifier: JsIdentifierBinding {
                                        name_token: IDENT@22..26 "bar" [] [Whitespace(" ")],
                                    },
                                    init: missing (optional),
                                },
                            ],
                            r_curly_token: R_CURLY@26..28 "}" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@28..30 "=" [] [Whitespace(" ")],
                            expression: JsNumberLiteralExpression {
                                value_token: JS_NUMBER_LITERAL@30..31 "5" [] [],
                            },
                        },
                    },
                ],
            },
            semicolon_token: SEMICOLON@31..32 ";" [] [],
        },
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: LET_KW@32..37 "let" [Newline("\n")] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@37..41 "bar2" [] [],
                        },
                        variable_annotation: missing (optional),
                        initializer: missing (optional),
                    },
                    COMMA@41..43 "," [] [Whitespace(" ")],
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@43..47 "foo2" [] [],
                        },
                        variable_annotation: missing (optional),
                        initializer: missing (optional),
                    },
                ],
            },
            semicolon_token: SEMICOLON@47..48 ";" [] [],
        },
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: CONST_KW@48..55 "const" [Newline("\n")] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@55..57 "b" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@57..59 "=" [] [Whitespace(" ")],
                            expression: JsNumberLiteralExpression {
                                value_token: JS_NUMBER_LITERAL@59..60 "5" [] [],
                            },
                        },
                    },
                ],
            },
            semicolon_token: SEMICOLON@60..61 ";" [] [],
        },
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: CONST_KW@61..68 "const" [Newline("\n")] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsObjectBindingPattern {
                            l_curly_token: L_CURLY@68..70 "{" [] [Whitespace(" ")],
                            properties: JsObjectBindingPatternPropertyList [
                                JsObjectBindingPatternProperty {
                                    member: JsLiteralMemberName {
                                        value: IDENT@70..74 "foo5" [] [],
                                    },
                                    colon_token: COLON@74..76 ":" [] [Whitespace(" ")],
                                    pattern: JsArrayBindingPattern {
                                        l_brack_token: L_BRACK@76..77 "[" [] [],
                                        elements: JsArrayBindingPatternElementList [
                                            JsArrayBindingPatternElement {
                                                pattern: JsIdentifierBinding {
                                                    name_token: IDENT@77..82 "bar11" [] [],
                                                },
                                                init: missing (optional),
                                            },
                                        ],
                                        r_brack_token: R_BRACK@82..83 "]" [] [],
                                    },
                                    init: missing (optional),
                                },
                                COMMA@83..85 "," [] [Whitespace(" ")],
                                JsObjectBindingPatternShorthandProperty {
                                    identifier: JsIdentifierBinding {
                                        name_token: IDENT@85..90 "baz6" [] [Whitespace(" ")],
                                    },
                                    init: missing (optional),
                                },
                            ],
                            r_curly_token: R_CURLY@90..92 "}" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@92..94 "=" [] [Whitespace(" ")],
                            expression: JsObjectExpression {
                                l_curly_token: L_CURLY@94..95 "{" [] [],
                                members: JsObjectMemberList [],
                                r_curly_token: R_CURLY@95..96 "}" [] [],
                            },
                        },
                    },
                ],
            },
            semicolon_token: SEMICOLON@96..97 ";" [] [],
        },
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: LET_KW@97..102 "let" [Newline("\n")] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@102..107 "foo6" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@107..109 "=" [] [Whitespace(" ")],
                            expression: JsStringLiteralExpression {
                                value_token: JS_STRING_LITERAL@109..116 "\"lorem\"" [] [],
                            },
                        },
                    },
                    COMMA@116..118 "," [] [Whitespace(" ")],
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@118..123 "bar7" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@123..125 "=" [] [Whitespace(" ")],
                            expression: JsStringLiteralExpression {
                                value_token: JS_STRING_LITERAL@125..132 "\"ipsum\"" [] [],
                            },
                        },
                    },
                    COMMA@132..134 "," [] [Whitespace(" ")],
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@134..141 "third8" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@141..143 "=" [] [Whitespace(" ")],
                            expression: JsStringLiteralExpression {
                                value_token: JS_STRING_LITERAL@143..150 "\"value\"" [] [],
                            },
                        },
                    },
                    COMMA@150..152 "," [] [Whitespace(" ")],
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@152..159 "fourth" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@159..161 "=" [] [Whitespace(" ")],
                            expression: JsNumberLiteralExpression {
                                value_token: JS_NUMBER_LITERAL@161..162 "6" [] [],
                            },
                        },
                    },
                ],
            },
            semicolon_token: SEMICOLON@162..163 ";" [] [],
        },
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: VAR_KW@163..168 "var" [Newline("\n")] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@168..169 "q" [] [],
                        },
                        variable_annotation: missing (optional),
                        initializer: missing (optional),
                    },
                    COMMA@169..171 "," [] [Whitespace(" ")],
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@171..172 "w" [] [],
                        },
                        variable_annotation: missing (optional),
                        initializer: missing (optional),
                    },
                    COMMA@172..174 "," [] [Whitespace(" ")],
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@174..175 "e" [] [],
                        },
                        variable_annotation: missing (optional),
                        initializer: missing (optional),
                    },
                    COMMA@175..177 "," [] [Whitespace(" ")],
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@177..178 "r" [] [],
                        },
                        variable_annotation: missing (optional),
                        initializer: missing (optional),
                    },
                    COMMA@178..180 "," [] [Whitespace(" ")],
                    JsVariableDeclarator {
                        id: JsIdentifierBinding {
                            name_token: IDENT@180..181 "t" [] [],
                        },
                        variable_annotation: missing (optional),
                        initializer: missing (optional),
                    },
                ],
            },
            semicolon_token: SEMICOLON@181..182 ";" [] [],
        },
    ],
    eof_token: EOF@182..183 "" [Newline("\n")] [],
}

0: JS_MODULE@0..183
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..182
    0: JS_VARIABLE_STATEMENT@0..10
      0: JS_VARIABLE_DECLARATION@0..9
        0: (empty)
        1: VAR_KW@0..4 "var" [] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@4..9
          0: JS_VARIABLE_DECLARATOR@4..9
            0: JS_IDENTIFIER_BINDING@4..6
              0: IDENT@4..6 "a" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@6..9
              0: EQ@6..8 "=" [] [Whitespace(" ")]
              1: JS_NUMBER_LITERAL_EXPRESSION@8..9
                0: JS_NUMBER_LITERAL@8..9 "5" [] []
      1: SEMICOLON@9..10 ";" [] []
    1: JS_VARIABLE_STATEMENT@10..32
      0: JS_VARIABLE_DECLARATION@10..31
        0: (empty)
        1: LET_KW@10..15 "let" [Newline("\n")] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@15..31
          0: JS_VARIABLE_DECLARATOR@15..31
            0: JS_OBJECT_BINDING_PATTERN@15..28
              0: L_CURLY@15..17 "{" [] [Whitespace(" ")]
              1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@17..26
                0: JS_OBJECT_BINDING_PATTERN_SHORTHAND_PROPERTY@17..20
                  0: JS_IDENTIFIER_BINDING@17..20
                    0: IDENT@17..20 "foo" [] []
                  1: (empty)
                1: COMMA@20..22 "," [] [Whitespace(" ")]
                2: JS_OBJECT_BINDING_PATTERN_SHORTHAND_PROPERTY@22..26
                  0: JS_IDENTIFIER_BINDING@22..26
                    0: IDENT@22..26 "bar" [] [Whitespace(" ")]
                  1: (empty)
              2: R_CURLY@26..28 "}" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@28..31
              0: EQ@28..30 "=" [] [Whitespace(" ")]
              1: JS_NUMBER_LITERAL_EXPRESSION@30..31
                0: JS_NUMBER_LITERAL@30..31 "5" [] []
      1: SEMICOLON@31..32 ";" [] []
    2: JS_VARIABLE_STATEMENT@32..48
      0: JS_VARIABLE_DECLARATION@32..47
        0: (empty)
        1: LET_KW@32..37 "let" [Newline("\n")] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@37..47
          0: JS_VARIABLE_DECLARATOR@37..41
            0: JS_IDENTIFIER_BINDING@37..41
              0: IDENT@37..41 "bar2" [] []
            1: (empty)
            2: (empty)
          1: COMMA@41..43 "," [] [Whitespace(" ")]
          2: JS_VARIABLE_DECLARATOR@43..47
            0: JS_IDENTIFIER_BINDING@43..47
              0: IDENT@43..47 "foo2" [] []
            1: (empty)
            2: (empty)
      1: SEMICOLON@47..48 ";" [] []
    3: JS_VARIABLE_STATEMENT@48..61
      0: JS_VARIABLE_DECLARATION@48..60
        0: (empty)
        1: CONST_KW@48..55 "const" [Newline("\n")] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@55..60
          0: JS_VARIABLE_DECLARATOR@55..60
            0: JS_IDENTIFIER_BINDING@55..57
              0: IDENT@55..57 "b" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@57..60
              0: EQ@57..59 "=" [] [Whitespace(" ")]
              1: JS_NUMBER_LITERAL_EXPRESSION@59..60
                0: JS_NUMBER_LITERAL@59..60 "5" [] []
      1: SEMICOLON@60..61 ";" [] []
    4: JS_VARIABLE_STATEMENT@61..97
      0: JS_VARIABLE_DECLARATION@61..96
        0: (empty)
        1: CONST_KW@61..68 "const" [Newline("\n")] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@68..96
          0: JS_VARIABLE_DECLARATOR@68..96
            0: JS_OBJECT_BINDING_PATTERN@68..92
              0: L_CURLY@68..70 "{" [] [Whitespace(" ")]
              1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@70..90
                0: JS_OBJECT_BINDING_PATTERN_PROPERTY@70..83
                  0: JS_LITERAL_MEMBER_NAME@70..74
                    0: IDENT@70..74 "foo5" [] []
                  1: COLON@74..76 ":" [] [Whitespace(" ")]
                  2: JS_ARRAY_BINDING_PATTERN@76..83
                    0: L_BRACK@76..77 "[" [] []
                    1: JS_ARRAY_BINDING_PATTERN_ELEMENT_LIST@77..82
                      0: JS_ARRAY_BINDING_PATTERN_ELEMENT@77..82
                        0: JS_IDENTIFIER_BINDING@77..82
                          0: IDENT@77..82 "bar11" [] []
                        1: (empty)
                    2: R_BRACK@82..83 "]" [] []
                  3: (empty)
                1: COMMA@83..85 "," [] [Whitespace(" ")]
                2: JS_OBJECT_BINDING_PATTERN_SHORTHAND_PROPERTY@85..90
                  0: JS_IDENTIFIER_BINDING@85..90
                    0: IDENT@85..90 "baz6" [] [Whitespace(" ")]
                  1: (empty)
              2: R_CURLY@90..92 "}" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@92..96
              0: EQ@92..94 "=" [] [Whitespace(" ")]
              1: JS_OBJECT_EXPRESSION@94..96
                0: L_CURLY@94..95 "{" [] []
                1: JS_OBJECT_MEMBER_LIST@95..95
                2: R_CURLY@95..96 "}" [] []
      1: SEMICOLON@96..97 ";" [] []
    5: JS_VARIABLE_STATEMENT@97..163
      0: JS_VARIABLE_DECLARATION@97..162
        0: (empty)
        1: LET_KW@97..102 "let" [Newline("\n")] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@102..162
          0: JS_VARIABLE_DECLARATOR@102..116
            0: JS_IDENTIFIER_BINDING@102..107
              0: IDENT@102..107 "foo6" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@107..116
              0: EQ@107..109 "=" [] [Whitespace(" ")]
              1: JS_STRING_LITERAL_EXPRESSION@109..116
                0: JS_STRING_LITERAL@109..116 "\"lorem\"" [] []
          1: COMMA@116..118 "," [] [Whitespace(" ")]
          2: JS_VARIABLE_DECLARATOR@118..132
            0: JS_IDENTIFIER_BINDING@118..123
              0: IDENT@118..123 "bar7" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@123..132
              0: EQ@123..125 "=" [] [Whitespace(" ")]
              1: JS_STRING_LITERAL_EXPRESSION@125..132
                0: JS_STRING_LITERAL@125..132 "\"ipsum\"" [] []
          3: COMMA@132..134 "," [] [Whitespace(" ")]
          4: JS_VARIABLE_DECLARATOR@134..150
            0: JS_IDENTIFIER_BINDING@134..141
              0: IDENT@134..141 "third8" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@141..150
              0: EQ@141..143 "=" [] [Whitespace(" ")]
              1: JS_STRING_LITERAL_EXPRESSION@143..150
                0: JS_STRING_LITERAL@143..150 "\"value\"" [] []
          5: COMMA@150..152 "," [] [Whitespace(" ")]
          6: JS_VARIABLE_DECLARATOR@152..162
            0: JS_IDENTIFIER_BINDING@152..159
              0: IDENT@152..159 "fourth" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@159..162
              0: EQ@159..161 "=" [] [Whitespace(" ")]
              1: JS_NUMBER_LITERAL_EXPRESSION@161..162
                0: JS_NUMBER_LITERAL@161..162 "6" [] []
      1: SEMICOLON@162..163 ";" [] []
    6: JS_VARIABLE_STATEMENT@163..182
      0: JS_VARIABLE_DECLARATION@163..181
        0: (empty)
        1: VAR_KW@163..168 "var" [Newline("\n")] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@168..181
          0: JS_VARIABLE_DECLARATOR@168..169
            0: JS_IDENTIFIER_BINDING@168..169
              0: IDENT@168..169 "q" [] []
            1: (empty)
            2: (empty)
          1: COMMA@169..171 "," [] [Whitespace(" ")]
          2: JS_VARIABLE_DECLARATOR@171..172
            0: JS_IDENTIFIER_BINDING@171..172
              0: IDENT@171..172 "w" [] []
            1: (empty)
            2: (empty)
          3: COMMA@172..174 "," [] [Whitespace(" ")]
          4: JS_VARIABLE_DECLARATOR@174..175
            0: JS_IDENTIFIER_BINDING@174..175
              0: IDENT@174..175 "e" [] []
            1: (empty)
            2: (empty)
          5: COMMA@175..177 "," [] [Whitespace(" ")]
          6: JS_VARIABLE_DECLARATOR@177..178
            0: JS_IDENTIFIER_BINDING@177..178
              0: IDENT@177..178 "r" [] []
            1: (empty)
            2: (empty)
          7: COMMA@178..180 "," [] [Whitespace(" ")]
          8: JS_VARIABLE_DECLARATOR@180..181
            0: JS_IDENTIFIER_BINDING@180..181
              0: IDENT@180..181 "t" [] []
            1: (empty)
            2: (empty)
      1: SEMICOLON@181..182 ";" [] []
  4: EOF@182..183 "" [Newline("\n")] []