@trigger.dev/sdk 3.0.0-beta.6 → 3.0.0-beta.7

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.
@@ -1,4 +1,4 @@
1
- import { TaskRunContext, InitOutput, RetryOptions, QueueOptions, MachineCpu, MachineMemory, RunFnParams, InitFnParams, HandleErrorFnParams, HandleErrorResult, MiddlewareFnParams, SuccessFnParams, FetchRetryOptions } from '@trigger.dev/core/v3';
1
+ import { TaskRunContext, InitOutput, RetryOptions, QueueOptions, MachineCpu, MachineMemory, RunFnParams, InitFnParams, HandleErrorFnParams, HandleErrorResult, MiddlewareFnParams, SuccessFnParams, FetchRetryOptions, ReplayRunResponse, CanceledRunResponse } from '@trigger.dev/core/v3';
2
2
  export { HandleErrorArgs, HandleErrorFunction, LogLevel, RetryOptions, ProjectConfig as TriggerConfig, logger } from '@trigger.dev/core/v3';
3
3
  import { HttpHandler } from 'msw';
4
4
 
@@ -251,4 +251,11 @@ declare const retry: {
251
251
  };
252
252
  };
253
253
 
254
- export { type CacheEntry, type CacheFunction, type CacheMetadata, type CacheStore, type Context, type Eventually, InMemoryCache, type WaitOptions, createCache, retry, task, wait };
254
+ declare const runs: {
255
+ replay: typeof replayRun;
256
+ cancel: typeof cancelRun;
257
+ };
258
+ declare function replayRun(runId: string): Promise<ReplayRunResponse>;
259
+ declare function cancelRun(runId: string): Promise<CanceledRunResponse>;
260
+
261
+ export { type CacheEntry, type CacheFunction, type CacheMetadata, type CacheStore, type Context, type Eventually, InMemoryCache, type WaitOptions, createCache, retry, runs, task, wait };
@@ -1,4 +1,4 @@
1
- import { TaskRunContext, InitOutput, RetryOptions, QueueOptions, MachineCpu, MachineMemory, RunFnParams, InitFnParams, HandleErrorFnParams, HandleErrorResult, MiddlewareFnParams, SuccessFnParams, FetchRetryOptions } from '@trigger.dev/core/v3';
1
+ import { TaskRunContext, InitOutput, RetryOptions, QueueOptions, MachineCpu, MachineMemory, RunFnParams, InitFnParams, HandleErrorFnParams, HandleErrorResult, MiddlewareFnParams, SuccessFnParams, FetchRetryOptions, ReplayRunResponse, CanceledRunResponse } from '@trigger.dev/core/v3';
2
2
  export { HandleErrorArgs, HandleErrorFunction, LogLevel, RetryOptions, ProjectConfig as TriggerConfig, logger } from '@trigger.dev/core/v3';
3
3
  import { HttpHandler } from 'msw';
4
4
 
@@ -251,4 +251,11 @@ declare const retry: {
251
251
  };
252
252
  };
253
253
 
254
- export { type CacheEntry, type CacheFunction, type CacheMetadata, type CacheStore, type Context, type Eventually, InMemoryCache, type WaitOptions, createCache, retry, task, wait };
254
+ declare const runs: {
255
+ replay: typeof replayRun;
256
+ cancel: typeof cancelRun;
257
+ };
258
+ declare function replayRun(runId: string): Promise<ReplayRunResponse>;
259
+ declare function cancelRun(runId: string): Promise<CanceledRunResponse>;
260
+
261
+ export { type CacheEntry, type CacheFunction, type CacheMetadata, type CacheStore, type Context, type Eventually, InMemoryCache, type WaitOptions, createCache, retry, runs, task, wait };
package/dist/v3/index.js CHANGED
@@ -14,7 +14,7 @@ var __publicField = (obj, key, value) => {
14
14
  };
15
15
 
16
16
  // package.json
