You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.0 KiB
94 lines
3.0 KiB
"use strict"; |
|
|
|
Object.defineProperty(exports, "__esModule", { |
|
value: true |
|
}); |
|
exports.CodeGenerator = void 0; |
|
exports.default = generate; |
|
var _sourceMap = require("./source-map.js"); |
|
var _printer = require("./printer.js"); |
|
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 = void 0; |
|
this.ast = ast; |
|
} |
|
generate() { |
|
return super.generate(this.ast); |
|
} |
|
} |
|
function normalizeOptions(code, opts) { |
|
var _opts$recordAndTupleS; |
|
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, |
|
indent: { |
|
adjustMultilineComment: true, |
|
style: " " |
|
}, |
|
jsescOption: Object.assign({ |
|
quotes: "double", |
|
wrap: true, |
|
minimal: false |
|
}, opts.jsescOption), |
|
recordAndTupleSyntaxType: (_opts$recordAndTupleS = opts.recordAndTupleSyntaxType) != null ? _opts$recordAndTupleS : "hash", |
|
topicToken: opts.topicToken, |
|
importAttributesKeyword: opts.importAttributesKeyword |
|
}; |
|
{ |
|
format.decoratorsBeforeExport = opts.decoratorsBeforeExport; |
|
format.jsescOption.json = opts.jsonCompatibleStrings; |
|
} |
|
if (format.minified) { |
|
format.compact = true; |
|
format.shouldPrintComment = format.shouldPrintComment || (() => format.comments); |
|
} else { |
|
format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.includes("@license") || value.includes("@preserve")); |
|
} |
|
if (format.compact === "auto") { |
|
format.compact = typeof code === "string" && 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; |
|
} |
|
const { |
|
auxiliaryCommentBefore, |
|
auxiliaryCommentAfter, |
|
shouldPrintComment |
|
} = format; |
|
if (auxiliaryCommentBefore && !shouldPrintComment(auxiliaryCommentBefore)) { |
|
format.auxiliaryCommentBefore = undefined; |
|
} |
|
if (auxiliaryCommentAfter && !shouldPrintComment(auxiliaryCommentAfter)) { |
|
format.auxiliaryCommentAfter = undefined; |
|
} |
|
return format; |
|
} |
|
class CodeGenerator { |
|
constructor(ast, opts, code) { |
|
this._generator = void 0; |
|
this._generator = new Generator(ast, opts, code); |
|
} |
|
generate() { |
|
return this._generator.generate(); |
|
} |
|
} |
|
exports.CodeGenerator = CodeGenerator; |
|
function generate(ast, opts, code) { |
|
const gen = new Generator(ast, opts, code); |
|
return gen.generate(); |
|
} |
|
|
|
//# sourceMappingURL=index.js.map
|
|
|