UNPKG

@aimee-blue/ab-service-kit

Version:
63 lines (45 loc) 1.5 kB
"use strict"; 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