rewiremock
Version:
Advanced dependency mocking device.
67 lines (54 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.wipe = undefined;
exports.safelyRemoveCache = safelyRemoveCache;
var _mocks = require('./mocks');
var _plugins = require('./plugins');
var _relative = require('./plugins/relative');
var _module = require('./module');
var _module2 = _interopRequireDefault(_module);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// which one?
var wipe = exports.wipe = typeof __webpack_require__ === 'function' ? require('wipe-webpack-cache') : require('wipe-node-cache').wipeCache;
var primaryResolver = function primaryResolver(stubs, moduleName) {
return stubs[moduleName];
};
var resolver = function resolver(stubs, moduleName) {
// never wipe .node(native) module
if (moduleName.indexOf('.node') > -1) {
return false;
}
return 0 || (0, _plugins.shouldWipe)(stubs, moduleName) || primaryResolver(stubs, moduleName) || (0, _relative.relativeWipeCheck)(stubs, moduleName);
};
var wipeCache = function wipeCache(primaryCache) {
if (primaryCache) {
// post clean
wipe(primaryCache, primaryResolver);
} else {
// pre clean
wipe((0, _mocks.getAllMocks)(), resolver);
}
};
function safelyRemoveCache(moduleName) {
var m = _module2.default._cache[moduleName];
if (m) {
// remove self from own parents
if (m.parent && m.parent.children) {
m.parent.children = m.parent.children.filter(function (x) {
return x !== m;
});
}
// remove self from own children
if (m.children) {
m.children.forEach(function (child) {
if (child.parent && child.parent === m) {
child.parent = null;
}
});
}
delete _module2.default._cache[moduleName];
}
}
exports.default = wipeCache;