UNPKG

browser-es-module-loader

Version:

Demonstrates ES module loading in the browser

1,755 lines (1,304 loc) 1.32 MB
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 'use strict'; module.exports = function () { return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; }; },{}],2:[function(require,module,exports){ 'use strict'; function assembleStyles () { var styles = { modifiers: { reset: [0, 0], bold: [1, 22], // 21 isn't widely supported and 22 does the same thing dim: [2, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], hidden: [8, 28], strikethrough: [9, 29] }, colors: { black: [30, 39], red: [31, 39], green: [32, 39], yellow: [33, 39], blue: [34, 39], magenta: [35, 39], cyan: [36, 39], white: [37, 39], gray: [90, 39] }, bgColors: { bgBlack: [40, 49], bgRed: [41, 49], bgGreen: [42, 49], bgYellow: [43, 49], bgBlue: [44, 49], bgMagenta: [45, 49], bgCyan: [46, 49], bgWhite: [47, 49] } }; // fix humans styles.colors.grey = styles.colors.gray; Object.keys(styles).forEach(function (groupName) { var group = styles[groupName]; Object.keys(group).forEach(function (styleName) { var style = group[styleName]; styles[styleName] = group[styleName] = { open: '\u001b[' + style[0] + 'm', close: '\u001b[' + style[1] + 'm' }; }); Object.defineProperty(styles, groupName, { value: group, enumerable: false }); }); return styles; } Object.defineProperty(module, 'exports', { enumerable: true, get: assembleStyles }); },{}],3:[function(require,module,exports){ "use strict"; exports.__esModule = true; exports.default = function (rawLines, lineNumber, colNumber) { var opts = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; colNumber = Math.max(colNumber, 0); var highlighted = opts.highlightCode && _chalk2.default.supportsColor; if (highlighted) rawLines = highlight(rawLines); var lines = rawLines.split(NEWLINE); var start = Math.max(lineNumber - 3, 0); var end = Math.min(lines.length, lineNumber + 3); if (!lineNumber && !colNumber) { start = 0; end = lines.length; } var numberMaxWidth = String(end).length; var frame = lines.slice(start, end).map(function (line, index) { var number = start + 1 + index; var paddedNumber = (" " + number).slice(-numberMaxWidth); var gutter = " " + paddedNumber + " | "; if (number === lineNumber) { var markerLine = ""; if (colNumber) { var markerSpacing = line.slice(0, colNumber - 1).replace(/[^\t]/g, " "); markerLine = "\n " + gutter.replace(/\d/g, " ") + markerSpacing + "^"; } return ">" + gutter + line + markerLine; } else { return " " + gutter + line; } }).join("\n"); if (highlighted) { return _chalk2.default.reset(frame); } else { return frame; } }; var _jsTokens = require("js-tokens"); var _jsTokens2 = _interopRequireDefault(_jsTokens); var _esutils = require("esutils"); var _esutils2 = _interopRequireDefault(_esutils); var _chalk = require("chalk"); var _chalk2 = _interopRequireDefault(_chalk); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Chalk styles for token types. */ var defs = { string: _chalk2.default.red, punctuator: _chalk2.default.bold, curly: _chalk2.default.green, parens: _chalk2.default.blue.bold, square: _chalk2.default.yellow, keyword: _chalk2.default.cyan, number: _chalk2.default.magenta, regex: _chalk2.default.magenta, comment: _chalk2.default.grey, invalid: _chalk2.default.inverse }; /** * RegExp to test for newlines in terminal. */ var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; /** * Get the type of token, specifying punctuator type. */ function getTokenType(match) { var token = _jsTokens2.default.matchToToken(match); if (token.type === "name" && _esutils2.default.keyword.isReservedWordES6(token.value)) { return "keyword"; } if (token.type === "punctuator") { switch (token.value) { case "{": case "}": return "curly"; case "(": case ")": return "parens"; case "[": case "]": return "square"; } } return token.type; } /** * Highlight `text`. */ function highlight(text) { return text.replace(_jsTokens2.default, function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var type = getTokenType(args); var colorize = defs[type]; if (colorize) { return args[0].split(NEWLINE).map(function (str) { return colorize(str); }).join("\n"); } else { return args[0]; } }); } /** * Create a code frame, adding line numbers, code highlighting, and pointing to a given position. */ module.exports = exports["default"]; },{"chalk":137,"esutils":258,"js-tokens":267}],4:[function(require,module,exports){ module.exports = require("./lib/api/node.js"); },{"./lib/api/node.js":5}],5:[function(require,module,exports){ "use strict"; exports.__esModule = true; exports.transformFromAst = exports.transform = exports.analyse = exports.Pipeline = exports.OptionManager = exports.traverse = exports.types = exports.messages = exports.util = exports.version = exports.template = exports.buildExternalHelpers = exports.options = exports.File = undefined; var _file = require("../transformation/file"); Object.defineProperty(exports, "File", { enumerable: true, get: function get() { return _interopRequireDefault(_file).default; } }); var _config = require("../transformation/file/options/config"); Object.defineProperty(exports, "options", { enumerable: true, get: function get() { return _interopRequireDefault(_config).default; } }); var _buildExternalHelpers = require("../tools/build-external-helpers"); Object.defineProperty(exports, "buildExternalHelpers", { enumerable: true, get: function get() { return _interopRequireDefault(_buildExternalHelpers).default; } }); var _babelTemplate = require("babel-template"); Object.defineProperty(exports, "template", { enumerable: true, get: function get() { return _interopRequireDefault(_babelTemplate).default; } }); var _package = require("../../package"); Object.defineProperty(exports, "version", { enumerable: true, get: function get() { return _package.version; } }); exports.Plugin = Plugin; exports.transformFile = transformFile; exports.transformFileSync = transformFileSync; var _isFunction = require("lodash/isFunction"); var _isFunction2 = _interopRequireDefault(_isFunction); var _fs = require("fs"); var _fs2 = _interopRequireDefault(_fs); var _util = require("../util"); var util = _interopRequireWildcard(_util); var _babelMessages = require("babel-messages"); var messages = _interopRequireWildcard(_babelMessages); var _babelTypes = require("babel-types"); var t = _interopRequireWildcard(_babelTypes); var _babelTraverse = require("babel-traverse"); var _babelTraverse2 = _interopRequireDefault(_babelTraverse); var _optionManager = require("../transformation/file/options/option-manager"); var _optionManager2 = _interopRequireDefault(_optionManager); var _pipeline = require("../transformation/pipeline"); var _pipeline2 = _interopRequireDefault(_pipeline); 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; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // exports.util = util; exports.messages = messages; exports.types = t; exports.traverse = _babelTraverse2.default; exports.OptionManager = _optionManager2.default; function Plugin(alias) { throw new Error("The (" + alias + ") Babel 5 plugin is being run with Babel 6."); } // exports.Pipeline = _pipeline2.default; var pipeline = new _pipeline2.default(); var analyse = exports.analyse = pipeline.analyse.bind(pipeline); var transform = exports.transform = pipeline.transform.bind(pipeline); var transformFromAst = exports.transformFromAst = pipeline.transformFromAst.bind(pipeline); // function transformFile(filename, opts, callback) { if ((0, _isFunction2.default)(opts)) { callback = opts; opts = {}; } opts.filename = filename; _fs2.default.readFile(filename, function (err, code) { var result = void 0; if (!err) { try { result = transform(code, opts); } catch (_err) { err = _err; } } if (err) { callback(err); } else { callback(null, result); } }); } function transformFileSync(filename) { var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; opts.filename = filename; return transform(_fs2.default.readFileSync(filename, "utf8"), opts); } },{"../../package":26,"../tools/build-external-helpers":10,"../transformation/file":11,"../transformation/file/options/config":15,"../transformation/file/options/option-manager":17,"../transformation/pipeline":22,"../util":25,"babel-messages":48,"babel-template":71,"babel-traverse":75,"babel-types":108,"fs":135,"lodash/isFunction":447}],6:[function(require,module,exports){ "use strict"; exports.__esModule = true; var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); exports.default = function (dest, src) { if (!dest || !src) return; return (0, _mergeWith2.default)(dest, src, function (a, b) { if (b && Array.isArray(a)) { var newArray = b.slice(0); for (var _iterator = a, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } var item = _ref; if (newArray.indexOf(item) < 0) { newArray.push(item); } } return newArray; } }); }; var _mergeWith = require("lodash/mergeWith"); var _mergeWith2 = _interopRequireDefault(_mergeWith); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = exports["default"]; },{"babel-runtime/core-js/get-iterator":50,"lodash/mergeWith":462}],7:[function(require,module,exports){ "use strict"; exports.__esModule = true; exports.default = function (ast, comments, tokens) { if (ast) { if (ast.type === "Program") { return t.file(ast, comments || [], tokens || []); } else if (ast.type === "File") { return ast; } } throw new Error("Not a valid ast?"); }; var _babelTypes = require("babel-types"); var t = _interopRequireWildcard(_babelTypes); 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; } } module.exports = exports["default"]; /** * Normalize an AST. * * - Wrap `Program` node with a `File` node. */ },{"babel-types":108}],8:[function(require,module,exports){ (function (process){ "use strict"; exports.__esModule = true; var _typeof2 = require("babel-runtime/helpers/typeof"); var _typeof3 = _interopRequireDefault(_typeof2); exports.default = function (loc) { var relative = arguments.length <= 1 || arguments[1] === undefined ? process.cwd() : arguments[1]; // we're in the browser, probably if ((typeof _module2.default === "undefined" ? "undefined" : (0, _typeof3.default)(_module2.default)) === "object") return null; var relativeMod = relativeModules[relative]; if (!relativeMod) { relativeMod = new _module2.default(); // We need to define an id and filename on our "fake" relative` module so that // Node knows what "." means in the case of us trying to resolve a plugin // such as "./myPlugins/somePlugin.js". If we don't specify id and filename here, // Node presumes "." is process.cwd(), not our relative path. // Since this fake module is never "loaded", we don't have to worry about mutating // any global Node module cache state here. var filename = _path2.default.join(relative, ".babelrc"); relativeMod.id = filename; relativeMod.filename = filename; relativeMod.paths = _module2.default._nodeModulePaths(relative); relativeModules[relative] = relativeMod; } try { return _module2.default._resolveFilename(loc, relativeMod); } catch (err) { return null; } }; var _module = require("module"); var _module2 = _interopRequireDefault(_module); var _path = require("path"); var _path2 = _interopRequireDefault(_path); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var relativeModules = {}; module.exports = exports["default"]; }).call(this,require('_process')) },{"_process":484,"babel-runtime/helpers/typeof":70,"module":135,"path":481}],9:[function(require,module,exports){ "use strict"; exports.__esModule = true; var _map = require("babel-runtime/core-js/map"); var _map2 = _interopRequireDefault(_map); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn"); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require("babel-runtime/helpers/inherits"); var _inherits3 = _interopRequireDefault(_inherits2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Store = function (_Map) { (0, _inherits3.default)(Store, _Map); function Store() { (0, _classCallCheck3.default)(this, Store); var _this = (0, _possibleConstructorReturn3.default)(this, _Map.call(this)); _this.dynamicData = {}; return _this; } Store.prototype.setDynamic = function setDynamic(key, fn) { this.dynamicData[key] = fn; }; Store.prototype.get = function get(key) { if (this.has(key)) { return _Map.prototype.get.call(this, key); } else { if (Object.prototype.hasOwnProperty.call(this.dynamicData, key)) { var val = this.dynamicData[key](); this.set(key, val); return val; } } }; return Store; }(_map2.default); exports.default = Store; module.exports = exports["default"]; },{"babel-runtime/core-js/map":52,"babel-runtime/helpers/classCallCheck":66,"babel-runtime/helpers/inherits":68,"babel-runtime/helpers/possibleConstructorReturn":69}],10:[function(require,module,exports){ "use strict"; exports.__esModule = true; exports.default = function (whitelist) { var outputType = arguments.length <= 1 || arguments[1] === undefined ? "global" : arguments[1]; var namespace = t.identifier("babelHelpers"); var builder = function builder(body) { return buildHelpers(body, namespace, whitelist); }; var tree = void 0; var build = { global: buildGlobal, umd: buildUmd, var: buildVar }[outputType]; if (build) { tree = build(namespace, builder); } else { throw new Error(messages.get("unsupportedOutputType", outputType)); } return (0, _babelGenerator2.default)(tree).code; }; var _babelHelpers = require("babel-helpers"); var helpers = _interopRequireWildcard(_babelHelpers); var _babelGenerator = require("babel-generator"); var _babelGenerator2 = _interopRequireDefault(_babelGenerator); var _babelMessages = require("babel-messages"); var messages = _interopRequireWildcard(_babelMessages); var _babelTemplate = require("babel-template"); var _babelTemplate2 = _interopRequireDefault(_babelTemplate); var _each = require("lodash/each"); var _each2 = _interopRequireDefault(_each); var _babelTypes = require("babel-types"); var t = _interopRequireWildcard(_babelTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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; } } /* eslint max-len: 0 */ var buildUmdWrapper = (0, _babelTemplate2.default)("\n (function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(AMD_ARGUMENTS, factory);\n } else if (typeof exports === \"object\") {\n factory(COMMON_ARGUMENTS);\n } else {\n factory(BROWSER_ARGUMENTS);\n }\n })(UMD_ROOT, function (FACTORY_PARAMETERS) {\n FACTORY_BODY\n });\n"); function buildGlobal(namespace, builder) { var body = []; var container = t.functionExpression(null, [t.identifier("global")], t.blockStatement(body)); var tree = t.program([t.expressionStatement(t.callExpression(container, [helpers.get("selfGlobal")]))]); body.push(t.variableDeclaration("var", [t.variableDeclarator(namespace, t.assignmentExpression("=", t.memberExpression(t.identifier("global"), namespace), t.objectExpression([])))])); builder(body); return tree; } function buildUmd(namespace, builder) { var body = []; body.push(t.variableDeclaration("var", [t.variableDeclarator(namespace, t.identifier("global"))])); builder(body); return t.program([buildUmdWrapper({ FACTORY_PARAMETERS: t.identifier("global"), BROWSER_ARGUMENTS: t.assignmentExpression("=", t.memberExpression(t.identifier("root"), namespace), t.objectExpression([])), COMMON_ARGUMENTS: t.identifier("exports"), AMD_ARGUMENTS: t.arrayExpression([t.stringLiteral("exports")]), FACTORY_BODY: body, UMD_ROOT: t.identifier("this") })]); } function buildVar(namespace, builder) { var body = []; body.push(t.variableDeclaration("var", [t.variableDeclarator(namespace, t.objectExpression([]))])); builder(body); body.push(t.expressionStatement(namespace)); return t.program(body); } function buildHelpers(body, namespace, whitelist) { (0, _each2.default)(helpers.list, function (name) { if (whitelist && whitelist.indexOf(name) < 0) return; var key = t.identifier(name); body.push(t.expressionStatement(t.assignmentExpression("=", t.memberExpression(namespace, key), helpers.get(name)))); }); } module.exports = exports["default"]; },{"babel-generator":38,"babel-helpers":47,"babel-messages":48,"babel-template":71,"babel-types":108,"lodash/each":428}],11:[function(require,module,exports){ (function (process){ "use strict"; exports.__esModule = true; exports.File = undefined; var _typeof2 = require("babel-runtime/helpers/typeof"); var _typeof3 = _interopRequireDefault(_typeof2); var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); var _create = require("babel-runtime/core-js/object/create"); var _create2 = _interopRequireDefault(_create); var _assign = require("babel-runtime/core-js/object/assign"); var _assign2 = _interopRequireDefault(_assign); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn"); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require("babel-runtime/helpers/inherits"); var _inherits3 = _interopRequireDefault(_inherits2); var _babelHelpers = require("babel-helpers"); var _babelHelpers2 = _interopRequireDefault(_babelHelpers); var _metadata = require("./metadata"); var metadataVisitor = _interopRequireWildcard(_metadata); var _convertSourceMap = require("convert-source-map"); var _convertSourceMap2 = _interopRequireDefault(_convertSourceMap); var _optionManager = require("./options/option-manager"); var _optionManager2 = _interopRequireDefault(_optionManager); var _pluginPass = require("../plugin-pass"); var _pluginPass2 = _interopRequireDefault(_pluginPass); var _shebangRegex = require("shebang-regex"); var _shebangRegex2 = _interopRequireDefault(_shebangRegex); var _babelTraverse = require("babel-traverse"); var _babelTraverse2 = _interopRequireDefault(_babelTraverse); var _sourceMap = require("source-map"); var _sourceMap2 = _interopRequireDefault(_sourceMap); var _babelGenerator = require("babel-generator"); var _babelGenerator2 = _interopRequireDefault(_babelGenerator); var _babelCodeFrame = require("babel-code-frame"); var _babelCodeFrame2 = _interopRequireDefault(_babelCodeFrame); var _defaults = require("lodash/defaults"); var _defaults2 = _interopRequireDefault(_defaults); var _logger = require("./logger"); var _logger2 = _interopRequireDefault(_logger); var _store = require("../../store"); var _store2 = _interopRequireDefault(_store); var _babylon = require("babylon"); var _util = require("../../util"); var util = _interopRequireWildcard(_util); var _path = require("path"); var _path2 = _interopRequireDefault(_path); var _babelTypes = require("babel-types"); var t = _interopRequireWildcard(_babelTypes); var _blockHoist = require("../internal-plugins/block-hoist"); var _blockHoist2 = _interopRequireDefault(_blockHoist); var _shadowFunctions = require("../internal-plugins/shadow-functions"); var _shadowFunctions2 = _interopRequireDefault(_shadowFunctions); 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; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* global BabelFileResult, BabelParserOptions, BabelFileMetadata */ /* eslint max-len: 0 */ var INTERNAL_PLUGINS = [[_blockHoist2.default], [_shadowFunctions2.default]]; var errorVisitor = { enter: function enter(path, state) { var loc = path.node.loc; if (loc) { state.loc = loc; path.stop(); } } }; var File = function (_Store) { (0, _inherits3.default)(File, _Store); function File() { var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var pipeline = arguments[1]; (0, _classCallCheck3.default)(this, File); var _this = (0, _possibleConstructorReturn3.default)(this, _Store.call(this)); _this.pipeline = pipeline; _this.log = new _logger2.default(_this, opts.filename || "unknown"); _this.opts = _this.initOptions(opts); _this.parserOpts = { highlightCode: _this.opts.highlightCode, nonStandard: _this.opts.nonStandard, sourceType: _this.opts.sourceType, filename: _this.opts.filename, plugins: [] }; _this.pluginVisitors = []; _this.pluginPasses = []; // Plugins for top-level options. _this.buildPluginsForOptions(_this.opts); // If we are in the "pass per preset" mode, build // also plugins for each preset. if (_this.opts.passPerPreset) { // All the "per preset" options are inherited from the main options. _this.perPresetOpts = []; _this.opts.presets.forEach(function (presetOpts) { var perPresetOpts = (0, _assign2.default)((0, _create2.default)(_this.opts), presetOpts); _this.perPresetOpts.push(perPresetOpts); _this.buildPluginsForOptions(perPresetOpts); }); } _this.metadata = { usedHelpers: [], marked: [], modules: { imports: [], exports: { exported: [], specifiers: [] } } }; _this.dynamicImportTypes = {}; _this.dynamicImportIds = {}; _this.dynamicImports = []; _this.declarations = {}; _this.usedHelpers = {}; _this.path = null; _this.ast = {}; _this.code = ""; _this.shebang = ""; _this.hub = new _babelTraverse.Hub(_this); return _this; } File.prototype.getMetadata = function getMetadata() { var has = false; for (var _iterator = this.ast.program.body, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } var node = _ref; if (t.isModuleDeclaration(node)) { has = true; break; } } if (has) { this.path.traverse(metadataVisitor, this); } }; File.prototype.initOptions = function initOptions(opts) { opts = new _optionManager2.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); (0, _defaults2.default)(opts, { moduleRoot: opts.sourceRoot }); (0, _defaults2.default)(opts, { sourceRoot: opts.moduleRoot }); (0, _defaults2.default)(opts, { filenameRelative: opts.filename }); var basenameRelative = _path2.default.basename(opts.filenameRelative); (0, _defaults2.default)(opts, { sourceFileName: basenameRelative, sourceMapTarget: basenameRelative }); return opts; }; File.prototype.buildPluginsForOptions = function buildPluginsForOptions(opts) { if (!Array.isArray(opts.plugins)) { return; } var plugins = opts.plugins.concat(INTERNAL_PLUGINS); var currentPluginVisitors = []; var currentPluginPasses = []; // init plugins! for (var _iterator2 = plugins, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) { var _ref2; if (_isArray2) { if (_i2 >= _iterator2.length) break; _ref2 = _iterator2[_i2++]; } else { _i2 = _iterator2.next(); if (_i2.done) break; _ref2 = _i2.value; } var ref = _ref2; var plugin = ref[0]; var pluginOpts = ref[1]; // todo: fix - can't embed in loop head because of flow bug currentPluginVisitors.push(plugin.visitor); currentPluginPasses.push(new _pluginPass2.default(this, plugin, pluginOpts)); if (plugin.manipulateOptions) { plugin.manipulateOptions(opts, this.parserOpts, this); } } this.pluginVisitors.push(currentPluginVisitors); this.pluginPasses.push(currentPluginPasses); }; File.prototype.getModuleName = function getModuleName() { var opts = this.opts; if (!opts.moduleIds) { return null; } // moduleId is n/a if a `getModuleId()` is provided if (opts.moduleId != null && !opts.getModuleId) { return opts.moduleId; } var filenameRelative = opts.filenameRelative; var moduleName = ""; if (opts.moduleRoot != null) { moduleName = opts.moduleRoot + "/"; } if (!opts.filenameRelative) { return moduleName + opts.filename.replace(/^\//, ""); } if (opts.sourceRoot != null) { // remove sourceRoot from filename var sourceRootRegEx = new RegExp("^" + opts.sourceRoot + "\/?"); filenameRelative = filenameRelative.replace(sourceRootRegEx, ""); } // remove extension filenameRelative = filenameRelative.replace(/\.(\w*?)$/, ""); moduleName += filenameRelative; // normalize path separators moduleName = moduleName.replace(/\\/g, "/"); if (opts.getModuleId) { // If return is falsy, assume they want us to use our generated default name return opts.getModuleId(moduleName) || moduleName; } else { return moduleName; } }; File.prototype.resolveModuleSource = function resolveModuleSource(source) { var resolveModuleSource = this.opts.resolveModuleSource; if (resolveModuleSource) source = resolveModuleSource(source, this.opts.filename); return source; }; File.prototype.addImport = function addImport(source, imported) { var name = arguments.length <= 2 || arguments[2] === undefined ? imported : arguments[2]; var alias = source + ":" + imported; var id = this.dynamicImportIds[alias]; if (!id) { source = this.resolveModuleSource(source); id = this.dynamicImportIds[alias] = this.scope.generateUidIdentifier(name); var specifiers = []; if (imported === "*") { specifiers.push(t.importNamespaceSpecifier(id)); } else if (imported === "default") { specifiers.push(t.importDefaultSpecifier(id)); } else { specifiers.push(t.importSpecifier(id, t.identifier(imported))); } var declar = t.importDeclaration(specifiers, t.stringLiteral(source)); declar._blockHoist = 3; this.path.unshiftContainer("body", declar); } return id; }; File.prototype.addHelper = function addHelper(name) { var declar = this.declarations[name]; if (declar) return declar; if (!this.usedHelpers[name]) { this.metadata.usedHelpers.push(name); this.usedHelpers[name] = true; } var generator = this.get("helperGenerator"); var runtime = this.get("helpersNamespace"); if (generator) { var res = generator(name); if (res) return res; } else if (runtime) { return t.memberExpression(runtime, t.identifier(name)); } var ref = (0, _babelHelpers2.default)(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.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; }; File.prototype.buildCodeFrameError = function buildCodeFrameError(node, msg) { var Error = arguments.length <= 2 || arguments[2] === undefined ? SyntaxError : arguments[2]; var loc = node && (node.loc || node._loc); var err = new Error(msg); if (loc) { err.loc = loc.start; } else { (0, _babelTraverse2.default)(node, errorVisitor, this.scope, err); err.message += " (This is an error on an internal node. Probably an internal error"; if (err.loc) { err.message += ". Location has been estimated."; } err.message += ")"; } return err; }; File.prototype.mergeSourceMap = function mergeSourceMap(map) { var inputMap = this.opts.inputSourceMap; if (inputMap) { var _ret = function () { var inputMapConsumer = new _sourceMap2.default.SourceMapConsumer(inputMap); var outputMapConsumer = new _sourceMap2.default.SourceMapConsumer(map); var mergedGenerator = new _sourceMap2.default.SourceMapGenerator({ file: inputMapConsumer.file, sourceRoot: inputMapConsumer.sourceRoot }); // This assumes the output map always has a single source, since Babel always compiles a single source file to a // single output file. var source = outputMapConsumer.sources[0]; inputMapConsumer.eachMapping(function (mapping) { var generatedPosition = outputMapConsumer.generatedPositionFor({ line: mapping.generatedLine, column: mapping.generatedColumn, source: source }); if (generatedPosition.column != null) { mergedGenerator.addMapping({ source: mapping.source, original: mapping.source == null ? null : { line: mapping.originalLine, column: mapping.originalColumn }, generated: generatedPosition }); } }); var mergedMap = mergedGenerator.toJSON(); inputMap.mappings = mergedMap.mappings; return { v: inputMap }; }(); if ((typeof _ret === "undefined" ? "undefined" : (0, _typeof3.default)(_ret)) === "object") return _ret.v; } else { return map; } }; File.prototype.parse = function parse(code) { this.log.debug("Parse start"); var ast = (0, _babylon.parse)(code, this.parserOpts); this.log.debug("Parse stop"); return ast; }; File.prototype._addAst = function _addAst(ast) { this.path = _babelTraverse.NodePath.get({ hub: this.hub, parentPath: null, parent: ast, container: ast, key: "program" }).setContext(); this.scope = this.path.scope; this.ast = ast; this.getMetadata(); }; File.prototype.addAst = function addAst(ast) { this.log.debug("Start set AST"); this._addAst(ast); this.log.debug("End set AST"); }; File.prototype.transform = function transform() { // In the "pass per preset" mode, we have grouped passes. // Otherwise, there is only one plain pluginPasses array. for (var i = 0; i < this.pluginPasses.length; i++) { var pluginPasses = this.pluginPasses[i]; this.call("pre", pluginPasses); this.log.debug("Start transform traverse"); (0, _babelTraverse2.default)(this.ast, _babelTraverse2.default.visitors.merge(this.pluginVisitors[i], pluginPasses), this.scope); this.log.debug("End transform traverse"); this.call("post", pluginPasses); } return this.generate(); }; 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 = (0, _babelCodeFrame2.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); err.stack = newStack; } throw err; } }; File.prototype.addCode = function addCode(code) { code = (code || "") + ""; code = this.parseInputSourceMap(code); this.code = code; }; File.prototype.parseCode = function parseCode() { this.parseShebang(); var ast = this.parse(this.code); this.addAst(ast); }; File.prototype.shouldIgnore = function shouldIgnore() { var opts = this.opts; return util.shouldIgnore(opts.filename, opts.ignore, opts.only); }; File.prototype.call = function call(key, pluginPasses) { for (var _iterator3 = pluginPasses, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) { var _ref3; if (_isArray3) { if (_i3 >= _iterator3.length) break; _ref3 = _iterator3[_i3++]; } else { _i3 = _iterator3.next(); if (_i3.done) break; _ref3 = _i3.value; } var pass = _ref3; var plugin = pass.plugin; var fn = plugin[key]; if (fn) fn.call(pass, this); } }; 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; }; 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, ""); } }; File.prototype.makeResult = function makeResult(_ref4) { var code = _ref4.code; var map = _ref4.map; var ast = _ref4.ast; var ignored = _ref4.ignored; var result = { metadata: null, options: this.opts, ignored: !!ignored, code: null, ast: null, map: map || null }; if (this.opts.code) { result.code = code; } if (this.opts.ast) { result.ast = ast; } if (this.opts.metadata) { result.metadata = this.metadata; } return result; }; 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 = (0, _babelGenerator2.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); }; return File; }(_store2.default); exports.default = File; exports.File = File; }).call(this,require('_process')) },{"../../store":9,"../../util":25,"../internal-plugins/block-hoist":20,"../internal-plugins/shadow-functions":21,"../plugin-pass":23,"./logger":12,"./metadata":13,"./options/option-manager":17,"_process":484,"babel-code-frame":3,"babel-generator":38,"babel-helpers":47,"babel-runtime/core-js/get-iterator":50,"babel-runtime/core-js/object/assign":54,"babel-runtime/core-js/object/create":55,"babel-runtime/helpers/classCallCheck":66,"babel-runtime/helpers/inherits":68,"babel-runtime/helpers/possibleConstructorReturn":69,"babel-runtime/helpers/typeof":70,"babel-traverse":75,"babel-types":108,"babylon":112,"convert-source-map":139,"lodash/defaults":427,"path":481,"shebang-regex":486,"source-map":498}],12:[function(require,module,exports){ "use strict"; exports.__esModule = true; var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _node = require("debug/node"); var _node2 = _interopRequireDefault(_node); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var verboseDebug = (0, _node2.default)("babel:verbose"); var generalDebug = (0, _node2.default)("babel"); var seenDeprecatedMessages = []; var Logger = function () { function Logger(file, filename) { (0, _classCallCheck3.default)(this, Logger); this.filename = filename; this.file = file; } Logger.prototype._buildMessage = function _buildMessage(msg) { var parts = "[BABEL] " + this.filename; if (msg) parts += ": " + msg; return parts; }; Logger.prototype.warn = function warn(msg) { console.warn(this._buildMessage(msg)); }; Logger.prototype.error = function error(msg) { var Constructor = arguments.length <= 1 || arguments[1] === undefined ? Error : arguments[1]; throw new Constructor(this._buildMessage(msg)); }; Logger.prototype.deprecate = function deprecate(msg) { if (this.file.opts && this.file.opts.suppressDeprecationMessages) return; msg = this._buildMessage(msg); // already seen this message if (seenDeprecatedMessages.indexOf(msg) >= 0) return; // make sure we don't see it again seenDeprecatedMessages.push(msg); console.error(msg); }; Logger.prototype.verbose = function verbose(msg) { if (verboseDebug.enabled) verboseDebug(this._buildMessage(msg)); }; Logger.prototype.debug = function debug(msg) { if (generalDebug.enabled) generalDebug(this._buildMessage(msg)); }; Logger.prototype.deopt = function deopt(node, msg) { this.debug(msg); }; return Logger; }(); exports.default = Logger; module.exports = exports["default"]; },{"babel-runtime/helpers/classCallCheck":66,"debug/node":252}],13:[function(require,module,exports){ "use strict"; exports.__esModule = true; exports.ImportDeclaration = exports.ModuleDeclaration = undefined; var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); exports.ExportDeclaration = ExportDeclaration; exports.Scope = Scope; var _babelTypes = require("babel-types"); var t = _interopRequireWildcard(_babelTypes); 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; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ModuleDeclaration = exports.ModuleDeclaration = { enter: function enter(path, file) { var node = path.node; if (node.source) { node.source.value = file.resolveModuleSource(node.source.value); } } }; var ImportDeclaration = exports.ImportDeclaration = { exit: function exit(path, file) { var node = path.node; var specifiers = []; var imported = []; file.metadata.modules.imports.push({ source: node.source.value, imported: imported, specifiers: specifiers }); for (var _iterator = path.get("specifiers"), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } var specifier = _ref; var local = specifier.node.local.name; if (specifier.isImportDefaultSpecifier()) { imported.push("default"); specifiers.push({ kind: "named", imported: "default", local: local }); } if (specifier.isImportSpecifier()) { var importedName = specifier.node.imported.name; imported.push(importedName); specifiers.push({ kind: "named", imported: importedName, local: local }); } if (specifier.isImportNamespaceSpecifier()) { imported.push("*"); specifiers.push({ kind: "namespace", local: local }); } } } }; function ExportDeclaration(path, file) { var node = path.node; var source = node.source ? node.source.value : null; var exports = file.metadata.modules.exports; // export function foo() {} // export let foo = "bar"; var declar = path.get("declaration"); if (declar.isStatement()) { var bindings = declar.getBindingIdentifiers(); for (var name in bindings) { exports.exported.push(name); exports.specifiers.push({ kind: "local", local: name, exported: path.isExportDefaultDeclaration() ? "default" : name }); } } if (path.isExportNamedDeclaration() && node.specifiers) { for (var _iterator2 = node.specifiers, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) { var _ref2; if (_isArray2) { if (_i2 >= _iterator2.length) break; _ref2 = _iterator2[_i2++]; } else { _i2 = _iterator2.next(); if (_i2.done) break; _ref2 = _i2.value; } var specifier = _ref2; var exported = specifier.exported.name; exports.exported.push(exported); // export foo from "bar"; if (t.isExportDefaultSpecifier(specifier)) { exports.specifiers.push({ kind: "external", local: exported, exported: exported, source: source }); } // export * as foo from "bar"; if (t.isExportNamespaceSpecifier(specifier)) { exports.specifiers.push({ kind: "external-namespace", exported: exported, source: source }); } var local = specifier.local; if (!local) continue; // export { foo } from "bar"; // export { foo as bar } from "bar"; if (source) { exports.specifiers.push({ kind: "external", local: local.name, exported: exported, source: source }); } // export { foo }; // export { foo as bar }; if (!source) { exports.specifiers.push({ kind: "local", local: local.name, exported: exported }); } } } // export * from "bar"; if (path.isExportAllDeclaration()) { exports.specifiers.push({ kind: "external-all", source: source }); } } function Scope(path) { path.skip(); } },{"babel-runtime/core-js/get-iterator":50,"babel-types":108}],14:[function(require,module,exports){ (function (process){ "use strict"; exports.__esModule = true; var _assign = require("babel-runtime/core-js/object/assign"); var _assign2 = _interopRequireDefault(_assign); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); exports.default = buildConfigChain; var _resolve = require("../../../helpers/resolve"); var _resolve2 = _interopRequireDefault(_resolve); var _json = require("json5"); var _json2 = _interopRequireDefault(_json); var _pathIsAbsolute = require("path-is-absolute"); var _pathIsAbsolute2 = _interopRequireDefault(_pathIsAbsolute); var _pathExists = require("path-exists"); var _pathExists2 = _interopRequireDefault(_pathExists); var _path = require("path"); var _path2 = _interopRequireDefault(_path); var _fs = require("fs"); var _fs2 = _interopRequireDefault(_fs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var existsCache = {}; var jsonCache = {}; var BABELIGNORE_FILENAME = ".babelignore"; var BABELRC_FILENAME = ".babelrc"; var PACKAGE_FILENAME = "package.json"; function exists(filename) { var cached = existsCache[filename]; if (cached == null) { return existsCache[filename] = _pathExists2.default.sync(filename); } else { return cached; } } function buildConfigChain() { var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var log = arguments[1]; var filename = opts.filename; var builder = new ConfigChainBuilder(log); // resolve all .babelrc files if (opts.babelrc !== false) { builder.findConfigs(filename); } builder.mergeConfig({ options: opts, alias: "base", dirname: filename && _path2.default.dirname(filename) }); return builder.configs; } var ConfigChainBuilder = function () { function ConfigChainBuilder(log) { (0, _classCallCheck3.default)(this, ConfigChainBuilder); this.resolvedConfigs = []; this.configs = []; this.log = log; } ConfigChainBuilder.prototype.findConfigs = function findConfigs(loc) { if (!loc) return; if (!(0, _pathIsAbsolute2.default)(loc)) { loc = _path2.default.join(process.cwd(), loc); } var foundConfig = false; var foundIgnore = false; while (loc !== (loc = _path2.default.dirname(loc))) { if (!foundConfig) { var configLoc = _path2.default.join(loc, BABELRC_FILENAME); if (exists(configLoc)) { this.addConfig(configLoc); foundConfig = true; } var pkgLoc = _path2.default.join(loc, PACKAGE_FILENAME);