UNPKG

rewiremock

Version:

Advanced dependency mocking device.

82 lines (71 loc) 2.39 kB
import { dirname, resolve } from 'path'; import Module from './getModule'; import executor, { requireModule } from './executor'; import _probeAsyncModules from './asyncModules'; import { getModuleName, getModuleParent, getModuleParents, moduleCompare } from "./utils/modules"; export var originalLoader = Module._load; var NodeModule = { overloadRequire: function overloadRequire() { Module._load = executor; // overload modules by internally }, restoreRequire: function restoreRequire() { Module._load = originalLoader; }, probeAsyncModules: function probeAsyncModules() { var load = Module._load; Module._load = _probeAsyncModules.load(this); return _probeAsyncModules.execute(function () { return Promise.resolve(true); }).then(function () { Module._load = load; }); }, probeSyncModules: function probeSyncModules() { var load = Module._load; Module._load = _probeAsyncModules.load(this); _probeAsyncModules.execute(function () { throw new Error('could not use dynamic imports with sync API'); }); Module._load = load; }, _resolveFilename: function _resolveFilename(fileName, module) { return Module._resolveFilename(fileName, module); }, get _cache() { return Module._cache; }, relativeFileName: function relativeFileName(name, parent) { if (name[0] === '.') { return this._resolveFilename(name, parent); } return name; }, require: function require(name, parentModule) { return requireModule(name, parentModule); } }; export var pickModuleName = function pickModuleName(fileName, parent) { if (typeof __webpack_modules__ !== 'undefined' && !__webpack_modules__[fileName]) { var targetFile = resolve(dirname(getModuleName(parent)), fileName); return Object.keys(__webpack_modules__).filter(function (name) { return name.indexOf(targetFile) > 0; }).shift(); } else { return fileName; } }; export { getModuleName, getModuleParent, getModuleParents, moduleCompare }; export var inParents = function inParents(a, b) { var B = getModuleName(b); var parents = getModuleParents(a); return parents.some(function (x) { return x === B; }); }; export var isParent = function isParent(a, b) { var B = getModuleName(b); var parents = getModuleParents(a); return parents[0] === B; }; export default NodeModule;