diff --git a/crates/biome_js_factory/src/generated/node_factory.rs b/crates/biome_js_factory/src/generated/node_factory.rs index 6e9666567949..2ba91fb3c91d 100644 --- a/crates/biome_js_factory/src/generated/node_factory.rs +++ b/crates/biome_js_factory/src/generated/node_factory.rs @@ -4964,15 +4964,11 @@ impl TsImportEqualsDeclarationBuilder { } pub fn ts_import_type( import_token: SyntaxToken, - l_paren_token: SyntaxToken, - argument_token: SyntaxToken, - r_paren_token: SyntaxToken, + arguments: JsCallArguments, ) -> TsImportTypeBuilder { TsImportTypeBuilder { import_token, - l_paren_token, - argument_token, - r_paren_token, + arguments, typeof_token: None, qualifier_clause: None, type_arguments: None, @@ -4980,9 +4976,7 @@ pub fn ts_import_type( } pub struct TsImportTypeBuilder { import_token: SyntaxToken, - l_paren_token: SyntaxToken, - argument_token: SyntaxToken, - r_paren_token: SyntaxToken, + arguments: JsCallArguments, typeof_token: Option, qualifier_clause: Option, type_arguments: Option, @@ -5006,9 +5000,7 @@ impl TsImportTypeBuilder { [ self.typeof_token.map(|token| SyntaxElement::Token(token)), Some(SyntaxElement::Token(self.import_token)), - Some(SyntaxElement::Token(self.l_paren_token)), - Some(SyntaxElement::Token(self.argument_token)), - Some(SyntaxElement::Token(self.r_paren_token)), + Some(SyntaxElement::Node(self.arguments.into_syntax())), self.qualifier_clause .map(|token| SyntaxElement::Node(token.into_syntax())), self.type_arguments diff --git a/crates/biome_js_factory/src/generated/syntax_factory.rs b/crates/biome_js_factory/src/generated/syntax_factory.rs index 4e265b9ebd0a..76d89689529f 100644 --- a/crates/biome_js_factory/src/generated/syntax_factory.rs +++ b/crates/biome_js_factory/src/generated/syntax_factory.rs @@ -7507,7 +7507,7 @@ impl SyntaxFactory for JsSyntaxFactory { } TS_IMPORT_TYPE => { let mut elements = (&children).into_iter(); - let mut slots: RawNodeSlots<7usize> = RawNodeSlots::default(); + let mut slots: RawNodeSlots<5usize> = RawNodeSlots::default(); let mut current_element = elements.next(); if let Some(element) = ¤t_element { if element.kind() == T![typeof] { @@ -7524,21 +7524,7 @@ impl SyntaxFactory for JsSyntaxFactory { } slots.next_slot(); if let Some(element) = ¤t_element { - if element.kind() == T!['('] { - slots.mark_present(); - current_element = elements.next(); - } - } - slots.next_slot(); - if let Some(element) = ¤t_element { - if element.kind() == JS_STRING_LITERAL { - slots.mark_present(); - current_element = elements.next(); - } - } - slots.next_slot(); - if let Some(element) = ¤t_element { - if element.kind() == T![')'] { + if JsCallArguments::can_cast(element.kind()) { slots.mark_present(); current_element = elements.next(); } diff --git a/crates/biome_js_formatter/src/ts/module/import_type.rs b/crates/biome_js_formatter/src/ts/module/import_type.rs index 1dc76fa67f70..651f66d04f17 100644 --- a/crates/biome_js_formatter/src/ts/module/import_type.rs +++ b/crates/biome_js_formatter/src/ts/module/import_type.rs @@ -1,6 +1,4 @@ use crate::prelude::*; -use crate::utils::{FormatLiteralStringToken, StringLiteralParentKind}; - use biome_formatter::write; use biome_js_syntax::TsImportType; use biome_js_syntax::TsImportTypeFields; @@ -13,9 +11,7 @@ impl FormatNodeRule for FormatTsImportType { let TsImportTypeFields { typeof_token, import_token, - l_paren_token, - argument_token, - r_paren_token, + arguments, qualifier_clause, type_arguments, } = node.as_fields(); @@ -28,12 +24,7 @@ impl FormatNodeRule for FormatTsImportType { f, [ import_token.format(), - l_paren_token.format(), - FormatLiteralStringToken::new( - &argument_token?, - StringLiteralParentKind::Expression - ), - r_paren_token.format(), + arguments.format(), qualifier_clause.format(), type_arguments.format(), ] diff --git a/crates/biome_js_parser/src/syntax/expr.rs b/crates/biome_js_parser/src/syntax/expr.rs index cb4c31498f8d..0c534153f50b 100644 --- a/crates/biome_js_parser/src/syntax/expr.rs +++ b/crates/biome_js_parser/src/syntax/expr.rs @@ -1450,12 +1450,13 @@ fn parse_primary_expression(p: &mut JsParser, context: ExpressionContext) -> Par // test js import_call // import("foo") // import("foo", { assert: { type: 'json' } }) + // import("foo", { with: { 'resolution-mode': 'import' } }) // test_err js import_invalid_args // import() // import(...["foo"]) // import("foo", { assert: { type: 'json' } }, "bar") - + // import("foo", { with: { type: 'json' } }, "bar") let args = p.start(); p.bump(T!['(']); let args_list = p.start(); @@ -1834,7 +1835,7 @@ fn parse_array_expr(p: &mut JsParser) -> ParsedSyntax { // test_err js spread // [...] /// A spread element consisting of three dots and an assignment expression such as `...foo` -fn parse_spread_element(p: &mut JsParser, context: ExpressionContext) -> ParsedSyntax { +pub(crate) fn parse_spread_element(p: &mut JsParser, context: ExpressionContext) -> ParsedSyntax { if !p.at(T![...]) { return Absent; } diff --git a/crates/biome_js_parser/src/syntax/typescript/types.rs b/crates/biome_js_parser/src/syntax/typescript/types.rs index b5b6d8f29d4b..183f203beb57 100644 --- a/crates/biome_js_parser/src/syntax/typescript/types.rs +++ b/crates/biome_js_parser/src/syntax/typescript/types.rs @@ -4,18 +4,13 @@ use crate::parser::{RecoveryError, RecoveryResult}; use crate::prelude::*; use crate::state::{EnterType, SignatureFlags}; use crate::syntax::expr::{ - is_at_binary_operator, is_at_expression, is_at_identifier, is_nth_at_identifier, - is_nth_at_identifier_or_keyword, parse_big_int_literal_expression, parse_identifier, - parse_literal_expression, parse_name, parse_number_literal_expression, - parse_reference_identifier, parse_template_elements, ExpressionContext, + is_at_binary_operator, is_at_expression, is_at_identifier, is_nth_at_identifier, is_nth_at_identifier_or_keyword, parse_assignment_expression_or_higher, parse_big_int_literal_expression, parse_identifier, parse_literal_expression, parse_name, parse_number_literal_expression, parse_reference_identifier, parse_template_elements, ExpressionContext }; use crate::syntax::function::{ parse_formal_parameter, parse_parameter_list, skip_parameter_start, ParameterContext, }; use crate::syntax::js_parse_error::{ - decorators_not_allowed, expected_identifier, expected_object_member_name, expected_parameter, - expected_parameters, expected_property_or_signature, modifier_already_seen, - modifier_must_precede_modifier, + decorators_not_allowed, expected_identifier, expected_object_member_name, expected_parameter, expected_parameters, expected_property_or_signature, modifier_already_seen, modifier_must_precede_modifier }; use crate::syntax::metavariable::parse_metavariable; use crate::syntax::object::{ @@ -28,7 +23,9 @@ use crate::syntax::typescript::ts_parse_error::{ ts_const_modifier_cannot_appear_on_a_type_parameter, ts_in_out_modifier_cannot_appear_on_a_type_parameter, }; +use crate::syntax::js_parse_error; use biome_parser::parse_lists::{ParseNodeList, ParseSeparatedList}; +use biome_parser::ParserProgress; use enumflags2::{bitflags, make_bitflags, BitFlags}; use smallvec::SmallVec; @@ -1150,6 +1147,7 @@ fn parse_ts_mapped_type_optional_modifier_clause(p: &mut JsParser) -> ParsedSynt // type C = typeof import("test").a.b.c.d.e.f; // type D = import("test"); // type E = import("test").C; +// type F = typeof import("test", { with: { 'resolution-mode': 'import' } }); fn parse_ts_import_type(p: &mut JsParser, context: TypeContext) -> ParsedSyntax { if !p.at(T![typeof]) && !p.at(T![import]) { return Absent; @@ -1159,7 +1157,38 @@ fn parse_ts_import_type(p: &mut JsParser, context: TypeContext) -> ParsedSyntax p.eat(T![typeof]); p.expect(T![import]); p.expect(T!['(']); - p.expect(JS_STRING_LITERAL); + let args_list = p.start(); + + let mut progress = ParserProgress::default(); + let mut error_range_start = p.cur_range().start(); + let mut args_count = 0; + + while !p.at(EOF) && !p.at(T![')']) { + progress.assert_progressing(p); + args_count += 1; + + if args_count == 3 { + error_range_start = p.cur_range().start(); + } + + parse_assignment_expression_or_higher(p, ExpressionContext::default()) + .or_add_diagnostic(p, js_parse_error::expected_expression_assignment); + + if p.at(T![,]) { + p.bump_any(); + } else { + break; + } + } + args_list.complete(p, JS_CALL_ARGUMENT_LIST); + + if args_count == 0 || args_count > 2 { + let err = p.err_builder( + "`typeof import()` requires exactly one or two arguments. ", + error_range_start..p.cur_range().end(), + ); + p.error(err); + } p.expect(T![')']); if p.at(T![.]) { @@ -1170,7 +1199,6 @@ fn parse_ts_import_type(p: &mut JsParser, context: TypeContext) -> ParsedSyntax } parse_ts_type_arguments(p, context).ok(); - Present(m.complete(p, TS_IMPORT_TYPE)) } diff --git a/crates/biome_js_parser/test_data/inline/err/import_invalid_args.js b/crates/biome_js_parser/test_data/inline/err/import_invalid_args.js index 032b373263ea..8e214ed526f6 100644 --- a/crates/biome_js_parser/test_data/inline/err/import_invalid_args.js +++ b/crates/biome_js_parser/test_data/inline/err/import_invalid_args.js @@ -1,3 +1,4 @@ import() import(...["foo"]) import("foo", { assert: { type: 'json' } }, "bar") +import("foo", { with: { type: 'json' } }, "bar") diff --git a/crates/biome_js_parser/test_data/inline/err/import_invalid_args.rast b/crates/biome_js_parser/test_data/inline/err/import_invalid_args.rast index 2ff276e9fd86..f875058a6c77 100644 --- a/crates/biome_js_parser/test_data/inline/err/import_invalid_args.rast +++ b/crates/biome_js_parser/test_data/inline/err/import_invalid_args.rast @@ -93,15 +93,62 @@ JsModule { }, semicolon_token: missing (optional), }, + JsExpressionStatement { + expression: JsImportCallExpression { + import_token: IMPORT_KW@78..85 "import" [Newline("\n")] [], + arguments: JsCallArguments { + l_paren_token: L_PAREN@85..86 "(" [] [], + args: JsCallArgumentList [ + JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@86..91 "\"foo\"" [] [], + }, + COMMA@91..93 "," [] [Whitespace(" ")], + JsObjectExpression { + l_curly_token: L_CURLY@93..95 "{" [] [Whitespace(" ")], + members: JsObjectMemberList [ + JsPropertyObjectMember { + name: JsLiteralMemberName { + value: IDENT@95..99 "with" [] [], + }, + colon_token: COLON@99..101 ":" [] [Whitespace(" ")], + value: JsObjectExpression { + l_curly_token: L_CURLY@101..103 "{" [] [Whitespace(" ")], + members: JsObjectMemberList [ + JsPropertyObjectMember { + name: JsLiteralMemberName { + value: IDENT@103..107 "type" [] [], + }, + colon_token: COLON@107..109 ":" [] [Whitespace(" ")], + value: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@109..116 "'json'" [] [Whitespace(" ")], + }, + }, + ], + r_curly_token: R_CURLY@116..118 "}" [] [Whitespace(" ")], + }, + }, + ], + r_curly_token: R_CURLY@118..119 "}" [] [], + }, + COMMA@119..121 "," [] [Whitespace(" ")], + JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@121..126 "\"bar\"" [] [], + }, + ], + r_paren_token: R_PAREN@126..127 ")" [] [], + }, + }, + semicolon_token: missing (optional), + }, ], - eof_token: EOF@78..79 "" [Newline("\n")] [], + eof_token: EOF@127..128 "" [Newline("\n")] [], } -0: JS_MODULE@0..79 +0: JS_MODULE@0..128 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 - 3: JS_MODULE_ITEM_LIST@0..78 + 3: JS_MODULE_ITEM_LIST@0..127 0: JS_EXPRESSION_STATEMENT@0..8 0: JS_IMPORT_CALL_EXPRESSION@0..8 0: IMPORT_KW@0..6 "import" [] [] @@ -158,7 +205,39 @@ JsModule { 0: JS_STRING_LITERAL@72..77 "\"bar\"" [] [] 2: R_PAREN@77..78 ")" [] [] 1: (empty) - 4: EOF@78..79 "" [Newline("\n")] [] + 3: JS_EXPRESSION_STATEMENT@78..127 + 0: JS_IMPORT_CALL_EXPRESSION@78..127 + 0: IMPORT_KW@78..85 "import" [Newline("\n")] [] + 1: JS_CALL_ARGUMENTS@85..127 + 0: L_PAREN@85..86 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@86..126 + 0: JS_STRING_LITERAL_EXPRESSION@86..91 + 0: JS_STRING_LITERAL@86..91 "\"foo\"" [] [] + 1: COMMA@91..93 "," [] [Whitespace(" ")] + 2: JS_OBJECT_EXPRESSION@93..119 + 0: L_CURLY@93..95 "{" [] [Whitespace(" ")] + 1: JS_OBJECT_MEMBER_LIST@95..118 + 0: JS_PROPERTY_OBJECT_MEMBER@95..118 + 0: JS_LITERAL_MEMBER_NAME@95..99 + 0: IDENT@95..99 "with" [] [] + 1: COLON@99..101 ":" [] [Whitespace(" ")] + 2: JS_OBJECT_EXPRESSION@101..118 + 0: L_CURLY@101..103 "{" [] [Whitespace(" ")] + 1: JS_OBJECT_MEMBER_LIST@103..116 + 0: JS_PROPERTY_OBJECT_MEMBER@103..116 + 0: JS_LITERAL_MEMBER_NAME@103..107 + 0: IDENT@103..107 "type" [] [] + 1: COLON@107..109 ":" [] [Whitespace(" ")] + 2: JS_STRING_LITERAL_EXPRESSION@109..116 + 0: JS_STRING_LITERAL@109..116 "'json'" [] [Whitespace(" ")] + 2: R_CURLY@116..118 "}" [] [Whitespace(" ")] + 2: R_CURLY@118..119 "}" [] [] + 3: COMMA@119..121 "," [] [Whitespace(" ")] + 4: JS_STRING_LITERAL_EXPRESSION@121..126 + 0: JS_STRING_LITERAL@121..126 "\"bar\"" [] [] + 2: R_PAREN@126..127 ")" [] [] + 1: (empty) + 4: EOF@127..128 "" [Newline("\n")] [] -- import_invalid_args.js:1:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -178,7 +257,7 @@ import_invalid_args.js:2:8 parse ━━━━━━━━━━━━━━━ > 2 │ import(...["foo"]) │ ^^^^^^^^^^ 3 │ import("foo", { assert: { type: 'json' } }, "bar") - 4 │ + 4 │ import("foo", { with: { type: 'json' } }, "bar") -- import_invalid_args.js:3:45 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -189,9 +268,22 @@ import_invalid_args.js:3:45 parse ━━━━━━━━━━━━━━━ 2 │ import(...["foo"]) > 3 │ import("foo", { assert: { type: 'json' } }, "bar") │ ^^^^^^ - 4 │ + 4 │ import("foo", { with: { type: 'json' } }, "bar") + 5 │ + +-- +import_invalid_args.js:4:43 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × `import()` requires exactly one or two arguments. + + 2 │ import(...["foo"]) + 3 │ import("foo", { assert: { type: 'json' } }, "bar") + > 4 │ import("foo", { with: { type: 'json' } }, "bar") + │ ^^^^^^ + 5 │ -- import() import(...["foo"]) import("foo", { assert: { type: 'json' } }, "bar") +import("foo", { with: { type: 'json' } }, "bar") diff --git a/crates/biome_js_parser/test_data/inline/ok/import_call.js b/crates/biome_js_parser/test_data/inline/ok/import_call.js index ab9eb6f2e9f5..53c9edfc642b 100644 --- a/crates/biome_js_parser/test_data/inline/ok/import_call.js +++ b/crates/biome_js_parser/test_data/inline/ok/import_call.js @@ -1,2 +1,3 @@ import("foo") import("foo", { assert: { type: 'json' } }) +import("foo", { with: { 'resolution-mode': 'import' } }) diff --git a/crates/biome_js_parser/test_data/inline/ok/import_call.rast b/crates/biome_js_parser/test_data/inline/ok/import_call.rast index 78b50882738d..34a97d619a80 100644 --- a/crates/biome_js_parser/test_data/inline/ok/import_call.rast +++ b/crates/biome_js_parser/test_data/inline/ok/import_call.rast @@ -61,15 +61,58 @@ JsModule { }, semicolon_token: missing (optional), }, + JsExpressionStatement { + expression: JsImportCallExpression { + import_token: IMPORT_KW@57..64 "import" [Newline("\n")] [], + arguments: JsCallArguments { + l_paren_token: L_PAREN@64..65 "(" [] [], + args: JsCallArgumentList [ + JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@65..70 "\"foo\"" [] [], + }, + COMMA@70..72 "," [] [Whitespace(" ")], + JsObjectExpression { + l_curly_token: L_CURLY@72..74 "{" [] [Whitespace(" ")], + members: JsObjectMemberList [ + JsPropertyObjectMember { + name: JsLiteralMemberName { + value: IDENT@74..78 "with" [] [], + }, + colon_token: COLON@78..80 ":" [] [Whitespace(" ")], + value: JsObjectExpression { + l_curly_token: L_CURLY@80..82 "{" [] [Whitespace(" ")], + members: JsObjectMemberList [ + JsPropertyObjectMember { + name: JsLiteralMemberName { + value: JS_STRING_LITERAL@82..99 "'resolution-mode'" [] [], + }, + colon_token: COLON@99..101 ":" [] [Whitespace(" ")], + value: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@101..110 "'import'" [] [Whitespace(" ")], + }, + }, + ], + r_curly_token: R_CURLY@110..112 "}" [] [Whitespace(" ")], + }, + }, + ], + r_curly_token: R_CURLY@112..113 "}" [] [], + }, + ], + r_paren_token: R_PAREN@113..114 ")" [] [], + }, + }, + semicolon_token: missing (optional), + }, ], - eof_token: EOF@57..58 "" [Newline("\n")] [], + eof_token: EOF@114..115 "" [Newline("\n")] [], } -0: JS_MODULE@0..58 +0: JS_MODULE@0..115 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 - 3: JS_MODULE_ITEM_LIST@0..57 + 3: JS_MODULE_ITEM_LIST@0..114 0: JS_EXPRESSION_STATEMENT@0..13 0: JS_IMPORT_CALL_EXPRESSION@0..13 0: IMPORT_KW@0..6 "import" [] [] @@ -109,4 +152,33 @@ JsModule { 2: R_CURLY@55..56 "}" [] [] 2: R_PAREN@56..57 ")" [] [] 1: (empty) - 4: EOF@57..58 "" [Newline("\n")] [] + 2: JS_EXPRESSION_STATEMENT@57..114 + 0: JS_IMPORT_CALL_EXPRESSION@57..114 + 0: IMPORT_KW@57..64 "import" [Newline("\n")] [] + 1: JS_CALL_ARGUMENTS@64..114 + 0: L_PAREN@64..65 "(" [] [] + 1: JS_CALL_ARGUMENT_LIST@65..113 + 0: JS_STRING_LITERAL_EXPRESSION@65..70 + 0: JS_STRING_LITERAL@65..70 "\"foo\"" [] [] + 1: COMMA@70..72 "," [] [Whitespace(" ")] + 2: JS_OBJECT_EXPRESSION@72..113 + 0: L_CURLY@72..74 "{" [] [Whitespace(" ")] + 1: JS_OBJECT_MEMBER_LIST@74..112 + 0: JS_PROPERTY_OBJECT_MEMBER@74..112 + 0: JS_LITERAL_MEMBER_NAME@74..78 + 0: IDENT@74..78 "with" [] [] + 1: COLON@78..80 ":" [] [Whitespace(" ")] + 2: JS_OBJECT_EXPRESSION@80..112 + 0: L_CURLY@80..82 "{" [] [Whitespace(" ")] + 1: JS_OBJECT_MEMBER_LIST@82..110 + 0: JS_PROPERTY_OBJECT_MEMBER@82..110 + 0: JS_LITERAL_MEMBER_NAME@82..99 + 0: JS_STRING_LITERAL@82..99 "'resolution-mode'" [] [] + 1: COLON@99..101 ":" [] [Whitespace(" ")] + 2: JS_STRING_LITERAL_EXPRESSION@101..110 + 0: JS_STRING_LITERAL@101..110 "'import'" [] [Whitespace(" ")] + 2: R_CURLY@110..112 "}" [] [Whitespace(" ")] + 2: R_CURLY@112..113 "}" [] [] + 2: R_PAREN@113..114 ")" [] [] + 1: (empty) + 4: EOF@114..115 "" [Newline("\n")] [] diff --git a/crates/biome_js_parser/test_data/inline/ok/ts_import_type.rast b/crates/biome_js_parser/test_data/inline/ok/ts_import_type.rast index cfe35dbd8440..7cbb779ba2b9 100644 --- a/crates/biome_js_parser/test_data/inline/ok/ts_import_type.rast +++ b/crates/biome_js_parser/test_data/inline/ok/ts_import_type.rast @@ -270,3 +270,51 @@ JsModule { 2: R_ANGLE@166..167 ">" [] [] 5: SEMICOLON@167..168 ";" [] [] 4: EOF@168..169 "" [Newline("\n")] [] + + +0: JS_MODULE@0..75 + 0: (empty) + 1: (empty) + 2: JS_DIRECTIVE_LIST@0..0 + 3: JS_MODULE_ITEM_LIST@0..74 + 0: TS_TYPE_ALIAS_DECLARATION@0..23 + 0: TYPE_KW@0..5 "type" [] [Whitespace(" ")] + 1: TS_IDENTIFIER_BINDING@5..7 + 0: IDENT@5..7 "F" [] [Whitespace(" ")] + 2: (empty) + 3: EQ@7..9 "=" [] [Whitespace(" ")] + 4: TS_BOGUS_TYPE@9..23 + 0: TYPEOF_KW@9..16 "typeof" [] [Whitespace(" ")] + 1: IMPORT_KW@16..22 "import" [] [] + 2: L_PAREN@22..23 "(" [] [] + 3: JS_CALL_ARGUMENT_LIST@23..23 + 5: (empty) + 1: JS_EXPRESSION_STATEMENT@23..72 + 0: JS_SEQUENCE_EXPRESSION@23..72 + 0: JS_STRING_LITERAL_EXPRESSION@23..29 + 0: JS_STRING_LITERAL@23..29 "\"test\"" [] [] + 1: COMMA@29..31 "," [] [Whitespace(" ")] + 2: JS_OBJECT_EXPRESSION@31..72 + 0: L_CURLY@31..33 "{" [] [Whitespace(" ")] + 1: JS_OBJECT_MEMBER_LIST@33..71 + 0: JS_PROPERTY_OBJECT_MEMBER@33..71 + 0: JS_LITERAL_MEMBER_NAME@33..37 + 0: IDENT@33..37 "with" [] [] + 1: COLON@37..39 ":" [] [Whitespace(" ")] + 2: JS_OBJECT_EXPRESSION@39..71 + 0: L_CURLY@39..41 "{" [] [Whitespace(" ")] + 1: JS_OBJECT_MEMBER_LIST@41..69 + 0: JS_PROPERTY_OBJECT_MEMBER@41..69 + 0: JS_LITERAL_MEMBER_NAME@41..58 + 0: JS_STRING_LITERAL@41..58 "'resolution-mode'" [] [] + 1: COLON@58..60 ":" [] [Whitespace(" ")] + 2: JS_STRING_LITERAL_EXPRESSION@60..69 + 0: JS_STRING_LITERAL@60..69 "'import'" [] [Whitespace(" ")] + 2: R_CURLY@69..71 "}" [] [Whitespace(" ")] + 2: R_CURLY@71..72 "}" [] [] + 1: (empty) + 2: JS_BOGUS_STATEMENT@72..73 + 0: R_PAREN@72..73 ")" [] [] + 3: JS_EMPTY_STATEMENT@73..74 + 0: SEMICOLON@73..74 ";" [] [] + 4: EOF@74..75 "" [Newline("\n")] [] \ No newline at end of file diff --git a/crates/biome_js_parser/test_data/inline/ok/ts_import_type.ts b/crates/biome_js_parser/test_data/inline/ok/ts_import_type.ts index 30b2fd7e790d..671e88dd3593 100644 --- a/crates/biome_js_parser/test_data/inline/ok/ts_import_type.ts +++ b/crates/biome_js_parser/test_data/inline/ok/ts_import_type.ts @@ -1,5 +1 @@ -type A = typeof import("test"); -type B = import("test"); -type C = typeof import("test").a.b.c.d.e.f; -type D = import("test"); -type E = import("test").C; +type F = typeof import("test", { with: { 'resolution-mode': 'import' } }); diff --git a/crates/biome_js_parser/test_data/inline/ok/ts_infer_type_allowed.rast b/crates/biome_js_parser/test_data/inline/ok/ts_infer_type_allowed.rast index 018542ccc553..32b726174eda 100644 --- a/crates/biome_js_parser/test_data/inline/ok/ts_infer_type_allowed.rast +++ b/crates/biome_js_parser/test_data/inline/ok/ts_infer_type_allowed.rast @@ -2,5217 +2,13 @@ JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], - items: JsModuleItemList [ - TsTypeAliasDeclaration { - type_token: TYPE_KW@0..5 "type" [] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@5..9 "Args" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@9..10 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@10..11 "F" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@11..13 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@13..15 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@15..17 "F" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@17..25 "extends" [] [Whitespace(" ")], - extends_type: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@25..26 "(" [] [], - items: JsParameterList [ - JsRestParameter { - decorators: JsDecoratorList [], - dotdotdot_token: DOT3@26..29 "..." [] [], - binding: JsIdentifierBinding { - name_token: IDENT@29..33 "args" [] [], - }, - type_annotation: TsTypeAnnotation { - colon_token: COLON@33..35 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@35..41 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@41..42 "A" [] [], - }, - constraint: missing (optional), - }, - }, - }, - ], - r_paren_token: R_PAREN@42..44 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@44..47 "=>" [] [Whitespace(" ")], - return_type: TsVoidType { - void_token: VOID_KW@47..52 "void" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@52..54 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@54..56 "A" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@56..58 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@58..63 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@63..64 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@64..70 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@70..72 "A" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@72..74 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@74..76 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@76..84 "extends" [] [Whitespace(" ")], - extends_type: TsImportType { - typeof_token: missing (optional), - import_token: IMPORT_KW@84..90 "import" [] [], - l_paren_token: L_PAREN@90..91 "(" [] [], - argument_token: JS_STRING_LITERAL@91..97 "\"test\"" [] [], - r_paren_token: R_PAREN@97..98 ")" [] [], - qualifier_clause: TsImportTypeQualifier { - dot_token: DOT@98..99 "." [] [], - right: JsReferenceIdentifier { - value_token: IDENT@99..100 "C" [] [], - }, - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@100..101 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsInferType { - infer_token: INFER_KW@101..107 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@107..108 "P" [] [], - }, - constraint: missing (optional), - }, - ], - r_angle_token: R_ANGLE@108..110 ">" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@110..112 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@112..114 "P" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@114..116 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@116..121 "never" [] [], - }, - }, - semicolon_token: missing (optional), - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@121..127 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@127..129 "A" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@129..131 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@131..133 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@133..141 "extends" [] [Whitespace(" ")], - extends_type: TsTypeofType { - typeof_token: TYPEOF_KW@141..148 "typeof" [] [Whitespace(" ")], - expression_name: JsReferenceIdentifier { - value_token: IDENT@148..153 "Array" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@153..154 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsInferType { - infer_token: INFER_KW@154..160 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@160..161 "P" [] [], - }, - constraint: missing (optional), - }, - ], - r_angle_token: R_ANGLE@161..163 ">" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@163..165 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@165..167 "P" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@167..169 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@169..174 "never" [] [], - }, - }, - semicolon_token: missing (optional), - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@174..180 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@180..182 "A" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@182..184 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@184..186 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@186..194 "extends" [] [Whitespace(" ")], - extends_type: TsObjectType { - l_curly_token: L_CURLY@194..196 "{" [] [Whitespace(" ")], - members: TsTypeMemberList [ - TsMethodSignatureTypeMember { - name: JsLiteralMemberName { - value: IDENT@196..199 "set" [] [], - }, - optional_token: missing (optional), - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@199..200 "(" [] [], - items: JsParameterList [ - JsFormalParameter { - decorators: JsDecoratorList [], - binding: JsIdentifierBinding { - name_token: IDENT@200..201 "a" [] [], - }, - question_mark_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@201..203 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@203..209 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@209..210 "P" [] [], - }, - constraint: missing (optional), - }, - }, - initializer: missing (optional), - }, - ], - r_paren_token: R_PAREN@210..211 ")" [] [], - }, - return_type_annotation: TsReturnTypeAnnotation { - colon_token: COLON@211..213 ":" [] [Whitespace(" ")], - ty: TsNumberType { - number_token: NUMBER_KW@213..220 "number" [] [Whitespace(" ")], - }, - }, - separator_token: missing (optional), - }, - ], - r_curly_token: R_CURLY@220..222 "}" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@222..224 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@224..226 "P" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@226..228 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@228..233 "never" [] [], - }, - }, - semicolon_token: missing (optional), - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@233..239 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@239..241 "A" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@241..243 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@243..245 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@245..253 "extends" [] [Whitespace(" ")], - extends_type: TsObjectType { - l_curly_token: L_CURLY@253..255 "{" [] [Whitespace(" ")], - members: TsTypeMemberList [ - TsMethodSignatureTypeMember { - name: JsLiteralMemberName { - value: IDENT@255..258 "get" [] [], - }, - optional_token: missing (optional), - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@258..259 "(" [] [], - items: JsParameterList [], - r_paren_token: R_PAREN@259..260 ")" [] [], - }, - return_type_annotation: TsReturnTypeAnnotation { - colon_token: COLON@260..262 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@262..268 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@268..270 "P" [] [Whitespace(" ")], - }, - constraint: missing (optional), - }, - }, - separator_token: missing (optional), - }, - ], - r_curly_token: R_CURLY@270..272 "}" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@272..274 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@274..276 "P" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@276..278 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@278..283 "never" [] [], - }, - }, - semicolon_token: missing (optional), - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@283..289 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@289..291 "A" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@291..293 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@293..295 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@295..303 "extends" [] [Whitespace(" ")], - extends_type: TsObjectType { - l_curly_token: L_CURLY@303..305 "{" [] [Whitespace(" ")], - members: TsTypeMemberList [ - TsMethodSignatureTypeMember { - name: JsLiteralMemberName { - value: IDENT@305..311 "method" [] [], - }, - optional_token: missing (optional), - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@311..312 "(" [] [], - items: JsParameterList [ - TsThisParameter { - this_token: THIS_KW@312..316 "this" [] [], - type_annotation: TsTypeAnnotation { - colon_token: COLON@316..318 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@318..324 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@324..325 "P" [] [], - }, - constraint: missing (optional), - }, - }, - }, - ], - r_paren_token: R_PAREN@325..326 ")" [] [], - }, - return_type_annotation: TsReturnTypeAnnotation { - colon_token: COLON@326..328 ":" [] [Whitespace(" ")], - ty: TsNumberType { - number_token: NUMBER_KW@328..335 "number" [] [Whitespace(" ")], - }, - }, - separator_token: missing (optional), - }, - ], - r_curly_token: R_CURLY@335..337 "}" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@337..339 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@339..341 "P" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@341..343 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@343..348 "never" [] [], - }, - }, - semicolon_token: missing (optional), - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@348..354 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@354..360 "valid9" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@360..361 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@361..362 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@362..364 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@364..366 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@366..368 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@368..376 "extends" [] [Whitespace(" ")], - extends_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@376..381 "Array" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@381..382 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsInferType { - infer_token: INFER_KW@382..388 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@388..389 "R" [] [], - }, - constraint: missing (optional), - }, - ], - r_angle_token: R_ANGLE@389..391 ">" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@391..393 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@393..395 "R" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@395..397 ":" [] [Whitespace(" ")], - false_type: TsAnyType { - any_token: ANY_KW@397..400 "any" [] [], - }, - }, - semicolon_token: SEMICOLON@400..401 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@401..407 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@407..429 "ContentBetweenBrackets" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@429..430 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@430..431 "S" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@431..433 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@433..435 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@435..437 "S" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@437..445 "extends" [] [Whitespace(" ")], - extends_type: TsTemplateLiteralType { - l_tick_token: BACKTICK@445..446 "`" [] [], - elements: TsTemplateElementList [ - TsTemplateChunkElement { - template_chunk_token: TEMPLATE_CHUNK@446..447 "[" [] [], - }, - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@447..449 "${" [] [], - ty: TsInferType { - infer_token: INFER_KW@449..455 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@455..456 "T" [] [], - }, - constraint: missing (optional), - }, - r_curly_token: R_CURLY@456..457 "}" [] [], - }, - TsTemplateChunkElement { - template_chunk_token: TEMPLATE_CHUNK@457..458 "]" [] [], - }, - ], - r_tick_token: BACKTICK@458..460 "`" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@460..462 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@462..464 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@464..466 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@466..471 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@471..472 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@472..478 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@478..491 "WithSelectors" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@491..492 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@492..493 "S" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@493..495 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@495..497 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@497..499 "S" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@499..507 "extends" [] [Whitespace(" ")], - extends_type: TsObjectType { - l_curly_token: L_CURLY@507..509 "{" [] [Whitespace(" ")], - members: TsTypeMemberList [ - TsPropertySignatureTypeMember { - readonly_token: missing (optional), - name: JsLiteralMemberName { - value: IDENT@509..517 "getState" [] [], - }, - optional_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@517..519 ":" [] [Whitespace(" ")], - ty: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@519..520 "(" [] [], - items: JsParameterList [], - r_paren_token: R_PAREN@520..522 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@522..525 "=>" [] [Whitespace(" ")], - return_type: TsInferType { - infer_token: INFER_KW@525..531 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@531..533 "T" [] [Whitespace(" ")], - }, - constraint: missing (optional), - }, - }, - }, - separator_token: missing (optional), - }, - ], - r_curly_token: R_CURLY@533..534 "}" [] [], - }, - question_mark_token: QUESTION@534..541 "?" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - true_type: TsIntersectionType { - leading_separator_token: missing (optional), - types: TsIntersectionTypeElementList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@541..543 "S" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - AMP@543..545 "&" [] [Whitespace(" ")], - TsObjectType { - l_curly_token: L_CURLY@545..547 "{" [] [Whitespace(" ")], - members: TsTypeMemberList [ - TsPropertySignatureTypeMember { - readonly_token: missing (optional), - name: JsLiteralMemberName { - value: IDENT@547..550 "use" [] [], - }, - optional_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@550..552 ":" [] [Whitespace(" ")], - ty: TsMappedType { - l_curly_token: L_CURLY@552..554 "{" [] [Whitespace(" ")], - readonly_modifier: missing (optional), - l_brack_token: L_BRACK@554..555 "[" [] [], - property_name: TsTypeParameterName { - ident_token: IDENT@555..557 "K" [] [Whitespace(" ")], - }, - in_token: IN_KW@557..560 "in" [] [Whitespace(" ")], - keys_type: TsTypeOperatorType { - operator_token: KEYOF_KW@560..566 "keyof" [] [Whitespace(" ")], - ty: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@566..567 "T" [] [], - }, - type_arguments: missing (optional), - }, - }, - as_clause: missing (optional), - r_brack_token: R_BRACK@567..568 "]" [] [], - optional_modifier: missing (optional), - mapped_type: TsTypeAnnotation { - colon_token: COLON@568..570 ":" [] [Whitespace(" ")], - ty: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@570..571 "(" [] [], - items: JsParameterList [], - r_paren_token: R_PAREN@571..573 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@573..576 "=>" [] [Whitespace(" ")], - return_type: TsIndexedAccessType { - object_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@576..577 "T" [] [], - }, - type_arguments: missing (optional), - }, - l_brack_token: L_BRACK@577..578 "[" [] [], - index_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@578..579 "K" [] [], - }, - type_arguments: missing (optional), - }, - r_brack_token: R_BRACK@579..581 "]" [] [Whitespace(" ")], - }, - }, - }, - semicolon_token: missing (optional), - r_curly_token: R_CURLY@581..583 "}" [] [Whitespace(" ")], - }, - }, - separator_token: missing (optional), - }, - ], - r_curly_token: R_CURLY@583..584 "}" [] [], - }, - ], - }, - colon_token: COLON@584..591 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@591..596 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@596..597 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@597..603 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@603..605 "A" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@605..607 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@607..614 "MyType" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@614..622 "extends" [] [Whitespace(" ")], - extends_type: TsParenthesizedType { - l_paren_token: L_PAREN@622..623 "(" [] [], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@623..633 "OtherType" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@633..641 "extends" [] [Whitespace(" ")], - extends_type: TsInferType { - infer_token: INFER_KW@641..647 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@647..649 "T" [] [Whitespace(" ")], - }, - constraint: missing (optional), - }, - question_mark_token: QUESTION@649..651 "?" [] [Whitespace(" ")], - true_type: TsInferType { - infer_token: INFER_KW@651..657 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@657..659 "U" [] [Whitespace(" ")], - }, - constraint: missing (optional), - }, - colon_token: COLON@659..661 ":" [] [Whitespace(" ")], - false_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@661..671 "InnerFalse" [] [], - }, - type_arguments: missing (optional), - }, - }, - r_paren_token: R_PAREN@671..673 ")" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@673..675 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@675..685 "OuterTrue" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@685..687 ":" [] [Whitespace(" ")], - false_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@687..697 "OuterFalse" [] [], - }, - type_arguments: missing (optional), - }, - }, - semicolon_token: missing (optional), - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@697..703 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@703..707 "Join" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@707..708 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@708..710 "T" [] [Whitespace(" ")], - }, - constraint: TsTypeConstraintClause { - extends_token: EXTENDS_KW@710..718 "extends" [] [Whitespace(" ")], - ty: TsArrayType { - element_type: TsUnknownType { - unknown_token: UNKNOWN_KW@718..725 "unknown" [] [], - }, - l_brack_token: L_BRACK@725..726 "[" [] [], - r_brack_token: R_BRACK@726..727 "]" [] [], - }, - }, - default: missing (optional), - }, - COMMA@727..729 "," [] [Whitespace(" ")], - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@729..731 "D" [] [Whitespace(" ")], - }, - constraint: TsTypeConstraintClause { - extends_token: EXTENDS_KW@731..739 "extends" [] [Whitespace(" ")], - ty: TsStringType { - string_token: STRING_KW@739..745 "string" [] [], - }, - }, - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@745..747 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@747..748 "=" [] [], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@748..756 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@756..764 "extends" [] [Whitespace(" ")], - extends_type: TsTupleType { - l_brack_token: L_BRACK@764..765 "[" [] [], - elements: TsTupleTypeElementList [], - r_brack_token: R_BRACK@765..767 "]" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@767..769 "?" [] [Whitespace(" ")], - true_type: TsStringLiteralType { - literal_token: JS_STRING_LITERAL@769..772 "''" [] [Whitespace(" ")], - }, - colon_token: COLON@772..773 ":" [] [], - false_type: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@773..781 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@781..789 "extends" [] [Whitespace(" ")], - extends_type: TsTupleType { - l_brack_token: L_BRACK@789..790 "[" [] [], - elements: TsTupleTypeElementList [ - TsUnionType { - leading_separator_token: missing (optional), - types: TsUnionTypeVariantList [ - TsStringType { - string_token: STRING_KW@790..797 "string" [] [Whitespace(" ")], - }, - PIPE@797..799 "|" [] [Whitespace(" ")], - TsNumberType { - number_token: NUMBER_KW@799..806 "number" [] [Whitespace(" ")], - }, - PIPE@806..808 "|" [] [Whitespace(" ")], - TsBooleanType { - boolean_token: BOOLEAN_KW@808..816 "boolean" [] [Whitespace(" ")], - }, - PIPE@816..818 "|" [] [Whitespace(" ")], - TsBigintType { - bigint_token: BIGINT_KW@818..824 "bigint" [] [], - }, - ], - }, - ], - r_brack_token: R_BRACK@824..826 "]" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@826..828 "?" [] [Whitespace(" ")], - true_type: TsTemplateLiteralType { - l_tick_token: BACKTICK@828..829 "`" [] [], - elements: TsTemplateElementList [ - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@829..831 "${" [] [], - ty: TsIndexedAccessType { - object_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@831..832 "T" [] [], - }, - type_arguments: missing (optional), - }, - l_brack_token: L_BRACK@832..833 "[" [] [], - index_type: TsNumberLiteralType { - minus_token: missing (optional), - literal_token: JS_NUMBER_LITERAL@833..834 "0" [] [], - }, - r_brack_token: R_BRACK@834..835 "]" [] [], - }, - r_curly_token: R_CURLY@835..836 "}" [] [], - }, - ], - r_tick_token: BACKTICK@836..838 "`" [] [Whitespace(" ")], - }, - colon_token: COLON@838..839 ":" [] [], - false_type: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@839..847 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@847..855 "extends" [] [Whitespace(" ")], - extends_type: TsTupleType { - l_brack_token: L_BRACK@855..856 "[" [] [], - elements: TsTupleTypeElementList [ - TsUnionType { - leading_separator_token: missing (optional), - types: TsUnionTypeVariantList [ - TsStringType { - string_token: STRING_KW@856..863 "string" [] [Whitespace(" ")], - }, - PIPE@863..865 "|" [] [Whitespace(" ")], - TsNumberType { - number_token: NUMBER_KW@865..872 "number" [] [Whitespace(" ")], - }, - PIPE@872..874 "|" [] [Whitespace(" ")], - TsBooleanType { - boolean_token: BOOLEAN_KW@874..882 "boolean" [] [Whitespace(" ")], - }, - PIPE@882..884 "|" [] [Whitespace(" ")], - TsBigintType { - bigint_token: BIGINT_KW@884..890 "bigint" [] [], - }, - ], - }, - COMMA@890..892 "," [] [Whitespace(" ")], - TsRestTupleTypeElement { - dotdotdot_token: DOT3@892..895 "..." [] [], - ty: TsInferType { - infer_token: INFER_KW@895..901 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@901..902 "U" [] [], - }, - constraint: missing (optional), - }, - }, - ], - r_brack_token: R_BRACK@902..904 "]" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@904..906 "?" [] [Whitespace(" ")], - true_type: TsTemplateLiteralType { - l_tick_token: BACKTICK@906..907 "`" [] [], - elements: TsTemplateElementList [ - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@907..909 "${" [] [], - ty: TsIndexedAccessType { - object_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@909..910 "T" [] [], - }, - type_arguments: missing (optional), - }, - l_brack_token: L_BRACK@910..911 "[" [] [], - index_type: TsNumberLiteralType { - minus_token: missing (optional), - literal_token: JS_NUMBER_LITERAL@911..912 "0" [] [], - }, - r_brack_token: R_BRACK@912..913 "]" [] [], - }, - r_curly_token: R_CURLY@913..914 "}" [] [], - }, - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@914..916 "${" [] [], - ty: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@916..917 "D" [] [], - }, - type_arguments: missing (optional), - }, - r_curly_token: R_CURLY@917..918 "}" [] [], - }, - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@918..920 "${" [] [], - ty: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@920..924 "Join" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@924..925 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@925..926 "U" [] [], - }, - type_arguments: missing (optional), - }, - COMMA@926..928 "," [] [Whitespace(" ")], - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@928..929 "D" [] [], - }, - type_arguments: missing (optional), - }, - ], - r_angle_token: R_ANGLE@929..930 ">" [] [], - }, - }, - r_curly_token: R_CURLY@930..931 "}" [] [], - }, - ], - r_tick_token: BACKTICK@931..933 "`" [] [Whitespace(" ")], - }, - colon_token: COLON@933..934 ":" [] [], - false_type: TsStringType { - string_token: STRING_KW@934..946 "string" [Newline("\n"), Whitespace(" ")] [], - }, - }, - }, - }, - semicolon_token: SEMICOLON@946..947 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@947..953 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@953..962 "MatchPair" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@962..963 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@963..965 "S" [] [Whitespace(" ")], - }, - constraint: TsTypeConstraintClause { - extends_token: EXTENDS_KW@965..973 "extends" [] [Whitespace(" ")], - ty: TsStringType { - string_token: STRING_KW@973..979 "string" [] [], - }, - }, - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@979..981 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@981..983 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@983..985 "S" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@985..993 "extends" [] [Whitespace(" ")], - extends_type: TsTemplateLiteralType { - l_tick_token: BACKTICK@993..994 "`" [] [], - elements: TsTemplateElementList [ - TsTemplateChunkElement { - template_chunk_token: TEMPLATE_CHUNK@994..995 "[" [] [], - }, - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@995..997 "${" [] [], - ty: TsInferType { - infer_token: INFER_KW@997..1003 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1003..1004 "A" [] [], - }, - constraint: missing (optional), - }, - r_curly_token: R_CURLY@1004..1005 "}" [] [], - }, - TsTemplateChunkElement { - template_chunk_token: TEMPLATE_CHUNK@1005..1006 "," [] [], - }, - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@1006..1008 "${" [] [], - ty: TsInferType { - infer_token: INFER_KW@1008..1014 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1014..1015 "B" [] [], - }, - constraint: missing (optional), - }, - r_curly_token: R_CURLY@1015..1016 "}" [] [], - }, - TsTemplateChunkElement { - template_chunk_token: TEMPLATE_CHUNK@1016..1017 "]" [] [], - }, - ], - r_tick_token: BACKTICK@1017..1019 "`" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@1019..1021 "?" [] [Whitespace(" ")], - true_type: TsTupleType { - l_brack_token: L_BRACK@1021..1022 "[" [] [], - elements: TsTupleTypeElementList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1022..1023 "A" [] [], - }, - type_arguments: missing (optional), - }, - COMMA@1023..1025 "," [] [Whitespace(" ")], - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1025..1026 "B" [] [], - }, - type_arguments: missing (optional), - }, - ], - r_brack_token: R_BRACK@1026..1028 "]" [] [Whitespace(" ")], - }, - colon_token: COLON@1028..1030 ":" [] [Whitespace(" ")], - false_type: TsUnknownType { - unknown_token: UNKNOWN_KW@1030..1037 "unknown" [] [], - }, - }, - semicolon_token: SEMICOLON@1037..1038 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1038..1044 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1044..1059 "FirstTwoAndRest" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1059..1060 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1060..1062 "S" [] [Whitespace(" ")], - }, - constraint: TsTypeConstraintClause { - extends_token: EXTENDS_KW@1062..1070 "extends" [] [Whitespace(" ")], - ty: TsStringType { - string_token: STRING_KW@1070..1076 "string" [] [], - }, - }, - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1076..1078 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1078..1080 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1080..1082 "S" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1082..1090 "extends" [] [Whitespace(" ")], - extends_type: TsTemplateLiteralType { - l_tick_token: BACKTICK@1090..1091 "`" [] [], - elements: TsTemplateElementList [ - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@1091..1093 "${" [] [], - ty: TsInferType { - infer_token: INFER_KW@1093..1099 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1099..1100 "A" [] [], - }, - constraint: missing (optional), - }, - r_curly_token: R_CURLY@1100..1101 "}" [] [], - }, - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@1101..1103 "${" [] [], - ty: TsInferType { - infer_token: INFER_KW@1103..1109 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1109..1110 "B" [] [], - }, - constraint: missing (optional), - }, - r_curly_token: R_CURLY@1110..1111 "}" [] [], - }, - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@1111..1113 "${" [] [], - ty: TsInferType { - infer_token: INFER_KW@1113..1119 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1119..1120 "R" [] [], - }, - constraint: missing (optional), - }, - r_curly_token: R_CURLY@1120..1121 "}" [] [], - }, - ], - r_tick_token: BACKTICK@1121..1123 "`" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@1123..1125 "?" [] [Whitespace(" ")], - true_type: TsTupleType { - l_brack_token: L_BRACK@1125..1126 "[" [] [], - elements: TsTupleTypeElementList [ - TsTemplateLiteralType { - l_tick_token: BACKTICK@1126..1127 "`" [] [], - elements: TsTemplateElementList [ - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@1127..1129 "${" [] [], - ty: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1129..1130 "A" [] [], - }, - type_arguments: missing (optional), - }, - r_curly_token: R_CURLY@1130..1131 "}" [] [], - }, - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@1131..1133 "${" [] [], - ty: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1133..1134 "B" [] [], - }, - type_arguments: missing (optional), - }, - r_curly_token: R_CURLY@1134..1135 "}" [] [], - }, - ], - r_tick_token: BACKTICK@1135..1136 "`" [] [], - }, - COMMA@1136..1138 "," [] [Whitespace(" ")], - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1138..1139 "R" [] [], - }, - type_arguments: missing (optional), - }, - ], - r_brack_token: R_BRACK@1139..1141 "]" [] [Whitespace(" ")], - }, - colon_token: COLON@1141..1143 ":" [] [Whitespace(" ")], - false_type: TsUnknownType { - unknown_token: UNKNOWN_KW@1143..1150 "unknown" [] [], - }, - }, - semicolon_token: SEMICOLON@1150..1151 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1151..1157 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1157..1161 "Trim" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1161..1162 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1162..1164 "S" [] [Whitespace(" ")], - }, - constraint: TsTypeConstraintClause { - extends_token: EXTENDS_KW@1164..1172 "extends" [] [Whitespace(" ")], - ty: TsStringType { - string_token: STRING_KW@1172..1178 "string" [] [], - }, - }, - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1178..1180 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1180..1181 "=" [] [], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1181..1189 "S" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1189..1197 "extends" [] [Whitespace(" ")], - extends_type: TsTemplateLiteralType { - l_tick_token: BACKTICK@1197..1198 "`" [] [], - elements: TsTemplateElementList [ - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@1198..1200 "${" [] [], - ty: TsInferType { - infer_token: INFER_KW@1200..1206 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1206..1207 "T" [] [], - }, - constraint: missing (optional), - }, - r_curly_token: R_CURLY@1207..1208 "}" [] [], - }, - TsTemplateChunkElement { - template_chunk_token: TEMPLATE_CHUNK@1208..1209 " " [] [], - }, - ], - r_tick_token: BACKTICK@1209..1211 "`" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@1211..1213 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1213..1217 "Trim" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@1217..1218 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1218..1219 "T" [] [], - }, - type_arguments: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1219..1221 ">" [] [Whitespace(" ")], - }, - }, - colon_token: COLON@1221..1222 ":" [] [], - false_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1222..1229 "S" [Newline("\n"), Whitespace(" ")] [], - }, - type_arguments: missing (optional), - }, - }, - semicolon_token: SEMICOLON@1229..1230 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1230..1236 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1236..1239 "Foo" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1239..1240 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1240..1241 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1241..1243 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1243..1245 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1245..1247 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1247..1255 "extends" [] [Whitespace(" ")], - extends_type: TsTemplateLiteralType { - l_tick_token: BACKTICK@1255..1256 "`" [] [], - elements: TsTemplateElementList [ - TsTemplateChunkElement { - template_chunk_token: TEMPLATE_CHUNK@1256..1257 "*" [] [], - }, - TsTemplateElement { - dollar_curly_token: DOLLAR_CURLY@1257..1259 "${" [] [], - ty: TsInferType { - infer_token: INFER_KW@1259..1265 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1265..1266 "S" [] [], - }, - constraint: missing (optional), - }, - r_curly_token: R_CURLY@1266..1267 "}" [] [], - }, - TsTemplateChunkElement { - template_chunk_token: TEMPLATE_CHUNK@1267..1268 "*" [] [], - }, - ], - r_tick_token: BACKTICK@1268..1270 "`" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@1270..1272 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1272..1274 "S" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@1274..1276 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@1276..1281 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@1281..1282 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1282..1288 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1288..1296 "Unpacked" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1296..1297 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1297..1298 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1298..1300 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1300..1302 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1302..1304 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1304..1312 "extends" [] [Whitespace(" ")], - extends_type: TsArrayType { - element_type: TsParenthesizedType { - l_paren_token: L_PAREN@1312..1313 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@1313..1319 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1319..1320 "U" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@1320..1321 ")" [] [], - }, - l_brack_token: L_BRACK@1321..1322 "[" [] [], - r_brack_token: R_BRACK@1322..1324 "]" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@1324..1326 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1326..1328 "U" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@1328..1329 ":" [] [], - false_type: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1329..1336 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1336..1344 "extends" [] [Whitespace(" ")], - extends_type: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@1344..1345 "(" [] [], - items: JsParameterList [ - JsRestParameter { - decorators: JsDecoratorList [], - dotdotdot_token: DOT3@1345..1348 "..." [] [], - binding: JsIdentifierBinding { - name_token: IDENT@1348..1352 "args" [] [], - }, - type_annotation: TsTypeAnnotation { - colon_token: COLON@1352..1354 ":" [] [Whitespace(" ")], - ty: TsArrayType { - element_type: TsAnyType { - any_token: ANY_KW@1354..1357 "any" [] [], - }, - l_brack_token: L_BRACK@1357..1358 "[" [] [], - r_brack_token: R_BRACK@1358..1359 "]" [] [], - }, - }, - }, - ], - r_paren_token: R_PAREN@1359..1361 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@1361..1364 "=>" [] [Whitespace(" ")], - return_type: TsInferType { - infer_token: INFER_KW@1364..1370 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1370..1372 "U" [] [Whitespace(" ")], - }, - constraint: missing (optional), - }, - }, - question_mark_token: QUESTION@1372..1374 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1374..1376 "U" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@1376..1377 ":" [] [], - false_type: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1377..1384 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1384..1392 "extends" [] [Whitespace(" ")], - extends_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1392..1399 "Promise" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@1399..1400 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsInferType { - infer_token: INFER_KW@1400..1406 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1406..1407 "U" [] [], - }, - constraint: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1407..1409 ">" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@1409..1411 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1411..1413 "U" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@1413..1414 ":" [] [], - false_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1414..1420 "T" [Newline("\n"), Whitespace(" ")] [], - }, - type_arguments: missing (optional), - }, - }, - }, - }, - semicolon_token: SEMICOLON@1420..1421 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1421..1427 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1427..1439 "ArgumentType" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1439..1440 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1440..1442 "T" [] [Whitespace(" ")], - }, - constraint: TsTypeConstraintClause { - extends_token: EXTENDS_KW@1442..1450 "extends" [] [Whitespace(" ")], - ty: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@1450..1451 "(" [] [], - items: JsParameterList [ - JsFormalParameter { - decorators: JsDecoratorList [], - binding: JsIdentifierBinding { - name_token: IDENT@1451..1452 "x" [] [], - }, - question_mark_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1452..1454 ":" [] [Whitespace(" ")], - ty: TsAnyType { - any_token: ANY_KW@1454..1457 "any" [] [], - }, - }, - initializer: missing (optional), - }, - ], - r_paren_token: R_PAREN@1457..1459 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@1459..1462 "=>" [] [Whitespace(" ")], - return_type: TsAnyType { - any_token: ANY_KW@1462..1465 "any" [] [], - }, - }, - }, - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1465..1467 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1467..1469 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1469..1471 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1471..1479 "extends" [] [Whitespace(" ")], - extends_type: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@1479..1480 "(" [] [], - items: JsParameterList [ - JsFormalParameter { - decorators: JsDecoratorList [], - binding: JsIdentifierBinding { - name_token: IDENT@1480..1481 "a" [] [], - }, - question_mark_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1481..1483 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@1483..1489 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1489..1490 "A" [] [], - }, - constraint: missing (optional), - }, - }, - initializer: missing (optional), - }, - ], - r_paren_token: R_PAREN@1490..1492 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@1492..1495 "=>" [] [Whitespace(" ")], - return_type: TsAnyType { - any_token: ANY_KW@1495..1499 "any" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@1499..1501 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1501..1503 "A" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@1503..1505 ":" [] [Whitespace(" ")], - false_type: TsAnyType { - any_token: ANY_KW@1505..1508 "any" [] [], - }, - }, - semicolon_token: SEMICOLON@1508..1509 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1509..1515 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1515..1517 "X3" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1517..1518 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1518..1519 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1519..1521 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1521..1523 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1523..1525 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1525..1533 "extends" [] [Whitespace(" ")], - extends_type: TsObjectType { - l_curly_token: L_CURLY@1533..1535 "{" [] [Whitespace(" ")], - members: TsTypeMemberList [ - TsPropertySignatureTypeMember { - readonly_token: missing (optional), - name: JsLiteralMemberName { - value: IDENT@1535..1536 "a" [] [], - }, - optional_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1536..1538 ":" [] [Whitespace(" ")], - ty: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@1538..1539 "(" [] [], - items: JsParameterList [ - JsFormalParameter { - decorators: JsDecoratorList [], - binding: JsIdentifierBinding { - name_token: IDENT@1539..1540 "x" [] [], - }, - question_mark_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1540..1542 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@1542..1548 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1548..1549 "U" [] [], - }, - constraint: missing (optional), - }, - }, - initializer: missing (optional), - }, - ], - r_paren_token: R_PAREN@1549..1551 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@1551..1554 "=>" [] [Whitespace(" ")], - return_type: TsVoidType { - void_token: VOID_KW@1554..1558 "void" [] [], - }, - }, - }, - separator_token: COMMA@1558..1560 "," [] [Whitespace(" ")], - }, - TsPropertySignatureTypeMember { - readonly_token: missing (optional), - name: JsLiteralMemberName { - value: IDENT@1560..1561 "b" [] [], - }, - optional_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1561..1563 ":" [] [Whitespace(" ")], - ty: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@1563..1564 "(" [] [], - items: JsParameterList [ - JsFormalParameter { - decorators: JsDecoratorList [], - binding: JsIdentifierBinding { - name_token: IDENT@1564..1565 "x" [] [], - }, - question_mark_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1565..1567 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@1567..1573 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1573..1574 "U" [] [], - }, - constraint: missing (optional), - }, - }, - initializer: missing (optional), - }, - ], - r_paren_token: R_PAREN@1574..1576 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@1576..1579 "=>" [] [Whitespace(" ")], - return_type: TsVoidType { - void_token: VOID_KW@1579..1584 "void" [] [Whitespace(" ")], - }, - }, - }, - separator_token: missing (optional), - }, - ], - r_curly_token: R_CURLY@1584..1586 "}" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@1586..1588 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1588..1590 "U" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@1590..1592 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@1592..1597 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@1597..1598 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1598..1604 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1604..1606 "X1" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1606..1607 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1607..1609 "T" [] [Whitespace(" ")], - }, - constraint: TsTypeConstraintClause { - extends_token: EXTENDS_KW@1609..1617 "extends" [] [Whitespace(" ")], - ty: TsObjectType { - l_curly_token: L_CURLY@1617..1619 "{" [] [Whitespace(" ")], - members: TsTypeMemberList [ - TsPropertySignatureTypeMember { - readonly_token: missing (optional), - name: JsLiteralMemberName { - value: IDENT@1619..1620 "x" [] [], - }, - optional_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1620..1622 ":" [] [Whitespace(" ")], - ty: TsAnyType { - any_token: ANY_KW@1622..1625 "any" [] [], - }, - }, - separator_token: COMMA@1625..1627 "," [] [Whitespace(" ")], - }, - TsPropertySignatureTypeMember { - readonly_token: missing (optional), - name: JsLiteralMemberName { - value: IDENT@1627..1628 "y" [] [], - }, - optional_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1628..1630 ":" [] [Whitespace(" ")], - ty: TsAnyType { - any_token: ANY_KW@1630..1634 "any" [] [Whitespace(" ")], - }, - }, - separator_token: missing (optional), - }, - ], - r_curly_token: R_CURLY@1634..1635 "}" [] [], - }, - }, - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1635..1637 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1637..1639 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1639..1641 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1641..1649 "extends" [] [Whitespace(" ")], - extends_type: TsObjectType { - l_curly_token: L_CURLY@1649..1651 "{" [] [Whitespace(" ")], - members: TsTypeMemberList [ - TsPropertySignatureTypeMember { - readonly_token: missing (optional), - name: JsLiteralMemberName { - value: IDENT@1651..1652 "x" [] [], - }, - optional_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1652..1654 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@1654..1660 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1660..1661 "X" [] [], - }, - constraint: missing (optional), - }, - }, - separator_token: COMMA@1661..1663 "," [] [Whitespace(" ")], - }, - TsPropertySignatureTypeMember { - readonly_token: missing (optional), - name: JsLiteralMemberName { - value: IDENT@1663..1664 "y" [] [], - }, - optional_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@1664..1666 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@1666..1672 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1672..1674 "Y" [] [Whitespace(" ")], - }, - constraint: missing (optional), - }, - }, - separator_token: missing (optional), - }, - ], - r_curly_token: R_CURLY@1674..1676 "}" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@1676..1678 "?" [] [Whitespace(" ")], - true_type: TsTupleType { - l_brack_token: L_BRACK@1678..1679 "[" [] [], - elements: TsTupleTypeElementList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1679..1680 "X" [] [], - }, - type_arguments: missing (optional), - }, - COMMA@1680..1682 "," [] [Whitespace(" ")], - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1682..1683 "Y" [] [], - }, - type_arguments: missing (optional), - }, - ], - r_brack_token: R_BRACK@1683..1685 "]" [] [Whitespace(" ")], - }, - colon_token: COLON@1685..1687 ":" [] [Whitespace(" ")], - false_type: TsAnyType { - any_token: ANY_KW@1687..1690 "any" [] [], - }, - }, - semicolon_token: SEMICOLON@1690..1691 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1691..1697 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1697..1700 "T62" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1700..1701 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1701..1702 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1702..1704 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1704..1706 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1706..1708 "U" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1708..1716 "extends" [] [Whitespace(" ")], - extends_type: TsArrayType { - element_type: TsParenthesizedType { - l_paren_token: L_PAREN@1716..1717 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@1717..1723 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1723..1724 "U" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@1724..1725 ")" [] [], - }, - l_brack_token: L_BRACK@1725..1726 "[" [] [], - r_brack_token: R_BRACK@1726..1728 "]" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@1728..1730 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1730..1732 "U" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@1732..1734 ":" [] [Whitespace(" ")], - false_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1734..1735 "U" [] [], - }, - type_arguments: missing (optional), - }, - }, - semicolon_token: SEMICOLON@1735..1736 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1736..1742 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1742..1745 "T63" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1745..1746 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1746..1747 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1747..1749 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1749..1751 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1751..1753 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1753..1761 "extends" [] [Whitespace(" ")], - extends_type: TsParenthesizedType { - l_paren_token: L_PAREN@1761..1762 "(" [] [], - ty: TsConditionalType { - check_type: TsParenthesizedType { - l_paren_token: L_PAREN@1762..1763 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@1763..1769 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1769..1770 "A" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@1770..1772 ")" [] [Whitespace(" ")], - }, - extends_token: EXTENDS_KW@1772..1780 "extends" [] [Whitespace(" ")], - extends_type: TsInferType { - infer_token: INFER_KW@1780..1786 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1786..1788 "B" [] [Whitespace(" ")], - }, - constraint: missing (optional), - }, - question_mark_token: QUESTION@1788..1790 "?" [] [Whitespace(" ")], - true_type: TsInferType { - infer_token: INFER_KW@1790..1796 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1796..1798 "C" [] [Whitespace(" ")], - }, - constraint: missing (optional), - }, - colon_token: COLON@1798..1800 ":" [] [Whitespace(" ")], - false_type: TsInferType { - infer_token: INFER_KW@1800..1806 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1806..1807 "D" [] [], - }, - constraint: missing (optional), - }, - }, - r_paren_token: R_PAREN@1807..1809 ")" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@1809..1811 "?" [] [Whitespace(" ")], - true_type: TsStringType { - string_token: STRING_KW@1811..1818 "string" [] [Whitespace(" ")], - }, - colon_token: COLON@1818..1820 ":" [] [Whitespace(" ")], - false_type: TsNumberType { - number_token: NUMBER_KW@1820..1826 "number" [] [], - }, - }, - semicolon_token: SEMICOLON@1826..1827 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1827..1833 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1833..1836 "T75" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1836..1837 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1837..1838 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1838..1840 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1840..1842 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1842..1844 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1844..1852 "extends" [] [Whitespace(" ")], - extends_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1852..1855 "T74" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@1855..1856 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsInferType { - infer_token: INFER_KW@1856..1862 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1862..1863 "U" [] [], - }, - constraint: missing (optional), - }, - COMMA@1863..1865 "," [] [Whitespace(" ")], - TsInferType { - infer_token: INFER_KW@1865..1871 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@1871..1872 "U" [] [], - }, - constraint: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1872..1874 ">" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@1874..1876 "?" [] [Whitespace(" ")], - true_type: TsUnionType { - leading_separator_token: missing (optional), - types: TsUnionTypeVariantList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1876..1879 "T70" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@1879..1880 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1880..1881 "U" [] [], - }, - type_arguments: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1881..1883 ">" [] [Whitespace(" ")], - }, - }, - PIPE@1883..1885 "|" [] [Whitespace(" ")], - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1885..1888 "T72" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@1888..1889 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1889..1890 "U" [] [], - }, - type_arguments: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1890..1892 ">" [] [Whitespace(" ")], - }, - }, - PIPE@1892..1894 "|" [] [Whitespace(" ")], - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1894..1897 "T74" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@1897..1898 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1898..1899 "U" [] [], - }, - type_arguments: missing (optional), - }, - COMMA@1899..1901 "," [] [Whitespace(" ")], - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1901..1902 "U" [] [], - }, - type_arguments: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1902..1904 ">" [] [Whitespace(" ")], - }, - }, - ], - }, - colon_token: COLON@1904..1906 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@1906..1911 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@1911..1912 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@1912..1918 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@1918..1927 "Jsonified" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@1927..1928 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@1928..1929 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@1929..1931 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@1931..1933 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1933..1935 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1935..1943 "extends" [] [Whitespace(" ")], - extends_type: TsUnionType { - leading_separator_token: missing (optional), - types: TsUnionTypeVariantList [ - TsStringType { - string_token: STRING_KW@1943..1950 "string" [] [Whitespace(" ")], - }, - PIPE@1950..1952 "|" [] [Whitespace(" ")], - TsNumberType { - number_token: NUMBER_KW@1952..1959 "number" [] [Whitespace(" ")], - }, - PIPE@1959..1961 "|" [] [Whitespace(" ")], - TsBooleanType { - boolean_token: BOOLEAN_KW@1961..1969 "boolean" [] [Whitespace(" ")], - }, - PIPE@1969..1971 "|" [] [Whitespace(" ")], - TsNullLiteralType { - literal_token: NULL_KW@1971..1976 "null" [] [Whitespace(" ")], - }, - ], - }, - question_mark_token: QUESTION@1976..1978 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1978..1979 "T" [] [], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@1979..1986 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - false_type: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@1986..1988 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@1988..1996 "extends" [] [Whitespace(" ")], - extends_type: TsUnionType { - leading_separator_token: missing (optional), - types: TsUnionTypeVariantList [ - TsUndefinedType { - undefined_token: UNDEFINED_KW@1996..2006 "undefined" [] [Whitespace(" ")], - }, - PIPE@2006..2008 "|" [] [Whitespace(" ")], - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2008..2017 "Function" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - ], - }, - question_mark_token: QUESTION@2017..2019 "?" [] [Whitespace(" ")], - true_type: TsNeverType { - never_token: NEVER_KW@2019..2024 "never" [] [], - }, - colon_token: COLON@2024..2031 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - false_type: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2031..2033 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2033..2041 "extends" [] [Whitespace(" ")], - extends_type: TsObjectType { - l_curly_token: L_CURLY@2041..2043 "{" [] [Whitespace(" ")], - members: TsTypeMemberList [ - TsMethodSignatureTypeMember { - name: JsLiteralMemberName { - value: IDENT@2043..2049 "toJSON" [] [], - }, - optional_token: missing (optional), - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@2049..2050 "(" [] [], - items: JsParameterList [], - r_paren_token: R_PAREN@2050..2051 ")" [] [], - }, - return_type_annotation: TsReturnTypeAnnotation { - colon_token: COLON@2051..2053 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@2053..2059 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2059..2061 "R" [] [Whitespace(" ")], - }, - constraint: missing (optional), - }, - }, - separator_token: missing (optional), - }, - ], - r_curly_token: R_CURLY@2061..2063 "}" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@2063..2065 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2065..2066 "R" [] [], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@2066..2073 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - false_type: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2073..2075 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2075..2083 "extends" [] [Whitespace(" ")], - extends_type: TsNonPrimitiveType { - object_token: OBJECT_KW@2083..2090 "object" [] [Whitespace(" ")], - }, - question_mark_token: QUESTION@2090..2092 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2092..2107 "JsonifiedObject" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@2107..2108 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2108..2109 "T" [] [], - }, - type_arguments: missing (optional), - }, - ], - r_angle_token: R_ANGLE@2109..2110 ">" [] [], - }, - }, - colon_token: COLON@2110..2113 ":" [Newline("\n")] [Whitespace(" ")], - false_type: TsStringLiteralType { - literal_token: JS_STRING_LITERAL@2113..2127 "\"what is this\"" [] [], - }, - }, - }, - }, - }, - semicolon_token: SEMICOLON@2127..2128 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2128..2134 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2134..2137 "T1" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@2137..2139 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2139..2142 "F1" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2142..2150 "extends" [] [Whitespace(" ")], - extends_type: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@2150..2151 "(" [] [], - items: JsParameterList [ - JsRestParameter { - decorators: JsDecoratorList [], - dotdotdot_token: DOT3@2151..2154 "..." [] [], - binding: JsIdentifierBinding { - name_token: IDENT@2154..2158 "args" [] [], - }, - type_annotation: TsTypeAnnotation { - colon_token: COLON@2158..2160 ":" [] [Whitespace(" ")], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2160..2161 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@2161..2167 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2167..2168 "T" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@2168..2169 ")" [] [], - }, - }, - }, - ], - r_paren_token: R_PAREN@2169..2171 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@2171..2174 "=>" [] [Whitespace(" ")], - return_type: TsVoidType { - void_token: VOID_KW@2174..2179 "void" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@2179..2181 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2181..2183 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@2183..2185 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@2185..2190 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@2190..2191 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2191..2197 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2197..2200 "T2" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@2200..2202 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2202..2205 "F1" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2205..2213 "extends" [] [Whitespace(" ")], - extends_type: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@2213..2214 "(" [] [], - items: JsParameterList [ - JsFormalParameter { - decorators: JsDecoratorList [], - binding: JsIdentifierBinding { - name_token: IDENT@2214..2218 "args" [] [], - }, - question_mark_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@2218..2220 ":" [] [Whitespace(" ")], - ty: TsTupleType { - l_brack_token: L_BRACK@2220..2221 "[" [] [], - elements: TsTupleTypeElementList [ - TsRestTupleTypeElement { - dotdotdot_token: DOT3@2221..2224 "..." [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2224..2225 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@2225..2231 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2231..2232 "T" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@2232..2233 ")" [] [], - }, - }, - ], - r_brack_token: R_BRACK@2233..2234 "]" [] [], - }, - }, - initializer: missing (optional), - }, - ], - r_paren_token: R_PAREN@2234..2236 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@2236..2239 "=>" [] [Whitespace(" ")], - return_type: TsVoidType { - void_token: VOID_KW@2239..2244 "void" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@2244..2246 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2246..2248 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@2248..2250 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@2250..2255 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@2255..2256 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2256..2262 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2262..2264 "T3" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@2264..2265 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@2265..2266 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@2266..2268 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@2268..2270 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2270..2272 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2272..2280 "extends" [] [Whitespace(" ")], - extends_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2280..2288 "IsNumber" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@2288..2289 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsParenthesizedType { - l_paren_token: L_PAREN@2289..2290 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@2290..2296 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2296..2297 "N" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@2297..2298 ")" [] [], - }, - ], - r_angle_token: R_ANGLE@2298..2300 ">" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@2300..2302 "?" [] [Whitespace(" ")], - true_type: TsBooleanLiteralType { - literal: TRUE_KW@2302..2307 "true" [] [Whitespace(" ")], - }, - colon_token: COLON@2307..2309 ":" [] [Whitespace(" ")], - false_type: TsBooleanLiteralType { - literal: FALSE_KW@2309..2314 "false" [] [], - }, - }, - semicolon_token: SEMICOLON@2314..2315 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2315..2321 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2321..2324 "T4" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@2324..2326 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2326..2329 "F1" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2329..2337 "extends" [] [Whitespace(" ")], - extends_type: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@2337..2338 "(" [] [], - items: JsParameterList [ - JsRestParameter { - decorators: JsDecoratorList [], - dotdotdot_token: DOT3@2338..2341 "..." [] [], - binding: JsIdentifierBinding { - name_token: IDENT@2341..2345 "args" [] [], - }, - type_annotation: TsTypeAnnotation { - colon_token: COLON@2345..2347 ":" [] [Whitespace(" ")], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2347..2348 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2348..2349 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@2349..2355 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2355..2356 "T" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@2356..2357 ")" [] [], - }, - r_paren_token: R_PAREN@2357..2358 ")" [] [], - }, - }, - }, - ], - r_paren_token: R_PAREN@2358..2360 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@2360..2363 "=>" [] [Whitespace(" ")], - return_type: TsVoidType { - void_token: VOID_KW@2363..2368 "void" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@2368..2370 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2370..2372 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@2372..2374 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@2374..2379 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@2379..2380 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2380..2386 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2386..2389 "T5" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@2389..2391 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2391..2394 "F1" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2394..2402 "extends" [] [Whitespace(" ")], - extends_type: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@2402..2403 "(" [] [], - items: JsParameterList [ - JsFormalParameter { - decorators: JsDecoratorList [], - binding: JsIdentifierBinding { - name_token: IDENT@2403..2407 "args" [] [], - }, - question_mark_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@2407..2409 ":" [] [Whitespace(" ")], - ty: TsTupleType { - l_brack_token: L_BRACK@2409..2410 "[" [] [], - elements: TsTupleTypeElementList [ - TsRestTupleTypeElement { - dotdotdot_token: DOT3@2410..2413 "..." [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2413..2414 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2414..2415 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@2415..2421 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2421..2422 "T" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@2422..2423 ")" [] [], - }, - r_paren_token: R_PAREN@2423..2424 ")" [] [], - }, - }, - ], - r_brack_token: R_BRACK@2424..2425 "]" [] [], - }, - }, - initializer: missing (optional), - }, - ], - r_paren_token: R_PAREN@2425..2427 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@2427..2430 "=>" [] [Whitespace(" ")], - return_type: TsVoidType { - void_token: VOID_KW@2430..2435 "void" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@2435..2437 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2437..2439 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@2439..2441 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@2441..2446 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@2446..2447 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2447..2453 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2453..2455 "T6" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@2455..2456 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@2456..2457 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@2457..2459 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@2459..2461 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2461..2463 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2463..2471 "extends" [] [Whitespace(" ")], - extends_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2471..2479 "IsNumber" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@2479..2480 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsParenthesizedType { - l_paren_token: L_PAREN@2480..2481 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2481..2482 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@2482..2488 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2488..2489 "N" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@2489..2490 ")" [] [], - }, - r_paren_token: R_PAREN@2490..2491 ")" [] [], - }, - ], - r_angle_token: R_ANGLE@2491..2493 ">" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@2493..2495 "?" [] [Whitespace(" ")], - true_type: TsBooleanLiteralType { - literal: TRUE_KW@2495..2500 "true" [] [Whitespace(" ")], - }, - colon_token: COLON@2500..2502 ":" [] [Whitespace(" ")], - false_type: TsBooleanLiteralType { - literal: FALSE_KW@2502..2507 "false" [] [], - }, - }, - semicolon_token: SEMICOLON@2507..2508 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2508..2514 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2514..2517 "T7" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@2517..2519 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2519..2522 "F1" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2522..2530 "extends" [] [Whitespace(" ")], - extends_type: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@2530..2531 "(" [] [], - items: JsParameterList [ - JsRestParameter { - decorators: JsDecoratorList [], - dotdotdot_token: DOT3@2531..2534 "..." [] [], - binding: JsIdentifierBinding { - name_token: IDENT@2534..2538 "args" [] [], - }, - type_annotation: TsTypeAnnotation { - colon_token: COLON@2538..2540 ":" [] [Whitespace(" ")], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2540..2541 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2541..2542 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2542..2543 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2543..2544 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@2544..2550 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2550..2551 "T" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@2551..2552 ")" [] [], - }, - r_paren_token: R_PAREN@2552..2553 ")" [] [], - }, - r_paren_token: R_PAREN@2553..2554 ")" [] [], - }, - r_paren_token: R_PAREN@2554..2555 ")" [] [], - }, - }, - }, - ], - r_paren_token: R_PAREN@2555..2557 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@2557..2560 "=>" [] [Whitespace(" ")], - return_type: TsVoidType { - void_token: VOID_KW@2560..2565 "void" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@2565..2567 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2567..2569 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@2569..2571 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@2571..2576 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@2576..2577 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2577..2583 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2583..2586 "T8" [] [Whitespace(" ")], - }, - type_parameters: missing (optional), - eq_token: EQ@2586..2588 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2588..2591 "F1" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2591..2599 "extends" [] [Whitespace(" ")], - extends_type: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@2599..2600 "(" [] [], - items: JsParameterList [ - JsFormalParameter { - decorators: JsDecoratorList [], - binding: JsIdentifierBinding { - name_token: IDENT@2600..2604 "args" [] [], - }, - question_mark_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@2604..2606 ":" [] [Whitespace(" ")], - ty: TsTupleType { - l_brack_token: L_BRACK@2606..2607 "[" [] [], - elements: TsTupleTypeElementList [ - TsRestTupleTypeElement { - dotdotdot_token: DOT3@2607..2610 "..." [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2610..2611 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2611..2612 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2612..2613 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2613..2614 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@2614..2620 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2620..2621 "T" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@2621..2622 ")" [] [], - }, - r_paren_token: R_PAREN@2622..2623 ")" [] [], - }, - r_paren_token: R_PAREN@2623..2624 ")" [] [], - }, - r_paren_token: R_PAREN@2624..2625 ")" [] [], - }, - }, - ], - r_brack_token: R_BRACK@2625..2626 "]" [] [], - }, - }, - initializer: missing (optional), - }, - ], - r_paren_token: R_PAREN@2626..2628 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@2628..2631 "=>" [] [Whitespace(" ")], - return_type: TsVoidType { - void_token: VOID_KW@2631..2636 "void" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@2636..2638 "?" [] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2638..2640 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@2640..2642 ":" [] [Whitespace(" ")], - false_type: TsNeverType { - never_token: NEVER_KW@2642..2647 "never" [] [], - }, - }, - semicolon_token: SEMICOLON@2647..2648 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2648..2654 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2654..2656 "T9" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@2656..2657 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@2657..2658 "T" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@2658..2660 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@2660..2662 "=" [] [Whitespace(" ")], - ty: TsConditionalType { - check_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2662..2664 "T" [] [Whitespace(" ")], - }, - type_arguments: missing (optional), - }, - extends_token: EXTENDS_KW@2664..2672 "extends" [] [Whitespace(" ")], - extends_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2672..2680 "IsNumber" [] [], - }, - type_arguments: TsTypeArguments { - l_angle_token: L_ANGLE@2680..2681 "<" [] [], - ts_type_argument_list: TsTypeArgumentList [ - TsParenthesizedType { - l_paren_token: L_PAREN@2681..2682 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2682..2683 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2683..2684 "(" [] [], - ty: TsParenthesizedType { - l_paren_token: L_PAREN@2684..2685 "(" [] [], - ty: TsInferType { - infer_token: INFER_KW@2685..2691 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2691..2692 "N" [] [], - }, - constraint: missing (optional), - }, - r_paren_token: R_PAREN@2692..2693 ")" [] [], - }, - r_paren_token: R_PAREN@2693..2694 ")" [] [], - }, - r_paren_token: R_PAREN@2694..2695 ")" [] [], - }, - r_paren_token: R_PAREN@2695..2696 ")" [] [], - }, - ], - r_angle_token: R_ANGLE@2696..2698 ">" [] [Whitespace(" ")], - }, - }, - question_mark_token: QUESTION@2698..2700 "?" [] [Whitespace(" ")], - true_type: TsBooleanLiteralType { - literal: TRUE_KW@2700..2705 "true" [] [Whitespace(" ")], - }, - colon_token: COLON@2705..2707 ":" [] [Whitespace(" ")], - false_type: TsBooleanLiteralType { - literal: FALSE_KW@2707..2712 "false" [] [], - }, - }, - semicolon_token: SEMICOLON@2712..2713 ";" [] [], - }, - TsTypeAliasDeclaration { - type_token: TYPE_KW@2713..2719 "type" [Newline("\n")] [Whitespace(" ")], - binding_identifier: TsIdentifierBinding { - name_token: IDENT@2719..2726 "Prepend" [] [], - }, - type_parameters: TsTypeParameters { - l_angle_token: L_ANGLE@2726..2727 "<" [] [], - items: TsTypeParameterList [ - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@2727..2728 "E" [] [], - }, - constraint: missing (optional), - default: missing (optional), - }, - COMMA@2728..2730 "," [] [Whitespace(" ")], - TsTypeParameter { - modifiers: TsTypeParameterModifierList [], - name: TsTypeParameterName { - ident_token: IDENT@2730..2732 "T" [] [Whitespace(" ")], - }, - constraint: TsTypeConstraintClause { - extends_token: EXTENDS_KW@2732..2740 "extends" [] [Whitespace(" ")], - ty: TsArrayType { - element_type: TsAnyType { - any_token: ANY_KW@2740..2743 "any" [] [], - }, - l_brack_token: L_BRACK@2743..2744 "[" [] [], - r_brack_token: R_BRACK@2744..2745 "]" [] [], - }, - }, - default: missing (optional), - }, - ], - r_angle_token: R_ANGLE@2745..2747 ">" [] [Whitespace(" ")], - }, - eq_token: EQ@2747..2748 "=" [] [], - ty: TsConditionalType { - check_type: TsParenthesizedType { - l_paren_token: L_PAREN@2748..2754 "(" [Newline("\n"), Whitespace(" ")] [], - ty: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@2754..2755 "(" [] [], - items: JsParameterList [ - JsFormalParameter { - decorators: JsDecoratorList [], - binding: JsIdentifierBinding { - name_token: IDENT@2755..2759 "head" [] [], - }, - question_mark_token: missing (optional), - type_annotation: TsTypeAnnotation { - colon_token: COLON@2759..2761 ":" [] [Whitespace(" ")], - ty: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2761..2762 "E" [] [], - }, - type_arguments: missing (optional), - }, - }, - initializer: missing (optional), - }, - COMMA@2762..2764 "," [] [Whitespace(" ")], - JsRestParameter { - decorators: JsDecoratorList [], - dotdotdot_token: DOT3@2764..2767 "..." [] [], - binding: JsIdentifierBinding { - name_token: IDENT@2767..2771 "args" [] [], - }, - type_annotation: TsTypeAnnotation { - colon_token: COLON@2771..2773 ":" [] [Whitespace(" ")], - ty: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2773..2774 "T" [] [], - }, - type_arguments: missing (optional), - }, - }, - }, - ], - r_paren_token: R_PAREN@2774..2776 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@2776..2779 "=>" [] [Whitespace(" ")], - return_type: TsAnyType { - any_token: ANY_KW@2779..2782 "any" [] [], - }, - }, - r_paren_token: R_PAREN@2782..2784 ")" [] [Whitespace(" ")], - }, - extends_token: EXTENDS_KW@2784..2792 "extends" [] [Whitespace(" ")], - extends_type: TsParenthesizedType { - l_paren_token: L_PAREN@2792..2793 "(" [] [], - ty: TsFunctionType { - type_parameters: missing (optional), - parameters: JsParameters { - l_paren_token: L_PAREN@2793..2794 "(" [] [], - items: JsParameterList [ - JsRestParameter { - decorators: JsDecoratorList [], - dotdotdot_token: DOT3@2794..2797 "..." [] [], - binding: JsIdentifierBinding { - name_token: IDENT@2797..2801 "args" [] [], - }, - type_annotation: TsTypeAnnotation { - colon_token: COLON@2801..2803 ":" [] [Whitespace(" ")], - ty: TsInferType { - infer_token: INFER_KW@2803..2809 "infer" [] [Whitespace(" ")], - name: TsTypeParameterName { - ident_token: IDENT@2809..2810 "U" [] [], - }, - constraint: missing (optional), - }, - }, - }, - ], - r_paren_token: R_PAREN@2810..2812 ")" [] [Whitespace(" ")], - }, - fat_arrow_token: FAT_ARROW@2812..2815 "=>" [] [Whitespace(" ")], - return_type: TsAnyType { - any_token: ANY_KW@2815..2818 "any" [] [], - }, - }, - r_paren_token: R_PAREN@2818..2819 ")" [] [], - }, - question_mark_token: QUESTION@2819..2826 "?" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - true_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2826..2827 "U" [] [], - }, - type_arguments: missing (optional), - }, - colon_token: COLON@2827..2834 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - false_type: TsReferenceType { - name: JsReferenceIdentifier { - value_token: IDENT@2834..2835 "T" [] [], - }, - type_arguments: missing (optional), - }, - }, - semicolon_token: SEMICOLON@2835..2836 ";" [] [], - }, - ], - eof_token: EOF@2836..2837 "" [Newline("\n")] [], + items: JsModuleItemList [], + eof_token: EOF@0..0 "" [] [], } -0: JS_MODULE@0..2837 +0: JS_MODULE@0..0 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 - 3: JS_MODULE_ITEM_LIST@0..2836 - 0: TS_TYPE_ALIAS_DECLARATION@0..64 - 0: TYPE_KW@0..5 "type" [] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@5..9 - 0: IDENT@5..9 "Args" [] [] - 2: TS_TYPE_PARAMETERS@9..13 - 0: L_ANGLE@9..10 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@10..11 - 0: TS_TYPE_PARAMETER@10..11 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@10..10 - 1: TS_TYPE_PARAMETER_NAME@10..11 - 0: IDENT@10..11 "F" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@11..13 ">" [] [Whitespace(" ")] - 3: EQ@13..15 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@15..63 - 0: TS_REFERENCE_TYPE@15..17 - 0: JS_REFERENCE_IDENTIFIER@15..17 - 0: IDENT@15..17 "F" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@17..25 "extends" [] [Whitespace(" ")] - 2: TS_FUNCTION_TYPE@25..52 - 0: (empty) - 1: JS_PARAMETERS@25..44 - 0: L_PAREN@25..26 "(" [] [] - 1: JS_PARAMETER_LIST@26..42 - 0: JS_REST_PARAMETER@26..42 - 0: JS_DECORATOR_LIST@26..26 - 1: DOT3@26..29 "..." [] [] - 2: JS_IDENTIFIER_BINDING@29..33 - 0: IDENT@29..33 "args" [] [] - 3: TS_TYPE_ANNOTATION@33..42 - 0: COLON@33..35 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@35..42 - 0: INFER_KW@35..41 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@41..42 - 0: IDENT@41..42 "A" [] [] - 2: (empty) - 2: R_PAREN@42..44 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@44..47 "=>" [] [Whitespace(" ")] - 3: TS_VOID_TYPE@47..52 - 0: VOID_KW@47..52 "void" [] [Whitespace(" ")] - 3: QUESTION@52..54 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@54..56 - 0: JS_REFERENCE_IDENTIFIER@54..56 - 0: IDENT@54..56 "A" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@56..58 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@58..63 - 0: NEVER_KW@58..63 "never" [] [] - 5: SEMICOLON@63..64 ";" [] [] - 1: TS_TYPE_ALIAS_DECLARATION@64..121 - 0: TYPE_KW@64..70 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@70..72 - 0: IDENT@70..72 "A" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@72..74 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@74..121 - 0: TS_REFERENCE_TYPE@74..76 - 0: JS_REFERENCE_IDENTIFIER@74..76 - 0: IDENT@74..76 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@76..84 "extends" [] [Whitespace(" ")] - 2: TS_IMPORT_TYPE@84..110 - 0: (empty) - 1: IMPORT_KW@84..90 "import" [] [] - 2: L_PAREN@90..91 "(" [] [] - 3: JS_STRING_LITERAL@91..97 "\"test\"" [] [] - 4: R_PAREN@97..98 ")" [] [] - 5: TS_IMPORT_TYPE_QUALIFIER@98..100 - 0: DOT@98..99 "." [] [] - 1: JS_REFERENCE_IDENTIFIER@99..100 - 0: IDENT@99..100 "C" [] [] - 6: TS_TYPE_ARGUMENTS@100..110 - 0: L_ANGLE@100..101 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@101..108 - 0: TS_INFER_TYPE@101..108 - 0: INFER_KW@101..107 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@107..108 - 0: IDENT@107..108 "P" [] [] - 2: (empty) - 2: R_ANGLE@108..110 ">" [] [Whitespace(" ")] - 3: QUESTION@110..112 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@112..114 - 0: JS_REFERENCE_IDENTIFIER@112..114 - 0: IDENT@112..114 "P" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@114..116 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@116..121 - 0: NEVER_KW@116..121 "never" [] [] - 5: (empty) - 2: TS_TYPE_ALIAS_DECLARATION@121..174 - 0: TYPE_KW@121..127 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@127..129 - 0: IDENT@127..129 "A" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@129..131 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@131..174 - 0: TS_REFERENCE_TYPE@131..133 - 0: JS_REFERENCE_IDENTIFIER@131..133 - 0: IDENT@131..133 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@133..141 "extends" [] [Whitespace(" ")] - 2: TS_TYPEOF_TYPE@141..163 - 0: TYPEOF_KW@141..148 "typeof" [] [Whitespace(" ")] - 1: JS_REFERENCE_IDENTIFIER@148..153 - 0: IDENT@148..153 "Array" [] [] - 2: TS_TYPE_ARGUMENTS@153..163 - 0: L_ANGLE@153..154 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@154..161 - 0: TS_INFER_TYPE@154..161 - 0: INFER_KW@154..160 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@160..161 - 0: IDENT@160..161 "P" [] [] - 2: (empty) - 2: R_ANGLE@161..163 ">" [] [Whitespace(" ")] - 3: QUESTION@163..165 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@165..167 - 0: JS_REFERENCE_IDENTIFIER@165..167 - 0: IDENT@165..167 "P" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@167..169 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@169..174 - 0: NEVER_KW@169..174 "never" [] [] - 5: (empty) - 3: TS_TYPE_ALIAS_DECLARATION@174..233 - 0: TYPE_KW@174..180 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@180..182 - 0: IDENT@180..182 "A" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@182..184 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@184..233 - 0: TS_REFERENCE_TYPE@184..186 - 0: JS_REFERENCE_IDENTIFIER@184..186 - 0: IDENT@184..186 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@186..194 "extends" [] [Whitespace(" ")] - 2: TS_OBJECT_TYPE@194..222 - 0: L_CURLY@194..196 "{" [] [Whitespace(" ")] - 1: TS_TYPE_MEMBER_LIST@196..220 - 0: TS_METHOD_SIGNATURE_TYPE_MEMBER@196..220 - 0: JS_LITERAL_MEMBER_NAME@196..199 - 0: IDENT@196..199 "set" [] [] - 1: (empty) - 2: (empty) - 3: JS_PARAMETERS@199..211 - 0: L_PAREN@199..200 "(" [] [] - 1: JS_PARAMETER_LIST@200..210 - 0: JS_FORMAL_PARAMETER@200..210 - 0: JS_DECORATOR_LIST@200..200 - 1: JS_IDENTIFIER_BINDING@200..201 - 0: IDENT@200..201 "a" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@201..210 - 0: COLON@201..203 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@203..210 - 0: INFER_KW@203..209 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@209..210 - 0: IDENT@209..210 "P" [] [] - 2: (empty) - 4: (empty) - 2: R_PAREN@210..211 ")" [] [] - 4: TS_RETURN_TYPE_ANNOTATION@211..220 - 0: COLON@211..213 ":" [] [Whitespace(" ")] - 1: TS_NUMBER_TYPE@213..220 - 0: NUMBER_KW@213..220 "number" [] [Whitespace(" ")] - 5: (empty) - 2: R_CURLY@220..222 "}" [] [Whitespace(" ")] - 3: QUESTION@222..224 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@224..226 - 0: JS_REFERENCE_IDENTIFIER@224..226 - 0: IDENT@224..226 "P" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@226..228 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@228..233 - 0: NEVER_KW@228..233 "never" [] [] - 5: (empty) - 4: TS_TYPE_ALIAS_DECLARATION@233..283 - 0: TYPE_KW@233..239 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@239..241 - 0: IDENT@239..241 "A" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@241..243 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@243..283 - 0: TS_REFERENCE_TYPE@243..245 - 0: JS_REFERENCE_IDENTIFIER@243..245 - 0: IDENT@243..245 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@245..253 "extends" [] [Whitespace(" ")] - 2: TS_OBJECT_TYPE@253..272 - 0: L_CURLY@253..255 "{" [] [Whitespace(" ")] - 1: TS_TYPE_MEMBER_LIST@255..270 - 0: TS_METHOD_SIGNATURE_TYPE_MEMBER@255..270 - 0: JS_LITERAL_MEMBER_NAME@255..258 - 0: IDENT@255..258 "get" [] [] - 1: (empty) - 2: (empty) - 3: JS_PARAMETERS@258..260 - 0: L_PAREN@258..259 "(" [] [] - 1: JS_PARAMETER_LIST@259..259 - 2: R_PAREN@259..260 ")" [] [] - 4: TS_RETURN_TYPE_ANNOTATION@260..270 - 0: COLON@260..262 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@262..270 - 0: INFER_KW@262..268 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@268..270 - 0: IDENT@268..270 "P" [] [Whitespace(" ")] - 2: (empty) - 5: (empty) - 2: R_CURLY@270..272 "}" [] [Whitespace(" ")] - 3: QUESTION@272..274 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@274..276 - 0: JS_REFERENCE_IDENTIFIER@274..276 - 0: IDENT@274..276 "P" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@276..278 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@278..283 - 0: NEVER_KW@278..283 "never" [] [] - 5: (empty) - 5: TS_TYPE_ALIAS_DECLARATION@283..348 - 0: TYPE_KW@283..289 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@289..291 - 0: IDENT@289..291 "A" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@291..293 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@293..348 - 0: TS_REFERENCE_TYPE@293..295 - 0: JS_REFERENCE_IDENTIFIER@293..295 - 0: IDENT@293..295 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@295..303 "extends" [] [Whitespace(" ")] - 2: TS_OBJECT_TYPE@303..337 - 0: L_CURLY@303..305 "{" [] [Whitespace(" ")] - 1: TS_TYPE_MEMBER_LIST@305..335 - 0: TS_METHOD_SIGNATURE_TYPE_MEMBER@305..335 - 0: JS_LITERAL_MEMBER_NAME@305..311 - 0: IDENT@305..311 "method" [] [] - 1: (empty) - 2: (empty) - 3: JS_PARAMETERS@311..326 - 0: L_PAREN@311..312 "(" [] [] - 1: JS_PARAMETER_LIST@312..325 - 0: TS_THIS_PARAMETER@312..325 - 0: THIS_KW@312..316 "this" [] [] - 1: TS_TYPE_ANNOTATION@316..325 - 0: COLON@316..318 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@318..325 - 0: INFER_KW@318..324 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@324..325 - 0: IDENT@324..325 "P" [] [] - 2: (empty) - 2: R_PAREN@325..326 ")" [] [] - 4: TS_RETURN_TYPE_ANNOTATION@326..335 - 0: COLON@326..328 ":" [] [Whitespace(" ")] - 1: TS_NUMBER_TYPE@328..335 - 0: NUMBER_KW@328..335 "number" [] [Whitespace(" ")] - 5: (empty) - 2: R_CURLY@335..337 "}" [] [Whitespace(" ")] - 3: QUESTION@337..339 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@339..341 - 0: JS_REFERENCE_IDENTIFIER@339..341 - 0: IDENT@339..341 "P" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@341..343 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@343..348 - 0: NEVER_KW@343..348 "never" [] [] - 5: (empty) - 6: TS_TYPE_ALIAS_DECLARATION@348..401 - 0: TYPE_KW@348..354 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@354..360 - 0: IDENT@354..360 "valid9" [] [] - 2: TS_TYPE_PARAMETERS@360..364 - 0: L_ANGLE@360..361 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@361..362 - 0: TS_TYPE_PARAMETER@361..362 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@361..361 - 1: TS_TYPE_PARAMETER_NAME@361..362 - 0: IDENT@361..362 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@362..364 ">" [] [Whitespace(" ")] - 3: EQ@364..366 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@366..400 - 0: TS_REFERENCE_TYPE@366..368 - 0: JS_REFERENCE_IDENTIFIER@366..368 - 0: IDENT@366..368 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@368..376 "extends" [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@376..391 - 0: JS_REFERENCE_IDENTIFIER@376..381 - 0: IDENT@376..381 "Array" [] [] - 1: TS_TYPE_ARGUMENTS@381..391 - 0: L_ANGLE@381..382 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@382..389 - 0: TS_INFER_TYPE@382..389 - 0: INFER_KW@382..388 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@388..389 - 0: IDENT@388..389 "R" [] [] - 2: (empty) - 2: R_ANGLE@389..391 ">" [] [Whitespace(" ")] - 3: QUESTION@391..393 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@393..395 - 0: JS_REFERENCE_IDENTIFIER@393..395 - 0: IDENT@393..395 "R" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@395..397 ":" [] [Whitespace(" ")] - 6: TS_ANY_TYPE@397..400 - 0: ANY_KW@397..400 "any" [] [] - 5: SEMICOLON@400..401 ";" [] [] - 7: TS_TYPE_ALIAS_DECLARATION@401..472 - 0: TYPE_KW@401..407 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@407..429 - 0: IDENT@407..429 "ContentBetweenBrackets" [] [] - 2: TS_TYPE_PARAMETERS@429..433 - 0: L_ANGLE@429..430 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@430..431 - 0: TS_TYPE_PARAMETER@430..431 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@430..430 - 1: TS_TYPE_PARAMETER_NAME@430..431 - 0: IDENT@430..431 "S" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@431..433 ">" [] [Whitespace(" ")] - 3: EQ@433..435 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@435..471 - 0: TS_REFERENCE_TYPE@435..437 - 0: JS_REFERENCE_IDENTIFIER@435..437 - 0: IDENT@435..437 "S" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@437..445 "extends" [] [Whitespace(" ")] - 2: TS_TEMPLATE_LITERAL_TYPE@445..460 - 0: BACKTICK@445..446 "`" [] [] - 1: TS_TEMPLATE_ELEMENT_LIST@446..458 - 0: TS_TEMPLATE_CHUNK_ELEMENT@446..447 - 0: TEMPLATE_CHUNK@446..447 "[" [] [] - 1: TS_TEMPLATE_ELEMENT@447..457 - 0: DOLLAR_CURLY@447..449 "${" [] [] - 1: TS_INFER_TYPE@449..456 - 0: INFER_KW@449..455 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@455..456 - 0: IDENT@455..456 "T" [] [] - 2: (empty) - 2: R_CURLY@456..457 "}" [] [] - 2: TS_TEMPLATE_CHUNK_ELEMENT@457..458 - 0: TEMPLATE_CHUNK@457..458 "]" [] [] - 2: BACKTICK@458..460 "`" [] [Whitespace(" ")] - 3: QUESTION@460..462 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@462..464 - 0: JS_REFERENCE_IDENTIFIER@462..464 - 0: IDENT@462..464 "T" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@464..466 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@466..471 - 0: NEVER_KW@466..471 "never" [] [] - 5: SEMICOLON@471..472 ";" [] [] - 8: TS_TYPE_ALIAS_DECLARATION@472..597 - 0: TYPE_KW@472..478 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@478..491 - 0: IDENT@478..491 "WithSelectors" [] [] - 2: TS_TYPE_PARAMETERS@491..495 - 0: L_ANGLE@491..492 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@492..493 - 0: TS_TYPE_PARAMETER@492..493 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@492..492 - 1: TS_TYPE_PARAMETER_NAME@492..493 - 0: IDENT@492..493 "S" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@493..495 ">" [] [Whitespace(" ")] - 3: EQ@495..497 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@497..596 - 0: TS_REFERENCE_TYPE@497..499 - 0: JS_REFERENCE_IDENTIFIER@497..499 - 0: IDENT@497..499 "S" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@499..507 "extends" [] [Whitespace(" ")] - 2: TS_OBJECT_TYPE@507..534 - 0: L_CURLY@507..509 "{" [] [Whitespace(" ")] - 1: TS_TYPE_MEMBER_LIST@509..533 - 0: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@509..533 - 0: (empty) - 1: JS_LITERAL_MEMBER_NAME@509..517 - 0: IDENT@509..517 "getState" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@517..533 - 0: COLON@517..519 ":" [] [Whitespace(" ")] - 1: TS_FUNCTION_TYPE@519..533 - 0: (empty) - 1: JS_PARAMETERS@519..522 - 0: L_PAREN@519..520 "(" [] [] - 1: JS_PARAMETER_LIST@520..520 - 2: R_PAREN@520..522 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@522..525 "=>" [] [Whitespace(" ")] - 3: TS_INFER_TYPE@525..533 - 0: INFER_KW@525..531 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@531..533 - 0: IDENT@531..533 "T" [] [Whitespace(" ")] - 2: (empty) - 4: (empty) - 2: R_CURLY@533..534 "}" [] [] - 3: QUESTION@534..541 "?" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 4: TS_INTERSECTION_TYPE@541..584 - 0: (empty) - 1: TS_INTERSECTION_TYPE_ELEMENT_LIST@541..584 - 0: TS_REFERENCE_TYPE@541..543 - 0: JS_REFERENCE_IDENTIFIER@541..543 - 0: IDENT@541..543 "S" [] [Whitespace(" ")] - 1: (empty) - 1: AMP@543..545 "&" [] [Whitespace(" ")] - 2: TS_OBJECT_TYPE@545..584 - 0: L_CURLY@545..547 "{" [] [Whitespace(" ")] - 1: TS_TYPE_MEMBER_LIST@547..583 - 0: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@547..583 - 0: (empty) - 1: JS_LITERAL_MEMBER_NAME@547..550 - 0: IDENT@547..550 "use" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@550..583 - 0: COLON@550..552 ":" [] [Whitespace(" ")] - 1: TS_MAPPED_TYPE@552..583 - 0: L_CURLY@552..554 "{" [] [Whitespace(" ")] - 1: (empty) - 2: L_BRACK@554..555 "[" [] [] - 3: TS_TYPE_PARAMETER_NAME@555..557 - 0: IDENT@555..557 "K" [] [Whitespace(" ")] - 4: IN_KW@557..560 "in" [] [Whitespace(" ")] - 5: TS_TYPE_OPERATOR_TYPE@560..567 - 0: KEYOF_KW@560..566 "keyof" [] [Whitespace(" ")] - 1: TS_REFERENCE_TYPE@566..567 - 0: JS_REFERENCE_IDENTIFIER@566..567 - 0: IDENT@566..567 "T" [] [] - 1: (empty) - 6: (empty) - 7: R_BRACK@567..568 "]" [] [] - 8: (empty) - 9: TS_TYPE_ANNOTATION@568..581 - 0: COLON@568..570 ":" [] [Whitespace(" ")] - 1: TS_FUNCTION_TYPE@570..581 - 0: (empty) - 1: JS_PARAMETERS@570..573 - 0: L_PAREN@570..571 "(" [] [] - 1: JS_PARAMETER_LIST@571..571 - 2: R_PAREN@571..573 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@573..576 "=>" [] [Whitespace(" ")] - 3: TS_INDEXED_ACCESS_TYPE@576..581 - 0: TS_REFERENCE_TYPE@576..577 - 0: JS_REFERENCE_IDENTIFIER@576..577 - 0: IDENT@576..577 "T" [] [] - 1: (empty) - 1: L_BRACK@577..578 "[" [] [] - 2: TS_REFERENCE_TYPE@578..579 - 0: JS_REFERENCE_IDENTIFIER@578..579 - 0: IDENT@578..579 "K" [] [] - 1: (empty) - 3: R_BRACK@579..581 "]" [] [Whitespace(" ")] - 10: (empty) - 11: R_CURLY@581..583 "}" [] [Whitespace(" ")] - 4: (empty) - 2: R_CURLY@583..584 "}" [] [] - 5: COLON@584..591 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 6: TS_NEVER_TYPE@591..596 - 0: NEVER_KW@591..596 "never" [] [] - 5: SEMICOLON@596..597 ";" [] [] - 9: TS_TYPE_ALIAS_DECLARATION@597..697 - 0: TYPE_KW@597..603 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@603..605 - 0: IDENT@603..605 "A" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@605..607 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@607..697 - 0: TS_REFERENCE_TYPE@607..614 - 0: JS_REFERENCE_IDENTIFIER@607..614 - 0: IDENT@607..614 "MyType" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@614..622 "extends" [] [Whitespace(" ")] - 2: TS_PARENTHESIZED_TYPE@622..673 - 0: L_PAREN@622..623 "(" [] [] - 1: TS_CONDITIONAL_TYPE@623..671 - 0: TS_REFERENCE_TYPE@623..633 - 0: JS_REFERENCE_IDENTIFIER@623..633 - 0: IDENT@623..633 "OtherType" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@633..641 "extends" [] [Whitespace(" ")] - 2: TS_INFER_TYPE@641..649 - 0: INFER_KW@641..647 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@647..649 - 0: IDENT@647..649 "T" [] [Whitespace(" ")] - 2: (empty) - 3: QUESTION@649..651 "?" [] [Whitespace(" ")] - 4: TS_INFER_TYPE@651..659 - 0: INFER_KW@651..657 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@657..659 - 0: IDENT@657..659 "U" [] [Whitespace(" ")] - 2: (empty) - 5: COLON@659..661 ":" [] [Whitespace(" ")] - 6: TS_REFERENCE_TYPE@661..671 - 0: JS_REFERENCE_IDENTIFIER@661..671 - 0: IDENT@661..671 "InnerFalse" [] [] - 1: (empty) - 2: R_PAREN@671..673 ")" [] [Whitespace(" ")] - 3: QUESTION@673..675 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@675..685 - 0: JS_REFERENCE_IDENTIFIER@675..685 - 0: IDENT@675..685 "OuterTrue" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@685..687 ":" [] [Whitespace(" ")] - 6: TS_REFERENCE_TYPE@687..697 - 0: JS_REFERENCE_IDENTIFIER@687..697 - 0: IDENT@687..697 "OuterFalse" [] [] - 1: (empty) - 5: (empty) - 10: TS_TYPE_ALIAS_DECLARATION@697..947 - 0: TYPE_KW@697..703 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@703..707 - 0: IDENT@703..707 "Join" [] [] - 2: TS_TYPE_PARAMETERS@707..747 - 0: L_ANGLE@707..708 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@708..745 - 0: TS_TYPE_PARAMETER@708..727 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@708..708 - 1: TS_TYPE_PARAMETER_NAME@708..710 - 0: IDENT@708..710 "T" [] [Whitespace(" ")] - 2: TS_TYPE_CONSTRAINT_CLAUSE@710..727 - 0: EXTENDS_KW@710..718 "extends" [] [Whitespace(" ")] - 1: TS_ARRAY_TYPE@718..727 - 0: TS_UNKNOWN_TYPE@718..725 - 0: UNKNOWN_KW@718..725 "unknown" [] [] - 1: L_BRACK@725..726 "[" [] [] - 2: R_BRACK@726..727 "]" [] [] - 3: (empty) - 1: COMMA@727..729 "," [] [Whitespace(" ")] - 2: TS_TYPE_PARAMETER@729..745 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@729..729 - 1: TS_TYPE_PARAMETER_NAME@729..731 - 0: IDENT@729..731 "D" [] [Whitespace(" ")] - 2: TS_TYPE_CONSTRAINT_CLAUSE@731..745 - 0: EXTENDS_KW@731..739 "extends" [] [Whitespace(" ")] - 1: TS_STRING_TYPE@739..745 - 0: STRING_KW@739..745 "string" [] [] - 3: (empty) - 2: R_ANGLE@745..747 ">" [] [Whitespace(" ")] - 3: EQ@747..748 "=" [] [] - 4: TS_CONDITIONAL_TYPE@748..946 - 0: TS_REFERENCE_TYPE@748..756 - 0: JS_REFERENCE_IDENTIFIER@748..756 - 0: IDENT@748..756 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@756..764 "extends" [] [Whitespace(" ")] - 2: TS_TUPLE_TYPE@764..767 - 0: L_BRACK@764..765 "[" [] [] - 1: TS_TUPLE_TYPE_ELEMENT_LIST@765..765 - 2: R_BRACK@765..767 "]" [] [Whitespace(" ")] - 3: QUESTION@767..769 "?" [] [Whitespace(" ")] - 4: TS_STRING_LITERAL_TYPE@769..772 - 0: JS_STRING_LITERAL@769..772 "''" [] [Whitespace(" ")] - 5: COLON@772..773 ":" [] [] - 6: TS_CONDITIONAL_TYPE@773..946 - 0: TS_REFERENCE_TYPE@773..781 - 0: JS_REFERENCE_IDENTIFIER@773..781 - 0: IDENT@773..781 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@781..789 "extends" [] [Whitespace(" ")] - 2: TS_TUPLE_TYPE@789..826 - 0: L_BRACK@789..790 "[" [] [] - 1: TS_TUPLE_TYPE_ELEMENT_LIST@790..824 - 0: TS_UNION_TYPE@790..824 - 0: (empty) - 1: TS_UNION_TYPE_VARIANT_LIST@790..824 - 0: TS_STRING_TYPE@790..797 - 0: STRING_KW@790..797 "string" [] [Whitespace(" ")] - 1: PIPE@797..799 "|" [] [Whitespace(" ")] - 2: TS_NUMBER_TYPE@799..806 - 0: NUMBER_KW@799..806 "number" [] [Whitespace(" ")] - 3: PIPE@806..808 "|" [] [Whitespace(" ")] - 4: TS_BOOLEAN_TYPE@808..816 - 0: BOOLEAN_KW@808..816 "boolean" [] [Whitespace(" ")] - 5: PIPE@816..818 "|" [] [Whitespace(" ")] - 6: TS_BIGINT_TYPE@818..824 - 0: BIGINT_KW@818..824 "bigint" [] [] - 2: R_BRACK@824..826 "]" [] [Whitespace(" ")] - 3: QUESTION@826..828 "?" [] [Whitespace(" ")] - 4: TS_TEMPLATE_LITERAL_TYPE@828..838 - 0: BACKTICK@828..829 "`" [] [] - 1: TS_TEMPLATE_ELEMENT_LIST@829..836 - 0: TS_TEMPLATE_ELEMENT@829..836 - 0: DOLLAR_CURLY@829..831 "${" [] [] - 1: TS_INDEXED_ACCESS_TYPE@831..835 - 0: TS_REFERENCE_TYPE@831..832 - 0: JS_REFERENCE_IDENTIFIER@831..832 - 0: IDENT@831..832 "T" [] [] - 1: (empty) - 1: L_BRACK@832..833 "[" [] [] - 2: TS_NUMBER_LITERAL_TYPE@833..834 - 0: (empty) - 1: JS_NUMBER_LITERAL@833..834 "0" [] [] - 3: R_BRACK@834..835 "]" [] [] - 2: R_CURLY@835..836 "}" [] [] - 2: BACKTICK@836..838 "`" [] [Whitespace(" ")] - 5: COLON@838..839 ":" [] [] - 6: TS_CONDITIONAL_TYPE@839..946 - 0: TS_REFERENCE_TYPE@839..847 - 0: JS_REFERENCE_IDENTIFIER@839..847 - 0: IDENT@839..847 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@847..855 "extends" [] [Whitespace(" ")] - 2: TS_TUPLE_TYPE@855..904 - 0: L_BRACK@855..856 "[" [] [] - 1: TS_TUPLE_TYPE_ELEMENT_LIST@856..902 - 0: TS_UNION_TYPE@856..890 - 0: (empty) - 1: TS_UNION_TYPE_VARIANT_LIST@856..890 - 0: TS_STRING_TYPE@856..863 - 0: STRING_KW@856..863 "string" [] [Whitespace(" ")] - 1: PIPE@863..865 "|" [] [Whitespace(" ")] - 2: TS_NUMBER_TYPE@865..872 - 0: NUMBER_KW@865..872 "number" [] [Whitespace(" ")] - 3: PIPE@872..874 "|" [] [Whitespace(" ")] - 4: TS_BOOLEAN_TYPE@874..882 - 0: BOOLEAN_KW@874..882 "boolean" [] [Whitespace(" ")] - 5: PIPE@882..884 "|" [] [Whitespace(" ")] - 6: TS_BIGINT_TYPE@884..890 - 0: BIGINT_KW@884..890 "bigint" [] [] - 1: COMMA@890..892 "," [] [Whitespace(" ")] - 2: TS_REST_TUPLE_TYPE_ELEMENT@892..902 - 0: DOT3@892..895 "..." [] [] - 1: TS_INFER_TYPE@895..902 - 0: INFER_KW@895..901 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@901..902 - 0: IDENT@901..902 "U" [] [] - 2: (empty) - 2: R_BRACK@902..904 "]" [] [Whitespace(" ")] - 3: QUESTION@904..906 "?" [] [Whitespace(" ")] - 4: TS_TEMPLATE_LITERAL_TYPE@906..933 - 0: BACKTICK@906..907 "`" [] [] - 1: TS_TEMPLATE_ELEMENT_LIST@907..931 - 0: TS_TEMPLATE_ELEMENT@907..914 - 0: DOLLAR_CURLY@907..909 "${" [] [] - 1: TS_INDEXED_ACCESS_TYPE@909..913 - 0: TS_REFERENCE_TYPE@909..910 - 0: JS_REFERENCE_IDENTIFIER@909..910 - 0: IDENT@909..910 "T" [] [] - 1: (empty) - 1: L_BRACK@910..911 "[" [] [] - 2: TS_NUMBER_LITERAL_TYPE@911..912 - 0: (empty) - 1: JS_NUMBER_LITERAL@911..912 "0" [] [] - 3: R_BRACK@912..913 "]" [] [] - 2: R_CURLY@913..914 "}" [] [] - 1: TS_TEMPLATE_ELEMENT@914..918 - 0: DOLLAR_CURLY@914..916 "${" [] [] - 1: TS_REFERENCE_TYPE@916..917 - 0: JS_REFERENCE_IDENTIFIER@916..917 - 0: IDENT@916..917 "D" [] [] - 1: (empty) - 2: R_CURLY@917..918 "}" [] [] - 2: TS_TEMPLATE_ELEMENT@918..931 - 0: DOLLAR_CURLY@918..920 "${" [] [] - 1: TS_REFERENCE_TYPE@920..930 - 0: JS_REFERENCE_IDENTIFIER@920..924 - 0: IDENT@920..924 "Join" [] [] - 1: TS_TYPE_ARGUMENTS@924..930 - 0: L_ANGLE@924..925 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@925..929 - 0: TS_REFERENCE_TYPE@925..926 - 0: JS_REFERENCE_IDENTIFIER@925..926 - 0: IDENT@925..926 "U" [] [] - 1: (empty) - 1: COMMA@926..928 "," [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@928..929 - 0: JS_REFERENCE_IDENTIFIER@928..929 - 0: IDENT@928..929 "D" [] [] - 1: (empty) - 2: R_ANGLE@929..930 ">" [] [] - 2: R_CURLY@930..931 "}" [] [] - 2: BACKTICK@931..933 "`" [] [Whitespace(" ")] - 5: COLON@933..934 ":" [] [] - 6: TS_STRING_TYPE@934..946 - 0: STRING_KW@934..946 "string" [Newline("\n"), Whitespace(" ")] [] - 5: SEMICOLON@946..947 ";" [] [] - 11: TS_TYPE_ALIAS_DECLARATION@947..1038 - 0: TYPE_KW@947..953 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@953..962 - 0: IDENT@953..962 "MatchPair" [] [] - 2: TS_TYPE_PARAMETERS@962..981 - 0: L_ANGLE@962..963 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@963..979 - 0: TS_TYPE_PARAMETER@963..979 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@963..963 - 1: TS_TYPE_PARAMETER_NAME@963..965 - 0: IDENT@963..965 "S" [] [Whitespace(" ")] - 2: TS_TYPE_CONSTRAINT_CLAUSE@965..979 - 0: EXTENDS_KW@965..973 "extends" [] [Whitespace(" ")] - 1: TS_STRING_TYPE@973..979 - 0: STRING_KW@973..979 "string" [] [] - 3: (empty) - 2: R_ANGLE@979..981 ">" [] [Whitespace(" ")] - 3: EQ@981..983 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@983..1037 - 0: TS_REFERENCE_TYPE@983..985 - 0: JS_REFERENCE_IDENTIFIER@983..985 - 0: IDENT@983..985 "S" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@985..993 "extends" [] [Whitespace(" ")] - 2: TS_TEMPLATE_LITERAL_TYPE@993..1019 - 0: BACKTICK@993..994 "`" [] [] - 1: TS_TEMPLATE_ELEMENT_LIST@994..1017 - 0: TS_TEMPLATE_CHUNK_ELEMENT@994..995 - 0: TEMPLATE_CHUNK@994..995 "[" [] [] - 1: TS_TEMPLATE_ELEMENT@995..1005 - 0: DOLLAR_CURLY@995..997 "${" [] [] - 1: TS_INFER_TYPE@997..1004 - 0: INFER_KW@997..1003 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1003..1004 - 0: IDENT@1003..1004 "A" [] [] - 2: (empty) - 2: R_CURLY@1004..1005 "}" [] [] - 2: TS_TEMPLATE_CHUNK_ELEMENT@1005..1006 - 0: TEMPLATE_CHUNK@1005..1006 "," [] [] - 3: TS_TEMPLATE_ELEMENT@1006..1016 - 0: DOLLAR_CURLY@1006..1008 "${" [] [] - 1: TS_INFER_TYPE@1008..1015 - 0: INFER_KW@1008..1014 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1014..1015 - 0: IDENT@1014..1015 "B" [] [] - 2: (empty) - 2: R_CURLY@1015..1016 "}" [] [] - 4: TS_TEMPLATE_CHUNK_ELEMENT@1016..1017 - 0: TEMPLATE_CHUNK@1016..1017 "]" [] [] - 2: BACKTICK@1017..1019 "`" [] [Whitespace(" ")] - 3: QUESTION@1019..1021 "?" [] [Whitespace(" ")] - 4: TS_TUPLE_TYPE@1021..1028 - 0: L_BRACK@1021..1022 "[" [] [] - 1: TS_TUPLE_TYPE_ELEMENT_LIST@1022..1026 - 0: TS_REFERENCE_TYPE@1022..1023 - 0: JS_REFERENCE_IDENTIFIER@1022..1023 - 0: IDENT@1022..1023 "A" [] [] - 1: (empty) - 1: COMMA@1023..1025 "," [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@1025..1026 - 0: JS_REFERENCE_IDENTIFIER@1025..1026 - 0: IDENT@1025..1026 "B" [] [] - 1: (empty) - 2: R_BRACK@1026..1028 "]" [] [Whitespace(" ")] - 5: COLON@1028..1030 ":" [] [Whitespace(" ")] - 6: TS_UNKNOWN_TYPE@1030..1037 - 0: UNKNOWN_KW@1030..1037 "unknown" [] [] - 5: SEMICOLON@1037..1038 ";" [] [] - 12: TS_TYPE_ALIAS_DECLARATION@1038..1151 - 0: TYPE_KW@1038..1044 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1044..1059 - 0: IDENT@1044..1059 "FirstTwoAndRest" [] [] - 2: TS_TYPE_PARAMETERS@1059..1078 - 0: L_ANGLE@1059..1060 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1060..1076 - 0: TS_TYPE_PARAMETER@1060..1076 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1060..1060 - 1: TS_TYPE_PARAMETER_NAME@1060..1062 - 0: IDENT@1060..1062 "S" [] [Whitespace(" ")] - 2: TS_TYPE_CONSTRAINT_CLAUSE@1062..1076 - 0: EXTENDS_KW@1062..1070 "extends" [] [Whitespace(" ")] - 1: TS_STRING_TYPE@1070..1076 - 0: STRING_KW@1070..1076 "string" [] [] - 3: (empty) - 2: R_ANGLE@1076..1078 ">" [] [Whitespace(" ")] - 3: EQ@1078..1080 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1080..1150 - 0: TS_REFERENCE_TYPE@1080..1082 - 0: JS_REFERENCE_IDENTIFIER@1080..1082 - 0: IDENT@1080..1082 "S" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1082..1090 "extends" [] [Whitespace(" ")] - 2: TS_TEMPLATE_LITERAL_TYPE@1090..1123 - 0: BACKTICK@1090..1091 "`" [] [] - 1: TS_TEMPLATE_ELEMENT_LIST@1091..1121 - 0: TS_TEMPLATE_ELEMENT@1091..1101 - 0: DOLLAR_CURLY@1091..1093 "${" [] [] - 1: TS_INFER_TYPE@1093..1100 - 0: INFER_KW@1093..1099 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1099..1100 - 0: IDENT@1099..1100 "A" [] [] - 2: (empty) - 2: R_CURLY@1100..1101 "}" [] [] - 1: TS_TEMPLATE_ELEMENT@1101..1111 - 0: DOLLAR_CURLY@1101..1103 "${" [] [] - 1: TS_INFER_TYPE@1103..1110 - 0: INFER_KW@1103..1109 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1109..1110 - 0: IDENT@1109..1110 "B" [] [] - 2: (empty) - 2: R_CURLY@1110..1111 "}" [] [] - 2: TS_TEMPLATE_ELEMENT@1111..1121 - 0: DOLLAR_CURLY@1111..1113 "${" [] [] - 1: TS_INFER_TYPE@1113..1120 - 0: INFER_KW@1113..1119 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1119..1120 - 0: IDENT@1119..1120 "R" [] [] - 2: (empty) - 2: R_CURLY@1120..1121 "}" [] [] - 2: BACKTICK@1121..1123 "`" [] [Whitespace(" ")] - 3: QUESTION@1123..1125 "?" [] [Whitespace(" ")] - 4: TS_TUPLE_TYPE@1125..1141 - 0: L_BRACK@1125..1126 "[" [] [] - 1: TS_TUPLE_TYPE_ELEMENT_LIST@1126..1139 - 0: TS_TEMPLATE_LITERAL_TYPE@1126..1136 - 0: BACKTICK@1126..1127 "`" [] [] - 1: TS_TEMPLATE_ELEMENT_LIST@1127..1135 - 0: TS_TEMPLATE_ELEMENT@1127..1131 - 0: DOLLAR_CURLY@1127..1129 "${" [] [] - 1: TS_REFERENCE_TYPE@1129..1130 - 0: JS_REFERENCE_IDENTIFIER@1129..1130 - 0: IDENT@1129..1130 "A" [] [] - 1: (empty) - 2: R_CURLY@1130..1131 "}" [] [] - 1: TS_TEMPLATE_ELEMENT@1131..1135 - 0: DOLLAR_CURLY@1131..1133 "${" [] [] - 1: TS_REFERENCE_TYPE@1133..1134 - 0: JS_REFERENCE_IDENTIFIER@1133..1134 - 0: IDENT@1133..1134 "B" [] [] - 1: (empty) - 2: R_CURLY@1134..1135 "}" [] [] - 2: BACKTICK@1135..1136 "`" [] [] - 1: COMMA@1136..1138 "," [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@1138..1139 - 0: JS_REFERENCE_IDENTIFIER@1138..1139 - 0: IDENT@1138..1139 "R" [] [] - 1: (empty) - 2: R_BRACK@1139..1141 "]" [] [Whitespace(" ")] - 5: COLON@1141..1143 ":" [] [Whitespace(" ")] - 6: TS_UNKNOWN_TYPE@1143..1150 - 0: UNKNOWN_KW@1143..1150 "unknown" [] [] - 5: SEMICOLON@1150..1151 ";" [] [] - 13: TS_TYPE_ALIAS_DECLARATION@1151..1230 - 0: TYPE_KW@1151..1157 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1157..1161 - 0: IDENT@1157..1161 "Trim" [] [] - 2: TS_TYPE_PARAMETERS@1161..1180 - 0: L_ANGLE@1161..1162 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1162..1178 - 0: TS_TYPE_PARAMETER@1162..1178 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1162..1162 - 1: TS_TYPE_PARAMETER_NAME@1162..1164 - 0: IDENT@1162..1164 "S" [] [Whitespace(" ")] - 2: TS_TYPE_CONSTRAINT_CLAUSE@1164..1178 - 0: EXTENDS_KW@1164..1172 "extends" [] [Whitespace(" ")] - 1: TS_STRING_TYPE@1172..1178 - 0: STRING_KW@1172..1178 "string" [] [] - 3: (empty) - 2: R_ANGLE@1178..1180 ">" [] [Whitespace(" ")] - 3: EQ@1180..1181 "=" [] [] - 4: TS_CONDITIONAL_TYPE@1181..1229 - 0: TS_REFERENCE_TYPE@1181..1189 - 0: JS_REFERENCE_IDENTIFIER@1181..1189 - 0: IDENT@1181..1189 "S" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1189..1197 "extends" [] [Whitespace(" ")] - 2: TS_TEMPLATE_LITERAL_TYPE@1197..1211 - 0: BACKTICK@1197..1198 "`" [] [] - 1: TS_TEMPLATE_ELEMENT_LIST@1198..1209 - 0: TS_TEMPLATE_ELEMENT@1198..1208 - 0: DOLLAR_CURLY@1198..1200 "${" [] [] - 1: TS_INFER_TYPE@1200..1207 - 0: INFER_KW@1200..1206 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1206..1207 - 0: IDENT@1206..1207 "T" [] [] - 2: (empty) - 2: R_CURLY@1207..1208 "}" [] [] - 1: TS_TEMPLATE_CHUNK_ELEMENT@1208..1209 - 0: TEMPLATE_CHUNK@1208..1209 " " [] [] - 2: BACKTICK@1209..1211 "`" [] [Whitespace(" ")] - 3: QUESTION@1211..1213 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1213..1221 - 0: JS_REFERENCE_IDENTIFIER@1213..1217 - 0: IDENT@1213..1217 "Trim" [] [] - 1: TS_TYPE_ARGUMENTS@1217..1221 - 0: L_ANGLE@1217..1218 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@1218..1219 - 0: TS_REFERENCE_TYPE@1218..1219 - 0: JS_REFERENCE_IDENTIFIER@1218..1219 - 0: IDENT@1218..1219 "T" [] [] - 1: (empty) - 2: R_ANGLE@1219..1221 ">" [] [Whitespace(" ")] - 5: COLON@1221..1222 ":" [] [] - 6: TS_REFERENCE_TYPE@1222..1229 - 0: JS_REFERENCE_IDENTIFIER@1222..1229 - 0: IDENT@1222..1229 "S" [Newline("\n"), Whitespace(" ")] [] - 1: (empty) - 5: SEMICOLON@1229..1230 ";" [] [] - 14: TS_TYPE_ALIAS_DECLARATION@1230..1282 - 0: TYPE_KW@1230..1236 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1236..1239 - 0: IDENT@1236..1239 "Foo" [] [] - 2: TS_TYPE_PARAMETERS@1239..1243 - 0: L_ANGLE@1239..1240 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1240..1241 - 0: TS_TYPE_PARAMETER@1240..1241 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1240..1240 - 1: TS_TYPE_PARAMETER_NAME@1240..1241 - 0: IDENT@1240..1241 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@1241..1243 ">" [] [Whitespace(" ")] - 3: EQ@1243..1245 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1245..1281 - 0: TS_REFERENCE_TYPE@1245..1247 - 0: JS_REFERENCE_IDENTIFIER@1245..1247 - 0: IDENT@1245..1247 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1247..1255 "extends" [] [Whitespace(" ")] - 2: TS_TEMPLATE_LITERAL_TYPE@1255..1270 - 0: BACKTICK@1255..1256 "`" [] [] - 1: TS_TEMPLATE_ELEMENT_LIST@1256..1268 - 0: TS_TEMPLATE_CHUNK_ELEMENT@1256..1257 - 0: TEMPLATE_CHUNK@1256..1257 "*" [] [] - 1: TS_TEMPLATE_ELEMENT@1257..1267 - 0: DOLLAR_CURLY@1257..1259 "${" [] [] - 1: TS_INFER_TYPE@1259..1266 - 0: INFER_KW@1259..1265 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1265..1266 - 0: IDENT@1265..1266 "S" [] [] - 2: (empty) - 2: R_CURLY@1266..1267 "}" [] [] - 2: TS_TEMPLATE_CHUNK_ELEMENT@1267..1268 - 0: TEMPLATE_CHUNK@1267..1268 "*" [] [] - 2: BACKTICK@1268..1270 "`" [] [Whitespace(" ")] - 3: QUESTION@1270..1272 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1272..1274 - 0: JS_REFERENCE_IDENTIFIER@1272..1274 - 0: IDENT@1272..1274 "S" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@1274..1276 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@1276..1281 - 0: NEVER_KW@1276..1281 "never" [] [] - 5: SEMICOLON@1281..1282 ";" [] [] - 15: TS_TYPE_ALIAS_DECLARATION@1282..1421 - 0: TYPE_KW@1282..1288 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1288..1296 - 0: IDENT@1288..1296 "Unpacked" [] [] - 2: TS_TYPE_PARAMETERS@1296..1300 - 0: L_ANGLE@1296..1297 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1297..1298 - 0: TS_TYPE_PARAMETER@1297..1298 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1297..1297 - 1: TS_TYPE_PARAMETER_NAME@1297..1298 - 0: IDENT@1297..1298 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@1298..1300 ">" [] [Whitespace(" ")] - 3: EQ@1300..1302 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1302..1420 - 0: TS_REFERENCE_TYPE@1302..1304 - 0: JS_REFERENCE_IDENTIFIER@1302..1304 - 0: IDENT@1302..1304 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1304..1312 "extends" [] [Whitespace(" ")] - 2: TS_ARRAY_TYPE@1312..1324 - 0: TS_PARENTHESIZED_TYPE@1312..1321 - 0: L_PAREN@1312..1313 "(" [] [] - 1: TS_INFER_TYPE@1313..1320 - 0: INFER_KW@1313..1319 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1319..1320 - 0: IDENT@1319..1320 "U" [] [] - 2: (empty) - 2: R_PAREN@1320..1321 ")" [] [] - 1: L_BRACK@1321..1322 "[" [] [] - 2: R_BRACK@1322..1324 "]" [] [Whitespace(" ")] - 3: QUESTION@1324..1326 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1326..1328 - 0: JS_REFERENCE_IDENTIFIER@1326..1328 - 0: IDENT@1326..1328 "U" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@1328..1329 ":" [] [] - 6: TS_CONDITIONAL_TYPE@1329..1420 - 0: TS_REFERENCE_TYPE@1329..1336 - 0: JS_REFERENCE_IDENTIFIER@1329..1336 - 0: IDENT@1329..1336 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1336..1344 "extends" [] [Whitespace(" ")] - 2: TS_FUNCTION_TYPE@1344..1372 - 0: (empty) - 1: JS_PARAMETERS@1344..1361 - 0: L_PAREN@1344..1345 "(" [] [] - 1: JS_PARAMETER_LIST@1345..1359 - 0: JS_REST_PARAMETER@1345..1359 - 0: JS_DECORATOR_LIST@1345..1345 - 1: DOT3@1345..1348 "..." [] [] - 2: JS_IDENTIFIER_BINDING@1348..1352 - 0: IDENT@1348..1352 "args" [] [] - 3: TS_TYPE_ANNOTATION@1352..1359 - 0: COLON@1352..1354 ":" [] [Whitespace(" ")] - 1: TS_ARRAY_TYPE@1354..1359 - 0: TS_ANY_TYPE@1354..1357 - 0: ANY_KW@1354..1357 "any" [] [] - 1: L_BRACK@1357..1358 "[" [] [] - 2: R_BRACK@1358..1359 "]" [] [] - 2: R_PAREN@1359..1361 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@1361..1364 "=>" [] [Whitespace(" ")] - 3: TS_INFER_TYPE@1364..1372 - 0: INFER_KW@1364..1370 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1370..1372 - 0: IDENT@1370..1372 "U" [] [Whitespace(" ")] - 2: (empty) - 3: QUESTION@1372..1374 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1374..1376 - 0: JS_REFERENCE_IDENTIFIER@1374..1376 - 0: IDENT@1374..1376 "U" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@1376..1377 ":" [] [] - 6: TS_CONDITIONAL_TYPE@1377..1420 - 0: TS_REFERENCE_TYPE@1377..1384 - 0: JS_REFERENCE_IDENTIFIER@1377..1384 - 0: IDENT@1377..1384 "T" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1384..1392 "extends" [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@1392..1409 - 0: JS_REFERENCE_IDENTIFIER@1392..1399 - 0: IDENT@1392..1399 "Promise" [] [] - 1: TS_TYPE_ARGUMENTS@1399..1409 - 0: L_ANGLE@1399..1400 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@1400..1407 - 0: TS_INFER_TYPE@1400..1407 - 0: INFER_KW@1400..1406 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1406..1407 - 0: IDENT@1406..1407 "U" [] [] - 2: (empty) - 2: R_ANGLE@1407..1409 ">" [] [Whitespace(" ")] - 3: QUESTION@1409..1411 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1411..1413 - 0: JS_REFERENCE_IDENTIFIER@1411..1413 - 0: IDENT@1411..1413 "U" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@1413..1414 ":" [] [] - 6: TS_REFERENCE_TYPE@1414..1420 - 0: JS_REFERENCE_IDENTIFIER@1414..1420 - 0: IDENT@1414..1420 "T" [Newline("\n"), Whitespace(" ")] [] - 1: (empty) - 5: SEMICOLON@1420..1421 ";" [] [] - 16: TS_TYPE_ALIAS_DECLARATION@1421..1509 - 0: TYPE_KW@1421..1427 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1427..1439 - 0: IDENT@1427..1439 "ArgumentType" [] [] - 2: TS_TYPE_PARAMETERS@1439..1467 - 0: L_ANGLE@1439..1440 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1440..1465 - 0: TS_TYPE_PARAMETER@1440..1465 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1440..1440 - 1: TS_TYPE_PARAMETER_NAME@1440..1442 - 0: IDENT@1440..1442 "T" [] [Whitespace(" ")] - 2: TS_TYPE_CONSTRAINT_CLAUSE@1442..1465 - 0: EXTENDS_KW@1442..1450 "extends" [] [Whitespace(" ")] - 1: TS_FUNCTION_TYPE@1450..1465 - 0: (empty) - 1: JS_PARAMETERS@1450..1459 - 0: L_PAREN@1450..1451 "(" [] [] - 1: JS_PARAMETER_LIST@1451..1457 - 0: JS_FORMAL_PARAMETER@1451..1457 - 0: JS_DECORATOR_LIST@1451..1451 - 1: JS_IDENTIFIER_BINDING@1451..1452 - 0: IDENT@1451..1452 "x" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1452..1457 - 0: COLON@1452..1454 ":" [] [Whitespace(" ")] - 1: TS_ANY_TYPE@1454..1457 - 0: ANY_KW@1454..1457 "any" [] [] - 4: (empty) - 2: R_PAREN@1457..1459 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@1459..1462 "=>" [] [Whitespace(" ")] - 3: TS_ANY_TYPE@1462..1465 - 0: ANY_KW@1462..1465 "any" [] [] - 3: (empty) - 2: R_ANGLE@1465..1467 ">" [] [Whitespace(" ")] - 3: EQ@1467..1469 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1469..1508 - 0: TS_REFERENCE_TYPE@1469..1471 - 0: JS_REFERENCE_IDENTIFIER@1469..1471 - 0: IDENT@1469..1471 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1471..1479 "extends" [] [Whitespace(" ")] - 2: TS_FUNCTION_TYPE@1479..1499 - 0: (empty) - 1: JS_PARAMETERS@1479..1492 - 0: L_PAREN@1479..1480 "(" [] [] - 1: JS_PARAMETER_LIST@1480..1490 - 0: JS_FORMAL_PARAMETER@1480..1490 - 0: JS_DECORATOR_LIST@1480..1480 - 1: JS_IDENTIFIER_BINDING@1480..1481 - 0: IDENT@1480..1481 "a" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1481..1490 - 0: COLON@1481..1483 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@1483..1490 - 0: INFER_KW@1483..1489 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1489..1490 - 0: IDENT@1489..1490 "A" [] [] - 2: (empty) - 4: (empty) - 2: R_PAREN@1490..1492 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@1492..1495 "=>" [] [Whitespace(" ")] - 3: TS_ANY_TYPE@1495..1499 - 0: ANY_KW@1495..1499 "any" [] [Whitespace(" ")] - 3: QUESTION@1499..1501 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1501..1503 - 0: JS_REFERENCE_IDENTIFIER@1501..1503 - 0: IDENT@1501..1503 "A" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@1503..1505 ":" [] [Whitespace(" ")] - 6: TS_ANY_TYPE@1505..1508 - 0: ANY_KW@1505..1508 "any" [] [] - 5: SEMICOLON@1508..1509 ";" [] [] - 17: TS_TYPE_ALIAS_DECLARATION@1509..1598 - 0: TYPE_KW@1509..1515 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1515..1517 - 0: IDENT@1515..1517 "X3" [] [] - 2: TS_TYPE_PARAMETERS@1517..1521 - 0: L_ANGLE@1517..1518 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1518..1519 - 0: TS_TYPE_PARAMETER@1518..1519 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1518..1518 - 1: TS_TYPE_PARAMETER_NAME@1518..1519 - 0: IDENT@1518..1519 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@1519..1521 ">" [] [Whitespace(" ")] - 3: EQ@1521..1523 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1523..1597 - 0: TS_REFERENCE_TYPE@1523..1525 - 0: JS_REFERENCE_IDENTIFIER@1523..1525 - 0: IDENT@1523..1525 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1525..1533 "extends" [] [Whitespace(" ")] - 2: TS_OBJECT_TYPE@1533..1586 - 0: L_CURLY@1533..1535 "{" [] [Whitespace(" ")] - 1: TS_TYPE_MEMBER_LIST@1535..1584 - 0: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@1535..1560 - 0: (empty) - 1: JS_LITERAL_MEMBER_NAME@1535..1536 - 0: IDENT@1535..1536 "a" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1536..1558 - 0: COLON@1536..1538 ":" [] [Whitespace(" ")] - 1: TS_FUNCTION_TYPE@1538..1558 - 0: (empty) - 1: JS_PARAMETERS@1538..1551 - 0: L_PAREN@1538..1539 "(" [] [] - 1: JS_PARAMETER_LIST@1539..1549 - 0: JS_FORMAL_PARAMETER@1539..1549 - 0: JS_DECORATOR_LIST@1539..1539 - 1: JS_IDENTIFIER_BINDING@1539..1540 - 0: IDENT@1539..1540 "x" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1540..1549 - 0: COLON@1540..1542 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@1542..1549 - 0: INFER_KW@1542..1548 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1548..1549 - 0: IDENT@1548..1549 "U" [] [] - 2: (empty) - 4: (empty) - 2: R_PAREN@1549..1551 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@1551..1554 "=>" [] [Whitespace(" ")] - 3: TS_VOID_TYPE@1554..1558 - 0: VOID_KW@1554..1558 "void" [] [] - 4: COMMA@1558..1560 "," [] [Whitespace(" ")] - 1: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@1560..1584 - 0: (empty) - 1: JS_LITERAL_MEMBER_NAME@1560..1561 - 0: IDENT@1560..1561 "b" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1561..1584 - 0: COLON@1561..1563 ":" [] [Whitespace(" ")] - 1: TS_FUNCTION_TYPE@1563..1584 - 0: (empty) - 1: JS_PARAMETERS@1563..1576 - 0: L_PAREN@1563..1564 "(" [] [] - 1: JS_PARAMETER_LIST@1564..1574 - 0: JS_FORMAL_PARAMETER@1564..1574 - 0: JS_DECORATOR_LIST@1564..1564 - 1: JS_IDENTIFIER_BINDING@1564..1565 - 0: IDENT@1564..1565 "x" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1565..1574 - 0: COLON@1565..1567 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@1567..1574 - 0: INFER_KW@1567..1573 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1573..1574 - 0: IDENT@1573..1574 "U" [] [] - 2: (empty) - 4: (empty) - 2: R_PAREN@1574..1576 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@1576..1579 "=>" [] [Whitespace(" ")] - 3: TS_VOID_TYPE@1579..1584 - 0: VOID_KW@1579..1584 "void" [] [Whitespace(" ")] - 4: (empty) - 2: R_CURLY@1584..1586 "}" [] [Whitespace(" ")] - 3: QUESTION@1586..1588 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1588..1590 - 0: JS_REFERENCE_IDENTIFIER@1588..1590 - 0: IDENT@1588..1590 "U" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@1590..1592 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@1592..1597 - 0: NEVER_KW@1592..1597 "never" [] [] - 5: SEMICOLON@1597..1598 ";" [] [] - 18: TS_TYPE_ALIAS_DECLARATION@1598..1691 - 0: TYPE_KW@1598..1604 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1604..1606 - 0: IDENT@1604..1606 "X1" [] [] - 2: TS_TYPE_PARAMETERS@1606..1637 - 0: L_ANGLE@1606..1607 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1607..1635 - 0: TS_TYPE_PARAMETER@1607..1635 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1607..1607 - 1: TS_TYPE_PARAMETER_NAME@1607..1609 - 0: IDENT@1607..1609 "T" [] [Whitespace(" ")] - 2: TS_TYPE_CONSTRAINT_CLAUSE@1609..1635 - 0: EXTENDS_KW@1609..1617 "extends" [] [Whitespace(" ")] - 1: TS_OBJECT_TYPE@1617..1635 - 0: L_CURLY@1617..1619 "{" [] [Whitespace(" ")] - 1: TS_TYPE_MEMBER_LIST@1619..1634 - 0: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@1619..1627 - 0: (empty) - 1: JS_LITERAL_MEMBER_NAME@1619..1620 - 0: IDENT@1619..1620 "x" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1620..1625 - 0: COLON@1620..1622 ":" [] [Whitespace(" ")] - 1: TS_ANY_TYPE@1622..1625 - 0: ANY_KW@1622..1625 "any" [] [] - 4: COMMA@1625..1627 "," [] [Whitespace(" ")] - 1: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@1627..1634 - 0: (empty) - 1: JS_LITERAL_MEMBER_NAME@1627..1628 - 0: IDENT@1627..1628 "y" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1628..1634 - 0: COLON@1628..1630 ":" [] [Whitespace(" ")] - 1: TS_ANY_TYPE@1630..1634 - 0: ANY_KW@1630..1634 "any" [] [Whitespace(" ")] - 4: (empty) - 2: R_CURLY@1634..1635 "}" [] [] - 3: (empty) - 2: R_ANGLE@1635..1637 ">" [] [Whitespace(" ")] - 3: EQ@1637..1639 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1639..1690 - 0: TS_REFERENCE_TYPE@1639..1641 - 0: JS_REFERENCE_IDENTIFIER@1639..1641 - 0: IDENT@1639..1641 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1641..1649 "extends" [] [Whitespace(" ")] - 2: TS_OBJECT_TYPE@1649..1676 - 0: L_CURLY@1649..1651 "{" [] [Whitespace(" ")] - 1: TS_TYPE_MEMBER_LIST@1651..1674 - 0: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@1651..1663 - 0: (empty) - 1: JS_LITERAL_MEMBER_NAME@1651..1652 - 0: IDENT@1651..1652 "x" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1652..1661 - 0: COLON@1652..1654 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@1654..1661 - 0: INFER_KW@1654..1660 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1660..1661 - 0: IDENT@1660..1661 "X" [] [] - 2: (empty) - 4: COMMA@1661..1663 "," [] [Whitespace(" ")] - 1: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@1663..1674 - 0: (empty) - 1: JS_LITERAL_MEMBER_NAME@1663..1664 - 0: IDENT@1663..1664 "y" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@1664..1674 - 0: COLON@1664..1666 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@1666..1674 - 0: INFER_KW@1666..1672 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1672..1674 - 0: IDENT@1672..1674 "Y" [] [Whitespace(" ")] - 2: (empty) - 4: (empty) - 2: R_CURLY@1674..1676 "}" [] [Whitespace(" ")] - 3: QUESTION@1676..1678 "?" [] [Whitespace(" ")] - 4: TS_TUPLE_TYPE@1678..1685 - 0: L_BRACK@1678..1679 "[" [] [] - 1: TS_TUPLE_TYPE_ELEMENT_LIST@1679..1683 - 0: TS_REFERENCE_TYPE@1679..1680 - 0: JS_REFERENCE_IDENTIFIER@1679..1680 - 0: IDENT@1679..1680 "X" [] [] - 1: (empty) - 1: COMMA@1680..1682 "," [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@1682..1683 - 0: JS_REFERENCE_IDENTIFIER@1682..1683 - 0: IDENT@1682..1683 "Y" [] [] - 1: (empty) - 2: R_BRACK@1683..1685 "]" [] [Whitespace(" ")] - 5: COLON@1685..1687 ":" [] [Whitespace(" ")] - 6: TS_ANY_TYPE@1687..1690 - 0: ANY_KW@1687..1690 "any" [] [] - 5: SEMICOLON@1690..1691 ";" [] [] - 19: TS_TYPE_ALIAS_DECLARATION@1691..1736 - 0: TYPE_KW@1691..1697 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1697..1700 - 0: IDENT@1697..1700 "T62" [] [] - 2: TS_TYPE_PARAMETERS@1700..1704 - 0: L_ANGLE@1700..1701 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1701..1702 - 0: TS_TYPE_PARAMETER@1701..1702 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1701..1701 - 1: TS_TYPE_PARAMETER_NAME@1701..1702 - 0: IDENT@1701..1702 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@1702..1704 ">" [] [Whitespace(" ")] - 3: EQ@1704..1706 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1706..1735 - 0: TS_REFERENCE_TYPE@1706..1708 - 0: JS_REFERENCE_IDENTIFIER@1706..1708 - 0: IDENT@1706..1708 "U" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1708..1716 "extends" [] [Whitespace(" ")] - 2: TS_ARRAY_TYPE@1716..1728 - 0: TS_PARENTHESIZED_TYPE@1716..1725 - 0: L_PAREN@1716..1717 "(" [] [] - 1: TS_INFER_TYPE@1717..1724 - 0: INFER_KW@1717..1723 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1723..1724 - 0: IDENT@1723..1724 "U" [] [] - 2: (empty) - 2: R_PAREN@1724..1725 ")" [] [] - 1: L_BRACK@1725..1726 "[" [] [] - 2: R_BRACK@1726..1728 "]" [] [Whitespace(" ")] - 3: QUESTION@1728..1730 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1730..1732 - 0: JS_REFERENCE_IDENTIFIER@1730..1732 - 0: IDENT@1730..1732 "U" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@1732..1734 ":" [] [Whitespace(" ")] - 6: TS_REFERENCE_TYPE@1734..1735 - 0: JS_REFERENCE_IDENTIFIER@1734..1735 - 0: IDENT@1734..1735 "U" [] [] - 1: (empty) - 5: SEMICOLON@1735..1736 ";" [] [] - 20: TS_TYPE_ALIAS_DECLARATION@1736..1827 - 0: TYPE_KW@1736..1742 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1742..1745 - 0: IDENT@1742..1745 "T63" [] [] - 2: TS_TYPE_PARAMETERS@1745..1749 - 0: L_ANGLE@1745..1746 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1746..1747 - 0: TS_TYPE_PARAMETER@1746..1747 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1746..1746 - 1: TS_TYPE_PARAMETER_NAME@1746..1747 - 0: IDENT@1746..1747 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@1747..1749 ">" [] [Whitespace(" ")] - 3: EQ@1749..1751 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1751..1826 - 0: TS_REFERENCE_TYPE@1751..1753 - 0: JS_REFERENCE_IDENTIFIER@1751..1753 - 0: IDENT@1751..1753 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1753..1761 "extends" [] [Whitespace(" ")] - 2: TS_PARENTHESIZED_TYPE@1761..1809 - 0: L_PAREN@1761..1762 "(" [] [] - 1: TS_CONDITIONAL_TYPE@1762..1807 - 0: TS_PARENTHESIZED_TYPE@1762..1772 - 0: L_PAREN@1762..1763 "(" [] [] - 1: TS_INFER_TYPE@1763..1770 - 0: INFER_KW@1763..1769 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1769..1770 - 0: IDENT@1769..1770 "A" [] [] - 2: (empty) - 2: R_PAREN@1770..1772 ")" [] [Whitespace(" ")] - 1: EXTENDS_KW@1772..1780 "extends" [] [Whitespace(" ")] - 2: TS_INFER_TYPE@1780..1788 - 0: INFER_KW@1780..1786 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1786..1788 - 0: IDENT@1786..1788 "B" [] [Whitespace(" ")] - 2: (empty) - 3: QUESTION@1788..1790 "?" [] [Whitespace(" ")] - 4: TS_INFER_TYPE@1790..1798 - 0: INFER_KW@1790..1796 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1796..1798 - 0: IDENT@1796..1798 "C" [] [Whitespace(" ")] - 2: (empty) - 5: COLON@1798..1800 ":" [] [Whitespace(" ")] - 6: TS_INFER_TYPE@1800..1807 - 0: INFER_KW@1800..1806 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1806..1807 - 0: IDENT@1806..1807 "D" [] [] - 2: (empty) - 2: R_PAREN@1807..1809 ")" [] [Whitespace(" ")] - 3: QUESTION@1809..1811 "?" [] [Whitespace(" ")] - 4: TS_STRING_TYPE@1811..1818 - 0: STRING_KW@1811..1818 "string" [] [Whitespace(" ")] - 5: COLON@1818..1820 ":" [] [Whitespace(" ")] - 6: TS_NUMBER_TYPE@1820..1826 - 0: NUMBER_KW@1820..1826 "number" [] [] - 5: SEMICOLON@1826..1827 ";" [] [] - 21: TS_TYPE_ALIAS_DECLARATION@1827..1912 - 0: TYPE_KW@1827..1833 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1833..1836 - 0: IDENT@1833..1836 "T75" [] [] - 2: TS_TYPE_PARAMETERS@1836..1840 - 0: L_ANGLE@1836..1837 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1837..1838 - 0: TS_TYPE_PARAMETER@1837..1838 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1837..1837 - 1: TS_TYPE_PARAMETER_NAME@1837..1838 - 0: IDENT@1837..1838 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@1838..1840 ">" [] [Whitespace(" ")] - 3: EQ@1840..1842 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1842..1911 - 0: TS_REFERENCE_TYPE@1842..1844 - 0: JS_REFERENCE_IDENTIFIER@1842..1844 - 0: IDENT@1842..1844 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1844..1852 "extends" [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@1852..1874 - 0: JS_REFERENCE_IDENTIFIER@1852..1855 - 0: IDENT@1852..1855 "T74" [] [] - 1: TS_TYPE_ARGUMENTS@1855..1874 - 0: L_ANGLE@1855..1856 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@1856..1872 - 0: TS_INFER_TYPE@1856..1863 - 0: INFER_KW@1856..1862 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1862..1863 - 0: IDENT@1862..1863 "U" [] [] - 2: (empty) - 1: COMMA@1863..1865 "," [] [Whitespace(" ")] - 2: TS_INFER_TYPE@1865..1872 - 0: INFER_KW@1865..1871 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@1871..1872 - 0: IDENT@1871..1872 "U" [] [] - 2: (empty) - 2: R_ANGLE@1872..1874 ">" [] [Whitespace(" ")] - 3: QUESTION@1874..1876 "?" [] [Whitespace(" ")] - 4: TS_UNION_TYPE@1876..1904 - 0: (empty) - 1: TS_UNION_TYPE_VARIANT_LIST@1876..1904 - 0: TS_REFERENCE_TYPE@1876..1883 - 0: JS_REFERENCE_IDENTIFIER@1876..1879 - 0: IDENT@1876..1879 "T70" [] [] - 1: TS_TYPE_ARGUMENTS@1879..1883 - 0: L_ANGLE@1879..1880 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@1880..1881 - 0: TS_REFERENCE_TYPE@1880..1881 - 0: JS_REFERENCE_IDENTIFIER@1880..1881 - 0: IDENT@1880..1881 "U" [] [] - 1: (empty) - 2: R_ANGLE@1881..1883 ">" [] [Whitespace(" ")] - 1: PIPE@1883..1885 "|" [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@1885..1892 - 0: JS_REFERENCE_IDENTIFIER@1885..1888 - 0: IDENT@1885..1888 "T72" [] [] - 1: TS_TYPE_ARGUMENTS@1888..1892 - 0: L_ANGLE@1888..1889 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@1889..1890 - 0: TS_REFERENCE_TYPE@1889..1890 - 0: JS_REFERENCE_IDENTIFIER@1889..1890 - 0: IDENT@1889..1890 "U" [] [] - 1: (empty) - 2: R_ANGLE@1890..1892 ">" [] [Whitespace(" ")] - 3: PIPE@1892..1894 "|" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1894..1904 - 0: JS_REFERENCE_IDENTIFIER@1894..1897 - 0: IDENT@1894..1897 "T74" [] [] - 1: TS_TYPE_ARGUMENTS@1897..1904 - 0: L_ANGLE@1897..1898 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@1898..1902 - 0: TS_REFERENCE_TYPE@1898..1899 - 0: JS_REFERENCE_IDENTIFIER@1898..1899 - 0: IDENT@1898..1899 "U" [] [] - 1: (empty) - 1: COMMA@1899..1901 "," [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@1901..1902 - 0: JS_REFERENCE_IDENTIFIER@1901..1902 - 0: IDENT@1901..1902 "U" [] [] - 1: (empty) - 2: R_ANGLE@1902..1904 ">" [] [Whitespace(" ")] - 5: COLON@1904..1906 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@1906..1911 - 0: NEVER_KW@1906..1911 "never" [] [] - 5: SEMICOLON@1911..1912 ";" [] [] - 22: TS_TYPE_ALIAS_DECLARATION@1912..2128 - 0: TYPE_KW@1912..1918 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@1918..1927 - 0: IDENT@1918..1927 "Jsonified" [] [] - 2: TS_TYPE_PARAMETERS@1927..1931 - 0: L_ANGLE@1927..1928 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@1928..1929 - 0: TS_TYPE_PARAMETER@1928..1929 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@1928..1928 - 1: TS_TYPE_PARAMETER_NAME@1928..1929 - 0: IDENT@1928..1929 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@1929..1931 ">" [] [Whitespace(" ")] - 3: EQ@1931..1933 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@1933..2127 - 0: TS_REFERENCE_TYPE@1933..1935 - 0: JS_REFERENCE_IDENTIFIER@1933..1935 - 0: IDENT@1933..1935 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1935..1943 "extends" [] [Whitespace(" ")] - 2: TS_UNION_TYPE@1943..1976 - 0: (empty) - 1: TS_UNION_TYPE_VARIANT_LIST@1943..1976 - 0: TS_STRING_TYPE@1943..1950 - 0: STRING_KW@1943..1950 "string" [] [Whitespace(" ")] - 1: PIPE@1950..1952 "|" [] [Whitespace(" ")] - 2: TS_NUMBER_TYPE@1952..1959 - 0: NUMBER_KW@1952..1959 "number" [] [Whitespace(" ")] - 3: PIPE@1959..1961 "|" [] [Whitespace(" ")] - 4: TS_BOOLEAN_TYPE@1961..1969 - 0: BOOLEAN_KW@1961..1969 "boolean" [] [Whitespace(" ")] - 5: PIPE@1969..1971 "|" [] [Whitespace(" ")] - 6: TS_NULL_LITERAL_TYPE@1971..1976 - 0: NULL_KW@1971..1976 "null" [] [Whitespace(" ")] - 3: QUESTION@1976..1978 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@1978..1979 - 0: JS_REFERENCE_IDENTIFIER@1978..1979 - 0: IDENT@1978..1979 "T" [] [] - 1: (empty) - 5: COLON@1979..1986 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 6: TS_CONDITIONAL_TYPE@1986..2127 - 0: TS_REFERENCE_TYPE@1986..1988 - 0: JS_REFERENCE_IDENTIFIER@1986..1988 - 0: IDENT@1986..1988 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@1988..1996 "extends" [] [Whitespace(" ")] - 2: TS_UNION_TYPE@1996..2017 - 0: (empty) - 1: TS_UNION_TYPE_VARIANT_LIST@1996..2017 - 0: TS_UNDEFINED_TYPE@1996..2006 - 0: UNDEFINED_KW@1996..2006 "undefined" [] [Whitespace(" ")] - 1: PIPE@2006..2008 "|" [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@2008..2017 - 0: JS_REFERENCE_IDENTIFIER@2008..2017 - 0: IDENT@2008..2017 "Function" [] [Whitespace(" ")] - 1: (empty) - 3: QUESTION@2017..2019 "?" [] [Whitespace(" ")] - 4: TS_NEVER_TYPE@2019..2024 - 0: NEVER_KW@2019..2024 "never" [] [] - 5: COLON@2024..2031 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 6: TS_CONDITIONAL_TYPE@2031..2127 - 0: TS_REFERENCE_TYPE@2031..2033 - 0: JS_REFERENCE_IDENTIFIER@2031..2033 - 0: IDENT@2031..2033 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2033..2041 "extends" [] [Whitespace(" ")] - 2: TS_OBJECT_TYPE@2041..2063 - 0: L_CURLY@2041..2043 "{" [] [Whitespace(" ")] - 1: TS_TYPE_MEMBER_LIST@2043..2061 - 0: TS_METHOD_SIGNATURE_TYPE_MEMBER@2043..2061 - 0: JS_LITERAL_MEMBER_NAME@2043..2049 - 0: IDENT@2043..2049 "toJSON" [] [] - 1: (empty) - 2: (empty) - 3: JS_PARAMETERS@2049..2051 - 0: L_PAREN@2049..2050 "(" [] [] - 1: JS_PARAMETER_LIST@2050..2050 - 2: R_PAREN@2050..2051 ")" [] [] - 4: TS_RETURN_TYPE_ANNOTATION@2051..2061 - 0: COLON@2051..2053 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@2053..2061 - 0: INFER_KW@2053..2059 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2059..2061 - 0: IDENT@2059..2061 "R" [] [Whitespace(" ")] - 2: (empty) - 5: (empty) - 2: R_CURLY@2061..2063 "}" [] [Whitespace(" ")] - 3: QUESTION@2063..2065 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@2065..2066 - 0: JS_REFERENCE_IDENTIFIER@2065..2066 - 0: IDENT@2065..2066 "R" [] [] - 1: (empty) - 5: COLON@2066..2073 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 6: TS_CONDITIONAL_TYPE@2073..2127 - 0: TS_REFERENCE_TYPE@2073..2075 - 0: JS_REFERENCE_IDENTIFIER@2073..2075 - 0: IDENT@2073..2075 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2075..2083 "extends" [] [Whitespace(" ")] - 2: TS_NON_PRIMITIVE_TYPE@2083..2090 - 0: OBJECT_KW@2083..2090 "object" [] [Whitespace(" ")] - 3: QUESTION@2090..2092 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@2092..2110 - 0: JS_REFERENCE_IDENTIFIER@2092..2107 - 0: IDENT@2092..2107 "JsonifiedObject" [] [] - 1: TS_TYPE_ARGUMENTS@2107..2110 - 0: L_ANGLE@2107..2108 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@2108..2109 - 0: TS_REFERENCE_TYPE@2108..2109 - 0: JS_REFERENCE_IDENTIFIER@2108..2109 - 0: IDENT@2108..2109 "T" [] [] - 1: (empty) - 2: R_ANGLE@2109..2110 ">" [] [] - 5: COLON@2110..2113 ":" [Newline("\n")] [Whitespace(" ")] - 6: TS_STRING_LITERAL_TYPE@2113..2127 - 0: JS_STRING_LITERAL@2113..2127 "\"what is this\"" [] [] - 5: SEMICOLON@2127..2128 ";" [] [] - 23: TS_TYPE_ALIAS_DECLARATION@2128..2191 - 0: TYPE_KW@2128..2134 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2134..2137 - 0: IDENT@2134..2137 "T1" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@2137..2139 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@2139..2190 - 0: TS_REFERENCE_TYPE@2139..2142 - 0: JS_REFERENCE_IDENTIFIER@2139..2142 - 0: IDENT@2139..2142 "F1" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2142..2150 "extends" [] [Whitespace(" ")] - 2: TS_FUNCTION_TYPE@2150..2179 - 0: (empty) - 1: JS_PARAMETERS@2150..2171 - 0: L_PAREN@2150..2151 "(" [] [] - 1: JS_PARAMETER_LIST@2151..2169 - 0: JS_REST_PARAMETER@2151..2169 - 0: JS_DECORATOR_LIST@2151..2151 - 1: DOT3@2151..2154 "..." [] [] - 2: JS_IDENTIFIER_BINDING@2154..2158 - 0: IDENT@2154..2158 "args" [] [] - 3: TS_TYPE_ANNOTATION@2158..2169 - 0: COLON@2158..2160 ":" [] [Whitespace(" ")] - 1: TS_PARENTHESIZED_TYPE@2160..2169 - 0: L_PAREN@2160..2161 "(" [] [] - 1: TS_INFER_TYPE@2161..2168 - 0: INFER_KW@2161..2167 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2167..2168 - 0: IDENT@2167..2168 "T" [] [] - 2: (empty) - 2: R_PAREN@2168..2169 ")" [] [] - 2: R_PAREN@2169..2171 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@2171..2174 "=>" [] [Whitespace(" ")] - 3: TS_VOID_TYPE@2174..2179 - 0: VOID_KW@2174..2179 "void" [] [Whitespace(" ")] - 3: QUESTION@2179..2181 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@2181..2183 - 0: JS_REFERENCE_IDENTIFIER@2181..2183 - 0: IDENT@2181..2183 "T" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@2183..2185 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@2185..2190 - 0: NEVER_KW@2185..2190 "never" [] [] - 5: SEMICOLON@2190..2191 ";" [] [] - 24: TS_TYPE_ALIAS_DECLARATION@2191..2256 - 0: TYPE_KW@2191..2197 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2197..2200 - 0: IDENT@2197..2200 "T2" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@2200..2202 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@2202..2255 - 0: TS_REFERENCE_TYPE@2202..2205 - 0: JS_REFERENCE_IDENTIFIER@2202..2205 - 0: IDENT@2202..2205 "F1" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2205..2213 "extends" [] [Whitespace(" ")] - 2: TS_FUNCTION_TYPE@2213..2244 - 0: (empty) - 1: JS_PARAMETERS@2213..2236 - 0: L_PAREN@2213..2214 "(" [] [] - 1: JS_PARAMETER_LIST@2214..2234 - 0: JS_FORMAL_PARAMETER@2214..2234 - 0: JS_DECORATOR_LIST@2214..2214 - 1: JS_IDENTIFIER_BINDING@2214..2218 - 0: IDENT@2214..2218 "args" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@2218..2234 - 0: COLON@2218..2220 ":" [] [Whitespace(" ")] - 1: TS_TUPLE_TYPE@2220..2234 - 0: L_BRACK@2220..2221 "[" [] [] - 1: TS_TUPLE_TYPE_ELEMENT_LIST@2221..2233 - 0: TS_REST_TUPLE_TYPE_ELEMENT@2221..2233 - 0: DOT3@2221..2224 "..." [] [] - 1: TS_PARENTHESIZED_TYPE@2224..2233 - 0: L_PAREN@2224..2225 "(" [] [] - 1: TS_INFER_TYPE@2225..2232 - 0: INFER_KW@2225..2231 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2231..2232 - 0: IDENT@2231..2232 "T" [] [] - 2: (empty) - 2: R_PAREN@2232..2233 ")" [] [] - 2: R_BRACK@2233..2234 "]" [] [] - 4: (empty) - 2: R_PAREN@2234..2236 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@2236..2239 "=>" [] [Whitespace(" ")] - 3: TS_VOID_TYPE@2239..2244 - 0: VOID_KW@2239..2244 "void" [] [Whitespace(" ")] - 3: QUESTION@2244..2246 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@2246..2248 - 0: JS_REFERENCE_IDENTIFIER@2246..2248 - 0: IDENT@2246..2248 "T" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@2248..2250 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@2250..2255 - 0: NEVER_KW@2250..2255 "never" [] [] - 5: SEMICOLON@2255..2256 ";" [] [] - 25: TS_TYPE_ALIAS_DECLARATION@2256..2315 - 0: TYPE_KW@2256..2262 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2262..2264 - 0: IDENT@2262..2264 "T3" [] [] - 2: TS_TYPE_PARAMETERS@2264..2268 - 0: L_ANGLE@2264..2265 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@2265..2266 - 0: TS_TYPE_PARAMETER@2265..2266 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@2265..2265 - 1: TS_TYPE_PARAMETER_NAME@2265..2266 - 0: IDENT@2265..2266 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@2266..2268 ">" [] [Whitespace(" ")] - 3: EQ@2268..2270 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@2270..2314 - 0: TS_REFERENCE_TYPE@2270..2272 - 0: JS_REFERENCE_IDENTIFIER@2270..2272 - 0: IDENT@2270..2272 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2272..2280 "extends" [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@2280..2300 - 0: JS_REFERENCE_IDENTIFIER@2280..2288 - 0: IDENT@2280..2288 "IsNumber" [] [] - 1: TS_TYPE_ARGUMENTS@2288..2300 - 0: L_ANGLE@2288..2289 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@2289..2298 - 0: TS_PARENTHESIZED_TYPE@2289..2298 - 0: L_PAREN@2289..2290 "(" [] [] - 1: TS_INFER_TYPE@2290..2297 - 0: INFER_KW@2290..2296 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2296..2297 - 0: IDENT@2296..2297 "N" [] [] - 2: (empty) - 2: R_PAREN@2297..2298 ")" [] [] - 2: R_ANGLE@2298..2300 ">" [] [Whitespace(" ")] - 3: QUESTION@2300..2302 "?" [] [Whitespace(" ")] - 4: TS_BOOLEAN_LITERAL_TYPE@2302..2307 - 0: TRUE_KW@2302..2307 "true" [] [Whitespace(" ")] - 5: COLON@2307..2309 ":" [] [Whitespace(" ")] - 6: TS_BOOLEAN_LITERAL_TYPE@2309..2314 - 0: FALSE_KW@2309..2314 "false" [] [] - 5: SEMICOLON@2314..2315 ";" [] [] - 26: TS_TYPE_ALIAS_DECLARATION@2315..2380 - 0: TYPE_KW@2315..2321 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2321..2324 - 0: IDENT@2321..2324 "T4" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@2324..2326 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@2326..2379 - 0: TS_REFERENCE_TYPE@2326..2329 - 0: JS_REFERENCE_IDENTIFIER@2326..2329 - 0: IDENT@2326..2329 "F1" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2329..2337 "extends" [] [Whitespace(" ")] - 2: TS_FUNCTION_TYPE@2337..2368 - 0: (empty) - 1: JS_PARAMETERS@2337..2360 - 0: L_PAREN@2337..2338 "(" [] [] - 1: JS_PARAMETER_LIST@2338..2358 - 0: JS_REST_PARAMETER@2338..2358 - 0: JS_DECORATOR_LIST@2338..2338 - 1: DOT3@2338..2341 "..." [] [] - 2: JS_IDENTIFIER_BINDING@2341..2345 - 0: IDENT@2341..2345 "args" [] [] - 3: TS_TYPE_ANNOTATION@2345..2358 - 0: COLON@2345..2347 ":" [] [Whitespace(" ")] - 1: TS_PARENTHESIZED_TYPE@2347..2358 - 0: L_PAREN@2347..2348 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2348..2357 - 0: L_PAREN@2348..2349 "(" [] [] - 1: TS_INFER_TYPE@2349..2356 - 0: INFER_KW@2349..2355 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2355..2356 - 0: IDENT@2355..2356 "T" [] [] - 2: (empty) - 2: R_PAREN@2356..2357 ")" [] [] - 2: R_PAREN@2357..2358 ")" [] [] - 2: R_PAREN@2358..2360 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@2360..2363 "=>" [] [Whitespace(" ")] - 3: TS_VOID_TYPE@2363..2368 - 0: VOID_KW@2363..2368 "void" [] [Whitespace(" ")] - 3: QUESTION@2368..2370 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@2370..2372 - 0: JS_REFERENCE_IDENTIFIER@2370..2372 - 0: IDENT@2370..2372 "T" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@2372..2374 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@2374..2379 - 0: NEVER_KW@2374..2379 "never" [] [] - 5: SEMICOLON@2379..2380 ";" [] [] - 27: TS_TYPE_ALIAS_DECLARATION@2380..2447 - 0: TYPE_KW@2380..2386 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2386..2389 - 0: IDENT@2386..2389 "T5" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@2389..2391 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@2391..2446 - 0: TS_REFERENCE_TYPE@2391..2394 - 0: JS_REFERENCE_IDENTIFIER@2391..2394 - 0: IDENT@2391..2394 "F1" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2394..2402 "extends" [] [Whitespace(" ")] - 2: TS_FUNCTION_TYPE@2402..2435 - 0: (empty) - 1: JS_PARAMETERS@2402..2427 - 0: L_PAREN@2402..2403 "(" [] [] - 1: JS_PARAMETER_LIST@2403..2425 - 0: JS_FORMAL_PARAMETER@2403..2425 - 0: JS_DECORATOR_LIST@2403..2403 - 1: JS_IDENTIFIER_BINDING@2403..2407 - 0: IDENT@2403..2407 "args" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@2407..2425 - 0: COLON@2407..2409 ":" [] [Whitespace(" ")] - 1: TS_TUPLE_TYPE@2409..2425 - 0: L_BRACK@2409..2410 "[" [] [] - 1: TS_TUPLE_TYPE_ELEMENT_LIST@2410..2424 - 0: TS_REST_TUPLE_TYPE_ELEMENT@2410..2424 - 0: DOT3@2410..2413 "..." [] [] - 1: TS_PARENTHESIZED_TYPE@2413..2424 - 0: L_PAREN@2413..2414 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2414..2423 - 0: L_PAREN@2414..2415 "(" [] [] - 1: TS_INFER_TYPE@2415..2422 - 0: INFER_KW@2415..2421 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2421..2422 - 0: IDENT@2421..2422 "T" [] [] - 2: (empty) - 2: R_PAREN@2422..2423 ")" [] [] - 2: R_PAREN@2423..2424 ")" [] [] - 2: R_BRACK@2424..2425 "]" [] [] - 4: (empty) - 2: R_PAREN@2425..2427 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@2427..2430 "=>" [] [Whitespace(" ")] - 3: TS_VOID_TYPE@2430..2435 - 0: VOID_KW@2430..2435 "void" [] [Whitespace(" ")] - 3: QUESTION@2435..2437 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@2437..2439 - 0: JS_REFERENCE_IDENTIFIER@2437..2439 - 0: IDENT@2437..2439 "T" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@2439..2441 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@2441..2446 - 0: NEVER_KW@2441..2446 "never" [] [] - 5: SEMICOLON@2446..2447 ";" [] [] - 28: TS_TYPE_ALIAS_DECLARATION@2447..2508 - 0: TYPE_KW@2447..2453 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2453..2455 - 0: IDENT@2453..2455 "T6" [] [] - 2: TS_TYPE_PARAMETERS@2455..2459 - 0: L_ANGLE@2455..2456 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@2456..2457 - 0: TS_TYPE_PARAMETER@2456..2457 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@2456..2456 - 1: TS_TYPE_PARAMETER_NAME@2456..2457 - 0: IDENT@2456..2457 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@2457..2459 ">" [] [Whitespace(" ")] - 3: EQ@2459..2461 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@2461..2507 - 0: TS_REFERENCE_TYPE@2461..2463 - 0: JS_REFERENCE_IDENTIFIER@2461..2463 - 0: IDENT@2461..2463 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2463..2471 "extends" [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@2471..2493 - 0: JS_REFERENCE_IDENTIFIER@2471..2479 - 0: IDENT@2471..2479 "IsNumber" [] [] - 1: TS_TYPE_ARGUMENTS@2479..2493 - 0: L_ANGLE@2479..2480 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@2480..2491 - 0: TS_PARENTHESIZED_TYPE@2480..2491 - 0: L_PAREN@2480..2481 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2481..2490 - 0: L_PAREN@2481..2482 "(" [] [] - 1: TS_INFER_TYPE@2482..2489 - 0: INFER_KW@2482..2488 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2488..2489 - 0: IDENT@2488..2489 "N" [] [] - 2: (empty) - 2: R_PAREN@2489..2490 ")" [] [] - 2: R_PAREN@2490..2491 ")" [] [] - 2: R_ANGLE@2491..2493 ">" [] [Whitespace(" ")] - 3: QUESTION@2493..2495 "?" [] [Whitespace(" ")] - 4: TS_BOOLEAN_LITERAL_TYPE@2495..2500 - 0: TRUE_KW@2495..2500 "true" [] [Whitespace(" ")] - 5: COLON@2500..2502 ":" [] [Whitespace(" ")] - 6: TS_BOOLEAN_LITERAL_TYPE@2502..2507 - 0: FALSE_KW@2502..2507 "false" [] [] - 5: SEMICOLON@2507..2508 ";" [] [] - 29: TS_TYPE_ALIAS_DECLARATION@2508..2577 - 0: TYPE_KW@2508..2514 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2514..2517 - 0: IDENT@2514..2517 "T7" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@2517..2519 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@2519..2576 - 0: TS_REFERENCE_TYPE@2519..2522 - 0: JS_REFERENCE_IDENTIFIER@2519..2522 - 0: IDENT@2519..2522 "F1" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2522..2530 "extends" [] [Whitespace(" ")] - 2: TS_FUNCTION_TYPE@2530..2565 - 0: (empty) - 1: JS_PARAMETERS@2530..2557 - 0: L_PAREN@2530..2531 "(" [] [] - 1: JS_PARAMETER_LIST@2531..2555 - 0: JS_REST_PARAMETER@2531..2555 - 0: JS_DECORATOR_LIST@2531..2531 - 1: DOT3@2531..2534 "..." [] [] - 2: JS_IDENTIFIER_BINDING@2534..2538 - 0: IDENT@2534..2538 "args" [] [] - 3: TS_TYPE_ANNOTATION@2538..2555 - 0: COLON@2538..2540 ":" [] [Whitespace(" ")] - 1: TS_PARENTHESIZED_TYPE@2540..2555 - 0: L_PAREN@2540..2541 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2541..2554 - 0: L_PAREN@2541..2542 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2542..2553 - 0: L_PAREN@2542..2543 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2543..2552 - 0: L_PAREN@2543..2544 "(" [] [] - 1: TS_INFER_TYPE@2544..2551 - 0: INFER_KW@2544..2550 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2550..2551 - 0: IDENT@2550..2551 "T" [] [] - 2: (empty) - 2: R_PAREN@2551..2552 ")" [] [] - 2: R_PAREN@2552..2553 ")" [] [] - 2: R_PAREN@2553..2554 ")" [] [] - 2: R_PAREN@2554..2555 ")" [] [] - 2: R_PAREN@2555..2557 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@2557..2560 "=>" [] [Whitespace(" ")] - 3: TS_VOID_TYPE@2560..2565 - 0: VOID_KW@2560..2565 "void" [] [Whitespace(" ")] - 3: QUESTION@2565..2567 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@2567..2569 - 0: JS_REFERENCE_IDENTIFIER@2567..2569 - 0: IDENT@2567..2569 "T" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@2569..2571 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@2571..2576 - 0: NEVER_KW@2571..2576 "never" [] [] - 5: SEMICOLON@2576..2577 ";" [] [] - 30: TS_TYPE_ALIAS_DECLARATION@2577..2648 - 0: TYPE_KW@2577..2583 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2583..2586 - 0: IDENT@2583..2586 "T8" [] [Whitespace(" ")] - 2: (empty) - 3: EQ@2586..2588 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@2588..2647 - 0: TS_REFERENCE_TYPE@2588..2591 - 0: JS_REFERENCE_IDENTIFIER@2588..2591 - 0: IDENT@2588..2591 "F1" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2591..2599 "extends" [] [Whitespace(" ")] - 2: TS_FUNCTION_TYPE@2599..2636 - 0: (empty) - 1: JS_PARAMETERS@2599..2628 - 0: L_PAREN@2599..2600 "(" [] [] - 1: JS_PARAMETER_LIST@2600..2626 - 0: JS_FORMAL_PARAMETER@2600..2626 - 0: JS_DECORATOR_LIST@2600..2600 - 1: JS_IDENTIFIER_BINDING@2600..2604 - 0: IDENT@2600..2604 "args" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@2604..2626 - 0: COLON@2604..2606 ":" [] [Whitespace(" ")] - 1: TS_TUPLE_TYPE@2606..2626 - 0: L_BRACK@2606..2607 "[" [] [] - 1: TS_TUPLE_TYPE_ELEMENT_LIST@2607..2625 - 0: TS_REST_TUPLE_TYPE_ELEMENT@2607..2625 - 0: DOT3@2607..2610 "..." [] [] - 1: TS_PARENTHESIZED_TYPE@2610..2625 - 0: L_PAREN@2610..2611 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2611..2624 - 0: L_PAREN@2611..2612 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2612..2623 - 0: L_PAREN@2612..2613 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2613..2622 - 0: L_PAREN@2613..2614 "(" [] [] - 1: TS_INFER_TYPE@2614..2621 - 0: INFER_KW@2614..2620 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2620..2621 - 0: IDENT@2620..2621 "T" [] [] - 2: (empty) - 2: R_PAREN@2621..2622 ")" [] [] - 2: R_PAREN@2622..2623 ")" [] [] - 2: R_PAREN@2623..2624 ")" [] [] - 2: R_PAREN@2624..2625 ")" [] [] - 2: R_BRACK@2625..2626 "]" [] [] - 4: (empty) - 2: R_PAREN@2626..2628 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@2628..2631 "=>" [] [Whitespace(" ")] - 3: TS_VOID_TYPE@2631..2636 - 0: VOID_KW@2631..2636 "void" [] [Whitespace(" ")] - 3: QUESTION@2636..2638 "?" [] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@2638..2640 - 0: JS_REFERENCE_IDENTIFIER@2638..2640 - 0: IDENT@2638..2640 "T" [] [Whitespace(" ")] - 1: (empty) - 5: COLON@2640..2642 ":" [] [Whitespace(" ")] - 6: TS_NEVER_TYPE@2642..2647 - 0: NEVER_KW@2642..2647 "never" [] [] - 5: SEMICOLON@2647..2648 ";" [] [] - 31: TS_TYPE_ALIAS_DECLARATION@2648..2713 - 0: TYPE_KW@2648..2654 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2654..2656 - 0: IDENT@2654..2656 "T9" [] [] - 2: TS_TYPE_PARAMETERS@2656..2660 - 0: L_ANGLE@2656..2657 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@2657..2658 - 0: TS_TYPE_PARAMETER@2657..2658 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@2657..2657 - 1: TS_TYPE_PARAMETER_NAME@2657..2658 - 0: IDENT@2657..2658 "T" [] [] - 2: (empty) - 3: (empty) - 2: R_ANGLE@2658..2660 ">" [] [Whitespace(" ")] - 3: EQ@2660..2662 "=" [] [Whitespace(" ")] - 4: TS_CONDITIONAL_TYPE@2662..2712 - 0: TS_REFERENCE_TYPE@2662..2664 - 0: JS_REFERENCE_IDENTIFIER@2662..2664 - 0: IDENT@2662..2664 "T" [] [Whitespace(" ")] - 1: (empty) - 1: EXTENDS_KW@2664..2672 "extends" [] [Whitespace(" ")] - 2: TS_REFERENCE_TYPE@2672..2698 - 0: JS_REFERENCE_IDENTIFIER@2672..2680 - 0: IDENT@2672..2680 "IsNumber" [] [] - 1: TS_TYPE_ARGUMENTS@2680..2698 - 0: L_ANGLE@2680..2681 "<" [] [] - 1: TS_TYPE_ARGUMENT_LIST@2681..2696 - 0: TS_PARENTHESIZED_TYPE@2681..2696 - 0: L_PAREN@2681..2682 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2682..2695 - 0: L_PAREN@2682..2683 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2683..2694 - 0: L_PAREN@2683..2684 "(" [] [] - 1: TS_PARENTHESIZED_TYPE@2684..2693 - 0: L_PAREN@2684..2685 "(" [] [] - 1: TS_INFER_TYPE@2685..2692 - 0: INFER_KW@2685..2691 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2691..2692 - 0: IDENT@2691..2692 "N" [] [] - 2: (empty) - 2: R_PAREN@2692..2693 ")" [] [] - 2: R_PAREN@2693..2694 ")" [] [] - 2: R_PAREN@2694..2695 ")" [] [] - 2: R_PAREN@2695..2696 ")" [] [] - 2: R_ANGLE@2696..2698 ">" [] [Whitespace(" ")] - 3: QUESTION@2698..2700 "?" [] [Whitespace(" ")] - 4: TS_BOOLEAN_LITERAL_TYPE@2700..2705 - 0: TRUE_KW@2700..2705 "true" [] [Whitespace(" ")] - 5: COLON@2705..2707 ":" [] [Whitespace(" ")] - 6: TS_BOOLEAN_LITERAL_TYPE@2707..2712 - 0: FALSE_KW@2707..2712 "false" [] [] - 5: SEMICOLON@2712..2713 ";" [] [] - 32: TS_TYPE_ALIAS_DECLARATION@2713..2836 - 0: TYPE_KW@2713..2719 "type" [Newline("\n")] [Whitespace(" ")] - 1: TS_IDENTIFIER_BINDING@2719..2726 - 0: IDENT@2719..2726 "Prepend" [] [] - 2: TS_TYPE_PARAMETERS@2726..2747 - 0: L_ANGLE@2726..2727 "<" [] [] - 1: TS_TYPE_PARAMETER_LIST@2727..2745 - 0: TS_TYPE_PARAMETER@2727..2728 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@2727..2727 - 1: TS_TYPE_PARAMETER_NAME@2727..2728 - 0: IDENT@2727..2728 "E" [] [] - 2: (empty) - 3: (empty) - 1: COMMA@2728..2730 "," [] [Whitespace(" ")] - 2: TS_TYPE_PARAMETER@2730..2745 - 0: TS_TYPE_PARAMETER_MODIFIER_LIST@2730..2730 - 1: TS_TYPE_PARAMETER_NAME@2730..2732 - 0: IDENT@2730..2732 "T" [] [Whitespace(" ")] - 2: TS_TYPE_CONSTRAINT_CLAUSE@2732..2745 - 0: EXTENDS_KW@2732..2740 "extends" [] [Whitespace(" ")] - 1: TS_ARRAY_TYPE@2740..2745 - 0: TS_ANY_TYPE@2740..2743 - 0: ANY_KW@2740..2743 "any" [] [] - 1: L_BRACK@2743..2744 "[" [] [] - 2: R_BRACK@2744..2745 "]" [] [] - 3: (empty) - 2: R_ANGLE@2745..2747 ">" [] [Whitespace(" ")] - 3: EQ@2747..2748 "=" [] [] - 4: TS_CONDITIONAL_TYPE@2748..2835 - 0: TS_PARENTHESIZED_TYPE@2748..2784 - 0: L_PAREN@2748..2754 "(" [Newline("\n"), Whitespace(" ")] [] - 1: TS_FUNCTION_TYPE@2754..2782 - 0: (empty) - 1: JS_PARAMETERS@2754..2776 - 0: L_PAREN@2754..2755 "(" [] [] - 1: JS_PARAMETER_LIST@2755..2774 - 0: JS_FORMAL_PARAMETER@2755..2762 - 0: JS_DECORATOR_LIST@2755..2755 - 1: JS_IDENTIFIER_BINDING@2755..2759 - 0: IDENT@2755..2759 "head" [] [] - 2: (empty) - 3: TS_TYPE_ANNOTATION@2759..2762 - 0: COLON@2759..2761 ":" [] [Whitespace(" ")] - 1: TS_REFERENCE_TYPE@2761..2762 - 0: JS_REFERENCE_IDENTIFIER@2761..2762 - 0: IDENT@2761..2762 "E" [] [] - 1: (empty) - 4: (empty) - 1: COMMA@2762..2764 "," [] [Whitespace(" ")] - 2: JS_REST_PARAMETER@2764..2774 - 0: JS_DECORATOR_LIST@2764..2764 - 1: DOT3@2764..2767 "..." [] [] - 2: JS_IDENTIFIER_BINDING@2767..2771 - 0: IDENT@2767..2771 "args" [] [] - 3: TS_TYPE_ANNOTATION@2771..2774 - 0: COLON@2771..2773 ":" [] [Whitespace(" ")] - 1: TS_REFERENCE_TYPE@2773..2774 - 0: JS_REFERENCE_IDENTIFIER@2773..2774 - 0: IDENT@2773..2774 "T" [] [] - 1: (empty) - 2: R_PAREN@2774..2776 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@2776..2779 "=>" [] [Whitespace(" ")] - 3: TS_ANY_TYPE@2779..2782 - 0: ANY_KW@2779..2782 "any" [] [] - 2: R_PAREN@2782..2784 ")" [] [Whitespace(" ")] - 1: EXTENDS_KW@2784..2792 "extends" [] [Whitespace(" ")] - 2: TS_PARENTHESIZED_TYPE@2792..2819 - 0: L_PAREN@2792..2793 "(" [] [] - 1: TS_FUNCTION_TYPE@2793..2818 - 0: (empty) - 1: JS_PARAMETERS@2793..2812 - 0: L_PAREN@2793..2794 "(" [] [] - 1: JS_PARAMETER_LIST@2794..2810 - 0: JS_REST_PARAMETER@2794..2810 - 0: JS_DECORATOR_LIST@2794..2794 - 1: DOT3@2794..2797 "..." [] [] - 2: JS_IDENTIFIER_BINDING@2797..2801 - 0: IDENT@2797..2801 "args" [] [] - 3: TS_TYPE_ANNOTATION@2801..2810 - 0: COLON@2801..2803 ":" [] [Whitespace(" ")] - 1: TS_INFER_TYPE@2803..2810 - 0: INFER_KW@2803..2809 "infer" [] [Whitespace(" ")] - 1: TS_TYPE_PARAMETER_NAME@2809..2810 - 0: IDENT@2809..2810 "U" [] [] - 2: (empty) - 2: R_PAREN@2810..2812 ")" [] [Whitespace(" ")] - 2: FAT_ARROW@2812..2815 "=>" [] [Whitespace(" ")] - 3: TS_ANY_TYPE@2815..2818 - 0: ANY_KW@2815..2818 "any" [] [] - 2: R_PAREN@2818..2819 ")" [] [] - 3: QUESTION@2819..2826 "?" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 4: TS_REFERENCE_TYPE@2826..2827 - 0: JS_REFERENCE_IDENTIFIER@2826..2827 - 0: IDENT@2826..2827 "U" [] [] - 1: (empty) - 5: COLON@2827..2834 ":" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 6: TS_REFERENCE_TYPE@2834..2835 - 0: JS_REFERENCE_IDENTIFIER@2834..2835 - 0: IDENT@2834..2835 "T" [] [] - 1: (empty) - 5: SEMICOLON@2835..2836 ";" [] [] - 4: EOF@2836..2837 "" [Newline("\n")] [] + 3: JS_MODULE_ITEM_LIST@0..0 + 4: EOF@0..0 "" [] [] diff --git a/crates/biome_js_parser/test_data/inline/ok/ts_infer_type_allowed.ts b/crates/biome_js_parser/test_data/inline/ok/ts_infer_type_allowed.ts index 937b7a5d6ad8..e69de29bb2d1 100644 --- a/crates/biome_js_parser/test_data/inline/ok/ts_infer_type_allowed.ts +++ b/crates/biome_js_parser/test_data/inline/ok/ts_infer_type_allowed.ts @@ -1,51 +0,0 @@ -type Args = F extends (...args: infer A) => void ? A : never; -type A = T extends import("test").C ? P : never -type A = T extends typeof Array ? P : never -type A = T extends { set(a: infer P): number } ? P : never -type A = T extends { get(): infer P } ? P : never -type A = T extends { method(this: infer P): number } ? P : never -type valid9 = T extends Array ? R : any; -type ContentBetweenBrackets = S extends `[${infer T}]` ? T : never; -type WithSelectors = S extends { getState: () => infer T } - ? S & { use: { [K in keyof T]: () => T[K] } } - : never; -type A = MyType extends (OtherType extends infer T ? infer U : InnerFalse) ? OuterTrue : OuterFalse -type Join = - T extends [] ? '' : - T extends [string | number | boolean | bigint] ? `${T[0]}` : - T extends [string | number | boolean | bigint, ...infer U] ? `${T[0]}${D}${Join}` : - string; -type MatchPair = S extends `[${infer A},${infer B}]` ? [A, B] : unknown; -type FirstTwoAndRest = S extends `${infer A}${infer B}${infer R}` ? [`${A}${B}`, R] : unknown; -type Trim = - S extends `${infer T} ` ? Trim : - S; -type Foo = T extends `*${infer S}*` ? S : never; -type Unpacked = T extends (infer U)[] ? U : - T extends (...args: any[]) => infer U ? U : - T extends Promise ? U : - T; -type ArgumentType any> = T extends (a: infer A) => any ? A : any; -type X3 = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never; -type X1 = T extends { x: infer X, y: infer Y } ? [X, Y] : any; -type T62 = U extends (infer U)[] ? U : U; -type T63 = T extends ((infer A) extends infer B ? infer C : infer D) ? string : number; -type T75 = T extends T74 ? T70 | T72 | T74 : never; -type Jsonified = T extends string | number | boolean | null ? T - : T extends undefined | Function ? never - : T extends { toJSON(): infer R } ? R - : T extends object ? JsonifiedObject -: "what is this"; -type T1 = F1 extends (...args: (infer T)) => void ? T : never; -type T2 = F1 extends (args: [...(infer T)]) => void ? T : never; -type T3 = T extends IsNumber<(infer N)> ? true : false; -type T4 = F1 extends (...args: ((infer T))) => void ? T : never; -type T5 = F1 extends (args: [...((infer T))]) => void ? T : never; -type T6 = T extends IsNumber<((infer N))> ? true : false; -type T7 = F1 extends (...args: ((((infer T))))) => void ? T : never; -type T8 = F1 extends (args: [...((((infer T))))]) => void ? T : never; -type T9 = T extends IsNumber<((((infer N))))> ? true : false; -type Prepend = - ((head: E, ...args: T) => any) extends ((...args: infer U) => any) - ? U - : T; diff --git a/crates/biome_js_syntax/src/generated/nodes.rs b/crates/biome_js_syntax/src/generated/nodes.rs index 7486a3b58eb5..25ab455b9216 100644 --- a/crates/biome_js_syntax/src/generated/nodes.rs +++ b/crates/biome_js_syntax/src/generated/nodes.rs @@ -9937,9 +9937,7 @@ impl TsImportType { TsImportTypeFields { typeof_token: self.typeof_token(), import_token: self.import_token(), - l_paren_token: self.l_paren_token(), - argument_token: self.argument_token(), - r_paren_token: self.r_paren_token(), + arguments: self.arguments(), qualifier_clause: self.qualifier_clause(), type_arguments: self.type_arguments(), } @@ -9950,20 +9948,14 @@ impl TsImportType { pub fn import_token(&self) -> SyntaxResult { support::required_token(&self.syntax, 1usize) } - pub fn l_paren_token(&self) -> SyntaxResult { - support::required_token(&self.syntax, 2usize) - } - pub fn argument_token(&self) -> SyntaxResult { - support::required_token(&self.syntax, 3usize) - } - pub fn r_paren_token(&self) -> SyntaxResult { - support::required_token(&self.syntax, 4usize) + pub fn arguments(&self) -> SyntaxResult { + support::required_node(&self.syntax, 2usize) } pub fn qualifier_clause(&self) -> Option { - support::node(&self.syntax, 5usize) + support::node(&self.syntax, 3usize) } pub fn type_arguments(&self) -> Option { - support::node(&self.syntax, 6usize) + support::node(&self.syntax, 4usize) } } impl Serialize for TsImportType { @@ -9978,9 +9970,7 @@ impl Serialize for TsImportType { pub struct TsImportTypeFields { pub typeof_token: Option, pub import_token: SyntaxResult, - pub l_paren_token: SyntaxResult, - pub argument_token: SyntaxResult, - pub r_paren_token: SyntaxResult, + pub arguments: SyntaxResult, pub qualifier_clause: Option, pub type_arguments: Option, } @@ -26004,18 +25994,7 @@ impl std::fmt::Debug for TsImportType { "import_token", &support::DebugSyntaxResult(self.import_token()), ) - .field( - "l_paren_token", - &support::DebugSyntaxResult(self.l_paren_token()), - ) - .field( - "argument_token", - &support::DebugSyntaxResult(self.argument_token()), - ) - .field( - "r_paren_token", - &support::DebugSyntaxResult(self.r_paren_token()), - ) + .field("arguments", &support::DebugSyntaxResult(self.arguments())) .field( "qualifier_clause", &support::DebugOptionalElement(self.qualifier_clause()), diff --git a/crates/biome_js_syntax/src/generated/nodes_mut.rs b/crates/biome_js_syntax/src/generated/nodes_mut.rs index 3416d6adc2b5..86138e8d5f6d 100644 --- a/crates/biome_js_syntax/src/generated/nodes_mut.rs +++ b/crates/biome_js_syntax/src/generated/nodes_mut.rs @@ -4625,33 +4625,21 @@ impl TsImportType { .splice_slots(1usize..=1usize, once(Some(element.into()))), ) } - pub fn with_l_paren_token(self, element: SyntaxToken) -> Self { - Self::unwrap_cast( - self.syntax - .splice_slots(2usize..=2usize, once(Some(element.into()))), - ) - } - pub fn with_argument_token(self, element: SyntaxToken) -> Self { - Self::unwrap_cast( - self.syntax - .splice_slots(3usize..=3usize, once(Some(element.into()))), - ) - } - pub fn with_r_paren_token(self, element: SyntaxToken) -> Self { + pub fn with_arguments(self, element: JsCallArguments) -> Self { Self::unwrap_cast( self.syntax - .splice_slots(4usize..=4usize, once(Some(element.into()))), + .splice_slots(2usize..=2usize, once(Some(element.into_syntax().into()))), ) } pub fn with_qualifier_clause(self, element: Option) -> Self { Self::unwrap_cast(self.syntax.splice_slots( - 5usize..=5usize, + 3usize..=3usize, once(element.map(|element| element.into_syntax().into())), )) } pub fn with_type_arguments(self, element: Option) -> Self { Self::unwrap_cast(self.syntax.splice_slots( - 6usize..=6usize, + 4usize..=4usize, once(element.map(|element| element.into_syntax().into())), )) } diff --git a/xtask/codegen/js.ungram b/xtask/codegen/js.ungram index d91649f3b712..73d284490220 100644 --- a/xtask/codegen/js.ungram +++ b/xtask/codegen/js.ungram @@ -2132,9 +2132,7 @@ TsMappedTypeReadonlyModifierClause = TsImportType = 'typeof'? 'import' - '(' - argument: 'js_string_literal' - ')' + arguments: JsCallArguments qualifier_clause: TsImportTypeQualifier? type_arguments: TsTypeArguments?