92 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			92 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								"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();
							 | 
						||
| 
								 | 
							
								}
							 |