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.
Files changed (153) hide show
  1. package/README.md +47 -42
  2. package/dist/cli/actions/check.d.ts +6 -0
  3. package/dist/cli/actions/check.d.ts.map +1 -0
  4. package/dist/cli/actions/check.js +57 -0
  5. package/dist/cli/actions/check.js.map +1 -0
  6. package/dist/cli/actions/extract.d.ts +7 -0
  7. package/dist/cli/actions/extract.d.ts.map +1 -0
  8. package/dist/cli/actions/extract.js +84 -0
  9. package/dist/cli/actions/extract.js.map +1 -0
  10. package/dist/cli/actions/init.d.ts +6 -0
  11. package/dist/cli/actions/init.d.ts.map +1 -0
  12. package/dist/cli/actions/init.js +36 -0
  13. package/dist/cli/actions/init.js.map +1 -0
  14. package/dist/cli/actions/list.d.ts +7 -0
  15. package/dist/cli/actions/list.d.ts.map +1 -0
  16. package/dist/cli/actions/list.js +42 -0
  17. package/dist/cli/actions/list.js.map +1 -0
  18. package/dist/cli/actions/purge.d.ts +6 -0
  19. package/dist/cli/actions/purge.d.ts.map +1 -0
  20. package/dist/cli/actions/purge.js +47 -0
  21. package/dist/cli/actions/purge.js.map +1 -0
  22. package/dist/cli/argv.d.ts +35 -0
  23. package/dist/cli/argv.d.ts.map +1 -0
  24. package/dist/cli/argv.js +125 -0
  25. package/dist/cli/argv.js.map +1 -0
  26. package/dist/cli/cli.d.ts +9 -0
  27. package/dist/cli/cli.d.ts.map +1 -0
  28. package/dist/cli/cli.js +69 -0
  29. package/dist/cli/cli.js.map +1 -0
  30. package/dist/cli/runner.d.ts +9 -0
  31. package/dist/cli/runner.d.ts.map +1 -0
  32. package/dist/cli/runner.js +106 -0
  33. package/dist/cli/runner.js.map +1 -0
  34. package/dist/cli/usage.d.ts +6 -0
  35. package/dist/cli/usage.d.ts.map +1 -0
  36. package/dist/cli/usage.js +126 -0
  37. package/dist/cli/usage.js.map +1 -0
  38. package/dist/fileset/check.d.ts +15 -0
  39. package/dist/fileset/check.d.ts.map +1 -0
  40. package/dist/fileset/check.js +68 -0
  41. package/dist/fileset/check.js.map +1 -0
  42. package/dist/fileset/constants.d.ts +13 -0
  43. package/dist/fileset/constants.d.ts.map +1 -0
  44. package/dist/fileset/constants.js +22 -0
  45. package/dist/fileset/constants.js.map +1 -0
  46. package/dist/fileset/diff.d.ts +16 -0
  47. package/dist/fileset/diff.d.ts.map +1 -0
  48. package/dist/fileset/diff.js +116 -0
  49. package/dist/fileset/diff.js.map +1 -0
  50. package/dist/fileset/execute.d.ts +29 -0
  51. package/dist/fileset/execute.d.ts.map +1 -0
  52. package/dist/fileset/execute.js +136 -0
  53. package/dist/fileset/execute.js.map +1 -0
  54. package/dist/fileset/gitignore.d.ts +16 -0
  55. package/dist/fileset/gitignore.d.ts.map +1 -0
  56. package/dist/fileset/gitignore.js +82 -0
  57. package/dist/fileset/gitignore.js.map +1 -0
  58. package/dist/fileset/index.d.ts +5 -0
  59. package/dist/fileset/index.d.ts.map +1 -0
  60. package/dist/fileset/index.js +21 -0
  61. package/dist/fileset/index.js.map +1 -0
  62. package/dist/fileset/list.d.ts +6 -0
  63. package/dist/fileset/list.d.ts.map +1 -0
  64. package/dist/fileset/list.js +11 -0
  65. package/dist/fileset/list.js.map +1 -0
  66. package/dist/fileset/markers.d.ts +22 -0
  67. package/dist/fileset/markers.d.ts.map +1 -0
  68. package/dist/fileset/markers.js +68 -0
  69. package/dist/fileset/markers.js.map +1 -0
  70. package/dist/fileset/package-files.d.ts +14 -0
  71. package/dist/fileset/package-files.d.ts.map +1 -0
  72. package/dist/fileset/package-files.js +81 -0
  73. package/dist/fileset/package-files.js.map +1 -0
  74. package/dist/fileset/purge.d.ts +12 -0
  75. package/dist/fileset/purge.d.ts.map +1 -0
  76. package/dist/fileset/purge.js +95 -0
  77. package/dist/fileset/purge.js.map +1 -0
  78. package/dist/fileset/test-utils.d.ts +12 -0
  79. package/dist/fileset/test-utils.d.ts.map +1 -0
  80. package/dist/fileset/test-utils.js +65 -0
  81. package/dist/fileset/test-utils.js.map +1 -0
  82. package/dist/index.d.ts +10 -8
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +11 -19
  85. package/dist/index.js.map +1 -1
  86. package/dist/main.js +9 -17
  87. package/dist/main.js.map +1 -1
  88. package/dist/npmdata-0.0.1.tgz +0 -0
  89. package/dist/package/action-check.d.ts +20 -0
  90. package/dist/package/action-check.d.ts.map +1 -0
  91. package/dist/package/action-check.js +61 -0
  92. package/dist/package/action-check.js.map +1 -0
  93. package/dist/package/action-extract.d.ts +21 -0
  94. package/dist/package/action-extract.d.ts.map +1 -0
  95. package/dist/package/action-extract.js +186 -0
  96. package/dist/package/action-extract.js.map +1 -0
  97. package/dist/package/action-init.d.ts +13 -0
  98. package/dist/package/action-init.d.ts.map +1 -0
  99. package/dist/package/action-init.js +77 -0
  100. package/dist/package/action-init.js.map +1 -0
  101. package/dist/package/action-list.d.ts +14 -0
  102. package/dist/package/action-list.d.ts.map +1 -0
  103. package/dist/package/action-list.js +46 -0
  104. package/dist/package/action-list.js.map +1 -0
  105. package/dist/package/action-purge.d.ts +21 -0
  106. package/dist/package/action-purge.d.ts.map +1 -0
  107. package/dist/package/action-purge.js +60 -0
  108. package/dist/package/action-purge.js.map +1 -0
  109. package/dist/package/config-merge.d.ts +18 -0
  110. package/dist/package/config-merge.d.ts.map +1 -0
  111. package/dist/package/config-merge.js +48 -0
  112. package/dist/package/config-merge.js.map +1 -0
  113. package/dist/package/config.d.ts +13 -0
  114. package/dist/package/config.d.ts.map +1 -0
  115. package/dist/package/config.js +29 -0
  116. package/dist/package/config.js.map +1 -0
  117. package/dist/package/content-replacements.d.ts +21 -0
  118. package/dist/package/content-replacements.d.ts.map +1 -0
  119. package/dist/package/content-replacements.js +96 -0
  120. package/dist/package/content-replacements.js.map +1 -0
  121. package/dist/package/index.d.ts +10 -0
  122. package/dist/package/index.d.ts.map +1 -0
  123. package/dist/package/index.js +16 -0
  124. package/dist/package/index.js.map +1 -0
  125. package/dist/package/symlinks.d.ts +17 -0
  126. package/dist/package/symlinks.d.ts.map +1 -0
  127. package/dist/package/symlinks.js +125 -0
  128. package/dist/package/symlinks.js.map +1 -0
  129. package/dist/types.d.ts +181 -277
  130. package/dist/types.d.ts.map +1 -1
  131. package/dist/types.js +0 -12
  132. package/dist/types.js.map +1 -1
  133. package/dist/utils.d.ts +25 -55
  134. package/dist/utils.d.ts.map +1 -1
  135. package/dist/utils.js +82 -181
  136. package/dist/utils.js.map +1 -1
  137. package/package.json +4 -2
  138. package/dist/cli.d.ts +0 -6
  139. package/dist/cli.d.ts.map +0 -1
  140. package/dist/cli.js +0 -570
  141. package/dist/cli.js.map +0 -1
  142. package/dist/consumer.d.ts +0 -74
  143. package/dist/consumer.d.ts.map +0 -1
  144. package/dist/consumer.js +0 -820
  145. package/dist/consumer.js.map +0 -1
  146. package/dist/publisher.d.ts +0 -38
  147. package/dist/publisher.d.ts.map +0 -1
  148. package/dist/publisher.js +0 -164
  149. package/dist/publisher.js.map +0 -1
  150. package/dist/runner.d.ts +0 -117
  151. package/dist/runner.d.ts.map +0 -1
  152. package/dist/runner.js +0 -812
  153. 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"}