biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@0..6 "class" [] [Whitespace(" ")],
            id: missing (required),
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@6..7 "{" [] [],
            members: JsClassMemberList [],
            r_curly_token: R_CURLY@7..8 "}" [] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@8..15 "class" [Newline("\n")] [Whitespace(" ")],
            id: missing (required),
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: TsImplementsClause {
                implements_token: IMPLEMENTS_KW@15..26 "implements" [] [Whitespace(" ")],
                types: TsTypeList [
                    TsNameWithTypeArguments {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@26..28 "B" [] [Whitespace(" ")],
                        },
                        type_arguments: missing (optional),
                    },
                ],
            },
            l_curly_token: L_CURLY@28..29 "{" [] [],
            members: JsClassMemberList [],
            r_curly_token: R_CURLY@29..30 "}" [] [],
        },
    ],
    eof_token: EOF@30..31 "" [Newline("\n")] [],
}

0: JS_MODULE@0..31
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..30
    0: JS_CLASS_DECLARATION@0..8
      0: JS_DECORATOR_LIST@0..0
      1: (empty)
      2: CLASS_KW@0..6 "class" [] [Whitespace(" ")]
      3: (empty)
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@6..7 "{" [] []
      8: JS_CLASS_MEMBER_LIST@7..7
      9: R_CURLY@7..8 "}" [] []
    1: JS_CLASS_DECLARATION@8..30
      0: JS_DECORATOR_LIST@8..8
      1: (empty)
      2: CLASS_KW@8..15 "class" [Newline("\n")] [Whitespace(" ")]
      3: (empty)
      4: (empty)
      5: (empty)
      6: TS_IMPLEMENTS_CLAUSE@15..28
        0: IMPLEMENTS_KW@15..26 "implements" [] [Whitespace(" ")]
        1: TS_TYPE_LIST@26..28
          0: TS_NAME_WITH_TYPE_ARGUMENTS@26..28
            0: JS_REFERENCE_IDENTIFIER@26..28
              0: IDENT@26..28 "B" [] [Whitespace(" ")]
            1: (empty)
      7: L_CURLY@28..29 "{" [] []
      8: JS_CLASS_MEMBER_LIST@29..29
      9: R_CURLY@29..30 "}" [] []
  4: EOF@30..31 "" [Newline("\n")] []
--
class_decl_no_id.ts:1:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × class declarations must have a name
  
  > 1 │ class {}
      │ ^^^^^^
    2 │ class implements B {}
    3 │ 
  
--
class_decl_no_id.ts:2:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × class declarations must have a name
  
    1 │ class {}
  > 2 │ class implements B {}
      │ ^^^^^^
    3 │ 
  
--
class {}
class implements B {}