unimported
Version:
Scans your nodejs project folder and shows obsolete files and modules
60 lines (59 loc) • 3 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.processResults = void 0;
const ignore_1 = __importDefault(require("ignore"));
const ensureArray_1 = require("./ensureArray");
const fs_1 = require("./fs");
function index(array) {
return (0, ensureArray_1.ensureArray)(array).reduce((acc, str) => {
acc[str] = true;
return acc;
}, {});
}
function processResults(files, traverseResult, context) {
return __awaiter(this, void 0, void 0, function* () {
const ignoreUnresolvedIdx = index(context.config.ignoreUnresolved);
const ignoreUnusedIdx = index(context.config.ignoreUnused);
const ignoreUnimportedIdx = index(context.config.ignoreUnimported);
const unresolved = Array.from(traverseResult.unresolved).filter((entry) => !ignoreUnresolvedIdx[entry.toString()]);
const unused = Object.keys(context.dependencies).filter((x) => !traverseResult.modules.has(x) &&
!context.peerDependencies[x] &&
!ignoreUnusedIdx[x]);
let unimported = files
.filter((x) => !traverseResult.files.has(x))
.map((x) => x.replace(context.cwd + '/', ''))
.filter((x) => !ignoreUnimportedIdx[x]);
if (context.config.respectGitignore && (yield (0, fs_1.exists)('.gitignore'))) {
const gitignore = (yield (0, fs_1.readText)('.gitignore')).split('\n');
const ig = (0, ignore_1.default)().add(gitignore);
unimported = unimported.filter((x) => !ig.ignores(x));
}
const formatTypeResultMap = {
showUnusedFiles: !unimported.length,
showUnusedDeps: !unused.length,
showUnresolvedImports: !unresolved.length,
};
const isClean = Object.keys(formatTypeResultMap).some((key) => context[key])
? Object.keys(formatTypeResultMap).every((key) => context[key] ? formatTypeResultMap[key] : true)
: Object.values(formatTypeResultMap).every((v) => v);
return {
unresolved,
unused,
unimported,
clean: isClean,
};
});
}
exports.processResults = processResults;
;