npmdata 0.1.7-beta.0 → 0.2.0-beta.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 +3 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +153 -59
- package/dist/cli.js.map +1 -1
- package/dist/consumer.d.ts +20 -5
- package/dist/consumer.d.ts.map +1 -1
- package/dist/consumer.js +228 -111
- package/dist/consumer.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/npmdata-0.0.1.tgz +0 -0
- package/dist/publisher.d.ts +9 -0
- package/dist/publisher.d.ts.map +1 -1
- package/dist/publisher.js +41 -3
- package/dist/publisher.js.map +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +52 -20
- package/dist/runner.js.map +1 -1
- package/dist/types.d.ts +81 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +22 -5
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +55 -11
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/dist/publisher.js
CHANGED
|
@@ -9,6 +9,28 @@ exports.initPublisher = initPublisher;
|
|
|
9
9
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
11
|
const utils_1 = require("./utils");
|
|
12
|
+
/**
|
|
13
|
+
* Read the version of the currently running npmdata package so we can pin it
|
|
14
|
+
* in the generated package.json rather than using 'latest'.
|
|
15
|
+
*/
|
|
16
|
+
function getOwnVersion() {
|
|
17
|
+
// eslint-disable-next-line functional/no-try-statements
|
|
18
|
+
try {
|
|
19
|
+
const ownPkg = (0, utils_1.readJsonFile)(node_path_1.default.join(__dirname, '../package.json'));
|
|
20
|
+
return `^${ownPkg.version}`;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return 'latest';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Parse a package spec like "pkg@^1.0.0" or "@scope/pkg@2.x" into name and version.
|
|
28
|
+
* Delegates to the shared utility; keeps 'latest' as default when no version is given.
|
|
29
|
+
*/
|
|
30
|
+
function parsePublisherPackageSpec(spec) {
|
|
31
|
+
const { name, version } = (0, utils_1.parsePackageSpec)(spec);
|
|
32
|
+
return { name, version: version ?? 'latest' };
|
|
33
|
+
}
|
|
12
34
|
function validateFolders(folders, workingDir) {
|
|
13
35
|
const errors = [];
|
|
14
36
|
for (const folder of folders) {
|
|
@@ -29,7 +51,7 @@ function generateCliScript() {
|
|
|
29
51
|
require('npmdata/dist/runner.js').run(__dirname);
|
|
30
52
|
`;
|
|
31
53
|
}
|
|
32
|
-
function preparePackageJson(folders, workingDir) {
|
|
54
|
+
function preparePackageJson(folders, workingDir, additionalPackages = []) {
|
|
33
55
|
const packageJsonPath = node_path_1.default.join(workingDir, 'package.json');
|
|
34
56
|
// eslint-disable-next-line functional/no-let
|
|
35
57
|
let packageJson;
|
|
@@ -62,7 +84,20 @@ function preparePackageJson(folders, workingDir) {
|
|
|
62
84
|
if (!packageJson.dependencies) {
|
|
63
85
|
packageJson.dependencies = {};
|
|
64
86
|
}
|
|
65
|
-
packageJson.dependencies.npmdata =
|
|
87
|
+
packageJson.dependencies.npmdata = getOwnVersion();
|
|
88
|
+
// Merge additional packages: preserve existing entries, add new ones without duplicates
|
|
89
|
+
const existingAdditional = packageJson.npmdata?.additionalPackages ?? [];
|
|
90
|
+
const mergedAdditional = Array.from(new Set([...existingAdditional, ...additionalPackages]));
|
|
91
|
+
// Store additional packages config and add them to dependencies
|
|
92
|
+
if (mergedAdditional.length > 0) {
|
|
93
|
+
packageJson.npmdata = { ...packageJson.npmdata, additionalPackages: mergedAdditional };
|
|
94
|
+
for (const pkgSpec of mergedAdditional) {
|
|
95
|
+
const { name: pkgName, version: pkgVersion } = parsePublisherPackageSpec(pkgSpec);
|
|
96
|
+
if (!packageJson.dependencies[pkgName]) {
|
|
97
|
+
packageJson.dependencies[pkgName] = pkgVersion;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
66
101
|
if (!packageJson.bin) {
|
|
67
102
|
packageJson.bin = 'bin/npmdata.js';
|
|
68
103
|
}
|
|
@@ -73,6 +108,7 @@ function preparePackageJson(folders, workingDir) {
|
|
|
73
108
|
*/
|
|
74
109
|
async function initPublisher(folders, options = {}) {
|
|
75
110
|
const workingDir = options.workingDir ?? process.cwd();
|
|
111
|
+
const additionalPackages = options.additionalPackages ?? [];
|
|
76
112
|
// eslint-disable-next-line functional/no-try-statements
|
|
77
113
|
try {
|
|
78
114
|
if (!folders || folders.length === 0) {
|
|
@@ -88,17 +124,19 @@ async function initPublisher(folders, options = {}) {
|
|
|
88
124
|
message: `npmdata: folder validation failed:\n${validation.errors.join('\n')}`,
|
|
89
125
|
};
|
|
90
126
|
}
|
|
91
|
-
const packageJson = preparePackageJson(folders, workingDir);
|
|
127
|
+
const packageJson = preparePackageJson(folders, workingDir, additionalPackages);
|
|
92
128
|
const packageJsonPath = node_path_1.default.join(workingDir, 'package.json');
|
|
93
129
|
(0, utils_1.writeJsonFile)(packageJsonPath, packageJson);
|
|
94
130
|
const cliScriptPath = node_path_1.default.join(workingDir, 'bin', 'npmdata.js');
|
|
95
131
|
node_fs_1.default.mkdirSync(node_path_1.default.dirname(cliScriptPath), { recursive: true });
|
|
96
132
|
node_fs_1.default.writeFileSync(cliScriptPath, generateCliScript(), 'utf8');
|
|
97
133
|
node_fs_1.default.chmodSync(cliScriptPath, 0o755);
|
|
134
|
+
const finalAdditionalPackages = packageJson.npmdata?.additionalPackages;
|
|
98
135
|
return {
|
|
99
136
|
success: true,
|
|
100
137
|
message: 'npmdata: project initialization completed successfully',
|
|
101
138
|
publishedFolders: folders,
|
|
139
|
+
additionalPackages: finalAdditionalPackages,
|
|
102
140
|
packageJsonPath,
|
|
103
141
|
};
|
|
104
142
|
}
|
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.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":"AAiEA;;;GAGG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAwCxC"}
|
package/dist/runner.js
CHANGED
|
@@ -9,28 +9,23 @@ const node_child_process_1 = require("node:child_process");
|
|
|
9
9
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Returns the owning package name plus any additional packages listed in
|
|
13
|
+
* `npmdata.additionalPackages` of the package.json at the given path.
|
|
14
14
|
*/
|
|
15
|
-
function
|
|
16
|
-
const pkgJsonPath = node_path_1.default.join(binDir, '../package.json');
|
|
15
|
+
function collectPackages(pkgJsonPath) {
|
|
17
16
|
const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgJsonPath).toString());
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (action !== 'extract' && action !== 'check') {
|
|
23
|
-
process.stderr.write(`Invalid action: "${action}". Must be "extract" or "check".\n`);
|
|
24
|
-
// eslint-disable-next-line unicorn/no-process-exit
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
// Parse --output / -o, --force, --files, --content-regex from argv
|
|
17
|
+
const additional = pkg.npmdata?.additionalPackages ?? [];
|
|
18
|
+
return [pkg.name, ...additional];
|
|
19
|
+
}
|
|
20
|
+
function parseArgs(extraArgs) {
|
|
28
21
|
let outputDir;
|
|
29
22
|
let force = false;
|
|
30
23
|
let gitignore = false;
|
|
24
|
+
let silent = false;
|
|
25
|
+
let dryRun = false;
|
|
26
|
+
let upgrade = false;
|
|
31
27
|
let files;
|
|
32
28
|
let contentRegex;
|
|
33
|
-
const extraArgs = process.argv.slice(3);
|
|
34
29
|
for (let i = 0; i < extraArgs.length; i += 1) {
|
|
35
30
|
if (extraArgs[i] === '--output' || extraArgs[i] === '-o') {
|
|
36
31
|
outputDir = extraArgs[i + 1];
|
|
@@ -42,6 +37,15 @@ function run(binDir) {
|
|
|
42
37
|
else if (extraArgs[i] === '--gitignore') {
|
|
43
38
|
gitignore = true;
|
|
44
39
|
}
|
|
40
|
+
else if (extraArgs[i] === '--silent') {
|
|
41
|
+
silent = true;
|
|
42
|
+
}
|
|
43
|
+
else if (extraArgs[i] === '--dry-run') {
|
|
44
|
+
dryRun = true;
|
|
45
|
+
}
|
|
46
|
+
else if (extraArgs[i] === '--upgrade') {
|
|
47
|
+
upgrade = true;
|
|
48
|
+
}
|
|
45
49
|
else if (extraArgs[i] === '--files') {
|
|
46
50
|
files = extraArgs[i + 1];
|
|
47
51
|
i += 1;
|
|
@@ -51,12 +55,40 @@ function run(binDir) {
|
|
|
51
55
|
i += 1;
|
|
52
56
|
}
|
|
53
57
|
}
|
|
58
|
+
return { outputDir, force, gitignore, silent, dryRun, upgrade, files, contentRegex };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Runs the npmdata CLI (extract or check) on behalf of a publishable package.
|
|
62
|
+
* Called from the minimal generated bin script with its own __dirname as binDir.
|
|
63
|
+
*/
|
|
64
|
+
function run(binDir) {
|
|
65
|
+
const pkgJsonPath = node_path_1.default.join(binDir, '../package.json');
|
|
66
|
+
const allPackages = collectPackages(pkgJsonPath);
|
|
67
|
+
const fpCliPath = require.resolve('npmdata/dist/main.js', {
|
|
68
|
+
paths: [binDir],
|
|
69
|
+
});
|
|
70
|
+
const action = process.argv[2] ?? 'extract';
|
|
71
|
+
if (action !== 'extract' && action !== 'check' && action !== 'list') {
|
|
72
|
+
process.stderr.write(`Invalid action: "${action}". Must be "extract", "check", or "list".\n`);
|
|
73
|
+
// eslint-disable-next-line unicorn/no-process-exit
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
const { outputDir, force, gitignore, silent, dryRun, upgrade, files, contentRegex } = parseArgs(process.argv.slice(3));
|
|
54
77
|
const outputFlag = outputDir ? ` --output "${outputDir}"` : '';
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
78
|
+
let command;
|
|
79
|
+
if (action === 'list') {
|
|
80
|
+
command = `node "${fpCliPath}" list${outputFlag}`;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const forceFlag = force ? ' --force' : '';
|
|
84
|
+
const gitignoreFlag = gitignore ? ' --gitignore' : '';
|
|
85
|
+
const silentFlag = silent ? ' --silent' : '';
|
|
86
|
+
const dryRunFlag = dryRun ? ' --dry-run' : '';
|
|
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}`;
|
|
91
|
+
}
|
|
60
92
|
process.on('uncaughtException', () => {
|
|
61
93
|
process.exit(3);
|
|
62
94
|
});
|
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":";;;;;AAqEA,kBAwCC;AA7GD,sCAAsC;AACtC,2DAA8C;AAC9C,sDAAyB;AACzB,0DAA6B;AAO7B;;;GAGG;AACH,SAAS,eAAe,CAAC,WAAmB;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAgB,CAAC;IAC/E,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,kBAAkB,IAAI,EAAE,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC;AACnC,CAAC;AAaD,SAAS,SAAS,CAAC,SAAmB;IACpC,IAAI,SAA6B,CAAC;IAClC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,KAAyB,CAAC;IAC9B,IAAI,YAAgC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzD,SAAS,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACtC,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YAC1C,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;YACxC,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;YACxC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACtC,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,iBAAiB,EAAE,CAAC;YAC9C,YAAY,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,SAAgB,GAAG,CAAC,MAAc;IAChC,MAAM,WAAW,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAEjD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE;QACxD,KAAK,EAAE,CAAC,MAAM,CAAC;KAChB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAC5C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,6CAA6C,CAAC,CAAC;QAC9F,mDAAmD;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,SAAS,CAC7F,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACtB,CAAC;IAEF,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/D,IAAI,OAAe,CAAC;IACpB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,GAAG,SAAS,SAAS,SAAS,UAAU,EAAE,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,qBAAqB,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,GAAG,SAAS,SAAS,KAAK,MAAM,gBAAgB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,gBAAgB,EAAE,CAAC;IAClM,CAAC;IAED,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAA,6BAAQ,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -16,18 +16,44 @@ export type FileFilterConfig = {
|
|
|
16
16
|
*/
|
|
17
17
|
contentRegexes?: RegExp[];
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Event emitted by extract() as files are processed.
|
|
21
|
+
*/
|
|
22
|
+
export type ProgressEvent = {
|
|
23
|
+
type: 'package-start';
|
|
24
|
+
packageName: string;
|
|
25
|
+
packageVersion: string;
|
|
26
|
+
} | {
|
|
27
|
+
type: 'package-end';
|
|
28
|
+
packageName: string;
|
|
29
|
+
packageVersion: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'file-added';
|
|
32
|
+
packageName: string;
|
|
33
|
+
file: string;
|
|
34
|
+
} | {
|
|
35
|
+
type: 'file-modified';
|
|
36
|
+
packageName: string;
|
|
37
|
+
file: string;
|
|
38
|
+
} | {
|
|
39
|
+
type: 'file-deleted';
|
|
40
|
+
packageName: string;
|
|
41
|
+
file: string;
|
|
42
|
+
} | {
|
|
43
|
+
type: 'file-skipped';
|
|
44
|
+
packageName: string;
|
|
45
|
+
file: string;
|
|
46
|
+
};
|
|
19
47
|
/**
|
|
20
48
|
* Configuration for the consumer
|
|
21
49
|
*/
|
|
22
50
|
export type ConsumerConfig = FileFilterConfig & {
|
|
23
51
|
/**
|
|
24
|
-
* Package
|
|
52
|
+
* Package specs to install from registry. Each entry is either a bare package name
|
|
53
|
+
* ("my-pkg") or a name with a semver constraint ("my-pkg@^1.2.3"). Multiple packages
|
|
54
|
+
* can be provided and they will all be extracted into outputDir.
|
|
25
55
|
*/
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Optional version constraint (semver pattern)
|
|
29
|
-
*/
|
|
30
|
-
version?: string;
|
|
56
|
+
packages: string[];
|
|
31
57
|
/**
|
|
32
58
|
* Output directory where files will be extracted
|
|
33
59
|
*/
|
|
@@ -50,6 +76,21 @@ export type ConsumerConfig = FileFilterConfig & {
|
|
|
50
76
|
* adding the managed files and the .publisher file itself to be ignored by git.
|
|
51
77
|
*/
|
|
52
78
|
gitignore?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* When true, simulate extraction without writing anything to disk.
|
|
81
|
+
* The returned ConsumerResult reflects what would have changed.
|
|
82
|
+
*/
|
|
83
|
+
dryRun?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* When true, force a fresh install of each package even if a satisfying version
|
|
86
|
+
* is already installed. Useful to pick up the latest patch or minor release.
|
|
87
|
+
*/
|
|
88
|
+
upgrade?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Optional callback called for each file event during extraction.
|
|
91
|
+
* Useful for progress reporting in scripts and build tools.
|
|
92
|
+
*/
|
|
93
|
+
onProgress?: (event: ProgressEvent) => void;
|
|
53
94
|
};
|
|
54
95
|
/**
|
|
55
96
|
* Metadata about managed files
|
|
@@ -80,10 +121,16 @@ export type ConsumerResult = {
|
|
|
80
121
|
modified: string[];
|
|
81
122
|
deleted: string[];
|
|
82
123
|
skipped: string[];
|
|
83
|
-
|
|
124
|
+
sourcePackages: Array<{
|
|
84
125
|
name: string;
|
|
85
126
|
version: string;
|
|
86
|
-
|
|
127
|
+
changes: {
|
|
128
|
+
added: string[];
|
|
129
|
+
modified: string[];
|
|
130
|
+
deleted: string[];
|
|
131
|
+
skipped: string[];
|
|
132
|
+
};
|
|
133
|
+
}>;
|
|
87
134
|
};
|
|
88
135
|
/**
|
|
89
136
|
* Result of a check operation
|
|
@@ -94,7 +141,7 @@ export type CheckResult = {
|
|
|
94
141
|
*/
|
|
95
142
|
ok: boolean;
|
|
96
143
|
/**
|
|
97
|
-
*
|
|
144
|
+
* Aggregated files that differ from source (across all packages)
|
|
98
145
|
*/
|
|
99
146
|
differences: {
|
|
100
147
|
/**
|
|
@@ -105,14 +152,35 @@ export type CheckResult = {
|
|
|
105
152
|
* Files whose contents differ from the package source
|
|
106
153
|
*/
|
|
107
154
|
modified: string[];
|
|
155
|
+
/**
|
|
156
|
+
* Files that exist in the package but have not been extracted yet
|
|
157
|
+
*/
|
|
158
|
+
extra: string[];
|
|
108
159
|
};
|
|
109
160
|
/**
|
|
110
|
-
*
|
|
161
|
+
* Per-package breakdown of differences
|
|
111
162
|
*/
|
|
112
|
-
|
|
163
|
+
sourcePackages: Array<{
|
|
113
164
|
name: string;
|
|
114
165
|
version: string;
|
|
115
|
-
|
|
166
|
+
ok: boolean;
|
|
167
|
+
differences: {
|
|
168
|
+
missing: string[];
|
|
169
|
+
modified: string[];
|
|
170
|
+
extra: string[];
|
|
171
|
+
};
|
|
172
|
+
}>;
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* npmdata-specific configuration stored inside the publishable package.json
|
|
176
|
+
*/
|
|
177
|
+
export type NpmdataConfig = {
|
|
178
|
+
/**
|
|
179
|
+
* Additional package specs to include as data sources when the CLI script runs.
|
|
180
|
+
* Each entry is a bare package name ("my-pkg") or a name with a semver constraint
|
|
181
|
+
* ("my-pkg@^1.2.3"). These are merged with the package's own name when extracting.
|
|
182
|
+
*/
|
|
183
|
+
additionalPackages?: string[];
|
|
116
184
|
};
|
|
117
185
|
/**
|
|
118
186
|
* Package.json for a publishable project
|
|
@@ -125,6 +193,7 @@ export type PublishablePackageJson = {
|
|
|
125
193
|
bin?: string;
|
|
126
194
|
files?: string[];
|
|
127
195
|
dependencies?: Record<string, string>;
|
|
196
|
+
npmdata?: NpmdataConfig;
|
|
128
197
|
[key: string]: unknown;
|
|
129
198
|
};
|
|
130
199
|
//# 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,cAAc,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
import { ManagedFileMetadata } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Parse a package spec like "my-pkg@^1.2.3" or "@scope/pkg@2.x" into name and version.
|
|
4
|
+
* The version separator is the LAST "@" so that scoped packages ("@scope/name") are handled correctly.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parsePackageSpec(spec: string): {
|
|
7
|
+
name: string;
|
|
8
|
+
version: string | undefined;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Detect whether a file is binary by scanning it for null bytes.
|
|
12
|
+
* Reads up to the first 8 KB only to keep memory usage low.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isBinaryFile(filePath: string): boolean;
|
|
2
15
|
/**
|
|
3
16
|
* Get hash of file contents
|
|
4
17
|
*/
|
|
5
18
|
export declare function calculateFileHash(filePath: string): string;
|
|
6
19
|
/**
|
|
7
|
-
* Check if file contents match regex patterns
|
|
20
|
+
* Check if file contents match regex patterns.
|
|
21
|
+
* Binary files (detected via null-byte scan) are always excluded when patterns are set.
|
|
8
22
|
*/
|
|
9
23
|
export declare function matchesContentRegex(filePath: string, patterns?: RegExp[]): boolean;
|
|
10
24
|
/**
|
|
@@ -25,9 +39,10 @@ export declare function removeFile(filePath: string): void;
|
|
|
25
39
|
*/
|
|
26
40
|
export declare function copyFile(src: string, dest: string): void;
|
|
27
41
|
/**
|
|
28
|
-
* Detect package manager type
|
|
42
|
+
* Detect package manager type.
|
|
43
|
+
* Inspects the lock files in the given directory (defaults to process.cwd()).
|
|
29
44
|
*/
|
|
30
|
-
export declare function detectPackageManager(): 'npm' | 'yarn' | 'pnpm';
|
|
45
|
+
export declare function detectPackageManager(cwd?: string): 'npm' | 'yarn' | 'pnpm';
|
|
31
46
|
/**
|
|
32
47
|
* Get package info from installed package
|
|
33
48
|
*/
|
|
@@ -41,11 +56,13 @@ export declare function readJsonFile<T>(filePath: string): T;
|
|
|
41
56
|
*/
|
|
42
57
|
export declare function writeJsonFile(filePath: string, data: unknown): void;
|
|
43
58
|
/**
|
|
44
|
-
* Read the .publisher
|
|
59
|
+
* Read the .publisher marker file.
|
|
60
|
+
* Supports both the current pipe-delimited format and the legacy comma-delimited format
|
|
61
|
+
* (detected automatically for backward compatibility).
|
|
45
62
|
*/
|
|
46
63
|
export declare function readCsvMarker(filePath: string): ManagedFileMetadata[];
|
|
47
64
|
/**
|
|
48
|
-
* Write the .publisher
|
|
65
|
+
* Write the .publisher marker file using the pipe-delimited format.
|
|
49
66
|
*/
|
|
50
67
|
export declare function writeCsvMarker(filePath: string, data: ManagedFileMetadata[]): void;
|
|
51
68
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAQ5F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAKlF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,MAAM,EAAE,CA8BV;AAED,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,EAAE,WAAW,MAAM,EAAE,KAAG,OAa9E,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI3C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAOxD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAmB1E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe3F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAGnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAQnE;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAcrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAUlF"}
|
package/dist/utils.js
CHANGED
|
@@ -4,6 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.matchesFilenamePattern = void 0;
|
|
7
|
+
exports.parsePackageSpec = parsePackageSpec;
|
|
8
|
+
exports.isBinaryFile = isBinaryFile;
|
|
7
9
|
exports.calculateFileHash = calculateFileHash;
|
|
8
10
|
exports.matchesContentRegex = matchesContentRegex;
|
|
9
11
|
exports.findMatchingFiles = findMatchingFiles;
|
|
@@ -20,6 +22,36 @@ const node_fs_1 = __importDefault(require("node:fs"));
|
|
|
20
22
|
const node_path_1 = __importDefault(require("node:path"));
|
|
21
23
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
22
24
|
const minimatch_1 = require("minimatch");
|
|
25
|
+
/**
|
|
26
|
+
* Parse a package spec like "my-pkg@^1.2.3" or "@scope/pkg@2.x" into name and version.
|
|
27
|
+
* The version separator is the LAST "@" so that scoped packages ("@scope/name") are handled correctly.
|
|
28
|
+
*/
|
|
29
|
+
function parsePackageSpec(spec) {
|
|
30
|
+
const atIdx = spec.lastIndexOf('@');
|
|
31
|
+
if (atIdx > 0) {
|
|
32
|
+
// eslint-disable-next-line no-undefined
|
|
33
|
+
return { name: spec.slice(0, atIdx), version: spec.slice(atIdx + 1) || undefined };
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line no-undefined
|
|
36
|
+
return { name: spec, version: undefined };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Detect whether a file is binary by scanning it for null bytes.
|
|
40
|
+
* Reads up to the first 8 KB only to keep memory usage low.
|
|
41
|
+
*/
|
|
42
|
+
function isBinaryFile(filePath) {
|
|
43
|
+
// eslint-disable-next-line functional/no-try-statements
|
|
44
|
+
try {
|
|
45
|
+
const fd = node_fs_1.default.openSync(filePath, 'r');
|
|
46
|
+
const buf = Buffer.alloc(8192);
|
|
47
|
+
const bytesRead = node_fs_1.default.readSync(fd, buf, 0, 8192, 0);
|
|
48
|
+
node_fs_1.default.closeSync(fd);
|
|
49
|
+
return buf.slice(0, bytesRead).includes(0x00);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
23
55
|
/**
|
|
24
56
|
* Get hash of file contents
|
|
25
57
|
*/
|
|
@@ -28,11 +60,14 @@ function calculateFileHash(filePath) {
|
|
|
28
60
|
return node_crypto_1.default.createHash('sha256').update(content).digest('hex');
|
|
29
61
|
}
|
|
30
62
|
/**
|
|
31
|
-
* Check if file contents match regex patterns
|
|
63
|
+
* Check if file contents match regex patterns.
|
|
64
|
+
* Binary files (detected via null-byte scan) are always excluded when patterns are set.
|
|
32
65
|
*/
|
|
33
66
|
function matchesContentRegex(filePath, patterns) {
|
|
34
67
|
if (!patterns)
|
|
35
68
|
return true;
|
|
69
|
+
if (isBinaryFile(filePath))
|
|
70
|
+
return false;
|
|
36
71
|
const content = node_fs_1.default.readFileSync(filePath, 'utf8');
|
|
37
72
|
return patterns.some((pattern) => pattern.test(content));
|
|
38
73
|
}
|
|
@@ -70,8 +105,10 @@ const matchesFilenamePattern = (filename, patterns) => {
|
|
|
70
105
|
// Separate include and exclude patterns (exclude patterns start with '!')
|
|
71
106
|
const includes = patterns.filter((p) => !p.startsWith('!'));
|
|
72
107
|
const excludes = patterns.filter((p) => p.startsWith('!')).map((p) => p.slice(1));
|
|
73
|
-
|
|
74
|
-
|
|
108
|
+
// When there are no positive include patterns, treat as "match all" (same as undefined).
|
|
109
|
+
// This avoids the footgun where an empty array silently excludes every file.
|
|
110
|
+
const matchesIncludes = includes.length === 0 || includes.some((pattern) => (0, minimatch_1.minimatch)(filename, pattern));
|
|
111
|
+
return matchesIncludes && !excludes.some((pattern) => (0, minimatch_1.minimatch)(filename, pattern));
|
|
75
112
|
};
|
|
76
113
|
exports.matchesFilenamePattern = matchesFilenamePattern;
|
|
77
114
|
/**
|
|
@@ -101,12 +138,14 @@ function copyFile(src, dest) {
|
|
|
101
138
|
node_fs_1.default.copyFileSync(src, dest);
|
|
102
139
|
}
|
|
103
140
|
/**
|
|
104
|
-
* Detect package manager type
|
|
141
|
+
* Detect package manager type.
|
|
142
|
+
* Inspects the lock files in the given directory (defaults to process.cwd()).
|
|
105
143
|
*/
|
|
106
|
-
function detectPackageManager() {
|
|
144
|
+
function detectPackageManager(cwd) {
|
|
145
|
+
const dir = cwd ?? '.';
|
|
107
146
|
// eslint-disable-next-line functional/no-try-statements
|
|
108
147
|
try {
|
|
109
|
-
const lockFiles = node_fs_1.default.readdirSync(
|
|
148
|
+
const lockFiles = node_fs_1.default.readdirSync(dir);
|
|
110
149
|
if (lockFiles.includes('pnpm-lock.yaml'))
|
|
111
150
|
return 'pnpm';
|
|
112
151
|
if (lockFiles.includes('yarn.lock'))
|
|
@@ -165,31 +204,36 @@ function writeJsonFile(filePath, data) {
|
|
|
165
204
|
// eslint-disable-next-line unicorn/no-null
|
|
166
205
|
node_fs_1.default.writeFileSync(filePath, `${JSON.stringify(data, null, 2)}\n`, 'utf8');
|
|
167
206
|
}
|
|
207
|
+
const MARKER_DELIMITER = '|';
|
|
168
208
|
/**
|
|
169
|
-
* Read the .publisher
|
|
209
|
+
* Read the .publisher marker file.
|
|
210
|
+
* Supports both the current pipe-delimited format and the legacy comma-delimited format
|
|
211
|
+
* (detected automatically for backward compatibility).
|
|
170
212
|
*/
|
|
171
213
|
function readCsvMarker(filePath) {
|
|
172
214
|
const content = node_fs_1.default.readFileSync(filePath, 'utf8');
|
|
173
215
|
const lines = content.split('\n').filter((line) => line.trim() !== '');
|
|
174
216
|
return lines.map((line) => {
|
|
175
|
-
|
|
217
|
+
// Detect format: new records use '|'; legacy records use ','
|
|
218
|
+
const delimiter = line.includes(MARKER_DELIMITER) ? MARKER_DELIMITER : ',';
|
|
219
|
+
const fields = line.split(delimiter);
|
|
176
220
|
return {
|
|
177
221
|
path: fields[0],
|
|
178
222
|
packageName: fields[1],
|
|
179
223
|
packageVersion: fields[2],
|
|
180
|
-
force: fields[3] === '
|
|
224
|
+
force: fields[3] === '1',
|
|
181
225
|
};
|
|
182
226
|
});
|
|
183
227
|
}
|
|
184
228
|
/**
|
|
185
|
-
* Write the .publisher
|
|
229
|
+
* Write the .publisher marker file using the pipe-delimited format.
|
|
186
230
|
*/
|
|
187
231
|
function writeCsvMarker(filePath, data) {
|
|
188
232
|
ensureDir(node_path_1.default.dirname(filePath));
|
|
189
233
|
if (node_fs_1.default.existsSync(filePath)) {
|
|
190
234
|
node_fs_1.default.chmodSync(filePath, 0o644);
|
|
191
235
|
}
|
|
192
|
-
const rows = data.map((m) => [m.path, m.packageName, m.packageVersion, m.force ? '
|
|
236
|
+
const rows = data.map((m) => [m.path, m.packageName, m.packageVersion, m.force ? '1' : '0'].join(MARKER_DELIMITER));
|
|
193
237
|
node_fs_1.default.writeFileSync(filePath, `${rows.join('\n')}\n`, 'utf8');
|
|
194
238
|
node_fs_1.default.chmodSync(filePath, 0o444);
|
|
195
239
|
}
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|