@babel/generator
Advanced tools
Comparing version 7.0.0-beta.49 to 7.0.0-beta.50
@@ -26,3 +26,3 @@ "use strict"; | ||
function ClassDeclaration(node, parent) { | ||
if (!t().isExportDefaultDeclaration(parent) && !t().isExportNamedDeclaration(parent)) { | ||
if (!this.format.decoratorsBeforeExport || !t().isExportDefaultDeclaration(parent) && !t().isExportNamedDeclaration(parent)) { | ||
this.printJoin(node.decorators, node); | ||
@@ -29,0 +29,0 @@ } |
@@ -128,3 +128,3 @@ "use strict"; | ||
this.token("@"); | ||
this.print(node.callee, node); | ||
this.print(node.expression, node); | ||
this.newline(); | ||
@@ -131,0 +131,0 @@ } |
@@ -565,2 +565,7 @@ "use strict"; | ||
function ObjectTypeProperty(node) { | ||
if (node.proto) { | ||
this.word("proto"); | ||
this.space(); | ||
} | ||
if (node.static) { | ||
@@ -567,0 +572,0 @@ this.word("static"); |
@@ -90,3 +90,3 @@ "use strict"; | ||
function ExportNamedDeclaration(node) { | ||
if (t().isClassDeclaration(node.declaration)) { | ||
if (this.format.decoratorsBeforeExport && t().isClassDeclaration(node.declaration)) { | ||
this.printJoin(node.declaration.decorators, node); | ||
@@ -101,3 +101,3 @@ } | ||
function ExportDefaultDeclaration(node) { | ||
if (t().isClassDeclaration(node.declaration)) { | ||
if (this.format.decoratorsBeforeExport && t().isClassDeclaration(node.declaration)) { | ||
this.printJoin(node.declaration.decorators, node); | ||
@@ -104,0 +104,0 @@ } |
@@ -157,6 +157,3 @@ "use strict"; | ||
const opts = { | ||
quotes: "double", | ||
wrap: true | ||
}; | ||
const opts = this.format.jsescOption; | ||
@@ -163,0 +160,0 @@ if (this.format.jsonCompatibleStrings) { |
@@ -45,3 +45,8 @@ "use strict"; | ||
base: 0 | ||
} | ||
}, | ||
decoratorsBeforeExport: !!opts.decoratorsBeforeExport, | ||
jsescOption: Object.assign({ | ||
quotes: "double", | ||
wrap: true | ||
}, opts.jsescOption) | ||
}; | ||
@@ -48,0 +53,0 @@ |
{ | ||
"name": "@babel/generator", | ||
"version": "7.0.0-beta.49", | ||
"version": "7.0.0-beta.50", | ||
"description": "Turns an AST into code.", | ||
@@ -14,3 +14,3 @@ "author": "Sebastian McKenzie <sebmck@gmail.com>", | ||
"dependencies": { | ||
"@babel/types": "7.0.0-beta.49", | ||
"@babel/types": "7.0.0-beta.50", | ||
"jsesc": "^2.5.1", | ||
@@ -22,5 +22,5 @@ "lodash": "^4.17.5", | ||
"devDependencies": { | ||
"@babel/helper-fixtures": "7.0.0-beta.49", | ||
"@babel/parser": "7.0.0-beta.49" | ||
"@babel/helper-fixtures": "7.0.0-beta.50", | ||
"@babel/parser": "7.0.0-beta.50" | ||
} | ||
} |
# @babel/generator | ||
> Turns the [babel AST](https://github.com/babel/babel/blob/master/packages/babel-parser/ast/spec.md) into code. | ||
> Turns an AST into code. | ||
See our website [@babel/generator](https://new.babeljs.io/docs/en/next/babel-generator.html) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen) associated with this package. | ||
## Install | ||
Using npm: | ||
```sh | ||
npm install --save-dev @babel/generator | ||
npm install --save @babel/generator | ||
``` | ||
## Usage | ||
or using yarn: | ||
```js | ||
import {parse} from '@babel/parser'; | ||
import generate from '@babel/generator'; | ||
const code = 'class Example {}'; | ||
const ast = parse(code); | ||
const output = generate(ast, { /* options */ }, code); | ||
```sh | ||
yarn add --save @babel/generator | ||
``` | ||
## Options | ||
Options for formatting output: | ||
name | type | default | description | ||
-----------------------|----------|-----------------|-------------------------------------------------------------------------- | ||
auxiliaryCommentBefore | string | | Optional string to add as a block comment at the start of the output file | ||
auxiliaryCommentAfter | string | | Optional string to add as a block comment at the end of the output file | ||
shouldPrintComment | function | `opts.comments` | Function that takes a comment (as a string) and returns `true` if the comment should be included in the output. By default, comments are included if `opts.comments` is `true` or if `opts.minifed` is `false` and the comment contains `@preserve` or `@license` | ||
retainLines | boolean | `false` | Attempt to use the same line numbers in the output code as in the source code (helps preserve stack traces) | ||
retainFunctionParens | boolean | `false` | Retain parens around function expressions (could be used to change engine parsing behavior) | ||
comments | boolean | `true` | Should comments be included in output | ||
compact | boolean or `'auto'` | `opts.minified` | Set to `true` to avoid adding whitespace for formatting | ||
minified | boolean | `false` | Should the output be minified | ||
concise | boolean | `false` | Set to `true` to reduce whitespace (but not as much as `opts.compact`) | ||
filename | string | | Used in warning messages | ||
jsonCompatibleStrings | boolean | `false` | Set to true to run `jsesc` with "json": true to print "\u00A9" vs. "©"; | ||
Options for source maps: | ||
name | type | default | description | ||
-----------------------|----------|-----------------|-------------------------------------------------------------------------- | ||
sourceMaps | boolean | `false` | Enable generating source maps | ||
sourceRoot | string | | A root for all relative URLs in the source map | ||
sourceFileName | string | | The filename for the source code (i.e. the code in the `code` argument). This will only be used if `code` is a string. | ||
## AST from Multiple Sources | ||
In most cases, Babel does a 1:1 transformation of input-file to output-file. However, | ||
you may be dealing with AST constructed from multiple sources - JS files, templates, etc. | ||
If this is the case, and you want the sourcemaps to reflect the correct sources, you'll need | ||
to pass an object to `generate` as the `code` parameter. Keys | ||
should be the source filenames, and values should be the source content. | ||
Here's an example of what that might look like: | ||
```js | ||
import {parse} from '@babel/parser'; | ||
import generate from '@babel/generator'; | ||
const a = 'var a = 1;'; | ||
const b = 'var b = 2;'; | ||
const astA = parse(a, { sourceFilename: 'a.js' }); | ||
const astB = parse(b, { sourceFilename: 'b.js' }); | ||
const ast = { | ||
type: 'Program', | ||
body: [].concat(astA.program.body, astB.program.body) | ||
}; | ||
const { code, map } = generate(ast, { sourceMaps: true }, { | ||
'a.js': a, | ||
'b.js': b | ||
}); | ||
// Sourcemap will point to both a.js and b.js where appropriate. | ||
``` |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
3595
104116
20
+ Added@babel/types@7.0.0-beta.50(transitive)
- Removed@babel/types@7.0.0-beta.49(transitive)
Updated@babel/types@7.0.0-beta.50