biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        JsExpressionStatement {
            expression: JsImportCallExpression {
                import_token: IMPORT_KW@0..6 "import" [] [],
                arguments: JsCallArguments {
                    l_paren_token: L_PAREN@6..7 "(" [] [],
                    args: JsCallArgumentList [],
                    r_paren_token: R_PAREN@7..8 ")" [] [],
                },
            },
            semicolon_token: missing (optional),
        },
        JsExpressionStatement {
            expression: JsBogusExpression {
                items: [
                    IMPORT_KW@8..15 "import" [Newline("\n")] [],
                    JsBogus {
                        items: [
                            L_PAREN@15..16 "(" [] [],
                            JsBogus {
                                items: [
                                    JsBogusMember {
                                        items: [
                                            DOT3@16..19 "..." [] [],
                                            JsArrayExpression {
                                                l_brack_token: L_BRACK@19..20 "[" [] [],
                                                elements: JsArrayElementList [
                                                    JsStringLiteralExpression {
                                                        value_token: JS_STRING_LITERAL@20..25 "\"foo\"" [] [],
                                                    },
                                                ],
                                                r_brack_token: R_BRACK@25..26 "]" [] [],
                                            },
                                        ],
                                    },
                                ],
                            },
                            R_PAREN@26..27 ")" [] [],
                        ],
                    },
                ],
            },
            semicolon_token: missing (optional),
        },
        JsExpressionStatement {
            expression: JsImportCallExpression {
                import_token: IMPORT_KW@27..34 "import" [Newline("\n")] [],
                arguments: JsCallArguments {
                    l_paren_token: L_PAREN@34..35 "(" [] [],
                    args: JsCallArgumentList [
                        JsStringLiteralExpression {
                            value_token: JS_STRING_LITERAL@35..40 "\"foo\"" [] [],
                        },
                        COMMA@40..42 "," [] [Whitespace(" ")],
                        JsObjectExpression {
                            l_curly_token: L_CURLY@42..44 "{" [] [Whitespace(" ")],
                            members: JsObjectMemberList [
                                JsPropertyObjectMember {
                                    name: JsLiteralMemberName {
                                        value: IDENT@44..50 "assert" [] [],
                                    },
                                    colon_token: COLON@50..52 ":" [] [Whitespace(" ")],
                                    value: JsObjectExpression {
                                        l_curly_token: L_CURLY@52..54 "{" [] [Whitespace(" ")],
                                        members: JsObjectMemberList [
                                            JsPropertyObjectMember {
                                                name: JsLiteralMemberName {
                                                    value: IDENT@54..58 "type" [] [],
                                                },
                                                colon_token: COLON@58..60 ":" [] [Whitespace(" ")],
                                                value: JsStringLiteralExpression {
                                                    value_token: JS_STRING_LITERAL@60..67 "'json'" [] [Whitespace(" ")],
                                                },
                                            },
                                        ],
                                        r_curly_token: R_CURLY@67..69 "}" [] [Whitespace(" ")],
                                    },
                                },
                            ],
                            r_curly_token: R_CURLY@69..70 "}" [] [],
                        },
                        COMMA@70..72 "," [] [Whitespace(" ")],
                        JsStringLiteralExpression {
                            value_token: JS_STRING_LITERAL@72..77 "\"bar\"" [] [],
                        },
                    ],
                    r_paren_token: R_PAREN@77..78 ")" [] [],
                },
            },
            semicolon_token: missing (optional),
        },
    ],
    eof_token: EOF@78..79 "" [Newline("\n")] [],
}

