UNPKG

@aimee-blue/ab-service-kit

Version:
1 lines 2.61 kB
{"version":3,"sources":["../../src/shared/clearModule.ts"],"names":["resolve","moduleId","parent","__filename","undefined","path","dirname","error","clearModule","TypeError","filePath","logger","log","cache","require","entry","children","i","length","id","splice"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,OAAO,GAAIC,QAAD,IAAsB;AACpC,MAAI;AACF,UAAMC,MAAM,GAAG,2BAAaC,UAAb,CAAf;;AACA,QAAI,CAACD,MAAL,EAAa;AACX,aAAOE,SAAP;AACD;;AACD,WAAO,0BAAYC,cAAKC,OAAL,CAAaJ,MAAb,CAAZ,EAAkCD,QAAlC,CAAP;AACD,GAND,CAME,OAAOM,KAAP,EAAc;AACd,WAAOH,SAAP;AACD;AACF,CAVD;;AAYO,MAAMI,WAAW,GAAIP,QAAD,IAAsB;AAC/C,MAAI,OAAOA,QAAP,KAAoB,QAAxB,EAAkC;AAChC,UAAM,IAAIQ,SAAJ,CAAe,gCAA+B,OAAOR,QAAS,IAA9D,CAAN;AACD;;AAED,QAAMS,QAAQ,GAAGV,OAAO,CAACC,QAAD,CAAxB;;AAEA,MAAI,CAACS,QAAL,EAAe;AACb;AACD;;AAED,QAAMC,MAAM,GAAG,kCAAf;AAEAA,EAAAA,MAAM,CAACC,GAAP,CAAW,YAAX,EAAyBF,QAAzB;AAEA,QAAMG,KAAK,GAAGC,OAAO,CAACD,KAAtB;AAEA,QAAME,KAAK,GAAGF,KAAK,CAACH,QAAD,CAAnB,CAjB+C,CAmB/C;;AACA,MAAIK,KAAK,IAAIA,KAAK,CAACb,MAAnB,EAA2B;AACzB,UAAMc,QAAQ,GAAGD,KAAK,CAACb,MAAN,CAAac,QAA9B;;AACA,SAAK,IAAIC,CAAC,GAAGD,QAAQ,CAACE,MAAT,GAAkB,CAA/B,EAAkCD,CAAC,IAAI,CAAvC,EAA0CA,CAAC,IAAI,CAA/C,EAAkD;AAChD,UAAID,QAAQ,CAACC,CAAD,CAAR,CAAYE,EAAZ,KAAmBT,QAAvB,EAAiC;AAC/BM,QAAAA,QAAQ,CAACI,MAAT,CAAgBH,CAAhB,EAAmB,CAAnB;AACD;AACF;AACF,GA3B8C,CA6B/C;;;AACA,SAAOJ,KAAK,CAACH,QAAD,CAAZ;AACD,CA/BM","sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\nimport parentModule from 'parent-module';\nimport { defaultBasicLogger } from './logging';\n\nconst resolve = (moduleId: string) => {\n try {\n const parent = parentModule(__filename);\n if (!parent) {\n return undefined;\n }\n return resolveFrom(path.dirname(parent), moduleId);\n } catch (error) {\n return undefined;\n }\n};\n\nexport const clearModule = (moduleId: string) => {\n if (typeof moduleId !== 'string') {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof moduleId}\\``);\n }\n\n const filePath = resolve(moduleId);\n\n if (!filePath) {\n return;\n }\n\n const logger = defaultBasicLogger();\n\n logger.log(' Clearing', filePath);\n\n const cache = require.cache as { [key: string]: NodeModule | undefined };\n\n const entry = cache[filePath];\n\n // Delete itself from module parent\n if (entry && entry.parent) {\n const children = entry.parent.children;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n if (children[i].id === filePath) {\n children.splice(i, 1);\n }\n }\n }\n\n // Delete module from cache\n delete cache[filePath];\n};\n"],"file":"clearModule.js"}