pure-index
Advanced tools
Comparing version 1.0.5-next.0 to 1.0.5
@@ -8,4 +8,17 @@ --- | ||
## 1.0.5 | ||
### Changed | ||
- build with [tsup](https://tsup.egoist.dev) | ||
- reduce package size | ||
### Fixed | ||
- typo in documentation | ||
## 1.0.4 | ||
### Changed | ||
- bump deps | ||
@@ -15,2 +28,4 @@ | ||
### Changed | ||
- bump @swc/core | ||
@@ -17,0 +32,0 @@ |
@@ -1,76 +0,1 @@ | ||
import { | ||
Err, | ||
ObservableSet, | ||
Ok, | ||
collectUsages, | ||
findUnusedExports, | ||
mergeConfig, | ||
readJSON | ||
} from "../chunk-USJVCAV7.js"; | ||
// src/api/collectUsages.ts | ||
var collectUsages2 = async (name, list) => { | ||
const tasks = list.map( | ||
(x) => collectUsages({ | ||
// @ts-expect-error 123 | ||
config: mergeConfig({ | ||
...x, | ||
collectUsages: name | ||
}) | ||
}) | ||
); | ||
const result = await Promise.all(tasks); | ||
const mergedUsages = result.reduce((acc, x) => { | ||
if (x.ok) { | ||
acc = acc.concat([...x.val.usages]); | ||
} | ||
return acc; | ||
}, []); | ||
return mergedUsages.length === 0 ? Err({ usages: /* @__PURE__ */ new Set() }) : Ok({ usages: new Set(mergedUsages) }); | ||
}; | ||
// src/api/findUnusedExports.ts | ||
import { join } from "node:path"; | ||
var SUCCESS = Ok({ exports: /* @__PURE__ */ new Set() }); | ||
var mergeUnusedExports = (list) => { | ||
const sets = list.reduce( | ||
(acc, res) => { | ||
if (!res.ok) { | ||
acc.push(res.err.exports); | ||
} | ||
return acc; | ||
}, | ||
[] | ||
); | ||
const smallestSet = sets.reduce((acc, set) => set.size < acc.size ? set : acc, sets[0]); | ||
const unused = [...smallestSet].filter((exp) => sets.every((set) => set.has(exp))); | ||
return unused.length === 0 ? SUCCESS : Err({ reason: "unused_exports", exports: new ObservableSet(unused) }); | ||
}; | ||
var findUnusedExports2 = async ({ entry, location = "" }, list) => { | ||
const { name } = await readJSON(join(location, "package.json")); | ||
const pkg = { name, path: join(location, entry) }; | ||
const tasks = list.map( | ||
(x) => findUnusedExports({ | ||
pkg, | ||
config: mergeConfig(x) | ||
}) | ||
); | ||
const result = await Promise.all(tasks); | ||
if (result.some((x) => x.ok)) { | ||
return SUCCESS; | ||
} | ||
const [head] = result; | ||
const noExports = !head.ok && head.err.reason === "no_exports"; | ||
if (noExports) { | ||
return head; | ||
} | ||
const noImports = result.every((x) => !x.ok && x.err.reason === "no_imports"); | ||
if (noImports) { | ||
return head; | ||
} | ||
return mergeUnusedExports(result); | ||
}; | ||
export { | ||
collectUsages2 as collectUsages, | ||
findUnusedExports2 as findUnusedExports | ||
}; | ||
import{a as g,b as u,e as f,f as m,h as c,j as l,k as d}from"../chunk-VBIMTB6Y.js";var y=async(n,t)=>{let i=t.map(e=>l({config:c({...e,collectUsages:n})})),r=(await Promise.all(i)).reduce((e,s)=>(s.ok&&(e=e.concat([...s.val.usages])),e),[]);return r.length===0?m({usages:new Set}):f({usages:new Set(r)})};import{join as x}from"node:path";var E=f({exports:new Set}),k=n=>{let t=n.reduce((r,e)=>(e.ok||r.push(e.err.exports),r),[]),a=[...t.reduce((r,e)=>e.size<r.size?e:r,t[0])].filter(r=>t.every(e=>e.has(r)));return a.length===0?E:m({reason:"unused_exports",exports:new g(a)})},C=async({entry:n,location:t=""},i)=>{let{name:a}=await u(x(t,"package.json")),r={name:a,path:x(t,n)},e=i.map(o=>d({pkg:r,config:c(o)})),s=await Promise.all(e);if(s.some(o=>o.ok))return E;let[p]=s;return!p.ok&&p.err.reason==="no_exports"||s.every(o=>!o.ok&&o.err.reason==="no_imports")?p:k(s)};export{y as collectUsages,C as findUnusedExports}; |
#!/usr/bin/env node | ||
import { | ||
collectUsages, | ||
createSpinner, | ||
findUnusedExports, | ||
getConfig, | ||
printError, | ||
printSet, | ||
readJSON | ||
} from "../chunk-USJVCAV7.js"; | ||
// src/bin/collectUsages.ts | ||
var collectUsages2 = async ({ config: config2 }) => { | ||
const pkgName = config2.collectUsages; | ||
const spinner = createSpinner(`Collecting usages of ${pkgName}`); | ||
const result = await collectUsages({ config: config2 }); | ||
if (result.ok) { | ||
spinner.success(); | ||
printSet(result.val.usages); | ||
process.exit(0); | ||
} | ||
spinner.error(); | ||
printError({ | ||
text: `Nothing is used from ${pkgName}. Remove it.` | ||
}); | ||
process.exit(1); | ||
}; | ||
// src/bin/findUnusedExports.ts | ||
var findUnusedExports2 = async ({ config: config2 }) => { | ||
const { name } = await readJSON("package.json"); | ||
const pkg = { name, path: config2.entry }; | ||
const spinner = createSpinner(`Checking exports from the ${pkg.name} package`); | ||
const result = await findUnusedExports({ pkg, config: config2 }); | ||
if (result.ok) { | ||
spinner.success(); | ||
process.exit(0); | ||
} | ||
spinner.error(); | ||
switch (result.err.reason) { | ||
case "no_exports": | ||
printError({ | ||
text: `Nothing is exported from ${pkg.name}. Remove it.` | ||
}); | ||
break; | ||
case "no_imports": | ||
printError({ | ||
text: `Nothing is imported from ${pkg.name}. Remove it.` | ||
}); | ||
break; | ||
case "unused_exports": | ||
printError({ | ||
text: `Unused exports in ${pkg.name} package found`, | ||
set: result.err.exports | ||
}); | ||
} | ||
process.exit(1); | ||
}; | ||
// src/bin/index.ts | ||
var config = await getConfig(); | ||
if (config.collectUsages) { | ||
await collectUsages2({ config }); | ||
} | ||
await findUnusedExports2({ config }); | ||
import{b as c,c as p,d as o,g as n,i as m,j as f,k as g}from"../chunk-VBIMTB6Y.js";var x=async({config:t})=>{let r=t.collectUsages,e=n(`Collecting usages of ${r}`),s=await f({config:t});s.ok&&(e.success(),p(s.val.usages),process.exit(0)),e.error(),o({text:`Nothing is used from ${r}. Remove it.`}),process.exit(1)};var l=async({config:t})=>{let{name:r}=await c("package.json"),e={name:r,path:t.entry},s=n(`Checking exports from the ${e.name} package`),a=await g({pkg:e,config:t});switch(a.ok&&(s.success(),process.exit(0)),s.error(),a.err.reason){case"no_exports":o({text:`Nothing is exported from ${e.name}. Remove it.`});break;case"no_imports":o({text:`Nothing is imported from ${e.name}. Remove it.`});break;case"unused_exports":o({text:`Unused exports in ${e.name} package found`,set:a.err.exports})}process.exit(1)};var i=await m();i.collectUsages&&await x({config:i});await l({config:i}); |
{ | ||
"name": "pure-index", | ||
"type": "module", | ||
"version": "1.0.5-next.0", | ||
"version": "1.0.5", | ||
"description": "Pure Index is a tool for packages. It helps to clean your packages of unused exports with ease.", | ||
@@ -14,3 +14,3 @@ "main": "./dist/api/index.js", | ||
"scripts": { | ||
"build": "tsup-node ./src/bin/index.ts ./src/api/index.ts --format esm", | ||
"build": "make build", | ||
"prepublishOnly": "make prepublishOnly", | ||
@@ -33,3 +33,2 @@ "test": "vitest" | ||
"effector": "23.1.0", | ||
"esbuild": "0.19.12", | ||
"prettier": "3.2.4", | ||
@@ -36,0 +35,0 @@ "tsc-alias": "1.8.8", |
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
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
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
8
0
15145
9
148