From b4f9b70ae25f473321ce26068ddfa4d04ee700ad Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Fri, 31 May 2024 11:39:17 +0100 Subject: [PATCH] v3: Support triggering tasks with non-URL friendly characters in the ID --- .changeset/hot-buckets-behave.md | 5 +++++ packages/core/src/v3/apiClient/index.ts | 8 ++++++-- references/v3-catalog/src/management.ts | 14 +++++++++++++- references/v3-catalog/src/trigger/other.ts | 7 +++++++ 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 .changeset/hot-buckets-behave.md diff --git a/.changeset/hot-buckets-behave.md b/.changeset/hot-buckets-behave.md new file mode 100644 index 000000000..43cdb1108 --- /dev/null +++ b/.changeset/hot-buckets-behave.md @@ -0,0 +1,5 @@ +--- +"@trigger.dev/core": patch +--- + +Support triggering tasks with non-URL friendly characters in the ID diff --git a/packages/core/src/v3/apiClient/index.ts b/packages/core/src/v3/apiClient/index.ts index 166ec7409..4d35ebd0b 100644 --- a/packages/core/src/v3/apiClient/index.ts +++ b/packages/core/src/v3/apiClient/index.ts @@ -111,9 +111,11 @@ export class ApiClient { } triggerTask(taskId: string, body: TriggerTaskRequestBody, options?: TriggerOptions) { + const encodedTaskId = encodeURIComponent(taskId); + return zodfetch( TriggerTaskResponse, - `${this.baseUrl}/api/v1/tasks/${taskId}/trigger`, + `${this.baseUrl}/api/v1/tasks/${encodedTaskId}/trigger`, { method: "POST", headers: this.#getHeaders(options?.spanParentAsLink ?? false), @@ -124,9 +126,11 @@ export class ApiClient { } batchTriggerTask(taskId: string, body: BatchTriggerTaskRequestBody, options?: TriggerOptions) { + const encodedTaskId = encodeURIComponent(taskId); + return zodfetch( BatchTriggerTaskResponse, - `${this.baseUrl}/api/v1/tasks/${taskId}/batch`, + `${this.baseUrl}/api/v1/tasks/${encodedTaskId}/batch`, { method: "POST", headers: this.#getHeaders(options?.spanParentAsLink ?? false), diff --git a/references/v3-catalog/src/management.ts b/references/v3-catalog/src/management.ts index f5146b967..197f9aff0 100644 --- a/references/v3-catalog/src/management.ts +++ b/references/v3-catalog/src/management.ts @@ -4,6 +4,7 @@ import { createReadStream } from "node:fs"; import { firstScheduledTask } from "./trigger/scheduled"; import { simpleChildTask } from "./trigger/subtasks"; import { taskThatErrors } from "./trigger/retries"; +import { unfriendlyIdTask } from "./trigger/other"; dotenv.config(); @@ -261,8 +262,19 @@ async function doScheduleLists() { } } +async function doTriggerUnfriendlyTaskId() { + const run = await unfriendlyIdTask.trigger(); + + console.log("unfriendly id task run", run); + + const completedRun = await waitForRunToComplete(run.id); + + console.log("completed run", completedRun); +} + // doRuns().catch(console.error); -doListRuns().catch(console.error); +// doListRuns().catch(console.error); // doScheduleLists().catch(console.error); // doSchedules().catch(console.error); // doEnvVars().catch(console.error); +doTriggerUnfriendlyTaskId().catch(console.error); diff --git a/references/v3-catalog/src/trigger/other.ts b/references/v3-catalog/src/trigger/other.ts index bbdcfb7f5..dd57fc07c 100644 --- a/references/v3-catalog/src/trigger/other.ts +++ b/references/v3-catalog/src/trigger/other.ts @@ -75,3 +75,10 @@ export const consecutiveDependencyAndWait = task({ logger.log("logs after"); }, }); + +export const unfriendlyIdTask = task({ + id: "hello/world:task-1", + run: async () => { + console.log("Hello world"); + }, +});