JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@0..4 "let" [] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsIdentifierBinding { name_token: IDENT@4..5 "a" [] [], }, variable_annotation: TsTypeAnnotation { colon_token: COLON@5..7 ":" [] [Whitespace(" ")], ty: TsAnyType { any_token: ANY_KW@7..10 "any" [] [], }, }, initializer: missing (optional), }, ], }, semicolon_token: SEMICOLON@10..11 ";" [] [], }, TsTypeAliasDeclaration { type_token: TYPE_KW@11..17 "type" [Newline("\n")] [Whitespace(" ")], binding_identifier: TsIdentifierBinding { name_token: IDENT@17..18 "B" [] [], }, type_parameters: TsTypeParameters { l_angle_token: L_ANGLE@18..19 "<" [] [], items: TsTypeParameterList [ TsTypeParameter { modifiers: TsTypeParameterModifierList [], name: TsTypeParameterName { ident_token: IDENT@19..20 "A" [] [], }, constraint: missing (optional), default: missing (optional), }, ], r_angle_token: R_ANGLE@20..22 ">" [] [Whitespace(" ")], }, eq_token: EQ@22..24 "=" [] [Whitespace(" ")], ty: TsObjectType { l_curly_token: L_CURLY@24..26 "{" [] [Whitespace(" ")], members: TsTypeMemberList [ TsPropertySignatureTypeMember { readonly_token: missing (optional), name: JsLiteralMemberName { value: IDENT@26..27 "a" [] [], }, optional_token: missing (optional), type_annotation: TsTypeAnnotation { colon_token: COLON@27..29 ":" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@29..31 "A" [] [Whitespace(" ")], }, type_arguments: missing (optional), }, }, separator_token: missing (optional), }, ], r_curly_token: R_CURLY@31..32 "}" [] [], }, semicolon_token: SEMICOLON@32..33 ";" [] [], }, JsExpressionStatement { expression: JsAssignmentExpression { left: JsParenthesizedAssignment { l_paren_token: L_PAREN@33..35 "(" [Newline("\n")] [], assignment: TsSatisfiesAssignment { assignment: JsIdentifierAssignment { name_token: IDENT@35..37 "a" [] [Whitespace(" ")], }, satisfies_token: SATISFIES_KW@37..47 "satisfies" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@47..53 "string" [] [], }, }, r_paren_token: R_PAREN@53..55 ")" [] [Whitespace(" ")], }, operator_token: EQ@55..57 "=" [] [Whitespace(" ")], right: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@57..65 "\"string\"" [] [], }, }, semicolon_token: SEMICOLON@65..66 ";" [] [], }, JsExpressionStatement { expression: JsAssignmentExpression { left: JsParenthesizedAssignment { l_paren_token: L_PAREN@66..68 "(" [Newline("\n")] [], assignment: TsSatisfiesAssignment { assignment: JsParenthesizedAssignment { l_paren_token: L_PAREN@68..69 "(" [] [], assignment: TsSatisfiesAssignment { assignment: JsIdentifierAssignment { name_token: IDENT@69..71 "a" [] [Whitespace(" ")], }, satisfies_token: SATISFIES_KW@71..81 "satisfies" [] [Whitespace(" ")], ty: TsAnyType { any_token: ANY_KW@81..84 "any" [] [], }, }, r_paren_token: R_PAREN@84..86 ")" [] [Whitespace(" ")], }, satisfies_token: SATISFIES_KW@86..96 "satisfies" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@96..102 "string" [] [], }, }, r_paren_token: R_PAREN@102..104 ")" [] [Whitespace(" ")], }, operator_token: EQ@104..106 "=" [] [Whitespace(" ")], right: JsNullLiteralExpression { value_token: NULL_KW@106..110 "null" [] [], }, }, semicolon_token: SEMICOLON@110..111 ";" [] [], }, JsExpressionStatement { expression: JsParenthesizedExpression { l_paren_token: L_PAREN@111..113 "(" [Newline("\n")] [], expression: JsAssignmentExpression { left: JsObjectAssignmentPattern { l_curly_token: L_CURLY@113..115 "{" [] [Whitespace(" ")], properties: JsObjectAssignmentPatternPropertyList [ JsObjectAssignmentPatternProperty { member: JsLiteralMemberName { value: IDENT@115..116 "b" [] [], }, colon_token: COLON@116..118 ":" [] [Whitespace(" ")], pattern: TsSatisfiesAssignment { assignment: JsIdentifierAssignment { name_token: IDENT@118..120 "a" [] [Whitespace(" ")], }, satisfies_token: SATISFIES_KW@120..130 "satisfies" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@130..137 "string" [] [Whitespace(" ")], }, }, init: missing (optional), }, ], r_curly_token: R_CURLY@137..139 "}" [] [Whitespace(" ")], }, operator_token: EQ@139..141 "=" [] [Whitespace(" ")], right: JsObjectExpression { l_curly_token: L_CURLY@141..143 "{" [] [Whitespace(" ")], members: JsObjectMemberList [ JsPropertyObjectMember { name: JsLiteralMemberName { value: IDENT@143..144 "b" [] [], }, colon_token: COLON@144..146 ":" [] [Whitespace(" ")], value: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@146..153 "\"test\"" [] [Whitespace(" ")], }, }, ], r_curly_token: R_CURLY@153..154 "}" [] [], }, }, r_paren_token: R_PAREN@154..155 ")" [] [], }, semicolon_token: SEMICOLON@155..156 ";" [] [], }, JsExpressionStatement { expression: JsParenthesizedExpression { l_paren_token: L_PAREN@156..158 "(" [Newline("\n")] [], expression: JsAssignmentExpression { left: JsArrayAssignmentPattern { l_brack_token: L_BRACK@158..160 "[" [] [Whitespace(" ")], elements: JsArrayAssignmentPatternElementList [ JsArrayAssignmentPatternElement { pattern: TsSatisfiesAssignment { assignment: JsIdentifierAssignment { name_token: IDENT@160..162 "a" [] [Whitespace(" ")], }, satisfies_token: SATISFIES_KW@162..172 "satisfies" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@172..179 "string" [] [Whitespace(" ")], }, }, init: missing (optional), }, ], r_brack_token: R_BRACK@179..181 "]" [] [Whitespace(" ")], }, operator_token: EQ@181..183 "=" [] [Whitespace(" ")], right: JsArrayExpression { l_brack_token: L_BRACK@183..185 "[" [] [Whitespace(" ")], elements: JsArrayElementList [ JsStringLiteralExpression { value_token: JS_STRING_LITERAL@185..192 "\"test\"" [] [Whitespace(" ")], }, ], r_brack_token: R_BRACK@192..193 "]" [] [], }, }, r_paren_token: R_PAREN@193..194 ")" [] [], }, semicolon_token: SEMICOLON@194..195 ";" [] [], }, JsForInStatement { for_token: FOR_KW@195..200 "for" [Newline("\n")] [Whitespace(" ")], l_paren_token: L_PAREN@200..201 "(" [] [], initializer: TsSatisfiesAssignment { assignment: JsIdentifierAssignment { name_token: IDENT@201..203 "a" [] [Whitespace(" ")], }, satisfies_token: SATISFIES_KW@203..213 "satisfies" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@213..220 "string" [] [Whitespace(" ")], }, }, in_token: IN_KW@220..223 "in" [] [Whitespace(" ")], expression: JsArrayExpression { l_brack_token: L_BRACK@223..224 "[" [] [], elements: JsArrayElementList [], r_brack_token: R_BRACK@224..225 "]" [] [], }, r_paren_token: R_PAREN@225..227 ")" [] [Whitespace(" ")], body: JsBlockStatement { l_curly_token: L_CURLY@227..228 "{" [] [], statements: JsStatementList [], r_curly_token: R_CURLY@228..229 "}" [] [], }, }, JsExpressionStatement { expression: JsAssignmentExpression { left: JsParenthesizedAssignment { l_paren_token: L_PAREN@229..231 "(" [Newline("\n")] [], assignment: TsSatisfiesAssignment { assignment: JsIdentifierAssignment { name_token: IDENT@231..233 "a" [] [Whitespace(" ")], }, satisfies_token: SATISFIES_KW@233..243 "satisfies" [] [Whitespace(" ")], ty: TsReferenceType { name: JsReferenceIdentifier { value_token: IDENT@243..244 "B" [] [], }, type_arguments: TsTypeArguments { l_angle_token: L_ANGLE@244..245 "<" [] [], ts_type_argument_list: TsTypeArgumentList [ TsStringType { string_token: STRING_KW@245..251 "string" [] [], }, ], r_angle_token: R_ANGLE@251..252 ">" [] [], }, }, }, r_paren_token: R_PAREN@252..254 ")" [] [Whitespace(" ")], }, operator_token: EQ@254..256 "=" [] [Whitespace(" ")], right: JsObjectExpression { l_curly_token: L_CURLY@256..258 "{" [] [Whitespace(" ")], members: JsObjectMemberList [ JsPropertyObjectMember { name: JsLiteralMemberName { value: IDENT@258..259 "a" [] [], }, colon_token: COLON@259..261 ":" [] [Whitespace(" ")], value: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@261..268 "\"test\"" [] [Whitespace(" ")], }, }, ], r_curly_token: R_CURLY@268..269 "}" [] [], }, }, semicolon_token: SEMICOLON@269..270 ";" [] [], }, ], eof_token: EOF@270..271 "" [Newline("\n")] [], } 0: JS_MODULE@0..271 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..270 0: JS_VARIABLE_STATEMENT@0..11 0: JS_VARIABLE_DECLARATION@0..10 0: (empty) 1: LET_KW@0..4 "let" [] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@4..10 0: JS_VARIABLE_DECLARATOR@4..10 0: JS_IDENTIFIER_BINDING@4..5 0: IDENT@4..5 "a" [] [] 1: TS_TYPE_ANNOTATION@5..10 0: COLON@5..7 ":" [] [Whitespace(" ")] 1: TS_ANY_TYPE@7..10 0: ANY_KW@7..10 "any" [] [] 2: (empty) 1: SEMICOLON@10..11 ";" [] [] 1: TS_TYPE_ALIAS_DECLARATION@11..33 0: TYPE_KW@11..17 "type" [Newline("\n")] [Whitespace(" ")] 1: TS_IDENTIFIER_BINDING@17..18 0: IDENT@17..18 "B" [] [] 2: TS_TYPE_PARAMETERS@18..22 0: L_ANGLE@18..19 "<" [] [] 1: TS_TYPE_PARAMETER_LIST@19..20 0: TS_TYPE_PARAMETER@19..20 0: TS_TYPE_PARAMETER_MODIFIER_LIST@19..19 1: TS_TYPE_PARAMETER_NAME@19..20 0: IDENT@19..20 "A" [] [] 2: (empty) 3: (empty) 2: R_ANGLE@20..22 ">" [] [Whitespace(" ")] 3: EQ@22..24 "=" [] [Whitespace(" ")] 4: TS_OBJECT_TYPE@24..32 0: L_CURLY@24..26 "{" [] [Whitespace(" ")] 1: TS_TYPE_MEMBER_LIST@26..31 0: TS_PROPERTY_SIGNATURE_TYPE_MEMBER@26..31 0: (empty) 1: JS_LITERAL_MEMBER_NAME@26..27 0: IDENT@26..27 "a" [] [] 2: (empty) 3: TS_TYPE_ANNOTATION@27..31 0: COLON@27..29 ":" [] [Whitespace(" ")] 1: TS_REFERENCE_TYPE@29..31 0: JS_REFERENCE_IDENTIFIER@29..31 0: IDENT@29..31 "A" [] [Whitespace(" ")] 1: (empty) 4: (empty) 2: R_CURLY@31..32 "}" [] [] 5: SEMICOLON@32..33 ";" [] [] 2: JS_EXPRESSION_STATEMENT@33..66 0: JS_ASSIGNMENT_EXPRESSION@33..65 0: JS_PARENTHESIZED_ASSIGNMENT@33..55 0: L_PAREN@33..35 "(" [Newline("\n")] [] 1: TS_SATISFIES_ASSIGNMENT@35..53 0: JS_IDENTIFIER_ASSIGNMENT@35..37 0: IDENT@35..37 "a" [] [Whitespace(" ")] 1: SATISFIES_KW@37..47 "satisfies" [] [Whitespace(" ")] 2: TS_STRING_TYPE@47..53 0: STRING_KW@47..53 "string" [] [] 2: R_PAREN@53..55 ")" [] [Whitespace(" ")] 1: EQ@55..57 "=" [] [Whitespace(" ")] 2: JS_STRING_LITERAL_EXPRESSION@57..65 0: JS_STRING_LITERAL@57..65 "\"string\"" [] [] 1: SEMICOLON@65..66 ";" [] [] 3: JS_EXPRESSION_STATEMENT@66..111 0: JS_ASSIGNMENT_EXPRESSION@66..110 0: JS_PARENTHESIZED_ASSIGNMENT@66..104 0: L_PAREN@66..68 "(" [Newline("\n")] [] 1: TS_SATISFIES_ASSIGNMENT@68..102 0: JS_PARENTHESIZED_ASSIGNMENT@68..86 0: L_PAREN@68..69 "(" [] [] 1: TS_SATISFIES_ASSIGNMENT@69..84 0: JS_IDENTIFIER_ASSIGNMENT@69..71 0: IDENT@69..71 "a" [] [Whitespace(" ")] 1: SATISFIES_KW@71..81 "satisfies" [] [Whitespace(" ")] 2: TS_ANY_TYPE@81..84 0: ANY_KW@81..84 "any" [] [] 2: R_PAREN@84..86 ")" [] [Whitespace(" ")] 1: SATISFIES_KW@86..96 "satisfies" [] [Whitespace(" ")] 2: TS_STRING_TYPE@96..102 0: STRING_KW@96..102 "string" [] [] 2: R_PAREN@102..104 ")" [] [Whitespace(" ")] 1: EQ@104..106 "=" [] [Whitespace(" ")] 2: JS_NULL_LITERAL_EXPRESSION@106..110 0: NULL_KW@106..110 "null" [] [] 1: SEMICOLON@110..111 ";" [] [] 4: JS_EXPRESSION_STATEMENT@111..156 0: JS_PARENTHESIZED_EXPRESSION@111..155 0: L_PAREN@111..113 "(" [Newline("\n")] [] 1: JS_ASSIGNMENT_EXPRESSION@113..154 0: JS_OBJECT_ASSIGNMENT_PATTERN@113..139 0: L_CURLY@113..115 "{" [] [Whitespace(" ")] 1: JS_OBJECT_ASSIGNMENT_PATTERN_PROPERTY_LIST@115..137 0: JS_OBJECT_ASSIGNMENT_PATTERN_PROPERTY@115..137 0: JS_LITERAL_MEMBER_NAME@115..116 0: IDENT@115..116 "b" [] [] 1: COLON@116..118 ":" [] [Whitespace(" ")] 2: TS_SATISFIES_ASSIGNMENT@118..137 0: JS_IDENTIFIER_ASSIGNMENT@118..120 0: IDENT@118..120 "a" [] [Whitespace(" ")] 1: SATISFIES_KW@120..130 "satisfies" [] [Whitespace(" ")] 2: TS_STRING_TYPE@130..137 0: STRING_KW@130..137 "string" [] [Whitespace(" ")] 3: (empty) 2: R_CURLY@137..139 "}" [] [Whitespace(" ")] 1: EQ@139..141 "=" [] [Whitespace(" ")] 2: JS_OBJECT_EXPRESSION@141..154 0: L_CURLY@141..143 "{" [] [Whitespace(" ")] 1: JS_OBJECT_MEMBER_LIST@143..153 0: JS_PROPERTY_OBJECT_MEMBER@143..153 0: JS_LITERAL_MEMBER_NAME@143..144 0: IDENT@143..144 "b" [] [] 1: COLON@144..146 ":" [] [Whitespace(" ")] 2: JS_STRING_LITERAL_EXPRESSION@146..153 0: JS_STRING_LITERAL@146..153 "\"test\"" [] [Whitespace(" ")] 2: R_CURLY@153..154 "}" [] [] 2: R_PAREN@154..155 ")" [] [] 1: SEMICOLON@155..156 ";" [] [] 5: JS_EXPRESSION_STATEMENT@156..195 0: JS_PARENTHESIZED_EXPRESSION@156..194 0: L_PAREN@156..158 "(" [Newline("\n")] [] 1: JS_ASSIGNMENT_EXPRESSION@158..193 0: JS_ARRAY_ASSIGNMENT_PATTERN@158..181 0: L_BRACK@158..160 "[" [] [Whitespace(" ")] 1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@160..179 0: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@160..179 0: TS_SATISFIES_ASSIGNMENT@160..179 0: JS_IDENTIFIER_ASSIGNMENT@160..162 0: IDENT@160..162 "a" [] [Whitespace(" ")] 1: SATISFIES_KW@162..172 "satisfies" [] [Whitespace(" ")] 2: TS_STRING_TYPE@172..179 0: STRING_KW@172..179 "string" [] [Whitespace(" ")] 1: (empty) 2: R_BRACK@179..181 "]" [] [Whitespace(" ")] 1: EQ@181..183 "=" [] [Whitespace(" ")] 2: JS_ARRAY_EXPRESSION@183..193 0: L_BRACK@183..185 "[" [] [Whitespace(" ")] 1: JS_ARRAY_ELEMENT_LIST@185..192 0: JS_STRING_LITERAL_EXPRESSION@185..192 0: JS_STRING_LITERAL@185..192 "\"test\"" [] [Whitespace(" ")] 2: R_BRACK@192..193 "]" [] [] 2: R_PAREN@193..194 ")" [] [] 1: SEMICOLON@194..195 ";" [] [] 6: JS_FOR_IN_STATEMENT@195..229 0: FOR_KW@195..200 "for" [Newline("\n")] [Whitespace(" ")] 1: L_PAREN@200..201 "(" [] [] 2: TS_SATISFIES_ASSIGNMENT@201..220 0: JS_IDENTIFIER_ASSIGNMENT@201..203 0: IDENT@201..203 "a" [] [Whitespace(" ")] 1: SATISFIES_KW@203..213 "satisfies" [] [Whitespace(" ")] 2: TS_STRING_TYPE@213..220 0: STRING_KW@213..220 "string" [] [Whitespace(" ")] 3: IN_KW@220..223 "in" [] [Whitespace(" ")] 4: JS_ARRAY_EXPRESSION@223..225 0: L_BRACK@223..224 "[" [] [] 1: JS_ARRAY_ELEMENT_LIST@224..224 2: R_BRACK@224..225 "]" [] [] 5: R_PAREN@225..227 ")" [] [Whitespace(" ")] 6: JS_BLOCK_STATEMENT@227..229 0: L_CURLY@227..228 "{" [] [] 1: JS_STATEMENT_LIST@228..228 2: R_CURLY@228..229 "}" [] [] 7: JS_EXPRESSION_STATEMENT@229..270 0: JS_ASSIGNMENT_EXPRESSION@229..269 0: JS_PARENTHESIZED_ASSIGNMENT@229..254 0: L_PAREN@229..231 "(" [Newline("\n")] [] 1: TS_SATISFIES_ASSIGNMENT@231..252 0: JS_IDENTIFIER_ASSIGNMENT@231..233 0: IDENT@231..233 "a" [] [Whitespace(" ")] 1: SATISFIES_KW@233..243 "satisfies" [] [Whitespace(" ")] 2: TS_REFERENCE_TYPE@243..252 0: JS_REFERENCE_IDENTIFIER@243..244 0: IDENT@243..244 "B" [] [] 1: TS_TYPE_ARGUMENTS@244..252 0: L_ANGLE@244..245 "<" [] [] 1: TS_TYPE_ARGUMENT_LIST@245..251 0: TS_STRING_TYPE@245..251 0: STRING_KW@245..251 "string" [] [] 2: R_ANGLE@251..252 ">" [] [] 2: R_PAREN@252..254 ")" [] [Whitespace(" ")] 1: EQ@254..256 "=" [] [Whitespace(" ")] 2: JS_OBJECT_EXPRESSION@256..269 0: L_CURLY@256..258 "{" [] [Whitespace(" ")] 1: JS_OBJECT_MEMBER_LIST@258..268 0: JS_PROPERTY_OBJECT_MEMBER@258..268 0: JS_LITERAL_MEMBER_NAME@258..259 0: IDENT@258..259 "a" [] [] 1: COLON@259..261 ":" [] [Whitespace(" ")] 2: JS_STRING_LITERAL_EXPRESSION@261..268 0: JS_STRING_LITERAL@261..268 "\"test\"" [] [Whitespace(" ")] 2: R_CURLY@268..269 "}" [] [] 1: SEMICOLON@269..270 ";" [] [] 4: EOF@270..271 "" [Newline("\n")] []