npmdata 0.16.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +119 -146
  2. package/dist/cli/actions/check.d.ts.map +1 -1
  3. package/dist/cli/actions/check.js +3 -4
  4. package/dist/cli/actions/check.js.map +1 -1
  5. package/dist/cli/actions/extract.d.ts.map +1 -1
  6. package/dist/cli/actions/extract.js +2 -3
  7. package/dist/cli/actions/extract.js.map +1 -1
  8. package/dist/cli/actions/init.js +1 -1
  9. package/dist/cli/actions/init.js.map +1 -1
  10. package/dist/cli/argv.d.ts +12 -8
  11. package/dist/cli/argv.d.ts.map +1 -1
  12. package/dist/cli/argv.js +39 -33
  13. package/dist/cli/argv.js.map +1 -1
  14. package/dist/cli/usage.js +3 -3
  15. package/dist/fileset/check.d.ts.map +1 -1
  16. package/dist/fileset/check.js +8 -4
  17. package/dist/fileset/check.js.map +1 -1
  18. package/dist/fileset/diff.d.ts.map +1 -1
  19. package/dist/fileset/diff.js +4 -7
  20. package/dist/fileset/diff.js.map +1 -1
  21. package/dist/fileset/execute.d.ts.map +1 -1
  22. package/dist/fileset/execute.js +6 -5
  23. package/dist/fileset/execute.js.map +1 -1
  24. package/dist/fileset/markers.d.ts +3 -3
  25. package/dist/fileset/markers.js +5 -5
  26. package/dist/fileset/purge.d.ts +7 -1
  27. package/dist/fileset/purge.d.ts.map +1 -1
  28. package/dist/fileset/purge.js +17 -16
  29. package/dist/fileset/purge.js.map +1 -1
  30. package/dist/npmdata-0.0.1.tgz +0 -0
  31. package/dist/package/action-check.d.ts +2 -2
  32. package/dist/package/action-check.d.ts.map +1 -1
  33. package/dist/package/action-check.js +58 -4
  34. package/dist/package/action-check.js.map +1 -1
  35. package/dist/package/action-extract.d.ts +1 -2
  36. package/dist/package/action-extract.d.ts.map +1 -1
  37. package/dist/package/action-extract.js +15 -6
  38. package/dist/package/action-extract.js.map +1 -1
  39. package/dist/package/action-purge.d.ts +7 -0
  40. package/dist/package/action-purge.d.ts.map +1 -1
  41. package/dist/package/action-purge.js +116 -19
  42. package/dist/package/action-purge.js.map +1 -1
  43. package/dist/types.d.ts +1 -1
  44. package/package.json +2 -1
