UNPKG

rewiremock

Version:

Advanced dependency mocking device.

110 lines (87 loc) 3.56 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.isParent = exports.inParents = exports.moduleCompare = exports.getModuleParents = exports.getModuleParent = exports.getModuleName = exports.pickModuleName = exports.originalLoader = undefined; var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _path = require('path'); var _getModule = require('./getModule'); var _getModule2 = _interopRequireDefault(_getModule); var _executor = require('./executor'); var _executor2 = _interopRequireDefault(_executor); var _asyncModules = require('./asyncModules'); var _asyncModules2 = _interopRequireDefault(_asyncModules); var _modules = require('./utils/modules'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var originalLoader = exports.originalLoader = _getModule2.default._load; var NodeModule = { overloadRequire: function overloadRequire() { _getModule2.default._load = _executor2.default; // overload modules by internally }, restoreRequire: function restoreRequire() { _getModule2.default._load = originalLoader; }, probeAsyncModules: function probeAsyncModules() { var load = _getModule2.default._load; _getModule2.default._load = _asyncModules2.default.load(this); return _asyncModules2.default.execute(function () { return _promise2.default.resolve(true); }).then(function () { _getModule2.default._load = load; }); }, probeSyncModules: function probeSyncModules() { var load = _getModule2.default._load; _getModule2.default._load = _asyncModules2.default.load(this); _asyncModules2.default.execute(function () { throw new Error('could not use dynamic imports with sync API'); }); _getModule2.default._load = load; }, _resolveFilename: function _resolveFilename(fileName, module) { return _getModule2.default._resolveFilename(fileName, module); }, get _cache() { return _getModule2.default._cache; }, relativeFileName: function relativeFileName(name, parent) { if (name[0] === '.') { return this._resolveFilename(name, parent); } return name; }, require: function require(name, parentModule) { return (0, _executor.requireModule)(name, parentModule); } }; var pickModuleName = exports.pickModuleName = function pickModuleName(fileName, parent) { if (typeof __webpack_modules__ !== 'undefined' && !__webpack_modules__[fileName]) { var targetFile = (0, _path.resolve)((0, _path.dirname)((0, _modules.getModuleName)(parent)), fileName); return (0, _keys2.default)(__webpack_modules__).filter(function (name) { return name.indexOf(targetFile) > 0; }).shift(); } else { return fileName; } }; exports.getModuleName = _modules.getModuleName; exports.getModuleParent = _modules.getModuleParent; exports.getModuleParents = _modules.getModuleParents; exports.moduleCompare = _modules.moduleCompare; var inParents = exports.inParents = function inParents(a, b) { var B = (0, _modules.getModuleName)(b); var parents = (0, _modules.getModuleParents)(a); return parents.some(function (x) { return x === B; }); }; var isParent = exports.isParent = function isParent(a, b) { var B = (0, _modules.getModuleName)(b); var parents = (0, _modules.getModuleParents)(a); return parents[0] === B; }; exports.default = NodeModule;