Support Import Attributes (#14863)
* Print import attributes * Update visitor keys for import attributes * Update snapshots for visitor-keys * Update `babel-plugins` tests * Update import attributes tests * Update misc tests * Add changelog * Enable `importAttributes` and `importAssertions` * Print ImportAssertion syntax * Add `babel-plugins` tests * Add import assertions tests * Add misc tests for import assertions * Update changelog * Fix words * Use `deprecatedAssertSyntax` * Update `@babel/parser` * Use deprecatedAssertSyntax * Remove needless tests * Update `@babel/types` * Update visitor-keys * Run `yarn dedupe` * Update src/language-js/print/module.js Co-authored-by: Nicolò Ribaudo <hello@nicr.dev> * Address review --------- Co-authored-by: Nicolò Ribaudo <hello@nicr.dev>
This commit is contained in:
1 parent
7ba38c250d
commit
7ad852636d
30 files changed
+688
-28
No files matched your search
@@ -0,0 +1,9 @@
|
||||
#### Support Import Attributes (#14861, #14863 by @sosukesuzuki)
|
||||
|
||||
Support [Import Attributes](https://github.com/tc39/proposal-import-attributes) proposal.
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
```jsx
|
||||
import json from "./foo.json" with { type: "json" };
|
||||
import("./foo.json", { with: { type: "json" } });
|
||||
```
|
||||
+2
-2
@@ -32,8 +32,8 @@
|
||||
"dependencies": {
|
||||
"@angular/compiler": "16.0.3",
|
||||
"@babel/code-frame": "7.21.4",
|
||||
"@babel/parser": "7.22.3",
|
||||
"@babel/types": "7.22.3",
|
||||
"@babel/parser": "7.22.4",
|
||||
"@babel/types": "7.22.4",
|
||||
"@glimmer/syntax": "0.84.3",
|
||||
"@iarna/toml": "2.2.5",
|
||||
"@prettier/is-es5-identifier-name": "0.1.0",
|
||||
|
||||
@@ -36,7 +36,6 @@ const parseOptions = {
|
||||
"throwExpressions",
|
||||
"partialApplication",
|
||||
"decorators",
|
||||
"importAssertions",
|
||||
"decimal",
|
||||
"moduleBlocks",
|
||||
"asyncDoExpressions",
|
||||
@@ -45,6 +44,7 @@ const parseOptions = {
|
||||
"decoratorAutoAccessors",
|
||||
"importReflection",
|
||||
"explicitResourceManagement",
|
||||
["importAttributes", { deprecatedAssertSyntax: true }],
|
||||
],
|
||||
tokens: true,
|
||||
ranges: true,
|
||||
@@ -62,6 +62,7 @@ const pipelineOperatorPlugins = [
|
||||
["pipelineOperator", { proposal: "minimal" }],
|
||||
["pipelineOperator", { proposal: "fsharp" }],
|
||||
];
|
||||
|
||||
const appendPlugins = (plugins, options = parseOptions) => ({
|
||||
...options,
|
||||
plugins: [...options.plugins, ...plugins],
|
||||
|
||||
@@ -37,7 +37,7 @@ function printImportDeclaration(path, options, print) {
|
||||
printImportKind(node),
|
||||
printModuleSpecifiers(path, options, print),
|
||||
printModuleSource(path, options, print),
|
||||
printImportAssertions(path, options, print),
|
||||
printImportAttributes(path, options, print),
|
||||
options.semi ? ";" : "",
|
||||
];
|
||||
}
|
||||
@@ -93,7 +93,7 @@ function printExportDeclaration(path, options, print) {
|
||||
|
||||
parts.push(
|
||||
printModuleSource(path, options, print),
|
||||
printImportAssertions(path, options, print)
|
||||
printImportAttributes(path, options, print)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -246,16 +246,31 @@ function shouldNotPrintSpecifiers(node, options) {
|
||||
);
|
||||
}
|
||||
|
||||
function printImportAssertions(path, options, print) {
|
||||
/**
|
||||
* Print Import Attributes syntax.
|
||||
* If old ImportAssertions syntax is used, print them here.
|
||||
*/
|
||||
function printImportAttributes(path, options, print) {
|
||||
const { node } = path;
|
||||
if (!isNonEmptyArray(node.assertions)) {
|
||||
|
||||
const property = isNonEmptyArray(node.attributes)
|
||||
? "attributes"
|
||||
: isNonEmptyArray(node.assertions)
|
||||
? "assertions"
|
||||
: undefined;
|
||||
|
||||
if (!property) {
|
||||
return "";
|
||||
}
|
||||
|
||||
const keyword =
|
||||
property === "assertions" || node.extra?.deprecatedAssertSyntax
|
||||
? "assert"
|
||||
: "with";
|
||||
return [
|
||||
" assert {",
|
||||
` ${keyword} {`,
|
||||
options.bracketSpacing ? " " : "",
|
||||
join(", ", path.map(print, "assertions")),
|
||||
join(", ", path.map(print, property)),
|
||||
options.bracketSpacing ? " " : "",
|
||||
"}",
|
||||
];
|
||||
|
||||
@@ -1239,6 +1239,76 @@ import json from "./foo.json" assert { type: "json" };
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`import-attributes-dynamic.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:20)
|
||||
> 1 | import("./foo.json", { with: { type: "json" } });
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`import-attributes-dynamic.js [espree] format 1`] = `
|
||||
"Unexpected token , (1:20)
|
||||
> 1 | import("./foo.json", { with: { type: "json" } });
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`import-attributes-dynamic.js [meriyah] format 1`] = `
|
||||
"Expected ')' (1:20)
|
||||
> 1 | import("./foo.json", { with: { type: "json" } });
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`import-attributes-dynamic.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "babel-ts", "babel-flow"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
import("./foo.json", { with: { type: "json" } });
|
||||
|
||||
=====================================output=====================================
|
||||
import("./foo.json", { with: { type: "json" } });
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`import-attributes-static.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`import-attributes-static.js [espree] format 1`] = `
|
||||
"Unexpected token with (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`import-attributes-static.js [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (1:34)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`import-attributes-static.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "babel-ts", "babel-flow"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
import json from "./foo.json" with { type: "json" };
|
||||
|
||||
=====================================output=====================================
|
||||
import json from "./foo.json" with { type: "json" };
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`import-meta.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "babel-ts", "babel-flow"]
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
import("./foo.json", { with: { type: "json" } });
|
||||
@@ -0,0 +1 @@
|
||||
import json from "./foo.json" with { type: "json" };
|
||||
@@ -14,6 +14,8 @@ run_spec(import.meta, ["babel", "babel-ts", "babel-flow"], {
|
||||
"function-sent.js",
|
||||
"import-assertions-dynamic.js",
|
||||
"import-assertions-static.js",
|
||||
"import-attributes-dynamic.js",
|
||||
"import-attributes-static.js",
|
||||
"partial-application.js",
|
||||
"pipeline-operator-fsharp.js",
|
||||
"pipeline-operator-minimal.js",
|
||||
@@ -42,6 +44,8 @@ run_spec(import.meta, ["babel", "babel-ts", "babel-flow"], {
|
||||
"function-sent.js",
|
||||
"import-assertions-dynamic.js",
|
||||
"import-assertions-static.js",
|
||||
"import-attributes-dynamic.js",
|
||||
"import-attributes-static.js",
|
||||
"partial-application.js",
|
||||
"pipeline-operator-fsharp.js",
|
||||
"pipeline-operator-minimal.js",
|
||||
@@ -80,6 +84,8 @@ run_spec(import.meta, ["babel", "babel-ts", "babel-flow"], {
|
||||
"v8intrinsic.js",
|
||||
"import-assertions-dynamic.js",
|
||||
"import-assertions-static.js",
|
||||
"import-attributes-dynamic.js",
|
||||
"import-attributes-static.js",
|
||||
"module-string-names.js",
|
||||
"module-blocks.js",
|
||||
"async-do-expressions.js",
|
||||
|
||||
@@ -0,0 +1,324 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`dynamic-import.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:20)
|
||||
> 1 | import("./foo.json", { with: { type: "json" } });
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`dynamic-import.js [espree] format 1`] = `
|
||||
"Unexpected token , (1:20)
|
||||
> 1 | import("./foo.json", { with: { type: "json" } });
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`dynamic-import.js [meriyah] format 1`] = `
|
||||
"Expected ')' (1:20)
|
||||
> 1 | import("./foo.json", { with: { type: "json" } });
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`dynamic-import.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
import("./foo.json", { with: { type: "json" } });
|
||||
|
||||
=====================================output=====================================
|
||||
import("./foo.json", { with: { type: "json" } });
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`empty.js [acorn] format 1`] = `
|
||||
"Unexpected token (2:33)
|
||||
1 | export * as foo from "foo.json"
|
||||
> 2 | export * as bar from "bar.json" with { }
|
||||
| ^
|
||||
3 | export * as baz from "baz.json" with { /* comment */ }
|
||||
4 |
|
||||
5 | import * as foo from "foo.json""
|
||||
`;
|
||||
|
||||
exports[`empty.js [espree] format 1`] = `
|
||||
"Unexpected token with (2:33)
|
||||
1 | export * as foo from "foo.json"
|
||||
> 2 | export * as bar from "bar.json" with { }
|
||||
| ^
|
||||
3 | export * as baz from "baz.json" with { /* comment */ }
|
||||
4 |
|
||||
5 | import * as foo from "foo.json""
|
||||
`;
|
||||
|
||||
exports[`empty.js [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (2:36)
|
||||
1 | export * as foo from "foo.json"
|
||||
> 2 | export * as bar from "bar.json" with { }
|
||||
| ^
|
||||
3 | export * as baz from "baz.json" with { /* comment */ }
|
||||
4 |
|
||||
5 | import * as foo from "foo.json""
|
||||
`;
|
||||
|
||||
exports[`empty.js [typescript] format 1`] = `
|
||||
"';' expected. (2:33)
|
||||
1 | export * as foo from "foo.json"
|
||||
> 2 | export * as bar from "bar.json" with { }
|
||||
| ^
|
||||
3 | export * as baz from "baz.json" with { /* comment */ }
|
||||
4 |
|
||||
5 | import * as foo from "foo.json""
|
||||
`;
|
||||
|
||||
exports[`empty.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
export * as foo from "foo.json"
|
||||
export * as bar from "bar.json" with { }
|
||||
export * as baz from "baz.json" with { /* comment */ }
|
||||
|
||||
import * as foo from "foo.json"
|
||||
import * as bar from "bar.json" with { }
|
||||
import * as baz from "baz.json" with { /* comment */ }
|
||||
|
||||
=====================================output=====================================
|
||||
export * as foo from "foo.json";
|
||||
export * as bar from "bar.json";
|
||||
export * as baz from "baz.json" /* comment */;
|
||||
|
||||
import * as foo from "foo.json";
|
||||
import * as bar from "bar.json";
|
||||
import * as baz from "baz.json" /* comment */;
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`multi-types.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json", type: "bar" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`multi-types.js [espree] format 1`] = `
|
||||
"Unexpected token with (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json", type: "bar" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`multi-types.js [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (1:34)
|
||||
> 1 | import json from "./foo.json" with { type: "json", type: "bar" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`multi-types.js [typescript] format 1`] = `
|
||||
"';' expected. (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json", type: "bar" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`multi-types.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
import json from "./foo.json" with { type: "json", type: "bar" };
|
||||
|
||||
=====================================output=====================================
|
||||
import json from "./foo.json" with { type: "json", type: "bar" };
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`non-type.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:28)
|
||||
> 1 | import foo from "foo.json" with { lazy: "true" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`non-type.js [espree] format 1`] = `
|
||||
"Unexpected token with (1:28)
|
||||
> 1 | import foo from "foo.json" with { lazy: "true" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`non-type.js [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (1:31)
|
||||
> 1 | import foo from "foo.json" with { lazy: "true" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`non-type.js [typescript] format 1`] = `
|
||||
"';' expected. (1:28)
|
||||
> 1 | import foo from "foo.json" with { lazy: "true" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`non-type.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
import foo from "foo.json" with { lazy: "true" };
|
||||
|
||||
=====================================output=====================================
|
||||
import foo from "foo.json" with { lazy: "true" };
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`re-export.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:44)
|
||||
> 1 | export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 | export * from "foo.json" with { type: "json" };
|
||||
3 | export * as foo3 from "foo.json" with { type: "json" };
|
||||
4 |"
|
||||
`;
|
||||
|
||||
exports[`re-export.js [espree] format 1`] = `
|
||||
"Unexpected token with (1:44)
|
||||
> 1 | export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 | export * from "foo.json" with { type: "json" };
|
||||
3 | export * as foo3 from "foo.json" with { type: "json" };
|
||||
4 |"
|
||||
`;
|
||||
|
||||
exports[`re-export.js [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (1:47)
|
||||
> 1 | export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 | export * from "foo.json" with { type: "json" };
|
||||
3 | export * as foo3 from "foo.json" with { type: "json" };
|
||||
4 |"
|
||||
`;
|
||||
|
||||
exports[`re-export.js [typescript] format 1`] = `
|
||||
"';' expected. (1:44)
|
||||
> 1 | export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 | export * from "foo.json" with { type: "json" };
|
||||
3 | export * as foo3 from "foo.json" with { type: "json" };
|
||||
4 |"
|
||||
`;
|
||||
|
||||
exports[`re-export.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
export * from "foo.json" with { type: "json" };
|
||||
export * as foo3 from "foo.json" with { type: "json" };
|
||||
|
||||
=====================================output=====================================
|
||||
export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
export * from "foo.json" with { type: "json" };
|
||||
export * as foo3 from "foo.json" with { type: "json" };
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`static-import.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`static-import.js [espree] format 1`] = `
|
||||
"Unexpected token with (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`static-import.js [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (1:34)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`static-import.js [typescript] format 1`] = `
|
||||
"';' expected. (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`static-import.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
import json from "./foo.json" with { type: "json" };
|
||||
|
||||
=====================================output=====================================
|
||||
import json from "./foo.json" with { type: "json" };
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`without-from.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:14)
|
||||
> 1 | import "foo" with { type: "json" }
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`without-from.js [espree] format 1`] = `
|
||||
"Unexpected token with (1:14)
|
||||
> 1 | import "foo" with { type: "json" }
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`without-from.js [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (1:17)
|
||||
> 1 | import "foo" with { type: "json" }
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`without-from.js [typescript] format 1`] = `
|
||||
"';' expected. (1:14)
|
||||
> 1 | import "foo" with { type: "json" }
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`without-from.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
import "foo" with { type: "json" }
|
||||
|
||||
=====================================output=====================================
|
||||
import "foo" with { type: "json" };
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
@@ -0,0 +1,141 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`dynamic-import.js - {"bracketSpacing":false} [acorn] format 1`] = `
|
||||
"Unexpected token (1:20)
|
||||
> 1 | import("./foo.json", { with: { type: "json" } });
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`dynamic-import.js - {"bracketSpacing":false} [espree] format 1`] = `
|
||||
"Unexpected token , (1:20)
|
||||
> 1 | import("./foo.json", { with: { type: "json" } });
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`dynamic-import.js - {"bracketSpacing":false} [meriyah] format 1`] = `
|
||||
"Expected ')' (1:20)
|
||||
> 1 | import("./foo.json", { with: { type: "json" } });
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`dynamic-import.js - {"bracketSpacing":false} format 1`] = `
|
||||
====================================options=====================================
|
||||
bracketSpacing: false
|
||||
parsers: ["babel"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
import("./foo.json", { with: { type: "json" } });
|
||||
|
||||
=====================================output=====================================
|
||||
import("./foo.json", {with: {type: "json"}});
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`empty.js - {"bracketSpacing":false} [acorn] format 1`] = `
|
||||
"Unexpected token (1:33)
|
||||
> 1 | export * as bar from "bar.json" with { }
|
||||
| ^"
|
||||
`;
|
||||
|
||||
exports[`empty.js - {"bracketSpacing":false} [espree] format 1`] = `
|
||||
"Unexpected token with (1:33)
|
||||
> 1 | export * as bar from "bar.json" with { }
|
||||
| ^"
|
||||
`;
|
||||
|
||||
exports[`empty.js - {"bracketSpacing":false} [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (1:36)
|
||||
> 1 | export * as bar from "bar.json" with { }
|
||||
| ^"
|
||||
`;
|
||||
|
||||
exports[`empty.js - {"bracketSpacing":false} format 1`] = `
|
||||
====================================options=====================================
|
||||
bracketSpacing: false
|
||||
parsers: ["babel"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
export * as bar from "bar.json" with { }
|
||||
=====================================output=====================================
|
||||
export * as bar from "bar.json";
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`re-export.js - {"bracketSpacing":false} [acorn] format 1`] = `
|
||||
"Unexpected token (1:44)
|
||||
> 1 | export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`re-export.js - {"bracketSpacing":false} [espree] format 1`] = `
|
||||
"Unexpected token with (1:44)
|
||||
> 1 | export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`re-export.js - {"bracketSpacing":false} [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (1:47)
|
||||
> 1 | export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`re-export.js - {"bracketSpacing":false} format 1`] = `
|
||||
====================================options=====================================
|
||||
bracketSpacing: false
|
||||
parsers: ["babel"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
|
||||
=====================================output=====================================
|
||||
export {default as foo2} from "foo.json" with {type: "json"};
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`static-import.js - {"bracketSpacing":false} [acorn] format 1`] = `
|
||||
"Unexpected token (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`static-import.js - {"bracketSpacing":false} [espree] format 1`] = `
|
||||
"Unexpected token with (1:31)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`static-import.js - {"bracketSpacing":false} [meriyah] format 1`] = `
|
||||
"Unexpected token: 'with' (1:34)
|
||||
> 1 | import json from "./foo.json" with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`static-import.js - {"bracketSpacing":false} format 1`] = `
|
||||
====================================options=====================================
|
||||
bracketSpacing: false
|
||||
parsers: ["babel"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
import json from "./foo.json" with { type: "json" };
|
||||
|
||||
=====================================output=====================================
|
||||
import json from "./foo.json" with {type: "json"};
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
@@ -0,0 +1 @@
|
||||
import("./foo.json", { with: { type: "json" } });
|
||||
@@ -0,0 +1 @@
|
||||
export * as bar from "bar.json" with { }
|
||||
@@ -0,0 +1,23 @@
|
||||
run_spec(import.meta, ["babel"], {
|
||||
bracketSpacing: false,
|
||||
errors: {
|
||||
acorn: [
|
||||
"dynamic-import.js",
|
||||
"static-import.js",
|
||||
"re-export.js",
|
||||
"empty.js",
|
||||
],
|
||||
espree: [
|
||||
"dynamic-import.js",
|
||||
"static-import.js",
|
||||
"re-export.js",
|
||||
"empty.js",
|
||||
],
|
||||
meriyah: [
|
||||
"dynamic-import.js",
|
||||
"static-import.js",
|
||||
"re-export.js",
|
||||
"empty.js",
|
||||
],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
@@ -0,0 +1 @@
|
||||
import json from "./foo.json" with { type: "json" };
|
||||
@@ -0,0 +1 @@
|
||||
import("./foo.json", { with: { type: "json" } });
|
||||
@@ -0,0 +1,7 @@
|
||||
export * as foo from "foo.json"
|
||||
export * as bar from "bar.json" with { }
|
||||
export * as baz from "baz.json" with { /* comment */ }
|
||||
|
||||
import * as foo from "foo.json"
|
||||
import * as bar from "bar.json" with { }
|
||||
import * as baz from "baz.json" with { /* comment */ }
|
||||
@@ -0,0 +1,39 @@
|
||||
run_spec(import.meta, ["babel", "typescript"], {
|
||||
errors: {
|
||||
acorn: [
|
||||
"dynamic-import.js",
|
||||
"empty.js",
|
||||
"multi-types.js",
|
||||
"static-import.js",
|
||||
"re-export.js",
|
||||
"without-from.js",
|
||||
"non-type.js",
|
||||
],
|
||||
espree: [
|
||||
"dynamic-import.js",
|
||||
"empty.js",
|
||||
"multi-types.js",
|
||||
"static-import.js",
|
||||
"re-export.js",
|
||||
"without-from.js",
|
||||
"non-type.js",
|
||||
],
|
||||
meriyah: [
|
||||
"dynamic-import.js",
|
||||
"empty.js",
|
||||
"multi-types.js",
|
||||
"static-import.js",
|
||||
"re-export.js",
|
||||
"without-from.js",
|
||||
"non-type.js",
|
||||
],
|
||||
typescript: [
|
||||
"empty.js",
|
||||
"multi-types.js",
|
||||
"static-import.js",
|
||||
"re-export.js",
|
||||
"without-from.js",
|
||||
"non-type.js",
|
||||
],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
import json from "./foo.json" with { type: "json", type: "bar" };
|
||||
@@ -0,0 +1 @@
|
||||
import foo from "foo.json" with { lazy: "true" };
|
||||
@@ -0,0 +1,3 @@
|
||||
export { default as foo2 } from "foo.json" with { type: "json" };
|
||||
export * from "foo.json" with { type: "json" };
|
||||
export * as foo3 from "foo.json" with { type: "json" };
|
||||
@@ -0,0 +1 @@
|
||||
import json from "./foo.json" with { type: "json" };
|
||||
@@ -0,0 +1 @@
|
||||
import "foo" with { type: "json" }
|
||||
@@ -25,6 +25,20 @@ exports[`import-assertions-with-parens.js [babel] format 1`] = `
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`import-attributes-for-export-without-from.js [babel] format 1`] = `
|
||||
"Unexpected token, expected "(" (1:32)
|
||||
> 1 | export { default as foo } with { type: "json" };
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`import-attributes-with-parens.js [babel] format 1`] = `
|
||||
"Unexpected token, expected "{" (1:17)
|
||||
> 1 | import "x" with ({type: 'json'});
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`invalid-escape-in-identifier.js [babel] format 1`] = `
|
||||
"Invalid Unicode escape. (1:7)
|
||||
> 1 | const \\u{20} = 1
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`invalid-assertions.mjs [babel] format 1`] = `
|
||||
"\`import module x\` cannot have assertions. (1:15)
|
||||
> 1 | import module foo from "./module.json" assert { type: "json" }
|
||||
| ^
|
||||
2 |"
|
||||
`;
|
||||
|
||||
exports[`invalid-default-named-import.mjs [babel] format 1`] = `
|
||||
"Only \`import module x from "./module"\` is valid. (1:15)
|
||||
> 1 | import module foo, {bar} from "./module.wasm";
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
import module foo from "./module.json" assert { type: "json" }
|
||||
@@ -0,0 +1 @@
|
||||
export { default as foo } with { type: "json" };
|
||||
@@ -0,0 +1 @@
|
||||
import "x" with ({type: 'json'});
|
||||
@@ -263,8 +263,9 @@ exports[`visitor keys estree 1`] = `
|
||||
],
|
||||
"ExportAllDeclaration": [
|
||||
"source",
|
||||
"exported",
|
||||
"attributes",
|
||||
"assertions",
|
||||
"exported",
|
||||
],
|
||||
"ExportDefaultDeclaration": [
|
||||
"declaration",
|
||||
@@ -276,6 +277,7 @@ exports[`visitor keys estree 1`] = `
|
||||
"declaration",
|
||||
"specifiers",
|
||||
"source",
|
||||
"attributes",
|
||||
"assertions",
|
||||
],
|
||||
"ExportNamespaceSpecifier": [
|
||||
@@ -354,6 +356,7 @@ exports[`visitor keys estree 1`] = `
|
||||
"ImportDeclaration": [
|
||||
"specifiers",
|
||||
"source",
|
||||
"attributes",
|
||||
"assertions",
|
||||
],
|
||||
"ImportDefaultSpecifier": [
|
||||
|
||||
@@ -230,12 +230,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/parser@npm:7.22.3, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.5, @babel/parser@npm:^7.21.8":
|
||||
version: 7.22.3
|
||||
resolution: "@babel/parser@npm:7.22.3"
|
||||
"@babel/parser@npm:7.22.4, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.5, @babel/parser@npm:^7.21.8":
|
||||
version: 7.22.4
|
||||
resolution: "@babel/parser@npm:7.22.4"
|
||||
bin:
|
||||
parser: ./bin/babel-parser.js
|
||||
checksum: 016f2960212fd86817e15d90b9b3450d2b51af189b1c17a20ade5735d9ec69e76e29def317e09188ecd5fa6eab4f9ab72d88b8b829c1b2994400a6a2c2dc1958
|
||||
checksum: 0ca6d3a2d9aae2504ba1bc494704b64a83140884f7379f609de69bd39b60adb58a4f8ec692fe53fef8657dd82705d01b7e6efb65e18296326bdd66f71d52d9a9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -422,14 +422,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/types@npm:7.22.3, @babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.4, @babel/types@npm:^7.21.5, @babel/types@npm:^7.22.3, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3":
|
||||
version: 7.22.3
|
||||
resolution: "@babel/types@npm:7.22.3"
|
||||
"@babel/types@npm:7.22.4, @babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.4, @babel/types@npm:^7.21.5, @babel/types@npm:^7.22.3, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3":
|
||||
version: 7.22.4
|
||||
resolution: "@babel/types@npm:7.22.4"
|
||||
dependencies:
|
||||
"@babel/helper-string-parser": ^7.21.5
|
||||
"@babel/helper-validator-identifier": ^7.19.1
|
||||
to-fast-properties: ^2.0.0
|
||||
checksum: 6111fa5990635dfba8812a84bb4889429feb41a2c03c89de2654724e88a85b5740d4795c64a480d188d2f7109e7b47f3f0ba3d56da1b697cd31c65922f4decf7
|
||||
checksum: ffe36bb4f4a99ad13c426a98c3b508d70736036cae4e471d9c862e3a579847ed4f480686af0fce2633f6f7c0f0d3bf02da73da36e7edd3fde0b2061951dcba9a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6784,8 +6784,8 @@ __metadata:
|
||||
"@angular/compiler": 16.0.3
|
||||
"@babel/code-frame": 7.21.4
|
||||
"@babel/generator": 7.22.3
|
||||
"@babel/parser": 7.22.3
|
||||
"@babel/types": 7.22.3
|
||||
"@babel/parser": 7.22.4
|
||||
"@babel/types": 7.22.4
|
||||
"@esbuild-plugins/node-modules-polyfill": 0.2.2
|
||||
"@glimmer/reference": 0.84.3
|
||||
"@glimmer/syntax": 0.84.3
|
||||
|
||||
Reference in new issue
Block a user