| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = _default; |
| exports.CodeGenerator = void 0; |
| |
| var _sourceMap = _interopRequireDefault(require("./source-map")); |
| |
| var _printer = _interopRequireDefault(require("./printer")); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| class Generator extends _printer.default { |
| constructor(ast, opts = {}, code) { |
| const format = normalizeOptions(code, opts); |
| const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null; |
| super(format, map); |
| this.ast = ast; |
| } |
| |
| generate() { |
| return super.generate(this.ast); |
| } |
| |
| } |
| |
| function normalizeOptions(code, opts) { |
| const format = { |
| auxiliaryCommentBefore: opts.auxiliaryCommentBefore, |
| auxiliaryCommentAfter: opts.auxiliaryCommentAfter, |
| shouldPrintComment: opts.shouldPrintComment, |
| retainLines: opts.retainLines, |
| retainFunctionParens: opts.retainFunctionParens, |
| comments: opts.comments == null || opts.comments, |
| compact: opts.compact, |
| minified: opts.minified, |
| concise: opts.concise, |
| jsonCompatibleStrings: opts.jsonCompatibleStrings, |
| indent: { |
| adjustMultilineComment: true, |
| style: " ", |
| base: 0 |
| }, |
| decoratorsBeforeExport: !!opts.decoratorsBeforeExport, |
| jsescOption: Object.assign({ |
| quotes: "double", |
| wrap: true |
| }, opts.jsescOption) |
| }; |
| |
| if (format.minified) { |
| format.compact = true; |
| |
| format.shouldPrintComment = format.shouldPrintComment || (() => format.comments); |
| } else { |
| format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.indexOf("@license") >= 0 || value.indexOf("@preserve") >= 0); |
| } |
| |
| if (format.compact === "auto") { |
| format.compact = code.length > 500000; |
| |
| if (format.compact) { |
| console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`); |
| } |
| } |
| |
| if (format.compact) { |
| format.indent.adjustMultilineComment = false; |
| } |
| |
| return format; |
| } |
| |
| class CodeGenerator { |
| constructor(ast, opts, code) { |
| this._generator = new Generator(ast, opts, code); |
| } |
| |
| generate() { |
| return this._generator.generate(); |
| } |
| |
| } |
| |
| exports.CodeGenerator = CodeGenerator; |
| |
| function _default(ast, opts, code) { |
| const gen = new Generator(ast, opts, code); |
| return gen.generate(); |
| } |