rewiremock
Version:
Advanced dependency mocking device.
82 lines (71 loc) • 2.39 kB
JavaScript
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;