mirror of
https://github.com/tvytlx/ai-agent-deep-dive.git
synced 2026-04-04 16:14:50 +08:00
Add extracted source directory and README navigation
This commit is contained in:
69
extracted-source/node_modules/galactus/lib/DestroyerOfModules.js
generated
vendored
Normal file
69
extracted-source/node_modules/galactus/lib/DestroyerOfModules.js
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.DestroyerOfModules = void 0;
|
||||
const fs = require("fs-extra");
|
||||
const path = require("path");
|
||||
const flora_colossus_1 = require("flora-colossus");
|
||||
class DestroyerOfModules {
|
||||
constructor({ rootDirectory, walker, shouldKeepModuleTest, }) {
|
||||
if (rootDirectory) {
|
||||
this.walker = new flora_colossus_1.Walker(rootDirectory);
|
||||
}
|
||||
else if (walker) {
|
||||
this.walker = walker;
|
||||
}
|
||||
else {
|
||||
throw new Error('Must either provide rootDirectory or walker argument');
|
||||
}
|
||||
if (shouldKeepModuleTest) {
|
||||
this.shouldKeepFn = shouldKeepModuleTest;
|
||||
}
|
||||
}
|
||||
async destroyModule(modulePath, moduleMap) {
|
||||
const module = moduleMap.get(modulePath);
|
||||
if (module) {
|
||||
const nodeModulesPath = path.resolve(modulePath, 'node_modules');
|
||||
if (!await fs.pathExists(nodeModulesPath)) {
|
||||
return;
|
||||
}
|
||||
for (const subModuleName of await fs.readdir(nodeModulesPath)) {
|
||||
if (subModuleName.startsWith('@')) {
|
||||
for (const subScopedModuleName of await fs.readdir(path.resolve(nodeModulesPath, subModuleName))) {
|
||||
await this.destroyModule(path.resolve(nodeModulesPath, subModuleName, subScopedModuleName), moduleMap);
|
||||
}
|
||||
}
|
||||
else {
|
||||
await this.destroyModule(path.resolve(nodeModulesPath, subModuleName), moduleMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
await fs.remove(modulePath);
|
||||
}
|
||||
}
|
||||
async collectKeptModules({ relativePaths = false }) {
|
||||
const modules = await this.walker.walkTree();
|
||||
const moduleMap = new Map();
|
||||
const rootPath = path.resolve(this.walker.getRootModule());
|
||||
for (const module of modules) {
|
||||
if (this.shouldKeepModule(module)) {
|
||||
let modulePath = module.path;
|
||||
if (relativePaths) {
|
||||
modulePath = modulePath.replace(`${rootPath}${path.sep}`, '');
|
||||
}
|
||||
moduleMap.set(modulePath, module);
|
||||
}
|
||||
}
|
||||
return moduleMap;
|
||||
}
|
||||
async destroy() {
|
||||
await this.destroyModule(this.walker.getRootModule(), await this.collectKeptModules({ relativePaths: false }));
|
||||
}
|
||||
shouldKeepModule(module) {
|
||||
const isDevDep = module.depType === flora_colossus_1.DepType.DEV || module.depType === flora_colossus_1.DepType.DEV_OPTIONAL;
|
||||
const shouldKeep = this.shouldKeepFn ? this.shouldKeepFn(module, isDevDep) : !isDevDep;
|
||||
return shouldKeep;
|
||||
}
|
||||
}
|
||||
exports.DestroyerOfModules = DestroyerOfModules;
|
||||
//# sourceMappingURL=DestroyerOfModules.js.map
|
||||
Reference in New Issue
Block a user