UNPKG

unimported

Version:

Scans your nodejs project folder and shows obsolete files and modules

60 lines (59 loc) 3 kB
"use strict"; 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;