npmdata 0.2.1 → 0.4.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 +368 -9
- package/bin/npmdata.js +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +117 -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 +105 -18
- 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 +30 -2
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +130 -73
- package/dist/runner.js.map +1 -1
- package/dist/types.d.ts +66 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +2 -2
- package/package.json +3 -2
package/dist/publisher.js
CHANGED
|
@@ -31,19 +31,6 @@ function parsePublisherPackageSpec(spec) {
|
|
|
31
31
|
const { name, version } = (0, utils_1.parsePackageSpec)(spec);
|
|
32
32
|
return { name, version: version ?? 'latest' };
|
|
33
33
|
}
|
|
34
|
-
function validateFolders(folders, workingDir) {
|
|
35
|
-
const errors = [];
|
|
36
|
-
for (const folder of folders) {
|
|
37
|
-
const folderPath = node_path_1.default.join(workingDir, folder);
|
|
38
|
-
if (!node_fs_1.default.existsSync(folderPath)) {
|
|
39
|
-
errors.push(`Folder not found: ${folder}`);
|
|
40
|
-
}
|
|
41
|
-
else if (!node_fs_1.default.statSync(folderPath).isDirectory()) {
|
|
42
|
-
errors.push(`Not a directory: ${folder}`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return { valid: errors.length === 0, errors };
|
|
46
|
-
}
|
|
47
34
|
function generateCliScript() {
|
|
48
35
|
return `#!/usr/bin/env node
|
|
49
36
|
|
|
@@ -51,7 +38,8 @@ function generateCliScript() {
|
|
|
51
38
|
require('npmdata/dist/runner.js').run(__dirname);
|
|
52
39
|
`;
|
|
53
40
|
}
|
|
54
|
-
|
|
41
|
+
// eslint-disable-next-line complexity
|
|
42
|
+
function preparePackageJson(fileGlobs, workingDir, additionalPackages = [], gitignore = false, unmanaged = false) {
|
|
55
43
|
const packageJsonPath = node_path_1.default.join(workingDir, 'package.json');
|
|
56
44
|
// eslint-disable-next-line functional/no-let
|
|
57
45
|
let packageJson;
|
|
@@ -68,75 +56,101 @@ function preparePackageJson(folders, workingDir, additionalPackages = []) {
|
|
|
68
56
|
packageJson.name = node_path_1.default.basename(workingDir);
|
|
69
57
|
if (!packageJson.version)
|
|
70
58
|
packageJson.version = '1.0.0';
|
|
71
|
-
// eslint-disable-next-line unicorn/no-keyword-prefix
|
|
72
|
-
const newFolderPatterns = folders.map((folder) => `${folder}/**`);
|
|
73
59
|
const existingPatterns = packageJson.files ?? [];
|
|
74
|
-
|
|
75
|
-
const existingNonFolderPatterns = existingPatterns.filter((p) => !p.endsWith('/**'));
|
|
76
|
-
packageJson.files = Array.from(new Set([
|
|
77
|
-
// eslint-disable-next-line unicorn/no-keyword-prefix
|
|
78
|
-
...newFolderPatterns,
|
|
79
|
-
...existingFolderPatterns,
|
|
80
|
-
...existingNonFolderPatterns,
|
|
81
|
-
'package.json',
|
|
82
|
-
'bin/npmdata.js',
|
|
83
|
-
]));
|
|
60
|
+
packageJson.files = Array.from(new Set([...fileGlobs, ...existingPatterns, 'package.json', 'bin/npmdata.js']));
|
|
84
61
|
if (!packageJson.dependencies) {
|
|
85
62
|
packageJson.dependencies = {};
|
|
86
63
|
}
|
|
87
64
|
packageJson.dependencies.npmdata = getOwnVersion();
|
|
88
|
-
//
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
65
|
+
// Build npmdata entries array: one entry per package (main + additional)
|
|
66
|
+
const existingEntries = Array.isArray(packageJson.npmdata)
|
|
67
|
+
? packageJson.npmdata
|
|
68
|
+
: [];
|
|
69
|
+
// Ensure the main package has an entry
|
|
70
|
+
const mainName = packageJson.name;
|
|
71
|
+
const hasMainEntry = existingEntries.some((e) => {
|
|
72
|
+
const { name } = (0, utils_1.parsePackageSpec)(e.package);
|
|
73
|
+
return name === mainName;
|
|
74
|
+
});
|
|
75
|
+
if (!hasMainEntry) {
|
|
76
|
+
existingEntries.push({ package: mainName, outputDir: '.' });
|
|
77
|
+
}
|
|
78
|
+
// Set file glob patterns and gitignore on all npmdata entries
|
|
79
|
+
for (const entry of existingEntries) {
|
|
80
|
+
entry.files = fileGlobs;
|
|
81
|
+
if (!gitignore) {
|
|
82
|
+
entry.gitignore = false;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
delete entry.gitignore;
|
|
86
|
+
}
|
|
87
|
+
if (unmanaged) {
|
|
88
|
+
entry.unmanaged = true;
|
|
99
89
|
}
|
|
100
90
|
}
|
|
91
|
+
// Add additional packages as separate entries (dedup by package name)
|
|
92
|
+
for (const pkgSpec of additionalPackages) {
|
|
93
|
+
const { name: pkgName, version: pkgVersion } = parsePublisherPackageSpec(pkgSpec);
|
|
94
|
+
const alreadyPresent = existingEntries.some((e) => {
|
|
95
|
+
const { name } = (0, utils_1.parsePackageSpec)(e.package);
|
|
96
|
+
return name === pkgName;
|
|
97
|
+
});
|
|
98
|
+
if (!alreadyPresent) {
|
|
99
|
+
existingEntries.push({
|
|
100
|
+
package: pkgSpec,
|
|
101
|
+
outputDir: '.',
|
|
102
|
+
files: fileGlobs,
|
|
103
|
+
...(!gitignore ? { gitignore: false } : {}),
|
|
104
|
+
...(unmanaged ? { unmanaged: true } : {}),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (!packageJson.dependencies[pkgName]) {
|
|
108
|
+
packageJson.dependencies[pkgName] = pkgVersion;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
packageJson.npmdata = existingEntries;
|
|
101
112
|
if (!packageJson.bin) {
|
|
102
113
|
packageJson.bin = 'bin/npmdata.js';
|
|
103
114
|
}
|
|
104
115
|
return packageJson;
|
|
105
116
|
}
|
|
106
117
|
/**
|
|
107
|
-
* Initialize publisher configuration with specified
|
|
118
|
+
* Initialize publisher configuration with specified file glob patterns
|
|
108
119
|
*/
|
|
109
|
-
async function initPublisher(
|
|
120
|
+
async function initPublisher(fileGlobs, options = {}) {
|
|
110
121
|
const workingDir = options.workingDir ?? process.cwd();
|
|
111
122
|
const additionalPackages = options.additionalPackages ?? [];
|
|
123
|
+
const gitignore = options.gitignore ?? true;
|
|
124
|
+
const unmanaged = options.unmanaged ?? false;
|
|
112
125
|
// eslint-disable-next-line functional/no-try-statements
|
|
113
126
|
try {
|
|
114
|
-
if (!
|
|
115
|
-
return {
|
|
116
|
-
success: false,
|
|
117
|
-
message: 'npmdata: no folders specified. Usage: npmdata init <folder1> <folder2> ...',
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
const validation = validateFolders(folders, workingDir);
|
|
121
|
-
if (!validation.valid) {
|
|
127
|
+
if (!fileGlobs || fileGlobs.length === 0) {
|
|
122
128
|
return {
|
|
123
129
|
success: false,
|
|
124
|
-
message:
|
|
130
|
+
message: 'npmdata: no file patterns specified. Usage: npmdata init --files "docs/**,data/**"',
|
|
125
131
|
};
|
|
126
132
|
}
|
|
127
|
-
const packageJson = preparePackageJson(
|
|
133
|
+
const packageJson = preparePackageJson(fileGlobs, workingDir, additionalPackages, gitignore, unmanaged);
|
|
128
134
|
const packageJsonPath = node_path_1.default.join(workingDir, 'package.json');
|
|
129
135
|
(0, utils_1.writeJsonFile)(packageJsonPath, packageJson);
|
|
130
136
|
const cliScriptPath = node_path_1.default.join(workingDir, 'bin', 'npmdata.js');
|
|
131
137
|
node_fs_1.default.mkdirSync(node_path_1.default.dirname(cliScriptPath), { recursive: true });
|
|
132
138
|
node_fs_1.default.writeFileSync(cliScriptPath, generateCliScript(), 'utf8');
|
|
133
139
|
node_fs_1.default.chmodSync(cliScriptPath, 0o755);
|
|
134
|
-
const
|
|
140
|
+
const allEntries = packageJson.npmdata;
|
|
141
|
+
const finalAdditionalPackages = allEntries
|
|
142
|
+
.filter((e) => {
|
|
143
|
+
const { name } = (0, utils_1.parsePackageSpec)(e.package);
|
|
144
|
+
return name !== packageJson.name;
|
|
145
|
+
})
|
|
146
|
+
.map((e) => e.package);
|
|
135
147
|
return {
|
|
136
148
|
success: true,
|
|
137
149
|
message: 'npmdata: project initialization completed successfully',
|
|
138
|
-
|
|
139
|
-
additionalPackages:
|
|
150
|
+
publishedFiles: fileGlobs,
|
|
151
|
+
additionalPackages:
|
|
152
|
+
// eslint-disable-next-line no-undefined
|
|
153
|
+
finalAdditionalPackages.length > 0 ? finalAdditionalPackages : undefined,
|
|
140
154
|
packageJsonPath,
|
|
141
155
|
};
|
|
142
156
|
}
|
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,34 @@
|
|
|
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
|
+
* Runs extraction for each entry defined in the publishable package's package.json "npmdata" array.
|
|
28
|
+
* Invokes the npmdata CLI once per entry so that all CLI output and error handling is preserved.
|
|
3
29
|
* Called from the minimal generated bin script with its own __dirname as binDir.
|
|
30
|
+
*
|
|
31
|
+
* Pass --tags <tag1,tag2> to limit extraction to entries whose tags overlap with the given list.
|
|
4
32
|
*/
|
|
5
|
-
export declare function run(binDir: string): void;
|
|
33
|
+
export declare function run(binDir: string, argv?: string[]): void;
|
|
6
34
|
//# 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":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAkC9C;;;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;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CAwCvE"}
|
package/dist/runner.js
CHANGED
|
@@ -3,95 +3,152 @@ 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;
|
|
6
11
|
exports.run = run;
|
|
7
|
-
/* eslint-disable
|
|
12
|
+
/* eslint-disable no-restricted-syntax */
|
|
8
13
|
const node_child_process_1 = require("node:child_process");
|
|
9
14
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
15
|
const node_path_1 = __importDefault(require("node:path"));
|
|
16
|
+
const utils_1 = require("./utils");
|
|
11
17
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
18
|
+
* Extract just the package name (without version specifier) from a package spec string.
|
|
19
|
+
* Delegates to the shared parsePackageSpec utility.
|
|
14
20
|
*/
|
|
15
|
-
function
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
return [pkg.name, ...additional];
|
|
21
|
+
function parseEntryPackageName(spec) {
|
|
22
|
+
const { name } = (0, utils_1.parsePackageSpec)(spec);
|
|
23
|
+
return { name };
|
|
19
24
|
}
|
|
20
|
-
function
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
25
|
+
function buildExtractCommand(cliPath, entry) {
|
|
26
|
+
const outputFlag = ` --output "${entry.outputDir}"`;
|
|
27
|
+
const forceFlag = entry.force ? ' --force' : '';
|
|
28
|
+
const gitignoreFlag = entry.gitignore === false ? ' --no-gitignore' : '';
|
|
29
|
+
const unmanagedFlag = entry.unmanaged ? ' --unmanaged' : '';
|
|
30
|
+
const silentFlag = entry.silent ? ' --silent' : '';
|
|
31
|
+
const dryRunFlag = entry.dryRun ? ' --dry-run' : '';
|
|
32
|
+
const upgradeFlag = entry.upgrade ? ' --upgrade' : '';
|
|
33
|
+
const filesFlag = entry.files && entry.files.length > 0 ? ` --files "${entry.files.join(',')}"` : '';
|
|
34
|
+
const contentRegexFlag = entry.contentRegexes && entry.contentRegexes.length > 0
|
|
35
|
+
? ` --content-regex "${entry.contentRegexes.join(',')}"`
|
|
36
|
+
: '';
|
|
37
|
+
return `node "${cliPath}" extract --packages "${entry.package}"${outputFlag}${forceFlag}${gitignoreFlag}${unmanagedFlag}${silentFlag}${dryRunFlag}${upgradeFlag}${filesFlag}${contentRegexFlag}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Build a CLI command string that purges (removes) all managed files for the entry's package
|
|
41
|
+
* from its output directory. No package installation is required.
|
|
42
|
+
*/
|
|
43
|
+
function buildPurgeCommand(cliPath, entry) {
|
|
44
|
+
const { name } = parseEntryPackageName(entry.package);
|
|
45
|
+
const outputFlag = ` --output "${entry.outputDir}"`;
|
|
46
|
+
// Propagate silent/dry-run settings from the entry if present.
|
|
47
|
+
const silentFlag = entry.silent ? ' --silent' : '';
|
|
48
|
+
const dryRunFlag = entry.dryRun ? ' --dry-run' : '';
|
|
49
|
+
return `node "${cliPath}" purge --packages "${name}"${outputFlag}${silentFlag}${dryRunFlag}`;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Collects all unique tags that appear across the given npmdata entries, sorted alphabetically.
|
|
53
|
+
*/
|
|
54
|
+
function collectAllTags(entries) {
|
|
55
|
+
const tagSet = new Set();
|
|
56
|
+
for (const entry of entries) {
|
|
57
|
+
if (entry.tags) {
|
|
58
|
+
for (const tag of entry.tags) {
|
|
59
|
+
tagSet.add(tag);
|
|
60
|
+
}
|
|
56
61
|
}
|
|
57
62
|
}
|
|
58
|
-
return
|
|
63
|
+
return Array.from(tagSet).sort();
|
|
59
64
|
}
|
|
60
65
|
/**
|
|
61
|
-
*
|
|
66
|
+
* Prints a help message to stdout, listing the extract action, all options, and available tags.
|
|
67
|
+
*/
|
|
68
|
+
function printHelp(packageName, availableTags) {
|
|
69
|
+
const tagsLine = availableTags.length > 0 ? availableTags.join(', ') : '(none defined in package.json)';
|
|
70
|
+
const exampleTag = availableTags.length > 0 ? availableTags[0] : 'my-tag';
|
|
71
|
+
process.stdout.write([
|
|
72
|
+
`Usage: ${packageName} <action> [options]`,
|
|
73
|
+
'',
|
|
74
|
+
'Actions:',
|
|
75
|
+
' extract Extract files from the source package(s) defined in package.json',
|
|
76
|
+
'',
|
|
77
|
+
'Options:',
|
|
78
|
+
' --help Show this help message',
|
|
79
|
+
' --tags <tag1,tag2> Limit extraction to entries whose tags overlap (comma-separated)',
|
|
80
|
+
'',
|
|
81
|
+
`Available tags: ${tagsLine}`,
|
|
82
|
+
'',
|
|
83
|
+
'Examples:',
|
|
84
|
+
` ${packageName} extract`,
|
|
85
|
+
' Extract files for all entries defined in package.json',
|
|
86
|
+
'',
|
|
87
|
+
` ${packageName} extract --tags ${exampleTag}`,
|
|
88
|
+
` Extract files only for entries tagged "${exampleTag}"`,
|
|
89
|
+
'',
|
|
90
|
+
].join('\n'));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Parses --tags from an argv array and returns the list of requested tags (split by comma).
|
|
94
|
+
* Returns an empty array when --tags is not present.
|
|
95
|
+
*/
|
|
96
|
+
function parseTagsFromArgv(argv) {
|
|
97
|
+
const idx = argv.indexOf('--tags');
|
|
98
|
+
if (idx === -1 || idx + 1 >= argv.length) {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
return argv[idx + 1]
|
|
102
|
+
.split(',')
|
|
103
|
+
.map((t) => t.trim())
|
|
104
|
+
.filter(Boolean);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Filter entries by requested tags. When no tags are requested all entries pass through.
|
|
108
|
+
* When tags are requested only entries that share at least one tag with the requested list
|
|
109
|
+
* are included.
|
|
110
|
+
*/
|
|
111
|
+
function filterEntriesByTags(entries, requestedTags) {
|
|
112
|
+
if (requestedTags.length === 0) {
|
|
113
|
+
return entries;
|
|
114
|
+
}
|
|
115
|
+
return entries.filter((entry) => entry.tags && entry.tags.some((t) => requestedTags.includes(t)));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Runs extraction for each entry defined in the publishable package's package.json "npmdata" array.
|
|
119
|
+
* Invokes the npmdata CLI once per entry so that all CLI output and error handling is preserved.
|
|
62
120
|
* Called from the minimal generated bin script with its own __dirname as binDir.
|
|
121
|
+
*
|
|
122
|
+
* Pass --tags <tag1,tag2> to limit extraction to entries whose tags overlap with the given list.
|
|
63
123
|
*/
|
|
64
|
-
function run(binDir) {
|
|
124
|
+
function run(binDir, argv = process.argv) {
|
|
65
125
|
const pkgJsonPath = node_path_1.default.join(binDir, '../package.json');
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
126
|
+
const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgJsonPath).toString());
|
|
127
|
+
const allEntries = pkg.npmdata && pkg.npmdata.length > 0 ? pkg.npmdata : [{ package: pkg.name, outputDir: '.' }];
|
|
128
|
+
const userArgs = argv.slice(2);
|
|
129
|
+
if (userArgs.length === 0 || userArgs.includes('--help')) {
|
|
130
|
+
printHelp(pkg.name, collectAllTags(allEntries));
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const action = userArgs[0];
|
|
134
|
+
if (action !== 'extract') {
|
|
135
|
+
process.stderr.write(`Error: unknown action '${action}'. Use 'extract'.\n\n`);
|
|
136
|
+
printHelp(pkg.name, collectAllTags(allEntries));
|
|
137
|
+
return;
|
|
75
138
|
}
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
139
|
+
const requestedTags = parseTagsFromArgv(argv);
|
|
140
|
+
const entries = filterEntriesByTags(allEntries, requestedTags);
|
|
141
|
+
const excludedEntries = requestedTags.length > 0 ? allEntries.filter((e) => !entries.includes(e)) : [];
|
|
142
|
+
const cliPath = require.resolve('npmdata/dist/main.js', { paths: [binDir] });
|
|
143
|
+
for (const entry of entries) {
|
|
144
|
+
const command = buildExtractCommand(cliPath, entry);
|
|
145
|
+
(0, node_child_process_1.execSync)(command, { stdio: 'inherit' });
|
|
81
146
|
}
|
|
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}`;
|
|
147
|
+
// When a tag filter is active, purge managed files from excluded entries so that
|
|
148
|
+
// the output directory contains only files from the currently active tag group.
|
|
149
|
+
for (const entry of excludedEntries) {
|
|
150
|
+
const command = buildPurgeCommand(cliPath, entry);
|
|
151
|
+
(0, node_child_process_1.execSync)(command, { stdio: 'inherit' });
|
|
91
152
|
}
|
|
92
|
-
process.on('uncaughtException', () => {
|
|
93
|
-
process.exit(3);
|
|
94
|
-
});
|
|
95
|
-
(0, node_child_process_1.execSync)(command, { stdio: 'inherit' });
|
|
96
153
|
}
|
|
97
154
|
//# 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":";;;;;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":";;;;;AA2CA,8CAOC;AAKD,wCAUC;AAKD,8BA0BC;AAMD,8CASC;AAOD,kDAQC;AASD,kBAwCC;AA/KD,yCAAyC;AACzC,2DAA8C;AAC9C,sDAAyB;AACzB,0DAA6B;AAG7B,mCAA2C;AAO3C;;;GAGG;AACH,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;IACxC,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,KAA0B;IACtE,MAAM,UAAU,GAAG,cAAc,KAAK,CAAC,SAAS,GAAG,CAAC;IACpD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,SAAS,GACb,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,gBAAgB,GACpB,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QACrD,CAAC,CAAC,qBAAqB,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;QACxD,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,SAAS,OAAO,yBAAyB,KAAK,CAAC,OAAO,IAAI,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,gBAAgB,EAAE,CAAC;AACnM,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,OAAe,EAAE,KAA0B;IAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,cAAc,KAAK,CAAC,SAAS,GAAG,CAAC;IACpD,+DAA+D;IAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,OAAO,SAAS,OAAO,uBAAuB,IAAI,IAAI,UAAU,GAAG,UAAU,GAAG,UAAU,EAAE,CAAC;AAC/F,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,OAA8B;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,WAAmB,EAAE,aAAuB;IACpE,MAAM,QAAQ,GACZ,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC;IACzF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,UAAU,WAAW,qBAAqB;QAC1C,EAAE;QACF,UAAU;QACV,6EAA6E;QAC7E,EAAE;QACF,UAAU;QACV,8CAA8C;QAC9C,wFAAwF;QACxF,EAAE;QACF,mBAAmB,QAAQ,EAAE;QAC7B,EAAE;QACF,WAAW;QACX,KAAK,WAAW,UAAU;QAC1B,2DAA2D;QAC3D,EAAE;QACF,KAAK,WAAW,mBAAmB,UAAU,EAAE;QAC/C,8CAA8C,UAAU,GAAG;QAC3D,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,IAAc;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CACjC,OAA8B,EAC9B,aAAuB;IAEvB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,GAAG,CAAC,MAAc,EAAE,OAAiB,OAAO,CAAC,IAAI;IAC/D,MAAM,WAAW,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAgB,CAAC;IAE/E,MAAM,UAAU,GACd,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAEhG,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,MAAM,uBAAuB,CAAC,CAAC;QAC9E,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC/D,MAAM,eAAe,GACnB,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE7E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpD,IAAA,6BAAQ,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,iFAAiF;IACjF,gFAAgF;IAChF,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClD,IAAA,6BAAQ,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -72,10 +72,19 @@ export type ConsumerConfig = FileFilterConfig & {
|
|
|
72
72
|
*/
|
|
73
73
|
cwd?: string;
|
|
74
74
|
/**
|
|
75
|
-
* Automatically create/update a .gitignore file alongside each .
|
|
76
|
-
* adding the managed files and the .
|
|
75
|
+
* Automatically create/update a .gitignore file alongside each .npmdata marker file,
|
|
76
|
+
* adding the managed files and the .npmdata file itself to be ignored by git.
|
|
77
|
+
* Defaults to true. Set to false to disable.
|
|
77
78
|
*/
|
|
78
79
|
gitignore?: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* When true, write files to disk without creating a .npmdata marker, without
|
|
82
|
+
* updating .gitignore, and without making files read-only. Files written with
|
|
83
|
+
* this flag are not tracked by npmdata and can be freely edited by the user.
|
|
84
|
+
* When a destination file already exists it is left untouched and reported as
|
|
85
|
+
* skipped. Takes precedence over force.
|
|
86
|
+
*/
|
|
87
|
+
unmanaged?: boolean;
|
|
79
88
|
/**
|
|
80
89
|
* When true, simulate extraction without writing anything to disk.
|
|
81
90
|
* The returned ConsumerResult reflects what would have changed.
|
|
@@ -145,7 +154,7 @@ export type CheckResult = {
|
|
|
145
154
|
*/
|
|
146
155
|
differences: {
|
|
147
156
|
/**
|
|
148
|
-
* Files that are in the .
|
|
157
|
+
* Files that are in the .npmdata marker but missing from the output directory
|
|
149
158
|
*/
|
|
150
159
|
missing: string[];
|
|
151
160
|
/**
|
|
@@ -172,15 +181,62 @@ export type CheckResult = {
|
|
|
172
181
|
}>;
|
|
173
182
|
};
|
|
174
183
|
/**
|
|
175
|
-
*
|
|
184
|
+
* A single extraction entry defined in the publishable package.json "npmdata" array.
|
|
185
|
+
* The runner iterates over these entries and calls extract() for each one.
|
|
176
186
|
*/
|
|
177
|
-
export type
|
|
187
|
+
export type NpmdataExtractEntry = {
|
|
188
|
+
/**
|
|
189
|
+
* Package spec to install and extract from. Either a bare name ("my-pkg") or a
|
|
190
|
+
* name with a semver constraint ("my-pkg@^1.2.3").
|
|
191
|
+
*/
|
|
192
|
+
package: string;
|
|
193
|
+
/**
|
|
194
|
+
* Output directory where files will be extracted, relative to where the consumer
|
|
195
|
+
* runs the command (e.g. "./data" or "src/generated").
|
|
196
|
+
*/
|
|
197
|
+
outputDir: string;
|
|
198
|
+
/**
|
|
199
|
+
* Glob patterns to filter which files are extracted (e.g. ["data/**", "*.json"]).
|
|
200
|
+
* Defaults to all files when not set.
|
|
201
|
+
*/
|
|
202
|
+
files?: string[];
|
|
203
|
+
/**
|
|
204
|
+
* Allow overwriting existing unmanaged files (default: false).
|
|
205
|
+
*/
|
|
206
|
+
force?: boolean;
|
|
207
|
+
/**
|
|
208
|
+
* Create/update a .gitignore file alongside each .npmdata marker file (default: false).
|
|
209
|
+
*/
|
|
210
|
+
gitignore?: boolean;
|
|
211
|
+
/**
|
|
212
|
+
* Write files without creating a .npmdata marker, updating .gitignore, or making
|
|
213
|
+
* files read-only. Existing files are skipped rather than overwritten (default: false).
|
|
214
|
+
*/
|
|
215
|
+
unmanaged?: boolean;
|
|
216
|
+
/**
|
|
217
|
+
* Simulate extraction without writing anything to disk (default: false).
|
|
218
|
+
*/
|
|
219
|
+
dryRun?: boolean;
|
|
220
|
+
/**
|
|
221
|
+
* Force a fresh install of the package even when a satisfying version is already
|
|
222
|
+
* installed (default: false).
|
|
223
|
+
*/
|
|
224
|
+
upgrade?: boolean;
|
|
225
|
+
/**
|
|
226
|
+
* Suppress per-file output, printing only the final result line (default: false).
|
|
227
|
+
*/
|
|
228
|
+
silent?: boolean;
|
|
229
|
+
/**
|
|
230
|
+
* Regex patterns (as strings) to filter files by content. Only files whose content
|
|
231
|
+
* matches at least one pattern are extracted.
|
|
232
|
+
*/
|
|
233
|
+
contentRegexes?: string[];
|
|
178
234
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
235
|
+
* Tags used to group and selectively run entries. When the data package is invoked with
|
|
236
|
+
* --tags, only entries whose tags list includes at least one of the requested tags are
|
|
237
|
+
* processed. Entries with no tags are always skipped when a tag filter is active.
|
|
182
238
|
*/
|
|
183
|
-
|
|
239
|
+
tags?: string[];
|
|
184
240
|
};
|
|
185
241
|
/**
|
|
186
242
|
* Package.json for a publishable project
|
|
@@ -193,7 +249,7 @@ export type PublishablePackageJson = {
|
|
|
193
249
|
bin?: string;
|
|
194
250
|
files?: string[];
|
|
195
251
|
dependencies?: Record<string, string>;
|
|
196
|
-
npmdata?:
|
|
252
|
+
npmdata?: NpmdataExtractEntry[];
|
|
197
253
|
[key: string]: unknown;
|
|
198
254
|
};
|
|
199
255
|
//# sourceMappingURL=types.d.ts.map
|