npmdata 0.10.3 → 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 +133 -58
  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 -7
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +12 -17
  85. package/dist/index.js.map +1 -1
  86. package/dist/main.js +9 -16
  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 +184 -270
  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 +5 -2
  138. package/dist/cli.d.ts +0 -6
  139. package/dist/cli.d.ts.map +0 -1
  140. package/dist/cli.js +0 -514
  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 -102
  151. package/dist/runner.d.ts.map +0 -1
  152. package/dist/runner.js +0 -748
  153. package/dist/runner.js.map +0 -1
@@ -0,0 +1,22 @@
1
+ import { ManagedFileMetadata } from '../types';
2
+ /**
3
+ * Read all managed file entries from a .npmdata marker file.
4
+ * CSV format: path,packageName,packageVersion — one row per file, no header.
5
+ * Compatible with v1 marker files.
6
+ */
7
+ export declare function readMarker(markerFilePath: string): Promise<ManagedFileMetadata[]>;
8
+ /**
9
+ * Write managed file entries to a .npmdata marker file.
10
+ * CSV format: path,packageName,packageVersion — one row per file, no header.
11
+ * Makes the file read-only after writing.
12
+ */
13
+ export declare function writeMarker(markerFilePath: string, entries: ManagedFileMetadata[]): Promise<void>;
14
+ /**
15
+ * Returns the path of the .npmdata marker file for a given output directory.
16
+ */
17
+ export declare function markerPath(outputDir: string): string;
18
+ /**
19
+ * Read all managed file entries from an output directory's .npmdata marker.
20
+ */
21
+ export declare function readOutputDirMarker(outputDir: string): Promise<ManagedFileMetadata[]>;
22
+ //# sourceMappingURL=markers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../../src/fileset/markers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAK/C;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAcvF;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,mBAAmB,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAE3F"}
@@ -0,0 +1,68 @@
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.readMarker = readMarker;
7
+ exports.writeMarker = writeMarker;
8
+ exports.markerPath = markerPath;
9
+ exports.readOutputDirMarker = readOutputDirMarker;
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 constants_1 = require("./constants");
14
+ /**
15
+ * Read all managed file entries from a .npmdata marker file.
16
+ * CSV format: path,packageName,packageVersion — one row per file, no header.
17
+ * Compatible with v1 marker files.
18
+ */
19
+ async function readMarker(markerFilePath) {
20
+ if (!node_fs_1.default.existsSync(markerFilePath)) {
21
+ return [];
22
+ }
23
+ const content = node_fs_1.default.readFileSync(markerFilePath, 'utf8');
24
+ const lines = content.split('\n').filter((line) => line.trim() !== '');
25
+ return lines.map((line) => {
26
+ const fields = line.split(',');
27
+ return {
28
+ path: fields[0] ?? '',
29
+ packageName: fields[1] ?? '',
30
+ packageVersion: fields[2] ?? '',
31
+ };
32
+ });
33
+ }
34
+ /**
35
+ * Write managed file entries to a .npmdata marker file.
36
+ * CSV format: path,packageName,packageVersion — one row per file, no header.
37
+ * Makes the file read-only after writing.
38
+ */
39
+ async function writeMarker(markerFilePath, entries) {
40
+ (0, utils_1.ensureDir)(node_path_1.default.dirname(markerFilePath));
41
+ // Make writable if it already exists
42
+ if (node_fs_1.default.existsSync(markerFilePath)) {
43
+ node_fs_1.default.chmodSync(markerFilePath, 0o644);
44
+ }
45
+ if (entries.length === 0) {
46
+ // Remove empty marker
47
+ if (node_fs_1.default.existsSync(markerFilePath)) {
48
+ node_fs_1.default.unlinkSync(markerFilePath);
49
+ }
50
+ return;
51
+ }
52
+ const rows = entries.map((e) => `${e.path},${e.packageName},${e.packageVersion}`);
53
+ node_fs_1.default.writeFileSync(markerFilePath, `${rows.join('\n')}\n`, 'utf8');
54
+ node_fs_1.default.chmodSync(markerFilePath, 0o444);
55
+ }
56
+ /**
57
+ * Returns the path of the .npmdata marker file for a given output directory.
58
+ */
59
+ function markerPath(outputDir) {
60
+ return node_path_1.default.join(outputDir, constants_1.MARKER_FILE);
61
+ }
62
+ /**
63
+ * Read all managed file entries from an output directory's .npmdata marker.
64
+ */
65
+ async function readOutputDirMarker(outputDir) {
66
+ return readMarker(markerPath(outputDir));
67
+ }
68
+ //# sourceMappingURL=markers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/fileset/markers.ts"],"names":[],"mappings":";;;;;AAaA,gCAcC;AAOD,kCAmBC;AAKD,gCAEC;AAKD,kDAEC;AAnED,sDAAyB;AACzB,0DAA6B;AAG7B,oCAAqC;AAErC,2CAA0C;AAE1C;;;;GAIG;AACI,KAAK,UAAU,UAAU,CAAC,cAAsB;IACrD,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,iBAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;YACrB,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;YAC5B,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;SAChC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAC/B,cAAsB,EACtB,OAA8B;IAE9B,IAAA,iBAAS,EAAC,mBAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACxC,qCAAqC;IACrC,IAAI,iBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,iBAAE,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,sBAAsB;QACtB,IAAI,iBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,iBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAClF,iBAAE,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjE,iBAAE,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,SAAiB;IAC1C,OAAO,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAW,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IACzD,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { SelectorConfig } from '../types';
2
+ /**
3
+ * Returns the installed package path from node_modules in cwd, or null if not found.
4
+ */
5
+ export declare function installedPackagePath(name: string, cwd?: string): string | null;
6
+ /**
7
+ * Enumerate all files in a package directory that match the selector.
8
+ * Applies DEFAULT_FILENAME_PATTERNS when `files` is absent.
9
+ * Binary files always skip contentRegexes check (but are included by glob).
10
+ *
11
+ * @returns Array of relative file paths from the package root.
12
+ */
13
+ export declare function enumeratePackageFiles(pkgPath: string, selector: SelectorConfig): Promise<string[]>;
14
+ //# sourceMappingURL=package-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-files.d.ts","sourceRoot":"","sources":["../../src/fileset/package-files.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ9E;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC,CAuCnB"}
@@ -0,0 +1,81 @@
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.installedPackagePath = installedPackagePath;
7
+ exports.enumeratePackageFiles = enumeratePackageFiles;
8
+ /* eslint-disable no-restricted-syntax */
9
+ /* eslint-disable no-continue */
10
+ const node_fs_1 = __importDefault(require("node:fs"));
11
+ const node_path_1 = __importDefault(require("node:path"));
12
+ const minimatch_1 = require("minimatch");
13
+ const utils_1 = require("../utils");
14
+ const constants_1 = require("./constants");
15
+ /**
16
+ * Returns the installed package path from node_modules in cwd, or null if not found.
17
+ */
18
+ function installedPackagePath(name, cwd) {
19
+ const workDir = cwd ?? process.cwd();
20
+ const pkgPath = node_path_1.default.join(workDir, 'node_modules', name, 'package.json');
21
+ if (node_fs_1.default.existsSync(pkgPath)) {
22
+ return node_path_1.default.dirname(pkgPath);
23
+ }
24
+ // eslint-disable-next-line unicorn/no-null
25
+ return null;
26
+ }
27
+ /**
28
+ * Enumerate all files in a package directory that match the selector.
29
+ * Applies DEFAULT_FILENAME_PATTERNS when `files` is absent.
30
+ * Binary files always skip contentRegexes check (but are included by glob).
31
+ *
32
+ * @returns Array of relative file paths from the package root.
33
+ */
34
+ async function enumeratePackageFiles(pkgPath, selector) {
35
+ const filePatterns = selector.files ?? constants_1.DEFAULT_FILENAME_PATTERNS;
36
+ const contentRegexes = (selector.contentRegexes ?? []).map((r) => new RegExp(r));
37
+ const results = [];
38
+ const walkDir = (dir, basePath = '') => {
39
+ const entries = node_fs_1.default.readdirSync(dir);
40
+ for (const entry of entries) {
41
+ if (entry === constants_1.MARKER_FILE)
42
+ continue;
43
+ const fullPath = node_path_1.default.join(dir, entry);
44
+ const relPath = basePath ? `${basePath}/${entry}` : entry;
45
+ const lstat = node_fs_1.default.lstatSync(fullPath);
46
+ if (lstat.isSymbolicLink())
47
+ continue;
48
+ if (lstat.isDirectory()) {
49
+ walkDir(fullPath, relPath);
50
+ continue;
51
+ }
52
+ // Apply glob filter
53
+ if (!matchesFilePatterns(relPath, filePatterns))
54
+ continue;
55
+ // Apply content regex filter (skip for binary files)
56
+ if (contentRegexes.length > 0 && !(0, utils_1.isBinaryFile)(fullPath)) {
57
+ const content = node_fs_1.default.readFileSync(fullPath, 'utf8');
58
+ const matches = contentRegexes.some((re) => re.test(content));
59
+ if (!matches)
60
+ continue;
61
+ }
62
+ // Binary files pass through when contentRegexes are set, since they
63
+ // cannot be scanned but may be legitimately needed
64
+ results.push(relPath);
65
+ }
66
+ };
67
+ walkDir(pkgPath);
68
+ return results;
69
+ }
70
+ /**
71
+ * Check whether a relative file path matches the given glob patterns.
72
+ * Handles negative patterns (prefix !) and positive patterns.
73
+ */
74
+ function matchesFilePatterns(relPath, patterns) {
75
+ const includes = patterns.filter((p) => !p.startsWith('!'));
76
+ const excludes = patterns.filter((p) => p.startsWith('!')).map((p) => p.slice(1));
77
+ const matchesIncludes = includes.length === 0 || includes.some((pat) => (0, minimatch_1.minimatch)(relPath, pat, { dot: true }));
78
+ const matchesExcludes = excludes.some((pat) => (0, minimatch_1.minimatch)(relPath, pat, { dot: true }));
79
+ return matchesIncludes && !matchesExcludes;
80
+ }
81
+ //# sourceMappingURL=package-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-files.js","sourceRoot":"","sources":["../../src/fileset/package-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { ManagedFileMetadata, PurgeResult } from '../types';
2
+ /**
3
+ * Purge all managed files in entries from the output directory.
4
+ * Also removes symlinks, empty directories, marker file, and gitignore entries.
5
+ *
6
+ * @param outputDir Absolute path to the output directory.
7
+ * @param entries List of managed file entries to remove.
8
+ * @param dryRun If true, only report what would be removed without deleting.
9
+ * @returns PurgeResult with counts of deleted, symlinks removed, and dirs removed.
10
+ */
11
+ export declare function purgeFileset(outputDir: string, entries: ManagedFileMetadata[], dryRun: boolean): Promise<PurgeResult>;
12
+ //# sourceMappingURL=purge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purge.d.ts","sourceRoot":"","sources":["../../src/fileset/purge.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO5D;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,WAAW,CAAC,CA6CtB"}
@@ -0,0 +1,95 @@
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.purgeFileset = purgeFileset;
7
+ /* eslint-disable no-restricted-syntax */
8
+ /* eslint-disable functional/no-try-statements */
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const symlinks_1 = require("../package/symlinks");
12
+ const markers_1 = require("./markers");
13
+ const gitignore_1 = require("./gitignore");
14
+ const constants_1 = require("./constants");
15
+ /**
16
+ * Purge all managed files in entries from the output directory.
17
+ * Also removes symlinks, empty directories, marker file, and gitignore entries.
18
+ *
19
+ * @param outputDir Absolute path to the output directory.
20
+ * @param entries List of managed file entries to remove.
21
+ * @param dryRun If true, only report what would be removed without deleting.
22
+ * @returns PurgeResult with counts of deleted, symlinks removed, and dirs removed.
23
+ */
24
+ async function purgeFileset(outputDir, entries, dryRun) {
25
+ const result = { deleted: 0, symlinksRemoved: 0, dirsRemoved: 0 };
26
+ if (!node_fs_1.default.existsSync(outputDir))
27
+ return result;
28
+ // 1. Delete managed files
29
+ for (const entry of entries) {
30
+ const fullPath = node_path_1.default.join(outputDir, entry.path);
31
+ if (node_fs_1.default.existsSync(fullPath)) {
32
+ if (!dryRun) {
33
+ try {
34
+ node_fs_1.default.chmodSync(fullPath, 0o644);
35
+ node_fs_1.default.unlinkSync(fullPath);
36
+ }
37
+ catch {
38
+ // ignore
39
+ }
40
+ }
41
+ result.deleted += 1;
42
+ }
43
+ }
44
+ if (!dryRun) {
45
+ // 2. Remove all symlinks pointing into outputDir
46
+ result.symlinksRemoved = await (0, symlinks_1.removeAllSymlinks)(outputDir);
47
+ // 3. Remove empty directories bottom-up
48
+ result.dirsRemoved = removeEmptyDirs(outputDir);
49
+ // 4. Remove or update .npmdata marker
50
+ const marker = (0, markers_1.markerPath)(outputDir);
51
+ if (node_fs_1.default.existsSync(marker)) {
52
+ try {
53
+ node_fs_1.default.chmodSync(marker, 0o644);
54
+ node_fs_1.default.unlinkSync(marker);
55
+ }
56
+ catch {
57
+ // ignore
58
+ }
59
+ }
60
+ // 5. Remove gitignore entries
61
+ const removedPaths = entries.map((e) => e.path);
62
+ await (0, gitignore_1.removeFromGitignore)(outputDir, removedPaths);
63
+ }
64
+ return result;
65
+ }
66
+ /**
67
+ * Remove empty directories bottom-up within the given directory.
68
+ * Returns count of directories removed.
69
+ */
70
+ function removeEmptyDirs(dir) {
71
+ let count = 0;
72
+ if (!node_fs_1.default.existsSync(dir))
73
+ return count;
74
+ for (const entry of node_fs_1.default.readdirSync(dir)) {
75
+ const fullPath = node_path_1.default.join(dir, entry);
76
+ const stat = node_fs_1.default.lstatSync(fullPath);
77
+ if (stat.isSymbolicLink() || entry === constants_1.MARKER_FILE)
78
+ continue;
79
+ if (stat.isDirectory()) {
80
+ count += removeEmptyDirs(fullPath);
81
+ // Try to remove dir if now empty
82
+ try {
83
+ if (node_fs_1.default.readdirSync(fullPath).length === 0) {
84
+ node_fs_1.default.rmdirSync(fullPath);
85
+ count += 1;
86
+ }
87
+ }
88
+ catch {
89
+ // ignore
90
+ }
91
+ }
92
+ }
93
+ return count;
94
+ }
95
+ //# sourceMappingURL=purge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purge.js","sourceRoot":"","sources":["../../src/fileset/purge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Creates a mock npm package with the given files, packages it as a tar.gz,
3
+ * and installs it into tmpDir/node_modules using pnpm.
4
+ *
5
+ * @param name - Name of the package to create.
6
+ * @param version - Version of the package.
7
+ * @param files - Map of relative file paths to file contents.
8
+ * @param tmpDir - Temporary directory to use as the project root.
9
+ * @returns The path to the installed package in node_modules.
10
+ */
11
+ export declare const installMockPackage: (name: string, version: string, files: Record<string, string>, tmpDir: string) => Promise<string>;
12
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/fileset/test-utils.ts"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,CAgDhB,CAAC"}
@@ -0,0 +1,65 @@
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.installMockPackage = void 0;
7
+ /* eslint-disable no-restricted-syntax */
8
+ /* eslint-disable import/no-extraneous-dependencies */
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const node_child_process_1 = require("node:child_process");
12
+ const archiver_1 = __importDefault(require("archiver"));
13
+ /**
14
+ * Creates a mock npm package with the given files, packages it as a tar.gz,
15
+ * and installs it into tmpDir/node_modules using pnpm.
16
+ *
17
+ * @param name - Name of the package to create.
18
+ * @param version - Version of the package.
19
+ * @param files - Map of relative file paths to file contents.
20
+ * @param tmpDir - Temporary directory to use as the project root.
21
+ * @returns The path to the installed package in node_modules.
22
+ */
23
+ const installMockPackage = async (name, version, files, tmpDir) => {
24
+ const packageDir = node_path_1.default.join(tmpDir, `${name}-source`);
25
+ if (node_fs_1.default.existsSync(packageDir)) {
26
+ node_fs_1.default.rmSync(packageDir, { recursive: true });
27
+ }
28
+ node_fs_1.default.mkdirSync(packageDir, { recursive: true });
29
+ // Create package.json
30
+ const packageJson = { name, version };
31
+ node_fs_1.default.writeFileSync(node_path_1.default.join(packageDir, 'package.json'), JSON.stringify(packageJson));
32
+ // Create other files
33
+ for (const [filePath, content] of Object.entries(files)) {
34
+ const fullPath = node_path_1.default.join(packageDir, filePath);
35
+ const dir = node_path_1.default.dirname(fullPath);
36
+ node_fs_1.default.mkdirSync(dir, { recursive: true });
37
+ node_fs_1.default.writeFileSync(fullPath, content);
38
+ }
39
+ // Create tar.gz file
40
+ const tarGzPath = node_path_1.default.join(tmpDir, `${name.replaceAll('/', '-')}-${version}.tar.gz`);
41
+ await new Promise((resolve, reject) => {
42
+ const output = node_fs_1.default.createWriteStream(tarGzPath);
43
+ const archive = (0, archiver_1.default)('tar', { gzip: true });
44
+ output.on('close', () => resolve());
45
+ output.on('error', reject);
46
+ archive.on('error', reject);
47
+ archive.pipe(output);
48
+ archive.directory(packageDir, 'package');
49
+ archive.finalize().catch(reject);
50
+ });
51
+ // Create package.json in tmpDir if it doesn't exist so pnpm recognizes it as a project
52
+ const tmpDirPkgJson = node_path_1.default.join(tmpDir, 'package.json');
53
+ if (!node_fs_1.default.existsSync(tmpDirPkgJson)) {
54
+ node_fs_1.default.writeFileSync(tmpDirPkgJson, JSON.stringify({ name: 'tmp-test-project', version: '1.0.0' }));
55
+ }
56
+ // Install the tar.gz package into tmpDir/node_modules
57
+ (0, node_child_process_1.execSync)(`pnpm add ${tarGzPath}`, {
58
+ cwd: tmpDir,
59
+ stdio: 'pipe',
60
+ });
61
+ // Return the installed package path in node_modules
62
+ return node_path_1.default.join(tmpDir, 'node_modules', name);
63
+ };
64
+ exports.installMockPackage = installMockPackage;
65
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/fileset/test-utils.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- export { extract, check, list, purge, findNearestMarkerPath, compressGitignoreEntries, } from './consumer';
2
- export type { PurgeConfig } from './consumer';
3
- export { initPublisher } from './publisher';
4
- export { DEFAULT_FILENAME_PATTERNS } from './types';
5
- export type { ConsumerConfig, FileFilterConfig, ManagedFileMetadata, PublishablePackageJson, ConsumerResult, CheckResult, ProgressEvent, } from './types';
6
- export type { PublisherInitOptions, InitResult } from './publisher';
7
- export { parsePackageSpec, isBinaryFile } from './utils';
1
+ export { actionExtract } from './package/action-extract';
2
+ export type { ExtractOptions, ExtractResult } from './package/action-extract';
3
+ export { actionCheck } from './package/action-check';
4
+ export type { CheckOptions, CheckSummary } from './package/action-check';
5
+ export { actionList } from './package/action-list';
6
+ export type { ListOptions } from './package/action-list';
7
+ export { actionPurge } from './package/action-purge';
8
+ export type { PurgeOptions, PurgeSummary } from './package/action-purge';
9
+ export { run } from './cli/runner';
10
+ export type { NpmdataConfig, NpmdataExtractEntry, PackageConfig, SelectorConfig, OutputConfig, SymlinkConfig, ContentReplacementConfig, ManagedFileMetadata, ProgressEvent, ExtractionMap, CheckResult, PurgeResult, ExecuteResult, } from './types';
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,KAAK,EACL,IAAI,EACJ,KAAK,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,20 +1,15 @@
1
1
  "use strict";
