diff --git a/.changeset/envvars-update-name-scope.md b/.changeset/envvars-update-name-scope.md new file mode 100644 index 00000000000..6b1fd88b6a6 --- /dev/null +++ b/.changeset/envvars-update-name-scope.md @@ -0,0 +1,5 @@ +--- +"@trigger.dev/sdk": patch +--- + +Fix `envvars.update()` throwing `ReferenceError: name is not defined` when called outside a task run (for example from a deploy script). diff --git a/packages/trigger-sdk/src/v3/envvars.ts b/packages/trigger-sdk/src/v3/envvars.ts index 153be22a3d3..23a2a4341fc 100644 --- a/packages/trigger-sdk/src/v3/envvars.ts +++ b/packages/trigger-sdk/src/v3/envvars.ts @@ -332,13 +332,17 @@ export function update( throw new Error("projectRef is required"); } + if (typeof nameOrRequestOptions !== "string") { + throw new Error("name is required"); + } + if (!params) { throw new Error("params is required"); } $projectRef = projectRefOrName; $slug = slugOrParams; - $name = name!; + $name = nameOrRequestOptions; $params = params; } diff --git a/packages/trigger-sdk/src/v3/triggerClient.types.test.ts b/packages/trigger-sdk/src/v3/triggerClient.types.test.ts index 1a04e46e1e7..8affb238838 100644 --- a/packages/trigger-sdk/src/v3/triggerClient.types.test.ts +++ b/packages/trigger-sdk/src/v3/triggerClient.types.test.ts @@ -40,6 +40,15 @@ describe("TriggerClient surface — type-level guarantees", () => { // Zero-arg form (uses task context — still typeable at the call site) expectTypeOf(client.envvars.list).toBeCallableWith(); }); + + it("preserves envvars.update overloads (out of task context form AND in-task form)", () => { + // Four-arg form (out-of-task: projectRef, slug, name, params) + expectTypeOf(client.envvars.update).toBeCallableWith("proj_1234", "dev", "MY_VAR", { + value: "secret", + }); + // Two-arg form (in-task: name, params) + expectTypeOf(client.envvars.update).toBeCallableWith("MY_VAR", { value: "secret" }); + }); }); describe("TriggerClient surface — curated subsets", () => {