@pipelab/core-node 1.0.1-beta.31 → 1.0.1-latest.34
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/CHANGELOG.md +27 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +31 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/src/utils/remote.ts +39 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pipelab/core-node",
|
|
3
|
-
"version": "1.0.1-
|
|
3
|
+
"version": "1.0.1-latest.34",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The Pipelab automation engine for Node.js",
|
|
6
6
|
"license": "FSL-1.1-MIT",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"type-fest": "4.39.0",
|
|
40
40
|
"ws": "8.18.3",
|
|
41
41
|
"yauzl": "2.10.0",
|
|
42
|
-
"@pipelab/constants": "1.0.1-
|
|
43
|
-
"@pipelab/shared": "2.0.1-
|
|
42
|
+
"@pipelab/constants": "1.0.1-latest.30",
|
|
43
|
+
"@pipelab/shared": "2.0.1-latest.31"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/adm-zip": "0.5.7",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@types/yauzl": "2.10.3",
|
|
54
54
|
"tsdown": "0.21.2",
|
|
55
55
|
"typescript": "^5.0.0",
|
|
56
|
-
"@pipelab/tsconfig": "1.0.1-
|
|
56
|
+
"@pipelab/tsconfig": "1.0.1-latest.30"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"build": "tsdown",
|
package/src/utils/remote.ts
CHANGED
|
@@ -53,10 +53,12 @@ export async function fetchPackage(
|
|
|
53
53
|
const packument = await pacote.packument(packageName);
|
|
54
54
|
const versions = Object.keys(packument.versions);
|
|
55
55
|
const range = versionOrRange || "latest";
|
|
56
|
-
|
|
56
|
+
|
|
57
|
+
// Prioritize tags (like 'latest', 'beta', etc.) over semver ranges
|
|
58
|
+
const foundVersion = packument["dist-tags"]?.[range] || semver.maxSatisfying(versions, range);
|
|
57
59
|
|
|
58
60
|
if (!foundVersion) {
|
|
59
|
-
throw new Error(`Package ${packageName}@${range} not found on npm`);
|
|
61
|
+
throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
|
|
60
62
|
}
|
|
61
63
|
resolvedVersion = foundVersion;
|
|
62
64
|
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm`);
|
|
@@ -77,11 +79,29 @@ export async function fetchPackage(
|
|
|
77
79
|
await pacote.extract(`${packageName}@${resolvedVersion}`, packageDir);
|
|
78
80
|
}
|
|
79
81
|
|
|
82
|
+
// 2. Resolve entry point from package.json for downloaded package
|
|
83
|
+
let entryPoint: string | undefined;
|
|
84
|
+
try {
|
|
85
|
+
const pkgPath = join(packageDir, "package.json");
|
|
86
|
+
if (existsSync(pkgPath)) {
|
|
87
|
+
const pkg = JSON.parse(await readFile(pkgPath, "utf-8"));
|
|
88
|
+
const main = pkg.module || pkg.main || pkg.publishConfig?.module || pkg.publishConfig?.main;
|
|
89
|
+
if (main) {
|
|
90
|
+
entryPoint = join(packageDir, main);
|
|
91
|
+
} else if (pkg.bin) {
|
|
92
|
+
const binFile = typeof pkg.bin === "string" ? pkg.bin : Object.values(pkg.bin)[0];
|
|
93
|
+
if (binFile) entryPoint = join(packageDir, binFile as string);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
} catch (e) {
|
|
97
|
+
console.warn(`[Fetcher] ${packageName}: Failed to parse package.json for entry point resolution:`, e);
|
|
98
|
+
}
|
|
99
|
+
|
|
80
100
|
if (options?.installDeps) {
|
|
81
101
|
await installDependencies(packageDir, packageName, options);
|
|
82
102
|
}
|
|
83
103
|
|
|
84
|
-
return { packageDir, resolvedVersion };
|
|
104
|
+
return { packageDir, resolvedVersion, entryPoint };
|
|
85
105
|
}
|
|
86
106
|
|
|
87
107
|
/**
|
|
@@ -244,7 +264,14 @@ export async function fetchPipelabPlugin(
|
|
|
244
264
|
});
|
|
245
265
|
|
|
246
266
|
// Default entry point if not provided by fetchPackage
|
|
247
|
-
|
|
267
|
+
let finalEntryPoint = entryPoint;
|
|
268
|
+
if (!finalEntryPoint) {
|
|
269
|
+
const patterns = [
|
|
270
|
+
join(packageDir, "dist", "index.mjs"),
|
|
271
|
+
join(packageDir, "index.mjs"),
|
|
272
|
+
];
|
|
273
|
+
finalEntryPoint = patterns.find((p) => existsSync(p)) || patterns[0];
|
|
274
|
+
}
|
|
248
275
|
|
|
249
276
|
return { packageDir, entryPoint: finalEntryPoint, isLocal: !!isLocal };
|
|
250
277
|
}
|
|
@@ -260,7 +287,14 @@ export async function fetchPipelabCli(
|
|
|
260
287
|
);
|
|
261
288
|
|
|
262
289
|
// Default entry point for CLI if not provided
|
|
263
|
-
|
|
290
|
+
let finalEntryPoint = entryPoint;
|
|
291
|
+
if (!finalEntryPoint) {
|
|
292
|
+
const patterns = [
|
|
293
|
+
join(packageDir, "dist", "index.mjs"),
|
|
294
|
+
join(packageDir, "index.mjs"),
|
|
295
|
+
];
|
|
296
|
+
finalEntryPoint = patterns.find((p) => existsSync(p)) || patterns[0];
|
|
297
|
+
}
|
|
264
298
|
|
|
265
299
|
return { packageDir, entryPoint: finalEntryPoint, isLocal: !!isLocal };
|
|
266
300
|
}
|