biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: LET_KW@0..4 "let" [] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsObjectBindingPattern {
                            l_curly_token: L_CURLY@4..6 "{" [] [Whitespace(" ")],
                            properties: JsObjectBindingPatternPropertyList [
                                JsObjectBindingPatternProperty {
                                    member: JsLiteralMemberName {
                                        value: IDENT@6..9 "foo" [] [],
                                    },
                                    colon_token: COLON@9..11 ":" [] [Whitespace(" ")],
                                    pattern: missing (required),
                                    init: missing (optional),
                                },
                                COMMA@11..13 "," [] [Whitespace(" ")],
                                JsObjectBindingPatternShorthandProperty {
                                    identifier: JsIdentifierBinding {
                                        name_token: IDENT@13..17 "bar" [] [Whitespace(" ")],
                                    },
                                    init: missing (optional),
                                },
                            ],
                            r_curly_token: R_CURLY@17..19 "}" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@19..21 "=" [] [Whitespace(" ")],
                            expression: JsObjectExpression {
                                l_curly_token: L_CURLY@21..22 "{" [] [],
                                members: JsObjectMemberList [],
                                r_curly_token: R_CURLY@22..23 "}" [] [],
                            },
                        },
                    },
                ],
            },
            semicolon_token: missing (optional),
        },
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: LET_KW@23..28 "let" [Newline("\n")] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsObjectBindingPattern {
                            l_curly_token: L_CURLY@28..30 "{" [] [Whitespace(" ")],
                            properties: JsObjectBindingPatternPropertyList [
                                JsObjectBindingPatternProperty {
                                    member: missing (required),
                                    colon_token: COLON@30..32 ":" [] [Whitespace(" ")],
                                    pattern: JsIdentifierBinding {
                                        name_token: IDENT@32..38 "lorem" [] [Whitespace(" ")],
                                    },
                                    init: JsInitializerClause {
                                        eq_token: EQ@38..40 "=" [] [Whitespace(" ")],
                                        expression: JsStringLiteralExpression {
                                            value_token: JS_STRING_LITERAL@40..47 "\"test\"" [] [Whitespace(" ")],
                                        },
                                    },
                                },
                            ],
                            r_curly_token: R_CURLY@47..49 "}" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@49..51 "=" [] [Whitespace(" ")],
                            expression: JsObjectExpression {
                                l_curly_token: L_CURLY@51..52 "{" [] [],
                                members: JsObjectMemberList [],
                                r_curly_token: R_CURLY@52..53 "}" [] [],
                            },
                        },
                    },
                ],
            },
            semicolon_token: missing (optional),
        },
        JsVariableStatement {
            declaration: JsVariableDeclaration {
                await_token: missing (optional),
                kind: LET_KW@53..58 "let" [Newline("\n")] [Whitespace(" ")],
                declarators: JsVariableDeclaratorList [
                    JsVariableDeclarator {
                        id: JsObjectBindingPattern {
                            l_curly_token: L_CURLY@58..60 "{" [] [Whitespace(" ")],
                            properties: JsObjectBindingPatternPropertyList [
                                missing element,
                                COMMA@60..62 "," [] [Whitespace(" ")],
                                JsObjectBindingPatternProperty {
                                    member: JsLiteralMemberName {
                                        value: IDENT@62..67 "ipsum" [] [],
                                    },
                                    colon_token: COLON@67..69 ":" [] [Whitespace(" ")],
                                    pattern: JsIdentifierBinding {
                                        name_token: IDENT@69..74 "bazz" [] [Whitespace(" ")],
                                    },
                                    init: missing (optional),
                                },
                            ],
                            r_curly_token: R_CURLY@74..76 "}" [] [Whitespace(" ")],
                        },
                        variable_annotation: missing (optional),
                        initializer: JsInitializerClause {
                            eq_token: EQ@76..78 "=" [] [Whitespace(" ")],
                            expression: JsObjectExpression {
                                l_curly_token: L_CURLY@78..79 "{" [] [],
                                members: JsObjectMemberList [],
                                r_curly_token: R_CURLY@79..80 "}" [] [],
                            },
                        },
                    },
                ],
            },
            semicolon_token: missing (optional),
        },
    ],
    eof_token: EOF@80..81 "" [Newline("\n")] [],
}

