JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsImport {
import_token: IMPORT_KW@0..7 "import" [] [Whitespace(" ")],
import_clause: JsImportBareClause {
source: JsModuleSource {
value_token: JS_STRING_LITERAL@7..11 "\"x\"" [] [Whitespace(" ")],
},
assertion: JsImportAssertion {
assertion_kind: ASSERT_KW@11..18 "assert" [] [Whitespace(" ")],
l_curly_token: L_CURLY@18..20 "{" [] [Whitespace(" ")],
assertions: JsImportAssertionEntryList [
JsImportAssertionEntry {
key: IDENT@20..24 "type" [] [],
colon_token: COLON@24..26 ":" [] [Whitespace(" ")],
value_token: JS_STRING_LITERAL@26..33 "\"json\"" [] [Whitespace(" ")],
},
],
r_curly_token: R_CURLY@33..34 "}" [] [],
},
},
semicolon_token: missing (optional),
},
JsImport {
import_token: IMPORT_KW@34..42 "import" [Newline("\n")] [Whitespace(" ")],
import_clause: JsImportBareClause {
source: JsModuleSource {
value_token: JS_STRING_LITERAL@42..48 "\"foo\"" [] [Whitespace(" ")],
},
assertion: JsImportAssertion {
assertion_kind: ASSERT_KW@48..55 "assert" [] [Whitespace(" ")],
l_curly_token: L_CURLY@55..57 "{" [] [Whitespace(" ")],
assertions: JsImportAssertionEntryList [
JsImportAssertionEntry {
key: JS_STRING_LITERAL@57..63 "\"type\"" [] [],
colon_token: COLON@63..65 ":" [] [Whitespace(" ")],
value_token: JS_STRING_LITERAL@65..72 "\"json\"" [] [Whitespace(" ")],
},
],
r_curly_token: R_CURLY@72..73 "}" [] [],
},
},
semicolon_token: SEMICOLON@73..74 ";" [] [],
},
JsImport {
import_token: IMPORT_KW@74..82 "import" [Newline("\n")] [Whitespace(" ")],
import_clause: JsImportDefaultClause {
type_token: missing (optional),
default_specifier: JsDefaultImportSpecifier {
local_name: JsIdentifierBinding {
name_token: IDENT@82..86 "foo" [] [Whitespace(" ")],
},
},
from_token: FROM_KW@86..91 "from" [] [Whitespace(" ")],
source: JsModuleSource {
value_token: JS_STRING_LITERAL@91..102 "\"foo.json\"" [] [Whitespace(" ")],
},
assertion: JsImportAssertion {
assertion_kind: ASSERT_KW@102..109 "assert" [] [Whitespace(" ")],
l_curly_token: L_CURLY@109..111 "{" [] [Whitespace(" ")],
assertions: JsImportAssertionEntryList [
JsImportAssertionEntry {
key: IDENT@111..115 "type" [] [],
colon_token: COLON@115..117 ":" [] [Whitespace(" ")],
value_token: JS_STRING_LITERAL@117..124 "\"json\"" [] [Whitespace(" ")],
},
],
r_curly_token: R_CURLY@124..125 "}" [] [],
},
},
semicolon_token: SEMICOLON@125..126 ";" [] [],
},
JsImport {
import_token: IMPORT_KW@126..134 "import" [Newline("\n")] [Whitespace(" ")],
import_clause: JsImportNamedClause {
type_token: missing (optional),
named_specifiers: JsNamedImportSpecifiers {
l_curly_token: L_CURLY@134..135 "{" [] [],
specifiers: JsNamedImportSpecifierList [
JsShorthandNamedImportSpecifier {
type_token: missing (optional),
local_name: JsIdentifierBinding {
name_token: IDENT@135..139 "test" [] [],
},
},
],
r_curly_token: R_CURLY@139..141 "}" [] [Whitespace(" ")],
},
from_token: FROM_KW@141..146 "from" [] [Whitespace(" ")],
source: JsModuleSource {
value_token: JS_STRING_LITERAL@146..157 "\"foo.json\"" [] [Whitespace(" ")],
},
assertion: JsImportAssertion {
assertion_kind: ASSERT_KW@157..164 "assert" [] [Whitespace(" ")],
l_curly_token: L_CURLY@164..166 "{" [] [Whitespace(" ")],
assertions: JsImportAssertionEntryList [
JsImportAssertionEntry {
key: IDENT@166..169 "for" [] [],
colon_token: COLON@169..171 ":" [] [Whitespace(" ")],
value_token: JS_STRING_LITERAL@171..177 "\"for\"" [] [Whitespace(" ")],
},
],
r_curly_token: R_CURLY@177..178 "}" [] [],
},
},
semicolon_token: missing (optional),
},
JsImport {
import_token: IMPORT_KW@178..186 "import" [Newline("\n")] [Whitespace(" ")],
import_clause: JsImportDefaultClause {
type_token: missing (optional),
default_specifier: JsDefaultImportSpecifier {
local_name: JsIdentifierBinding {
name_token: IDENT@186..195 "foo_json" [] [Whitespace(" ")],
},
},
from_token: FROM_KW@195..200 "from" [] [Whitespace(" ")],
source: JsModuleSource {
value_token: JS_STRING_LITERAL@200..211 "\"foo.json\"" [] [Whitespace(" ")],
},
assertion: JsImportAssertion {
assertion_kind: ASSERT_KW@211..218 "assert" [] [Whitespace(" ")],
l_curly_token: L_CURLY@218..220 "{" [] [Whitespace(" ")],
assertions: JsImportAssertionEntryList [
JsImportAssertionEntry {
key: IDENT@220..224 "type" [] [],
colon_token: COLON@224..226 ":" [] [Whitespace(" ")],
value_token: JS_STRING_LITERAL@226..232 "\"json\"" [] [],
},
COMMA@232..234 "," [] [Whitespace(" ")],
JsImportAssertionEntry {
key: IDENT@234..248 "hasOwnProperty" [] [],
colon_token: COLON@248..250 ":" [] [Whitespace(" ")],
value_token: JS_STRING_LITERAL@250..257 "\"true\"" [] [Whitespace(" ")],
},
],
r_curly_token: R_CURLY@257..258 "}" [] [],
},
},
semicolon_token: SEMICOLON@258..259 ";" [] [],
},
JsImport {
import_token: IMPORT_KW@259..267 "import" [Newline("\n")] [Whitespace(" ")],
import_clause: JsImportBareClause {
source: JsModuleSource {
value_token: JS_STRING_LITERAL@267..271 "\"x\"" [] [Whitespace(" ")],
},
assertion: JsImportAssertion {
assertion_kind: ASSERT_KW@271..277 "assert" [] [],
l_curly_token: L_CURLY@277..280 "{" [Newline("\n")] [Whitespace(" ")],
assertions: JsImportAssertionEntryList [
JsImportAssertionEntry {
key: IDENT@280..284 "type" [] [],
colon_token: COLON@284..286 ":" [] [Whitespace(" ")],
value_token: JS_STRING_LITERAL@286..293 "\"json\"" [] [Whitespace(" ")],
},
],
r_curly_token: R_CURLY@293..294 "}" [] [],
},
},
semicolon_token: missing (optional),
},
],
eof_token: EOF@294..295 "" [Newline("\n")] [],
}
0: JS_MODULE@0..295
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..294
0: JS_IMPORT@0..34
0: IMPORT_KW@0..7 "import" [] [Whitespace(" ")]
1: JS_IMPORT_BARE_CLAUSE@7..34
0: JS_MODULE_SOURCE@7..11
0: JS_STRING_LITERAL@7..11 "\"x\"" [] [Whitespace(" ")]
1: JS_IMPORT_ASSERTION@11..34
0: ASSERT_KW@11..18 "assert" [] [Whitespace(" ")]
1: L_CURLY@18..20 "{" [] [Whitespace(" ")]
2: JS_IMPORT_ASSERTION_ENTRY_LIST@20..33
0: JS_IMPORT_ASSERTION_ENTRY@20..33
0: IDENT@20..24 "type" [] []
1: COLON@24..26 ":" [] [Whitespace(" ")]
2: JS_STRING_LITERAL@26..33 "\"json\"" [] [Whitespace(" ")]
3: R_CURLY@33..34 "}" [] []
2: (empty)
1: JS_IMPORT@34..74
0: IMPORT_KW@34..42 "import" [Newline("\n")] [Whitespace(" ")]
1: JS_IMPORT_BARE_CLAUSE@42..73
0: JS_MODULE_SOURCE@42..48
0: JS_STRING_LITERAL@42..48 "\"foo\"" [] [Whitespace(" ")]
1: JS_IMPORT_ASSERTION@48..73
0: ASSERT_KW@48..55 "assert" [] [Whitespace(" ")]
1: L_CURLY@55..57 "{" [] [Whitespace(" ")]
2: JS_IMPORT_ASSERTION_ENTRY_LIST@57..72
0: JS_IMPORT_ASSERTION_ENTRY@57..72
0: JS_STRING_LITERAL@57..63 "\"type\"" [] []
1: COLON@63..65 ":" [] [Whitespace(" ")]
2: JS_STRING_LITERAL@65..72 "\"json\"" [] [Whitespace(" ")]
3: R_CURLY@72..73 "}" [] []
2: SEMICOLON@73..74 ";" [] []
2: JS_IMPORT@74..126
0: IMPORT_KW@74..82 "import" [Newline("\n")] [Whitespace(" ")]
1: JS_IMPORT_DEFAULT_CLAUSE@82..125
0: (empty)
1: JS_DEFAULT_IMPORT_SPECIFIER@82..86
0: JS_IDENTIFIER_BINDING@82..86
0: IDENT@82..86 "foo" [] [Whitespace(" ")]
2: FROM_KW@86..91 "from" [] [Whitespace(" ")]
3: JS_MODULE_SOURCE@91..102
0: JS_STRING_LITERAL@91..102 "\"foo.json\"" [] [Whitespace(" ")]
4: JS_IMPORT_ASSERTION@102..125
0: ASSERT_KW@102..109 "assert" [] [Whitespace(" ")]
1: L_CURLY@109..111 "{" [] [Whitespace(" ")]
2: JS_IMPORT_ASSERTION_ENTRY_LIST@111..124
0: JS_IMPORT_ASSERTION_ENTRY@111..124
0: IDENT@111..115 "type" [] []
1: COLON@115..117 ":" [] [Whitespace(" ")]
2: JS_STRING_LITERAL@117..124 "\"json\"" [] [Whitespace(" ")]
3: R_CURLY@124..125 "}" [] []
2: SEMICOLON@125..126 ";" [] []
3: JS_IMPORT@126..178
0: IMPORT_KW@126..134 "import" [Newline("\n")] [Whitespace(" ")]
1: JS_IMPORT_NAMED_CLAUSE@134..178
0: (empty)
1: JS_NAMED_IMPORT_SPECIFIERS@134..141
0: L_CURLY@134..135 "{" [] []
1: JS_NAMED_IMPORT_SPECIFIER_LIST@135..139
0: JS_SHORTHAND_NAMED_IMPORT_SPECIFIER@135..139
0: (empty)
1: JS_IDENTIFIER_BINDING@135..139
0: IDENT@135..139 "test" [] []
2: R_CURLY@139..141 "}" [] [Whitespace(" ")]
2: FROM_KW@141..146 "from" [] [Whitespace(" ")]
3: JS_MODULE_SOURCE@146..157
0: JS_STRING_LITERAL@146..157 "\"foo.json\"" [] [Whitespace(" ")]
4: JS_IMPORT_ASSERTION@157..178
0: ASSERT_KW@157..164 "assert" [] [Whitespace(" ")]
1: L_CURLY@164..166 "{" [] [Whitespace(" ")]
2: JS_IMPORT_ASSERTION_ENTRY_LIST@166..177
0: JS_IMPORT_ASSERTION_ENTRY@166..177
0: IDENT@166..169 "for" [] []
1: COLON@169..171 ":" [] [Whitespace(" ")]
2: JS_STRING_LITERAL@171..177 "\"for\"" [] [Whitespace(" ")]
3: R_CURLY@177..178 "}" [] []
2: (empty)
4: JS_IMPORT@178..259
0: IMPORT_KW@178..186 "import" [Newline("\n")] [Whitespace(" ")]
1: JS_IMPORT_DEFAULT_CLAUSE@186..258
0: (empty)
1: JS_DEFAULT_IMPORT_SPECIFIER@186..195
0: JS_IDENTIFIER_BINDING@186..195
0: IDENT@186..195 "foo_json" [] [Whitespace(" ")]
2: FROM_KW@195..200 "from" [] [Whitespace(" ")]
3: JS_MODULE_SOURCE@200..211
0: JS_STRING_LITERAL@200..211 "\"foo.json\"" [] [Whitespace(" ")]
4: JS_IMPORT_ASSERTION@211..258
0: ASSERT_KW@211..218 "assert" [] [Whitespace(" ")]
1: L_CURLY@218..220 "{" [] [Whitespace(" ")]
2: JS_IMPORT_ASSERTION_ENTRY_LIST@220..257
0: JS_IMPORT_ASSERTION_ENTRY@220..232
0: IDENT@220..224 "type" [] []
1: COLON@224..226 ":" [] [Whitespace(" ")]
2: JS_STRING_LITERAL@226..232 "\"json\"" [] []
1: COMMA@232..234 "," [] [Whitespace(" ")]
2: JS_IMPORT_ASSERTION_ENTRY@234..257
0: IDENT@234..248 "hasOwnProperty" [] []
1: COLON@248..250 ":" [] [Whitespace(" ")]
2: JS_STRING_LITERAL@250..257 "\"true\"" [] [Whitespace(" ")]
3: R_CURLY@257..258 "}" [] []
2: SEMICOLON@258..259 ";" [] []
5: JS_IMPORT@259..294
0: IMPORT_KW@259..267 "import" [Newline("\n")] [Whitespace(" ")]
1: JS_IMPORT_BARE_CLAUSE@267..294
0: JS_MODULE_SOURCE@267..271
0: JS_STRING_LITERAL@267..271 "\"x\"" [] [Whitespace(" ")]
1: JS_IMPORT_ASSERTION@271..294
0: ASSERT_KW@271..277 "assert" [] []
1: L_CURLY@277..280 "{" [Newline("\n")] [Whitespace(" ")]
2: JS_IMPORT_ASSERTION_ENTRY_LIST@280..293
0: JS_IMPORT_ASSERTION_ENTRY@280..293
0: IDENT@280..284 "type" [] []
1: COLON@284..286 ":" [] [Whitespace(" ")]
2: JS_STRING_LITERAL@286..293 "\"json\"" [] [Whitespace(" ")]
3: R_CURLY@293..294 "}" [] []
2: (empty)
4: EOF@294..295 "" [Newline("\n")] []