package/README.md CHANGED
@@ -112,7 +112,7 @@ Config is resolved using [cosmiconfig](https://github.com/cosmiconfig/cosmiconfi
112
112
  | `.npmdatarc.yaml` / `.npmdatarc.yml` | YAML object with `"sets"` array |
113
113
  | `npmdata.config.js` | CommonJS module exporting object with `sets` array |
114
114
 
115
- All runner flags (`--dry-run`, `--silent`, `--verbose`, `--no-gitignore`, `--unmanaged`, `--presets`, `--output`) work as usual.
115
+ All runner flags (`--dry-run`, `--silent`, `--verbose`, `--gitignore=false`, `--managed=false`, `--presets`, `--output`) work as usual.
116
116
 
117
117
  **When to use:** When a consuming project wants to pin and automate a set of data extractions locally without publishing a separate data package. This is the lightest-weight approach — no extra package, no `init` step, just a config block and a single CLI call.
118
118
 
@@ -134,12 +134,6 @@ pnpm dlx npmdata init --files "docs/**" --packages shared-configs@^1.0.0
134
134
  # share multiple additional packages at once
135
135
  pnpm dlx npmdata init --files "docs/**" --packages "shared-configs@^1.0.0,base-templates@2.x"
136
136
 
137
- # skip .gitignore entries for managed files (gitignore is enabled by default)
138
- pnpm dlx npmdata init --files "docs/**,data/**" --no-gitignore
139
-
140
- # mark extracted files as unmanaged so consumers can edit them freely;
141
- # files won't be tracked, made read-only, or added to .gitignore
142
- pnpm dlx npmdata init --files "templates/**" --unmanaged
143
137
  ```
144
138
 
145
139
  `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:
@@ -171,11 +165,11 @@ npx npmdata extract --packages my-shared-assets --content-regex "env: production
171
165
  npx npmdata extract --packages my-shared-assets --output ./data --force
172
166
 
173
167
  # skip .gitignore entries for managed files (gitignore is enabled by default)
174
- npx npmdata extract --packages my-shared-assets --output ./data --no-gitignore
168
+ npx npmdata extract --packages my-shared-assets --output ./data --gitignore=false
175
169
 
176
170
  # write files without a .npmdata marker or .gitignore entry; files won't be read-only
177
171
  # and won't be tracked by npmdata; existing files are left unchanged
178
- npx npmdata extract --packages my-shared-assets --output ./data --unmanaged
172
+ npx npmdata extract --packages my-shared-assets --output ./data --managed=false
179
173
 
180
174
  # preview what would change without writing any files
181
175
  npx npmdata extract --packages my-shared-assets --output ./data --dry-run
@@ -232,20 +226,20 @@ When calling the bin script bundled in a data package, the following options are
232
226
  |---|---|
233
227
  | `--output, -o <dir>` | Base directory for resolving all `output.path` values (default: cwd). |
234
228
  | `--presets <preset1,preset2>` | Limit to entries whose `presets` overlap with the given list (comma-separated). |
235
- | `--no-gitignore` | Disable `.gitignore` management for every entry, overriding each entry's `gitignore` field. |
236
- | `--unmanaged` | Run every entry in unmanaged mode, overriding each entry's `unmanaged` field. Files are written without a `.npmdata` marker, without `.gitignore` updates, and without being made read-only. |
229
+ | `--gitignore [bool]` | Disable `.gitignore` management for every entry when set to `false`, overriding each entry's `gitignore` field. |
230
+ | `--managed [bool]` | Run every entry in unmanaged mode when set to `false`, overriding each entry's `unmanaged` field. Files are written without a `.npmdata` marker, without `.gitignore` updates, and without being made read-only. |
237
231
  | `--dry-run` | Simulate changes without writing or deleting any files. |
238
232
  | `--verbose, -v` | Print detailed progress information for each step. |
239
233
 
240
234
  ```sh
241
235
  # disable gitignore management across all entries
242
- npx my-shared-assets --no-gitignore
236
+ npx my-shared-assets --gitignore=false
243
237
 
244
238
  # write all files as unmanaged (editable, not tracked)
245
- npx my-shared-assets --unmanaged
239
+ npx my-shared-assets --managed=false
246
240
 
247
241
  # combine overrides
248
- npx my-shared-assets --no-gitignore --unmanaged --dry-run
242
+ npx my-shared-assets --gitignore=false --managed=false --dry-run
249
243
  ```
250
244
 
251
245
  ### npmdata entry options reference
@@ -264,7 +258,7 @@ Each entry in the `npmdata.sets` array in `package.json` supports the following
264
258
  | `output.gitignore` | `boolean` | `true` | Create/update a `.gitignore` file alongside each `.npmdata` marker file. Set to `false` to disable. |
265
259
  | `output.unmanaged` | `boolean` | `false` | Write files without a `.npmdata` marker, `.gitignore` update, or read-only flag. Existing files are skipped. |
266
260
  | `output.dryRun` | `boolean` | `false` | Simulate extraction without writing anything to disk. |
267
- | `upgrade` | `boolean` | `false` | Force a fresh install of the package even when a satisfying version is already installed. |
261
+ | `selector.upgrade` | `boolean` | `false` | Force a fresh install of the package even when a satisfying version is already installed. |
268
262
  | `silent` | `boolean` | `false` | Suppress per-file output, printing only the final result line. |
269
263
  | `presets` | `string[]` | none | Presets used to group and selectively run entries with `--presets`. |
270
264
  | `output.symlinks` | `SymlinkConfig[]` | none | Post-extract symlink operations (see below). |
@@ -297,7 +291,8 @@ Example with multiple options:
297
291
  {
298
292
  "package": "my-shared-assets@^2.0.0",
299
293
  "selector": {
300
- "files": ["docs/**", "configs/*.json"]
294
+ "files": ["docs/**", "configs/*.json"],
295
+ "upgrade": true
301
296
  },
302
297
  "output": {
303
298
  "path": "./data",
@@ -309,7 +304,6 @@ Example with multiple options:
309
304
  { "files": "docs/**\/*.md", "match": "<!-- version: .* -->", "replace": "<!-- version: 2.0.0 -->" }
310
305
  ]
311
306
  },
312
- "upgrade": true,
313
307
  "presets": ["prod"]
314
308
  }
