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.39 to 0.0.40

src/__tests__/js-api/collectUsages.test.js

31

bin/index.js

@@ -7,6 +7,6 @@ #!/usr/bin/env node

import {
createStatusAPI,
printSet,
printError,
createSpinner
createSpinner,
readJSON
} from '../src/utils/index.js'

@@ -33,2 +33,27 @@

await baseFlow({ config })
const { name } = await readJSON('package.json')
const pkg = { name, path: config.entry }
const spinner = createSpinner(`Checking exports from the ${pkg.name} package`)
const result = await baseFlow({ pkg, config, onEmpty: spinner.success })
if (!result.success) {
spinner.error()
switch (result.error.reason) {
case 'no_exports':
printError(`Nothing is exported from ${pkg.name}. Remove it.`)
break
case 'no_imports':
printError(`Nothing is imported from ${pkg.name}. Remove it.`)
break
case 'unused_exports':
printError(`Unused exports in ${pkg.name} package found`)
printSet(result.error.exports)
}
process.exit(1)
}
spinner.success()
process.exit(0)

2

package.json
{
"name": "pure-index",
"type": "module",
"version": "0.0.39",
"version": "0.0.40",
"description": "Utility for monorepos. It helps to find unused exports from packages or get a list of all unique uses of any package",

@@ -6,0 +6,0 @@ "main": "./src/index.js",

@@ -1,6 +0,4 @@

import { join } from 'node:path'
import { getExports } from './getExports.js'
import { fileTraversal } from './fileTraversal/index.js'
import { createStatusAPI, readJSON } from './utils/index.js'
import { Result } from './utils/index.js'

@@ -16,35 +14,29 @@ /**

* dir: string
* },
* }
* pkg: {
* path: string
* }
* }}
*
* @returns {Promise<void>}
*/
const baseFlow = async ({ config }) => {
const { name } = await readJSON('package.json')
const pkg = { name, path: config.entry }
const statusApi = createStatusAPI({
title: `Checking exports from the ${pkg.name} package`
})
const baseFlow = async ({ pkg, config, onEmpty }) => {
const exports = await getExports({ config, pkg })
const originalExportsSize = exports.size
exports.onEmpty(statusApi.succeed)
if (originalExportsSize === 0) {
statusApi.failed({
msg: `Nothing is exported from ${pkg.name}. Remove it.`
return new Promise(async resolve => {
// immediate termination
exports.onEmpty(() => {
resolve(Result.Ok({ exports }))
})
}
await fileTraversal({ config, pkg, cmd: exports.delete.bind(exports) })
if (originalExportsSize === 0) {
resolve(Result.Err({ reason: 'no_exports' }))
}
if (exports.size === originalExportsSize) {
statusApi.failed({
msg: `Nothing is imported from ${pkg.name}. Remove it.`
})
}
await fileTraversal({ config, pkg, cmd: exports.delete.bind(exports) })
statusApi.failed({
msg: `Unused exports in ${pkg.name} package found`,
set: exports
if (exports.size === originalExportsSize) {
resolve(Result.Err({ reason: 'no_imports' }))
}
resolve(Result.Err({ exports, reason: 'unused_exports' }))
})

@@ -51,0 +43,0 @@ }

@@ -82,2 +82,2 @@ import { join } from 'node:path'

export { getConfig }
export { getConfig, BASE_CONFIG }
import { baseFlow } from './baseFlow.js'
import { collectUsages } from './collectUsages.js'
import { collectUsages as _collectUsages } from './collectUsages.js'
import { BASE_CONFIG } from './getConfig.js'

@@ -39,7 +40,27 @@ /**

const findUsages = ({ config, list }) => {
// name and list[0].dir are required
/**
* @param {string} name
*
* @param {{
* babelPlugins: Array<string>,
* batch: number,
* exclude: Set<string>,
* extensions: Array<string>,
* dir: string
* }[]} list
*/
const collectUsages = async (name, list) => {
const tasks = list.map(x =>
collectUsages({
...config,
...x
_collectUsages({
config: {
babelPlugins: x.babelPlugins || BASE_CONFIG.babelPlugins,
batch: x.batch || BASE_CONFIG.batch,
exclude: x.exclude
? new Set([...BASE_CONFIG.exclude, ...x.exclude])
: BASE_CONFIG.exclude,
extensions: x.extensions || BASE_CONFIG.extensions,
dir: x.dir || BASE_CONFIG.dir,
collectUsages: name
}
})

@@ -50,5 +71,13 @@ )

console.log(result)
const mergedUsages = result.reduce((acc, x) => {
if (x.success) {
acc = acc.concat([...x.value.usages])
}
return acc
}, [])
return new Set(mergedUsages)
}
export { find }
export { find, collectUsages }
import fs from 'node:fs/promises'
import { createSpinner } from 'nanospinner'
import pc from 'picocolors'

@@ -18,32 +17,3 @@

const createStatusAPI = ({ title }) => {
const spinner = createSpinner(title)
const succeed = (params = {}) => {
const { set } = params
spinner.success()
if (set) {
printSet(set)
}
process.exit(0)
}
const failed = ({ msg, set }) => {
spinner.error()
printError(msg)
if (set) {
printSet(set)
}
process.exit(1)
}
return { succeed, failed }
}
export { readFile, readJSON, createStatusAPI, printSet, printError }
export { readFile, readJSON, printSet, printError }
export { getRepoRoot } from './getRepoRoot.js'

@@ -50,0 +20,0 @@ export { ObservableSet } from './observableSet.js'

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