npmdata 0.2.2 → 0.5.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 CHANGED
@@ -14,10 +14,24 @@ Publish folders as npm packages and extract them in any workspace. Use it to dis
14
14
  In the project whose folders you want to share:
15
15
 
16
16
  ```sh
17
- pnpm dlx npmdata init --folders "docs,data,configs"
17
+ # share specific folders by glob pattern (required)
18
+ pnpm dlx npmdata init --files "docs/**,data/**,configs/**"
19
+
20
+ # also bundle an additional package so consumers get data from both sources
21
+ pnpm dlx npmdata init --files "docs/**" --packages shared-configs@^1.0.0
22
+
23
+ # share multiple additional packages at once
24
+ pnpm dlx npmdata init --files "docs/**" --packages "shared-configs@^1.0.0,base-templates@2.x"
25
+
26
+ # skip .gitignore entries for managed files (gitignore is enabled by default)
27
+ pnpm dlx npmdata init --files "docs/**,data/**" --no-gitignore
28
+
29
+ # mark extracted files as unmanaged so consumers can edit them freely;
30
+ # files won't be tracked, made read-only, or added to .gitignore
31
+ pnpm dlx npmdata init --files "templates/**" --unmanaged
18
32
  ```
19
33
 
20
- This updates `package.json` with the right `files`, `bin`, and `dependencies` fields so those folders are included when the package is published. Then publish normally:
34
+ `init` updates `package.json` with the right `files`, `bin`, and `dependencies` fields so those folders are included when the package is published, and writes a thin `bin/npmdata.js` entry point. Then publish normally:
21
35
 
22
36
  ```sh
23
37
  npm publish
@@ -45,8 +59,12 @@ npx npmdata extract --packages my-shared-assets --content-regex "env: production
45
59
  # the new package takes ownership in the marker file
46
60
  npx npmdata extract --packages my-shared-assets --output ./data --force
47
61
 
48
- # also write .gitignore entries for managed files
49
- npx npmdata extract --packages my-shared-assets --output ./data --gitignore
62
+ # skip .gitignore entries for managed files (gitignore is enabled by default)
63
+ npx npmdata extract --packages my-shared-assets --output ./data --no-gitignore
64
+
65
+ # write files without a .npmdata marker or .gitignore entry; files won't be read-only
66
+ # and won't be tracked by npmdata; existing files are left unchanged
67
+ npx npmdata extract --packages my-shared-assets --output ./data --unmanaged
50
68
 
51
69
  # preview what would change without writing any files
52
70
  npx npmdata extract --packages my-shared-assets --output ./data --dry-run
@@ -70,6 +88,27 @@ npx my-shared-assets extract --output ./data
70
88
  npx my-shared-assets check --output ./data
71
89
  ```
72
90
 
91
+ When the data package defines multiple `npmdata` entries in its `package.json`, you can limit which entries are processed using the `--tags` option. Only entries whose `tags` list includes at least one of the requested tags will be extracted; entries with no tags are skipped when a tag filter is active.
92
+
93
+ ```sh
94
+ # run only entries tagged with "prod"
95
+ npx my-shared-assets --tags prod
96
+
97
+ # run entries tagged with either "prod" or "staging"
98
+ npx my-shared-assets --tags prod,staging
99
+ ```
100
+
101
+ To use tags, add a `tags` array to each `npmdata` entry in the data package's `package.json`:
102
+
103
+ ```json
104
+ {
105
+ "npmdata": [
106
+ { "package": "my-shared-assets", "outputDir": "./data", "tags": ["prod"] },
107
+ { "package": "my-dev-assets", "outputDir": "./dev-data", "tags": ["dev", "staging"] }
108
+ ]
109
+ }
110
+ ```
111
+
73
112
  Check the /examples folder to see this in action
74
113
 
75
114
  ### 3. Check files are in sync
@@ -109,24 +148,53 @@ another-pkg@1.0.0
109
148
  data/other-file.txt
