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.
		
		
		
		
		
			
		
			
				
					99 lines
				
				2.8 KiB
			
		
		
			
		
	
	
					99 lines
				
				2.8 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.CodeGenerator = void 0;
							 | 
						||
| 
								 | 
							
								exports.default = generate;
							 | 
						||
| 
								 | 
							
								var _sourceMap = require("./source-map");
							 | 
						||
| 
								 | 
							
								var _printer = require("./printer");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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) {
							 | 
						||
| 
								 | 
							
								  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.recordAndTupleSyntaxType,
							 | 
						||
| 
								 | 
							
								    topicToken: opts.topicToken
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    format.decoratorsBeforeExport = !!opts.decoratorsBeforeExport;
							 | 
						||
| 
								 | 
							
								    format.jsonCompatibleStrings = 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 = 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
							 |