@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
63 lines (45 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.clearModule = void 0;
var _path = _interopRequireDefault(require("path"));
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
var _parentModule = _interopRequireDefault(require("parent-module"));
var _logging = require("./logging");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const resolve = moduleId => {
try {
const parent = (0, _parentModule.default)(__filename);
if (!parent) {
return undefined;
}
return (0, _resolveFrom.default)(_path.default.dirname(parent), moduleId);
} catch (error) {
return undefined;
}
};
const clearModule = moduleId => {
if (typeof moduleId !== 'string') {
throw new TypeError(`Expected a \`string\`, got \`${typeof moduleId}\``);
}
const filePath = resolve(moduleId);
if (!filePath) {
return;
}
const logger = (0, _logging.defaultBasicLogger)();
logger.log(' Clearing', filePath);
const cache = require.cache;
const entry = cache[filePath]; // Delete itself from module parent
if (entry && entry.parent) {
const children = entry.parent.children;
for (let i = children.length - 1; i >= 0; i -= 1) {
if (children[i].id === filePath) {
children.splice(i, 1);
}
}
} // Delete module from cache
delete cache[filePath];
};
exports.clearModule = clearModule;
//# sourceMappingURL=clearModule.js.map