npmdata 0.2.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -9
- package/bin/npmdata.js +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +128 -19
- package/dist/cli.js.map +1 -1
- package/dist/consumer.d.ts +32 -2
- package/dist/consumer.d.ts.map +1 -1
- package/dist/consumer.js +151 -20
- package/dist/consumer.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/npmdata-0.0.1.tgz +0 -0
- package/dist/publisher.d.ts +15 -3
- package/dist/publisher.d.ts.map +1 -1
- package/dist/publisher.js +66 -52
- package/dist/publisher.js.map +1 -1
- package/dist/runner.d.ts +63 -2
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +356 -66
- package/dist/runner.js.map +1 -1
- package/dist/types.d.ts +141 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +7 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +10 -2
- package/dist/utils.js.map +1 -1
- package/package.json +3 -2
package/dist/publisher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../src/publisher.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../src/publisher.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -1,6 +1,67 @@
|
|
|
1
|
+
import { NpmdataExtractEntry } from './types';
|
|
1
2
|
/**
|
|
2
|
-
*
|
|
3
|
+
* Build a CLI command string that purges (removes) all managed files for the entry's package
|
|
4
|
+
* from its output directory. No package installation is required.
|
|
5
|
+
*/
|
|
6
|
+
export declare function buildPurgeCommand(cliPath: string, entry: NpmdataExtractEntry): string;
|
|
7
|
+
/**
|
|
8
|
+
* Collects all unique tags that appear across the given npmdata entries, sorted alphabetically.
|
|
9
|
+
*/
|
|
10
|
+
export declare function collectAllTags(entries: NpmdataExtractEntry[]): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Prints a help message to stdout, listing the extract action, all options, and available tags.
|
|
13
|
+
*/
|
|
14
|
+
export declare function printHelp(packageName: string, availableTags: string[]): void;
|
|
15
|
+
/**
|
|
16
|
+
* Parses --tags from an argv array and returns the list of requested tags (split by comma).
|
|
17
|
+
* Returns an empty array when --tags is not present.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseTagsFromArgv(argv: string[]): string[];
|
|
20
|
+
/**
|
|
21
|
+
* Filter entries by requested tags. When no tags are requested all entries pass through.
|
|
22
|
+
* When tags are requested only entries that share at least one tag with the requested list
|
|
23
|
+
* are included.
|
|
24
|
+
*/
|
|
25
|
+
export declare function filterEntriesByTags(entries: NpmdataExtractEntry[], requestedTags: string[]): NpmdataExtractEntry[];
|
|
26
|
+
/**
|
|
27
|
+
* Apply the symlink configs from an extraction entry.
|
|
28
|
+
*
|
|
29
|
+
* For each config:
|
|
30
|
+
* 1. Expands the `source` glob inside the resolved `outputDir`.
|
|
31
|
+
* 2. Ensures the `target` directory exists.
|
|
32
|
+
* 3. Removes stale symlinks from the target dir that previously pointed into
|
|
33
|
+
* outputDir but are no longer matched by the current glob result.
|
|
34
|
+
* 4. Creates (or updates) symlinks for every matched file/directory.
|
|
35
|
+
*
|
|
36
|
+
* Only symlinks whose targets live inside outputDir are managed; any other
|
|
37
|
+
* symlinks in the target directory are left untouched.
|
|
38
|
+
*/
|
|
39
|
+
export declare function applySymlinks(entry: NpmdataExtractEntry, cwd?: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Apply the content-replacement configs from an extraction entry.
|
|
42
|
+
*
|
|
43
|
+
* For each config:
|
|
44
|
+
* 1. Expands the `files` glob inside `cwd`.
|
|
45
|
+
* 2. Reads each matched file.
|
|
46
|
+
* 3. Applies the regex replacement (global, multiline).
|
|
47
|
+
* 4. Writes the file back only when the content changed.
|
|
48
|
+
*/
|
|
49
|
+
export declare function applyContentReplacements(entry: NpmdataExtractEntry, cwd?: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Check whether the content-replacement configs from an extraction entry are
|
|
52
|
+
* currently in effect in the workspace.
|
|
53
|
+
*
|
|
54
|
+
* Returns a list of file paths where the replacement pattern still matches
|
|
55
|
+
* (i.e. the replacement has not been applied or has drifted). An empty list
|
|
56
|
+
* means everything is in sync.
|
|
57
|
+
*/
|
|
58
|
+
export declare function checkContentReplacements(entry: NpmdataExtractEntry, cwd?: string): string[];
|
|
59
|
+
/**
|
|
60
|
+
* Runs extraction for each entry defined in the publishable package's package.json "npmdata" array.
|
|
61
|
+
* Invokes the npmdata CLI once per entry so that all CLI output and error handling is preserved.
|
|
3
62
|
* Called from the minimal generated bin script with its own __dirname as binDir.
|
|
63
|
+
*
|
|
64
|
+
* Pass --tags <tag1,tag2> to limit extraction to entries whose tags overlap with the given list.
|
|
4
65
|
*/
|
|
5
|
-
export declare function run(binDir: string): void;
|
|
66
|
+
export declare function run(binDir: string, argv?: string[]): void;
|
|
6
67
|
//# sourceMappingURL=runner.d.ts.map
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAmC9C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAOrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAUvE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CA0B5E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAS1D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,aAAa,EAAE,MAAM,EAAE,GACtB,mBAAmB,EAAE,CAKvB;AA8ID;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAqC3F;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,mBAAmB,EAC1B,GAAG,GAAE,MAAsB,GAC1B,IAAI,CAaN;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,mBAAmB,EAC1B,GAAG,GAAE,MAAsB,GAC1B,MAAM,EAAE,CAmBV;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CA0CvE"}
|
package/dist/runner.js
CHANGED
|
@@ -3,95 +3,385 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildPurgeCommand = buildPurgeCommand;
|
|
7
|
+
exports.collectAllTags = collectAllTags;
|
|
8
|
+
exports.printHelp = printHelp;
|
|
9
|
+
exports.parseTagsFromArgv = parseTagsFromArgv;
|
|
10
|
+
exports.filterEntriesByTags = filterEntriesByTags;
|
|
11
|
+
exports.applySymlinks = applySymlinks;
|
|
12
|
+
exports.applyContentReplacements = applyContentReplacements;
|
|
13
|
+
exports.checkContentReplacements = checkContentReplacements;
|
|
6
14
|
exports.run = run;
|
|
7
|
-
/* eslint-disable
|
|
15
|
+
/* eslint-disable no-restricted-syntax */
|
|
8
16
|
const node_child_process_1 = require("node:child_process");
|
|
9
17
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
18
|
const node_path_1 = __importDefault(require("node:path"));
|
|
19
|
+
const minimatch_1 = require("minimatch");
|
|
20
|
+
const utils_1 = require("./utils");
|
|
11
21
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
22
|
+
* Extract just the package name (without version specifier) from a package spec string.
|
|
23
|
+
* Delegates to the shared parsePackageSpec utility.
|
|
14
24
|
*/
|
|
15
|
-
function
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
25
|
+
function parseEntryPackageName(spec) {
|
|
26
|
+
const { name } = (0, utils_1.parsePackageSpec)(spec);
|
|
27
|
+
return { name };
|
|
28
|
+
}
|
|
29
|
+
function buildExtractCommand(cliPath, entry) {
|
|
30
|
+
const outputFlag = ` --output "${entry.outputDir}"`;
|
|
31
|
+
const forceFlag = entry.force ? ' --force' : '';
|
|
32
|
+
const keepExistingFlag = entry.keepExisting ? ' --keep-existing' : '';
|
|
33
|
+
const gitignoreFlag = entry.gitignore === false ? ' --no-gitignore' : '';
|
|
34
|
+
const unmanagedFlag = entry.unmanaged ? ' --unmanaged' : '';
|
|
35
|
+
const silentFlag = entry.silent ? ' --silent' : '';
|
|
36
|
+
const dryRunFlag = entry.dryRun ? ' --dry-run' : '';
|
|
37
|
+
const upgradeFlag = entry.upgrade ? ' --upgrade' : '';
|
|
38
|
+
const filesFlag = entry.files && entry.files.length > 0 ? ` --files "${entry.files.join(',')}"` : '';
|
|
39
|
+
const contentRegexFlag = entry.contentRegexes && entry.contentRegexes.length > 0
|
|
40
|
+
? ` --content-regex "${entry.contentRegexes.join(',')}"`
|
|
41
|
+
: '';
|
|
42
|
+
return `node "${cliPath}" extract --packages "${entry.package}"${outputFlag}${forceFlag}${keepExistingFlag}${gitignoreFlag}${unmanagedFlag}${silentFlag}${dryRunFlag}${upgradeFlag}${filesFlag}${contentRegexFlag}`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Build a CLI command string that purges (removes) all managed files for the entry's package
|
|
46
|
+
* from its output directory. No package installation is required.
|
|
47
|
+
*/
|
|
48
|
+
function buildPurgeCommand(cliPath, entry) {
|
|
49
|
+
const { name } = parseEntryPackageName(entry.package);
|
|
50
|
+
const outputFlag = ` --output "${entry.outputDir}"`;
|
|
51
|
+
// Propagate silent/dry-run settings from the entry if present.
|
|
52
|
+
const silentFlag = entry.silent ? ' --silent' : '';
|
|
53
|
+
const dryRunFlag = entry.dryRun ? ' --dry-run' : '';
|
|
54
|
+
return `node "${cliPath}" purge --packages "${name}"${outputFlag}${silentFlag}${dryRunFlag}`;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Collects all unique tags that appear across the given npmdata entries, sorted alphabetically.
|
|
58
|
+
*/
|
|
59
|
+
function collectAllTags(entries) {
|
|
60
|
+
const tagSet = new Set();
|
|
61
|
+
for (const entry of entries) {
|
|
62
|
+
if (entry.tags) {
|
|
63
|
+
for (const tag of entry.tags) {
|
|
64
|
+
tagSet.add(tag);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return Array.from(tagSet).sort();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Prints a help message to stdout, listing the extract action, all options, and available tags.
|
|
72
|
+
*/
|
|
73
|
+
function printHelp(packageName, availableTags) {
|
|
74
|
+
const tagsLine = availableTags.length > 0 ? availableTags.join(', ') : '(none defined in package.json)';
|
|
75
|
+
const exampleTag = availableTags.length > 0 ? availableTags[0] : 'my-tag';
|
|
76
|
+
process.stdout.write([
|
|
77
|
+
`Usage: ${packageName} <action> [options]`,
|
|
78
|
+
'',
|
|
79
|
+
'Actions:',
|
|
80
|
+
' extract Extract files from the source package(s) defined in package.json',
|
|
81
|
+
'',
|
|
82
|
+
'Options:',
|
|
83
|
+
' --help Show this help message',
|
|
84
|
+
' --tags <tag1,tag2> Limit extraction to entries whose tags overlap (comma-separated)',
|
|
85
|
+
'',
|
|
86
|
+
`Available tags: ${tagsLine}`,
|
|
87
|
+
'',
|
|
88
|
+
'Examples:',
|
|
89
|
+
` ${packageName} extract`,
|
|
90
|
+
' Extract files for all entries defined in package.json',
|
|
91
|
+
'',
|
|
92
|
+
` ${packageName} extract --tags ${exampleTag}`,
|
|
93
|
+
` Extract files only for entries tagged "${exampleTag}"`,
|
|
94
|
+
'',
|
|
95
|
+
].join('\n'));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Parses --tags from an argv array and returns the list of requested tags (split by comma).
|
|
99
|
+
* Returns an empty array when --tags is not present.
|
|
100
|
+
*/
|
|
101
|
+
function parseTagsFromArgv(argv) {
|
|
102
|
+
const idx = argv.indexOf('--tags');
|
|
103
|
+
if (idx === -1 || idx + 1 >= argv.length) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
return argv[idx + 1]
|
|
107
|
+
.split(',')
|
|
108
|
+
.map((t) => t.trim())
|
|
109
|
+
.filter(Boolean);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Filter entries by requested tags. When no tags are requested all entries pass through.
|
|
113
|
+
* When tags are requested only entries that share at least one tag with the requested list
|
|
114
|
+
* are included.
|
|
115
|
+
*/
|
|
116
|
+
function filterEntriesByTags(entries, requestedTags) {
|
|
117
|
+
if (requestedTags.length === 0) {
|
|
118
|
+
return entries;
|
|
119
|
+
}
|
|
120
|
+
return entries.filter((entry) => entry.tags && entry.tags.some((t) => requestedTags.includes(t)));
|
|
121
|
+
}
|
|
122
|
+
// ─── Glob helpers ─────────────────────────────────────────────────────────────
|
|
123
|
+
/**
|
|
124
|
+
* Walk a directory tree and return the absolute paths of every node (file or
|
|
125
|
+
* directory) whose path relative to `rootDir` matches `pattern`.
|
|
126
|
+
*/
|
|
127
|
+
function globMatchInDir(rootDir, pattern) {
|
|
128
|
+
const results = [];
|
|
129
|
+
const walk = (dir, rel) => {
|
|
130
|
+
if (!node_fs_1.default.existsSync(dir))
|
|
131
|
+
return;
|
|
132
|
+
for (const name of node_fs_1.default.readdirSync(dir)) {
|
|
133
|
+
const fullPath = node_path_1.default.join(dir, name);
|
|
134
|
+
const relPath = rel ? `${rel}/${name}` : name;
|
|
135
|
+
if ((0, minimatch_1.minimatch)(relPath, pattern, { dot: true })) {
|
|
136
|
+
// eslint-disable-next-line functional/immutable-data
|
|
137
|
+
results.push(fullPath);
|
|
138
|
+
}
|
|
139
|
+
// Always descend into directories so patterns like **/skills/** can match
|
|
140
|
+
// entries deep in the tree even when the directory itself didn't match.
|
|
141
|
+
const stat = node_fs_1.default.statSync(fullPath);
|
|
142
|
+
if (stat.isDirectory()) {
|
|
143
|
+
walk(fullPath, relPath);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
walk(rootDir, '');
|
|
148
|
+
return results;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Walk a directory tree and return the absolute paths of files (not directories)
|
|
152
|
+
* whose path relative to `rootDir` matches `pattern`.
|
|
153
|
+
*/
|
|
154
|
+
function globMatchFiles(rootDir, pattern) {
|
|
155
|
+
const results = [];
|
|
156
|
+
const walk = (dir, rel) => {
|
|
157
|
+
if (!node_fs_1.default.existsSync(dir))
|
|
158
|
+
return;
|
|
159
|
+
for (const name of node_fs_1.default.readdirSync(dir)) {
|
|
160
|
+
const fullPath = node_path_1.default.join(dir, name);
|
|
161
|
+
const relPath = rel ? `${rel}/${name}` : name;
|
|
162
|
+
const stat = node_fs_1.default.statSync(fullPath);
|
|
163
|
+
if (stat.isDirectory()) {
|
|
164
|
+
walk(fullPath, relPath);
|
|
165
|
+
}
|
|
166
|
+
else if ((0, minimatch_1.minimatch)(relPath, pattern, { dot: true })) {
|
|
167
|
+
// eslint-disable-next-line functional/immutable-data
|
|
168
|
+
results.push(fullPath);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
walk(rootDir, '');
|
|
173
|
+
return results;
|
|
19
174
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Collect all existing symlinks in `targetDir` whose resolved (or as-written)
|
|
177
|
+
* link target starts with `outputDir`. Returns a map of basename → resolved
|
|
178
|
+
* target path. Dead symlinks that still point into outputDir are included so
|
|
179
|
+
* that they can be cleaned up.
|
|
180
|
+
*/
|
|
181
|
+
function collectManagedSymlinks(targetDir, outputDir) {
|
|
182
|
+
const owned = new Map();
|
|
183
|
+
if (!node_fs_1.default.existsSync(targetDir))
|
|
184
|
+
return owned;
|
|
185
|
+
// Resolve outputDir through any intermediate symlinks (e.g. /var → /private/var on macOS)
|
|
186
|
+
// so prefix comparisons work correctly on all platforms.
|
|
187
|
+
// eslint-disable-next-line functional/no-let, functional/no-try-statements
|
|
188
|
+
let resolvedOutputDir = outputDir;
|
|
189
|
+
// eslint-disable-next-line functional/no-try-statements
|
|
190
|
+
try {
|
|
191
|
+
resolvedOutputDir = node_fs_1.default.realpathSync(outputDir);
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
// If outputDir does not exist, fall back to the raw path.
|
|
195
|
+
}
|
|
196
|
+
const normalizedOutput = resolvedOutputDir.endsWith(node_path_1.default.sep)
|
|
197
|
+
? resolvedOutputDir
|
|
198
|
+
: `${resolvedOutputDir}${node_path_1.default.sep}`;
|
|
199
|
+
for (const name of node_fs_1.default.readdirSync(targetDir)) {
|
|
200
|
+
const symlinkPath = node_path_1.default.join(targetDir, name);
|
|
201
|
+
const lstat = node_fs_1.default.lstatSync(symlinkPath);
|
|
202
|
+
if (lstat.isSymbolicLink()) {
|
|
203
|
+
// Try to resolve (handles live symlinks).
|
|
204
|
+
// eslint-disable-next-line functional/no-try-statements
|
|
205
|
+
try {
|
|
206
|
+
const resolved = node_fs_1.default.realpathSync(symlinkPath);
|
|
207
|
+
if (resolved === resolvedOutputDir || resolved.startsWith(normalizedOutput)) {
|
|
208
|
+
owned.set(name, resolved);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// Dead symlink – read the raw link target to see if it points into outputDir.
|
|
213
|
+
const rawTarget = node_fs_1.default.readlinkSync(symlinkPath);
|
|
214
|
+
const absTarget = node_path_1.default.resolve(targetDir, rawTarget);
|
|
215
|
+
const resolvedAbsTarget = absTarget; // raw path is enough for dead-link check
|
|
216
|
+
if (resolvedAbsTarget === outputDir ||
|
|
217
|
+
resolvedAbsTarget.startsWith(`${outputDir}${node_path_1.default.sep}`)) {
|
|
218
|
+
owned.set(name, absTarget);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
33
221
|
}
|
|
34
|
-
|
|
35
|
-
|
|
222
|
+
}
|
|
223
|
+
return owned;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Determine the symlink action for a single target path.
|
|
227
|
+
* Returns 'create' when the path does not exist, 'update' when an out-of-date
|
|
228
|
+
* managed symlink exists, or 'skip' when nothing should be done.
|
|
229
|
+
*/
|
|
230
|
+
function symlinkAction(symlinkPath, sourcePath, isManaged) {
|
|
231
|
+
// eslint-disable-next-line functional/no-try-statements
|
|
232
|
+
try {
|
|
233
|
+
const lstat = node_fs_1.default.lstatSync(symlinkPath);
|
|
234
|
+
if (!lstat.isSymbolicLink())
|
|
235
|
+
return 'skip'; // Non-symlink – never clobber.
|
|
236
|
+
if (!isManaged)
|
|
237
|
+
return 'skip'; // Not managed by npmdata – leave alone.
|
|
238
|
+
// Managed symlink: only recreate if the target has drifted.
|
|
239
|
+
// eslint-disable-next-line functional/no-try-statements
|
|
240
|
+
try {
|
|
241
|
+
return node_fs_1.default.realpathSync(symlinkPath) === sourcePath ? 'skip' : 'update';
|
|
36
242
|
}
|
|
37
|
-
|
|
38
|
-
|
|
243
|
+
catch {
|
|
244
|
+
return 'update'; // Dead link – recreate.
|
|
39
245
|
}
|
|
40
|
-
|
|
41
|
-
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return 'create'; // Path does not exist.
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// ─── Post-extract operations ───────────────────────────────────────────────────
|
|
252
|
+
/**
|
|
253
|
+
* Apply the symlink configs from an extraction entry.
|
|
254
|
+
*
|
|
255
|
+
* For each config:
|
|
256
|
+
* 1. Expands the `source` glob inside the resolved `outputDir`.
|
|
257
|
+
* 2. Ensures the `target` directory exists.
|
|
258
|
+
* 3. Removes stale symlinks from the target dir that previously pointed into
|
|
259
|
+
* outputDir but are no longer matched by the current glob result.
|
|
260
|
+
* 4. Creates (or updates) symlinks for every matched file/directory.
|
|
261
|
+
*
|
|
262
|
+
* Only symlinks whose targets live inside outputDir are managed; any other
|
|
263
|
+
* symlinks in the target directory are left untouched.
|
|
264
|
+
*/
|
|
265
|
+
function applySymlinks(entry, cwd = process.cwd()) {
|
|
266
|
+
if (!entry.symlinks || entry.symlinks.length === 0)
|
|
267
|
+
return;
|
|
268
|
+
const outputDir = node_path_1.default.resolve(cwd, entry.outputDir);
|
|
269
|
+
for (const cfg of entry.symlinks) {
|
|
270
|
+
const targetDir = node_path_1.default.resolve(cwd, cfg.target);
|
|
271
|
+
node_fs_1.default.mkdirSync(targetDir, { recursive: true });
|
|
272
|
+
// Build desired symlink map: basename (in target) → absolute source path.
|
|
273
|
+
const desired = new Map();
|
|
274
|
+
for (const absMatch of globMatchInDir(outputDir, cfg.source)) {
|
|
275
|
+
desired.set(node_path_1.default.basename(absMatch), absMatch);
|
|
42
276
|
}
|
|
43
|
-
|
|
44
|
-
|
|
277
|
+
// Remove stale managed symlinks that are no longer in the desired set.
|
|
278
|
+
const existing = collectManagedSymlinks(targetDir, outputDir);
|
|
279
|
+
for (const [basename] of existing) {
|
|
280
|
+
if (!desired.has(basename)) {
|
|
281
|
+
node_fs_1.default.unlinkSync(node_path_1.default.join(targetDir, basename));
|
|
282
|
+
}
|
|
45
283
|
}
|
|
46
|
-
|
|
47
|
-
|
|
284
|
+
// Create or update symlinks.
|
|
285
|
+
for (const [basename, sourcePath] of desired) {
|
|
286
|
+
const symlinkPath = node_path_1.default.join(targetDir, basename);
|
|
287
|
+
const action = symlinkAction(symlinkPath, sourcePath, existing.has(basename));
|
|
288
|
+
if (action === 'update') {
|
|
289
|
+
node_fs_1.default.unlinkSync(symlinkPath);
|
|
290
|
+
node_fs_1.default.symlinkSync(sourcePath, symlinkPath);
|
|
291
|
+
}
|
|
292
|
+
else if (action === 'create') {
|
|
293
|
+
node_fs_1.default.symlinkSync(sourcePath, symlinkPath);
|
|
294
|
+
}
|
|
295
|
+
// 'skip' → do nothing
|
|
48
296
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Apply the content-replacement configs from an extraction entry.
|
|
301
|
+
*
|
|
302
|
+
* For each config:
|
|
303
|
+
* 1. Expands the `files` glob inside `cwd`.
|
|
304
|
+
* 2. Reads each matched file.
|
|
305
|
+
* 3. Applies the regex replacement (global, multiline).
|
|
306
|
+
* 4. Writes the file back only when the content changed.
|
|
307
|
+
*/
|
|
308
|
+
function applyContentReplacements(entry, cwd = process.cwd()) {
|
|
309
|
+
if (!entry.contentReplacements || entry.contentReplacements.length === 0)
|
|
310
|
+
return;
|
|
311
|
+
for (const cfg of entry.contentReplacements) {
|
|
312
|
+
const regex = new RegExp(cfg.match, 'gm');
|
|
313
|
+
for (const filePath of globMatchFiles(cwd, cfg.files)) {
|
|
314
|
+
const original = node_fs_1.default.readFileSync(filePath, 'utf8');
|
|
315
|
+
const updated = original.replace(regex, cfg.replace);
|
|
316
|
+
if (updated !== original) {
|
|
317
|
+
node_fs_1.default.writeFileSync(filePath, updated, 'utf8');
|
|
318
|
+
}
|
|
52
319
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Check whether the content-replacement configs from an extraction entry are
|
|
324
|
+
* currently in effect in the workspace.
|
|
325
|
+
*
|
|
326
|
+
* Returns a list of file paths where the replacement pattern still matches
|
|
327
|
+
* (i.e. the replacement has not been applied or has drifted). An empty list
|
|
328
|
+
* means everything is in sync.
|
|
329
|
+
*/
|
|
330
|
+
function checkContentReplacements(entry, cwd = process.cwd()) {
|
|
331
|
+
if (!entry.contentReplacements || entry.contentReplacements.length === 0)
|
|
332
|
+
return [];
|
|
333
|
+
const outOfSync = [];
|
|
334
|
+
for (const cfg of entry.contentReplacements) {
|
|
335
|
+
const regex = new RegExp(cfg.match, 'gm');
|
|
336
|
+
for (const filePath of globMatchFiles(cwd, cfg.files)) {
|
|
337
|
+
const content = node_fs_1.default.readFileSync(filePath, 'utf8');
|
|
338
|
+
// A file is out of sync when applying the replacement would change it.
|
|
339
|
+
const expected = content.replace(regex, cfg.replace);
|
|
340
|
+
if (expected !== content) {
|
|
341
|
+
// eslint-disable-next-line functional/immutable-data
|
|
342
|
+
outOfSync.push(filePath);
|
|
343
|
+
}
|
|
56
344
|
}
|
|
57
345
|
}
|
|
58
|
-
return
|
|
346
|
+
return outOfSync;
|
|
59
347
|
}
|
|
60
348
|
/**
|
|
61
|
-
* Runs
|
|
349
|
+
* Runs extraction for each entry defined in the publishable package's package.json "npmdata" array.
|
|
350
|
+
* Invokes the npmdata CLI once per entry so that all CLI output and error handling is preserved.
|
|
62
351
|
* Called from the minimal generated bin script with its own __dirname as binDir.
|
|
352
|
+
*
|
|
353
|
+
* Pass --tags <tag1,tag2> to limit extraction to entries whose tags overlap with the given list.
|
|
63
354
|
*/
|
|
64
|
-
function run(binDir) {
|
|
355
|
+
function run(binDir, argv = process.argv) {
|
|
65
356
|
const pkgJsonPath = node_path_1.default.join(binDir, '../package.json');
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
357
|
+
const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgJsonPath).toString());
|
|
358
|
+
const allEntries = pkg.npmdata && pkg.npmdata.length > 0 ? pkg.npmdata : [{ package: pkg.name, outputDir: '.' }];
|
|
359
|
+
const userArgs = argv.slice(2);
|
|
360
|
+
if (userArgs.length === 0 || userArgs.includes('--help')) {
|
|
361
|
+
printHelp(pkg.name, collectAllTags(allEntries));
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
const action = userArgs[0];
|
|
365
|
+
if (action !== 'extract') {
|
|
366
|
+
process.stderr.write(`Error: unknown action '${action}'. Use 'extract'.\n\n`);
|
|
367
|
+
printHelp(pkg.name, collectAllTags(allEntries));
|
|
368
|
+
return;
|
|
75
369
|
}
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
370
|
+
const requestedTags = parseTagsFromArgv(argv);
|
|
371
|
+
const entries = filterEntriesByTags(allEntries, requestedTags);
|
|
372
|
+
const excludedEntries = requestedTags.length > 0 ? allEntries.filter((e) => !entries.includes(e)) : [];
|
|
373
|
+
const cliPath = require.resolve('npmdata/dist/main.js', { paths: [binDir] });
|
|
374
|
+
for (const entry of entries) {
|
|
375
|
+
const command = buildExtractCommand(cliPath, entry);
|
|
376
|
+
(0, node_child_process_1.execSync)(command, { stdio: 'inherit' });
|
|
377
|
+
applySymlinks(entry, process.cwd());
|
|
378
|
+
applyContentReplacements(entry, process.cwd());
|
|
81
379
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
const upgradeFlag = upgrade ? ' --upgrade' : '';
|
|
88
|
-
const filesFlag = files ? ` --files "${files}"` : '';
|
|
89
|
-
const contentRegexFlag = contentRegex ? ` --content-regex "${contentRegex}"` : '';
|
|
90
|
-
command = `node "${fpCliPath}" ${action} --packages "${allPackages.join(',')}"${outputFlag}${forceFlag}${gitignoreFlag}${silentFlag}${dryRunFlag}${upgradeFlag}${filesFlag}${contentRegexFlag}`;
|
|
380
|
+
// When a tag filter is active, purge managed files from excluded entries so that
|
|
381
|
+
// the output directory contains only files from the currently active tag group.
|
|
382
|
+
for (const entry of excludedEntries) {
|
|
383
|
+
const command = buildPurgeCommand(cliPath, entry);
|
|
384
|
+
(0, node_child_process_1.execSync)(command, { stdio: 'inherit' });
|
|
91
385
|
}
|
|
92
|
-
process.on('uncaughtException', () => {
|
|
93
|
-
process.exit(3);
|
|
94
|
-
});
|
|
95
|
-
(0, node_child_process_1.execSync)(command, { stdio: 'inherit' });
|
|
96
386
|
}
|
|
97
387
|
//# sourceMappingURL=runner.js.map
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|