2
+ // Public library exports for npmdata v2
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isBinaryFile = exports.parsePackageSpec = exports.DEFAULT_FILENAME_PATTERNS = exports.initPublisher = exports.compressGitignoreEntries = exports.findNearestMarkerPath = exports.purge = exports.list = exports.check = exports.extract = void 0;
4
- // Main exports
5
- var consumer_1 = require("./consumer");
6
- Object.defineProperty(exports, "extract", { enumerable: true, get: function () { return consumer_1.extract; } });
7
- Object.defineProperty(exports, "check", { enumerable: true, get: function () { return consumer_1.check; } });
8
- Object.defineProperty(exports, "list", { enumerable: true, get: function () { return consumer_1.list; } });
9
- Object.defineProperty(exports, "purge", { enumerable: true, get: function () { return consumer_1.purge; } });
10
- Object.defineProperty(exports, "findNearestMarkerPath", { enumerable: true, get: function () { return consumer_1.findNearestMarkerPath; } });
11
- Object.defineProperty(exports, "compressGitignoreEntries", { enumerable: true, get: function () { return consumer_1.compressGitignoreEntries; } });
12
- var publisher_1 = require("./publisher");
13
- Object.defineProperty(exports, "initPublisher", { enumerable: true, get: function () { return publisher_1.initPublisher; } });
14
- // Type exports
15
- var types_1 = require("./types");
16
- Object.defineProperty(exports, "DEFAULT_FILENAME_PATTERNS", { enumerable: true, get: function () { return types_1.DEFAULT_FILENAME_PATTERNS; } });
17
- var utils_1 = require("./utils");
18
- Object.defineProperty(exports, "parsePackageSpec", { enumerable: true, get: function () { return utils_1.parsePackageSpec; } });
19
- Object.defineProperty(exports, "isBinaryFile", { enumerable: true, get: function () { return utils_1.isBinaryFile; } });
4
+ exports.run = exports.actionPurge = exports.actionList = exports.actionCheck = exports.actionExtract = void 0;
5
+ var action_extract_1 = require("./package/action-extract");
6
+ Object.defineProperty(exports, "actionExtract", { enumerable: true, get: function () { return action_extract_1.actionExtract; } });
7
+ var action_check_1 = require("./package/action-check");
8
+ Object.defineProperty(exports, "actionCheck", { enumerable: true, get: function () { return action_check_1.actionCheck; } });
9
+ var action_list_1 = require("./package/action-list");
10
+ Object.defineProperty(exports, "actionList", { enumerable: true, get: function () { return action_list_1.actionList; } });
11
+ var action_purge_1 = require("./package/action-purge");
12
+ Object.defineProperty(exports, "actionPurge", { enumerable: true, get: function () { return action_purge_1.actionPurge; } });
13
+ var runner_1 = require("./cli/runner");
14
+ Object.defineProperty(exports, "run", { enumerable: true, get: function () { return runner_1.run; } });
20
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,eAAe;AACf,uCAOoB;AANlB,mGAAA,OAAO,OAAA;AACP,iGAAA,KAAK,OAAA;AACL,gGAAA,IAAI,OAAA;AACJ,iGAAA,KAAK,OAAA;AACL,iHAAA,qBAAqB,OAAA;AACrB,oHAAA,wBAAwB,OAAA;AAG1B,yCAA4C;AAAnC,0GAAA,aAAa,OAAA;AAEtB,eAAe;AACf,iCAAoD;AAA3C,kHAAA,yBAAyB,OAAA;AAWlC,iCAAyD;AAAhD,yGAAA,gBAAgB,OAAA;AAAE,qGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,wCAAwC;;;AAExC,2DAAyD;AAAhD,+GAAA,aAAa,OAAA;AAGtB,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAGpB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AAGnB,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAGpB,uCAAmC;AAA1B,6FAAA,GAAG,OAAA"}
package/dist/main.js CHANGED
@@ -1,20 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- const cli_1 = require("./cli");
5
- // eslint-disable-next-line no-void
6
- void (async () => {
7
- process.on('uncaughtException', (err) => {
8
- const errs = `${err}`;
9
- // eslint-disable-next-line functional/no-let
10
- let i = errs.indexOf('\n');
11
- if (i === -1)
12
- i = errs.length;
13
- // eslint-disable-next-line no-console
14
- console.log(errs.slice(0, Math.max(0, i)));
15
- process.exit(3);
16
- });
17
- const exitCode = await (0, cli_1.cli)(process.argv);
18
- process.exit(exitCode);
19
- })();
4
+ /* eslint-disable unicorn/prefer-top-level-await */
5
+ const cli_1 = require("./cli/cli");
6
+ (0, cli_1.cli)(process.argv)
7
+ // eslint-disable-next-line promise/prefer-await-to-callbacks
8
+ .catch((error) => {
9
+ // eslint-disable-next-line no-console
10
+ console.error(error.message);
11
+ process.exitCode = 1;
12
+ });
20
13
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;AAEA,+BAA4B;AAE5B,mCAAmC;AACnC,KAAK,CAAC,KAAK,IAAmB,EAAE;IAC9B,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACtB,6CAA6C;QAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,IAAA,SAAG,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;AACA,mDAAmD;AACnD,mCAAgC;AAEhC,IAAA,SAAG,EAAC,OAAO,CAAC,IAAI,CAAC;IACf,6DAA6D;KAC5D,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxB,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
Binary file
@@ -0,0 +1,20 @@
1
+ import { NpmdataConfig, NpmdataExtractEntry, ProgressEvent } from '../types';
2
+ export type CheckOptions = {
3
+ entries: NpmdataExtractEntry[];
4
+ config: NpmdataConfig | null;
5
+ cwd: string;
6
+ verbose?: boolean;
7
+ onProgress?: (event: ProgressEvent) => void;
8
+ skipUnmanaged?: boolean;
9
+ };
10
+ export type CheckSummary = {
11
+ missing: string[];
12
+ modified: string[];
13
+ extra: string[];
14
+ };
15
+ /**
16
+ * Orchestrate check across all filesets, filtering out unmanaged entries.
17
+ * Returns a summary of all drift found across all entries.
18
+ */
19
+ export declare function actionCheck(options: CheckOptions): Promise<CheckSummary>;
20
+ //# sourceMappingURL=action-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-check.d.ts","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":"AAKA,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,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAgE9E"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /* eslint-disable no-restricted-syntax */
3
+ /* eslint-disable no-console */
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.actionCheck = actionCheck;
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const utils_1 = require("../utils");
11
+ const markers_1 = require("../fileset/markers");
12
+ const check_1 = require("../fileset/check");
13
+ /**
14
+ * Orchestrate check across all filesets, filtering out unmanaged entries.
15
+ * Returns a summary of all drift found across all entries.
16
+ */
17
+ async function actionCheck(options) {
18
+ const { entries, cwd, verbose = false, onProgress } = options;
19
+ const summary = { missing: [], modified: [], extra: [] };
20
+ if (verbose) {
21
+ console.log(`[verbose] check: verifying ${entries.length} entr${entries.length === 1 ? 'y' : 'ies'} (cwd: ${cwd})`);
22
+ }
23
+ for (const entry of entries) {
24
+ // Skip unmanaged entries — they write no marker so there is nothing to check.
25
+ // The --unmanaged flag also suppresses checking for explicitly marked entries.
26
+ if (entry.output.unmanaged)
27
+ continue;
28
+ const pkg = (0, utils_1.parsePackageSpec)(entry.package);
29
+ const outputDir = node_path_1.default.resolve(cwd, entry.output.path);
30
+ if (verbose) {
31
+ console.log(`[verbose] check: checking package=${entry.package} outputDir=${entry.output.path}`);
32
+ }
33
+ onProgress?.({
34
+ type: 'package-start',
35
+ packageName: pkg.name,
36
+ packageVersion: pkg.version ?? 'latest',
37
+ });
38
+ // Check if package is installed
39
+ const pkgPath = (0, utils_1.getInstalledPackagePath)(pkg.name, cwd);
40
+ // Read existing marker
41
+ // eslint-disable-next-line no-await-in-loop
42
+ const existingMarker = await (0, markers_1.readOutputDirMarker)(outputDir);
43
+ if (!pkgPath) {
44
+ console.error(`Package ${pkg.name} is not installed. Run 'extract' first.`);
45
+ summary.missing.push(...existingMarker.map((m) => m.path));
46
+ continue;
47
+ }
48
+ // eslint-disable-next-line no-await-in-loop
49
+ const result = await (0, check_1.checkFileset)(pkgPath, outputDir, entry.selector ?? {}, entry.output, existingMarker);
50
+ summary.missing.push(...result.missing);
51
+ summary.modified.push(...result.modified);
52
+ summary.extra.push(...result.extra);
53
+ onProgress?.({
54
+ type: 'package-end',
55
+ packageName: pkg.name,
56
+ packageVersion: pkg.version ?? 'latest',
57
+ });
58
+ }
59
+ return summary;
60
+ }
61
+ //# sourceMappingURL=action-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-check.js","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,+BAA+B;;;;;AA4B/B,kCAgEC;AA1FD,0DAA6B;AAG7B,oCAAqE;AACrE,gDAAyD;AACzD,4CAAgD;AAiBhD;;;GAGG;AACI,KAAK,UAAU,WAAW,CAAC,OAAqB;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC9D,MAAM,OAAO,GAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEvE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CACT,8BAA8B,OAAO,CAAC,MAAM,QAAQ,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,GAAG,CACvG,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,8EAA8E;QAC9E,+EAA+E;QAC/E,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS;YAAE,SAAS;QAErC,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,CACT,qCAAqC,KAAK,CAAC,OAAO,cAAc,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CACpF,CAAC;QACJ,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,gCAAgC;QAChC,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEvD,uBAAuB;QACvB,4CAA4C;QAC5C,MAAM,cAAc,GAAG,MAAM,IAAA,6BAAmB,EAAC,SAAS,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,yCAAyC,CAAC,CAAC;YAC5E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,SAAS;QACX,CAAC;QAED,4CAA4C;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAY,EAC/B,OAAO,EACP,SAAS,EACT,KAAK,CAAC,QAAQ,IAAI,EAAE,EACpB,KAAK,CAAC,MAAM,EACZ,cAAc,CACf,CAAC;QAEF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpC,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"}