npmdata 0.15.6 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +119 -146
- package/dist/cli/actions/check.d.ts.map +1 -1
- package/dist/cli/actions/check.js +3 -4
- package/dist/cli/actions/check.js.map +1 -1
- package/dist/cli/actions/extract.d.ts.map +1 -1
- package/dist/cli/actions/extract.js +2 -3
- package/dist/cli/actions/extract.js.map +1 -1
- package/dist/cli/actions/init.js +1 -1
- package/dist/cli/actions/init.js.map +1 -1
- package/dist/cli/argv.d.ts +13 -8
- package/dist/cli/argv.d.ts.map +1 -1
- package/dist/cli/argv.js +40 -33
- package/dist/cli/argv.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +20 -3
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/usage.d.ts.map +1 -1
- package/dist/cli/usage.js +8 -3
- package/dist/cli/usage.js.map +1 -1
- package/dist/fileset/check.d.ts.map +1 -1
- package/dist/fileset/check.js +8 -4
- package/dist/fileset/check.js.map +1 -1
- package/dist/fileset/diff.d.ts.map +1 -1
- package/dist/fileset/diff.js +12 -11
- package/dist/fileset/diff.js.map +1 -1
- package/dist/fileset/execute.d.ts.map +1 -1
- package/dist/fileset/execute.js +6 -5
- package/dist/fileset/execute.js.map +1 -1
- package/dist/fileset/markers.d.ts +3 -3
- package/dist/fileset/markers.js +5 -5
- package/dist/fileset/purge.d.ts +7 -1
- package/dist/fileset/purge.d.ts.map +1 -1
- package/dist/fileset/purge.js +17 -16
- package/dist/fileset/purge.js.map +1 -1
- package/dist/npmdata-0.0.1.tgz +0 -0
- package/dist/package/action-check.d.ts +2 -2
- package/dist/package/action-check.d.ts.map +1 -1
- package/dist/package/action-check.js +58 -4
- package/dist/package/action-check.js.map +1 -1
- package/dist/package/action-extract.d.ts +1 -2
- package/dist/package/action-extract.d.ts.map +1 -1
- package/dist/package/action-extract.js +15 -6
- package/dist/package/action-extract.js.map +1 -1
- package/dist/package/action-purge.d.ts +7 -0
- package/dist/package/action-purge.d.ts.map +1 -1
- package/dist/package/action-purge.js +116 -19
- package/dist/package/action-purge.js.map +1 -1
- package/dist/package/config.d.ts +7 -0
- package/dist/package/config.d.ts.map +1 -1
- package/dist/package/config.js +21 -0
- package/dist/package/config.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../../src/fileset/purge.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../../src/fileset/purge.ts"],"names":[],"mappings":"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"}
|
package/dist/npmdata-0.0.1.tgz
CHANGED
|
Binary file
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NpmdataExtractEntry, ProgressEvent } from '../types';
|
|
2
2
|
export type CheckOptions = {
|
|
3
3
|
entries: NpmdataExtractEntry[];
|
|
4
|
-
config: NpmdataConfig | null;
|
|
5
4
|
cwd: string;
|
|
6
5
|
presets?: string[];
|
|
7
6
|
verbose?: boolean;
|
|
8
7
|
onProgress?: (event: ProgressEvent) => void;
|
|
9
8
|
skipUnmanaged?: boolean;
|
|
9
|
+
visitedPackages?: Set<string>;
|
|
10
10
|
};
|
|
11
11
|
export type CheckSummary = {
|
|
12
12
|
missing: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-check.d.ts","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action-check.d.ts","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAU9D,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;GAGG;AAEH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA8I9E"}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.actionCheck = actionCheck;
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
10
|
const utils_1 = require("../utils");
|
|
10
11
|
const markers_1 = require("../fileset/markers");
|
|
@@ -15,7 +16,7 @@ const check_1 = require("../fileset/check");
|
|
|
15
16
|
*/
|
|
16
17
|
// eslint-disable-next-line complexity
|
|
17
18
|
async function actionCheck(options) {
|
|
18
|
-
const { entries, cwd, presets = [], verbose = false, onProgress } = options;
|
|
19
|
+
const { entries, cwd, presets = [], verbose = false, onProgress, visitedPackages = new Set(), } = options;
|
|
19
20
|
const summary = { missing: [], modified: [], extra: [] };
|
|
20
21
|
// Filter by presets (same behaviour as purge)
|
|
21
22
|
const filtered = (0, utils_1.filterEntriesByPresets)(entries, presets);
|
|
@@ -39,14 +40,18 @@ async function actionCheck(options) {
|
|
|
39
40
|
});
|
|
40
41
|
// Check if package is installed
|
|
41
42
|
const pkgPath = (0, utils_1.getInstalledPackagePath)(pkg.name, cwd);
|
|
42
|
-
// Read existing marker
|
|
43
|
+
// Read existing marker and filter to entries owned by this package only.
|
|
44
|
+
// Multiple packages may share the same outputDir; passing the full marker to
|
|
45
|
+
// checkFileset would cause files owned by other packages to be checked against
|
|
46
|
+
// the current package's source, producing false positives.
|
|
43
47
|
const existingMarker = await (0, markers_1.readOutputDirMarker)(outputDir);
|
|
48
|
+
const pkgMarker = existingMarker.filter((m) => m.packageName === pkg.name);
|
|
44
49
|
if (!pkgPath) {
|
|
45
50
|
console.error(`Package ${pkg.name} is not installed. Run 'extract' first.`);
|
|
46
|
-
summary.missing.push(...
|
|
51
|
+
summary.missing.push(...pkgMarker.map((m) => m.path));
|
|
47
52
|
continue;
|
|
48
53
|
}
|
|
49
|
-
const result = await (0, check_1.checkFileset)(pkgPath, outputDir, entry.selector ?? {}, entry.output ?? {},
|
|
54
|
+
const result = await (0, check_1.checkFileset)(pkgPath, outputDir, entry.selector ?? {}, entry.output ?? {}, pkgMarker);
|
|
50
55
|
summary.missing.push(...result.missing);
|
|
51
56
|
summary.modified.push(...result.modified);
|
|
52
57
|
summary.extra.push(...result.extra);
|
|
@@ -55,6 +60,55 @@ async function actionCheck(options) {
|
|
|
55
60
|
packageName: pkg.name,
|
|
56
61
|
packageVersion: pkg.version ?? 'latest',
|
|
57
62
|
});
|
|
63
|
+
// Hierarchical check: if the installed package declares npmdata.sets, recurse into them
|
|
64
|
+
const installedPkgPath = (0, utils_1.getInstalledIfSatisfies)(pkg.name, pkg.version, cwd);
|
|
65
|
+
if (installedPkgPath) {
|
|
66
|
+
let pkgNpmdataSets;
|
|
67
|
+
try {
|
|
68
|
+
const depPkgJson = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(installedPkgPath, 'package.json')).toString());
|
|
69
|
+
pkgNpmdataSets = depPkgJson.npmdata?.sets;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (verbose) {
|
|
73
|
+
console.warn(`[verbose] check: could not read npmdata.sets from ${pkg.name}/package.json: ${error}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (pkgNpmdataSets && pkgNpmdataSets.length > 0) {
|
|
77
|
+
const siblingNames = new Set(entries.map((e) => (0, utils_1.parsePackageSpec)(e.package).name));
|
|
78
|
+
const presetFilteredSets = (0, utils_1.filterEntriesByPresets)(pkgNpmdataSets, entry.selector?.presets ?? []);
|
|
79
|
+
const filteredSets = presetFilteredSets.filter((e) => !siblingNames.has((0, utils_1.parsePackageSpec)(e.package).name) &&
|
|
80
|
+
!visitedPackages.has((0, utils_1.parsePackageSpec)(e.package).name));
|
|
81
|
+
if (filteredSets.length > 0) {
|
|
82
|
+
const visitedSet = new Set(visitedPackages);
|
|
83
|
+
visitedSet.add(pkg.name);
|
|
84
|
+
const outputConfig = entry.output ?? {};
|
|
85
|
+
const inheritedEntries = filteredSets.map((depEntry) => {
|
|
86
|
+
const { path: depPath, ...restOutput } = depEntry.output ?? {};
|
|
87
|
+
return {
|
|
88
|
+
...depEntry,
|
|
89
|
+
output: {
|
|
90
|
+
...restOutput,
|
|
91
|
+
path: node_path_1.default.join(outputConfig.path ?? '.', depPath ?? '.'),
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
if (verbose) {
|
|
96
|
+
console.log(`[verbose] check: recursing into ${filteredSets.length} transitive set(s) from ${pkg.name}`);
|
|
97
|
+
}
|
|
98
|
+
const subResult = await actionCheck({
|
|
99
|
+
entries: inheritedEntries,
|
|
100
|
+
cwd,
|
|
101
|
+
presets,
|
|
102
|
+
verbose,
|
|
103
|
+
onProgress,
|
|
104
|
+
visitedPackages: visitedSet,
|
|
105
|
+
});
|
|
106
|
+
summary.missing.push(...subResult.missing);
|
|
107
|
+
summary.modified.push(...subResult.modified);
|
|
108
|
+
summary.extra.push(...subResult.extra);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
58
112
|
}
|
|
59
113
|
return summary;
|
|
60
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-check.js","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":";AAAA,+BAA+B;;;;;
|
|
1
|
+
{"version":3,"file":"action-check.js","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NpmdataExtractEntry, ProgressEvent } from '../types';
|
|
2
2
|
export type ExtractOptions = {
|
|
3
3
|
entries: NpmdataExtractEntry[];
|
|
4
|
-
config: NpmdataConfig | null;
|
|
5
4
|
cwd: string;
|
|
6
5
|
verbose?: boolean;
|
|
7
6
|
onProgress?: (event: ProgressEvent) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-extract.d.ts","sourceRoot":"","sources":["../../src/package/action-extract.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"action-extract.d.ts","sourceRoot":"","sources":["../../src/package/action-extract.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAgC,MAAM,UAAU,CAAC;AAc5F,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AAEH,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAiSnF"}
|
|
@@ -18,15 +18,19 @@ const symlinks_1 = require("./symlinks");
|
|
|
18
18
|
*/
|
|
19
19
|
// eslint-disable-next-line complexity
|
|
20
20
|
async function actionExtract(options) {
|
|
21
|
-
const { entries,
|
|
21
|
+
const { entries, cwd, verbose, onProgress, visitedPackages = new Set() } = options;
|
|
22
22
|
if (verbose) {
|
|
23
|
-
console.log(`[verbose]
|
|
23
|
+
console.log(`[verbose] >>> EXTRACT - ${entries.reduce((acc, entry) => acc + entry.package + ', ', '').slice(0, -2)}`);
|
|
24
24
|
}
|
|
25
25
|
const result = { added: 0, modified: 0, deleted: 0, skipped: 0 };
|
|
26
26
|
const allNewlyCreated = [];
|
|
27
27
|
const deferredDeletes = [];
|
|
28
28
|
try {
|
|
29
29
|
for (const entry of entries) {
|
|
30
|
+
if (verbose) {
|
|
31
|
+
// eslint-disable-next-line no-undefined
|
|
32
|
+
console.log(`[verbose] config: ${JSON.stringify(entry, undefined, 2)}`);
|
|
33
|
+
}
|
|
30
34
|
if (!entry.package) {
|
|
31
35
|
throw new Error('Each set entry must have a "package" field.');
|
|
32
36
|
}
|
|
@@ -84,11 +88,11 @@ async function actionExtract(options) {
|
|
|
84
88
|
const extractionMap = await (0, diff_1.diff)(pkgPath, outputDir, selector, outputConfig, pkgMarker, contentReplacements);
|
|
85
89
|
// Phase 4: Abort on conflicts (unless force or unmanaged)
|
|
86
90
|
if (extractionMap.conflicts.length > 0 && !outputConfig.force && !outputConfig.unmanaged) {
|
|
87
|
-
const conflictPaths = extractionMap.conflicts.map((c) => c.relPath).join('
|
|
91
|
+
const conflictPaths = extractionMap.conflicts.map((c) => c.relPath).join('\n');
|
|
88
92
|
if (verbose) {
|
|
89
93
|
console.warn(`[verbose] extract: aborting due to ${extractionMap.conflicts.length} conflict(s) in ${outputDir}: ${conflictPaths}`);
|
|
90
94
|
}
|
|
91
|
-
throw new Error(`Conflict: the following files exist and are not managed by npmdata
|
|
95
|
+
throw new Error(`Conflict: the following files exist and are not managed by npmdata:\n${conflictPaths}\n` +
|
|
92
96
|
`Use --force to overwrite or --unmanaged to skip.`);
|
|
93
97
|
}
|
|
94
98
|
// Phase 5: Execute phase (disk writes)
|
|
@@ -148,7 +152,9 @@ async function actionExtract(options) {
|
|
|
148
152
|
if (filteredSets.length > 0) {
|
|
149
153
|
const visitedSet = new Set(visitedPackages);
|
|
150
154
|
visitedSet.add(pkg.name);
|
|
151
|
-
// Inherit caller overrides (force, dryRun, keepExisting) from current entry
|
|
155
|
+
// Inherit caller overrides (force, dryRun, keepExisting, gitignore, unmanaged) from current entry.
|
|
156
|
+
// Caller-defined (non-undefined) values always take precedence; undefined propagates as-is
|
|
157
|
+
// so defaults are only resolved at the leaf execute() level, not during recursion.
|
|
152
158
|
const inheritedEntries = filteredSets.map((depEntry) => {
|
|
153
159
|
const { path: depPath, ...restOutput } = depEntry.output ?? {};
|
|
154
160
|
const inheritedOutput = {
|
|
@@ -157,6 +163,8 @@ async function actionExtract(options) {
|
|
|
157
163
|
force: outputConfig.force ?? restOutput.force,
|
|
158
164
|
dryRun: outputConfig.dryRun ?? restOutput.dryRun,
|
|
159
165
|
keepExisting: outputConfig.keepExisting ?? restOutput.keepExisting,
|
|
166
|
+
gitignore: outputConfig.gitignore ?? restOutput.gitignore,
|
|
167
|
+
unmanaged: outputConfig.unmanaged ?? restOutput.unmanaged,
|
|
160
168
|
// Append symlinks and contentReplacements
|
|
161
169
|
symlinks: [...(outputConfig.symlinks ?? []), ...(restOutput.symlinks ?? [])],
|
|
162
170
|
contentReplacements: [
|
|
@@ -174,7 +182,6 @@ async function actionExtract(options) {
|
|
|
174
182
|
}
|
|
175
183
|
const subResult = await actionExtract({
|
|
176
184
|
entries: inheritedEntries,
|
|
177
|
-
config,
|
|
178
185
|
cwd,
|
|
179
186
|
verbose,
|
|
180
187
|
onProgress,
|
|
@@ -211,6 +218,8 @@ async function actionExtract(options) {
|
|
|
211
218
|
console.error(`[verbose] extract: error encountered, rolling back ${allNewlyCreated.length} newly created file(s): ${error}`);
|
|
212
219
|
}
|
|
213
220
|
await (0, execute_1.rollback)(allNewlyCreated);
|
|
221
|
+
// Ensure temp package.json is cleaned up even on failure
|
|
222
|
+
(0, utils_1.cleanupTempPackageJson)(cwd, verbose);
|
|
214
223
|
throw error;
|
|
215
224
|
}
|
|
216
225
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-extract.js","sourceRoot":"","sources":["../../src/package/action-extract.ts"],"names":[],"mappings":";AAAA,+BAA+B;;;;;
|
|
1
|
+
{"version":3,"file":"action-extract.js","sourceRoot":"","sources":["../../src/package/action-extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export type PurgeOptions = {
|
|
|
7
7
|
dryRun?: boolean;
|
|
8
8
|
verbose?: boolean;
|
|
9
9
|
onProgress?: (event: ProgressEvent) => void;
|
|
10
|
+
visitedPackages?: Set<string>;
|
|
10
11
|
};
|
|
11
12
|
export type PurgeSummary = {
|
|
12
13
|
deleted: number;
|
|
@@ -16,6 +17,12 @@ export type PurgeSummary = {
|
|
|
16
17
|
/**
|
|
17
18
|
* Purge managed files from all matching filesets.
|
|
18
19
|
* Supports --presets filtering and --dry-run.
|
|
20
|
+
*
|
|
21
|
+
* Operates in two phases:
|
|
22
|
+
* 1. Collect: recursively traverse all sets and accumulate the managed file
|
|
23
|
+
* entries to delete per output directory (no disk writes).
|
|
24
|
+
* 2. Execute: delete the collected files per output directory, then update
|
|
25
|
+
* the marker (removing only purged paths) and gitignore accordingly.
|
|
19
26
|
*/
|
|
20
27
|
export declare function actionPurge(options: PurgeOptions): Promise<PurgeSummary>;
|
|
21
28
|
//# sourceMappingURL=action-purge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-purge.d.ts","sourceRoot":"","sources":["../../src/package/action-purge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action-purge.d.ts","sourceRoot":"","sources":["../../src/package/action-purge.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAuB,aAAa,EAAE,MAAM,UAAU,CAAC;AAKlG,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAqHF;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAsD9E"}
|
|
@@ -1,57 +1,154 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
exports.actionPurge = actionPurge;
|
|
7
40
|
/* eslint-disable no-console */
|
|
41
|
+
const node_fs_1 = __importStar(require("node:fs"));
|
|
8
42
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
43
|
const utils_1 = require("../utils");
|
|
10
44
|
const markers_1 = require("../fileset/markers");
|
|
11
45
|
const purge_1 = require("../fileset/purge");
|
|
12
46
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
47
|
+
* Phase 1: recursively collect all managed file entries that need to be purged,
|
|
48
|
+
* grouped by output directory. No disk writes are performed.
|
|
15
49
|
*/
|
|
16
50
|
// eslint-disable-next-line complexity
|
|
17
|
-
async function
|
|
18
|
-
const { entries, cwd, presets = [], dryRun = false, verbose = false, onProgress } = options;
|
|
51
|
+
async function collectPurgePlan(entries, cwd, presets, verbose, visitedPackages, plan, onProgress) {
|
|
19
52
|
if (verbose) {
|
|
20
|
-
console.log(`[verbose] purge:
|
|
53
|
+
console.log(`[verbose] purge: collecting ${entries.length} entr${entries.length === 1 ? 'y' : 'ies'} (cwd: ${cwd})`);
|
|
21
54
|
}
|
|
22
|
-
const summary = { deleted: 0, symlinksRemoved: 0, dirsRemoved: 0 };
|
|
23
|
-
// Filter by presets
|
|
24
55
|
const filtered = (0, utils_1.filterEntriesByPresets)(entries, presets);
|
|
25
56
|
for (const entry of filtered) {
|
|
26
57
|
const pkg = (0, utils_1.parsePackageSpec)(entry.package);
|
|
27
58
|
const outputDir = node_path_1.default.resolve(cwd, entry.output?.path ?? '.');
|
|
28
59
|
if (verbose) {
|
|
29
|
-
console.log(`[verbose] purge: entry package=${entry.package} outputDir=${entry.output?.path ?? '.'}`);
|
|
60
|
+
console.log(`[verbose] purge: collecting entry package=${entry.package} outputDir=${entry.output?.path ?? '.'}`);
|
|
30
61
|
}
|
|
31
62
|
onProgress?.({
|
|
32
63
|
type: 'package-start',
|
|
33
64
|
packageName: pkg.name,
|
|
34
65
|
packageVersion: pkg.version ?? 'latest',
|
|
35
66
|
});
|
|
36
|
-
// Read
|
|
67
|
+
// Read the marker and collect only entries belonging to this package
|
|
37
68
|
const managedFiles = await (0, markers_1.readOutputDirMarker)(outputDir);
|
|
38
|
-
// Purge only files belonging to this package
|
|
39
69
|
const entryFiles = managedFiles.filter((m) => m.packageName === pkg.name);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
70
|
+
// Accumulate into the plan (multiple entries may share the same outputDir)
|
|
71
|
+
const existing = plan.get(outputDir) ?? [];
|
|
72
|
+
plan.set(outputDir, [...existing, ...entryFiles]);
|
|
73
|
+
onProgress?.({
|
|
74
|
+
type: 'package-end',
|
|
75
|
+
packageName: pkg.name,
|
|
76
|
+
packageVersion: pkg.version ?? 'latest',
|
|
77
|
+
});
|
|
78
|
+
// Hierarchical collection: if the installed package declares npmdata.sets, recurse
|
|
79
|
+
const pkgPath = (0, utils_1.getInstalledIfSatisfies)(pkg.name, pkg.version, cwd);
|
|
80
|
+
if (!pkgPath)
|
|
81
|
+
continue;
|
|
82
|
+
const pkgJsonFile = node_path_1.default.join(pkgPath, 'package.json');
|
|
83
|
+
if (!(0, node_fs_1.existsSync)(pkgJsonFile))
|
|
84
|
+
continue;
|
|
85
|
+
const depPkgJson = JSON.parse(node_fs_1.default.readFileSync(pkgJsonFile).toString());
|
|
86
|
+
const pkgNpmdataSets = depPkgJson.npmdata?.sets;
|
|
87
|
+
if (pkgNpmdataSets && pkgNpmdataSets.length > 0) {
|
|
88
|
+
const siblingNames = new Set(entries.map((e) => (0, utils_1.parsePackageSpec)(e.package).name));
|
|
89
|
+
const presetFilteredSets = (0, utils_1.filterEntriesByPresets)(pkgNpmdataSets, entry.selector?.presets ?? []);
|
|
90
|
+
const filteredSets = presetFilteredSets.filter((e) => !siblingNames.has((0, utils_1.parsePackageSpec)(e.package).name) &&
|
|
91
|
+
!visitedPackages.has((0, utils_1.parsePackageSpec)(e.package).name));
|
|
92
|
+
if (filteredSets.length > 0) {
|
|
93
|
+
const visitedSet = new Set(visitedPackages);
|
|
94
|
+
visitedSet.add(pkg.name);
|
|
95
|
+
const outputConfig = entry.output ?? {};
|
|
96
|
+
const inheritedEntries = filteredSets.map((depEntry) => {
|
|
97
|
+
const { path: depPath, ...restOutput } = depEntry.output ?? {};
|
|
98
|
+
return {
|
|
99
|
+
...depEntry,
|
|
100
|
+
output: {
|
|
101
|
+
...restOutput,
|
|
102
|
+
path: node_path_1.default.join(outputConfig.path ?? '.', depPath ?? '.'),
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
if (verbose) {
|
|
107
|
+
console.log(`[verbose] purge: recursing into ${filteredSets.length} transitive set(s) from ${pkg.name}`);
|
|
108
|
+
}
|
|
109
|
+
await collectPurgePlan(inheritedEntries, cwd, presets, verbose, visitedSet, plan, onProgress);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Purge managed files from all matching filesets.
|
|
116
|
+
* Supports --presets filtering and --dry-run.
|
|
117
|
+
*
|
|
118
|
+
* Operates in two phases:
|
|
119
|
+
* 1. Collect: recursively traverse all sets and accumulate the managed file
|
|
120
|
+
* entries to delete per output directory (no disk writes).
|
|
121
|
+
* 2. Execute: delete the collected files per output directory, then update
|
|
122
|
+
* the marker (removing only purged paths) and gitignore accordingly.
|
|
123
|
+
*/
|
|
124
|
+
async function actionPurge(options) {
|
|
125
|
+
const { entries, cwd, presets = [], dryRun = false, verbose = false, onProgress, visitedPackages = new Set(), } = options;
|
|
126
|
+
// Phase 1: collect all entries to purge across all recursive sets
|
|
127
|
+
if (verbose) {
|
|
128
|
+
console.log(`[verbose] purge: phase 1 - collecting entries to purge (cwd: ${cwd})`);
|
|
129
|
+
}
|
|
130
|
+
const plan = new Map();
|
|
131
|
+
await collectPurgePlan(entries, cwd, presets, verbose, visitedPackages, plan, onProgress);
|
|
132
|
+
const summary = { deleted: 0, symlinksRemoved: 0, dirsRemoved: 0 };
|
|
133
|
+
// Phase 2: execute deletions per output directory
|
|
134
|
+
if (verbose) {
|
|
135
|
+
const total = [...plan.values()].reduce((sum, e) => sum + e.length, 0);
|
|
136
|
+
console.log(`[verbose] purge: phase 2 - deleting ${total} entr${total === 1 ? 'y' : 'ies'} across ${plan.size} output dir(s)`);
|
|
137
|
+
}
|
|
138
|
+
for (const [outputDir, entriesToPurge] of plan) {
|
|
139
|
+
if (verbose) {
|
|
140
|
+
console.log(`[verbose] purge: executing purge for ${node_path_1.default.relative(cwd, outputDir)} (${entriesToPurge.length} entries)`);
|
|
141
|
+
}
|
|
142
|
+
const result = await (0, purge_1.purgeFileset)(outputDir, entriesToPurge, dryRun);
|
|
143
|
+
for (const m of entriesToPurge) {
|
|
144
|
+
onProgress?.({ type: 'file-deleted', packageName: m.packageName, file: m.path });
|
|
43
145
|
}
|
|
44
146
|
summary.deleted += result.deleted;
|
|
45
147
|
summary.symlinksRemoved += result.symlinksRemoved;
|
|
46
148
|
summary.dirsRemoved += result.dirsRemoved;
|
|
47
149
|
if (verbose) {
|
|
48
|
-
console.log(`[verbose] purge: deleted ${result.deleted} files, ${result.symlinksRemoved} symlinks, ${result.dirsRemoved} dirs
|
|
150
|
+
console.log(`[verbose] purge: deleted ${result.deleted} files, ${result.symlinksRemoved} symlinks, ${result.dirsRemoved} dirs`);
|
|
49
151
|
}
|
|
50
|
-
onProgress?.({
|
|
51
|
-
type: 'package-end',
|
|
52
|
-
packageName: pkg.name,
|
|
53
|
-
packageVersion: pkg.version ?? 'latest',
|
|
54
|
-
});
|
|
55
152
|
}
|
|
56
153
|
return summary;
|
|
57
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-purge.js","sourceRoot":"","sources":["../../src/package/action-purge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action-purge.js","sourceRoot":"","sources":["../../src/package/action-purge.ts"],"names":[],"mappings":"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"}
|
package/dist/package/config.d.ts
CHANGED
|
@@ -10,4 +10,11 @@ import { NpmdataConfig } from '../types';
|
|
|
10
10
|
* Returns the NpmdataConfig when found, or null when no configuration is present.
|
|
11
11
|
*/
|
|
12
12
|
export declare function loadNpmdataConfig(cwd: string): Promise<NpmdataConfig | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Load an npmdata configuration from an explicit file path using cosmiconfig.
|
|
15
|
+
* Supports JSON, YAML, and JS config files.
|
|
16
|
+
*
|
|
17
|
+
* Returns the NpmdataConfig when found, or null when the file is empty or invalid.
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadNpmdataConfigFile(filePath: string): Promise<NpmdataConfig | null>;
|
|
13
20
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/package/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAalF"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/package/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAalF;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAa3F"}
|
package/dist/package/config.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadNpmdataConfig = loadNpmdataConfig;
|
|
4
|
+
exports.loadNpmdataConfigFile = loadNpmdataConfigFile;
|
|
4
5
|
const cosmiconfig_1 = require("cosmiconfig");
|
|
5
6
|
/**
|
|
6
7
|
* Search for an npmdata configuration using cosmiconfig, starting from the given cwd.
|
|
@@ -26,4 +27,24 @@ async function loadNpmdataConfig(cwd) {
|
|
|
26
27
|
}
|
|
27
28
|
return cfg;
|
|
28
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Load an npmdata configuration from an explicit file path using cosmiconfig.
|
|
32
|
+
* Supports JSON, YAML, and JS config files.
|
|
33
|
+
*
|
|
34
|
+
* Returns the NpmdataConfig when found, or null when the file is empty or invalid.
|
|
35
|
+
*/
|
|
36
|
+
async function loadNpmdataConfigFile(filePath) {
|
|
37
|
+
const explorer = (0, cosmiconfig_1.cosmiconfig)('npmdata');
|
|
38
|
+
const result = await explorer.load(filePath);
|
|
39
|
+
if (!result || result.isEmpty) {
|
|
40
|
+
// eslint-disable-next-line unicorn/no-null
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const cfg = result.config;
|
|
44
|
+
if (!cfg || !Array.isArray(cfg.sets)) {
|
|
45
|
+
// eslint-disable-next-line unicorn/no-null
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return cfg;
|
|
49
|
+
}
|
|
29
50
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/package/config.ts"],"names":[],"mappings":";;AAcA,8CAaC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/package/config.ts"],"names":[],"mappings":";;AAcA,8CAaC;AAQD,sDAaC;AAhDD,6CAA0C;AAI1C;;;;;;;;;GASG;AACI,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,SAAS,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAuB,CAAC;IAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,SAAS,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAuB,CAAC;IAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -178,7 +178,7 @@ export type ExtractionMap = {
|
|
|
178
178
|
};
|
|
179
179
|
/**
|
|
180
180
|
* One row in a .npmdata CSV marker file.
|
|
181
|
-
*
|
|
181
|
+
* Format: path|packageName|packageVersion — one row per file, no header.
|
|
182
182
|
*/
|
|
183
183
|
export type ManagedFileMetadata = {
|
|
184
184
|
/** Relative path from marker file directory. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "npmdata",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": "dist/cli/bin.js",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"homepage": "https://github.com/flaviostutz/npmdata#readme",
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@babel/preset-typescript": "^7.21.0",
|
|
27
|
+
"@jest/globals": "^30.3.0",
|
|
27
28
|
"@stutzlab/eslint-config": "^4.2.1",
|
|
28
29
|
"@tsconfig/node20": "^20.1.4",
|
|
29
30
|
"@types/archiver": "^6.0.2",
|