biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        TsDeclareStatement {
            declare_token: DECLARE_KW@0..8 "declare" [] [Whitespace(" ")],
            declaration: TsModuleDeclaration {
                module_or_namespace: MODULE_KW@8..15 "module" [] [Whitespace(" ")],
                name: TsIdentifierBinding {
                    name_token: IDENT@15..16 "a" [] [],
                },
                body: missing (required),
            },
        },
        JsEmptyStatement {
            semicolon_token: SEMICOLON@16..33 ";" [] [Whitespace(" "), Comments("// missing body")],
        },
        TsDeclareStatement {
            declare_token: DECLARE_KW@33..42 "declare" [Newline("\n")] [Whitespace(" ")],
            declaration: TsExternalModuleDeclaration {
                module_token: MODULE_KW@42..49 "module" [] [Whitespace(" ")],
                source: JsModuleSource {
                    value_token: JS_STRING_LITERAL@49..53 "\"a\"" [] [Whitespace(" ")],
                },
                body: missing (optional),
            },
        },
        TsDeclareStatement {
            declare_token: DECLARE_KW@53..61 "declare" [] [Whitespace(" ")],
            declaration: TsExternalModuleDeclaration {
                module_token: MODULE_KW@61..68 "module" [] [Whitespace(" ")],
                source: JsModuleSource {
                    value_token: JS_STRING_LITERAL@68..71 "\"b\"" [] [],
                },
                body: TsEmptyExternalModuleDeclarationBody {
                    semicolon_token: SEMICOLON@71..88 ";" [] [Whitespace(" "), Comments("// missing semi")],
                },
            },
        },
    ],
    eof_token: EOF@88..89 "" [Newline("\n")] [],
}

0: JS_MODULE@0..89
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..88
    0: TS_DECLARE_STATEMENT@0..16
      0: DECLARE_KW@0..8 "declare" [] [Whitespace(" ")]
      1: TS_MODULE_DECLARATION@8..16
        0: MODULE_KW@8..15 "module" [] [Whitespace(" ")]
        1: TS_IDENTIFIER_BINDING@15..16
          0: IDENT@15..16 "a" [] []
        2: (empty)
    1: JS_EMPTY_STATEMENT@16..33
      0: SEMICOLON@16..33 ";" [] [Whitespace(" "), Comments("// missing body")]
    2: TS_DECLARE_STATEMENT@33..53
      0: DECLARE_KW@33..42 "declare" [Newline("\n")] [Whitespace(" ")]
      1: TS_EXTERNAL_MODULE_DECLARATION@42..53
        0: MODULE_KW@42..49 "module" [] [Whitespace(" ")]
        1: JS_MODULE_SOURCE@49..53
          0: JS_STRING_LITERAL@49..53 "\"a\"" [] [Whitespace(" ")]
        2: (empty)
    3: TS_DECLARE_STATEMENT@53..88
      0: DECLARE_KW@53..61 "declare" [] [Whitespace(" ")]
      1: TS_EXTERNAL_MODULE_DECLARATION@61..88
        0: MODULE_KW@61..68 "module" [] [Whitespace(" ")]
        1: JS_MODULE_SOURCE@68..71
          0: JS_STRING_LITERAL@68..71 "\"b\"" [] []
        2: TS_EMPTY_EXTERNAL_MODULE_DECLARATION_BODY@71..88
          0: SEMICOLON@71..88 ";" [] [Whitespace(" "), Comments("// missing semi")]
  4: EOF@88..89 "" [Newline("\n")] []
--
ts_module_err.ts:1:17 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × expected `{` but instead found `;`
  
  > 1 │ declare module a; // missing body
      │                 ^
    2 │ declare module "a" declare module "b"; // missing semi
    3 │ 
  
  i Remove ;
  
--
ts_module_err.ts:2:20 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Expected a semicolon or an implicit semicolon after a statement, but found none
  
    1 │ declare module a; // missing body
  > 2 │ declare module "a" declare module "b"; // missing semi
      │                    ^^^^^^^
    3 │ 
  
  i An explicit or implicit semicolon is expected here...
  
    1 │ declare module a; // missing body
  > 2 │ declare module "a" declare module "b"; // missing semi
      │                    ^^^^^^^
    3 │ 
  
  i ...Which is required to end this statement
  
    1 │ declare module a; // missing body
  > 2 │ declare module "a" declare module "b"; // missing semi
      │ ^^^^^^^^^^^^^^^^^^^^^^^^^^
    3 │ 
  
--
declare module a; // missing body
declare module "a" declare module "b"; // missing semi