315
309
  ]
@@ -318,9 +312,11 @@ Example with multiple options:
318
312
 
319
313
  ### 3. Check files are in sync
320
314
 
315
+ Verifies that every file in the output directory matches what is currently in the published package. When the target package itself declares `npmdata.sets`, check recurses into those transitive dependencies — reporting drift at every level of the hierarchy without downloading anything new beyond what is already installed. Use `selector.presets` on an entry to restrict which of the target's sets are checked.
316
+
321
317
  ```sh
322
318
  npx npmdata check --packages my-shared-assets --output ./data
323
- # exit 0 = in sync, exit 2 = differences found
319
+ # exit 0 = in sync, exit 1 = drift or error
324
320
 
325
321
  # check multiple packages
326
322
  npx npmdata check --packages "my-shared-assets,another-pkg" --output ./data
@@ -355,7 +351,7 @@ another-pkg@1.0.0
355
351
 
356
352
  ### 5. Purge managed files
357
353
 
358
- 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.
354
+ 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. When the target package itself declares `npmdata.sets`, purge recurses into those transitive dependencies and removes their managed files too, mirroring what extract originally created.
359
355
 
360
356
  ```sh
361
357
  # remove all files managed by a package
@@ -370,6 +366,65 @@ npx npmdata purge --packages my-shared-assets --output ./data --dry-run
370
366
 
371
367
  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.
372
368
 
369
+ ## Hierarchical package resolution
370
+
371
+ `extract`, `check`, and `purge` are all hierarchy-aware: when a target package carries its own `npmdata.sets` block in its `package.json`, the command automatically recurses into those transitive dependencies.
372
+
373
+ This lets you build layered data package chains:
374
+
375
+ ```
376
+ consumer project
377
+ └─ my-org-configs (npm package with npmdata.sets)
378
+ ├─ base-datasets (another npm package with its own files)
379
+ └─ org-templates (another npm package with its own files)
380
+ └─ raw-assets (leaf package)
381
+ ```
382
+
383
+ Running `npx npmdata extract --packages my-org-configs --output ./data` will extract files from every package in the chain, not just `my-org-configs` itself.
384
+
385
+ ### Output path resolution
386
+
387
+ Each level's `output.path` is resolved relative to the caller's own `output.path`. A package at depth 1 with `output.path: "./configs"` and a transitive dependency with `output.path: "./shared"` will land at `./configs/shared`.
388
+
389
+ ### Caller overrides (extract only)
390
+
391
+ When `extract` recurses, the caller's `output` flags are inherited by every transitive dependency, with caller-defined values always winning:
392
+
393
+ | Caller sets | Effect on transitive entries |
394
+ |---|---|
395
+ | `force: true` | Transitive entries also overwrite unmanaged / foreign files |
396
+ | `dryRun: true` | No files are written anywhere in the hierarchy |
397
+ | `keepExisting: true` | Existing files are skipped at every level |
398
+ | `gitignore: false` | No `.gitignore` entries are created anywhere |
399
+ | `unmanaged: true` | All transitive files are written without a marker or read-only flag |
400
+ | `symlinks` / `contentReplacements` | Appended to each transitive entry's own lists |
401
+
402
+ Settings that are undefined on the caller are left as-is so the transitive package's own defaults apply.
403
+
404
+ ### Filtering transitive sets with `selector.presets`
405
+
406
+ Set `selector.presets` on an entry to control which sets inside the target package are recursed into. Only sets whose `presets` tag overlaps with the filter are processed; sets with no `presets` are skipped when a filter is active.
407
+
408
+ ```json
409
+ {
410
+ "npmdata": {
411
+ "sets": [
412
+ {
413
+ "package": "my-org-configs@^2.0.0",
414
+ "output": { "path": "./data" },
415
+ "selector": { "presets": ["prod"] }
416
+ }
417
+ ]
418
+ }
419
+ }
420
+ ```
421
+
422
+ The same filtering is applied during `check` and `purge` so they stay in sync with what `extract` originally wrote.
423
+
424
+ ### Circular dependency detection
425
+
426
+ If a package chain references itself (directly or transitively), the command stops immediately with an error rather than looping forever. Sibling packages — entries already being processed at the same level — are also skipped to prevent double-processing.
427
+
373
428
  ## CLI reference
