2d12c8a553
Run ID: 131
849 lines
22 KiB
Plaintext
849 lines
22 KiB
Plaintext
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
// istanbul ignore next
|
|
|
|
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
|
|
|
// istanbul ignore next
|
|
|
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }
|
|
|
|
// istanbul ignore next
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
|
|
// istanbul ignore next
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
|
var _convertSourceMap = require("convert-source-map");
|
|
|
|
var _convertSourceMap2 = _interopRequireDefault(_convertSourceMap);
|
|
|
|
var _modules = require("../modules");
|
|
|
|
var _modules2 = _interopRequireDefault(_modules);
|
|
|
|
var _optionsOptionManager = require("./options/option-manager");
|
|
|
|
var _optionsOptionManager2 = _interopRequireDefault(_optionsOptionManager);
|
|
|
|
var _pluginManager = require("./plugin-manager");
|
|
|
|
var _pluginManager2 = _interopRequireDefault(_pluginManager);
|
|
|
|
var _shebangRegex = require("shebang-regex");
|
|
|
|
var _shebangRegex2 = _interopRequireDefault(_shebangRegex);
|
|
|
|
var _traversalPath = require("../../traversal/path");
|
|
|
|
var _traversalPath2 = _interopRequireDefault(_traversalPath);
|
|
|
|
var _lodashLangIsFunction = require("lodash/lang/isFunction");
|
|
|
|
var _lodashLangIsFunction2 = _interopRequireDefault(_lodashLangIsFunction);
|
|
|
|
var _sourceMap = require("source-map");
|
|
|
|
var _sourceMap2 = _interopRequireDefault(_sourceMap);
|
|
|
|
var _generation = require("../../generation");
|
|
|
|
var _generation2 = _interopRequireDefault(_generation);
|
|
|
|
var _helpersCodeFrame = require("../../helpers/code-frame");
|
|
|
|
var _helpersCodeFrame2 = _interopRequireDefault(_helpersCodeFrame);
|
|
|
|
var _lodashObjectDefaults = require("lodash/object/defaults");
|
|
|
|
var _lodashObjectDefaults2 = _interopRequireDefault(_lodashObjectDefaults);
|
|
|
|
var _lodashCollectionIncludes = require("lodash/collection/includes");
|
|
|
|
var _lodashCollectionIncludes2 = _interopRequireDefault(_lodashCollectionIncludes);
|
|
|
|
var _traversal = require("../../traversal");
|
|
|
|
var _traversal2 = _interopRequireDefault(_traversal);
|
|
|
|
var _tryResolve = require("try-resolve");
|
|
|
|
var _tryResolve2 = _interopRequireDefault(_tryResolve);
|
|
|
|
var _logger = require("./logger");
|
|
|
|
var _logger2 = _interopRequireDefault(_logger);
|
|
|
|
var _plugin = require("../plugin");
|
|
|
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
|
|
var _helpersParse = require("../../helpers/parse");
|
|
|
|
var _helpersParse2 = _interopRequireDefault(_helpersParse);
|
|
|
|
var _traversalHub = require("../../traversal/hub");
|
|
|
|
var _traversalHub2 = _interopRequireDefault(_traversalHub);
|
|
|
|
var _util = require("../../util");
|
|
|
|
var util = _interopRequireWildcard(_util);
|
|
|
|
var _path = require("path");
|
|
|
|
var _path2 = _interopRequireDefault(_path);
|
|
|
|
var _types = require("../../types");
|
|
|
|
var t = _interopRequireWildcard(_types);
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
var File = (function () {
|
|
function File(opts, pipeline) {
|
|
if (opts === undefined) opts = {};
|
|
|
|
_classCallCheck(this, File);
|
|
|
|
this.transformerDependencies = {};
|
|
this.dynamicImportTypes = {};
|
|
this.dynamicImportIds = {};
|
|
this.dynamicImports = [];
|
|
this.declarations = {};
|
|
this.usedHelpers = {};
|
|
this.dynamicData = {};
|
|
this.data = {};
|
|
this.ast = {};
|
|
this.metadata = {
|
|
modules: {
|
|
imports: [],
|
|
exports: {
|
|
exported: [],
|
|
specifiers: []
|
|
}
|
|
}
|
|
};
|
|
this.hub = new _traversalHub2["default"](this);
|
|
|
|
this.pipeline = pipeline;
|
|
|
|
this.log = new _logger2["default"](this, opts.filename || "unknown");
|
|
this.opts = this.initOptions(opts);
|
|
|
|
this.buildTransformers();
|
|
}
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.initOptions = function initOptions(opts) {
|
|
opts = new _optionsOptionManager2["default"](this.log, this.pipeline).init(opts);
|
|
|
|
if (opts.inputSourceMap) {
|
|
opts.sourceMaps = true;
|
|
}
|
|
|
|
if (opts.moduleId) {
|
|
opts.moduleIds = true;
|
|
}
|
|
|
|
opts.basename = _path2["default"].basename(opts.filename, _path2["default"].extname(opts.filename));
|
|
|
|
opts.ignore = util.arrayify(opts.ignore, util.regexify);
|
|
|
|
if (opts.only) opts.only = util.arrayify(opts.only, util.regexify);
|
|
|
|
_lodashObjectDefaults2["default"](opts, {
|
|
moduleRoot: opts.sourceRoot
|
|
});
|
|
|
|
_lodashObjectDefaults2["default"](opts, {
|
|
sourceRoot: opts.moduleRoot
|
|
});
|
|
|
|
_lodashObjectDefaults2["default"](opts, {
|
|
filenameRelative: opts.filename
|
|
});
|
|
|
|
_lodashObjectDefaults2["default"](opts, {
|
|
sourceFileName: opts.filenameRelative,
|
|
sourceMapTarget: opts.filenameRelative
|
|
});
|
|
|
|
//
|
|
|
|
if (opts.externalHelpers) {
|
|
this.set("helpersNamespace", t.identifier("babelHelpers"));
|
|
}
|
|
|
|
return opts;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.isLoose = function isLoose(key) {
|
|
return _lodashCollectionIncludes2["default"](this.opts.loose, key);
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.buildTransformers = function buildTransformers() {
|
|
var file = this;
|
|
|
|
var transformers = this.transformers = {};
|
|
|
|
var secondaryStack = [];
|
|
var stack = [];
|
|
|
|
// build internal transformers
|
|
for (var key in this.pipeline.transformers) {
|
|
var transformer = this.pipeline.transformers[key];
|
|
var pass = transformers[key] = transformer.buildPass(file);
|
|
|
|
if (pass.canTransform()) {
|
|
stack.push(pass);
|
|
|
|
if (transformer.metadata.secondPass) {
|
|
secondaryStack.push(pass);
|
|
}
|
|
|
|
if (transformer.manipulateOptions) {
|
|
transformer.manipulateOptions(file.opts, file);
|
|
}
|
|
}
|
|
}
|
|
|
|
// init plugins!
|
|
var beforePlugins = [];
|
|
var afterPlugins = [];
|
|
var pluginManager = new _pluginManager2["default"]({
|
|
file: this,
|
|
transformers: this.transformers,
|
|
before: beforePlugins,
|
|
after: afterPlugins
|
|
});
|
|
for (var i = 0; i < file.opts.plugins.length; i++) {
|
|
pluginManager.add(file.opts.plugins[i]);
|
|
}
|
|
stack = beforePlugins.concat(stack, afterPlugins);
|
|
|
|
// build transformer stack
|
|
this.uncollapsedTransformerStack = stack = stack.concat(secondaryStack);
|
|
|
|
// build dependency graph
|
|
var _arr = stack;
|
|
for (var _i = 0; _i < _arr.length; _i++) {
|
|
var pass = _arr[_i];var _arr2 = pass.plugin.dependencies;
|
|
|
|
for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
|
|
var dep = _arr2[_i2];
|
|
this.transformerDependencies[dep] = pass.key;
|
|
}
|
|
}
|
|
|
|
// collapse stack categories
|
|
this.transformerStack = this.collapseStack(stack);
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.collapseStack = function collapseStack(_stack) {
|
|
var stack = [];
|
|
var ignore = [];
|
|
|
|
var _arr3 = _stack;
|
|
for (var _i3 = 0; _i3 < _arr3.length; _i3++) {
|
|
var pass = _arr3[_i3];
|
|
// been merged
|
|
if (ignore.indexOf(pass) >= 0) continue;
|
|
|
|
var group = pass.plugin.metadata.group;
|
|
|
|
// can't merge
|
|
if (!pass.canTransform() || !group) {
|
|
stack.push(pass);
|
|
continue;
|
|
}
|
|
|
|
var mergeStack = [];
|
|
var _arr4 = _stack;
|
|
for (var _i4 = 0; _i4 < _arr4.length; _i4++) {
|
|
var _pass = _arr4[_i4];
|
|
if (_pass.plugin.metadata.group === group) {
|
|
mergeStack.push(_pass);
|
|
ignore.push(_pass);
|
|
}
|
|
}
|
|
|
|
var visitors = [];
|
|
var _arr5 = mergeStack;
|
|
for (var _i5 = 0; _i5 < _arr5.length; _i5++) {
|
|
var _pass2 = _arr5[_i5];
|
|
visitors.push(_pass2.plugin.visitor);
|
|
}
|
|
var visitor = _traversal2["default"].visitors.merge(visitors);
|
|
var mergePlugin = new _plugin2["default"](group, { visitor: visitor });
|
|
stack.push(mergePlugin.buildPass(this));
|
|
}
|
|
|
|
return stack;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.set = function set(key, val) {
|
|
return this.data[key] = val;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.setDynamic = function setDynamic(key, fn) {
|
|
this.dynamicData[key] = fn;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.get = function get(key) {
|
|
var data = this.data[key];
|
|
if (data) {
|
|
return data;
|
|
} else {
|
|
var dynamic = this.dynamicData[key];
|
|
if (dynamic) {
|
|
return this.set(key, dynamic());
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.resolveModuleSource = function resolveModuleSource(source) {
|
|
var resolveModuleSource = this.opts.resolveModuleSource;
|
|
if (resolveModuleSource) source = resolveModuleSource(source, this.opts.filename);
|
|
return source;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.addImport = function addImport(source, name, type) {
|
|
name = name || source;
|
|
var id = this.dynamicImportIds[name];
|
|
|
|
if (!id) {
|
|
source = this.resolveModuleSource(source);
|
|
id = this.dynamicImportIds[name] = this.scope.generateUidIdentifier(name);
|
|
|
|
var specifiers = [t.importDefaultSpecifier(id)];
|
|
var declar = t.importDeclaration(specifiers, t.literal(source));
|
|
declar._blockHoist = 3;
|
|
|
|
if (type) {
|
|
var modules = this.dynamicImportTypes[type] = this.dynamicImportTypes[type] || [];
|
|
modules.push(declar);
|
|
}
|
|
|
|
if (this.transformers["es6.modules"].canTransform()) {
|
|
this.moduleFormatter.importSpecifier(specifiers[0], declar, this.dynamicImports, this.scope);
|
|
this.moduleFormatter.hasLocalImports = true;
|
|
} else {
|
|
this.dynamicImports.push(declar);
|
|
}
|
|
}
|
|
|
|
return id;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.attachAuxiliaryComment = function attachAuxiliaryComment(node) {
|
|
var beforeComment = this.opts.auxiliaryCommentBefore;
|
|
if (beforeComment) {
|
|
node.leadingComments = node.leadingComments || [];
|
|
node.leadingComments.push({
|
|
type: "CommentLine",
|
|
value: " " + beforeComment
|
|
});
|
|
}
|
|
|
|
var afterComment = this.opts.auxiliaryCommentAfter;
|
|
if (afterComment) {
|
|
node.trailingComments = node.trailingComments || [];
|
|
node.trailingComments.push({
|
|
type: "CommentLine",
|
|
value: " " + afterComment
|
|
});
|
|
}
|
|
|
|
return node;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.addHelper = function addHelper(name) {
|
|
var isSolo = _lodashCollectionIncludes2["default"](File.soloHelpers, name);
|
|
|
|
if (!isSolo && !_lodashCollectionIncludes2["default"](File.helpers, name)) {
|
|
throw new ReferenceError("Unknown helper " + name);
|
|
}
|
|
|
|
var declar = this.declarations[name];
|
|
if (declar) return declar;
|
|
|
|
this.usedHelpers[name] = true;
|
|
|
|
if (!isSolo) {
|
|
var generator = this.get("helperGenerator");
|
|
var runtime = this.get("helpersNamespace");
|
|
if (generator) {
|
|
return generator(name);
|
|
} else if (runtime) {
|
|
var id = t.identifier(t.toIdentifier(name));
|
|
return t.memberExpression(runtime, id);
|
|
}
|
|
}
|
|
|
|
var ref = util.template("helper-" + name);
|
|
|
|
var uid = this.declarations[name] = this.scope.generateUidIdentifier(name);
|
|
|
|
if (t.isFunctionExpression(ref) && !ref.id) {
|
|
ref.body._compact = true;
|
|
ref._generated = true;
|
|
ref.id = uid;
|
|
ref.type = "FunctionDeclaration";
|
|
this.attachAuxiliaryComment(ref);
|
|
this.path.unshiftContainer("body", ref);
|
|
} else {
|
|
ref._compact = true;
|
|
this.scope.push({
|
|
id: uid,
|
|
init: ref,
|
|
unique: true
|
|
});
|
|
}
|
|
|
|
return uid;
|
|
};
|
|
|
|
File.prototype.addTemplateObject = function addTemplateObject(helperName, strings, raw) {
|
|
// Generate a unique name based on the string literals so we dedupe
|
|
// identical strings used in the program.
|
|
var stringIds = raw.elements.map(function (string) {
|
|
return string.value;
|
|
});
|
|
var name = helperName + "_" + raw.elements.length + "_" + stringIds.join(",");
|
|
|
|
var declar = this.declarations[name];
|
|
if (declar) return declar;
|
|
|
|
var uid = this.declarations[name] = this.scope.generateUidIdentifier("templateObject");
|
|
|
|
var helperId = this.addHelper(helperName);
|
|
var init = t.callExpression(helperId, [strings, raw]);
|
|
init._compact = true;
|
|
this.scope.push({
|
|
id: uid,
|
|
init: init,
|
|
_blockHoist: 1.9 // This ensures that we don't fail if not using function expression helpers
|
|
});
|
|
return uid;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.errorWithNode = function errorWithNode(node, msg) {
|
|
var Error = arguments.length <= 2 || arguments[2] === undefined ? SyntaxError : arguments[2];
|
|
|
|
var err;
|
|
var loc = node && (node.loc || node._loc);
|
|
if (loc) {
|
|
err = new Error("Line " + loc.start.line + ": " + msg);
|
|
err.loc = loc.start;
|
|
} else {
|
|
// todo: find errors with nodes inside to at least point to something
|
|
err = new Error("There's been an error on a dynamic node. This is almost certainly an internal error. Please report it.");
|
|
}
|
|
return err;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.mergeSourceMap = function mergeSourceMap(map) {
|
|
var opts = this.opts;
|
|
|
|
var inputMap = opts.inputSourceMap;
|
|
|
|
if (inputMap) {
|
|
map.sources[0] = inputMap.file;
|
|
|
|
var inputMapConsumer = new _sourceMap2["default"].SourceMapConsumer(inputMap);
|
|
var outputMapConsumer = new _sourceMap2["default"].SourceMapConsumer(map);
|
|
var outputMapGenerator = _sourceMap2["default"].SourceMapGenerator.fromSourceMap(outputMapConsumer);
|
|
outputMapGenerator.applySourceMap(inputMapConsumer);
|
|
|
|
var mergedMap = outputMapGenerator.toJSON();
|
|
mergedMap.sources = inputMap.sources;
|
|
mergedMap.file = inputMap.file;
|
|
return mergedMap;
|
|
}
|
|
|
|
return map;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.getModuleFormatter = function getModuleFormatter(type) {
|
|
if (_lodashLangIsFunction2["default"](type) || !_modules2["default"][type]) {
|
|
this.log.deprecate("Custom module formatters are deprecated and will be removed in the next major. Please use Babel plugins instead.");
|
|
}
|
|
|
|
var ModuleFormatter = _lodashLangIsFunction2["default"](type) ? type : _modules2["default"][type];
|
|
|
|
if (!ModuleFormatter) {
|
|
var loc = _tryResolve2["default"].relative(type);
|
|
if (loc) ModuleFormatter = require(loc);
|
|
}
|
|
|
|
if (!ModuleFormatter) {
|
|
throw new ReferenceError("Unknown module formatter type " + JSON.stringify(type));
|
|
}
|
|
|
|
return new ModuleFormatter(this);
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.parse = function parse(code) {
|
|
var opts = this.opts;
|
|
|
|
//
|
|
|
|
var parseOpts = {
|
|
highlightCode: opts.highlightCode,
|
|
nonStandard: opts.nonStandard,
|
|
sourceType: opts.sourceType,
|
|
filename: opts.filename,
|
|
plugins: {}
|
|
};
|
|
|
|
var features = parseOpts.features = {};
|
|
for (var key in this.transformers) {
|
|
var transformer = this.transformers[key];
|
|
features[key] = transformer.canTransform();
|
|
}
|
|
|
|
parseOpts.looseModules = this.isLoose("es6.modules");
|
|
parseOpts.strictMode = features.strict;
|
|
|
|
this.log.debug("Parse start");
|
|
var ast = _helpersParse2["default"](code, parseOpts);
|
|
this.log.debug("Parse stop");
|
|
return ast;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype._addAst = function _addAst(ast) {
|
|
this.path = _traversalPath2["default"].get({
|
|
hub: this.hub,
|
|
parentPath: null,
|
|
parent: ast,
|
|
container: ast,
|
|
key: "program"
|
|
}).setContext();
|
|
this.scope = this.path.scope;
|
|
this.ast = ast;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.addAst = function addAst(ast) {
|
|
this.log.debug("Start set AST");
|
|
this._addAst(ast);
|
|
this.log.debug("End set AST");
|
|
|
|
this.log.debug("Start module formatter init");
|
|
var modFormatter = this.moduleFormatter = this.getModuleFormatter(this.opts.modules);
|
|
if (modFormatter.init && this.transformers["es6.modules"].canTransform()) {
|
|
modFormatter.init();
|
|
}
|
|
this.log.debug("End module formatter init");
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.transform = function transform() {
|
|
this.call("pre");
|
|
var _arr6 = this.transformerStack;
|
|
for (var _i6 = 0; _i6 < _arr6.length; _i6++) {
|
|
var pass = _arr6[_i6];
|
|
pass.transform();
|
|
}
|
|
this.call("post");
|
|
|
|
return this.generate();
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.wrap = function wrap(code, callback) {
|
|
code = code + "";
|
|
|
|
try {
|
|
if (this.shouldIgnore()) {
|
|
return this.makeResult({ code: code, ignored: true });
|
|
} else {
|
|
return callback();
|
|
}
|
|
} catch (err) {
|
|
if (err._babel) {
|
|
throw err;
|
|
} else {
|
|
err._babel = true;
|
|
}
|
|
|
|
var message = err.message = this.opts.filename + ": " + err.message;
|
|
|
|
var loc = err.loc;
|
|
if (loc) {
|
|
err.codeFrame = _helpersCodeFrame2["default"](code, loc.line, loc.column + 1, this.opts);
|
|
message += "\n" + err.codeFrame;
|
|
}
|
|
|
|
if (process.browser) {
|
|
// chrome has it's own pretty stringifier which doesn't use the stack property
|
|
// https://github.com/babel/babel/issues/2175
|
|
err.message = message;
|
|
}
|
|
|
|
if (err.stack) {
|
|
var newStack = err.stack.replace(err.message, message);
|
|
try {
|
|
err.stack = newStack;
|
|
} catch (e) {
|
|
// `err.stack` may be a readonly property in some environments
|
|
}
|
|
}
|
|
|
|
throw err;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.addCode = function addCode(code) {
|
|
code = (code || "") + "";
|
|
code = this.parseInputSourceMap(code);
|
|
this.code = code;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.parseCode = function parseCode() {
|
|
this.parseShebang();
|
|
var ast = this.parse(this.code);
|
|
this.addAst(ast);
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.shouldIgnore = function shouldIgnore() {
|
|
var opts = this.opts;
|
|
return util.shouldIgnore(opts.filename, opts.ignore, opts.only);
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.call = function call(key) {
|
|
var _arr7 = this.uncollapsedTransformerStack;
|
|
|
|
for (var _i7 = 0; _i7 < _arr7.length; _i7++) {
|
|
var pass = _arr7[_i7];
|
|
var fn = pass.plugin[key];
|
|
if (fn) fn(this);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.parseInputSourceMap = function parseInputSourceMap(code) {
|
|
var opts = this.opts;
|
|
|
|
if (opts.inputSourceMap !== false) {
|
|
var inputMap = _convertSourceMap2["default"].fromSource(code);
|
|
if (inputMap) {
|
|
opts.inputSourceMap = inputMap.toObject();
|
|
code = _convertSourceMap2["default"].removeComments(code);
|
|
}
|
|
}
|
|
|
|
return code;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.parseShebang = function parseShebang() {
|
|
var shebangMatch = _shebangRegex2["default"].exec(this.code);
|
|
if (shebangMatch) {
|
|
this.shebang = shebangMatch[0];
|
|
this.code = this.code.replace(_shebangRegex2["default"], "");
|
|
}
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.makeResult = function makeResult(_ref) {
|
|
var code = _ref.code;
|
|
var _ref$map = _ref.map;
|
|
var map = _ref$map === undefined ? null : _ref$map;
|
|
var ast = _ref.ast;
|
|
var ignored = _ref.ignored;
|
|
|
|
var result = {
|
|
metadata: null,
|
|
ignored: !!ignored,
|
|
code: null,
|
|
ast: null,
|
|
map: map
|
|
};
|
|
|
|
if (this.opts.code) {
|
|
result.code = code;
|
|
}
|
|
|
|
if (this.opts.ast) {
|
|
result.ast = ast;
|
|
}
|
|
|
|
if (this.opts.metadata) {
|
|
result.metadata = this.metadata;
|
|
result.metadata.usedHelpers = Object.keys(this.usedHelpers);
|
|
}
|
|
|
|
return result;
|
|
};
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
File.prototype.generate = function generate() {
|
|
var opts = this.opts;
|
|
var ast = this.ast;
|
|
|
|
var result = { ast: ast };
|
|
if (!opts.code) return this.makeResult(result);
|
|
|
|
this.log.debug("Generation start");
|
|
|
|
var _result = _generation2["default"](ast, opts, this.code);
|
|
result.code = _result.code;
|
|
result.map = _result.map;
|
|
|
|
this.log.debug("Generation end");
|
|
|
|
if (this.shebang) {
|
|
// add back shebang
|
|
result.code = this.shebang + "\n" + result.code;
|
|
}
|
|
|
|
if (result.map) {
|
|
result.map = this.mergeSourceMap(result.map);
|
|
}
|
|
|
|
if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") {
|
|
result.code += "\n" + _convertSourceMap2["default"].fromObject(result.map).toComment();
|
|
}
|
|
|
|
if (opts.sourceMaps === "inline") {
|
|
result.map = null;
|
|
}
|
|
|
|
return this.makeResult(result);
|
|
};
|
|
|
|
_createClass(File, null, [{
|
|
key: "helpers",
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
value: ["inherits", "defaults", "create-class", "create-decorated-class", "create-decorated-object", "define-decorated-property-descriptor", "tagged-template-literal", "tagged-template-literal-loose", "to-array", "to-consumable-array", "sliced-to-array", "sliced-to-array-loose", "object-without-properties", "has-own", "slice", "bind", "define-property", "async-to-generator", "interop-export-wildcard", "interop-require-wildcard", "interop-require-default", "typeof", "extends", "get", "set", "new-arrow-check", "class-call-check", "object-destructuring-empty", "temporal-undefined", "temporal-assert-defined", "self-global", "typeof-react-element", "default-props", "instanceof",
|
|
|
|
// legacy
|
|
"interop-require"],
|
|
|
|
/**
|
|
* [Please add a description.]
|
|
*/
|
|
|
|
enumerable: true
|
|
}, {
|
|
key: "soloHelpers",
|
|
value: [],
|
|
enumerable: true
|
|
}]);
|
|
|
|
return File;
|
|
})();
|
|
|
|
exports["default"] = File;
|
|
module.exports = exports["default"]; |