npmdata 0.11.0 → 0.12.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 +47 -42
- package/dist/cli/actions/check.d.ts +6 -0
- package/dist/cli/actions/check.d.ts.map +1 -0
- package/dist/cli/actions/check.js +57 -0
- package/dist/cli/actions/check.js.map +1 -0
- package/dist/cli/actions/extract.d.ts +7 -0
- package/dist/cli/actions/extract.d.ts.map +1 -0
- package/dist/cli/actions/extract.js +84 -0
- package/dist/cli/actions/extract.js.map +1 -0
- package/dist/cli/actions/init.d.ts +6 -0
- package/dist/cli/actions/init.d.ts.map +1 -0
- package/dist/cli/actions/init.js +36 -0
- package/dist/cli/actions/init.js.map +1 -0
- package/dist/cli/actions/list.d.ts +7 -0
- package/dist/cli/actions/list.d.ts.map +1 -0
- package/dist/cli/actions/list.js +42 -0
- package/dist/cli/actions/list.js.map +1 -0
- package/dist/cli/actions/purge.d.ts +6 -0
- package/dist/cli/actions/purge.d.ts.map +1 -0
- package/dist/cli/actions/purge.js +47 -0
- package/dist/cli/actions/purge.js.map +1 -0
- package/dist/cli/argv.d.ts +35 -0
- package/dist/cli/argv.d.ts.map +1 -0
- package/dist/cli/argv.js +125 -0
- package/dist/cli/argv.js.map +1 -0
- package/dist/cli/cli.d.ts +9 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +69 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/runner.d.ts +9 -0
- package/dist/cli/runner.d.ts.map +1 -0
- package/dist/cli/runner.js +106 -0
- package/dist/cli/runner.js.map +1 -0
- package/dist/cli/usage.d.ts +6 -0
- package/dist/cli/usage.d.ts.map +1 -0
- package/dist/cli/usage.js +126 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/fileset/check.d.ts +15 -0
- package/dist/fileset/check.d.ts.map +1 -0
- package/dist/fileset/check.js +68 -0
- package/dist/fileset/check.js.map +1 -0
- package/dist/fileset/constants.d.ts +13 -0
- package/dist/fileset/constants.d.ts.map +1 -0
- package/dist/fileset/constants.js +22 -0
- package/dist/fileset/constants.js.map +1 -0
- package/dist/fileset/diff.d.ts +16 -0
- package/dist/fileset/diff.d.ts.map +1 -0
- package/dist/fileset/diff.js +116 -0
- package/dist/fileset/diff.js.map +1 -0
- package/dist/fileset/execute.d.ts +29 -0
- package/dist/fileset/execute.d.ts.map +1 -0
- package/dist/fileset/execute.js +136 -0
- package/dist/fileset/execute.js.map +1 -0
- package/dist/fileset/gitignore.d.ts +16 -0
- package/dist/fileset/gitignore.d.ts.map +1 -0
- package/dist/fileset/gitignore.js +82 -0
- package/dist/fileset/gitignore.js.map +1 -0
- package/dist/fileset/index.d.ts +5 -0
- package/dist/fileset/index.d.ts.map +1 -0
- package/dist/fileset/index.js +21 -0
- package/dist/fileset/index.js.map +1 -0
- package/dist/fileset/list.d.ts +6 -0
- package/dist/fileset/list.d.ts.map +1 -0
- package/dist/fileset/list.js +11 -0
- package/dist/fileset/list.js.map +1 -0
- package/dist/fileset/markers.d.ts +22 -0
- package/dist/fileset/markers.d.ts.map +1 -0
- package/dist/fileset/markers.js +68 -0
- package/dist/fileset/markers.js.map +1 -0
- package/dist/fileset/package-files.d.ts +14 -0
- package/dist/fileset/package-files.d.ts.map +1 -0
- package/dist/fileset/package-files.js +81 -0
- package/dist/fileset/package-files.js.map +1 -0
- package/dist/fileset/purge.d.ts +12 -0
- package/dist/fileset/purge.d.ts.map +1 -0
- package/dist/fileset/purge.js +95 -0
- package/dist/fileset/purge.js.map +1 -0
- package/dist/fileset/test-utils.d.ts +12 -0
- package/dist/fileset/test-utils.d.ts.map +1 -0
- package/dist/fileset/test-utils.js +65 -0
- package/dist/fileset/test-utils.js.map +1 -0
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -19
- package/dist/index.js.map +1 -1
- package/dist/main.js +9 -17
- package/dist/main.js.map +1 -1
- package/dist/npmdata-0.0.1.tgz +0 -0
- package/dist/package/action-check.d.ts +20 -0
- package/dist/package/action-check.d.ts.map +1 -0
- package/dist/package/action-check.js +61 -0
- package/dist/package/action-check.js.map +1 -0
- package/dist/package/action-extract.d.ts +21 -0
- package/dist/package/action-extract.d.ts.map +1 -0
- package/dist/package/action-extract.js +186 -0
- package/dist/package/action-extract.js.map +1 -0
- package/dist/package/action-init.d.ts +13 -0
- package/dist/package/action-init.d.ts.map +1 -0
- package/dist/package/action-init.js +77 -0
- package/dist/package/action-init.js.map +1 -0
- package/dist/package/action-list.d.ts +14 -0
- package/dist/package/action-list.d.ts.map +1 -0
- package/dist/package/action-list.js +46 -0
- package/dist/package/action-list.js.map +1 -0
- package/dist/package/action-purge.d.ts +21 -0
- package/dist/package/action-purge.d.ts.map +1 -0
- package/dist/package/action-purge.js +60 -0
- package/dist/package/action-purge.js.map +1 -0
- package/dist/package/config-merge.d.ts +18 -0
- package/dist/package/config-merge.d.ts.map +1 -0
- package/dist/package/config-merge.js +48 -0
- package/dist/package/config-merge.js.map +1 -0
- package/dist/package/config.d.ts +13 -0
- package/dist/package/config.d.ts.map +1 -0
- package/dist/package/config.js +29 -0
- package/dist/package/config.js.map +1 -0
- package/dist/package/content-replacements.d.ts +21 -0
- package/dist/package/content-replacements.d.ts.map +1 -0
- package/dist/package/content-replacements.js +96 -0
- package/dist/package/content-replacements.js.map +1 -0
- package/dist/package/index.d.ts +10 -0
- package/dist/package/index.d.ts.map +1 -0
- package/dist/package/index.js +16 -0
- package/dist/package/index.js.map +1 -0
- package/dist/package/symlinks.d.ts +17 -0
- package/dist/package/symlinks.d.ts.map +1 -0
- package/dist/package/symlinks.js +125 -0
- package/dist/package/symlinks.js.map +1 -0
- package/dist/types.d.ts +181 -277
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -12
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +25 -55
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +82 -181
- package/dist/utils.js.map +1 -1
- package/package.json +4 -2
- package/dist/cli.d.ts +0 -6
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -570
- package/dist/cli.js.map +0 -1
- package/dist/consumer.d.ts +0 -74
- package/dist/consumer.d.ts.map +0 -1
- package/dist/consumer.js +0 -820
- package/dist/consumer.js.map +0 -1
- package/dist/publisher.d.ts +0 -38
- package/dist/publisher.d.ts.map +0 -1
- package/dist/publisher.js +0 -164
- package/dist/publisher.js.map +0 -1
- package/dist/runner.d.ts +0 -117
- package/dist/runner.d.ts.map +0 -1
- package/dist/runner.js +0 -812
- package/dist/runner.js.map +0 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.actionExtract = actionExtract;
|
|
7
|
+
/* eslint-disable no-restricted-syntax */
|
|
8
|
+
/* eslint-disable no-console */
|
|
9
|
+
/* eslint-disable functional/no-try-statements */
|
|
10
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
|
+
const utils_1 = require("../utils");
|
|
13
|
+
const diff_1 = require("../fileset/diff");
|
|
14
|
+
const execute_1 = require("../fileset/execute");
|
|
15
|
+
const markers_1 = require("../fileset/markers");
|
|
16
|
+
const symlinks_1 = require("./symlinks");
|
|
17
|
+
/**
|
|
18
|
+
* Orchestrate full extract across all filesets.
|
|
19
|
+
* Implements the two-phase diff+execute model with conflict detection and rollback.
|
|
20
|
+
*/
|
|
21
|
+
// eslint-disable-next-line complexity
|
|
22
|
+
async function actionExtract(options) {
|
|
23
|
+
const { entries, config, cwd, verbose = false, onProgress, visitedPackages = new Set(), } = options;
|
|
24
|
+
if (verbose) {
|
|
25
|
+
console.log(`[verbose] extract: processing ${entries.length} entr${entries.length === 1 ? 'y' : 'ies'} (cwd: ${cwd})`);
|
|
26
|
+
}
|
|
27
|
+
const result = { added: 0, modified: 0, deleted: 0, skipped: 0 };
|
|
28
|
+
const allNewlyCreated = [];
|
|
29
|
+
const deferredDeletes = [];
|
|
30
|
+
try {
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
const pkg = (0, utils_1.parsePackageSpec)(entry.package);
|
|
33
|
+
// Circular dependency detection
|
|
34
|
+
if (visitedPackages.has(pkg.name)) {
|
|
35
|
+
throw new Error(`Circular dependency detected: package "${pkg.name}" is already being extracted`);
|
|
36
|
+
}
|
|
37
|
+
const outputDir = node_path_1.default.resolve(cwd, entry.output.path);
|
|
38
|
+
const selector = entry.selector ?? {};
|
|
39
|
+
const outputConfig = entry.output;
|
|
40
|
+
const contentReplacements = outputConfig.contentReplacements ?? [];
|
|
41
|
+
onProgress?.({
|
|
42
|
+
type: 'package-start',
|
|
43
|
+
packageName: pkg.name,
|
|
44
|
+
packageVersion: pkg.version ?? 'latest',
|
|
45
|
+
});
|
|
46
|
+
if (verbose) {
|
|
47
|
+
console.log(`[verbose] extract: entry package=${entry.package} outputDir=${entry.output.path}`);
|
|
48
|
+
}
|
|
49
|
+
// Phase 1: Install package
|
|
50
|
+
const pkgPath = (0, utils_1.installPackage)(pkg.name, pkg.version, selector.upgrade ?? false, cwd);
|
|
51
|
+
if (verbose) {
|
|
52
|
+
console.log(`[verbose] extract: installed package ${pkg.name} at ${pkgPath}`);
|
|
53
|
+
}
|
|
54
|
+
// Get installed version
|
|
55
|
+
let installedVersion = '0.0.0';
|
|
56
|
+
try {
|
|
57
|
+
const pkgJsonContent = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(pkgPath, 'package.json')).toString());
|
|
58
|
+
installedVersion = pkgJsonContent.version;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// fallback
|
|
62
|
+
}
|
|
63
|
+
// Remove stale symlinks before diff
|
|
64
|
+
if (outputConfig.symlinks && outputConfig.symlinks.length > 0) {
|
|
65
|
+
// eslint-disable-next-line no-await-in-loop
|
|
66
|
+
await (0, symlinks_1.removeStaleSymlinks)(outputDir, outputConfig.symlinks);
|
|
67
|
+
}
|
|
68
|
+
// Phase 2: Read existing marker (all packages combined)
|
|
69
|
+
// eslint-disable-next-line no-await-in-loop
|
|
70
|
+
const existingMarker = await (0, markers_1.readOutputDirMarker)(outputDir);
|
|
71
|
+
// Filter to current package only so diff's toDelete logic doesn't purge
|
|
72
|
+
// files managed by other packages writing to the same output directory.
|
|
73
|
+
const pkgMarker = existingMarker.filter((m) => m.packageName === pkg.name);
|
|
74
|
+
// Phase 3: Diff phase (pure, no disk writes)
|
|
75
|
+
// eslint-disable-next-line no-await-in-loop
|
|
76
|
+
const extractionMap = await (0, diff_1.diff)(pkgPath, outputDir, selector, outputConfig, pkgMarker, contentReplacements);
|
|
77
|
+
// Phase 4: Abort on conflicts (unless force or unmanaged)
|
|
78
|
+
if (extractionMap.conflicts.length > 0 && !outputConfig.force && !outputConfig.unmanaged) {
|
|
79
|
+
const conflictPaths = extractionMap.conflicts.map((c) => c.relPath).join(', ');
|
|
80
|
+
throw new Error(`Conflict: the following files exist and are not managed by npmdata: ${conflictPaths}. ` +
|
|
81
|
+
`Use --force to overwrite or --unmanaged to skip.`);
|
|
82
|
+
}
|
|
83
|
+
// Phase 5: Execute phase (disk writes)
|
|
84
|
+
// eslint-disable-next-line no-await-in-loop
|
|
85
|
+
const executeResult = await (0, execute_1.execute)(extractionMap, outputDir, outputConfig, pkg, installedVersion, existingMarker, cwd);
|
|
86
|
+
// Collect newly created files for potential rollback
|
|
87
|
+
allNewlyCreated.push(...executeResult.newlyCreated);
|
|
88
|
+
// Collect deferred deletes (execute across all filesets first)
|
|
89
|
+
for (const relPath of extractionMap.toDelete) {
|
|
90
|
+
deferredDeletes.push(node_path_1.default.join(outputDir, relPath));
|
|
91
|
+
}
|
|
92
|
+
// Emit progress events
|
|
93
|
+
for (const op of extractionMap.toAdd) {
|
|
94
|
+
onProgress?.({ type: 'file-added', packageName: pkg.name, file: op.relPath });
|
|
95
|
+
}
|
|
96
|
+
for (const op of extractionMap.toModify) {
|
|
97
|
+
onProgress?.({ type: 'file-modified', packageName: pkg.name, file: op.relPath });
|
|
98
|
+
}
|
|
99
|
+
for (const relPath of extractionMap.toDelete) {
|
|
100
|
+
onProgress?.({ type: 'file-deleted', packageName: pkg.name, file: relPath });
|
|
101
|
+
}
|
|
102
|
+
for (const skipped of extractionMap.toSkip) {
|
|
103
|
+
onProgress?.({ type: 'file-skipped', packageName: pkg.name, file: skipped.relPath });
|
|
104
|
+
}
|
|
105
|
+
result.added += executeResult.added;
|
|
106
|
+
result.modified += executeResult.modified;
|
|
107
|
+
result.skipped += executeResult.skipped;
|
|
108
|
+
// Handle recursive resolution: check if installed package has npmdata.sets
|
|
109
|
+
let pkgNpmdataSets;
|
|
110
|
+
try {
|
|
111
|
+
const depPkgJson = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(pkgPath, 'package.json')).toString());
|
|
112
|
+
pkgNpmdataSets = depPkgJson.npmdata?.sets;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// No package.json or no npmdata.sets
|
|
116
|
+
}
|
|
117
|
+
if (pkgNpmdataSets && pkgNpmdataSets.length > 0) {
|
|
118
|
+
// Names of packages already being processed at this level (siblings).
|
|
119
|
+
// Skip recursive resolution for any set entry that is already a sibling — those
|
|
120
|
+
// will be (or have been) handled by the outer loop. This prevents self-referencing
|
|
121
|
+
// npmdata.sets from triggering the circular-dependency guard.
|
|
122
|
+
const siblingNames = new Set(entries.map((e) => (0, utils_1.parsePackageSpec)(e.package).name));
|
|
123
|
+
const filteredSets = pkgNpmdataSets.filter((e) => !siblingNames.has((0, utils_1.parsePackageSpec)(e.package).name) &&
|
|
124
|
+
!visitedPackages.has((0, utils_1.parsePackageSpec)(e.package).name));
|
|
125
|
+
if (filteredSets.length > 0) {
|
|
126
|
+
const visitedSet = new Set(visitedPackages);
|
|
127
|
+
visitedSet.add(pkg.name);
|
|
128
|
+
// Inherit caller overrides (force, dryRun, keepExisting) from current entry
|
|
129
|
+
const inheritedEntries = filteredSets.map((depEntry) => {
|
|
130
|
+
const { path: depPath, ...restOutput } = depEntry.output;
|
|
131
|
+
const inheritedOutput = {
|
|
132
|
+
...restOutput,
|
|
133
|
+
path: node_path_1.default.join(outputConfig.path, depPath),
|
|
134
|
+
force: outputConfig.force ?? restOutput.force,
|
|
135
|
+
dryRun: outputConfig.dryRun ?? restOutput.dryRun,
|
|
136
|
+
keepExisting: outputConfig.keepExisting ?? restOutput.keepExisting,
|
|
137
|
+
// Append symlinks and contentReplacements
|
|
138
|
+
symlinks: [...(outputConfig.symlinks ?? []), ...(restOutput.symlinks ?? [])],
|
|
139
|
+
contentReplacements: [
|
|
140
|
+
...(outputConfig.contentReplacements ?? []),
|
|
141
|
+
...(restOutput.contentReplacements ?? []),
|
|
142
|
+
],
|
|
143
|
+
};
|
|
144
|
+
return {
|
|
145
|
+
...depEntry,
|
|
146
|
+
output: inheritedOutput,
|
|
147
|
+
};
|
|
148
|
+
});
|
|
149
|
+
// eslint-disable-next-line no-await-in-loop
|
|
150
|
+
const subResult = await actionExtract({
|
|
151
|
+
entries: inheritedEntries,
|
|
152
|
+
config,
|
|
153
|
+
cwd,
|
|
154
|
+
verbose,
|
|
155
|
+
onProgress,
|
|
156
|
+
visitedPackages: visitedSet,
|
|
157
|
+
});
|
|
158
|
+
result.added += subResult.added;
|
|
159
|
+
result.modified += subResult.modified;
|
|
160
|
+
result.deleted += subResult.deleted;
|
|
161
|
+
result.skipped += subResult.skipped;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Create symlinks
|
|
165
|
+
if (outputConfig.symlinks && outputConfig.symlinks.length > 0 && !outputConfig.dryRun) {
|
|
166
|
+
// eslint-disable-next-line no-await-in-loop
|
|
167
|
+
await (0, symlinks_1.createSymlinks)(outputDir, outputConfig.symlinks);
|
|
168
|
+
}
|
|
169
|
+
onProgress?.({
|
|
170
|
+
type: 'package-end',
|
|
171
|
+
packageName: pkg.name,
|
|
172
|
+
packageVersion: installedVersion,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
// Deferred deletions: delete after all filesets have been processed
|
|
176
|
+
await (0, execute_1.deleteFiles)(deferredDeletes);
|
|
177
|
+
result.deleted += deferredDeletes.length;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
// Partial rollback: delete only newly created files
|
|
181
|
+
await (0, execute_1.rollback)(allNewlyCreated);
|
|
182
|
+
throw error;
|
|
183
|
+
}
|
|
184
|
+
return result;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=action-extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-extract.js","sourceRoot":"","sources":["../../src/package/action-extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type InitConfig = {
|
|
2
|
+
/** File glob patterns to include in the package and use as selector for filesets. */
|
|
3
|
+
files?: string[];
|
|
4
|
+
/** External package specs (e.g. "eslint@8") to add as npmdata sets and dependencies. */
|
|
5
|
+
packages?: string[];
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Scaffold or update a publishable npm data package.
|
|
9
|
+
* If package.json already exists, updates it in place.
|
|
10
|
+
* Creates bin/npmdata.js if it does not already exist.
|
|
11
|
+
*/
|
|
12
|
+
export declare function actionInit(outputDir: string, verbose: boolean, config?: InitConfig): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=action-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-init.d.ts","sourceRoot":"","sources":["../../src/package/action-init.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,UAAU,GAAG;IACvB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CAsEf"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.actionInit = actionInit;
|
|
7
|
+
/* eslint-disable no-console */
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
/**
|
|
12
|
+
* Scaffold or update a publishable npm data package.
|
|
13
|
+
* If package.json already exists, updates it in place.
|
|
14
|
+
* Creates bin/npmdata.js if it does not already exist.
|
|
15
|
+
*/
|
|
16
|
+
async function actionInit(outputDir, verbose, config) {
|
|
17
|
+
const pkgJsonPath = node_path_1.default.join(outputDir, 'package.json');
|
|
18
|
+
const binDir = node_path_1.default.join(outputDir, 'bin');
|
|
19
|
+
const binPath = node_path_1.default.join(binDir, 'npmdata.js');
|
|
20
|
+
const binShim = `#!/usr/bin/env node\n'use strict';\nrequire('npmdata').run(__dirname, process.argv.slice(2));\n`;
|
|
21
|
+
node_fs_1.default.mkdirSync(outputDir, { recursive: true });
|
|
22
|
+
// Read existing package.json or create a new skeleton
|
|
23
|
+
let pkgJson;
|
|
24
|
+
if (node_fs_1.default.existsSync(pkgJsonPath)) {
|
|
25
|
+
pkgJson = JSON.parse(node_fs_1.default.readFileSync(pkgJsonPath).toString());
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const dirName = node_path_1.default.basename(outputDir);
|
|
29
|
+
pkgJson = {
|
|
30
|
+
name: dirName,
|
|
31
|
+
version: '1.0.0',
|
|
32
|
+
description: '',
|
|
33
|
+
dependencies: { npmdata: '*' },
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const pkgName = pkgJson.name ?? node_path_1.default.basename(outputDir);
|
|
37
|
+
const filePatterns = config?.files ?? [];
|
|
38
|
+
const externalPackages = config?.packages ?? [];
|
|
39
|
+
// Set bin entry
|
|
40
|
+
pkgJson.bin = 'bin/npmdata.js';
|
|
41
|
+
// Update npm files list to include data patterns and the bin shim
|
|
42
|
+
const npmFiles = new Set([...filePatterns, 'package.json', 'bin/npmdata.js']);
|
|
43
|
+
pkgJson.files = Array.from(npmFiles);
|
|
44
|
+
// Build npmdata sets: self-package first, then each external package
|
|
45
|
+
const selfEntry = {
|
|
46
|
+
package: pkgName,
|
|
47
|
+
output: { path: '.' },
|
|
48
|
+
...(filePatterns.length > 0 ? { selector: { files: filePatterns } } : {}),
|
|
49
|
+
};
|
|
50
|
+
const externalEntries = externalPackages.map((pkg) => ({
|
|
51
|
+
package: pkg,
|
|
52
|
+
output: { path: '.' },
|
|
53
|
+
...(filePatterns.length > 0 ? { selector: { files: filePatterns } } : {}),
|
|
54
|
+
}));
|
|
55
|
+
pkgJson.npmdata = { sets: [selfEntry, ...externalEntries] };
|
|
56
|
+
// Add external packages to dependencies
|
|
57
|
+
const deps = pkgJson.dependencies ?? {};
|
|
58
|
+
for (const pkg of externalPackages) {
|
|
59
|
+
const parsed = (0, utils_1.parsePackageSpec)(pkg);
|
|
60
|
+
deps[parsed.name] = parsed.version ?? '*';
|
|
61
|
+
}
|
|
62
|
+
pkgJson.dependencies = deps;
|
|
63
|
+
// Write updated package.json
|
|
64
|
+
// eslint-disable-next-line unicorn/no-null
|
|
65
|
+
node_fs_1.default.writeFileSync(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)}\n`, 'utf8');
|
|
66
|
+
// Create bin/npmdata.js only if it does not already exist
|
|
67
|
+
if (!node_fs_1.default.existsSync(binPath)) {
|
|
68
|
+
node_fs_1.default.mkdirSync(binDir, { recursive: true });
|
|
69
|
+
node_fs_1.default.writeFileSync(binPath, binShim, 'utf8');
|
|
70
|
+
node_fs_1.default.chmodSync(binPath, 0o755);
|
|
71
|
+
}
|
|
72
|
+
if (verbose) {
|
|
73
|
+
console.log(`Updated: ${pkgJsonPath}`);
|
|
74
|
+
console.log(`Created: ${binPath}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=action-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-init.js","sourceRoot":"","sources":["../../src/package/action-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NpmdataConfig, NpmdataExtractEntry, ManagedFileMetadata } from '../types';
|
|
2
|
+
export type ListOptions = {
|
|
3
|
+
entries: NpmdataExtractEntry[];
|
|
4
|
+
config: NpmdataConfig | null;
|
|
5
|
+
cwd: string;
|
|
6
|
+
output?: string;
|
|
7
|
+
verbose?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Aggregate all managed files across unique output directories.
|
|
11
|
+
* Note: list always ignores --presets; reports all managed files.
|
|
12
|
+
*/
|
|
13
|
+
export declare function actionList(options: ListOptions): Promise<ManagedFileMetadata[]>;
|
|
14
|
+
//# sourceMappingURL=action-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-list.d.ts","sourceRoot":"","sources":["../../src/package/action-list.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGnF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAmCrF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.actionList = actionList;
|
|
7
|
+
/* eslint-disable no-restricted-syntax */
|
|
8
|
+
/* eslint-disable no-console */
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const list_1 = require("../fileset/list");
|
|
11
|
+
/**
|
|
12
|
+
* Aggregate all managed files across unique output directories.
|
|
13
|
+
* Note: list always ignores --presets; reports all managed files.
|
|
14
|
+
*/
|
|
15
|
+
async function actionList(options) {
|
|
16
|
+
const { entries, cwd, output, verbose = false } = options;
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
const results = [];
|
|
19
|
+
if (verbose) {
|
|
20
|
+
console.log(`[verbose] list: listing managed files across ${entries.length} entr${entries.length === 1 ? 'y' : 'ies'} (cwd: ${cwd})`);
|
|
21
|
+
}
|
|
22
|
+
// Collect unique output dirs
|
|
23
|
+
const outputDirs = [];
|
|
24
|
+
if (output) {
|
|
25
|
+
outputDirs.push(node_path_1.default.resolve(cwd, output));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
const dir = node_path_1.default.resolve(cwd, entry.output.path);
|
|
30
|
+
if (!seen.has(dir)) {
|
|
31
|
+
seen.add(dir);
|
|
32
|
+
if (verbose) {
|
|
33
|
+
console.log(`[verbose] list: scanning directory ${dir}`);
|
|
34
|
+
}
|
|
35
|
+
outputDirs.push(dir);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
for (const dir of outputDirs) {
|
|
40
|
+
// eslint-disable-next-line no-await-in-loop
|
|
41
|
+
const files = await (0, list_1.listManagedFiles)(dir);
|
|
42
|
+
results.push(...files);
|
|
43
|
+
}
|
|
44
|
+
return results;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=action-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-list.js","sourceRoot":"","sources":["../../src/package/action-list.ts"],"names":[],"mappings":";;;;;AAmBA,gCAmCC;AAtDD,yCAAyC;AACzC,+BAA+B;AAC/B,0DAA6B;AAG7B,0CAAmD;AAUnD;;;GAGG;AACI,KAAK,UAAU,UAAU,CAAC,OAAoB;IACnD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CACT,gDAAgD,OAAO,CAAC,MAAM,QAAQ,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,GAAG,CACzH,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,MAAM,EAAE,CAAC;QACX,UAAU,CAAC,IAAI,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,4CAA4C;QAC5C,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAgB,EAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NpmdataConfig, NpmdataExtractEntry, ProgressEvent } from '../types';
|
|
2
|
+
export type PurgeOptions = {
|
|
3
|
+
entries: NpmdataExtractEntry[];
|
|
4
|
+
config: NpmdataConfig | null;
|
|
5
|
+
cwd: string;
|
|
6
|
+
presets?: string[];
|
|
7
|
+
dryRun?: boolean;
|
|
8
|
+
verbose?: boolean;
|
|
9
|
+
onProgress?: (event: ProgressEvent) => void;
|
|
10
|
+
};
|
|
11
|
+
export type PurgeSummary = {
|
|
12
|
+
deleted: number;
|
|
13
|
+
symlinksRemoved: number;
|
|
14
|
+
dirsRemoved: number;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Purge managed files from all matching filesets.
|
|
18
|
+
* Supports --presets filtering and --dry-run.
|
|
19
|
+
*/
|
|
20
|
+
export declare function actionPurge(options: PurgeOptions): Promise<PurgeSummary>;
|
|
21
|
+
//# sourceMappingURL=action-purge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-purge.d.ts","sourceRoot":"","sources":["../../src/package/action-purge.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK7E,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;CAC7C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA4D9E"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.actionPurge = actionPurge;
|
|
7
|
+
/* eslint-disable no-restricted-syntax */
|
|
8
|
+
/* eslint-disable no-console */
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
const markers_1 = require("../fileset/markers");
|
|
12
|
+
const purge_1 = require("../fileset/purge");
|
|
13
|
+
/**
|
|
14
|
+
* Purge managed files from all matching filesets.
|
|
15
|
+
* Supports --presets filtering and --dry-run.
|
|
16
|
+
*/
|
|
17
|
+
async function actionPurge(options) {
|
|
18
|
+
const { entries, cwd, presets = [], dryRun = false, verbose = false, onProgress } = options;
|
|
19
|
+
if (verbose) {
|
|
20
|
+
console.log(`[verbose] purge: processing ${entries.length} entr${entries.length === 1 ? 'y' : 'ies'} (cwd: ${cwd})`);
|
|
21
|
+
}
|
|
22
|
+
const summary = { deleted: 0, symlinksRemoved: 0, dirsRemoved: 0 };
|
|
23
|
+
// Filter by presets
|
|
24
|
+
const filtered = (0, utils_1.filterEntriesByPresets)(entries, presets);
|
|
25
|
+
for (const entry of filtered) {
|
|
26
|
+
const pkg = (0, utils_1.parsePackageSpec)(entry.package);
|
|
27
|
+
const outputDir = node_path_1.default.resolve(cwd, entry.output.path);
|
|
28
|
+
if (verbose) {
|
|
29
|
+
console.log(`[verbose] purge: entry package=${entry.package} outputDir=${entry.output.path}`);
|
|
30
|
+
}
|
|
31
|
+
onProgress?.({
|
|
32
|
+
type: 'package-start',
|
|
33
|
+
packageName: pkg.name,
|
|
34
|
+
packageVersion: pkg.version ?? 'latest',
|
|
35
|
+
});
|
|
36
|
+
// Read managed files for this entry
|
|
37
|
+
// eslint-disable-next-line no-await-in-loop
|
|
38
|
+
const managedFiles = await (0, markers_1.readOutputDirMarker)(outputDir);
|
|
39
|
+
// Purge only files belonging to this package
|
|
40
|
+
const entryFiles = managedFiles.filter((m) => m.packageName === pkg.name);
|
|
41
|
+
// eslint-disable-next-line no-await-in-loop
|
|
42
|
+
const result = await (0, purge_1.purgeFileset)(outputDir, entryFiles, dryRun);
|
|
43
|
+
for (const m of entryFiles) {
|
|
44
|
+
onProgress?.({ type: 'file-deleted', packageName: pkg.name, file: m.path });
|
|
45
|
+
}
|
|
46
|
+
summary.deleted += result.deleted;
|
|
47
|
+
summary.symlinksRemoved += result.symlinksRemoved;
|
|
48
|
+
summary.dirsRemoved += result.dirsRemoved;
|
|
49
|
+
if (verbose) {
|
|
50
|
+
console.log(`[verbose] purge: deleted ${result.deleted} files, ${result.symlinksRemoved} symlinks, ${result.dirsRemoved} dirs for ${entry.package}`);
|
|
51
|
+
}
|
|
52
|
+
onProgress?.({
|
|
53
|
+
type: 'package-end',
|
|
54
|
+
packageName: pkg.name,
|
|
55
|
+
packageVersion: pkg.version ?? 'latest',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return summary;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=action-purge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-purge.js","sourceRoot":"","sources":["../../src/package/action-purge.ts"],"names":[],"mappings":";;;;;AA6BA,kCA4DC;AAzFD,yCAAyC;AACzC,+BAA+B;AAC/B,0DAA6B;AAG7B,oCAAoE;AACpE,gDAAyD;AACzD,4CAAgD;AAkBhD;;;GAGG;AACI,KAAK,UAAU,WAAW,CAAC,OAAqB;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE5F,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CACT,+BAA+B,OAAO,CAAC,MAAM,QAAQ,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,GAAG,CACxG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAEjF,oBAAoB;IACpB,MAAM,QAAQ,GAAG,IAAA,8BAAsB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE1D,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,CAAC,OAAO,cAAc,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,UAAU,EAAE,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,GAAG,CAAC,IAAI;YACrB,cAAc,EAAE,GAAG,CAAC,OAAO,IAAI,QAAQ;SACxC,CAAC,CAAC;QAEH,oCAAoC;QACpC,4CAA4C;QAC5C,MAAM,YAAY,GAAG,MAAM,IAAA,6BAAmB,EAAC,SAAS,CAAC,CAAC;QAE1D,6CAA6C;QAC7C,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;QAE1E,4CAA4C;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAY,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEjE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAClC,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC;QAClD,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;QAE1C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CACT,4BAA4B,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,eAAe,cAAc,MAAM,CAAC,WAAW,aAAa,KAAK,CAAC,OAAO,EAAE,CACxI,CAAC;QACJ,CAAC;QAED,UAAU,EAAE,CAAC;YACX,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,GAAG,CAAC,IAAI;YACrB,cAAc,EAAE,GAAG,CAAC,OAAO,IAAI,QAAQ;SACxC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SelectorConfig, OutputConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Merge two SelectorConfig objects across recursion levels.
|
|
4
|
+
* - files: ANDed (intersection); when either is absent, use the other's list
|
|
5
|
+
* - contentRegexes: ANDed (both must match)
|
|
6
|
+
* - presets: NOT inherited (caller's presets not forwarded to dependency)
|
|
7
|
+
* - upgrade: each level evaluated independently (not merged)
|
|
8
|
+
*/
|
|
9
|
+
export declare function mergeSelectorConfig(parent: SelectorConfig, child: SelectorConfig): SelectorConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Merge two OutputConfig objects for recursive extraction.
|
|
12
|
+
* - force, keepExisting, gitignore, unmanaged, dryRun: caller value overrides child
|
|
13
|
+
* - path: concatenated (parent/child)
|
|
14
|
+
* - symlinks: appended (parent + child)
|
|
15
|
+
* - contentReplacements: appended (parent + child)
|
|
16
|
+
*/
|
|
17
|
+
export declare function mergeOutputConfig(caller: OutputConfig, child: OutputConfig): OutputConfig;
|
|
18
|
+
//# sourceMappingURL=config-merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-merge.d.ts","sourceRoot":"","sources":["../../src/package/config-merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,cAAc,CAiBjG;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAczF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeSelectorConfig = mergeSelectorConfig;
|
|
4
|
+
exports.mergeOutputConfig = mergeOutputConfig;
|
|
5
|
+
/**
|
|
6
|
+
* Merge two SelectorConfig objects across recursion levels.
|
|
7
|
+
* - files: ANDed (intersection); when either is absent, use the other's list
|
|
8
|
+
* - contentRegexes: ANDed (both must match)
|
|
9
|
+
* - presets: NOT inherited (caller's presets not forwarded to dependency)
|
|
10
|
+
* - upgrade: each level evaluated independently (not merged)
|
|
11
|
+
*/
|
|
12
|
+
function mergeSelectorConfig(parent, child) {
|
|
13
|
+
const files = parent.files && child.files
|
|
14
|
+
? parent.files.filter((f) => (child.files ?? []).includes(f))
|
|
15
|
+
: (parent.files ?? child.files);
|
|
16
|
+
const contentRegexes = parent.contentRegexes && child.contentRegexes
|
|
17
|
+
? [...parent.contentRegexes, ...child.contentRegexes]
|
|
18
|
+
: (parent.contentRegexes ?? child.contentRegexes);
|
|
19
|
+
return {
|
|
20
|
+
files,
|
|
21
|
+
contentRegexes,
|
|
22
|
+
presets: child.presets, // not inherited from parent
|
|
23
|
+
upgrade: child.upgrade, // each level independent
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Merge two OutputConfig objects for recursive extraction.
|
|
28
|
+
* - force, keepExisting, gitignore, unmanaged, dryRun: caller value overrides child
|
|
29
|
+
* - path: concatenated (parent/child)
|
|
30
|
+
* - symlinks: appended (parent + child)
|
|
31
|
+
* - contentReplacements: appended (parent + child)
|
|
32
|
+
*/
|
|
33
|
+
function mergeOutputConfig(caller, child) {
|
|
34
|
+
return {
|
|
35
|
+
path: `${caller.path}/${child.path}`.replaceAll(/\/+/g, '/'),
|
|
36
|
+
force: caller.force ?? child.force,
|
|
37
|
+
keepExisting: caller.keepExisting ?? child.keepExisting,
|
|
38
|
+
gitignore: caller.gitignore ?? child.gitignore,
|
|
39
|
+
unmanaged: caller.unmanaged ?? child.unmanaged,
|
|
40
|
+
dryRun: caller.dryRun ?? child.dryRun,
|
|
41
|
+
symlinks: [...(caller.symlinks ?? []), ...(child.symlinks ?? [])],
|
|
42
|
+
contentReplacements: [
|
|
43
|
+
...(caller.contentReplacements ?? []),
|
|
44
|
+
...(child.contentReplacements ?? []),
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=config-merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-merge.js","sourceRoot":"","sources":["../../src/package/config-merge.ts"],"names":[],"mappings":";;AASA,kDAiBC;AASD,8CAcC;AA/CD;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,MAAsB,EAAE,KAAqB;IAC/E,MAAM,KAAK,GACT,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;QACzB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,cAAc,GAClB,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc;QAC3C,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC;QACrD,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAEtD,OAAO;QACL,KAAK;QACL,cAAc;QACd,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,4BAA4B;QACpD,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,yBAAyB;KAClD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,MAAoB,EAAE,KAAmB;IACzE,OAAO;QACL,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;QAC5D,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;QAClC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY;QACvD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;QAC9C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;QAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;QACrC,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACjE,mBAAmB,EAAE;YACnB,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC;SACrC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NpmdataConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Search for an npmdata configuration using cosmiconfig, starting from the given cwd.
|
|
4
|
+
* Looks for (in priority order):
|
|
5
|
+
* - .npmdatarc (JSON or YAML)
|
|
6
|
+
* - .npmdatarc.json / .npmdatarc.yaml / .npmdatarc.js
|
|
7
|
+
* - npmdata.config.js
|
|
8
|
+
* - "npmdata" key in package.json
|
|
9
|
+
*
|
|
10
|
+
* Returns the NpmdataConfig when found, or null when no configuration is present.
|
|
11
|
+
*/
|
|
12
|
+
export declare function loadNpmdataConfig(cwd: string): Promise<NpmdataConfig | null>;
|
|
13
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadNpmdataConfig = loadNpmdataConfig;
|
|
4
|
+
const cosmiconfig_1 = require("cosmiconfig");
|
|
5
|
+
/**
|
|
6
|
+
* Search for an npmdata configuration using cosmiconfig, starting from the given cwd.
|
|
7
|
+
* Looks for (in priority order):
|
|
8
|
+
* - .npmdatarc (JSON or YAML)
|
|
9
|
+
* - .npmdatarc.json / .npmdatarc.yaml / .npmdatarc.js
|
|
10
|
+
* - npmdata.config.js
|
|
11
|
+
* - "npmdata" key in package.json
|
|
12
|
+
*
|
|
13
|
+
* Returns the NpmdataConfig when found, or null when no configuration is present.
|
|
14
|
+
*/
|
|
15
|
+
async function loadNpmdataConfig(cwd) {
|
|
16
|
+
const explorer = (0, cosmiconfig_1.cosmiconfig)('npmdata');
|
|
17
|
+
const result = await explorer.search(cwd);
|
|
18
|
+
if (!result || result.isEmpty) {
|
|
19
|
+
// eslint-disable-next-line unicorn/no-null
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const cfg = result.config;
|
|
23
|
+
if (!cfg || !Array.isArray(cfg.sets)) {
|
|
24
|
+
// eslint-disable-next-line unicorn/no-null
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return cfg;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/package/config.ts"],"names":[],"mappings":";;AAcA,8CAaC;AA3BD,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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ContentReplacementConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Apply content replacement rules to an in-memory string (pure function).
|
|
4
|
+
* Used during check comparison to apply the same transformations before hashing,
|
|
5
|
+
* so replaced files are not falsely reported as modified.
|
|
6
|
+
*
|
|
7
|
+
* @param content The file content as a string.
|
|
8
|
+
* @param replacements List of ContentReplacementConfig to apply.
|
|
9
|
+
* @returns Transformed content string.
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyContentReplacementsToBuffer(content: string, replacements: ContentReplacementConfig[]): string;
|
|
12
|
+
/**
|
|
13
|
+
* Apply content replacement rules to files on disk matching the given glob patterns.
|
|
14
|
+
* Skips binary files.
|
|
15
|
+
*
|
|
16
|
+
* @param files List of absolute file paths to apply replacements to.
|
|
17
|
+
* Pre-resolved by the caller via glob matching.
|
|
18
|
+
* @param replacements List of ContentReplacementConfig to apply.
|
|
19
|
+
*/
|
|
20
|
+
export declare function applyContentReplacements(cwd: string, replacements: ContentReplacementConfig[]): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=content-replacements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-replacements.d.ts","sourceRoot":"","sources":["../../src/package/content-replacements.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGpD;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,wBAAwB,EAAE,GACvC,MAAM,CAOR;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,wBAAwB,EAAE,GACvC,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|