Skip to content

Commit 5571b06

Browse files
committed
Updated extension and added try catch
1 parent 90f8501 commit 5571b06

File tree

1 file changed

+50
-22
lines changed

1 file changed

+50
-22
lines changed

packages/build/src/extensions/vercelSyncEnvVars.ts

Lines changed: 50 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,28 @@
11
import { BuildExtension } from "@trigger.dev/core/v3/build";
22
import { syncEnvVars } from "./core.js";
33

4-
export function vercelSyncEnvVars(): BuildExtension {
4+
export function syncVercelEnvVars(
5+
options?: { projectId?: string; vercelAccessToken?: string },
6+
): BuildExtension {
57
const sync = syncEnvVars(async (ctx) => {
8+
const projectId = options?.projectId ?? process.env.VERCEL_PROJECT_ID ??
9+
ctx.env.VERCEL_PROJECT_ID;
10+
const vercelAccessToken = options?.vercelAccessToken ??
11+
process.env.VERCEL_ACCESS_TOKEN ??
12+
ctx.env.VERCEL_ACCESS_TOKEN;
13+
14+
if (!projectId) {
15+
throw new Error(
16+
"vercelSyncEnvVars: you did not pass in a projectId or set the VERCEL_PROJECT_ID env var.",
17+
);
18+
}
19+
20+
if (!vercelAccessToken) {
21+
throw new Error(
22+
"vercelSyncEnvVars: you did not pass in a vercelAccessToken or set the VERCEL_ACCESS_TOKEN env var.",
23+
);
24+
}
25+
626
const environmentMap = {
727
prod: "production",
828
staging: "preview",
@@ -13,32 +33,40 @@ export function vercelSyncEnvVars(): BuildExtension {
1333
environmentMap[ctx.environment as keyof typeof environmentMap];
1434

1535
const vercelApiUrl =
16-
`https://api.vercel.com/v8/projects/${process.env.VERCEL_PROJECT_ID}/env?decrypt=true`;
36+
`https://api.vercel.com/v8/projects/${projectId}/env?decrypt=true`;
1737

18-
const response = await fetch(vercelApiUrl, {
19-
headers: {
20-
Authorization: `Bearer ${process.env.VERCEL_ACCESS_TOKEN}`,
21-
},
22-
});
38+
try {
39+
const response = await fetch(vercelApiUrl, {
40+
headers: {
41+
Authorization: `Bearer ${vercelAccessToken}`,
42+
},
43+
});
2344

24-
if (!response.ok) {
25-
throw new Error(`HTTP error! status: ${response.status}`);
26-
}
45+
if (!response.ok) {
46+
throw new Error(`HTTP error! status: ${response.status}`);
47+
}
2748

28-
const data = await response.json();
49+
const data = await response.json();
2950

30-
const filteredEnvs = data.envs
31-
.filter(
32-
(env: { type: string; value: string; target: string[] }) =>
33-
env.type === "encrypted" && env.value &&
34-
env.target.includes(vercelEnvironment),
35-
)
36-
.map((env: { key: string; value: string }) => ({
37-
name: env.key,
38-
value: env.value,
39-
}));
51+
const filteredEnvs = data.envs
52+
.filter(
53+
(env: { type: string; value: string; target: string[] }) =>
54+
env.type === "encrypted" && env.value &&
55+
env.target.includes(vercelEnvironment),
56+
)
57+
.map((env: { key: string; value: string }) => ({
58+
name: env.key,
59+
value: env.value,
60+
}));
4061

41-
return filteredEnvs;
62+
return filteredEnvs;
63+
} catch (error) {
64+
console.error(
65+
"Error fetching or processing Vercel environment variables:",
66+
error,
67+
);
68+
throw error; // Re-throw the error to be handled by the caller
69+
}
4270
});
4371

4472
return {

0 commit comments

Comments
 (0)