0: JS_MODULE@0..81
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..80
    0: JS_VARIABLE_STATEMENT@0..23
      0: JS_VARIABLE_DECLARATION@0..23
        0: (empty)
        1: LET_KW@0..4 "let" [] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@4..23
          0: JS_VARIABLE_DECLARATOR@4..23
            0: JS_OBJECT_BINDING_PATTERN@4..19
              0: L_CURLY@4..6 "{" [] [Whitespace(" ")]
              1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@6..17
                0: JS_OBJECT_BINDING_PATTERN_PROPERTY@6..11
                  0: JS_LITERAL_MEMBER_NAME@6..9
                    0: IDENT@6..9 "foo" [] []
                  1: COLON@9..11 ":" [] [Whitespace(" ")]
                  2: (empty)
                  3: (empty)
                1: COMMA@11..13 "," [] [Whitespace(" ")]
                2: JS_OBJECT_BINDING_PATTERN_SHORTHAND_PROPERTY@13..17
                  0: JS_IDENTIFIER_BINDING@13..17
                    0: IDENT@13..17 "bar" [] [Whitespace(" ")]
                  1: (empty)
              2: R_CURLY@17..19 "}" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@19..23
              0: EQ@19..21 "=" [] [Whitespace(" ")]
              1: JS_OBJECT_EXPRESSION@21..23
                0: L_CURLY@21..22 "{" [] []
                1: JS_OBJECT_MEMBER_LIST@22..22
                2: R_CURLY@22..23 "}" [] []
      1: (empty)
    1: JS_VARIABLE_STATEMENT@23..53
      0: JS_VARIABLE_DECLARATION@23..53
        0: (empty)
        1: LET_KW@23..28 "let" [Newline("\n")] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@28..53
          0: JS_VARIABLE_DECLARATOR@28..53
            0: JS_OBJECT_BINDING_PATTERN@28..49
              0: L_CURLY@28..30 "{" [] [Whitespace(" ")]
              1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@30..47
                0: JS_OBJECT_BINDING_PATTERN_PROPERTY@30..47
                  0: (empty)
                  1: COLON@30..32 ":" [] [Whitespace(" ")]
                  2: JS_IDENTIFIER_BINDING@32..38
                    0: IDENT@32..38 "lorem" [] [Whitespace(" ")]
                  3: JS_INITIALIZER_CLAUSE@38..47
                    0: EQ@38..40 "=" [] [Whitespace(" ")]
                    1: JS_STRING_LITERAL_EXPRESSION@40..47
                      0: JS_STRING_LITERAL@40..47 "\"test\"" [] [Whitespace(" ")]
              2: R_CURLY@47..49 "}" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@49..53
              0: EQ@49..51 "=" [] [Whitespace(" ")]
              1: JS_OBJECT_EXPRESSION@51..53
                0: L_CURLY@51..52 "{" [] []
                1: JS_OBJECT_MEMBER_LIST@52..52
                2: R_CURLY@52..53 "}" [] []
      1: (empty)
    2: JS_VARIABLE_STATEMENT@53..80
      0: JS_VARIABLE_DECLARATION@53..80
        0: (empty)
        1: LET_KW@53..58 "let" [Newline("\n")] [Whitespace(" ")]
        2: JS_VARIABLE_DECLARATOR_LIST@58..80
          0: JS_VARIABLE_DECLARATOR@58..80
            0: JS_OBJECT_BINDING_PATTERN@58..76
              0: L_CURLY@58..60 "{" [] [Whitespace(" ")]
              1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@60..74
                0: (empty)
                1: COMMA@60..62 "," [] [Whitespace(" ")]
                2: JS_OBJECT_BINDING_PATTERN_PROPERTY@62..74
                  0: JS_LITERAL_MEMBER_NAME@62..67
                    0: IDENT@62..67 "ipsum" [] []
                  1: COLON@67..69 ":" [] [Whitespace(" ")]
                  2: JS_IDENTIFIER_BINDING@69..74
                    0: IDENT@69..74 "bazz" [] [Whitespace(" ")]
                  3: (empty)
              2: R_CURLY@74..76 "}" [] [Whitespace(" ")]
            1: (empty)
            2: JS_INITIALIZER_CLAUSE@76..80
              0: EQ@76..78 "=" [] [Whitespace(" ")]
              1: JS_OBJECT_EXPRESSION@78..80
                0: L_CURLY@78..79 "{" [] []
                1: JS_OBJECT_MEMBER_LIST@79..79
                2: R_CURLY@79..80 "}" [] []
      1: (empty)
  4: EOF@80..81 "" [Newline("\n")] []
--
object_property_binding_err.js:1:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Expected an identifier, an array pattern, or an object pattern but instead found ','.
  
  > 1 │ let { foo: , bar } = {}
      │            ^
    2 │ let { : lorem = "test" } = {}
    3 │ let { , ipsum: bazz } = {}
  
  i Expected an identifier, an array pattern, or an object pattern here.
  
  > 1 │ let { foo: , bar } = {}
      │            ^
    2 │ let { : lorem = "test" } = {}
    3 │ let { , ipsum: bazz } = {}
  
--
object_property_binding_err.js:2:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Expected an identifier, a string literal, a number literal, or a computed property but instead found ':'.
  
    1 │ let { foo: , bar } = {}
  > 2 │ let { : lorem = "test" } = {}
      │       ^
    3 │ let { , ipsum: bazz } = {}
    4 │ 
  
  i Expected an identifier, a string literal, a number literal, or a computed property here.
  
    1 │ let { foo: , bar } = {}
  > 2 │ let { : lorem = "test" } = {}
      │       ^
    3 │ let { , ipsum: bazz } = {}
    4 │ 
  
--
object_property_binding_err.js:3:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Expected an identifier, a member name, or a rest pattern but instead found ','.
  
    1 │ let { foo: , bar } = {}
    2 │ let { : lorem = "test" } = {}
  > 3 │ let { , ipsum: bazz } = {}
      │       ^
    4 │ 
  
  i Expected an identifier, a member name, or a rest pattern here.
  
    1 │ let { foo: , bar } = {}
    2 │ let { : lorem = "test" } = {}
  > 3 │ let { , ipsum: bazz } = {}
      │       ^
    4 │ 
  
--
let { foo: , bar } = {}
let { : lorem = "test" } = {}
let { , ipsum: bazz } = {}