17
- var version = "3.0.0-beta.6";
17
+ var version = "3.0.0-beta.7";
18
18
  var tracer = new v3.TriggerTracer({
19
19
  name: "@trigger.dev/sdk",
20
20
  version
@@ -200,10 +200,10 @@ function createTask(params) {
200
200
  runs: response.data.runs,
201
201
  ctx
202
202
  });
203
- const runs = await handleBatchTaskRunExecutionResult(result.items);
203
+ const runs2 = await handleBatchTaskRunExecutionResult(result.items);
204
204
  return {
205
205
  id: result.id,
206
- runs
206
+ runs: runs2
207
207
  };
208
208
  }, {
209
209
  kind: api.SpanKind.PRODUCER,
@@ -878,6 +878,34 @@ var retry = {
878
878
  fetch: retryFetch,
879
879
  interceptFetch
880
880
  };
881
+ var runs = {
882
+ replay: replayRun,
883
+ cancel: cancelRun
884
+ };
885
+ async function replayRun(runId) {
886
+ const apiClient = v3.apiClientManager.client;
887
+ if (!apiClient) {
888
+ throw apiClientMissingError();
889
+ }
890
+ const response = await apiClient.replayRun(runId);
891
+ if (!response.ok) {
892
+ throw new Error(response.error);
893
+ }
894
+ return response.data;
895
+ }
896
+ __name(replayRun, "replayRun");
897
+ async function cancelRun(runId) {
898
+ const apiClient = v3.apiClientManager.client;
899
+ if (!apiClient) {
900
+ throw apiClientMissingError();
901
+ }
902
+ const response = await apiClient.cancelRun(runId);
903
+ if (!response.ok) {
904
+ throw new Error(response.error);
905
+ }
906
+ return response.data;
907
+ }
908
+ __name(cancelRun, "cancelRun");
881
909
 
882
910
  Object.defineProperty(exports, 'logger', {
883
911
  enumerable: true,
@@ -886,6 +914,7 @@ Object.defineProperty(exports, 'logger', {
886
914
  exports.InMemoryCache = InMemoryCache;
887
915
  exports.createCache = createCache;
888
916
  exports.retry = retry;
917
+ exports.runs = runs;
889
918
  exports.task = task;
890
919
  exports.wait = wait;
891
920
  //# sourceMappingURL=out.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/v3/shared.ts","../../package.json","../../src/v3/tracer.ts","../../src/v3/tasks.ts","../../src/v3/wait.ts","../../src/v3/cache.ts","../../src/v3/retry.ts","../../src/v3/index.ts"],"names":["SpanKind","SEMATTRS_MESSAGING_DESTINATION","SEMATTRS_MESSAGING_OPERATION","SEMATTRS_MESSAGING_SYSTEM","SemanticInternalAttributes","accessoryAttributes","apiClientManager","conditionallyImportPacket","createErrorTaskError","defaultRetryOptions","parsePacket","runtime","taskContextManager","TriggerTracer","tracer","name","version","createTask","params","task","trigger","payload","options","apiClient","client","apiClientMissingError","taskMetadata","getTaskMetadata","id","handle","startActiveSpan","span","response","triggerTask","queue","concurrencyKey","test","ctx","run","isTest","spanParentAsLink","ok","Error","error","setAttribute","data","kind","PRODUCER","attributes","STYLE_ICON","worker","JSON","stringify","length","items","text","exportName","variant","style","batchTrigger","batchTriggerTask","map","item","batchId","join","triggerAndWait","dependentAttempt","attempt","lockToVersion","result","waitForTask","runResult","handleTaskRunExecutionResult","output","batchTriggerAndWait","waitForBatch","runs","handleBatchTaskRunExecutionResult","Object","defineProperty","value","packageVersion","retry","undefined","machine","fns","init","cleanup","middleware","handleError","enumerable","someObjectStoreOutputs","some","outputType","results","Promise","all","INTERNAL","execution","outputPacket","dataType","importedPacket","hasBaseUrl","baseURL","hasAccessToken","accessToken","wait","for","start","Date","now","durationInMs","calculateDurationInMs","waitForDuration","nameForWaitOptions","until","throwIfInThePast","date","getTime","toISOString","seconds","minutes","hours","days","weeks","months","years","InMemoryCache","_cache","Map","get","key","set","delete","createCache","store","cache","cacheKey","fn","cacheEntry","updateName","metadata","createdTime","SpanStatusCode","context","trace","SEMATTRS_HTTP_HOST","SEMATTRS_HTTP_METHOD","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","SEMATTRS_HTTP_SCHEME","SEMATTRS_HTTP_STATUS_CODE","SEMATTRS_HTTP_URL","calculateNextRetryDelay","calculateResetAt","eventFilterMatches","flattenAttributes","defaultFetchRetryOptions","AsyncLocalStorage","onThrow","opts","maxAttempts","innerSpan","startSpan","contextWithSpanSet","setSpan","active","with","end","e","recordException","String","setStatus","code","ERROR","nextRetryDelay","RETRY_AT","RETRY_COUNT","RETRY_DELAY","normalizeUrlFromInput","input","URL","url","normalizeHttpMethod","method","toUpperCase","fetchHttpHandlerStorage","fetchWithInterceptors","handlers","getStore","getResponse","request","Request","fetch","FetchErrorWithSpan","constructor","originalError","MAX_ATTEMPTS","retryFetch","abortController","AbortController","timeoutId","timeoutInMs","setTimeout","abort","signal","addEventListener","doFetchRequest","clearTimeout","setAttributes","createFetchResponseAttributes","nextRetry","calculateRetryDelayForResponse","resolveDefaults","byStatus","type","nextRetryDate","isInFuture","waitUntil","timeout","cause","connectionError","createFetchAttributes","createFetchRetryOptionsAttributes","attemptCount","httpMethod","headers","toString","status","statusText","message","strategy","getRetryStrategyForResponse","resetAt","resetHeader","resetTimestamp","resetFormat","statusCodes","keys","clonedResponse","clone","i","statusRange","isStatusCodeInRange","bodyFilter","body","safeJsonParse","statusCode","includes","split","s","trim","parseInt","endsWith","prefix","slice","statusCodePrefix","Math","floor","statusCodeString","rangePrefix","startsWith","createAttributesFromHeaders","normalizedHeaderKey","toLowerCase","forEach","json","parse","interceptFetch","current","push","obj","defaults","href","hostname","port","protocol","replace","logger"],"mappings":"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","sourcesContent":["import { SpanKind } from \"@opentelemetry/api\";\nimport {\n SEMATTRS_MESSAGING_DESTINATION,\n SEMATTRS_MESSAGING_OPERATION,\n SEMATTRS_MESSAGING_SYSTEM,\n} from \"@opentelemetry/semantic-conventions\";\nimport {\n HandleErrorFnParams,\n HandleErrorResult,\n InitFnParams,\n InitOutput,\n MachineCpu,\n MachineMemory,\n MiddlewareFnParams,\n QueueOptions,\n RetryOptions,\n RunFnParams,\n SemanticInternalAttributes,\n SuccessFnParams,\n TaskRunContext,\n TaskRunExecutionResult,\n accessoryAttributes,\n apiClientManager,\n conditionallyImportPacket,\n createErrorTaskError,\n defaultRetryOptions,\n parsePacket,\n runtime,\n taskContextManager,\n} from \"@trigger.dev/core/v3\";\nimport * as packageJson from \"../../package.json\";\nimport { tracer } from \"./tracer\";\n\nexport type Context = TaskRunContext;\n\ntype RequireOne<T, K extends keyof T> = {\n [X in Exclude<keyof T, K>]?: T[X];\n} & {\n [P in K]-?: T[P];\n};\n\nexport type Queue = RequireOne<QueueOptions, \"name\">;\n\nexport function queue(options: { name: string } & QueueOptions): Queue {\n return options;\n}\n\nexport type TaskOptions<TPayload, TOutput = any, TInitOutput extends InitOutput = any> = {\n /** An id for your task. This must be unique inside your project and not change between versions. */\n id: string;\n /** The retry settings when an uncaught error is thrown.\n *\n * If omitted it will use the values in your `trigger.config.ts` file.\n * \n * @example\n * \n * ```\n * export const taskWithRetries = task({\n id: \"task-with-retries\",\n retry: {\n maxAttempts: 10,\n factor: 1.8,\n minTimeoutInMs: 500,\n maxTimeoutInMs: 30_000,\n randomize: false,\n },\n run: async ({ payload, ctx }) => {\n //...\n },\n });\n * ```\n * */\n retry?: RetryOptions;\n /** Used to configure what should happen when more than one run is triggered at the same time.\n * \n * @example \n * one at a time execution\n * \n * ```ts\n * export const oneAtATime = task({\n id: \"one-at-a-time\",\n queue: {\n concurrencyLimit: 1,\n },\n run: async ({ payload, ctx }) => {\n //...\n },\n });\n * ```\n */\n queue?: QueueOptions;\n /** Configure the spec of the machine you want your task to run on.\n * \n * @example\n * \n * ```ts\n * export const heavyTask = task({\n id: \"heavy-task\",\n machine: {\n cpu: 2,\n memory: 4,\n },\n run: async ({ payload, ctx }) => {\n //...\n },\n });\n * ```\n */\n machine?: {\n /** vCPUs. The default is 0.5.\n *\n * Possible values:\n * - 0.25\n * - 0.5\n * - 1\n * - 2\n * - 4\n */\n cpu?: MachineCpu;\n /** In GBs of RAM. The default is 1.\n *\n * Possible values:\n * - 0.25\n * - 0.5\n * - 1\n * - 2\n * - 4\n * - 8\n */\n memory?: MachineMemory;\n };\n /** This gets called when a task is triggered. It's where you put the code you want to execute.\n *\n * @param payload - The payload that is passed to your task when it's triggered. This must be JSON serializable.\n * @param params - Metadata about the run.\n */\n run: (payload: TPayload, params: RunFnParams<TInitOutput>) => Promise<TOutput>;\n init?: (payload: TPayload, params: InitFnParams) => Promise<TInitOutput>;\n handleError?: (\n payload: TPayload,\n error: unknown,\n params: HandleErrorFnParams<TInitOutput>\n ) => HandleErrorResult;\n cleanup?: (payload: TPayload, params: RunFnParams<TInitOutput>) => Promise<void>;\n middleware?: (payload: TPayload, params: MiddlewareFnParams) => Promise<void>;\n onSuccess?: (payload: TPayload, params: SuccessFnParams<TOutput, TInitOutput>) => Promise<void>;\n};\n\ntype InvokeHandle = {\n id: string;\n};\n\ntype InvokeBatchHandle = {\n batchId: string;\n runs: string[];\n};\n\nexport type TaskRunResult<TOutput = any> =\n | {\n ok: true;\n id: string;\n output: TOutput;\n }\n | {\n ok: false;\n id: string;\n error: any;\n };\n\nexport type BatchResult<TOutput = any> = {\n id: string;\n runs: TaskRunResult<TOutput>[];\n};\n\nexport type Task<TInput, TOutput = any> = {\n trigger: (params: { payload: TInput; options?: TaskRunOptions }) => Promise<InvokeHandle>;\n batchTrigger: (params: {\n items: { payload: TInput; options?: TaskRunOptions }[];\n batchOptions?: BatchRunOptions;\n }) => Promise<InvokeBatchHandle>;\n triggerAndWait: (params: { payload: TInput; options?: TaskRunOptions }) => Promise<TOutput>;\n batchTriggerAndWait: (params: {\n items: { payload: TInput; options?: TaskRunOptions }[];\n batchOptions?: BatchRunOptions;\n }) => Promise<BatchResult<TOutput>>;\n};\n\ntype TaskRunOptions = {\n idempotencyKey?: string;\n maxAttempts?: number;\n startAt?: Date;\n startAfter?: number;\n queue?: TaskRunConcurrencyOptions;\n concurrencyKey?: string;\n};\n\ntype TaskRunConcurrencyOptions = Queue;\n\ntype BatchRunOptions = TaskRunOptions & {\n maxConcurrency?: number;\n};\n\nexport type Prettify<T> = {\n [K in keyof T]: T[K];\n} & {};\n\nexport type DynamicBaseOptions = {\n id: string;\n};\n\nexport function createTask<TInput, TOutput, TInitOutput extends InitOutput>(\n params: TaskOptions<TInput, TOutput, TInitOutput>\n): Task<TInput, TOutput> {\n const task: Task<TInput, TOutput> = {\n trigger: async ({ payload, options }) => {\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const taskMetadata = runtime.getTaskMetadata(params.id);\n\n const handle = await tracer.startActiveSpan(\n taskMetadata ? \"Trigger\" : `${params.id} trigger()`,\n async (span) => {\n const response = await apiClient.triggerTask(\n params.id,\n {\n payload: payload,\n options: {\n queue: params.queue,\n concurrencyKey: options?.concurrencyKey,\n test: taskContextManager.ctx?.run.isTest,\n },\n },\n { spanParentAsLink: true }\n );\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n span.setAttribute(\"messaging.message.id\", response.data.id);\n\n return response.data;\n },\n {\n kind: SpanKind.PRODUCER,\n attributes: {\n [SEMATTRS_MESSAGING_OPERATION]: \"publish\",\n [SemanticInternalAttributes.STYLE_ICON]: \"trigger\",\n [\"messaging.client_id\"]: taskContextManager.worker?.id,\n [SEMATTRS_MESSAGING_DESTINATION]: params.queue?.name ?? params.id,\n [\"messaging.message.body.size\"]: JSON.stringify(payload).length,\n [SEMATTRS_MESSAGING_SYSTEM]: \"trigger.dev\",\n ...(taskMetadata\n ? accessoryAttributes({\n items: [\n {\n text: `${taskMetadata.exportName}.trigger()`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n })\n : {}),\n },\n }\n );\n\n return handle;\n },\n batchTrigger: async ({ items }) => {\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const taskMetadata = runtime.getTaskMetadata(params.id);\n\n const response = await tracer.startActiveSpan(\n taskMetadata ? \"Batch trigger\" : `${params.id} batchTrigger()`,\n async (span) => {\n const response = await apiClient.batchTriggerTask(\n params.id,\n {\n items: items.map((item) => ({\n payload: item.payload,\n options: {\n queue: item.options?.queue ?? params.queue,\n concurrencyKey: item.options?.concurrencyKey,\n test: taskContextManager.ctx?.run.isTest,\n },\n })),\n },\n { spanParentAsLink: true }\n );\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n span.setAttribute(\"messaging.message.id\", response.data.batchId);\n\n return response.data;\n },\n {\n kind: SpanKind.PRODUCER,\n attributes: {\n [SEMATTRS_MESSAGING_OPERATION]: \"publish\",\n [\"messaging.batch.message_count\"]: items.length,\n [\"messaging.client_id\"]: taskContextManager.worker?.id,\n [SEMATTRS_MESSAGING_DESTINATION]: params.queue?.name ?? params.id,\n [\"messaging.message.body.size\"]: items\n .map((item) => JSON.stringify(item.payload))\n .join(\"\").length,\n [SEMATTRS_MESSAGING_SYSTEM]: \"trigger.dev\",\n [SemanticInternalAttributes.STYLE_ICON]: \"trigger\",\n ...(taskMetadata\n ? accessoryAttributes({\n items: [\n {\n text: `${taskMetadata.exportName}.batchTrigger()`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n })\n : {}),\n },\n }\n );\n\n return response;\n },\n triggerAndWait: async ({ payload, options }) => {\n const ctx = taskContextManager.ctx;\n\n if (!ctx) {\n throw new Error(\"triggerAndWait can only be used from inside a task.run()\");\n }\n\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const taskMetadata = runtime.getTaskMetadata(params.id);\n\n return await tracer.startActiveSpan(\n taskMetadata ? \"Trigger\" : `${params.id} triggerAndWait()`,\n async (span) => {\n const response = await apiClient.triggerTask(params.id, {\n payload,\n options: {\n dependentAttempt: ctx.attempt.id,\n lockToVersion: taskContextManager.worker?.version, // Lock to current version because we're waiting for it to finish\n queue: params.queue,\n concurrencyKey: options?.concurrencyKey,\n test: taskContextManager.ctx?.run.isTest,\n },\n });\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n span.setAttribute(\"messaging.message.id\", response.data.id);\n\n const result = await runtime.waitForTask({\n id: response.data.id,\n ctx,\n });\n\n const runResult = await handleTaskRunExecutionResult<TOutput>(result);\n\n if (!runResult.ok) {\n throw runResult.error;\n }\n\n return runResult.output;\n },\n {\n kind: SpanKind.PRODUCER,\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"trigger\",\n [SEMATTRS_MESSAGING_OPERATION]: \"publish\",\n [\"messaging.client_id\"]: taskContextManager.worker?.id,\n [SEMATTRS_MESSAGING_DESTINATION]: params.queue?.name ?? params.id,\n [SEMATTRS_MESSAGING_SYSTEM]: \"trigger.dev\",\n ...(taskMetadata\n ? accessoryAttributes({\n items: [\n {\n text: `${taskMetadata.exportName}.triggerAndWait()`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n })\n : {}),\n },\n }\n );\n },\n batchTriggerAndWait: async ({ items }) => {\n const ctx = taskContextManager.ctx;\n\n if (!ctx) {\n throw new Error(\"batchTriggerAndWait can only be used from inside a task.run()\");\n }\n\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const taskMetadata = runtime.getTaskMetadata(params.id);\n\n return await tracer.startActiveSpan(\n taskMetadata ? \"Batch trigger\" : `${params.id} batchTriggerAndWait()`,\n async (span) => {\n const response = await apiClient.batchTriggerTask(params.id, {\n items: items.map((item) => ({\n payload: item.payload,\n options: {\n lockToVersion: taskContextManager.worker?.version,\n queue: item.options?.queue ?? params.queue,\n concurrencyKey: item.options?.concurrencyKey,\n test: taskContextManager.ctx?.run.isTest,\n },\n })),\n dependentAttempt: ctx.attempt.id,\n });\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n span.setAttribute(\"messaging.message.id\", response.data.batchId);\n\n const result = await runtime.waitForBatch({\n id: response.data.batchId,\n runs: response.data.runs,\n ctx,\n });\n\n const runs = await handleBatchTaskRunExecutionResult<TOutput>(result.items);\n\n return {\n id: result.id,\n runs,\n };\n },\n {\n kind: SpanKind.PRODUCER,\n attributes: {\n [SEMATTRS_MESSAGING_OPERATION]: \"publish\",\n [\"messaging.batch.message_count\"]: items.length,\n [\"messaging.client_id\"]: taskContextManager.worker?.id,\n [SEMATTRS_MESSAGING_DESTINATION]: params.queue?.name ?? params.id,\n [\"messaging.message.body.size\"]: items\n .map((item) => JSON.stringify(item.payload))\n .join(\"\").length,\n [SEMATTRS_MESSAGING_SYSTEM]: \"trigger.dev\",\n [SemanticInternalAttributes.STYLE_ICON]: \"trigger\",\n ...(taskMetadata\n ? accessoryAttributes({\n items: [\n {\n text: `${taskMetadata.exportName}.batchTriggerAndWait()`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n })\n : {}),\n },\n }\n );\n },\n };\n\n Object.defineProperty(task, \"__trigger\", {\n value: {\n id: params.id,\n packageVersion: packageJson.version,\n queue: params.queue,\n retry: params.retry ? { ...defaultRetryOptions, ...params.retry } : undefined,\n machine: params.machine,\n fns: {\n run: params.run,\n init: params.init,\n cleanup: params.cleanup,\n middleware: params.middleware,\n handleError: params.handleError,\n },\n },\n enumerable: false,\n });\n\n return task;\n}\n\nasync function handleBatchTaskRunExecutionResult<TOutput>(\n items: Array<TaskRunExecutionResult>\n): Promise<Array<TaskRunResult<TOutput>>> {\n const someObjectStoreOutputs = items.some(\n (item) => item.ok && item.outputType === \"application/store\"\n );\n\n if (!someObjectStoreOutputs) {\n const results = await Promise.all(\n items.map(async (item) => {\n return await handleTaskRunExecutionResult<TOutput>(item);\n })\n );\n\n return results;\n }\n\n return await tracer.startActiveSpan(\n \"store.downloadPayloads\",\n async (span) => {\n const results = await Promise.all(\n items.map(async (item) => {\n return await handleTaskRunExecutionResult<TOutput>(item);\n })\n );\n\n return results;\n },\n {\n kind: SpanKind.INTERNAL,\n [SemanticInternalAttributes.STYLE_ICON]: \"cloud-download\",\n }\n );\n}\n\nasync function handleTaskRunExecutionResult<TOutput>(\n execution: TaskRunExecutionResult\n): Promise<TaskRunResult<TOutput>> {\n if (execution.ok) {\n const outputPacket = { data: execution.output, dataType: execution.outputType };\n const importedPacket = await conditionallyImportPacket(outputPacket, tracer);\n\n return {\n ok: true,\n id: execution.id,\n output: await parsePacket(importedPacket),\n };\n } else {\n return {\n ok: false,\n id: execution.id,\n error: createErrorTaskError(execution.error),\n };\n }\n}\n\nfunction apiClientMissingError() {\n const hasBaseUrl = !!apiClientManager.baseURL;\n const hasAccessToken = !!apiClientManager.accessToken;\n if (!hasBaseUrl && !hasAccessToken) {\n return `You need to set the TRIGGER_API_URL and TRIGGER_SECRET_KEY environment variables.`;\n } else if (!hasBaseUrl) {\n return `You need to set the TRIGGER_API_URL environment variable.`;\n } else if (!hasAccessToken) {\n return `You need to set the TRIGGER_SECRET_KEY environment variable.`;\n }\n\n return `Unknown error`;\n}\n","{\n \"name\": \"@trigger.dev/sdk\",\n \"version\": \"3.0.0-beta.6\",\n \"description\": \"trigger.dev Node.JS SDK\",\n \"license\": \"MIT\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.mjs\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"files\": [\n \"dist\"\n ],\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.mts\",\n \"default\": \"./dist/index.mjs\"\n },\n \"require\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\"\n },\n \"./v3\": {\n \"import\": {\n \"types\": \"./dist/v3/index.d.mts\",\n \"default\": \"./dist/v3/index.mjs\"\n },\n \"require\": \"./dist/v3/index.js\",\n \"types\": \"./dist/v3/index.d.ts\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"typesVersions\": {\n \"*\": {\n \"v3\": [\n \"./dist/v3/index.d.ts\"\n ]\n }\n },\n \"scripts\": {\n \"clean\": \"rimraf dist\",\n \"build\": \"npm run clean && npm run build:tsup\",\n \"build:tsup\": \"tsup --dts-resolve\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@opentelemetry/api\": \"^1.8.0\",\n \"@opentelemetry/api-logs\": \"^0.48.0\",\n \"@opentelemetry/semantic-conventions\": \"^1.22.0\",\n \"@trigger.dev/core\": \"workspace:^3.0.0-beta.6\",\n \"@trigger.dev/core-backend\": \"workspace:^3.0.0-beta.6\",\n \"chalk\": \"^5.2.0\",\n \"cronstrue\": \"^2.21.0\",\n \"debug\": \"^4.3.4\",\n \"evt\": \"^2.4.13\",\n \"get-caller-file\": \"^2.0.5\",\n \"git-remote-origin-url\": \"^4.0.0\",\n \"git-repo-info\": \"^2.1.1\",\n \"slug\": \"^6.0.0\",\n \"terminal-link\": \"^3.0.0\",\n \"ulid\": \"^2.3.0\",\n \"uuid\": \"^9.0.0\",\n \"ws\": \"^8.11.0\",\n \"zod\": \"3.22.3\"\n },\n \"devDependencies\": {\n \"@trigger.dev/tsconfig\": \"workspace:*\",\n \"@trigger.dev/tsup\": \"workspace:*\",\n \"@types/debug\": \"^4.1.7\",\n \"@types/node\": \"18\",\n \"@types/slug\": \"^5.0.3\",\n \"@types/uuid\": \"^9.0.0\",\n \"@types/ws\": \"^8.5.3\",\n \"encoding\": \"^0.1.13\",\n \"msw\": \"^2.2.1\",\n \"rimraf\": \"^3.0.2\",\n \"tsup\": \"^8.0.1\",\n \"typed-emitter\": \"^2.1.0\",\n \"typescript\": \"^5.3.0\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.2.1\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n }\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}","import { TriggerTracer } from \"@trigger.dev/core/v3\";\nimport * as packageJson from \"../../package.json\";\n\nexport const tracer = new TriggerTracer({ name: \"@trigger.dev/sdk\", version: packageJson.version });\n","import { InitOutput } from \"@trigger.dev/core/v3\";\nimport { TaskOptions, Task, createTask } from \"./shared\";\n\n/** Creates a task that can be triggered\n * @param options - Task options\n * @example \n * \n * ```ts\n * import { task } from \"@trigger.dev/sdk/v3\";\n *\n * export const helloWorld = task({\n id: \"hello-world\",\n * run: async (payload: { url: string }) => {\n * return { hello: \"world\" };\n * },\n * });\n *\n * ```\n * \n * @returns A task that can be triggered\n */\nexport function task<TInput, TOutput = any, TInitOutput extends InitOutput = any>(\n options: TaskOptions<TInput, TOutput, TInitOutput>\n): Task<TInput, TOutput> {\n return createTask<TInput, TOutput, TInitOutput>(options);\n}\n","import { SemanticInternalAttributes, accessoryAttributes, runtime } from \"@trigger.dev/core/v3\";\nimport { tracer } from \"./tracer\";\n\nexport type WaitOptions =\n | {\n seconds: number;\n }\n | {\n minutes: number;\n }\n | {\n hours: number;\n }\n | {\n days: number;\n }\n | {\n weeks: number;\n }\n | {\n months: number;\n }\n | {\n years: number;\n };\n\nexport const wait = {\n for: async (options: WaitOptions) => {\n return tracer.startActiveSpan(\n `wait.for()`,\n async (span) => {\n const start = Date.now();\n const durationInMs = calculateDurationInMs(options);\n\n await runtime.waitForDuration(durationInMs);\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"wait\",\n ...accessoryAttributes({\n items: [\n {\n text: nameForWaitOptions(options),\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n }),\n },\n }\n );\n },\n until: async (options: { date: Date; throwIfInThePast?: boolean }) => {\n return tracer.startActiveSpan(\n `wait.until()`,\n async (span) => {\n const start = Date.now();\n\n if (options.throwIfInThePast && options.date < new Date()) {\n throw new Error(\"Date is in the past\");\n }\n\n const durationInMs = options.date.getTime() - start;\n\n await runtime.waitForDuration(durationInMs);\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"wait\",\n ...accessoryAttributes({\n items: [\n {\n text: options.date.toISOString(),\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n }),\n },\n }\n );\n },\n};\n\nfunction nameForWaitOptions(options: WaitOptions): string {\n if (\"seconds\" in options) {\n return options.seconds === 1 ? `1 second` : `${options.seconds} seconds`;\n }\n\n if (\"minutes\" in options) {\n return options.minutes === 1 ? `1 minute` : `${options.minutes} minutes`;\n }\n\n if (\"hours\" in options) {\n return options.hours === 1 ? `1 hour` : `${options.hours} hours`;\n }\n\n if (\"days\" in options) {\n return options.days === 1 ? `1 day` : `${options.days} days`;\n }\n\n if (\"weeks\" in options) {\n return options.weeks === 1 ? `1 week` : `${options.weeks} weeks`;\n }\n\n if (\"months\" in options) {\n return options.months === 1 ? `1 month` : `${options.months} months`;\n }\n\n if (\"years\" in options) {\n return options.years === 1 ? `1 year` : `${options.years} years`;\n }\n\n return \"NaN\";\n}\n\nfunction calculateDurationInMs(options: WaitOptions): number {\n if (\"seconds\" in options) {\n return options.seconds * 1000;\n }\n\n if (\"minutes\" in options) {\n return options.minutes * 1000 * 60;\n }\n\n if (\"hours\" in options) {\n return options.hours * 1000 * 60 * 60;\n }\n\n if (\"days\" in options) {\n return options.days * 1000 * 60 * 60 * 24;\n }\n\n if (\"weeks\" in options) {\n return options.weeks * 1000 * 60 * 60 * 24 * 7;\n }\n\n if (\"months\" in options) {\n return options.months * 1000 * 60 * 60 * 24 * 30;\n }\n\n if (\"years\" in options) {\n return options.years * 1000 * 60 * 60 * 24 * 365;\n }\n\n throw new Error(\"Invalid options\");\n}\n\ntype RequestOptions = {\n to: (url: string) => Promise<void>;\n timeout: WaitOptions;\n};\n","import { SemanticInternalAttributes } from \"@trigger.dev/core/v3\";\nimport { tracer } from \"./tracer\";\n\nexport type CacheMetadata = {\n createdTime: number;\n ttl?: number | null;\n};\n\nexport type CacheEntry<Value = unknown> = {\n metadata: CacheMetadata;\n value: Value;\n};\n\nexport type Eventually<Value> = Value | null | undefined | Promise<Value | null | undefined>;\n\nexport type CacheStore<Value = any> = {\n name?: string;\n get: (key: string) => Eventually<CacheEntry<Value>>;\n set: (key: string, value: CacheEntry<Value>) => unknown | Promise<unknown>;\n delete: (key: string) => unknown | Promise<unknown>;\n};\n\nexport type CacheFunction = <Value>(\n cacheKey: string,\n fn: () => Promise<Value> | Value\n) => Promise<Value> | Value;\n\nexport class InMemoryCache<Value = any> {\n private _cache: Map<string, CacheEntry<Value>> = new Map();\n\n get(key: string): Eventually<CacheEntry<Value>> {\n return this._cache.get(key);\n }\n\n set(key: string, value: CacheEntry<Value>): unknown {\n this._cache.set(key, value);\n\n return undefined;\n }\n\n delete(key: string): unknown {\n this._cache.delete(key);\n\n return undefined;\n }\n}\n\n/**\n * Create a cache function that uses the provided store to cache values. Using InMemoryCache is safe because each task run is isolated.\n * @param store\n * @returns\n */\nexport function createCache(store: CacheStore): CacheFunction {\n return function cache<Value>(\n cacheKey: string,\n fn: () => Promise<Value> | Value\n ): Promise<Value> | Value {\n return tracer.startActiveSpan(\"cache\", async (span) => {\n span.setAttribute(\"cache.key\", cacheKey);\n span.setAttribute(SemanticInternalAttributes.STYLE_ICON, \"device-sd-card\");\n\n const cacheEntry = await store.get(cacheKey);\n\n if (cacheEntry) {\n span.updateName(`cache.hit ${cacheKey}`);\n\n return cacheEntry.value;\n }\n\n span.updateName(`cache.miss ${cacheKey}`);\n\n const value = await tracer.startActiveSpan(\n \"cache.getFreshValue\",\n async (span) => {\n return await fn();\n },\n {\n attributes: {\n \"cache.key\": cacheKey,\n [SemanticInternalAttributes.STYLE_ICON]: \"device-sd-card\",\n },\n }\n );\n\n await tracer.startActiveSpan(\n \"cache.set\",\n async (span) => {\n await store.set(cacheKey, {\n value,\n metadata: {\n createdTime: Date.now(),\n },\n });\n },\n {\n attributes: {\n \"cache.key\": cacheKey,\n [SemanticInternalAttributes.STYLE_ICON]: \"device-sd-card\",\n },\n }\n );\n\n return value;\n });\n };\n}\n","import { Attributes, Span, SpanStatusCode, context, trace } from \"@opentelemetry/api\";\nimport {\n SEMATTRS_HTTP_HOST,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_SCHEME,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_URL,\n} from \"@opentelemetry/semantic-conventions\";\nimport {\n FetchRetryByStatusOptions,\n FetchRetryOptions,\n FetchRetryStrategy,\n RetryOptions,\n SemanticInternalAttributes,\n accessoryAttributes,\n calculateNextRetryDelay,\n calculateResetAt,\n defaultRetryOptions,\n eventFilterMatches,\n flattenAttributes,\n runtime,\n} from \"@trigger.dev/core/v3\";\nimport { defaultFetchRetryOptions } from \"@trigger.dev/core/v3\";\nimport type { HttpHandler } from \"msw\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { tracer } from \"./tracer\";\n\nexport type { RetryOptions };\n\nfunction onThrow<T>(\n fn: (options: { attempt: number; maxAttempts: number }) => Promise<T>,\n options: RetryOptions\n): Promise<T> {\n const opts = {\n ...defaultRetryOptions,\n ...options,\n };\n\n return tracer.startActiveSpan(\n `retry.onThrow()`,\n async (span) => {\n let attempt = 1;\n\n while (attempt <= opts.maxAttempts) {\n const innerSpan = tracer.startSpan(\"retry.fn()\", {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n ...accessoryAttributes({\n items: [\n {\n text: `${attempt}/${opts.maxAttempts}`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n }),\n },\n });\n\n const contextWithSpanSet = trace.setSpan(context.active(), innerSpan);\n\n try {\n const result = await context.with(contextWithSpanSet, async () => {\n return fn({ attempt, maxAttempts: opts.maxAttempts });\n });\n\n innerSpan.end();\n\n return result;\n } catch (e) {\n if (e instanceof Error || typeof e === \"string\") {\n innerSpan.recordException(e);\n } else {\n innerSpan.recordException(String(e));\n }\n\n innerSpan.setStatus({ code: SpanStatusCode.ERROR });\n\n const nextRetryDelay = calculateNextRetryDelay(opts, attempt);\n\n if (!nextRetryDelay) {\n innerSpan.end();\n\n throw e;\n }\n\n innerSpan.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(Date.now() + nextRetryDelay).toISOString()\n );\n innerSpan.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n innerSpan.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetryDelay}ms`);\n innerSpan.end();\n\n await runtime.waitForDuration(nextRetryDelay);\n } finally {\n attempt++;\n }\n }\n\n throw new Error(\"Max attempts reached\");\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"arrow-capsule\",\n },\n }\n );\n}\n\nexport interface RetryFetchRequestInit extends RequestInit {\n retry?: FetchRetryOptions;\n timeoutInMs?: number;\n}\n\nconst normalizeUrlFromInput = (input: RequestInfo | URL | string): URL => {\n if (typeof input === \"string\") {\n return new URL(input);\n }\n\n if (input instanceof URL) {\n return input;\n }\n\n return new URL(input.url);\n};\n\nconst normalizeHttpMethod = (input: RequestInfo | URL | string, init?: RequestInit): string => {\n if (typeof input === \"string\" || input instanceof URL) {\n return (init?.method || \"GET\").toUpperCase();\n }\n\n return (input.method ?? init?.method ?? \"GET\").toUpperCase();\n};\n\nconst fetchHttpHandlerStorage = new AsyncLocalStorage<Array<HttpHandler>>();\n\nconst fetchWithInterceptors = async (\n input: RequestInfo | URL,\n init?: RequestInit\n): Promise<Response> => {\n const handlers = fetchHttpHandlerStorage.getStore();\n\n if (handlers) {\n try {\n const { getResponse } = await import(\"msw\");\n\n const request = new Request(input, init);\n\n const response = await getResponse(handlers, request);\n\n if (response) {\n return response;\n }\n } catch (e) {\n // Do nothing\n return fetch(input, init);\n }\n }\n\n return fetch(input, init);\n};\n\nclass FetchErrorWithSpan extends Error {\n constructor(\n public readonly originalError: unknown,\n public readonly span: Span\n ) {\n super(\"Fetch error\");\n }\n}\n\nconst MAX_ATTEMPTS = 10;\n\nasync function retryFetch(\n input: RequestInfo | URL,\n init?: RetryFetchRequestInit | undefined\n): Promise<Response> {\n return tracer.startActiveSpan(\n \"retry.fetch()\",\n async (span) => {\n let attempt = 1;\n\n while (true) {\n try {\n const abortController = new AbortController();\n\n const timeoutId = init?.timeoutInMs\n ? setTimeout(\n () => {\n abortController.abort();\n },\n init?.timeoutInMs\n )\n : undefined;\n\n init?.signal?.addEventListener(\"abort\", () => {\n abortController.abort();\n });\n\n const [response, span] = await doFetchRequest(\n input,\n { ...(init ?? {}), signal: abortController.signal },\n attempt\n );\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n if (response.ok) {\n span.setAttributes(createFetchResponseAttributes(response));\n\n span.end();\n\n return response;\n }\n\n const nextRetry = await calculateRetryDelayForResponse(\n resolveDefaults(init?.retry, \"byStatus\", defaultFetchRetryOptions.byStatus),\n response,\n attempt\n );\n\n if (!nextRetry) {\n span.setAttributes(createFetchResponseAttributes(response));\n\n span.end();\n\n return response;\n }\n\n if (attempt >= MAX_ATTEMPTS) {\n span.setAttributes(createFetchResponseAttributes(response));\n\n span.end();\n\n return response;\n }\n\n if (nextRetry.type === \"delay\") {\n span.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(Date.now() + nextRetry.value).toISOString()\n );\n span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetry.value}ms`);\n\n span.end();\n\n await runtime.waitForDuration(nextRetry.value);\n } else {\n const now = Date.now();\n const nextRetryDate = new Date(nextRetry.value);\n const isInFuture = nextRetryDate.getTime() > now;\n\n span.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(nextRetry.value).toISOString()\n );\n span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n\n if (isInFuture) {\n span.setAttribute(\n SemanticInternalAttributes.RETRY_DELAY,\n `${nextRetry.value - now}ms`\n );\n }\n\n span.end();\n\n await runtime.waitUntil(new Date(nextRetry.value));\n }\n } catch (e) {\n if (e instanceof FetchErrorWithSpan && e.originalError instanceof Error) {\n if (e.originalError.name === \"AbortError\") {\n const nextRetryDelay = calculateNextRetryDelay(\n resolveDefaults(init?.retry, \"timeout\", defaultFetchRetryOptions.timeout),\n attempt\n );\n\n if (!nextRetryDelay) {\n e.span.end();\n throw e;\n }\n\n if (attempt >= MAX_ATTEMPTS) {\n e.span.end();\n throw e;\n }\n\n e.span.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(Date.now() + nextRetryDelay).toISOString()\n );\n e.span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n e.span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetryDelay}ms`);\n\n e.span.end();\n\n await runtime.waitForDuration(nextRetryDelay);\n\n continue; // Move to the next attempt\n } else if (\n e.originalError.name === \"TypeError\" &&\n \"cause\" in e.originalError &&\n e.originalError.cause instanceof Error\n ) {\n const nextRetryDelay = calculateNextRetryDelay(\n resolveDefaults(\n init?.retry,\n \"connectionError\",\n defaultFetchRetryOptions.connectionError\n ),\n attempt\n );\n\n if (!nextRetryDelay) {\n e.span.end();\n throw e;\n }\n\n if (attempt >= MAX_ATTEMPTS) {\n e.span.end();\n throw e;\n }\n\n e.span.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(Date.now() + nextRetryDelay).toISOString()\n );\n e.span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n e.span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetryDelay}ms`);\n\n e.span.end();\n\n await runtime.waitForDuration(nextRetryDelay);\n\n continue; // Move to the next attempt\n }\n }\n\n if (e instanceof FetchErrorWithSpan) {\n e.span.end();\n }\n\n throw e;\n } finally {\n attempt++;\n }\n }\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"arrow-capsule\",\n ...createFetchAttributes(input, init),\n ...createFetchRetryOptionsAttributes(init?.retry),\n },\n }\n );\n}\n\nconst doFetchRequest = async (\n input: RequestInfo | URL | string,\n init?: RequestInit,\n attemptCount: number = 0\n): Promise<[Response, Span]> => {\n const httpMethod = normalizeHttpMethod(input, init);\n\n const span = tracer.startSpan(`HTTP ${httpMethod}`, {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"world\",\n ...(attemptCount > 1 ? { [\"http.request.resend_count\"]: attemptCount - 1 } : {}),\n ...createFetchAttributes(input, init),\n },\n });\n\n try {\n const response = await fetchWithInterceptors(input, {\n ...init,\n headers: {\n ...init?.headers,\n \"x-retry-count\": attemptCount.toString(),\n },\n });\n\n span.setAttributes(createFetchResponseAttributes(response));\n\n if (!response.ok) {\n span.recordException(`${response.status}: ${response.statusText}`);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${response.status}: ${response.statusText}`,\n });\n }\n\n return [response, span];\n } catch (e) {\n if (typeof e === \"string\" || e instanceof Error) {\n span.recordException(e);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR });\n span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, 0);\n span.setAttribute(\"http.status_text\", \"This operation was aborted.\");\n\n throw new FetchErrorWithSpan(e, span);\n }\n};\n\nconst calculateRetryDelayForResponse = async (\n retry: FetchRetryByStatusOptions | undefined,\n response: Response,\n attemptCount: number\n): Promise<{ type: \"delay\"; value: number } | { type: \"timestamp\"; value: number } | undefined> => {\n if (!retry) {\n return;\n }\n\n const strategy = await getRetryStrategyForResponse(response, retry);\n\n if (!strategy) {\n return;\n }\n\n switch (strategy.strategy) {\n case \"backoff\": {\n const value = calculateNextRetryDelay({ ...defaultRetryOptions, ...strategy }, attemptCount);\n\n if (value) {\n return { type: \"delay\", value };\n }\n\n break;\n }\n case \"headers\": {\n const resetAt = response.headers.get(strategy.resetHeader);\n\n if (typeof resetAt === \"string\") {\n const resetTimestamp = calculateResetAt(\n resetAt,\n strategy.resetFormat ?? \"unix_timestamp_in_ms\"\n );\n\n if (resetTimestamp) {\n return { type: \"timestamp\", value: resetTimestamp };\n }\n }\n\n break;\n }\n }\n};\n\nconst getRetryStrategyForResponse = async (\n response: Response,\n retry: FetchRetryByStatusOptions\n): Promise<FetchRetryStrategy | undefined> => {\n const statusCodes = Object.keys(retry);\n const clonedResponse = response.clone();\n\n for (let i = 0; i < statusCodes.length; i++) {\n const statusRange = statusCodes[i];\n const strategy = retry[statusRange];\n\n if (isStatusCodeInRange(response.status, statusRange)) {\n if (strategy.bodyFilter) {\n const body = safeJsonParse(await clonedResponse.text());\n\n if (!body) {\n continue;\n }\n\n if (eventFilterMatches(body, strategy.bodyFilter)) {\n return strategy;\n } else {\n continue;\n }\n }\n\n return strategy;\n }\n }\n};\n\n/**\n * Checks if a given status code falls within a given range.\n * The range can be a single status code (e.g. \"200\"),\n * a range of status codes (e.g. \"500-599\"),\n * a range of status codes with a wildcard (e.g. \"4xx\" for any 4xx status code),\n * or a list of status codes separated by commas (e.g. \"401,403,404,409-412,5xx\").\n * Returns `true` if the status code falls within the range, and `false` otherwise.\n */\nconst isStatusCodeInRange = (statusCode: number, statusRange: string): boolean => {\n if (statusRange === \"all\") {\n return true;\n }\n\n if (statusRange.includes(\",\")) {\n const statusCodes = statusRange.split(\",\").map((s) => s.trim());\n\n return statusCodes.some((s) => isStatusCodeInRange(statusCode, s));\n }\n\n const [start, end] = statusRange.split(\"-\");\n\n if (end) {\n return statusCode >= parseInt(start, 10) && statusCode <= parseInt(end, 10);\n }\n\n if (start.endsWith(\"xx\")) {\n const prefix = start.slice(0, -2);\n const statusCodePrefix = Math.floor(statusCode / 100).toString();\n return statusCodePrefix === prefix;\n }\n\n const statusCodeString = statusCode.toString();\n const rangePrefix = start.slice(0, -1);\n\n if (start.endsWith(\"x\") && statusCodeString.startsWith(rangePrefix)) {\n return true;\n }\n\n return statusCode === parseInt(start, 10);\n};\n\nconst createAttributesFromHeaders = (headers: Headers): Attributes => {\n const attributes: Attributes = {};\n\n const normalizedHeaderKey = (key: string) => {\n return key.toLowerCase();\n };\n\n headers.forEach((value, key) => {\n attributes[`http.response.header.${normalizedHeaderKey(key)}`] = value;\n });\n\n return attributes;\n};\n\nconst safeJsonParse = (json: string): unknown => {\n try {\n return JSON.parse(json);\n } catch (e) {\n return null;\n }\n};\n\nconst interceptFetch = (...handlers: Array<HttpHandler>) => {\n return {\n run: async <T>(fn: (...args: any[]) => Promise<T>): Promise<T> => {\n const current = fetchHttpHandlerStorage.getStore();\n\n if (current) {\n current.push(...handlers);\n return fn();\n } else {\n return fetchHttpHandlerStorage.run(handlers, fn);\n }\n },\n };\n};\n\n// This function will resolve the defaults of a property within an options object.\n// If the options object is undefined, it will return the defaults for that property (passed in as the 3rd arg).\n// if the options object is defined, and the property exists, then it will return the defaults if the value of the property is undefined or null\nconst resolveDefaults = <\n TObject extends Record<string, unknown>,\n K extends keyof TObject,\n TValue extends TObject[K],\n>(\n obj: TObject | undefined,\n key: K,\n defaults: TValue\n): TValue => {\n if (!obj) {\n return defaults;\n }\n\n if (obj[key] === undefined || obj[key] === null) {\n return defaults;\n }\n\n return obj[key] as TValue;\n};\n\nconst createFetchAttributes = (\n input: RequestInfo | URL,\n init?: RetryFetchRequestInit | undefined\n): Attributes => {\n const url = normalizeUrlFromInput(input);\n const httpMethod = normalizeHttpMethod(input, init);\n\n return {\n [SEMATTRS_HTTP_METHOD]: httpMethod,\n [SEMATTRS_HTTP_URL]: url.href,\n [SEMATTRS_HTTP_HOST]: url.hostname,\n [\"server.host\"]: url.hostname,\n [\"server.port\"]: url.port,\n [SEMATTRS_HTTP_SCHEME]: url.protocol.replace(\":\", \"\"),\n ...accessoryAttributes({\n items: [\n {\n text: url.hostname,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n }),\n };\n};\n\nconst createFetchResponseAttributes = (response: Response): Attributes => {\n return {\n [SEMATTRS_HTTP_STATUS_CODE]: response.status,\n \"http.status_text\": response.statusText,\n [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]: response.headers.get(\"content-length\") || \"0\",\n ...createAttributesFromHeaders(response.headers),\n };\n};\n\nconst createFetchRetryOptionsAttributes = (retry?: FetchRetryOptions): Attributes => {\n const byStatus = resolveDefaults(retry, \"byStatus\", defaultFetchRetryOptions.byStatus);\n const connectionError = resolveDefaults(\n retry,\n \"connectionError\",\n defaultFetchRetryOptions.connectionError\n );\n const timeout = resolveDefaults(retry, \"timeout\", defaultFetchRetryOptions.timeout);\n\n return {\n ...flattenAttributes(byStatus, \"retry.byStatus\"),\n ...flattenAttributes(connectionError, \"retry.connectionError\"),\n ...flattenAttributes(timeout, \"retry.timeout\"),\n };\n};\n\nexport const retry = {\n onThrow,\n fetch: retryFetch,\n interceptFetch,\n};\n","export * from \"./tasks\";\nexport * from \"./config\";\nexport * from \"./wait\";\nexport * from \"./cache\";\nexport { retry, type RetryOptions } from \"./retry\";\n\nimport type { Context } from \"./shared\";\nexport type { Context };\n\nexport { logger, type LogLevel } from \"@trigger.dev/core/v3\";\n"]}
1
+ {"version":3,"sources":["../../src/v3/shared.ts","../../package.json","../../src/v3/tracer.ts","../../src/v3/tasks.ts","../../src/v3/wait.ts","../../src/v3/cache.ts","../../src/v3/retry.ts","../../src/v3/index.ts","../../src/v3/management.ts"],"names":["SpanKind","SEMATTRS_MESSAGING_DESTINATION","SEMATTRS_MESSAGING_OPERATION","SEMATTRS_MESSAGING_SYSTEM","SemanticInternalAttributes","accessoryAttributes","apiClientManager","conditionallyImportPacket","createErrorTaskError","defaultRetryOptions","parsePacket","runtime","taskContextManager","TriggerTracer","tracer","name","version","createTask","params","task","trigger","payload","options","apiClient","client","apiClientMissingError","taskMetadata","getTaskMetadata","id","handle","startActiveSpan","span","response","triggerTask","queue","concurrencyKey","test","ctx","run","isTest","spanParentAsLink","ok","Error","error","setAttribute","data","kind","PRODUCER","attributes","STYLE_ICON","worker","JSON","stringify","length","items","text","exportName","variant","style","batchTrigger","batchTriggerTask","map","item","batchId","join","triggerAndWait","dependentAttempt","attempt","lockToVersion","result","waitForTask","runResult","handleTaskRunExecutionResult","output","batchTriggerAndWait","waitForBatch","runs","handleBatchTaskRunExecutionResult","Object","defineProperty","value","packageVersion","retry","undefined","machine","fns","init","cleanup","middleware","handleError","enumerable","someObjectStoreOutputs","some","outputType","results","Promise","all","INTERNAL","execution","outputPacket","dataType","importedPacket","hasBaseUrl","baseURL","hasAccessToken","accessToken","wait","for","start","Date","now","durationInMs","calculateDurationInMs","waitForDuration","nameForWaitOptions","until","throwIfInThePast","date","getTime","toISOString","seconds","minutes","hours","days","weeks","months","years","InMemoryCache","_cache","Map","get","key","set","delete","createCache","store","cache","cacheKey","fn","cacheEntry","updateName","metadata","createdTime","SpanStatusCode","context","trace","SEMATTRS_HTTP_HOST","SEMATTRS_HTTP_METHOD","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","SEMATTRS_HTTP_SCHEME","SEMATTRS_HTTP_STATUS_CODE","SEMATTRS_HTTP_URL","calculateNextRetryDelay","calculateResetAt","eventFilterMatches","flattenAttributes","defaultFetchRetryOptions","AsyncLocalStorage","onThrow","opts","maxAttempts","innerSpan","startSpan","contextWithSpanSet","setSpan","active","with","end","e","recordException","String","setStatus","code","ERROR","nextRetryDelay","RETRY_AT","RETRY_COUNT","RETRY_DELAY","normalizeUrlFromInput","input","URL","url","normalizeHttpMethod","method","toUpperCase","fetchHttpHandlerStorage","fetchWithInterceptors","handlers","getStore","getResponse","request","Request","fetch","FetchErrorWithSpan","constructor","originalError","MAX_ATTEMPTS","retryFetch","abortController","AbortController","timeoutId","timeoutInMs","setTimeout","abort","signal","addEventListener","doFetchRequest","clearTimeout","setAttributes","createFetchResponseAttributes","nextRetry","calculateRetryDelayForResponse","resolveDefaults","byStatus","type","nextRetryDate","isInFuture","waitUntil","timeout","cause","connectionError","createFetchAttributes","createFetchRetryOptionsAttributes","attemptCount","httpMethod","headers","toString","status","statusText","message","strategy","getRetryStrategyForResponse","resetAt","resetHeader","resetTimestamp","resetFormat","statusCodes","keys","clonedResponse","clone","i","statusRange","isStatusCodeInRange","bodyFilter","body","safeJsonParse","statusCode","includes","split","s","trim","parseInt","endsWith","prefix","slice","statusCodePrefix","Math","floor","statusCodeString","rangePrefix","startsWith","createAttributesFromHeaders","normalizedHeaderKey","toLowerCase","forEach","json","parse","interceptFetch","current","push","obj","defaults","href","hostname","port","protocol","replace","logger","replay","replayRun","cancel","cancelRun","runId"],"mappings":"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","sourcesContent":["import { SpanKind } from \"@opentelemetry/api\";\nimport {\n SEMATTRS_MESSAGING_DESTINATION,\n SEMATTRS_MESSAGING_OPERATION,\n SEMATTRS_MESSAGING_SYSTEM,\n} from \"@opentelemetry/semantic-conventions\";\nimport {\n HandleErrorFnParams,\n HandleErrorResult,\n InitFnParams,\n InitOutput,\n MachineCpu,\n MachineMemory,\n MiddlewareFnParams,\n QueueOptions,\n RetryOptions,\n RunFnParams,\n SemanticInternalAttributes,\n SuccessFnParams,\n TaskRunContext,\n TaskRunExecutionResult,\n accessoryAttributes,\n apiClientManager,\n conditionallyImportPacket,\n createErrorTaskError,\n defaultRetryOptions,\n parsePacket,\n runtime,\n taskContextManager,\n} from \"@trigger.dev/core/v3\";\nimport * as packageJson from \"../../package.json\";\nimport { tracer } from \"./tracer\";\n\nexport type Context = TaskRunContext;\n\ntype RequireOne<T, K extends keyof T> = {\n [X in Exclude<keyof T, K>]?: T[X];\n} & {\n [P in K]-?: T[P];\n};\n\nexport type Queue = RequireOne<QueueOptions, \"name\">;\n\nexport function queue(options: { name: string } & QueueOptions): Queue {\n return options;\n}\n\nexport type TaskOptions<TPayload, TOutput = any, TInitOutput extends InitOutput = any> = {\n /** An id for your task. This must be unique inside your project and not change between versions. */\n id: string;\n /** The retry settings when an uncaught error is thrown.\n *\n * If omitted it will use the values in your `trigger.config.ts` file.\n * \n * @example\n * \n * ```\n * export const taskWithRetries = task({\n id: \"task-with-retries\",\n retry: {\n maxAttempts: 10,\n factor: 1.8,\n minTimeoutInMs: 500,\n maxTimeoutInMs: 30_000,\n randomize: false,\n },\n run: async ({ payload, ctx }) => {\n //...\n },\n });\n * ```\n * */\n retry?: RetryOptions;\n /** Used to configure what should happen when more than one run is triggered at the same time.\n * \n * @example \n * one at a time execution\n * \n * ```ts\n * export const oneAtATime = task({\n id: \"one-at-a-time\",\n queue: {\n concurrencyLimit: 1,\n },\n run: async ({ payload, ctx }) => {\n //...\n },\n });\n * ```\n */\n queue?: QueueOptions;\n /** Configure the spec of the machine you want your task to run on.\n * \n * @example\n * \n * ```ts\n * export const heavyTask = task({\n id: \"heavy-task\",\n machine: {\n cpu: 2,\n memory: 4,\n },\n run: async ({ payload, ctx }) => {\n //...\n },\n });\n * ```\n */\n machine?: {\n /** vCPUs. The default is 0.5.\n *\n * Possible values:\n * - 0.25\n * - 0.5\n * - 1\n * - 2\n * - 4\n */\n cpu?: MachineCpu;\n /** In GBs of RAM. The default is 1.\n *\n * Possible values:\n * - 0.25\n * - 0.5\n * - 1\n * - 2\n * - 4\n * - 8\n */\n memory?: MachineMemory;\n };\n /** This gets called when a task is triggered. It's where you put the code you want to execute.\n *\n * @param payload - The payload that is passed to your task when it's triggered. This must be JSON serializable.\n * @param params - Metadata about the run.\n */\n run: (payload: TPayload, params: RunFnParams<TInitOutput>) => Promise<TOutput>;\n init?: (payload: TPayload, params: InitFnParams) => Promise<TInitOutput>;\n handleError?: (\n payload: TPayload,\n error: unknown,\n params: HandleErrorFnParams<TInitOutput>\n ) => HandleErrorResult;\n cleanup?: (payload: TPayload, params: RunFnParams<TInitOutput>) => Promise<void>;\n middleware?: (payload: TPayload, params: MiddlewareFnParams) => Promise<void>;\n onSuccess?: (payload: TPayload, params: SuccessFnParams<TOutput, TInitOutput>) => Promise<void>;\n};\n\ntype InvokeHandle = {\n id: string;\n};\n\ntype InvokeBatchHandle = {\n batchId: string;\n runs: string[];\n};\n\nexport type TaskRunResult<TOutput = any> =\n | {\n ok: true;\n id: string;\n output: TOutput;\n }\n | {\n ok: false;\n id: string;\n error: any;\n };\n\nexport type BatchResult<TOutput = any> = {\n id: string;\n runs: TaskRunResult<TOutput>[];\n};\n\nexport type Task<TInput, TOutput = any> = {\n trigger: (params: { payload: TInput; options?: TaskRunOptions }) => Promise<InvokeHandle>;\n batchTrigger: (params: {\n items: { payload: TInput; options?: TaskRunOptions }[];\n batchOptions?: BatchRunOptions;\n }) => Promise<InvokeBatchHandle>;\n triggerAndWait: (params: { payload: TInput; options?: TaskRunOptions }) => Promise<TOutput>;\n batchTriggerAndWait: (params: {\n items: { payload: TInput; options?: TaskRunOptions }[];\n batchOptions?: BatchRunOptions;\n }) => Promise<BatchResult<TOutput>>;\n};\n\ntype TaskRunOptions = {\n idempotencyKey?: string;\n maxAttempts?: number;\n startAt?: Date;\n startAfter?: number;\n queue?: TaskRunConcurrencyOptions;\n concurrencyKey?: string;\n};\n\ntype TaskRunConcurrencyOptions = Queue;\n\ntype BatchRunOptions = TaskRunOptions & {\n maxConcurrency?: number;\n};\n\nexport type Prettify<T> = {\n [K in keyof T]: T[K];\n} & {};\n\nexport type DynamicBaseOptions = {\n id: string;\n};\n\nexport function createTask<TInput, TOutput, TInitOutput extends InitOutput>(\n params: TaskOptions<TInput, TOutput, TInitOutput>\n): Task<TInput, TOutput> {\n const task: Task<TInput, TOutput> = {\n trigger: async ({ payload, options }) => {\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const taskMetadata = runtime.getTaskMetadata(params.id);\n\n const handle = await tracer.startActiveSpan(\n taskMetadata ? \"Trigger\" : `${params.id} trigger()`,\n async (span) => {\n const response = await apiClient.triggerTask(\n params.id,\n {\n payload: payload,\n options: {\n queue: params.queue,\n concurrencyKey: options?.concurrencyKey,\n test: taskContextManager.ctx?.run.isTest,\n },\n },\n { spanParentAsLink: true }\n );\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n span.setAttribute(\"messaging.message.id\", response.data.id);\n\n return response.data;\n },\n {\n kind: SpanKind.PRODUCER,\n attributes: {\n [SEMATTRS_MESSAGING_OPERATION]: \"publish\",\n [SemanticInternalAttributes.STYLE_ICON]: \"trigger\",\n [\"messaging.client_id\"]: taskContextManager.worker?.id,\n [SEMATTRS_MESSAGING_DESTINATION]: params.queue?.name ?? params.id,\n [\"messaging.message.body.size\"]: JSON.stringify(payload).length,\n [SEMATTRS_MESSAGING_SYSTEM]: \"trigger.dev\",\n ...(taskMetadata\n ? accessoryAttributes({\n items: [\n {\n text: `${taskMetadata.exportName}.trigger()`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n })\n : {}),\n },\n }\n );\n\n return handle;\n },\n batchTrigger: async ({ items }) => {\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const taskMetadata = runtime.getTaskMetadata(params.id);\n\n const response = await tracer.startActiveSpan(\n taskMetadata ? \"Batch trigger\" : `${params.id} batchTrigger()`,\n async (span) => {\n const response = await apiClient.batchTriggerTask(\n params.id,\n {\n items: items.map((item) => ({\n payload: item.payload,\n options: {\n queue: item.options?.queue ?? params.queue,\n concurrencyKey: item.options?.concurrencyKey,\n test: taskContextManager.ctx?.run.isTest,\n },\n })),\n },\n { spanParentAsLink: true }\n );\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n span.setAttribute(\"messaging.message.id\", response.data.batchId);\n\n return response.data;\n },\n {\n kind: SpanKind.PRODUCER,\n attributes: {\n [SEMATTRS_MESSAGING_OPERATION]: \"publish\",\n [\"messaging.batch.message_count\"]: items.length,\n [\"messaging.client_id\"]: taskContextManager.worker?.id,\n [SEMATTRS_MESSAGING_DESTINATION]: params.queue?.name ?? params.id,\n [\"messaging.message.body.size\"]: items\n .map((item) => JSON.stringify(item.payload))\n .join(\"\").length,\n [SEMATTRS_MESSAGING_SYSTEM]: \"trigger.dev\",\n [SemanticInternalAttributes.STYLE_ICON]: \"trigger\",\n ...(taskMetadata\n ? accessoryAttributes({\n items: [\n {\n text: `${taskMetadata.exportName}.batchTrigger()`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n })\n : {}),\n },\n }\n );\n\n return response;\n },\n triggerAndWait: async ({ payload, options }) => {\n const ctx = taskContextManager.ctx;\n\n if (!ctx) {\n throw new Error(\"triggerAndWait can only be used from inside a task.run()\");\n }\n\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const taskMetadata = runtime.getTaskMetadata(params.id);\n\n return await tracer.startActiveSpan(\n taskMetadata ? \"Trigger\" : `${params.id} triggerAndWait()`,\n async (span) => {\n const response = await apiClient.triggerTask(params.id, {\n payload,\n options: {\n dependentAttempt: ctx.attempt.id,\n lockToVersion: taskContextManager.worker?.version, // Lock to current version because we're waiting for it to finish\n queue: params.queue,\n concurrencyKey: options?.concurrencyKey,\n test: taskContextManager.ctx?.run.isTest,\n },\n });\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n span.setAttribute(\"messaging.message.id\", response.data.id);\n\n const result = await runtime.waitForTask({\n id: response.data.id,\n ctx,\n });\n\n const runResult = await handleTaskRunExecutionResult<TOutput>(result);\n\n if (!runResult.ok) {\n throw runResult.error;\n }\n\n return runResult.output;\n },\n {\n kind: SpanKind.PRODUCER,\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"trigger\",\n [SEMATTRS_MESSAGING_OPERATION]: \"publish\",\n [\"messaging.client_id\"]: taskContextManager.worker?.id,\n [SEMATTRS_MESSAGING_DESTINATION]: params.queue?.name ?? params.id,\n [SEMATTRS_MESSAGING_SYSTEM]: \"trigger.dev\",\n ...(taskMetadata\n ? accessoryAttributes({\n items: [\n {\n text: `${taskMetadata.exportName}.triggerAndWait()`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n })\n : {}),\n },\n }\n );\n },\n batchTriggerAndWait: async ({ items }) => {\n const ctx = taskContextManager.ctx;\n\n if (!ctx) {\n throw new Error(\"batchTriggerAndWait can only be used from inside a task.run()\");\n }\n\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const taskMetadata = runtime.getTaskMetadata(params.id);\n\n return await tracer.startActiveSpan(\n taskMetadata ? \"Batch trigger\" : `${params.id} batchTriggerAndWait()`,\n async (span) => {\n const response = await apiClient.batchTriggerTask(params.id, {\n items: items.map((item) => ({\n payload: item.payload,\n options: {\n lockToVersion: taskContextManager.worker?.version,\n queue: item.options?.queue ?? params.queue,\n concurrencyKey: item.options?.concurrencyKey,\n test: taskContextManager.ctx?.run.isTest,\n },\n })),\n dependentAttempt: ctx.attempt.id,\n });\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n span.setAttribute(\"messaging.message.id\", response.data.batchId);\n\n const result = await runtime.waitForBatch({\n id: response.data.batchId,\n runs: response.data.runs,\n ctx,\n });\n\n const runs = await handleBatchTaskRunExecutionResult<TOutput>(result.items);\n\n return {\n id: result.id,\n runs,\n };\n },\n {\n kind: SpanKind.PRODUCER,\n attributes: {\n [SEMATTRS_MESSAGING_OPERATION]: \"publish\",\n [\"messaging.batch.message_count\"]: items.length,\n [\"messaging.client_id\"]: taskContextManager.worker?.id,\n [SEMATTRS_MESSAGING_DESTINATION]: params.queue?.name ?? params.id,\n [\"messaging.message.body.size\"]: items\n .map((item) => JSON.stringify(item.payload))\n .join(\"\").length,\n [SEMATTRS_MESSAGING_SYSTEM]: \"trigger.dev\",\n [SemanticInternalAttributes.STYLE_ICON]: \"trigger\",\n ...(taskMetadata\n ? accessoryAttributes({\n items: [\n {\n text: `${taskMetadata.exportName}.batchTriggerAndWait()`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n })\n : {}),\n },\n }\n );\n },\n };\n\n Object.defineProperty(task, \"__trigger\", {\n value: {\n id: params.id,\n packageVersion: packageJson.version,\n queue: params.queue,\n retry: params.retry ? { ...defaultRetryOptions, ...params.retry } : undefined,\n machine: params.machine,\n fns: {\n run: params.run,\n init: params.init,\n cleanup: params.cleanup,\n middleware: params.middleware,\n handleError: params.handleError,\n },\n },\n enumerable: false,\n });\n\n return task;\n}\n\nasync function handleBatchTaskRunExecutionResult<TOutput>(\n items: Array<TaskRunExecutionResult>\n): Promise<Array<TaskRunResult<TOutput>>> {\n const someObjectStoreOutputs = items.some(\n (item) => item.ok && item.outputType === \"application/store\"\n );\n\n if (!someObjectStoreOutputs) {\n const results = await Promise.all(\n items.map(async (item) => {\n return await handleTaskRunExecutionResult<TOutput>(item);\n })\n );\n\n return results;\n }\n\n return await tracer.startActiveSpan(\n \"store.downloadPayloads\",\n async (span) => {\n const results = await Promise.all(\n items.map(async (item) => {\n return await handleTaskRunExecutionResult<TOutput>(item);\n })\n );\n\n return results;\n },\n {\n kind: SpanKind.INTERNAL,\n [SemanticInternalAttributes.STYLE_ICON]: \"cloud-download\",\n }\n );\n}\n\nasync function handleTaskRunExecutionResult<TOutput>(\n execution: TaskRunExecutionResult\n): Promise<TaskRunResult<TOutput>> {\n if (execution.ok) {\n const outputPacket = { data: execution.output, dataType: execution.outputType };\n const importedPacket = await conditionallyImportPacket(outputPacket, tracer);\n\n return {\n ok: true,\n id: execution.id,\n output: await parsePacket(importedPacket),\n };\n } else {\n return {\n ok: false,\n id: execution.id,\n error: createErrorTaskError(execution.error),\n };\n }\n}\n\nexport function apiClientMissingError() {\n const hasBaseUrl = !!apiClientManager.baseURL;\n const hasAccessToken = !!apiClientManager.accessToken;\n if (!hasBaseUrl && !hasAccessToken) {\n return `You need to set the TRIGGER_API_URL and TRIGGER_SECRET_KEY environment variables.`;\n } else if (!hasBaseUrl) {\n return `You need to set the TRIGGER_API_URL environment variable.`;\n } else if (!hasAccessToken) {\n return `You need to set the TRIGGER_SECRET_KEY environment variable.`;\n }\n\n return `Unknown error`;\n}\n","{\n \"name\": \"@trigger.dev/sdk\",\n \"version\": \"3.0.0-beta.7\",\n \"description\": \"trigger.dev Node.JS SDK\",\n \"license\": \"MIT\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.mjs\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"files\": [\n \"dist\"\n ],\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.mts\",\n \"default\": \"./dist/index.mjs\"\n },\n \"require\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\"\n },\n \"./v3\": {\n \"import\": {\n \"types\": \"./dist/v3/index.d.mts\",\n \"default\": \"./dist/v3/index.mjs\"\n },\n \"require\": \"./dist/v3/index.js\",\n \"types\": \"./dist/v3/index.d.ts\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"typesVersions\": {\n \"*\": {\n \"v3\": [\n \"./dist/v3/index.d.ts\"\n ]\n }\n },\n \"scripts\": {\n \"clean\": \"rimraf dist\",\n \"build\": \"npm run clean && npm run build:tsup\",\n \"build:tsup\": \"tsup --dts-resolve\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@opentelemetry/api\": \"^1.8.0\",\n \"@opentelemetry/api-logs\": \"^0.48.0\",\n \"@opentelemetry/semantic-conventions\": \"^1.22.0\",\n \"@trigger.dev/core\": \"workspace:^3.0.0-beta.7\",\n \"@trigger.dev/core-backend\": \"workspace:^3.0.0-beta.7\",\n \"chalk\": \"^5.2.0\",\n \"cronstrue\": \"^2.21.0\",\n \"debug\": \"^4.3.4\",\n \"evt\": \"^2.4.13\",\n \"get-caller-file\": \"^2.0.5\",\n \"git-remote-origin-url\": \"^4.0.0\",\n \"git-repo-info\": \"^2.1.1\",\n \"slug\": \"^6.0.0\",\n \"terminal-link\": \"^3.0.0\",\n \"ulid\": \"^2.3.0\",\n \"uuid\": \"^9.0.0\",\n \"ws\": \"^8.11.0\",\n \"zod\": \"3.22.3\"\n },\n \"devDependencies\": {\n \"@trigger.dev/tsconfig\": \"workspace:*\",\n \"@trigger.dev/tsup\": \"workspace:*\",\n \"@types/debug\": \"^4.1.7\",\n \"@types/node\": \"18\",\n \"@types/slug\": \"^5.0.3\",\n \"@types/uuid\": \"^9.0.0\",\n \"@types/ws\": \"^8.5.3\",\n \"encoding\": \"^0.1.13\",\n \"msw\": \"^2.2.1\",\n \"rimraf\": \"^3.0.2\",\n \"tsup\": \"^8.0.1\",\n \"typed-emitter\": \"^2.1.0\",\n \"typescript\": \"^5.3.0\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.2.1\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n }\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}","import { TriggerTracer } from \"@trigger.dev/core/v3\";\nimport * as packageJson from \"../../package.json\";\n\nexport const tracer = new TriggerTracer({ name: \"@trigger.dev/sdk\", version: packageJson.version });\n","import { InitOutput } from \"@trigger.dev/core/v3\";\nimport { TaskOptions, Task, createTask } from \"./shared\";\n\n/** Creates a task that can be triggered\n * @param options - Task options\n * @example \n * \n * ```ts\n * import { task } from \"@trigger.dev/sdk/v3\";\n *\n * export const helloWorld = task({\n id: \"hello-world\",\n * run: async (payload: { url: string }) => {\n * return { hello: \"world\" };\n * },\n * });\n *\n * ```\n * \n * @returns A task that can be triggered\n */\nexport function task<TInput, TOutput = any, TInitOutput extends InitOutput = any>(\n options: TaskOptions<TInput, TOutput, TInitOutput>\n): Task<TInput, TOutput> {\n return createTask<TInput, TOutput, TInitOutput>(options);\n}\n","import { SemanticInternalAttributes, accessoryAttributes, runtime } from \"@trigger.dev/core/v3\";\nimport { tracer } from \"./tracer\";\n\nexport type WaitOptions =\n | {\n seconds: number;\n }\n | {\n minutes: number;\n }\n | {\n hours: number;\n }\n | {\n days: number;\n }\n | {\n weeks: number;\n }\n | {\n months: number;\n }\n | {\n years: number;\n };\n\nexport const wait = {\n for: async (options: WaitOptions) => {\n return tracer.startActiveSpan(\n `wait.for()`,\n async (span) => {\n const start = Date.now();\n const durationInMs = calculateDurationInMs(options);\n\n await runtime.waitForDuration(durationInMs);\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"wait\",\n ...accessoryAttributes({\n items: [\n {\n text: nameForWaitOptions(options),\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n }),\n },\n }\n );\n },\n until: async (options: { date: Date; throwIfInThePast?: boolean }) => {\n return tracer.startActiveSpan(\n `wait.until()`,\n async (span) => {\n const start = Date.now();\n\n if (options.throwIfInThePast && options.date < new Date()) {\n throw new Error(\"Date is in the past\");\n }\n\n const durationInMs = options.date.getTime() - start;\n\n await runtime.waitForDuration(durationInMs);\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"wait\",\n ...accessoryAttributes({\n items: [\n {\n text: options.date.toISOString(),\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n }),\n },\n }\n );\n },\n};\n\nfunction nameForWaitOptions(options: WaitOptions): string {\n if (\"seconds\" in options) {\n return options.seconds === 1 ? `1 second` : `${options.seconds} seconds`;\n }\n\n if (\"minutes\" in options) {\n return options.minutes === 1 ? `1 minute` : `${options.minutes} minutes`;\n }\n\n if (\"hours\" in options) {\n return options.hours === 1 ? `1 hour` : `${options.hours} hours`;\n }\n\n if (\"days\" in options) {\n return options.days === 1 ? `1 day` : `${options.days} days`;\n }\n\n if (\"weeks\" in options) {\n return options.weeks === 1 ? `1 week` : `${options.weeks} weeks`;\n }\n\n if (\"months\" in options) {\n return options.months === 1 ? `1 month` : `${options.months} months`;\n }\n\n if (\"years\" in options) {\n return options.years === 1 ? `1 year` : `${options.years} years`;\n }\n\n return \"NaN\";\n}\n\nfunction calculateDurationInMs(options: WaitOptions): number {\n if (\"seconds\" in options) {\n return options.seconds * 1000;\n }\n\n if (\"minutes\" in options) {\n return options.minutes * 1000 * 60;\n }\n\n if (\"hours\" in options) {\n return options.hours * 1000 * 60 * 60;\n }\n\n if (\"days\" in options) {\n return options.days * 1000 * 60 * 60 * 24;\n }\n\n if (\"weeks\" in options) {\n return options.weeks * 1000 * 60 * 60 * 24 * 7;\n }\n\n if (\"months\" in options) {\n return options.months * 1000 * 60 * 60 * 24 * 30;\n }\n\n if (\"years\" in options) {\n return options.years * 1000 * 60 * 60 * 24 * 365;\n }\n\n throw new Error(\"Invalid options\");\n}\n\ntype RequestOptions = {\n to: (url: string) => Promise<void>;\n timeout: WaitOptions;\n};\n","import { SemanticInternalAttributes } from \"@trigger.dev/core/v3\";\nimport { tracer } from \"./tracer\";\n\nexport type CacheMetadata = {\n createdTime: number;\n ttl?: number | null;\n};\n\nexport type CacheEntry<Value = unknown> = {\n metadata: CacheMetadata;\n value: Value;\n};\n\nexport type Eventually<Value> = Value | null | undefined | Promise<Value | null | undefined>;\n\nexport type CacheStore<Value = any> = {\n name?: string;\n get: (key: string) => Eventually<CacheEntry<Value>>;\n set: (key: string, value: CacheEntry<Value>) => unknown | Promise<unknown>;\n delete: (key: string) => unknown | Promise<unknown>;\n};\n\nexport type CacheFunction = <Value>(\n cacheKey: string,\n fn: () => Promise<Value> | Value\n) => Promise<Value> | Value;\n\nexport class InMemoryCache<Value = any> {\n private _cache: Map<string, CacheEntry<Value>> = new Map();\n\n get(key: string): Eventually<CacheEntry<Value>> {\n return this._cache.get(key);\n }\n\n set(key: string, value: CacheEntry<Value>): unknown {\n this._cache.set(key, value);\n\n return undefined;\n }\n\n delete(key: string): unknown {\n this._cache.delete(key);\n\n return undefined;\n }\n}\n\n/**\n * Create a cache function that uses the provided store to cache values. Using InMemoryCache is safe because each task run is isolated.\n * @param store\n * @returns\n */\nexport function createCache(store: CacheStore): CacheFunction {\n return function cache<Value>(\n cacheKey: string,\n fn: () => Promise<Value> | Value\n ): Promise<Value> | Value {\n return tracer.startActiveSpan(\"cache\", async (span) => {\n span.setAttribute(\"cache.key\", cacheKey);\n span.setAttribute(SemanticInternalAttributes.STYLE_ICON, \"device-sd-card\");\n\n const cacheEntry = await store.get(cacheKey);\n\n if (cacheEntry) {\n span.updateName(`cache.hit ${cacheKey}`);\n\n return cacheEntry.value;\n }\n\n span.updateName(`cache.miss ${cacheKey}`);\n\n const value = await tracer.startActiveSpan(\n \"cache.getFreshValue\",\n async (span) => {\n return await fn();\n },\n {\n attributes: {\n \"cache.key\": cacheKey,\n [SemanticInternalAttributes.STYLE_ICON]: \"device-sd-card\",\n },\n }\n );\n\n await tracer.startActiveSpan(\n \"cache.set\",\n async (span) => {\n await store.set(cacheKey, {\n value,\n metadata: {\n createdTime: Date.now(),\n },\n });\n },\n {\n attributes: {\n \"cache.key\": cacheKey,\n [SemanticInternalAttributes.STYLE_ICON]: \"device-sd-card\",\n },\n }\n );\n\n return value;\n });\n };\n}\n","import { Attributes, Span, SpanStatusCode, context, trace } from \"@opentelemetry/api\";\nimport {\n SEMATTRS_HTTP_HOST,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_SCHEME,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_URL,\n} from \"@opentelemetry/semantic-conventions\";\nimport {\n FetchRetryByStatusOptions,\n FetchRetryOptions,\n FetchRetryStrategy,\n RetryOptions,\n SemanticInternalAttributes,\n accessoryAttributes,\n calculateNextRetryDelay,\n calculateResetAt,\n defaultRetryOptions,\n eventFilterMatches,\n flattenAttributes,\n runtime,\n} from \"@trigger.dev/core/v3\";\nimport { defaultFetchRetryOptions } from \"@trigger.dev/core/v3\";\nimport type { HttpHandler } from \"msw\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { tracer } from \"./tracer\";\n\nexport type { RetryOptions };\n\nfunction onThrow<T>(\n fn: (options: { attempt: number; maxAttempts: number }) => Promise<T>,\n options: RetryOptions\n): Promise<T> {\n const opts = {\n ...defaultRetryOptions,\n ...options,\n };\n\n return tracer.startActiveSpan(\n `retry.onThrow()`,\n async (span) => {\n let attempt = 1;\n\n while (attempt <= opts.maxAttempts) {\n const innerSpan = tracer.startSpan(\"retry.fn()\", {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n ...accessoryAttributes({\n items: [\n {\n text: `${attempt}/${opts.maxAttempts}`,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n }),\n },\n });\n\n const contextWithSpanSet = trace.setSpan(context.active(), innerSpan);\n\n try {\n const result = await context.with(contextWithSpanSet, async () => {\n return fn({ attempt, maxAttempts: opts.maxAttempts });\n });\n\n innerSpan.end();\n\n return result;\n } catch (e) {\n if (e instanceof Error || typeof e === \"string\") {\n innerSpan.recordException(e);\n } else {\n innerSpan.recordException(String(e));\n }\n\n innerSpan.setStatus({ code: SpanStatusCode.ERROR });\n\n const nextRetryDelay = calculateNextRetryDelay(opts, attempt);\n\n if (!nextRetryDelay) {\n innerSpan.end();\n\n throw e;\n }\n\n innerSpan.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(Date.now() + nextRetryDelay).toISOString()\n );\n innerSpan.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n innerSpan.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetryDelay}ms`);\n innerSpan.end();\n\n await runtime.waitForDuration(nextRetryDelay);\n } finally {\n attempt++;\n }\n }\n\n throw new Error(\"Max attempts reached\");\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"arrow-capsule\",\n },\n }\n );\n}\n\nexport interface RetryFetchRequestInit extends RequestInit {\n retry?: FetchRetryOptions;\n timeoutInMs?: number;\n}\n\nconst normalizeUrlFromInput = (input: RequestInfo | URL | string): URL => {\n if (typeof input === \"string\") {\n return new URL(input);\n }\n\n if (input instanceof URL) {\n return input;\n }\n\n return new URL(input.url);\n};\n\nconst normalizeHttpMethod = (input: RequestInfo | URL | string, init?: RequestInit): string => {\n if (typeof input === \"string\" || input instanceof URL) {\n return (init?.method || \"GET\").toUpperCase();\n }\n\n return (input.method ?? init?.method ?? \"GET\").toUpperCase();\n};\n\nconst fetchHttpHandlerStorage = new AsyncLocalStorage<Array<HttpHandler>>();\n\nconst fetchWithInterceptors = async (\n input: RequestInfo | URL,\n init?: RequestInit\n): Promise<Response> => {\n const handlers = fetchHttpHandlerStorage.getStore();\n\n if (handlers) {\n try {\n const { getResponse } = await import(\"msw\");\n\n const request = new Request(input, init);\n\n const response = await getResponse(handlers, request);\n\n if (response) {\n return response;\n }\n } catch (e) {\n // Do nothing\n return fetch(input, init);\n }\n }\n\n return fetch(input, init);\n};\n\nclass FetchErrorWithSpan extends Error {\n constructor(\n public readonly originalError: unknown,\n public readonly span: Span\n ) {\n super(\"Fetch error\");\n }\n}\n\nconst MAX_ATTEMPTS = 10;\n\nasync function retryFetch(\n input: RequestInfo | URL,\n init?: RetryFetchRequestInit | undefined\n): Promise<Response> {\n return tracer.startActiveSpan(\n \"retry.fetch()\",\n async (span) => {\n let attempt = 1;\n\n while (true) {\n try {\n const abortController = new AbortController();\n\n const timeoutId = init?.timeoutInMs\n ? setTimeout(\n () => {\n abortController.abort();\n },\n init?.timeoutInMs\n )\n : undefined;\n\n init?.signal?.addEventListener(\"abort\", () => {\n abortController.abort();\n });\n\n const [response, span] = await doFetchRequest(\n input,\n { ...(init ?? {}), signal: abortController.signal },\n attempt\n );\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n if (response.ok) {\n span.setAttributes(createFetchResponseAttributes(response));\n\n span.end();\n\n return response;\n }\n\n const nextRetry = await calculateRetryDelayForResponse(\n resolveDefaults(init?.retry, \"byStatus\", defaultFetchRetryOptions.byStatus),\n response,\n attempt\n );\n\n if (!nextRetry) {\n span.setAttributes(createFetchResponseAttributes(response));\n\n span.end();\n\n return response;\n }\n\n if (attempt >= MAX_ATTEMPTS) {\n span.setAttributes(createFetchResponseAttributes(response));\n\n span.end();\n\n return response;\n }\n\n if (nextRetry.type === \"delay\") {\n span.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(Date.now() + nextRetry.value).toISOString()\n );\n span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetry.value}ms`);\n\n span.end();\n\n await runtime.waitForDuration(nextRetry.value);\n } else {\n const now = Date.now();\n const nextRetryDate = new Date(nextRetry.value);\n const isInFuture = nextRetryDate.getTime() > now;\n\n span.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(nextRetry.value).toISOString()\n );\n span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n\n if (isInFuture) {\n span.setAttribute(\n SemanticInternalAttributes.RETRY_DELAY,\n `${nextRetry.value - now}ms`\n );\n }\n\n span.end();\n\n await runtime.waitUntil(new Date(nextRetry.value));\n }\n } catch (e) {\n if (e instanceof FetchErrorWithSpan && e.originalError instanceof Error) {\n if (e.originalError.name === \"AbortError\") {\n const nextRetryDelay = calculateNextRetryDelay(\n resolveDefaults(init?.retry, \"timeout\", defaultFetchRetryOptions.timeout),\n attempt\n );\n\n if (!nextRetryDelay) {\n e.span.end();\n throw e;\n }\n\n if (attempt >= MAX_ATTEMPTS) {\n e.span.end();\n throw e;\n }\n\n e.span.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(Date.now() + nextRetryDelay).toISOString()\n );\n e.span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n e.span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetryDelay}ms`);\n\n e.span.end();\n\n await runtime.waitForDuration(nextRetryDelay);\n\n continue; // Move to the next attempt\n } else if (\n e.originalError.name === \"TypeError\" &&\n \"cause\" in e.originalError &&\n e.originalError.cause instanceof Error\n ) {\n const nextRetryDelay = calculateNextRetryDelay(\n resolveDefaults(\n init?.retry,\n \"connectionError\",\n defaultFetchRetryOptions.connectionError\n ),\n attempt\n );\n\n if (!nextRetryDelay) {\n e.span.end();\n throw e;\n }\n\n if (attempt >= MAX_ATTEMPTS) {\n e.span.end();\n throw e;\n }\n\n e.span.setAttribute(\n SemanticInternalAttributes.RETRY_AT,\n new Date(Date.now() + nextRetryDelay).toISOString()\n );\n e.span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);\n e.span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetryDelay}ms`);\n\n e.span.end();\n\n await runtime.waitForDuration(nextRetryDelay);\n\n continue; // Move to the next attempt\n }\n }\n\n if (e instanceof FetchErrorWithSpan) {\n e.span.end();\n }\n\n throw e;\n } finally {\n attempt++;\n }\n }\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"arrow-capsule\",\n ...createFetchAttributes(input, init),\n ...createFetchRetryOptionsAttributes(init?.retry),\n },\n }\n );\n}\n\nconst doFetchRequest = async (\n input: RequestInfo | URL | string,\n init?: RequestInit,\n attemptCount: number = 0\n): Promise<[Response, Span]> => {\n const httpMethod = normalizeHttpMethod(input, init);\n\n const span = tracer.startSpan(`HTTP ${httpMethod}`, {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"world\",\n ...(attemptCount > 1 ? { [\"http.request.resend_count\"]: attemptCount - 1 } : {}),\n ...createFetchAttributes(input, init),\n },\n });\n\n try {\n const response = await fetchWithInterceptors(input, {\n ...init,\n headers: {\n ...init?.headers,\n \"x-retry-count\": attemptCount.toString(),\n },\n });\n\n span.setAttributes(createFetchResponseAttributes(response));\n\n if (!response.ok) {\n span.recordException(`${response.status}: ${response.statusText}`);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${response.status}: ${response.statusText}`,\n });\n }\n\n return [response, span];\n } catch (e) {\n if (typeof e === \"string\" || e instanceof Error) {\n span.recordException(e);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR });\n span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, 0);\n span.setAttribute(\"http.status_text\", \"This operation was aborted.\");\n\n throw new FetchErrorWithSpan(e, span);\n }\n};\n\nconst calculateRetryDelayForResponse = async (\n retry: FetchRetryByStatusOptions | undefined,\n response: Response,\n attemptCount: number\n): Promise<{ type: \"delay\"; value: number } | { type: \"timestamp\"; value: number } | undefined> => {\n if (!retry) {\n return;\n }\n\n const strategy = await getRetryStrategyForResponse(response, retry);\n\n if (!strategy) {\n return;\n }\n\n switch (strategy.strategy) {\n case \"backoff\": {\n const value = calculateNextRetryDelay({ ...defaultRetryOptions, ...strategy }, attemptCount);\n\n if (value) {\n return { type: \"delay\", value };\n }\n\n break;\n }\n case \"headers\": {\n const resetAt = response.headers.get(strategy.resetHeader);\n\n if (typeof resetAt === \"string\") {\n const resetTimestamp = calculateResetAt(\n resetAt,\n strategy.resetFormat ?? \"unix_timestamp_in_ms\"\n );\n\n if (resetTimestamp) {\n return { type: \"timestamp\", value: resetTimestamp };\n }\n }\n\n break;\n }\n }\n};\n\nconst getRetryStrategyForResponse = async (\n response: Response,\n retry: FetchRetryByStatusOptions\n): Promise<FetchRetryStrategy | undefined> => {\n const statusCodes = Object.keys(retry);\n const clonedResponse = response.clone();\n\n for (let i = 0; i < statusCodes.length; i++) {\n const statusRange = statusCodes[i];\n const strategy = retry[statusRange];\n\n if (isStatusCodeInRange(response.status, statusRange)) {\n if (strategy.bodyFilter) {\n const body = safeJsonParse(await clonedResponse.text());\n\n if (!body) {\n continue;\n }\n\n if (eventFilterMatches(body, strategy.bodyFilter)) {\n return strategy;\n } else {\n continue;\n }\n }\n\n return strategy;\n }\n }\n};\n\n/**\n * Checks if a given status code falls within a given range.\n * The range can be a single status code (e.g. \"200\"),\n * a range of status codes (e.g. \"500-599\"),\n * a range of status codes with a wildcard (e.g. \"4xx\" for any 4xx status code),\n * or a list of status codes separated by commas (e.g. \"401,403,404,409-412,5xx\").\n * Returns `true` if the status code falls within the range, and `false` otherwise.\n */\nconst isStatusCodeInRange = (statusCode: number, statusRange: string): boolean => {\n if (statusRange === \"all\") {\n return true;\n }\n\n if (statusRange.includes(\",\")) {\n const statusCodes = statusRange.split(\",\").map((s) => s.trim());\n\n return statusCodes.some((s) => isStatusCodeInRange(statusCode, s));\n }\n\n const [start, end] = statusRange.split(\"-\");\n\n if (end) {\n return statusCode >= parseInt(start, 10) && statusCode <= parseInt(end, 10);\n }\n\n if (start.endsWith(\"xx\")) {\n const prefix = start.slice(0, -2);\n const statusCodePrefix = Math.floor(statusCode / 100).toString();\n return statusCodePrefix === prefix;\n }\n\n const statusCodeString = statusCode.toString();\n const rangePrefix = start.slice(0, -1);\n\n if (start.endsWith(\"x\") && statusCodeString.startsWith(rangePrefix)) {\n return true;\n }\n\n return statusCode === parseInt(start, 10);\n};\n\nconst createAttributesFromHeaders = (headers: Headers): Attributes => {\n const attributes: Attributes = {};\n\n const normalizedHeaderKey = (key: string) => {\n return key.toLowerCase();\n };\n\n headers.forEach((value, key) => {\n attributes[`http.response.header.${normalizedHeaderKey(key)}`] = value;\n });\n\n return attributes;\n};\n\nconst safeJsonParse = (json: string): unknown => {\n try {\n return JSON.parse(json);\n } catch (e) {\n return null;\n }\n};\n\nconst interceptFetch = (...handlers: Array<HttpHandler>) => {\n return {\n run: async <T>(fn: (...args: any[]) => Promise<T>): Promise<T> => {\n const current = fetchHttpHandlerStorage.getStore();\n\n if (current) {\n current.push(...handlers);\n return fn();\n } else {\n return fetchHttpHandlerStorage.run(handlers, fn);\n }\n },\n };\n};\n\n// This function will resolve the defaults of a property within an options object.\n// If the options object is undefined, it will return the defaults for that property (passed in as the 3rd arg).\n// if the options object is defined, and the property exists, then it will return the defaults if the value of the property is undefined or null\nconst resolveDefaults = <\n TObject extends Record<string, unknown>,\n K extends keyof TObject,\n TValue extends TObject[K],\n>(\n obj: TObject | undefined,\n key: K,\n defaults: TValue\n): TValue => {\n if (!obj) {\n return defaults;\n }\n\n if (obj[key] === undefined || obj[key] === null) {\n return defaults;\n }\n\n return obj[key] as TValue;\n};\n\nconst createFetchAttributes = (\n input: RequestInfo | URL,\n init?: RetryFetchRequestInit | undefined\n): Attributes => {\n const url = normalizeUrlFromInput(input);\n const httpMethod = normalizeHttpMethod(input, init);\n\n return {\n [SEMATTRS_HTTP_METHOD]: httpMethod,\n [SEMATTRS_HTTP_URL]: url.href,\n [SEMATTRS_HTTP_HOST]: url.hostname,\n [\"server.host\"]: url.hostname,\n [\"server.port\"]: url.port,\n [SEMATTRS_HTTP_SCHEME]: url.protocol.replace(\":\", \"\"),\n ...accessoryAttributes({\n items: [\n {\n text: url.hostname,\n variant: \"normal\",\n },\n ],\n style: \"codepath\",\n }),\n };\n};\n\nconst createFetchResponseAttributes = (response: Response): Attributes => {\n return {\n [SEMATTRS_HTTP_STATUS_CODE]: response.status,\n \"http.status_text\": response.statusText,\n [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]: response.headers.get(\"content-length\") || \"0\",\n ...createAttributesFromHeaders(response.headers),\n };\n};\n\nconst createFetchRetryOptionsAttributes = (retry?: FetchRetryOptions): Attributes => {\n const byStatus = resolveDefaults(retry, \"byStatus\", defaultFetchRetryOptions.byStatus);\n const connectionError = resolveDefaults(\n retry,\n \"connectionError\",\n defaultFetchRetryOptions.connectionError\n );\n const timeout = resolveDefaults(retry, \"timeout\", defaultFetchRetryOptions.timeout);\n\n return {\n ...flattenAttributes(byStatus, \"retry.byStatus\"),\n ...flattenAttributes(connectionError, \"retry.connectionError\"),\n ...flattenAttributes(timeout, \"retry.timeout\"),\n };\n};\n\nexport const retry = {\n onThrow,\n fetch: retryFetch,\n interceptFetch,\n};\n","export * from \"./tasks\";\nexport * from \"./config\";\nexport * from \"./wait\";\nexport * from \"./cache\";\nexport { retry, type RetryOptions } from \"./retry\";\n\nimport type { Context } from \"./shared\";\nexport type { Context };\n\nexport { logger, type LogLevel } from \"@trigger.dev/core/v3\";\n\nexport { runs } from \"./management\";\n","import { CanceledRunResponse, ReplayRunResponse, apiClientManager } from \"@trigger.dev/core/v3\";\nimport { apiClientMissingError } from \"./shared\";\n\nexport const runs = {\n replay: replayRun,\n cancel: cancelRun,\n};\n\nasync function replayRun(runId: string): Promise<ReplayRunResponse> {\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const response = await apiClient.replayRun(runId);\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n return response.data;\n}\n\nasync function cancelRun(runId: string): Promise<CanceledRunResponse> {\n const apiClient = apiClientManager.client;\n\n if (!apiClient) {\n throw apiClientMissingError();\n }\n\n const response = await apiClient.cancelRun(runId);\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n\n return response.data;\n}\n"]}
package/dist/v3/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { SpanKind, trace, context, SpanStatusCode } from '@opentelemetry/api';
2
2
  import { SEMATTRS_HTTP_STATUS_CODE, SEMATTRS_HTTP_METHOD, SEMATTRS_HTTP_URL, SEMATTRS_HTTP_HOST, SEMATTRS_HTTP_SCHEME, SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, SEMATTRS_MESSAGING_OPERATION, SEMATTRS_MESSAGING_DESTINATION, SEMATTRS_MESSAGING_SYSTEM } from '@opentelemetry/semantic-conventions';
3
- import { TriggerTracer, runtime, SemanticInternalAttributes, accessoryAttributes, defaultRetryOptions, conditionallyImportPacket, parsePacket, createErrorTaskError, apiClientManager, calculateNextRetryDelay, defaultFetchRetryOptions, calculateResetAt, eventFilterMatches, flattenAttributes, taskContextManager } from '@trigger.dev/core/v3';
3
+ import { TriggerTracer, runtime, SemanticInternalAttributes, accessoryAttributes, apiClientManager, defaultRetryOptions, conditionallyImportPacket, parsePacket, createErrorTaskError, calculateNextRetryDelay, defaultFetchRetryOptions, calculateResetAt, eventFilterMatches, flattenAttributes, taskContextManager } from '@trigger.dev/core/v3';
4
4
  export { logger } from '@trigger.dev/core/v3';
5
5
  import { AsyncLocalStorage } from 'node:async_hooks';
6
6
 
@@ -13,7 +13,7 @@ var __publicField = (obj, key, value) => {
13
13
  };
14
14
 
15
15
  // package.json
16
- var version = "3.0.0-beta.6";
16
+ var version = "3.0.0-beta.7";
17
17
  var tracer = new TriggerTracer({
18
18
  name: "@trigger.dev/sdk",
19
19
  version
@@ -199,10 +199,10 @@ function createTask(params) {
199
199
  runs: response.data.runs,
200
200
  ctx
201
201
  });
202
- const runs = await handleBatchTaskRunExecutionResult(result.items);
202
+ const runs2 = await handleBatchTaskRunExecutionResult(result.items);
203
203
  return {
204
204
  id: result.id,
205
- runs
205
+ runs: runs2
206
206
  };
207
207
  }, {
208
208
  kind: SpanKind.PRODUCER,
@@ -877,7 +877,35 @@ var retry = {
877
877
  fetch: retryFetch,
878
878
  interceptFetch
879
879
  };
880
+ var runs = {
881
+ replay: replayRun,
882
+ cancel: cancelRun
883
+ };
884
+ async function replayRun(runId) {
885
+ const apiClient = apiClientManager.client;
886
+ if (!apiClient) {
887
+ throw apiClientMissingError();
888
+ }
889
+ const response = await apiClient.replayRun(runId);
890
+ if (!response.ok) {
891
+ throw new Error(response.error);
892
+ }
893
+ return response.data;
894
+ }
895
+ __name(replayRun, "replayRun");
896
+ async function cancelRun(runId) {
897
+ const apiClient = apiClientManager.client;
898
+ if (!apiClient) {
899
+ throw apiClientMissingError();
900
+ }
901
+ const response = await apiClient.cancelRun(runId);
902
+ if (!response.ok) {
903
+ throw new Error(response.error);
904
+ }
905
+ return response.data;
906
+ }
907
+ __name(cancelRun, "cancelRun");
880
908
 
881
- export { InMemoryCache, createCache, retry, task, wait };
909
+ export { InMemoryCache, createCache, retry, runs, task, wait };
882
910
  //# sourceMappingURL=out.js.map
883
911
  //# sourceMappingURL=index.mjs.map