Skip to content

Commit f8b29f4

Browse files
committed
fix build manifest sdk version
1 parent 67592ec commit f8b29f4

File tree

2 files changed

+100
-2
lines changed

2 files changed

+100
-2
lines changed

packages/cli-v3/src/build/buildWorker.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { writeJSONFile } from "../utilities/fileSystem.js";
2727
import { isWindows } from "std-env";
2828
import { pathToFileURL } from "node:url";
2929
import { logger } from "../utilities/logger.js";
30+
import { SdkVersionExtractor } from "./plugins.js";
3031

3132
export type BuildWorkerEventListener = {
3233
onBundleStart?: () => void;
@@ -61,6 +62,8 @@ export async function buildWorker(options: BuildWorkerOptions) {
6162
await notifyExtensionOnBuildStart(buildContext);
6263
const pluginsFromExtensions = resolvePluginsForContext(buildContext);
6364

65+
const sdkVersionExtractor = new SdkVersionExtractor();
66+
6467
options.listener?.onBundleStart?.();
6568

6669
const bundleResult = await bundleWorker({
@@ -69,7 +72,7 @@ export async function buildWorker(options: BuildWorkerOptions) {
6972
destination: options.destination,
7073
watch: false,
7174
resolvedConfig,
72-
plugins: [...pluginsFromExtensions],
75+
plugins: [sdkVersionExtractor.plugin, ...pluginsFromExtensions],
7376
jsxFactory: resolvedConfig.build.jsx.factory,
7477
jsxFragment: resolvedConfig.build.jsx.fragment,
7578
jsxAutomatic: resolvedConfig.build.jsx.automatic,
@@ -81,7 +84,7 @@ export async function buildWorker(options: BuildWorkerOptions) {
8184
contentHash: bundleResult.contentHash,
8285
runtime: resolvedConfig.runtime ?? DEFAULT_RUNTIME,
8386
environment: options.environment,
84-
packageVersion: CORE_VERSION,
87+
packageVersion: sdkVersionExtractor.sdkVersion ?? CORE_VERSION,
8588
cliPackageVersion: VERSION,
8689
target: "deploy",
8790
files: bundleResult.files,

packages/cli-v3/src/build/plugins.ts

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ import { ResolvedConfig } from "@trigger.dev/core/v3/build";
44
import { configPlugin } from "../config.js";
55
import { logger } from "../utilities/logger.js";
66
import { bunPlugin } from "../runtimes/bun.js";
7+
import { resolvePathSync as esmResolveSync } from "mlly";
8+
import { readPackageJSON, resolvePackageJSON } from "pkg-types";
9+
import { dirname } from "node:path";
10+
import { readJSONFile } from "../utilities/fileSystem.js";
711

812
export async function buildPlugins(
913
target: BuildTarget,
@@ -87,3 +91,94 @@ export function polyshedPlugin(): esbuild.Plugin {
8791
},
8892
};
8993
}
94+
95+
export class SdkVersionExtractor {
96+
private _sdkVersion: string | undefined;
97+
private _ranOnce = false;
98+
99+
get sdkVersion() {
100+
return this._sdkVersion;
101+
}
102+
103+
get plugin(): esbuild.Plugin {
104+
return {
105+
name: "sdk-version",
106+
setup: (build) => {
107+
build.onResolve({ filter: /^@trigger\.dev\/sdk\// }, async (args) => {
108+
if (this._ranOnce) {
109+
return undefined;
110+
} else {
111+
this._ranOnce = true;
112+
}
113+
114+
logger.debug("[SdkVersionExtractor] Extracting SDK version", { args });
115+
116+
try {
117+
const resolvedPath = esmResolveSync(args.path, {
118+
url: args.resolveDir,
119+
});
120+
121+
logger.debug("[SdkVersionExtractor] Resolved SDK module path", { resolvedPath });
122+
123+
const packageJsonPath = await resolvePackageJSON(dirname(resolvedPath), {
124+
test: async (filePath) => {
125+
try {
126+
const candidate = await readJSONFile(filePath);
127+
128+
// Exclude esm type markers
129+
return Object.keys(candidate).length > 1 || !candidate.type;
130+
} catch (error) {
131+
logger.debug("[SdkVersionExtractor] Error during package.json test", {
132+
error: error instanceof Error ? error.message : error,
133+
});
134+
135+
return false;
136+
}
137+
},
138+
});
139+
140+
if (!packageJsonPath) {
141+
return undefined;
142+
}
143+
144+
logger.debug("[SdkVersionExtractor] Found package.json", { packageJsonPath });
145+
146+
const packageJson = await readPackageJSON(packageJsonPath);
147+
148+
if (!packageJson.name || packageJson.name !== "@trigger.dev/sdk") {
149+
logger.debug("[SdkVersionExtractor] No match for SDK package name", {
150+
packageJsonPath,
151+
packageJson,
152+
});
153+
154+
return undefined;
155+
}
156+
157+
if (!packageJson.version) {
158+
logger.debug("[SdkVersionExtractor] No version found in package.json", {
159+
packageJsonPath,
160+
packageJson,
161+
});
162+
163+
return undefined;
164+
}
165+
166+
this._sdkVersion = packageJson.version;
167+
168+
logger.debug("[SdkVersionExtractor] Found SDK version", {
169+
args,
170+
packageJsonPath,
171+
sdkVersion: this._sdkVersion,
172+
});
173+
174+
return undefined;
175+
} catch (error) {
176+
logger.debug("[SdkVersionExtractor] Failed to extract SDK version", { error });
177+
}
178+
179+
return undefined;
180+
});
181+
},
182+
};
183+
}
184+
}

0 commit comments

Comments
 (0)