110
149
  ```
111
150
 
151
+ ### 5. Purge managed files
152
+
153
+ Remove all files previously extracted by one or more packages without touching any other files in the output directory. No network access or package installation is required — only the local `.npmdata` marker state is used.
154
+
155
+ ```sh
156
+ # remove all files managed by a package
157
+ npx npmdata purge --packages my-shared-assets --output ./data
158
+
159
+ # purge multiple packages at once
160
+ npx npmdata purge --packages "my-shared-assets,another-pkg" --output ./data
161
+
162
+ # preview what would be deleted without removing anything
163
+ npx npmdata purge --packages my-shared-assets --output ./data --dry-run
164
+ ```
165
+
166
+ After a purge, the corresponding entries are removed from the `.npmdata` marker file and any empty directories are cleaned up. `.gitignore` sections written by `extract` are also removed.
167
+
112
168
  ## CLI reference
113
169
 
114
170
  ```
115
171
  Usage:
116
- npx npmdata [init|extract|check|list] [options]
172
+ npx npmdata [init|extract|check|list|purge] [options]
117
173
 
118
174
  Commands:
119
175
  init Set up publishing configuration in a package
120
176
  extract Extract files from a published package into a local directory
121
177
  check Verify local files are in sync with the published package
122
178
  list List all files managed by npmdata in an output directory
179
+ purge Remove all managed files previously extracted by given packages
123
180
 
124
181
  Global options:
125
182
  --help, -h Show help
126
183
  --version, -v Show version
127
184
 
128
185
  Init options:
129
- --folders <list> Comma-separated folders to publish (required)
186
+ --files <patterns> Comma-separated glob patterns of files to publish (required)
187
+ e.g. "docs/**,data/**,configs/*.json"
188
+ --packages <specs> Comma-separated additional package specs to bundle as data sources.
189
+ Each spec is "name" or "name@version", e.g.
190
+ "shared-configs@^1.0.0,base-templates@2.x".
191
+ Listed under `npmdata.additionalPackages` in package.json and
192
+ added to `dependencies` so consumers pull data from all of them.
193
+ --no-gitignore Skip adding .gitignore entries for managed files
194
+ (gitignore is enabled by default)
195
+ --unmanaged Mark all generated npmdata entries as unmanaged: extracted files
196
+ are written without a .npmdata marker, without updating .gitignore,
197
+ and without being made read-only. Existing files are skipped.
130
198
 
131
199
  Extract options:
132
200
  --packages <specs> Comma-separated package specs (required).
@@ -134,7 +202,10 @@ Extract options:
134
202
  "my-pkg@^1.0.0,other-pkg@2.x"
135
203
  --output, -o <dir> Output directory (default: current directory)
136
204
  --force Overwrite existing unmanaged files or files owned by a different package
137
- --gitignore Create/update .gitignore for managed files
205
+ --no-gitignore Skip creating/updating .gitignore (gitignore is enabled by default)
206
+ --unmanaged Write files without a .npmdata marker, .gitignore update, or read-only
207
+ flag. Existing files are skipped. Files can be freely edited afterwards
208
+ and are not tracked by npmdata.
138
209
  --files <patterns> Comma-separated glob patterns to filter files
139
210
  --content-regex <regex> Regex to filter files by content
140
211
  --dry-run Preview changes without writing any files
@@ -144,6 +215,12 @@ Check options:
144
215
  --packages <specs> Same format as extract (required)
145
216
  --output, -o <dir> Output directory to check (default: current directory)
146
217
 
218
+ Purge options:
219
+ --packages <specs> Comma-separated package names whose managed files should be removed
220
+ --output, -o <dir> Output directory to purge from (default: current directory)
221
+ --dry-run Simulate purge without removing any files
222
+ --silent Suppress per-file output
223
+
147
224
  List options:
148
225
  --output, -o <dir> Output directory to inspect (default: current directory)
149
226
  ```
@@ -153,8 +230,8 @@ List options:
153
230
  `npmdata` also exports a programmatic API:
154
231
 
155
232
  ```typescript
156
- import { extract, check, list, initPublisher, parsePackageSpec, isBinaryFile } from 'npmdata';
157
- import type { ConsumerConfig, ConsumerResult, CheckResult, ProgressEvent } from 'npmdata';
233
+ import { extract, check, list, purge, initPublisher, parsePackageSpec, isBinaryFile } from 'npmdata';
234
+ import type { ConsumerConfig, ConsumerResult, CheckResult, PurgeConfig, ProgressEvent } from 'npmdata';
158
235
 
159
236
  // extract files from one package
