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.
- package/README.md +119 -146
- package/dist/cli/actions/check.d.ts.map +1 -1
- package/dist/cli/actions/check.js +3 -4
- package/dist/cli/actions/check.js.map +1 -1
- package/dist/cli/actions/extract.d.ts.map +1 -1
- package/dist/cli/actions/extract.js +2 -3
- package/dist/cli/actions/extract.js.map +1 -1
- package/dist/cli/actions/init.js +1 -1
- package/dist/cli/actions/init.js.map +1 -1
- package/dist/cli/argv.d.ts +12 -8
- package/dist/cli/argv.d.ts.map +1 -1
- package/dist/cli/argv.js +39 -33
- package/dist/cli/argv.js.map +1 -1
- package/dist/cli/usage.js +3 -3
- package/dist/fileset/check.d.ts.map +1 -1
- package/dist/fileset/check.js +8 -4
- package/dist/fileset/check.js.map +1 -1
- package/dist/fileset/diff.d.ts.map +1 -1
- package/dist/fileset/diff.js +4 -7
- package/dist/fileset/diff.js.map +1 -1
- package/dist/fileset/execute.d.ts.map +1 -1
- package/dist/fileset/execute.js +6 -5
- package/dist/fileset/execute.js.map +1 -1
- package/dist/fileset/markers.d.ts +3 -3
- package/dist/fileset/markers.js +5 -5
- package/dist/fileset/purge.d.ts +7 -1
- package/dist/fileset/purge.d.ts.map +1 -1
- package/dist/fileset/purge.js +17 -16
- package/dist/fileset/purge.js.map +1 -1
- package/dist/npmdata-0.0.1.tgz +0 -0
- package/dist/package/action-check.d.ts +2 -2
- package/dist/package/action-check.d.ts.map +1 -1
- package/dist/package/action-check.js +58 -4
- package/dist/package/action-check.js.map +1 -1
- package/dist/package/action-extract.d.ts +1 -2
- package/dist/package/action-extract.d.ts.map +1 -1
- package/dist/package/action-extract.js +15 -6
- package/dist/package/action-extract.js.map +1 -1
- package/dist/package/action-purge.d.ts +7 -0
- package/dist/package/action-purge.d.ts.map +1 -1
- package/dist/package/action-purge.js +116 -19
- package/dist/package/action-purge.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +2 -1
package/dist/cli/argv.js
CHANGED
|
@@ -9,21 +9,27 @@ const utils_1 = require("../utils");
|
|
|
9
9
|
* Validates mutually exclusive combinations and throws on invalid input.
|
|
10
10
|
*/
|
|
11
11
|
function parseArgv(argv) {
|
|
12
|
-
const
|
|
12
|
+
const getBoolFlag = (flag) => {
|
|
13
|
+
for (const arg of argv) {
|
|
14
|
+
if (arg === flag)
|
|
15
|
+
return true;
|
|
16
|
+
if (arg === `${flag}=true`)
|
|
17
|
+
return true;
|
|
18
|
+
if (arg === `${flag}=false`)
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
};
|
|
13
23
|
const getValue = (flag, shortFlag) => {
|
|
14
|
-
// eslint-disable-next-line no-undefined
|
|
15
24
|
const idx = argv.findIndex((a) => a === flag || (shortFlag !== undefined && a === shortFlag));
|
|
16
25
|
if (idx === -1 || idx + 1 >= argv.length) {
|
|
17
|
-
// eslint-disable-next-line no-undefined
|
|
18
26
|
return undefined;
|
|
19
27
|
}
|
|
20
28
|
return argv[idx + 1];
|
|
21
29
|
};
|
|
22
30
|
const getCommaSplit = (flag, shortFlag) => {
|
|
23
31
|
const val = getValue(flag, shortFlag);
|
|
24
|
-
// eslint-disable-next-line no-undefined
|
|
25
32
|
if (val === undefined) {
|
|
26
|
-
// eslint-disable-next-line no-undefined
|
|
27
33
|
return undefined;
|
|
28
34
|
}
|
|
29
35
|
return val
|
|
@@ -31,13 +37,14 @@ function parseArgv(argv) {
|
|
|
31
37
|
.map((s) => s.trim())
|
|
32
38
|
.filter(Boolean);
|
|
33
39
|
};
|
|
34
|
-
const force =
|
|
35
|
-
const keepExisting =
|
|
36
|
-
if (force && keepExisting) {
|
|
40
|
+
const force = getBoolFlag('--force');
|
|
41
|
+
const keepExisting = getBoolFlag('--keep-existing');
|
|
42
|
+
if (force === true && keepExisting === true) {
|
|
37
43
|
throw new Error('--force and --keep-existing are mutually exclusive');
|
|
38
44
|
}
|
|
39
45
|
const packagesRaw = getCommaSplit('--packages');
|
|
40
46
|
const packages = packagesRaw?.map((s) => (0, utils_1.parsePackageSpec)(s));
|
|
47
|
+
const verboseFlag = getBoolFlag('--verbose');
|
|
41
48
|
return {
|
|
42
49
|
packages,
|
|
43
50
|
output: getValue('--output', '-o'),
|
|
@@ -47,12 +54,12 @@ function parseArgv(argv) {
|
|
|
47
54
|
configFile: getValue('--config'),
|
|
48
55
|
force,
|
|
49
56
|
keepExisting,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
dryRun:
|
|
53
|
-
upgrade:
|
|
54
|
-
silent:
|
|
55
|
-
verbose:
|
|
57
|
+
gitignore: getBoolFlag('--gitignore'),
|
|
58
|
+
managed: getBoolFlag('--managed'),
|
|
59
|
+
dryRun: getBoolFlag('--dry-run'),
|
|
60
|
+
upgrade: getBoolFlag('--upgrade'),
|
|
61
|
+
silent: getBoolFlag('--silent'),
|
|
62
|
+
verbose: argv.includes('-v') ? true : verboseFlag,
|
|
56
63
|
};
|
|
57
64
|
}
|
|
58
65
|
/**
|
|
@@ -75,22 +82,22 @@ function buildEntriesFromArgv(parsed) {
|
|
|
75
82
|
// selector.presets is also forwarded to the target package's nested set extraction.
|
|
76
83
|
if (parsed.presets)
|
|
77
84
|
selector.presets = parsed.presets;
|
|
78
|
-
if (parsed.upgrade)
|
|
79
|
-
selector.upgrade =
|
|
85
|
+
if (parsed.upgrade !== undefined)
|
|
86
|
+
selector.upgrade = parsed.upgrade;
|
|
80
87
|
const output = {
|
|
81
|
-
path: parsed.output
|
|
82
|
-
force: parsed.force,
|
|
83
|
-
keepExisting: parsed.keepExisting,
|
|
84
|
-
gitignore:
|
|
85
|
-
unmanaged: parsed.
|
|
86
|
-
dryRun: parsed.dryRun,
|
|
88
|
+
...(parsed.output !== undefined ? { path: parsed.output } : {}),
|
|
89
|
+
...(parsed.force !== undefined ? { force: parsed.force } : {}),
|
|
90
|
+
...(parsed.keepExisting !== undefined ? { keepExisting: parsed.keepExisting } : {}),
|
|
91
|
+
...(parsed.gitignore !== undefined ? { gitignore: parsed.gitignore } : {}),
|
|
92
|
+
...(parsed.managed !== undefined ? { unmanaged: parsed.managed === false } : {}),
|
|
93
|
+
...(parsed.dryRun !== undefined ? { dryRun: parsed.dryRun } : {}),
|
|
87
94
|
};
|
|
88
95
|
return parsed.packages.map((pkg) => ({
|
|
89
96
|
package: pkg.version ? `${pkg.name}@${pkg.version}` : pkg.name,
|
|
90
97
|
output,
|
|
91
98
|
selector,
|
|
92
|
-
silent: parsed.silent,
|
|
93
|
-
verbose: parsed.verbose,
|
|
99
|
+
...(parsed.silent !== undefined ? { silent: parsed.silent } : {}),
|
|
100
|
+
...(parsed.verbose !== undefined ? { verbose: parsed.verbose } : {}),
|
|
94
101
|
}));
|
|
95
102
|
}
|
|
96
103
|
/**
|
|
@@ -101,26 +108,25 @@ function applyArgvOverrides(entries, parsed) {
|
|
|
101
108
|
return entries.map((entry) => {
|
|
102
109
|
const updatedOutput = {
|
|
103
110
|
...entry.output,
|
|
104
|
-
// eslint-disable-next-line no-undefined
|
|
105
111
|
...(parsed.output !== undefined ? { path: parsed.output } : {}),
|
|
106
|
-
...(parsed.force ? { force:
|
|
107
|
-
...(parsed.keepExisting ? { keepExisting:
|
|
108
|
-
...(parsed.
|
|
109
|
-
...(parsed.
|
|
110
|
-
...(parsed.dryRun ? { dryRun:
|
|
112
|
+
...(parsed.force !== undefined ? { force: parsed.force } : {}),
|
|
113
|
+
...(parsed.keepExisting !== undefined ? { keepExisting: parsed.keepExisting } : {}),
|
|
114
|
+
...(parsed.gitignore !== undefined ? { gitignore: parsed.gitignore } : {}),
|
|
115
|
+
...(parsed.managed !== undefined ? { unmanaged: parsed.managed === false } : {}),
|
|
116
|
+
...(parsed.dryRun !== undefined ? { dryRun: parsed.dryRun } : {}),
|
|
111
117
|
};
|
|
112
118
|
const updatedSelector = {
|
|
113
119
|
...entry.selector,
|
|
114
120
|
...(parsed.files ? { files: parsed.files } : {}),
|
|
115
121
|
...(parsed.contentRegexes ? { contentRegexes: parsed.contentRegexes } : {}),
|
|
116
|
-
...(parsed.upgrade ? { upgrade:
|
|
122
|
+
...(parsed.upgrade !== undefined ? { upgrade: parsed.upgrade } : {}),
|
|
117
123
|
};
|
|
118
124
|
return {
|
|
119
125
|
...entry,
|
|
120
126
|
output: updatedOutput,
|
|
121
127
|
selector: updatedSelector,
|
|
122
|
-
...(parsed.silent ? { silent:
|
|
123
|
-
...(parsed.verbose ? { verbose:
|
|
128
|
+
...(parsed.silent !== undefined ? { silent: parsed.silent } : {}),
|
|
129
|
+
...(parsed.verbose !== undefined ? { verbose: parsed.verbose } : {}),
|
|
124
130
|
};
|
|
125
131
|
});
|
|
126
132
|
}
|
package/dist/cli/argv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argv.js","sourceRoot":"","sources":["../../src/cli/argv.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"argv.js","sourceRoot":"","sources":["../../src/cli/argv.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/usage.js
CHANGED
|
@@ -23,8 +23,8 @@ Options:
|
|
|
23
23
|
--content-regex <re> Comma-separated regex strings for content filtering.
|
|
24
24
|
--force Overwrite existing unmanaged files.
|
|
25
25
|
--keep-existing Skip files that already exist; create missing ones.
|
|
26
|
-
--
|
|
27
|
-
--
|
|
26
|
+
--gitignore [bool] Enable/disable .gitignore update (default: true). Use --gitignore=false to disable.
|
|
27
|
+
--managed [bool] Enable/disable managed mode (default: true). Use --managed=false to write without .npmdata marker.
|
|
28
28
|
--dry-run Report changes without writing to disk.
|
|
29
29
|
--upgrade Force fresh package install even if satisfying version installed.
|
|
30
30
|
--presets <tags> Comma-separated preset tags; only matching entries are processed.
|
|
@@ -48,7 +48,7 @@ Options:
|
|
|
48
48
|
--output, -o <dir> Output directory path.
|
|
49
49
|
--files <globs> Glob patterns for file selection.
|
|
50
50
|
--content-regex <re> Regex strings for content filtering.
|
|
51
|
-
--
|
|
51
|
+
--managed [bool] Silently skip unmanaged entries. Use --managed=false.
|
|
52
52
|
--presets <tags> Comma-separated preset tags; only matching entries are checked.
|
|
53
53
|
--config <file> Path to a config file (overrides auto-discovered .npmdatarc / package.json).
|
|
54
54
|
--verbose, -v Print detailed comparison information.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/fileset/check.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,WAAW,EAEZ,MAAM,UAAU,CAAC;AAMlB;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,mBAAmB,EAAE,GAC5B,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/fileset/check.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,WAAW,EAEZ,MAAM,UAAU,CAAC;AAMlB;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,mBAAmB,EAAE,GAC5B,OAAO,CAAC,WAAW,CAAC,CAuDtB"}
|
package/dist/fileset/check.js
CHANGED
|
@@ -55,10 +55,14 @@ async function checkFileset(pkgPath, outputDir, selector, outputConfig, marker)
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
// Find extra files: in filtered package source but never extracted (not in marker)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
// Find extra files: in filtered package source but never extracted (not in marker).
|
|
59
|
+
// Only perform this check when the marker is non-empty; an empty marker means no
|
|
60
|
+
// extraction has taken place or everything was purged, so there is nothing to drift.
|
|
61
|
+
if (marker.length > 0) {
|
|
62
|
+
for (const relPath of pkgFiles) {
|
|
63
|
+
if (!managedByPath.has(relPath)) {
|
|
64
|
+
result.extra.push(relPath);
|
|
65
|
+
}
|
|
62
66
|
}
|
|
63
67
|
}
|
|
64
68
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/fileset/check.ts"],"names":[],"mappings":";;;;;AA2BA,
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/fileset/check.ts"],"names":[],"mappings":";;;;;AA2BA,oCA6DC;AAxFD,0DAA6B;AAC7B,sDAAyB;AASzB,oCAAgD;AAChD,0EAAmF;AAEnF,mDAAwD;AAExD;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,YAAY,CAChC,OAAsB,EACtB,SAAiB,EACjB,QAAwB,EACxB,YAA0B,EAC1B,MAA6B;IAE7B,MAAM,mBAAmB,GAA+B,YAAY,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAE/F,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,wBAAwB;QACxB,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClC,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAA8B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3F,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,MAAM,IAAA,qCAAqB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAErC,MAAM,MAAM,GAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAErE,0BAA0B;IAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,iDAAiD;QACjD,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,iBAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG,IAAA,uDAAgC,EAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;YACtF,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,WAAW,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,MAAM,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;YAE1C,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,iFAAiF;IACjF,qFAAqF;IACrF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/fileset/diff.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAMlB;;;;;;;;;;;;GAYG;AACH,wBAAsB,IAAI,CACxB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,mBAAmB,EAAE,EACrC,mBAAmB,EAAE,wBAAwB,EAAE,GAC9C,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/fileset/diff.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAMlB;;;;;;;;;;;;GAYG;AACH,wBAAsB,IAAI,CACxB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,mBAAmB,EAAE,EACrC,mBAAmB,EAAE,wBAAwB,EAAE,GAC9C,OAAO,CAAC,aAAa,CAAC,CAoFxB"}
|
package/dist/fileset/diff.js
CHANGED
|
@@ -75,9 +75,7 @@ async function diff(pkgPath, outputDir, selector, outputConfig, existingMarker,
|
|
|
75
75
|
continue;
|
|
76
76
|
}
|
|
77
77
|
// Managed file — compare hashes
|
|
78
|
-
const
|
|
79
|
-
const transformedContent = (0, content_replacements_1.applyContentReplacementsToBuffer)(srcContent.toString(), contentReplacements);
|
|
80
|
-
const srcHash = hashBuffer(transformedContent);
|
|
78
|
+
const srcHash = await hashSrcWithReplacements(srcPath, contentReplacements);
|
|
81
79
|
const destHash = await (0, utils_1.hashFile)(destPath);
|
|
82
80
|
if (srcHash === destHash) {
|
|
83
81
|
result.toSkip.push({ relPath, reason: 'keep-existing' });
|
|
@@ -99,7 +97,9 @@ async function diff(pkgPath, outputDir, selector, outputConfig, existingMarker,
|
|
|
99
97
|
return result;
|
|
100
98
|
}
|
|
101
99
|
async function hashSrcWithReplacements(srcPath, contentReplacements) {
|
|
102
|
-
|
|
100
|
+
// For binary files and when no replacements are configured, hash raw bytes
|
|
101
|
+
// so the result is consistent with hashFile() used for the destination.
|
|
102
|
+
if (contentReplacements.length === 0 || (0, utils_1.isBinaryFile)(srcPath))
|
|
103
103
|
return (0, utils_1.hashFile)(srcPath);
|
|
104
104
|
const content = node_fs_1.default.readFileSync(srcPath, 'utf8');
|
|
105
105
|
const transformed = (0, content_replacements_1.applyContentReplacementsToBuffer)(content, contentReplacements);
|
|
@@ -108,7 +108,4 @@ async function hashSrcWithReplacements(srcPath, contentReplacements) {
|
|
|
108
108
|
function hashString(content) {
|
|
109
109
|
return node_crypto_1.default.createHash('sha256').update(content).digest('hex');
|
|
110
110
|
}
|
|
111
|
-
function hashBuffer(content) {
|
|
112
|
-
return hashString(content);
|
|
113
|
-
}
|
|
114
111
|
//# sourceMappingURL=diff.js.map
|
package/dist/fileset/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/fileset/diff.ts"],"names":[],"mappings":";;;;;AA6BA,
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/fileset/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/fileset/execute.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAOlB;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,mBAAmB,EAAE,EAErC,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/fileset/execute.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAOlB;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,mBAAmB,EAAE,EAErC,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,CAAC,CA2GxB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBvF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE"}
|
package/dist/fileset/execute.js
CHANGED
|
@@ -45,7 +45,7 @@ async function execute(map, outputDir, outputConfig, pkg, pkgVersion, existingMa
|
|
|
45
45
|
// Write toAdd files
|
|
46
46
|
for (const op of map.toAdd) {
|
|
47
47
|
if (verbose) {
|
|
48
|
-
console.log(`[verbose] execute: adding file ${op.
|
|
48
|
+
console.log(`[verbose] execute: adding file ${op.destPath}`);
|
|
49
49
|
}
|
|
50
50
|
if (!dryRun) {
|
|
51
51
|
(0, utils_1.ensureDir)(node_path_1.default.dirname(op.destPath));
|
|
@@ -64,7 +64,7 @@ async function execute(map, outputDir, outputConfig, pkg, pkgVersion, existingMa
|
|
|
64
64
|
// Write toModify files
|
|
65
65
|
for (const op of map.toModify) {
|
|
66
66
|
if (verbose) {
|
|
67
|
-
console.log(`[verbose] execute: modifying file ${op.
|
|
67
|
+
console.log(`[verbose] execute: modifying file ${op.destPath}`);
|
|
68
68
|
}
|
|
69
69
|
if (!dryRun) {
|
|
70
70
|
(0, utils_1.ensureDir)(node_path_1.default.dirname(op.destPath));
|
|
@@ -78,9 +78,10 @@ async function execute(map, outputDir, outputConfig, pkg, pkgVersion, existingMa
|
|
|
78
78
|
}
|
|
79
79
|
result.modified += 1;
|
|
80
80
|
}
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
|
|
81
|
+
// Deletions are deferred: action-extract performs them after all filesets are
|
|
82
|
+
// processed and counts them independently via deferredDeletes.length.
|
|
83
|
+
// ExecuteResult.deleted is intentionally left at 0 here to avoid double-counting.
|
|
84
|
+
// result.deleted = 0; (already initialised to 0 above)
|
|
84
85
|
// Update marker and gitignore
|
|
85
86
|
if (!dryRun && !unmanaged) {
|
|
86
87
|
const marker = (0, markers_1.markerPath)(outputDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/fileset/execute.ts"],"names":[],"mappings":";;;;;AAmCA,
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/fileset/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { ManagedFileMetadata } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* Read all managed file entries from a .npmdata marker file.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Format: path|packageName|packageVersion — one row per file, no header.
|
|
5
|
+
* Pipe is used as separator so file paths containing commas are handled safely.
|
|
6
6
|
*/
|
|
7
7
|
export declare function readMarker(markerFilePath: string): Promise<ManagedFileMetadata[]>;
|
|
8
8
|
/**
|
|
9
9
|
* Write managed file entries to a .npmdata marker file.
|
|
10
|
-
*
|
|
10
|
+
* Format: path|packageName|packageVersion — one row per file, no header.
|
|
11
11
|
* Makes the file read-only after writing.
|
|
12
12
|
*/
|
|
13
13
|
export declare function writeMarker(markerFilePath: string, entries: ManagedFileMetadata[]): Promise<void>;
|
package/dist/fileset/markers.js
CHANGED
|
@@ -13,8 +13,8 @@ const utils_1 = require("../utils");
|
|
|
13
13
|
const constants_1 = require("./constants");
|
|
14
14
|
/**
|
|
15
15
|
* Read all managed file entries from a .npmdata marker file.
|
|
16
|
-
*
|
|
17
|
-
*
|
|
16
|
+
* Format: path|packageName|packageVersion — one row per file, no header.
|
|
17
|
+
* Pipe is used as separator so file paths containing commas are handled safely.
|
|
18
18
|
*/
|
|
19
19
|
async function readMarker(markerFilePath) {
|
|
20
20
|
if (!node_fs_1.default.existsSync(markerFilePath)) {
|
|
@@ -23,7 +23,7 @@ async function readMarker(markerFilePath) {
|
|
|
23
23
|
const content = node_fs_1.default.readFileSync(markerFilePath, 'utf8');
|
|
24
24
|
const lines = content.split('\n').filter((line) => line.trim() !== '');
|
|
25
25
|
return lines.map((line) => {
|
|
26
|
-
const fields = line.split('
|
|
26
|
+
const fields = line.split('|');
|
|
27
27
|
return {
|
|
28
28
|
path: fields[0] ?? '',
|
|
29
29
|
packageName: fields[1] ?? '',
|
|
@@ -33,7 +33,7 @@ async function readMarker(markerFilePath) {
|
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Write managed file entries to a .npmdata marker file.
|
|
36
|
-
*
|
|
36
|
+
* Format: path|packageName|packageVersion — one row per file, no header.
|
|
37
37
|
* Makes the file read-only after writing.
|
|
38
38
|
*/
|
|
39
39
|
async function writeMarker(markerFilePath, entries) {
|
|
@@ -49,7 +49,7 @@ async function writeMarker(markerFilePath, entries) {
|
|
|
49
49
|
}
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
|
-
const rows = entries.map((e) => `${e.path}
|
|
52
|
+
const rows = entries.map((e) => `${e.path}|${e.packageName}|${e.packageVersion}`);
|
|
53
53
|
node_fs_1.default.writeFileSync(markerFilePath, `${rows.join('\n')}\n`, 'utf8');
|
|
54
54
|
node_fs_1.default.chmodSync(markerFilePath, 0o444);
|
|
55
55
|
}
|
package/dist/fileset/purge.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { ManagedFileMetadata, PurgeResult } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* Purge all managed files in entries from the output directory.
|
|
4
|
-
* Also removes symlinks, empty directories, marker
|
|
4
|
+
* Also removes symlinks, empty directories, and cleans up marker / gitignore entries.
|
|
5
|
+
*
|
|
6
|
+
* Marker update: only the paths listed in `entries` are removed from the marker.
|
|
7
|
+
* Entries belonging to other packages that share the same output directory are
|
|
8
|
+
* preserved. The marker file is deleted only when it becomes empty.
|
|
9
|
+
*
|
|
10
|
+
* Gitignore update: only entries for the purged paths are removed.
|
|
5
11
|
*
|
|
6
12
|
* @param outputDir Absolute path to the output directory.
|
|
7
13
|
* @param entries List of managed file entries to remove.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purge.d.ts","sourceRoot":"","sources":["../../src/fileset/purge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO5D
|
|
1
|
+
{"version":3,"file":"purge.d.ts","sourceRoot":"","sources":["../../src/fileset/purge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO5D;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,WAAW,CAAC,CAyCtB"}
|
package/dist/fileset/purge.js
CHANGED
|
@@ -12,7 +12,13 @@ const gitignore_1 = require("./gitignore");
|
|
|
12
12
|
const constants_1 = require("./constants");
|
|
13
13
|
/**
|
|
14
14
|
* Purge all managed files in entries from the output directory.
|
|
15
|
-
* Also removes symlinks, empty directories, marker
|
|
15
|
+
* Also removes symlinks, empty directories, and cleans up marker / gitignore entries.
|
|
16
|
+
*
|
|
17
|
+
* Marker update: only the paths listed in `entries` are removed from the marker.
|
|
18
|
+
* Entries belonging to other packages that share the same output directory are
|
|
19
|
+
* preserved. The marker file is deleted only when it becomes empty.
|
|
20
|
+
*
|
|
21
|
+
* Gitignore update: only entries for the purged paths are removed.
|
|
16
22
|
*
|
|
17
23
|
* @param outputDir Absolute path to the output directory.
|
|
18
24
|
* @param entries List of managed file entries to remove.
|
|
@@ -23,7 +29,7 @@ async function purgeFileset(outputDir, entries, dryRun) {
|
|
|
23
29
|
const result = { deleted: 0, symlinksRemoved: 0, dirsRemoved: 0 };
|
|
24
30
|
if (!node_fs_1.default.existsSync(outputDir))
|
|
25
31
|
return result;
|
|
26
|
-
// 1. Delete managed files
|
|
32
|
+
// 1. Delete managed files from disk
|
|
27
33
|
for (const entry of entries) {
|
|
28
34
|
const fullPath = node_path_1.default.join(outputDir, entry.path);
|
|
29
35
|
if (node_fs_1.default.existsSync(fullPath)) {
|
|
@@ -44,20 +50,15 @@ async function purgeFileset(outputDir, entries, dryRun) {
|
|
|
44
50
|
result.symlinksRemoved = await (0, symlinks_1.removeAllSymlinks)(outputDir);
|
|
45
51
|
// 3. Remove empty directories bottom-up
|
|
46
52
|
result.dirsRemoved = removeEmptyDirs(outputDir);
|
|
47
|
-
// 4.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
// 5. Remove gitignore entries
|
|
59
|
-
const removedPaths = entries.map((e) => e.path);
|
|
60
|
-
await (0, gitignore_1.removeFromGitignore)(outputDir, removedPaths);
|
|
53
|
+
// 4. Update marker: remove only the paths that were part of this purge operation.
|
|
54
|
+
// Entries from other packages sharing this output directory are preserved.
|
|
55
|
+
// The marker file is deleted automatically by writeMarker when it becomes empty.
|
|
56
|
+
const purgedPaths = new Set(entries.map((e) => e.path));
|
|
57
|
+
const currentMarkerEntries = await (0, markers_1.readMarker)((0, markers_1.markerPath)(outputDir));
|
|
58
|
+
const updatedMarkerEntries = currentMarkerEntries.filter((e) => !purgedPaths.has(e.path));
|
|
59
|
+
await (0, markers_1.writeMarker)((0, markers_1.markerPath)(outputDir), updatedMarkerEntries);
|
|
60
|
+
// 5. Remove gitignore entries only for the purged paths
|
|
61
|
+
await (0, gitignore_1.removeFromGitignore)(outputDir, [...purgedPaths]);
|
|
61
62
|
}
|
|
62
63
|
return result;
|
|
63
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../../src/fileset/purge.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../../src/fileset/purge.ts"],"names":[],"mappings":"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"}
|
package/dist/npmdata-0.0.1.tgz
CHANGED
|
Binary file
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NpmdataExtractEntry, ProgressEvent } from '../types';
|
|
2
2
|
export type CheckOptions = {
|
|
3
3
|
entries: NpmdataExtractEntry[];
|
|
4
|
-
config: NpmdataConfig | null;
|
|
5
4
|
cwd: string;
|
|
6
5
|
presets?: string[];
|
|
7
6
|
verbose?: boolean;
|
|
8
7
|
onProgress?: (event: ProgressEvent) => void;
|
|
9
8
|
skipUnmanaged?: boolean;
|
|
9
|
+
visitedPackages?: Set<string>;
|
|
10
10
|
};
|
|
11
11
|
export type CheckSummary = {
|
|
12
12
|
missing: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-check.d.ts","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action-check.d.ts","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAU9D,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B,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;AAEH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA8I9E"}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.actionCheck = actionCheck;
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
10
|
const utils_1 = require("../utils");
|
|
10
11
|
const markers_1 = require("../fileset/markers");
|
|
@@ -15,7 +16,7 @@ const check_1 = require("../fileset/check");
|
|
|
15
16
|
*/
|
|
16
17
|
// eslint-disable-next-line complexity
|
|
17
18
|
async function actionCheck(options) {
|
|
18
|
-
const { entries, cwd, presets = [], verbose = false, onProgress } = options;
|
|
19
|
+
const { entries, cwd, presets = [], verbose = false, onProgress, visitedPackages = new Set(), } = options;
|
|
19
20
|
const summary = { missing: [], modified: [], extra: [] };
|
|
20
21
|
// Filter by presets (same behaviour as purge)
|
|
21
22
|
const filtered = (0, utils_1.filterEntriesByPresets)(entries, presets);
|
|
@@ -39,14 +40,18 @@ async function actionCheck(options) {
|
|
|
39
40
|
});
|
|
40
41
|
// Check if package is installed
|
|
41
42
|
const pkgPath = (0, utils_1.getInstalledPackagePath)(pkg.name, cwd);
|
|
42
|
-
// Read existing marker
|
|
43
|
+
// Read existing marker and filter to entries owned by this package only.
|
|
44
|
+
// Multiple packages may share the same outputDir; passing the full marker to
|
|
45
|
+
// checkFileset would cause files owned by other packages to be checked against
|
|
46
|
+
// the current package's source, producing false positives.
|
|
43
47
|
const existingMarker = await (0, markers_1.readOutputDirMarker)(outputDir);
|
|
48
|
+
const pkgMarker = existingMarker.filter((m) => m.packageName === pkg.name);
|
|
44
49
|
if (!pkgPath) {
|
|
45
50
|
console.error(`Package ${pkg.name} is not installed. Run 'extract' first.`);
|
|
46
|
-
summary.missing.push(...
|
|
51
|
+
summary.missing.push(...pkgMarker.map((m) => m.path));
|
|
47
52
|
continue;
|
|
48
53
|
}
|
|
49
|
-
const result = await (0, check_1.checkFileset)(pkgPath, outputDir, entry.selector ?? {}, entry.output ?? {},
|
|
54
|
+
const result = await (0, check_1.checkFileset)(pkgPath, outputDir, entry.selector ?? {}, entry.output ?? {}, pkgMarker);
|
|
50
55
|
summary.missing.push(...result.missing);
|
|
51
56
|
summary.modified.push(...result.modified);
|
|
52
57
|
summary.extra.push(...result.extra);
|
|
@@ -55,6 +60,55 @@ async function actionCheck(options) {
|
|
|
55
60
|
packageName: pkg.name,
|
|
56
61
|
packageVersion: pkg.version ?? 'latest',
|
|
57
62
|
});
|
|
63
|
+
// Hierarchical check: if the installed package declares npmdata.sets, recurse into them
|
|
64
|
+
const installedPkgPath = (0, utils_1.getInstalledIfSatisfies)(pkg.name, pkg.version, cwd);
|
|
65
|
+
if (installedPkgPath) {
|
|
66
|
+
let pkgNpmdataSets;
|
|
67
|
+
try {
|
|
68
|
+
const depPkgJson = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(installedPkgPath, 'package.json')).toString());
|
|
69
|
+
pkgNpmdataSets = depPkgJson.npmdata?.sets;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (verbose) {
|
|
73
|
+
console.warn(`[verbose] check: could not read npmdata.sets from ${pkg.name}/package.json: ${error}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (pkgNpmdataSets && pkgNpmdataSets.length > 0) {
|
|
77
|
+
const siblingNames = new Set(entries.map((e) => (0, utils_1.parsePackageSpec)(e.package).name));
|
|
78
|
+
const presetFilteredSets = (0, utils_1.filterEntriesByPresets)(pkgNpmdataSets, entry.selector?.presets ?? []);
|
|
79
|
+
const filteredSets = presetFilteredSets.filter((e) => !siblingNames.has((0, utils_1.parsePackageSpec)(e.package).name) &&
|
|
80
|
+
!visitedPackages.has((0, utils_1.parsePackageSpec)(e.package).name));
|
|
81
|
+
if (filteredSets.length > 0) {
|
|
82
|
+
const visitedSet = new Set(visitedPackages);
|
|
83
|
+
visitedSet.add(pkg.name);
|
|
84
|
+
const outputConfig = entry.output ?? {};
|
|
85
|
+
const inheritedEntries = filteredSets.map((depEntry) => {
|
|
86
|
+
const { path: depPath, ...restOutput } = depEntry.output ?? {};
|
|
87
|
+
return {
|
|
88
|
+
...depEntry,
|
|
89
|
+
output: {
|
|
90
|
+
...restOutput,
|
|
91
|
+
path: node_path_1.default.join(outputConfig.path ?? '.', depPath ?? '.'),
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
if (verbose) {
|
|
96
|
+
console.log(`[verbose] check: recursing into ${filteredSets.length} transitive set(s) from ${pkg.name}`);
|
|
97
|
+
}
|
|
98
|
+
const subResult = await actionCheck({
|
|
99
|
+
entries: inheritedEntries,
|
|
100
|
+
cwd,
|
|
101
|
+
presets,
|
|
102
|
+
verbose,
|
|
103
|
+
onProgress,
|
|
104
|
+
visitedPackages: visitedSet,
|
|
105
|
+
});
|
|
106
|
+
summary.missing.push(...subResult.missing);
|
|
107
|
+
summary.modified.push(...subResult.modified);
|
|
108
|
+
summary.extra.push(...subResult.extra);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
58
112
|
}
|
|
59
113
|
return summary;
|
|
60
114
|
}
|