Add "decoratorsBeforeExport" option to @babel/generator (#7948)
* Add "decoratorsBeforeExport" option to @babel/generator * Docs
This commit is contained in:
@@ -2,8 +2,9 @@ import * as t from "@babel/types";
|
||||
|
||||
export function ClassDeclaration(node: Object, parent: Object) {
|
||||
if (
|
||||
!t.isExportDefaultDeclaration(parent) &&
|
||||
!t.isExportNamedDeclaration(parent)
|
||||
!this.format.decoratorsBeforeExport ||
|
||||
(!t.isExportDefaultDeclaration(parent) &&
|
||||
!t.isExportNamedDeclaration(parent))
|
||||
) {
|
||||
this.printJoin(node.decorators, node);
|
||||
}
|
||||
|
||||
@@ -57,7 +57,10 @@ export function ExportAllDeclaration(node: Object) {
|
||||
}
|
||||
|
||||
export function ExportNamedDeclaration(node: Object) {
|
||||
if (t.isClassDeclaration(node.declaration)) {
|
||||
if (
|
||||
this.format.decoratorsBeforeExport &&
|
||||
t.isClassDeclaration(node.declaration)
|
||||
) {
|
||||
this.printJoin(node.declaration.decorators, node);
|
||||
}
|
||||
|
||||
@@ -67,7 +70,10 @@ export function ExportNamedDeclaration(node: Object) {
|
||||
}
|
||||
|
||||
export function ExportDefaultDeclaration(node: Object) {
|
||||
if (t.isClassDeclaration(node.declaration)) {
|
||||
if (
|
||||
this.format.decoratorsBeforeExport &&
|
||||
t.isClassDeclaration(node.declaration)
|
||||
) {
|
||||
this.printJoin(node.declaration.decorators, node);
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,10 @@ function normalizeOptions(code, opts): Format {
|
||||
style: " ",
|
||||
base: 0,
|
||||
},
|
||||
decoratorsBeforeExport:
|
||||
opts.decoratorsBeforeExport === undefined
|
||||
? true
|
||||
: opts.decoratorsBeforeExport,
|
||||
};
|
||||
|
||||
if (format.minified) {
|
||||
|
||||
@@ -25,6 +25,7 @@ export type Format = {
|
||||
style: string,
|
||||
base: number,
|
||||
},
|
||||
decoratorsBeforeExport: boolean,
|
||||
};
|
||||
|
||||
export default class Printer {
|
||||
|
||||
3
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/input.js
vendored
Normal file
3
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/input.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export default @dec class Foo {}
|
||||
|
||||
export @dec class Bar {}
|
||||
6
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/options.json
vendored
Normal file
6
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/options.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"plugins": [
|
||||
["decorators", { "decoratorsBeforeExport": false }]
|
||||
],
|
||||
"decoratorsBeforeExport": false
|
||||
}
|
||||
4
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/output.js
vendored
Normal file
4
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-false/output.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
export default @dec
|
||||
class Foo {}
|
||||
export @dec
|
||||
class Bar {}
|
||||
3
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/input.js
vendored
Normal file
3
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/input.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export default @dec class Foo {}
|
||||
|
||||
export @dec class Bar {}
|
||||
6
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/options.json
vendored
Normal file
6
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/options.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"plugins": [
|
||||
["decorators", { "decoratorsBeforeExport": false }]
|
||||
],
|
||||
"decoratorsBeforeExport": true
|
||||
}
|
||||
4
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/output.js
vendored
Normal file
4
packages/babel-generator/test/fixtures/decoratorsBeforeExport/false-to-true/output.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
@dec
|
||||
export default class Foo {}
|
||||
@dec
|
||||
export class Bar {}
|
||||
5
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/input.js
vendored
Normal file
5
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/input.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
@dec
|
||||
export default class Foo {}
|
||||
|
||||
@dec
|
||||
export class Bar {}
|
||||
6
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/options.json
vendored
Normal file
6
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/options.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"plugins": [
|
||||
["decorators", { "decoratorsBeforeExport": true }]
|
||||
],
|
||||
"decoratorsBeforeExport": false
|
||||
}
|
||||
4
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/output.js
vendored
Normal file
4
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-false/output.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
export default @dec
|
||||
class Foo {}
|
||||
export @dec
|
||||
class Bar {}
|
||||
5
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/input.js
vendored
Normal file
5
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/input.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
@dec
|
||||
export default class Foo {}
|
||||
|
||||
@dec
|
||||
export class Bar {}
|
||||
6
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/options.json
vendored
Normal file
6
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/options.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"plugins": [
|
||||
["decorators", { "decoratorsBeforeExport": true }]
|
||||
],
|
||||
"decoratorsBeforeExport": true
|
||||
}
|
||||
4
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/output.js
vendored
Normal file
4
packages/babel-generator/test/fixtures/decoratorsBeforeExport/true-to-true/output.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
@dec
|
||||
export default class Foo {}
|
||||
@dec
|
||||
export class Bar {}
|
||||
Reference in New Issue
Block a user