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.4 to 1.0.5-next.0

dist/chunk-USJVCAV7.js

103

dist/api/index.d.ts

@@ -1,2 +0,101 @@

export { collectUsages } from './collectUsages.js';
export { findUnusedExports } from './findUnusedExports.js';
import { ParserConfig } from '@swc/core';
type Config = {
batch: number;
collectUsages: string | null;
entry: string;
dir: string;
exclude: string[];
extensions: string[];
parserConfig: ParserConfig;
};
type ListItem$1 = {
dir: Config['dir'];
batch?: Config['batch'];
exclude?: string[];
extensions?: Config['extensions'];
parserConfig?: Config['parserConfig'];
};
declare const collectUsages: (name: string, list: ListItem$1[]) => Promise<{
readonly ok: false;
readonly err: {
usages: Set<void>;
};
} | {
readonly ok: true;
readonly val: {
usages: Set<string>;
};
}>;
declare class ObservableSet extends Set<string> {
private emptyCallback;
constructor(iterable?: Iterable<string>);
add(value: string): this;
delete(value: string): boolean;
clear(): void;
onEmpty(callback: () => void): void;
private checkSize;
}
declare const Ok: <T>(val: T) => {
readonly ok: true;
readonly val: T;
};
declare const Err: <E>(err: E) => {
readonly ok: false;
readonly err: E;
};
type Result<T, E> = ReturnType<typeof Ok<T>> | ReturnType<typeof Err<E>>;
type Pkg = {
name: string;
path: string;
};
type FindUnusedExports = (_: {
pkg: Pkg;
config: Pick<Config, 'dir' | 'batch' | 'exclude' | 'extensions' | 'parserConfig'>;
}) => Promise<Result<{
exports: ObservableSet;
}, {
reason: 'no_exports';
exports: ObservableSet;
} | {
reason: 'no_imports';
exports: ObservableSet;
} | {
reason: 'unused_exports';
exports: ObservableSet;
}>>;
declare const findUnusedExports$1: FindUnusedExports;
type TaskResult = Awaited<ReturnType<typeof findUnusedExports$1>>;
type FailedTaks = Extract<TaskResult, {
ok: false;
}>;
type ExtractError<T> = {
ok: false;
err: Extract<Omit<FailedTaks, 'ok'>['err'], {
reason: T;
}>;
};
type Params = {
entry: string;
location?: string;
};
type ListItem = {
dir: Config['dir'];
batch?: Config['batch'];
exclude?: Config['exclude'];
extensions?: Config['extensions'];
parserConfig?: Config['parserConfig'];
};
declare const findUnusedExports: ({ entry, location }: Params, list: ListItem[]) => Promise<{
readonly ok: true;
readonly val: {
exports: Set<void>;
};
} | ExtractError<"unused_exports"> | ExtractError<"no_exports"> | ExtractError<"no_imports">>;
export { collectUsages, findUnusedExports };

@@ -1,3 +0,76 @@

/* v8 ignore start */
export { collectUsages } from './collectUsages.js';
export { findUnusedExports } from './findUnusedExports.js';
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
};

1

dist/bin/index.d.ts
#!/usr/bin/env node
export {};
#!/usr/bin/env node
import { getConfig } from '../getConfig/index.js';
import { collectUsages } from './collectUsages.js';
import { findUnusedExports } from './findUnusedExports.js';
const config = await getConfig();
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 collectUsages({ config });
await collectUsages2({ config });
}
await findUnusedExports({ config });
await findUnusedExports2({ config });
{
"name": "pure-index",
"type": "module",
"version": "1.0.4",
"version": "1.0.5-next.0",
"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": "make build",
"build": "tsup-node ./src/bin/index.ts ./src/api/index.ts --format esm",
"prepublishOnly": "make prepublishOnly",

@@ -33,4 +33,6 @@ "test": "vitest"

"effector": "23.1.0",
"esbuild": "0.19.12",
"prettier": "3.2.4",
"tsc-alias": "1.8.8",
"tsup": "^8.0.1",
"typescript": "5.3.3",

@@ -37,0 +39,0 @@ "vite-tsconfig-paths": "4.3.1",

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