biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        TsInterfaceDeclaration {
            interface_token: INTERFACE_KW@0..10 "interface" [] [Whitespace(" ")],
            id: TsIdentifierBinding {
                name_token: IDENT@10..11 "A" [] [],
            },
            type_parameters: TsTypeParameters {
                l_angle_token: L_ANGLE@11..12 "<" [] [],
                items: TsTypeParameterList [
                    TsTypeParameter {
                        modifiers: TsTypeParameterModifierList [],
                        name: TsTypeParameterName {
                            ident_token: IDENT@12..16 "Prop" [] [],
                        },
                        constraint: missing (optional),
                        default: missing (optional),
                    },
                ],
                r_angle_token: R_ANGLE@16..18 ">" [] [Whitespace(" ")],
            },
            extends_clause: missing (optional),
            l_curly_token: L_CURLY@18..20 "{" [] [Whitespace(" ")],
            members: TsTypeMemberList [
                TsPropertySignatureTypeMember {
                    readonly_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@20..24 "prop" [] [],
                    },
                    optional_token: missing (optional),
                    type_annotation: TsTypeAnnotation {
                        colon_token: COLON@24..26 ":" [] [Whitespace(" ")],
                        ty: TsReferenceType {
                            name: JsReferenceIdentifier {
                                value_token: IDENT@26..31 "Prop" [] [Whitespace(" ")],
                            },
                            type_arguments: missing (optional),
                        },
                    },
                    separator_token: missing (optional),
                },
            ],
            r_curly_token: R_CURLY@31..32 "}" [] [],
        },
        TsInterfaceDeclaration {
            interface_token: INTERFACE_KW@32..43 "interface" [Newline("\n")] [Whitespace(" ")],
            id: TsIdentifierBinding {
                name_token: IDENT@43..45 "B" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: TsExtendsClause {
                extends_token: EXTENDS_KW@45..53 "extends" [] [Whitespace(" ")],
                types: TsTypeList [
                    TsNameWithTypeArguments {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@53..54 "A" [] [],
                        },
                        type_arguments: TsTypeArguments {
                            l_angle_token: L_ANGLE@54..55 "<" [] [],
                            ts_type_argument_list: TsTypeArgumentList [
                                TsStringType {
                                    string_token: STRING_KW@55..61 "string" [] [],
                                },
                            ],
                            r_angle_token: R_ANGLE@61..63 ">" [] [Whitespace(" ")],
                        },
                    },
                ],
            },
            l_curly_token: L_CURLY@63..64 "{" [] [],
            members: TsTypeMemberList [],
            r_curly_token: R_CURLY@64..65 "}" [] [],
        },
        TsInterfaceDeclaration {
            interface_token: INTERFACE_KW@65..76 "interface" [Newline("\n")] [Whitespace(" ")],
            id: TsIdentifierBinding {
                name_token: IDENT@76..78 "C" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: TsExtendsClause {
                extends_token: EXTENDS_KW@78..86 "extends" [] [Whitespace(" ")],
                types: TsTypeList [
                    TsNameWithTypeArguments {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@86..87 "A" [] [],
                        },
                        type_arguments: TsTypeArguments {
                            l_angle_token: L_ANGLE@87..88 "<" [] [],
                            ts_type_argument_list: TsTypeArgumentList [
                                TsNumberType {
                                    number_token: NUMBER_KW@88..94 "number" [] [],
                                },
                            ],
                            r_angle_token: R_ANGLE@94..95 ">" [] [],
                        },
                    },
                    COMMA@95..97 "," [] [Whitespace(" ")],
                    TsNameWithTypeArguments {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@97..99 "B" [] [Whitespace(" ")],
                        },
                        type_arguments: missing (optional),
                    },
                ],
            },
            l_curly_token: L_CURLY@99..100 "{" [] [],
            members: TsTypeMemberList [],
            r_curly_token: R_CURLY@100..101 "}" [] [],
        },
    ],
    eof_token: EOF@101..102 "" [Newline("\n")] [],
}