374
429
 
375
430
  ```
@@ -388,18 +443,13 @@ Global options:
388
443
  --version Show version
389
444
 
390
445
  Init options:
391
- --files <patterns> Comma-separated glob patterns of files to publish (required)
446
+ --files <patterns> Comma-separated glob patterns of files to publish
392
447
  e.g. "docs/**,data/**,configs/*.json"
393
448
  --packages <specs> Comma-separated additional package specs to bundle as data sources.
394
449
  Each spec is "name" or "name@version", e.g.
395
450
  "shared-configs@^1.0.0,base-templates@2.x".
396
- Listed under `npmdata.additionalPackages` in package.json and
397
- added to `dependencies` so consumers pull data from all of them.
398
- --no-gitignore Skip adding .gitignore entries for managed files
399
- (gitignore is enabled by default)
400
- --unmanaged Mark all generated npmdata entries as unmanaged: extracted files
401
- are written without a .npmdata marker, without updating .gitignore,
402
- and without being made read-only. Existing files are skipped.
451
+ Added to `dependencies` so consumers pull data from all of them.
452
+ --output, -o <dir> Directory to scaffold into (default: current directory)
403
453
 
404
454
  Extract options:
405
455
  --packages <specs> Comma-separated package specs.
@@ -412,10 +462,10 @@ Extract options:
412
462
  --force Overwrite existing unmanaged files or files owned by a different package
413
463
  --keep-existing Skip files that already exist; create them when absent. Cannot be
414
464
  combined with --force
415
- --no-gitignore Skip creating/updating .gitignore (gitignore is enabled by default)
416
- --unmanaged Write files without a .npmdata marker, .gitignore update, or read-only
417
- flag. Existing files are skipped. Files can be freely edited afterwards
418
- and are not tracked by npmdata.
465
+ --gitignore [bool] Disable .gitignore management when set to false (enabled by default)
466
+ --managed [bool] Set to false to write files without a .npmdata marker, .gitignore
467
+ update, or read-only flag. Existing files are skipped. Files can be
468
+ freely edited afterwards and are not tracked by npmdata.
419
469
  --files <patterns> Comma-separated glob patterns to filter files
420
470
  --content-regex <regex> Regex to filter files by content
421
471
  --dry-run Preview changes without writing any files
@@ -444,110 +494,48 @@ List options:
444
494
  `npmdata` also exports a programmatic API:
445
495
 
446
496
  ```typescript
447
- import { extract, check, list, purge, initPublisher, parsePackageSpec, isBinaryFile } from 'npmdata';
448
- import type { ConsumerConfig, ConsumerResult, CheckResult, PurgeConfig, ProgressEvent } from 'npmdata';
449
-
450
- // extract files from one package
451
- const result = await extract({
452
- packages: ['my-shared-assets@^2.0.0'],
453
- outputDir: './data',
454
- gitignore: true,
455
- });
456
- console.log(result.added, result.modified, result.deleted);
497
+ import { actionExtract, actionCheck, actionList, actionPurge } from 'npmdata';
498
+ import type { NpmdataExtractEntry, ProgressEvent } from 'npmdata';
457
499
 
