npmdata 0.2.2 → 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 +117 -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/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":"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"}
|
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
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,yBAAyB,UAMrC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG;IAC9C;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAEzC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -56,13 +56,13 @@ export declare function readJsonFile<T>(filePath: string): T;
|
|
|
56
56
|
*/
|
|
57
57
|
export declare function writeJsonFile(filePath: string, data: unknown): void;
|
|
58
58
|
/**
|
|
59
|
-
* Read the .
|
|
59
|
+
* Read the .npmdata marker file.
|
|
60
60
|
* Supports both the current pipe-delimited format and the legacy comma-delimited format
|
|
61
61
|
* (detected automatically for backward compatibility).
|
|
62
62
|
*/
|
|
63
63
|
export declare function readCsvMarker(filePath: string): ManagedFileMetadata[];
|
|
64
64
|
/**
|
|
65
|
-
* Write the .
|
|
65
|
+
* Write the .npmdata marker file using the pipe-delimited format.
|
|
66
66
|
*/
|
|
67
67
|
export declare function writeCsvMarker(filePath: string, data: ManagedFileMetadata[]): void;
|
|
68
68
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.js
CHANGED
|
@@ -206,7 +206,7 @@ function writeJsonFile(filePath, data) {
|
|
|
206
206
|
}
|
|
207
207
|
const MARKER_DELIMITER = '|';
|
|
208
208
|
/**
|
|
209
|
-
* Read the .
|
|
209
|
+
* Read the .npmdata marker file.
|
|
210
210
|
* Supports both the current pipe-delimited format and the legacy comma-delimited format
|
|
211
211
|
* (detected automatically for backward compatibility).
|
|
212
212
|
*/
|
|
@@ -226,7 +226,7 @@ function readCsvMarker(filePath) {
|
|
|
226
226
|
});
|
|
227
227
|
}
|
|
228
228
|
/**
|
|
229
|
-
* Write the .
|
|
229
|
+
* Write the .npmdata marker file using the pipe-delimited format.
|
|
230
230
|
*/
|
|
231
231
|
function writeCsvMarker(filePath, data) {
|
|
232
232
|
ensureDir(node_path_1.default.dirname(filePath));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "npmdata",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": "dist/main.js",
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
"dist/**",
|
|
10
10
|
"package.json",
|
|
11
|
-
"README.md"
|
|
11
|
+
"README.md",
|
|
12
|
+
"bin/npmdata.js"
|
|
12
13
|
],
|
|
13
14
|
"packageManager": "pnpm@8.9.0+sha512.ef8859938e1f0537b9fcf0309044311392f3b38b344176e6cd4fdee21b225524b0ac2a1b08ae2ae2ddd5b3ff4b8ca496d6778e950f3e7c9f555b81325982441c",
|
|
14
15
|
"scripts": {},
|