Socket
Socket
Sign inDemoInstall

pure-index

Package Overview
Dependencies
Maintainers
1
Versions
75
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pure-index - npm Package Compare versions

Comparing version 0.0.3 to 0.0.4

bin/getUnusedExports/filter.js

9

bin/getConfig.js

@@ -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"
]
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc