@pipelab/core-node 1.0.1-beta.31 → 1.0.1-latest.33

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipelab/core-node",
3
- "version": "1.0.1-beta.31",
3
+ "version": "1.0.1-latest.33",
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-beta.27",
43
- "@pipelab/shared": "2.0.1-beta.28"
42
+ "@pipelab/constants": "1.0.1-latest.29",
43
+ "@pipelab/shared": "2.0.1-latest.30"
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-beta.27"
56
+ "@pipelab/tsconfig": "1.0.1-latest.29"
57
57
  },
58
58
  "scripts": {
59
59
  "build": "tsdown",
@@ -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
- const foundVersion = semver.maxSatisfying(versions, range) || packument["dist-tags"]?.[range];
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
- const finalEntryPoint = entryPoint || join(packageDir, "dist", "index.mjs");
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
- const finalEntryPoint = entryPoint || join(packageDir, "dist", "index.mjs");
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
  }