160
237
  const result = await extract({
@@ -179,6 +256,14 @@ await extract({
179
256
  upgrade: true,
180
257
  });
181
258
 
259
+ // extract without npmdata tracking: files are writable, no .npmdata marker is written,
260
+ // no .gitignore entry is created. Existing files are left untouched (skipped).
261
+ await extract({
262
+ packages: ['shared-templates'],
263
+ outputDir: './templates',
264
+ unmanaged: true,
265
+ });
266
+
182
267
  // track progress file-by-file
183
268
  await extract({
184
269
  packages: ['my-shared-assets@^2.0.0'],
@@ -212,6 +297,29 @@ if (!status.ok) {
212
297
  }
213
298
  }
214
299
 
300
+ // remove all files previously extracted by a package (no network required)
301
+ await purge({
302
+ packages: ['my-shared-assets'],
303
+ outputDir: './data',
304
+ });
305
+
306
+ // dry-run: preview what would be deleted without removing anything
307
+ const purgePreview = await purge({
308
+ packages: ['my-shared-assets'],
309
+ outputDir: './data',
310
+ dryRun: true,
311
+ });
312
+ console.log('Would delete', purgePreview.deleted, 'files');
313
+
314
+ // track progress during purge
315
+ await purge({
316
+ packages: ['my-shared-assets'],
317
+ outputDir: './data',
318
+ onProgress: (event: ProgressEvent) => {
319
+ if (event.type === 'file-deleted') console.log('D', event.file);
320
+ },
321
+ });
322
+
215
323
  // list all files managed by npmdata in an output directory
216
324
  const managed = await list('./data');
217
325
  // managed is Record<string, string[]> keyed by "package@version"
package/bin/npmdata.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ // DON'T EDIT THIS FILE MANUALLY - this script is generated by "npmdata init" command
4
+ require('npmdata/dist/runner.js').run(__dirname);
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAaA;;GAEG;AAEH,wBAAsB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwPhE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAaA;;GAEG;AAEH,wBAAsB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyVhE"}
package/dist/cli.js CHANGED
@@ -37,39 +37,53 @@ async function cli(processArgs) {
37
37
  // Handle init command
38
38
  if (command === 'init') {
39
39
  // eslint-disable-next-line functional/no-let
40
- let sourceFoldersFlag;
40
+ let sourceFilesFlag;
41
41
  // eslint-disable-next-line functional/no-let
42
42
  let additionalPackagesFlag;
43
- // Parse args for --folders and --packages flags
43
+ // eslint-disable-next-line functional/no-let
44
+ let initGitignore = true;
45
+ // eslint-disable-next-line functional/no-let
46
+ let initUnmanaged = false;
47
+ // Parse args for --files and --packages flags
44
48
  // eslint-disable-next-line functional/no-let
45
49
  for (let i = 1; i < args.length; i += 1) {
46
- if (args[i] === '--folders') {
50
+ if (args[i] === '--files') {
47
51
  // eslint-disable-next-line no-plusplus
48
- sourceFoldersFlag = args[++i];
52
+ sourceFilesFlag = args[++i];
49
53
  }
50
54
  else if (args[i] === '--packages') {
51
55
  // eslint-disable-next-line no-plusplus
52
56
  additionalPackagesFlag = args[++i];
53
57
  }
58
+ else if (args[i] === '--no-gitignore') {
59
+ initGitignore = false;
60
+ }
61
+ else if (args[i] === '--unmanaged') {
62
+ initUnmanaged = true;
63
+ }
54
64
  }
55
- // --folders is required
56
- if (!sourceFoldersFlag) {
57
- console.error('Error: --folders option is required for init command');
65
+ // --files is required
66
+ if (!sourceFilesFlag) {
67
+ console.error('Error: --files option is required for init command');
58
68
  printUsage();
59
69
  return 1;
60
70
  }
61
- const folders = sourceFoldersFlag.split(',').map((f) => f.trim());
71
+ const fileGlobs = sourceFilesFlag.split(',').map((f) => f.trim());
62
72
  const additionalPackages = additionalPackagesFlag
63
73
  ? additionalPackagesFlag.split(',').map((p) => p.trim())
64
74
  : [];
65
- const result = await (0, publisher_1.initPublisher)(folders, { additionalPackages });
75
+ const result = await (0, publisher_1.initPublisher)(fileGlobs, {
76
+ additionalPackages,
77
+ gitignore: initGitignore,
78
+ ...(initUnmanaged ? { unmanaged: true } : {}),
79
+ });
66
80
  if (!result.success) {
67
81
  console.error(`\nError: ${result.message}`);
68
82
  return 1;
69
83
  }
70
84
  console.log(`\n${result.message}`);
71
- if (result.publishedFolders) {
72
- console.log(`\nThe following folders will be published: ${result.publishedFolders.join(', ')}`);
85
+ if (result.publishedFiles) {
86
+ console.log(`\nThe following file patterns will be published: ${result.publishedFiles.join(', ')}`);
73
87
  }
74
88
  if (result.additionalPackages && result.additionalPackages.length > 0) {
75
89
  console.log(`\nAdditional data source packages: ${result.additionalPackages.join(', ')}`);
@@ -106,19 +120,86 @@ async function cli(processArgs) {
106
120
  }
107
121
  return 0;
108
122
  }
123
+ // Handle purge command
124
+ if (command === 'purge') {
125
+ let purgePackageSpecs;
126
+ let purgeOutDir = process.cwd();
127
+ let purgeOutputFlagProvided = false;
128
+ let purgeDryRun = false;
129
+ let purgeSilent = false;
130
+ for (let i = 1; i < args.length; i++) {
131
+ if (args[i] === '--packages') {
132
+ purgePackageSpecs = args[++i];
133
+ }
134
+ else if (args[i] === '--output' || args[i] === '-o') {
135
+ purgeOutDir = args[++i];
136
+ purgeOutputFlagProvided = true;
137
+ }
138
+ else if (args[i] === '--dry-run') {
139
+ purgeDryRun = true;
140
+ }
141
+ else if (args[i] === '--silent') {
142
+ purgeSilent = true;
143
+ }
144
+ else if (!args[i].startsWith('-')) {
145
+ purgeOutDir = args[i];
146
+ purgeOutputFlagProvided = true;
147
+ }
148
+ }
149
+ if (!purgePackageSpecs) {
150
+ console.error(`Error: --packages option is required for 'purge' command`);
151
+ printUsage();
152
+ return 1;
153
+ }
154
+ if (!purgeOutputFlagProvided && !purgeSilent) {
155
+ console.info(`No --output specified. Using current directory: ${purgeOutDir}`);
156
+ }
157
+ const purgePackages = purgePackageSpecs.split(',').map((s) => s.trim());
158
+ const purgeOnProgress = purgeSilent
159
+ ? // eslint-disable-next-line no-undefined
160
+ undefined
161
+ : (event) => {
162
+ switch (event.type) {
163
+ case 'package-start':
164
+ console.log(`\n>> Package ${event.packageName}`);
165
+ break;
166
+ case 'file-deleted':
167
+ console.log(`D\t${event.file}`);
168
+ break;
169
+ default:
170
+ break;
171
+ }
172
+ };
173
+ if (!purgeSilent) {
174
+ if (purgeDryRun)
175
+ console.info('Dry run: simulating purge (no files will be removed)...');
176
+ else
177
+ console.info('Purging managed files...');
178
+ }
179
+ const purgeResult = await (0, consumer_1.purge)({
180
+ packages: purgePackages,
181
+ outputDir: node_path_1.default.resolve(purgeOutDir),
182
+ dryRun: purgeDryRun,
183
+ onProgress: purgeOnProgress,
184
+ });
185
+ console.log(`\nPurge complete: ${purgeResult.deleted.length} deleted${purgeDryRun ? ' (dry run)' : ''}`);
186
+ return 0;
187
+ }
109
188
  // Consumer commands (extract, check)
110
189
  if (!['extract', 'check'].includes(command)) {
111
- console.error(`Error: unknown command '${command}'. Use 'init', 'extract', 'check', or 'list'`);
190
+ console.error(`Error: unknown command '${command}'. Use 'init', 'extract', 'check', 'purge', or 'list'`);
112
191
  printUsage();
113
192
  return 1;
114
193
  }
115
194
  // Parse options common to extract and check
116
195
  let packageSpecs;
117
196
  let force = false;
118
- let gitignore = false;
197
+ let keepExisting = false;
198
+ let gitignore = true;
119
199
  let dryRun = false;
120
200
  let upgrade = false;
121
201
  let silent = false;
202
+ let unmanaged = false;
122
203
  let filenamePatterns;
123
204
  let contentRegexes;
124
205
  let outDir = process.cwd();
@@ -130,11 +211,14 @@ async function cli(processArgs) {
130
211
  else if (args[i] === '--force') {
131
212
  force = true;
132
213
  }
214
+ else if (args[i] === '--keep-existing') {
215
+ keepExisting = true;
216
+ }
133
217
  else if (args[i] === '--silent') {
134
218
  silent = true;
135
219
  }
136
- else if (args[i] === '--gitignore') {
137
- gitignore = true;
220
+ else if (args[i] === '--no-gitignore') {
221
+ gitignore = false;
138
222
  }
139
223
  else if (args[i] === '--dry-run') {
140
224
  dryRun = true;
@@ -142,6 +226,9 @@ async function cli(processArgs) {
142
226
  else if (args[i] === '--upgrade') {
143
227
  upgrade = true;
144
228
  }
229
+ else if (args[i] === '--unmanaged') {
230
+ unmanaged = true;
231
+ }
145
232
  else if (args[i] === '--files') {
146
233
  filenamePatterns = args[++i];
147
234
  }
@@ -165,6 +252,10 @@ async function cli(processArgs) {
165
252
  if (!outputFlagProvided && !silent) {
166
253
  console.info(`No --output specified. Using current directory: ${outDir}`);
167
254
  }
255
+ if (force && keepExisting) {
256
+ console.error('Error: --force and --keep-existing cannot be used together');
257
+ return 1;
258
+ }
168
259
  const packages = packageSpecs.split(',').map((s) => s.trim());
169
260
  // Build onProgress handler that prints file-level events grouped by package
170
261
  const onProgress = silent
@@ -192,9 +283,11 @@ async function cli(processArgs) {
192
283
  packages,
193
284
  outputDir: node_path_1.default.resolve(outDir),
194
285
  force,
286
+ keepExisting,
195
287
  gitignore,
196
288
  dryRun,
197
289
  upgrade,
290
+ unmanaged,
198
291
  onProgress,
199
292
  filenamePatterns: filenamePatterns
200
293
  ? filenamePatterns.split(',')
@@ -250,12 +343,13 @@ function printUsage() {
250
343
  npmdata
251
344
 
252
345
  Usage:
253
- npx npmdata [init|extract|check|list] [options]
346
+ npx npmdata [init|extract|check|purge|list] [options]
254
347
 
255
348
  Commands:
256
349
  init Initialize publishing configuration
257
350
  extract Extract files from one or more published packages
258
351
  check Verify if local files are in sync with packages
352
+ purge Remove all managed files written by given packages
259
353
  list List all managed files in the output directory
260
354
 
261
355
  Global Options:
@@ -263,10 +357,12 @@ Global Options:
263
357
  --version, -v Show version
264
358
 
265
359
  Init Options:
266
- --folders <folders> Comma-separated list of source folders to publish (required)
360
+ --files <patterns> Comma-separated glob patterns of files to publish (required)
361
+ e.g. "docs/**,data/**,configs/*.json"
267
362
  --packages <specs> Comma-separated additional package specs to use as data sources.
268
363
  Each spec is "name" or "name@version"
269
364
  e.g. "shared-data@^1.0.0,other-pkg@2.x"
365
+ --unmanaged Mark all npmdata entries as unmanaged (see Extract options)
270
366
 
271
367
  Extract / Check Options:
272
368
  --packages <specs> Comma-separated package specs to extract from (required).
@@ -274,18 +370,29 @@ Extract / Check Options:
274
370
  e.g. "my-pkg@^1.2.3,other-pkg@2.x"
275
371
  --output, -o <dir> Output directory (default: current directory, with a warning)
276
372
  --force Allow overwriting existing unmanaged files
277
- --gitignore Create/update .gitignore to ignore managed files and .publisher
373
+ --keep-existing Skip files that already exist in the output directory;
374
+ create them when absent. Cannot be combined with --force
375
+ --no-gitignore Skip creating/updating .gitignore (gitignore is enabled by default)
376
+ --unmanaged Write files without a .npmdata marker, .gitignore update, or
377
+ read-only flag. Existing files are skipped. Files can be freely
378
+ edited afterwards and are not tracked by npmdata.
278
379
  --dry-run Simulate extraction without writing any files
279
380
  --upgrade Re-install packages even when a satisfying version is installed
280
381
  --silent Print only the final result line, suppressing package and file listing
281
382
  --files <pattern> Comma-separated shell glob patterns to filter files
282
383
  --content-regex <regex> Regex pattern to match file contents
283
384
 
385
+ Purge Options:
386
+ --packages <specs> Comma-separated package names whose managed files should be removed
387
+ --output, -o <dir> Output directory to purge from (default: current directory)
388
+ --dry-run Simulate purge without removing any files
389
+ --silent Suppress per-file output
390
+
284
391
  List Options:
285
392
  --output, -o <dir> Directory to inspect (default: current directory)
286
393
 
287
394
  Examples:
288
- npx npmdata init --folders "data,docs,config"
395
+ npx npmdata init --files "data/**,docs/**,configs/*.json"
289
396
  npx npmdata extract --packages mydataset --output ./data
290
397
  npx npmdata extract --packages mydataset@^2.0.0 --output ./data
291
398
  npx npmdata extract --packages "mydataset@^2.0.0,otherpkg@1.x" --output ./data
@@ -296,6 +403,8 @@ Examples:
296
403
  npx npmdata check --packages mydataset --output ./data
297
404
  npx npmdata check --packages "mydataset,otherpkg" --output ./data
298
405
  npx npmdata list --output ./data
406
+ npx npmdata purge --packages mydataset --output ./data
407
+ npx npmdata purge --packages "mydataset,otherpkg" --output ./data
299
408
  `);
300
409
  }
301
410
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ConsumerConfig, ConsumerResult, CheckResult } from './types';
1
+ import { ConsumerConfig, ConsumerResult, CheckResult, ProgressEvent } from './types';
2
2
  /**
3
3
  * Extract files from published packages to output directory.
4
4
  *
@@ -11,13 +11,43 @@ export declare function extract(config: ConsumerConfig): Promise<ConsumerResult>
11
11
  * Check if managed files are in sync with published packages.
12
12
  *
13
13
  * Performs a bidirectional comparison:
14
- * - Files in the .publisher marker that are missing from or modified in the output directory.
14
+ * - Files in the .npmdata marker that are missing from or modified in the output directory.
15
15
  * - Files present in the package (matching filters) that have not been extracted yet ("extra").
16
16
  *
17
17
  * If a version constraint is specified (e.g. "my-pkg@^1.0.0"), the installed version is
18
18
  * validated against it so stale installs are caught.
19
19
  */
20
20
  export declare function check(config: ConsumerConfig): Promise<CheckResult>;
21
+ /**
22
+ * Configuration for a purge operation.
23
+ */
24
+ export type PurgeConfig = {
25
+ /**
26
+ * Package names whose managed files should be removed.
27
+ * Each entry is a bare package name ("my-pkg") or a name with a semver constraint
28
+ * ("my-pkg@^1.2.3") – the version part is ignored; only the name is used for lookup.
29
+ */
30
+ packages: string[];
31
+ /**
32
+ * Output directory from which managed files will be removed.
33
+ */
34
+ outputDir: string;
35
+ /**
36
+ * When true, simulate the purge without writing anything to disk.
37
+ */
38
+ dryRun?: boolean;
39
+ /**
40
+ * Optional callback called for each file event during purge.
41
+ */
42
+ onProgress?: (event: ProgressEvent) => void;
43
+ };
44
+ /**
45
+ * Remove all managed files previously extracted by the given packages from outputDir.
46
+ * Reads .npmdata marker files to discover which files are owned by each package,
47
+ * deletes them from disk, updates the marker files, and cleans up empty directories.
48
+ * No package installation is required – only the local marker state is used.
49
+ */
50
+ export declare function purge(config: PurgeConfig): Promise<ConsumerResult>;
21
51
  /**
22
52
  * List all managed files currently extracted in outputDir, grouped by package.
23
53
  */
@@ -1 +1 @@
1
- {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EAGZ,MAAM,SAAS,CAAC;AA8gBjB;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAwD7E;AAED;;;;;;;;;GASG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAwFxE;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC,CAwBD"}
1
+ {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EAEX,aAAa,EAGd,MAAM,SAAS,CAAC;AA+hBjB;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CA8D7E;AA2CD;;;;;;;;;GASG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAqGxE;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CA8ExE;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC,CAwBD"}