Socket
Socket
Sign inDemoInstall

pure-index

Package Overview
Dependencies
21
Maintainers
1
Versions
75
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.5-next.0 to 1.0.5

15

CHANGELOG.md

@@ -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 @@

77

dist/api/index.js

@@ -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",

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc