pure-index
Advanced tools
Comparing version 0.0.3 to 0.0.4
@@ -9,3 +9,4 @@ import { join } from 'node:path' | ||
babelPlugins: new Set(['typescript']), | ||
indexFilePath: 'index.ts' | ||
indexFilePath: 'index.ts', | ||
filesBatchSize: 100 | ||
} | ||
@@ -26,3 +27,4 @@ | ||
babelPlugins = [], | ||
indexFilePath = BASE_CONFIG.indexFilePath | ||
indexFilePath = BASE_CONFIG.indexFilePath, | ||
filesBatchSize = BASE_CONFIG.filesBatchSize | ||
} | ||
@@ -36,3 +38,4 @@ } = result | ||
babelPlugins: new Set([...BASE_CONFIG.babelPlugins, ...babelPlugins]), | ||
indexFilePath | ||
indexFilePath, | ||
filesBatchSize | ||
} | ||
@@ -39,0 +42,0 @@ } |
import { join } from 'node:path' | ||
import parser from '@babel/parser' | ||
import traverse from '@babel/traverse' | ||
import _traverse from '@babel/traverse' | ||
import { readFile } from './utils.js' | ||
import { readFile, ObservableSet } from './utils/index.js' | ||
const traverse = _traverse.default | ||
/** | ||
@@ -22,10 +24,10 @@ * @param {{ | ||
const code = await readFile(join(pkg.path, config.indexFilePath)) | ||
const result = new Set([]) | ||
const result = new ObservableSet() | ||
const ast = parser.parse(code, { | ||
sourceType: 'module', | ||
plugins: [...config.babelPlugins] | ||
plugins: config.babelPlugins | ||
}) | ||
traverse.default(ast, { | ||
traverse(ast, { | ||
ExportNamedDeclaration(path) { | ||
@@ -47,2 +49,4 @@ if (path.node.declaration) { | ||
} | ||
path.skip() | ||
} | ||
@@ -49,0 +53,0 @@ }) |
@@ -5,4 +5,4 @@ #!/usr/bin/env node | ||
import { getExports } from './getExports.js' | ||
import { getImports } from './imports/index.js' | ||
import { createSpinner, printError, readJSON } from './utils.js' | ||
import { getUnusedExports } from './getUnusedExports/index.js' | ||
import { createStatusAPI, readJSON } from './utils/index.js' | ||
@@ -13,25 +13,29 @@ const config = await getConfig() | ||
const pkg = { name, path: process.cwd() } | ||
const statusApi = createStatusAPI({ pkg }) | ||
const exports = await getExports({ config, pkg }) | ||
const exportsSize = exports.size | ||
const spinner = createSpinner({ name: pkg.name }) | ||
exports.onEmpty(statusApi.succeed) | ||
const imports = await getImports({ config, pkg }) | ||
if (imports.size === 0) { | ||
spinner.error() | ||
printError(`Nothing is imported from ${pkg.name}. Remove it.`) | ||
process.exit(1) | ||
if (exportsSize === 0) { | ||
statusApi.failed({ | ||
msg: `Nothing is exported from ${pkg.name}. Remove it.` | ||
}) | ||
} | ||
const exports = await getExports({ config, pkg }) | ||
const unusedExports = await getUnusedExports({ config, pkg, exports }) | ||
const unusedExports = [...exports].filter(element => !imports.has(element)) | ||
if (unusedExports.size === 0) { | ||
statusApi.succeed() | ||
} | ||
if (unusedExports.length === 0) { | ||
spinner.success() | ||
process.exit(0) | ||
if (unusedExports.size === exportsSize) { | ||
statusApi.failed({ | ||
msg: `Nothing is imported from ${pkg.name}. Remove it.` | ||
}) | ||
} | ||
spinner.error() | ||
printError(`Unused exports in ${pkg.name} package found`) | ||
process.stdout.write(`${JSON.stringify(unusedExports, undefined, 2)} \n\n`) | ||
process.exit(1) | ||
statusApi.failed({ | ||
msg: `Unused exports in ${pkg.name} package found`, | ||
exports: unusedExports | ||
}) |
{ | ||
"name": "pure-index", | ||
"type": "module", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"description": "some description", | ||
"main": "./bin/index.js", | ||
"bin": "./bin/index.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
}, | ||
"author": "Viktor Pasynok", | ||
@@ -27,4 +24,34 @@ "license": "MIT", | ||
"devDependencies": { | ||
"prettier": "^3.1.1" | ||
} | ||
"prettier": "3.1.1" | ||
}, | ||
"keywords": [ | ||
"analysis", | ||
"analyze", | ||
"cli", | ||
"dead code", | ||
"dependencies", | ||
"detect", | ||
"duplicate", | ||
"entropy", | ||
"export", | ||
"import", | ||
"index", | ||
"files", | ||
"find", | ||
"javascript", | ||
"lint", | ||
"maintenance", | ||
"members", | ||
"missing", | ||
"monorepo", | ||
"namespace", | ||
"package", | ||
"scan", | ||
"types", | ||
"typescript", | ||
"unreferenced", | ||
"unresolved", | ||
"unused", | ||
"workspace" | ||
] | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
11339
15
315
2
1