JsModule { bom_token: missing (optional), interpreter_token: missing (optional), directives: JsDirectiveList [], items: JsModuleItemList [ JsExport { decorators: JsDecoratorList [], export_token: EXPORT_KW@0..7 "export" [] [Whitespace(" ")], export_clause: TsDeclareFunctionDeclaration { async_token: missing (optional), function_token: FUNCTION_KW@7..16 "function" [] [Whitespace(" ")], id: JsIdentifierBinding { name_token: IDENT@16..20 "test" [] [], }, type_parameters: missing (optional), parameters: JsParameters { l_paren_token: L_PAREN@20..21 "(" [] [], items: JsParameterList [ JsFormalParameter { decorators: JsDecoratorList [], binding: JsIdentifierBinding { name_token: IDENT@21..22 "a" [] [], }, question_mark_token: missing (optional), type_annotation: TsTypeAnnotation { colon_token: COLON@22..24 ":" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@24..30 "string" [] [], }, }, initializer: missing (optional), }, ], r_paren_token: R_PAREN@30..31 ")" [] [], }, return_type_annotation: TsReturnTypeAnnotation { colon_token: COLON@31..33 ":" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@33..39 "string" [] [], }, }, semicolon_token: SEMICOLON@39..40 ";" [] [], }, }, JsExport { decorators: JsDecoratorList [], export_token: EXPORT_KW@40..48 "export" [Newline("\n")] [Whitespace(" ")], export_clause: JsFunctionDeclaration { async_token: missing (optional), function_token: FUNCTION_KW@48..57 "function" [] [Whitespace(" ")], star_token: missing (optional), id: JsIdentifierBinding { name_token: IDENT@57..61 "test" [] [], }, type_parameters: missing (optional), parameters: JsParameters { l_paren_token: L_PAREN@61..62 "(" [] [], items: JsParameterList [ JsFormalParameter { decorators: JsDecoratorList [], binding: JsIdentifierBinding { name_token: IDENT@62..63 "a" [] [], }, question_mark_token: missing (optional), type_annotation: TsTypeAnnotation { colon_token: COLON@63..65 ":" [] [Whitespace(" ")], ty: TsUnionType { leading_separator_token: missing (optional), types: TsUnionTypeVariantList [ TsStringType { string_token: STRING_KW@65..72 "string" [] [Whitespace(" ")], }, PIPE@72..74 "|" [] [Whitespace(" ")], TsUndefinedType { undefined_token: UNDEFINED_KW@74..83 "undefined" [] [], }, ], }, }, initializer: missing (optional), }, ], r_paren_token: R_PAREN@83..84 ")" [] [], }, return_type_annotation: TsReturnTypeAnnotation { colon_token: COLON@84..86 ":" [] [Whitespace(" ")], ty: TsStringType { string_token: STRING_KW@86..93 "string" [] [Whitespace(" ")], }, }, body: JsFunctionBody { l_curly_token: L_CURLY@93..95 "{" [] [Whitespace(" ")], directives: JsDirectiveList [], statements: JsStatementList [ JsReturnStatement { return_token: RETURN_KW@95..102 "return" [] [Whitespace(" ")], argument: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@102..110 "\"hello\"" [] [Whitespace(" ")], }, semicolon_token: missing (optional), }, ], r_curly_token: R_CURLY@110..111 "}" [] [], }, }, }, ], eof_token: EOF@111..112 "" [Newline("\n")] [], } 0: JS_MODULE@0..112 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..111 0: JS_EXPORT@0..40 0: JS_DECORATOR_LIST@0..0 1: EXPORT_KW@0..7 "export" [] [Whitespace(" ")] 2: TS_DECLARE_FUNCTION_DECLARATION@7..40 0: (empty) 1: FUNCTION_KW@7..16 "function" [] [Whitespace(" ")] 2: JS_IDENTIFIER_BINDING@16..20 0: IDENT@16..20 "test" [] [] 3: (empty) 4: JS_PARAMETERS@20..31 0: L_PAREN@20..21 "(" [] [] 1: JS_PARAMETER_LIST@21..30 0: JS_FORMAL_PARAMETER@21..30 0: JS_DECORATOR_LIST@21..21 1: JS_IDENTIFIER_BINDING@21..22 0: IDENT@21..22 "a" [] [] 2: (empty) 3: TS_TYPE_ANNOTATION@22..30 0: COLON@22..24 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@24..30 0: STRING_KW@24..30 "string" [] [] 4: (empty) 2: R_PAREN@30..31 ")" [] [] 5: TS_RETURN_TYPE_ANNOTATION@31..39 0: COLON@31..33 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@33..39 0: STRING_KW@33..39 "string" [] [] 6: SEMICOLON@39..40 ";" [] [] 1: JS_EXPORT@40..111 0: JS_DECORATOR_LIST@40..40 1: EXPORT_KW@40..48 "export" [Newline("\n")] [Whitespace(" ")] 2: JS_FUNCTION_DECLARATION@48..111 0: (empty) 1: FUNCTION_KW@48..57 "function" [] [Whitespace(" ")] 2: (empty) 3: JS_IDENTIFIER_BINDING@57..61 0: IDENT@57..61 "test" [] [] 4: (empty) 5: JS_PARAMETERS@61..84 0: L_PAREN@61..62 "(" [] [] 1: JS_PARAMETER_LIST@62..83 0: JS_FORMAL_PARAMETER@62..83 0: JS_DECORATOR_LIST@62..62 1: JS_IDENTIFIER_BINDING@62..63 0: IDENT@62..63 "a" [] [] 2: (empty) 3: TS_TYPE_ANNOTATION@63..83 0: COLON@63..65 ":" [] [Whitespace(" ")] 1: TS_UNION_TYPE@65..83 0: (empty) 1: TS_UNION_TYPE_VARIANT_LIST@65..83 0: TS_STRING_TYPE@65..72 0: STRING_KW@65..72 "string" [] [Whitespace(" ")] 1: PIPE@72..74 "|" [] [Whitespace(" ")] 2: TS_UNDEFINED_TYPE@74..83 0: UNDEFINED_KW@74..83 "undefined" [] [] 4: (empty) 2: R_PAREN@83..84 ")" [] [] 6: TS_RETURN_TYPE_ANNOTATION@84..93 0: COLON@84..86 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@86..93 0: STRING_KW@86..93 "string" [] [Whitespace(" ")] 7: JS_FUNCTION_BODY@93..111 0: L_CURLY@93..95 "{" [] [Whitespace(" ")] 1: JS_DIRECTIVE_LIST@95..95 2: JS_STATEMENT_LIST@95..110 0: JS_RETURN_STATEMENT@95..110 0: RETURN_KW@95..102 "return" [] [Whitespace(" ")] 1: JS_STRING_LITERAL_EXPRESSION@102..110 0: JS_STRING_LITERAL@102..110 "\"hello\"" [] [Whitespace(" ")] 2: (empty) 3: R_CURLY@110..111 "}" [] [] 4: EOF@111..112 "" [Newline("\n")] []