0: JS_MODULE@0..79
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..78
    0: JS_EXPRESSION_STATEMENT@0..8
      0: JS_IMPORT_CALL_EXPRESSION@0..8
        0: IMPORT_KW@0..6 "import" [] []
        1: JS_CALL_ARGUMENTS@6..8
          0: L_PAREN@6..7 "(" [] []
          1: JS_CALL_ARGUMENT_LIST@7..7
          2: R_PAREN@7..8 ")" [] []
      1: (empty)
    1: JS_EXPRESSION_STATEMENT@8..27
      0: JS_BOGUS_EXPRESSION@8..27
        0: IMPORT_KW@8..15 "import" [Newline("\n")] []
        1: JS_BOGUS@15..27
          0: L_PAREN@15..16 "(" [] []
          1: JS_BOGUS@16..26
            0: JS_BOGUS_MEMBER@16..26
              0: DOT3@16..19 "..." [] []
              1: JS_ARRAY_EXPRESSION@19..26
                0: L_BRACK@19..20 "[" [] []
                1: JS_ARRAY_ELEMENT_LIST@20..25
                  0: JS_STRING_LITERAL_EXPRESSION@20..25
                    0: JS_STRING_LITERAL@20..25 "\"foo\"" [] []
                2: R_BRACK@25..26 "]" [] []
          2: R_PAREN@26..27 ")" [] []
      1: (empty)
    2: JS_EXPRESSION_STATEMENT@27..78
      0: JS_IMPORT_CALL_EXPRESSION@27..78
        0: IMPORT_KW@27..34 "import" [Newline("\n")] []
        1: JS_CALL_ARGUMENTS@34..78
          0: L_PAREN@34..35 "(" [] []
          1: JS_CALL_ARGUMENT_LIST@35..77
            0: JS_STRING_LITERAL_EXPRESSION@35..40
              0: JS_STRING_LITERAL@35..40 "\"foo\"" [] []
            1: COMMA@40..42 "," [] [Whitespace(" ")]
            2: JS_OBJECT_EXPRESSION@42..70
              0: L_CURLY@42..44 "{" [] [Whitespace(" ")]
              1: JS_OBJECT_MEMBER_LIST@44..69
                0: JS_PROPERTY_OBJECT_MEMBER@44..69
                  0: JS_LITERAL_MEMBER_NAME@44..50
                    0: IDENT@44..50 "assert" [] []
                  1: COLON@50..52 ":" [] [Whitespace(" ")]
                  2: JS_OBJECT_EXPRESSION@52..69
                    0: L_CURLY@52..54 "{" [] [Whitespace(" ")]
                    1: JS_OBJECT_MEMBER_LIST@54..67
                      0: JS_PROPERTY_OBJECT_MEMBER@54..67
                        0: JS_LITERAL_MEMBER_NAME@54..58
                          0: IDENT@54..58 "type" [] []
                        1: COLON@58..60 ":" [] [Whitespace(" ")]
                        2: JS_STRING_LITERAL_EXPRESSION@60..67
                          0: JS_STRING_LITERAL@60..67 "'json'" [] [Whitespace(" ")]
                    2: R_CURLY@67..69 "}" [] [Whitespace(" ")]
              2: R_CURLY@69..70 "}" [] []
            3: COMMA@70..72 "," [] [Whitespace(" ")]
            4: JS_STRING_LITERAL_EXPRESSION@72..77
              0: JS_STRING_LITERAL@72..77 "\"bar\"" [] []
          2: R_PAREN@77..78 ")" [] []
      1: (empty)
  4: EOF@78..79 "" [Newline("\n")] []
--
import_invalid_args.js:1:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × `import()` requires exactly one or two arguments. 
  
  > 1 │ import()
      │        ^
    2 │ import(...["foo"])
    3 │ import("foo", { assert: { type: 'json' } }, "bar")
  
--
import_invalid_args.js:2:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × `...` is not allowed in `import()`
  
    1 │ import()
  > 2 │ import(...["foo"])
      │        ^^^^^^^^^^
    3 │ import("foo", { assert: { type: 'json' } }, "bar")
    4 │ 
  
--
import_invalid_args.js:3:45 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × `import()` requires exactly one or two arguments. 
  
    1 │ import()
    2 │ import(...["foo"])
  > 3 │ import("foo", { assert: { type: 'json' } }, "bar")
      │                                             ^^^^^^
    4 │ 
  
--
import()
import(...["foo"])
import("foo", { assert: { type: 'json' } }, "bar")