458
- // dry-run: preview changes without writing files
459
- const preview = await extract({
460
- packages: ['my-shared-assets@^2.0.0'],
461
- outputDir: './data',
462
- dryRun: true,
463
- });
464
- console.log('Would add', preview.added, 'files');
500
+ const entries: NpmdataExtractEntry[] = [
501
+ { package: 'my-shared-assets@^2.0.0', output: { path: './data' } },
502
+ ];
503
+ const cwd = process.cwd();
465
504
 
466
- // force-reinstall the package even if already present
467
- await extract({
468
- packages: ['my-shared-assets@latest'],
469
- outputDir: './data',
470
- upgrade: true,
471
- });
505
+ // extract files
506
+ const result = await actionExtract({ entries, cwd });
507
+ console.log(result.added, result.modified, result.deleted);
472
508
 
473
- // extract without npmdata tracking: files are writable, no .npmdata marker is written,
474
- // no .gitignore entry is created. Existing files are left untouched (skipped).
475
- await extract({
476
- packages: ['shared-templates'],
477
- outputDir: './templates',
478
- unmanaged: true,
479
- });
509
+ // dry-run: preview changes without writing files
510
+ const dryResult = await actionExtract({ entries: entries.map(e => ({ ...e, output: { ...e.output, dryRun: true } })), cwd });
511
+ console.log('Would add', dryResult.added, 'files');
480
512
 
481
513
  // track progress file-by-file
