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