0: JS_MODULE@0..102
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..101
    0: TS_INTERFACE_DECLARATION@0..32
      0: INTERFACE_KW@0..10 "interface" [] [Whitespace(" ")]
      1: TS_IDENTIFIER_BINDING@10..11
        0: IDENT@10..11 "A" [] []
      2: TS_TYPE_PARAMETERS@11..18
        0: L_ANGLE@11..12 "<" [] []
        1: TS_TYPE_PARAMETER_LIST@12..16
          0: TS_TYPE_PARAMETER@12..16
            0: TS_TYPE_PARAMETER_MODIFIER_LIST@12..12
            1: TS_TYPE_PARAMETER_NAME@12..16
              0: IDENT@12..16 "Prop" [] []
            2: (empty)
            3: (empty)
        2: R_ANGLE@16..18 ">" [] [Whitespace(" ")]
      3: (empty)
      4: L_CURLY@18..20 "{" [] [Whitespace(" ")]
      5: TS_TYPE_MEMBER_LIST@20..31
        0: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@20..31
          0: (empty)
          1: JS_LITERAL_MEMBER_NAME@20..24
            0: IDENT@20..24 "prop" [] []
          2: (empty)
          3: TS_TYPE_ANNOTATION@24..31
            0: COLON@24..26 ":" [] [Whitespace(" ")]
            1: TS_REFERENCE_TYPE@26..31
              0: JS_REFERENCE_IDENTIFIER@26..31
                0: IDENT@26..31 "Prop" [] [Whitespace(" ")]
              1: (empty)
          4: (empty)
      6: R_CURLY@31..32 "}" [] []
    1: TS_INTERFACE_DECLARATION@32..65
      0: INTERFACE_KW@32..43 "interface" [Newline("\n")] [Whitespace(" ")]
      1: TS_IDENTIFIER_BINDING@43..45
        0: IDENT@43..45 "B" [] [Whitespace(" ")]
      2: (empty)
      3: TS_EXTENDS_CLAUSE@45..63
        0: EXTENDS_KW@45..53 "extends" [] [Whitespace(" ")]
        1: TS_TYPE_LIST@53..63
          0: TS_NAME_WITH_TYPE_ARGUMENTS@53..63
            0: JS_REFERENCE_IDENTIFIER@53..54
              0: IDENT@53..54 "A" [] []
            1: TS_TYPE_ARGUMENTS@54..63
              0: L_ANGLE@54..55 "<" [] []
              1: TS_TYPE_ARGUMENT_LIST@55..61
                0: TS_STRING_TYPE@55..61
                  0: STRING_KW@55..61 "string" [] []
              2: R_ANGLE@61..63 ">" [] [Whitespace(" ")]
      4: L_CURLY@63..64 "{" [] []
      5: TS_TYPE_MEMBER_LIST@64..64
      6: R_CURLY@64..65 "}" [] []
    2: TS_INTERFACE_DECLARATION@65..101
      0: INTERFACE_KW@65..76 "interface" [Newline("\n")] [Whitespace(" ")]
      1: TS_IDENTIFIER_BINDING@76..78
        0: IDENT@76..78 "C" [] [Whitespace(" ")]
      2: (empty)
      3: TS_EXTENDS_CLAUSE@78..99
        0: EXTENDS_KW@78..86 "extends" [] [Whitespace(" ")]
        1: TS_TYPE_LIST@86..99
          0: TS_NAME_WITH_TYPE_ARGUMENTS@86..95
            0: JS_REFERENCE_IDENTIFIER@86..87
              0: IDENT@86..87 "A" [] []
            1: TS_TYPE_ARGUMENTS@87..95
              0: L_ANGLE@87..88 "<" [] []
              1: TS_TYPE_ARGUMENT_LIST@88..94
                0: TS_NUMBER_TYPE@88..94
                  0: NUMBER_KW@88..94 "number" [] []
              2: R_ANGLE@94..95 ">" [] []
          1: COMMA@95..97 "," [] [Whitespace(" ")]
          2: TS_NAME_WITH_TYPE_ARGUMENTS@97..99
            0: JS_REFERENCE_IDENTIFIER@97..99
              0: IDENT@97..99 "B" [] [Whitespace(" ")]
            1: (empty)
      4: L_CURLY@99..100 "{" [] []
      5: TS_TYPE_MEMBER_LIST@100..100
      6: R_CURLY@100..101 "}" [] []
  4: EOF@101..102 "" [Newline("\n")] []