482
- await extract({
483
- packages: ['my-shared-assets@^2.0.0'],
484
- outputDir: './data',
514
+ await actionExtract({
515
+ entries,
516
+ cwd,
485
517
  onProgress: (event: ProgressEvent) => {
486
- if (event.type === 'file-added') console.log('A', event.file);
518
+ if (event.type === 'file-added') console.log('A', event.file);
487
519
  if (event.type === 'file-modified') console.log('M', event.file);
488
- if (event.type === 'file-deleted') console.log('D', event.file);
520
+ if (event.type === 'file-deleted') console.log('D', event.file);
489
521
  },
490
522
  });
491
523
 
492
- // extract files from multiple packages into the same output directory
493
- const multiResult = await extract({
494
- packages: ['my-shared-assets@^2.0.0', 'another-pkg@1.x'],
495
- outputDir: './data',
496
- });
497
-
498
- // check sync status — per-package breakdown
499
- const status = await check({
500
- packages: ['my-shared-assets'],
501
- outputDir: './data',
502
- });
503
- if (!status.ok) {
504
- console.log('Missing:', status.differences.missing);
505
- console.log('Modified:', status.differences.modified);
506
- console.log('Extra:', status.differences.extra);
507
- for (const pkg of status.sourcePackages) {
508
- if (!pkg.ok) {
509
- console.log(pkg.name, 'missing:', pkg.differences.missing);
510
- console.log(pkg.name, 'modified:', pkg.differences.modified);
511
- console.log(pkg.name, 'extra:', pkg.differences.extra);
512
- }
513
- }
524
+ // check sync status
525
+ const summary = await actionCheck({ entries, cwd });
526
+ const hasDrift = summary.missing.length > 0 || summary.modified.length > 0 || summary.extra.length > 0;
527
+ if (hasDrift) {
528
+ console.log('Missing:', summary.missing);
529
+ console.log('Modified:', summary.modified);
530
+ console.log('Extra:', summary.extra);
514
531
  }
515
532
 
516
- // remove all files previously extracted by a package (no network required)
517
- await purge({
518
- packages: ['my-shared-assets'],
519
- outputDir: './data',
520
- });
521
-
522
- // dry-run: preview what would be deleted without removing anything
523
- const purgePreview = await purge({
524
- packages: ['my-shared-assets'],
525
- outputDir: './data',
526
- dryRun: true,
527
- });
528
- console.log('Would delete', purgePreview.deleted, 'files');
529
-
530
- // track progress during purge
531
- await purge({
532
- packages: ['my-shared-assets'],
533
- outputDir: './data',
534
- onProgress: (event: ProgressEvent) => {
535
- if (event.type === 'file-deleted') console.log('D', event.file);
536
- },
537
- });
533
+ // remove all managed files (no network required)
534
+ await actionPurge({ entries, config: null, cwd });
538
535
 
539
536
  // list all files managed by npmdata in an output directory
540
- const managed = list('./data');
541
- // managed is Array<{ packageName: string; packageVersion: string; files: string[] }>
542
-
543
- // initialize a publisher package
544
- await initPublisher(['docs', 'data'], { workingDir: './my-package' });
545
-
546
- // utility: parse a package spec string
547
- const { name, version } = parsePackageSpec('my-pkg@^1.0.0');
548
-
549
- // utility: detect whether a file is binary
550
- const binary = isBinaryFile('/path/to/file.bin');
537
+ const managed = await actionList({ entries, config: null, cwd });
538
+ // ManagedFileMetadata[]: Array<{ path: string; packageName: string; packageVersion: string }>
551
539
  ```
552
540
 
553
541
  ### `ProgressEvent` type
@@ -580,39 +568,24 @@ Multiple packages can coexist in the same output directory; each owns its own fi
580
568
 
581
569
  ### Module overview
582
570
 
583
- | Module | Purpose |
571
+ | Folder / file | Purpose |
584
572
  |---|---|
585
- | `publisher.ts` | `initPublisher()` scaffolds a publishable package (updates `package.json`, generates bin script) |
586
- | `consumer.ts` | `extract()` and `check()` installs a package from the registry, copies files, manages marker files |
587
- | `runner.ts` | Entry point injected into the generated bin script; delegates to the CLI |
588
- | `cli.ts` / `main.ts` | CLI parsing and top-level entry point |
589
- | `utils.ts` | File I/O helpers: glob matching via `minimatch`, SHA-256 hashing, CSV marker read/write, package manager detection |
590
- | `types.ts` | Shared TypeScript types and constants (e.g. `DEFAULT_FILENAME_PATTERNS`) |
591
-
592
- ### Publish side (`publisher.ts`)
593
-
594
- `initPublisher()` modifies the target `package.json` to include `files`, `bin`, and `dependencies` fields, then writes a thin `bin/npmdata.js` that calls `runner.run(__dirname)`. The generated script is kept minimal on purpose — all logic lives in this library.
595
-
596
- ### Consumer side (`consumer.ts`)
597
-
598
- `extract()` flow:
599
- 1. Detects the package manager (`pnpm` / `yarn` / `npm`) via lock-file presence.
600
- 2. For each entry in `config.packages`, parses the spec (`name` or `name@version`) and runs `<pm> add <package>@<version>` to resolve the package.
601
- 3. Iterates matching files (glob + optional content regex) from each installed package.
602
- 4. Copies files into `outputDir`, tracking state in a `.npmdata` pipe-delimited marker file per output directory.
603
- 5. Optionally writes a `.gitignore` section around the managed files.
604
-
605
- `check()` performs the same resolution for each package in `config.packages` but compares SHA-256 hashes without writing any files.
573
+ | `src/cli/` | CLI entry-points: argument parsing, help text, config loading, per-command handlers |
574
+ | `src/package/` | Package-level orchestration: config resolution, fileset iteration, purge and init coordination |
575
+ | `src/fileset/` | File-level extraction, diff, check, and sync logic |
576
+ | `src/types.ts` | Shared TypeScript types |
577
+ | `src/utils.ts` | Low-level utilities: package install, glob/hash helpers, package manager detection |
578
+ | `src/index.ts` | Public API surface |
606
579
 
607
580
  ### Marker file (`.npmdata`)
608
581
 
609
- Each output directory that contains managed files gets a `.npmdata` pipe-delimited file. Columns: `path`, `packageName`, `packageVersion`, `force`. This is the source of truth for ownership tracking and clean removal.
582
+ Each output directory that contains managed files gets a `.npmdata` CSV file. Columns: `path`, `packageName`, `packageVersion` — one row per file, no header. This is the source of truth for ownership tracking and clean removal.
610
583
 
611
584
  ### Key design decisions
612
585
 
613
- - No runtime dependencies beyond `semver` and `minimatch` to keep the consumer install footprint small.
614
586
  - File identity is tracked by path + hash, not by timestamp, to be deterministic across machines.
615
- - The bin script generated by `initPublisher` contains no logic; all behaviour is versioned inside this library.
587
+ - Extract uses a two-phase diff + execute model: compute all changes first, then apply them, enabling conflict detection and rollback before any file is written.
588
+ - The bin shim generated by `npmdata init` contains no logic; all behaviour is versioned inside this library.
616
589
 
617
590
  ### Dev workflow
618
591
 
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/actions/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,aAAa,GAAG,IAAI,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAuCf"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/actions/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,aAAa,GAAG,IAAI,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAsCf"}
@@ -23,11 +23,10 @@ async function runCheck(config, argv, cwd) {
23
23
  }
24
24
  const summary = await (0, action_check_1.actionCheck)({
25
25
  entries,
26
- config,
27
26
  cwd,
28
27
  presets: parsed.presets ?? [],
29
28
  verbose: parsed.verbose,
30
- skipUnmanaged: parsed.unmanaged,
29
+ skipUnmanaged: parsed.managed === false,
31
30
  });
32
31
  const hasDrift = summary.missing.length > 0 || summary.modified.length > 0 || summary.extra.length > 0;
33
32
  if (hasDrift) {
@@ -37,10 +36,10 @@ async function runCheck(config, argv, cwd) {
37
36
  console.log(`modified: ${f}`);
38
37
  for (const f of summary.extra)
39
38
  console.log(`extra: ${f}`);
40
- process.exitCode = 1;
39
+ throw new Error('Check failed: some managed files are out of sync');
41
40
  }
42
41
  else {
43
- console.log('All managed files are in sync.');
42
+ console.log('All managed files are in sync');
44
43
  }
45
44
  }
46
45
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/actions/check.ts"],"names":[],"mappings":";;AASA,4BA2CC;AAlDD,kCAA8E;AAC9E,oCAAsC;AACtC,6DAAyD;AAEzD;;GAEG;AACI,KAAK,UAAU,QAAQ,CAC5B,MAA4B,EAC5B,IAAc,EACd,GAAW;IAEX,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC;IAE/B,kDAAkD;IAClD,IAAI,OAAO,GAAG,IAAA,2BAAoB,EAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,IAAA,yBAAkB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAW,EAAC;QAChC,OAAO;QACP,MAAM;QACN,GAAG;QACH,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,SAAS;KAChC,CAAC,CAAC;IAEH,MAAM,QAAQ,GACZ,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAExF,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC9D,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/actions/check.ts"],"names":[],"mappings":";;AASA,4BA0CC;AAjDD,kCAA8E;AAC9E,oCAAsC;AACtC,6DAAyD;AAEzD;;GAEG;AACI,KAAK,UAAU,QAAQ,CAC5B,MAA4B,EAC5B,IAAc,EACd,GAAW;IAEX,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC;IAE/B,kDAAkD;IAClD,IAAI,OAAO,GAAG,IAAA,2BAAoB,EAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,IAAA,yBAAkB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAW,EAAC;QAChC,OAAO;QACP,GAAG;QACH,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,OAAO,KAAK,KAAK;KACxC,CAAC,CAAC;IAEH,MAAM,QAAQ,GACZ,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAExF,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC9D,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/cli/actions/extract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AAM3D;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,aAAa,GAAG,IAAI,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CA6Df"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/cli/actions/extract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AAM3D;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,aAAa,GAAG,IAAI,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CA4Df"}
@@ -16,13 +16,13 @@ async function runExtract(config, argv, cwd) {
16
16
  return;
17
17
  }
18
18
  const parsed = (0, argv_1.parseArgv)(argv);
19
- // Build entries: --packages overrides config sets
19
+ // Entries built from argv (when --packages is present)
20
20
  let entries = (0, argv_1.buildEntriesFromArgv)(parsed);
21
21
  if (!entries) {
22
22
  if (!config || config.sets.length === 0) {
23
23
  throw new Error('No packages specified during extract. Use --packages or a config file with sets.');
24
24
  }
25
- // Config-sourced entries need CLI flag overrides applied
25
+ // Entries built from config file. Then CLI flags overrides some config values (e.g. --dry-run, --verbose)
26
26
  entries = (0, argv_1.applyArgvOverrides)(config.sets, parsed);
27
27
  }
28
28
  // Apply preset filter
@@ -34,7 +34,6 @@ async function runExtract(config, argv, cwd) {
34
34
  }
35
35
  const result = await (0, action_extract_1.actionExtract)({
36
36
  entries: filtered,
37
- config,
38
37
  cwd,
39
38
  verbose: parsed.verbose,
40
39
  onProgress: (event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/cli/actions/extract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/cli/actions/extract.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ async function runInit(config, argv, cwd) {
24
24
  files,
25
25
  packages: packages?.map((p) => (p.version ? `${p.name}@${p.version}` : p.name)),
26
26
  };
27
- await (0, action_init_1.actionInit)(outputDir, verbose, initConfig);
27
+ await (0, action_init_1.actionInit)(outputDir, verbose ?? false, initConfig);
28
28
  console.log('Init complete. Scaffolded package.json and bin/npmdata.js.');
29
29
  }
30
30
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/actions/init.ts"],"names":[],"mappings":";;;;;AAWA,0BAqBC;AAhCD,+BAA+B;AAC/B,0DAA6B;AAG7B,kCAAoC;AACpC,oCAAsC;AACtC,2DAAuD;AAEvD;;GAEG;AACI,KAAK,UAAU,OAAO,CAC3B,MAA4B,EAC5B,IAAc,EACd,GAAW;IAEX,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;QACnB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5C,MAAM,UAAU,GAAG;QACjB,KAAK;QACL,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAChF,CAAC;IAEF,MAAM,IAAA,wBAAU,EAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/actions/init.ts"],"names":[],"mappings":";;;;;AAWA,0BAqBC;AAhCD,+BAA+B;AAC/B,0DAA6B;AAG7B,kCAAoC;AACpC,oCAAsC;AACtC,2DAAuD;AAEvD;;GAEG;AACI,KAAK,UAAU,OAAO,CAC3B,MAA4B,EAC5B,IAAc,EACd,GAAW;IAEX,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;QACnB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5C,MAAM,UAAU,GAAG;QACjB,KAAK;QACL,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAChF,CAAC;IAEF,MAAM,IAAA,wBAAU,EAAC,SAAS,EAAE,OAAO,IAAI,KAAK,EAAE,UAAU,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;AAC5E,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { PackageConfig, NpmdataExtractEntry } from '../types';
2
2
  /**
3
3
  * Parsed CLI flags for all commands.
4
+ * All flags are undefined when not supplied on the command line;
5
+ * defaults are applied downstream in the library.
4
6
  */
5
7
  export type ParsedArgv = {
6
8
  packages?: PackageConfig[];
@@ -9,14 +11,16 @@ export type ParsedArgv = {
9
11
  contentRegexes?: string[];
10
12
  presets?: string[];
11
13
  configFile?: string;
12
- force: boolean;
13
- keepExisting: boolean;
14
- noGitignore: boolean;
15
- unmanaged: boolean;
16
- dryRun: boolean;
17
- upgrade: boolean;
18
- silent: boolean;
19
- verbose: boolean;
14
+ force?: boolean;
15
+ keepExisting?: boolean;
16
+ /** --gitignore / --gitignore=true|false */
17
+ gitignore?: boolean;
18
+ /** --managed / --managed=true|false (false ≡ unmanaged mode) */
19
+ managed?: boolean;
20
+ dryRun?: boolean;
21
+ upgrade?: boolean;
22
+ silent?: boolean;
23
+ verbose?: boolean;
20
24
  };
21
25
  /**
22
26
  * Parse all supported CLI flags from an argv array.
@@ -1 +1 @@
1
- {"version":3,"file":"argv.d.ts","sourceRoot":"","sources":["../../src/cli/argv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAgC,MAAM,UAAU,CAAC;AAG5F;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAkDpD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,EAAE,GAAG,IAAI,CAgCrF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,EAAE,UAAU,GACjB,mBAAmB,EAAE,CA4BvB"}
1
+ {"version":3,"file":"argv.d.ts","sourceRoot":"","sources":["../../src/cli/argv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAgC,MAAM,UAAU,CAAC;AAG5F;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAyDpD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,EAAE,GAAG,IAAI,CAiCrF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,EAAE,UAAU,GACjB,mBAAmB,EAAE,CA4BvB"}