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);
|
this.print(node.source, node);
|
||||||
|
|
||||||
|
if (node.attributes?.length) {
|
||||||
|
this.space();
|
||||||
|
this.word("with");
|
||||||
|
this.space();
|
||||||
|
this.printList(node.attributes, node);
|
||||||
|
}
|
||||||
|
|
||||||
this.semicolon();
|
this.semicolon();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function ImportAttribute(node: Object) {
|
||||||
|
this.print(node.key);
|
||||||
|
this.token(":");
|
||||||
|
this.space();
|
||||||
|
this.print(node.value);
|
||||||
|
}
|
||||||
|
|
||||||
export function ImportNamespaceSpecifier(node: Object) {
|
export function ImportNamespaceSpecifier(node: Object) {
|
||||||
this.token("*");
|
this.token("*");
|
||||||
this.space();
|
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 {
|
export function assertImport(node: Object, opts?: Object = {}): void {
|
||||||
assert("Import", node, opts);
|
assert("Import", node, opts);
|
||||||
}
|
}
|
||||||
|
export function assertImportAttribute(node: Object, opts?: Object = {}): void {
|
||||||
|
assert("ImportAttribute", node, opts);
|
||||||
|
}
|
||||||
export function assertDecorator(node: Object, opts?: Object = {}): void {
|
export function assertDecorator(node: Object, opts?: Object = {}): void {
|
||||||
assert("Decorator", node, opts);
|
assert("Decorator", node, opts);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -692,6 +692,10 @@ export function Import(...args: Array<any>): Object {
|
|||||||
return builder("Import", ...args);
|
return builder("Import", ...args);
|
||||||
}
|
}
|
||||||
export { Import as import };
|
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 {
|
export function Decorator(...args: Array<any>): Object {
|
||||||
return builder("Decorator", ...args);
|
return builder("Decorator", ...args);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -224,6 +224,10 @@ defineType("Import", {
|
|||||||
aliases: ["Expression"],
|
aliases: ["Expression"],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineType("ImportAttribute", {
|
||||||
|
visitor: ["key", "value"],
|
||||||
|
});
|
||||||
|
|
||||||
defineType("Decorator", {
|
defineType("Decorator", {
|
||||||
visitor: ["expression"],
|
visitor: ["expression"],
|
||||||
fields: {
|
fields: {
|
||||||
|
|||||||
@ -2441,6 +2441,20 @@ export function isImport(node: ?Object, opts?: Object): boolean {
|
|||||||
|
|
||||||
return false;
|
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 {
|
export function isDecorator(node: ?Object, opts?: Object): boolean {
|
||||||
if (!node) return false;
|
if (!node) return false;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user