Add support for printing ImportAttribute (#11641)
This commit is contained in:
parent
8e41f26e12
commit
d7d36a6c25
@ -179,9 +179,24 @@ export function ImportDeclaration(node: Object) {
|
||||
}
|
||||
|
||||
this.print(node.source, node);
|
||||
|
||||
if (node.attributes?.length) {
|
||||
this.space();
|
||||
this.word("with");
|
||||
this.space();
|
||||
this.printList(node.attributes, node);
|
||||
}
|
||||
|
||||
this.semicolon();
|
||||
}
|
||||
|
||||
export function ImportAttribute(node: Object) {
|
||||
this.print(node.key);
|
||||
this.token(":");
|
||||
this.space();
|
||||
this.print(node.value);
|
||||
}
|
||||
|
||||
export function ImportNamespaceSpecifier(node: Object) {
|
||||
this.token("*");
|
||||
this.space();
|
||||
|
||||
1
packages/babel-generator/test/fixtures/types/Import2/input.js
vendored
Normal file
1
packages/babel-generator/test/fixtures/types/Import2/input.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import("foo.json", { with: { type: "json" } },);
|
||||
11
packages/babel-generator/test/fixtures/types/Import2/options.json
vendored
Normal file
11
packages/babel-generator/test/fixtures/types/Import2/options.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"plugins": [
|
||||
[
|
||||
"moduleAttributes",
|
||||
{
|
||||
"version": "may-2020"
|
||||
}
|
||||
]
|
||||
],
|
||||
"sourceType": "module"
|
||||
}
|
||||
5
packages/babel-generator/test/fixtures/types/Import2/output.js
vendored
Normal file
5
packages/babel-generator/test/fixtures/types/Import2/output.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
import("foo.json", {
|
||||
with: {
|
||||
type: "json"
|
||||
}
|
||||
});
|
||||
1
packages/babel-generator/test/fixtures/types/ImportAttribute/input.js
vendored
Normal file
1
packages/babel-generator/test/fixtures/types/ImportAttribute/input.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import foo from "foo.json" with type: "json";
|
||||
11
packages/babel-generator/test/fixtures/types/ImportAttribute/options.json
vendored
Normal file
11
packages/babel-generator/test/fixtures/types/ImportAttribute/options.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"plugins": [
|
||||
[
|
||||
"moduleAttributes",
|
||||
{
|
||||
"version": "may-2020"
|
||||
}
|
||||
]
|
||||
],
|
||||
"sourceType": "module"
|
||||
}
|
||||
1
packages/babel-generator/test/fixtures/types/ImportAttribute/output.js
vendored
Normal file
1
packages/babel-generator/test/fixtures/types/ImportAttribute/output.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import foo from "foo.json" with type: "json";
|
||||
@ -767,6 +767,9 @@ export function assertClassPrivateMethod(
|
||||
export function assertImport(node: Object, opts?: Object = {}): void {
|
||||
assert("Import", node, opts);
|
||||
}
|
||||
export function assertImportAttribute(node: Object, opts?: Object = {}): void {
|
||||
assert("ImportAttribute", node, opts);
|
||||
}
|
||||
export function assertDecorator(node: Object, opts?: Object = {}): void {
|
||||
assert("Decorator", node, opts);
|
||||
}
|
||||
|
||||
@ -692,6 +692,10 @@ export function Import(...args: Array<any>): Object {
|
||||
return builder("Import", ...args);
|
||||
}
|
||||
export { Import as import };
|
||||
export function ImportAttribute(...args: Array<any>): Object {
|
||||
return builder("ImportAttribute", ...args);
|
||||
}
|
||||
export { ImportAttribute as importAttribute };
|
||||
export function Decorator(...args: Array<any>): Object {
|
||||
return builder("Decorator", ...args);
|
||||
}
|
||||
|
||||
@ -224,6 +224,10 @@ defineType("Import", {
|
||||
aliases: ["Expression"],
|
||||
});
|
||||
|
||||
defineType("ImportAttribute", {
|
||||
visitor: ["key", "value"],
|
||||
});
|
||||
|
||||
defineType("Decorator", {
|
||||
visitor: ["expression"],
|
||||
fields: {
|
||||
|
||||
@ -2441,6 +2441,20 @@ export function isImport(node: ?Object, opts?: Object): boolean {
|
||||
|
||||
return false;
|
||||
}
|
||||
export function isImportAttribute(node: ?Object, opts?: Object): boolean {
|
||||
if (!node) return false;
|
||||
|
||||
const nodeType = node.type;
|
||||
if (nodeType === "ImportAttribute") {
|
||||
if (typeof opts === "undefined") {
|
||||
return true;
|
||||
} else {
|
||||
return shallowEqual(node, opts);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
export function isDecorator(node: ?Object, opts?: Object): boolean {
|
||||
if (!node) return false;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user