summaryrefslogtreecommitdiffstats
path: root/node_modules/babel-register/lib/node.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/babel-register/lib/node.js')
-rw-r--r--node_modules/babel-register/lib/node.js179
1 files changed, 179 insertions, 0 deletions
diff --git a/node_modules/babel-register/lib/node.js b/node_modules/babel-register/lib/node.js
new file mode 100644
index 0000000..41f0936
--- /dev/null
+++ b/node_modules/babel-register/lib/node.js
@@ -0,0 +1,179 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _keys = require("babel-runtime/core-js/object/keys");
+
+var _keys2 = _interopRequireDefault(_keys);
+
+var _stringify = require("babel-runtime/core-js/json/stringify");
+
+var _stringify2 = _interopRequireDefault(_stringify);
+
+exports.default = function () {
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+ if (opts.only != null) only = _babelCore.util.arrayify(opts.only, _babelCore.util.regexify);
+ if (opts.ignore != null) ignore = _babelCore.util.arrayify(opts.ignore, _babelCore.util.regexify);
+
+ if (opts.extensions) hookExtensions(_babelCore.util.arrayify(opts.extensions));
+
+ if (opts.cache === false) cache = null;
+
+ delete opts.extensions;
+ delete opts.ignore;
+ delete opts.cache;
+ delete opts.only;
+
+ (0, _extend2.default)(transformOpts, opts);
+};
+
+var _cloneDeep = require("lodash/cloneDeep");
+
+var _cloneDeep2 = _interopRequireDefault(_cloneDeep);
+
+var _sourceMapSupport = require("source-map-support");
+
+var _sourceMapSupport2 = _interopRequireDefault(_sourceMapSupport);
+
+var _cache = require("./cache");
+
+var registerCache = _interopRequireWildcard(_cache);
+
+var _extend = require("lodash/extend");
+
+var _extend2 = _interopRequireDefault(_extend);
+
+var _babelCore = require("babel-core");
+
+var babel = _interopRequireWildcard(_babelCore);
+
+var _fs = require("fs");
+
+var _fs2 = _interopRequireDefault(_fs);
+
+var _path = require("path");
+
+var _path2 = _interopRequireDefault(_path);
+
+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 }; }
+
+_sourceMapSupport2.default.install({
+ handleUncaughtExceptions: false,
+ environment: "node",
+ retrieveSourceMap: function retrieveSourceMap(source) {
+ var map = maps && maps[source];
+ if (map) {
+ return {
+ url: null,
+ map: map
+ };
+ } else {
+ return null;
+ }
+ }
+});
+
+registerCache.load();
+var cache = registerCache.get();
+
+var transformOpts = {};
+
+var ignore = void 0;
+var only = void 0;
+
+var oldHandlers = {};
+var maps = {};
+
+var cwd = process.cwd();
+
+function getRelativePath(filename) {
+ return _path2.default.relative(cwd, filename);
+}
+
+function mtime(filename) {
+ return +_fs2.default.statSync(filename).mtime;
+}
+
+function compile(filename) {
+ var result = void 0;
+
+ var opts = new _babelCore.OptionManager().init((0, _extend2.default)({ sourceRoot: _path2.default.dirname(filename) }, (0, _cloneDeep2.default)(transformOpts), { filename: filename }));
+
+ var cacheKey = (0, _stringify2.default)(opts) + ":" + babel.version;
+
+ var env = process.env.BABEL_ENV || process.env.NODE_ENV;
+ if (env) cacheKey += ":" + env;
+
+ if (cache) {
+ var cached = cache[cacheKey];
+ if (cached && cached.mtime === mtime(filename)) {
+ result = cached;
+ }
+ }
+
+ if (!result) {
+ result = babel.transformFileSync(filename, (0, _extend2.default)(opts, {
+ babelrc: false,
+ sourceMaps: "both",
+ ast: false
+ }));
+ }
+
+ if (cache) {
+ cache[cacheKey] = result;
+ result.mtime = mtime(filename);
+ }
+
+ maps[filename] = result.map;
+
+ return result.code;
+}
+
+function shouldIgnore(filename) {
+ if (!ignore && !only) {
+ return getRelativePath(filename).split(_path2.default.sep).indexOf("node_modules") >= 0;
+ } else {
+ return _babelCore.util.shouldIgnore(filename, ignore || [], only);
+ }
+}
+
+function loader(m, filename) {
+ m._compile(compile(filename), filename);
+}
+
+function registerExtension(ext) {
+ var old = oldHandlers[ext] || oldHandlers[".js"] || require.extensions[".js"];
+
+ require.extensions[ext] = function (m, filename) {
+ if (shouldIgnore(filename)) {
+ old(m, filename);
+ } else {
+ loader(m, filename, old);
+ }
+ };
+}
+
+function hookExtensions(_exts) {
+ (0, _keys2.default)(oldHandlers).forEach(function (ext) {
+ var old = oldHandlers[ext];
+ if (old === undefined) {
+ delete require.extensions[ext];
+ } else {
+ require.extensions[ext] = old;
+ }
+ });
+
+ oldHandlers = {};
+
+ _exts.forEach(function (ext) {
+ oldHandlers[ext] = require.extensions[ext];
+ registerExtension(ext);
+ });
+}
+
+hookExtensions(_babelCore.util.canCompile.EXTENSIONS);
+
+module.exports = exports["default"]; \ No newline at end of file