@trigger.dev/sdk 0.0.0-prerelease-20241023140846 → 0.0.0-prerelease-20241119135607

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.
Files changed (199) hide show
  1. package/dist/commonjs/triggers/invokeTrigger.d.ts +1 -1
  2. package/dist/commonjs/types.d.ts +4 -4
  3. package/dist/commonjs/v3/auth.d.ts +104 -0
  4. package/dist/commonjs/v3/auth.js +102 -0
  5. package/dist/commonjs/v3/auth.js.map +1 -0
  6. package/dist/commonjs/v3/idempotencyKeys.d.ts +2 -46
  7. package/dist/commonjs/v3/idempotencyKeys.js +1 -69
  8. package/dist/commonjs/v3/idempotencyKeys.js.map +1 -1
  9. package/dist/commonjs/v3/index.d.ts +4 -19
  10. package/dist/commonjs/v3/index.js +18 -35
  11. package/dist/commonjs/v3/index.js.map +1 -1
  12. package/dist/commonjs/v3/metadata.d.ts +75 -12
  13. package/dist/commonjs/v3/metadata.js +93 -53
  14. package/dist/commonjs/v3/metadata.js.map +1 -1
  15. package/dist/commonjs/v3/runs.d.ts +33 -756
  16. package/dist/commonjs/v3/runs.js +12 -1
  17. package/dist/commonjs/v3/runs.js.map +1 -1
  18. package/dist/commonjs/v3/shared.d.ts +10 -380
  19. package/dist/commonjs/v3/shared.js +125 -68
  20. package/dist/commonjs/v3/shared.js.map +1 -1
  21. package/dist/commonjs/v3/tasks.d.ts +6 -5
  22. package/dist/commonjs/v3/tasks.js +4 -5
  23. package/dist/commonjs/v3/tasks.js.map +1 -1
  24. package/dist/commonjs/v3/tracer.d.ts +1 -1
  25. package/dist/commonjs/v3/tracer.js +2 -2
  26. package/dist/commonjs/v3/tracer.js.map +1 -1
  27. package/dist/commonjs/v3/waitUntil.d.ts +9 -0
  28. package/dist/commonjs/v3/waitUntil.js +16 -0
  29. package/dist/commonjs/v3/waitUntil.js.map +1 -0
  30. package/dist/commonjs/version.js +1 -1
  31. package/dist/esm/v3/auth.d.ts +104 -0
  32. package/dist/esm/v3/auth.js +98 -0
  33. package/dist/esm/v3/auth.js.map +1 -0
  34. package/dist/esm/v3/idempotencyKeys.d.ts +2 -46
  35. package/dist/esm/v3/idempotencyKeys.js +1 -68
  36. package/dist/esm/v3/idempotencyKeys.js.map +1 -1
  37. package/dist/esm/v3/index-browser.d.mts +2 -0
  38. package/dist/esm/v3/index-browser.mjs +3 -0
  39. package/dist/esm/v3/index.d.ts +4 -19
  40. package/dist/esm/v3/index.js +4 -22
  41. package/dist/esm/v3/index.js.map +1 -1
  42. package/dist/esm/v3/metadata.d.ts +75 -12
  43. package/dist/esm/v3/metadata.js +94 -54
  44. package/dist/esm/v3/metadata.js.map +1 -1
  45. package/dist/esm/v3/runs.d.ts +61 -784
  46. package/dist/esm/v3/runs.js +12 -1
  47. package/dist/esm/v3/runs.js.map +1 -1
  48. package/dist/esm/v3/shared.d.ts +10 -380
  49. package/dist/esm/v3/shared.js +121 -65
  50. package/dist/esm/v3/shared.js.map +1 -1
  51. package/dist/esm/v3/tasks.d.ts +6 -5
  52. package/dist/esm/v3/tasks.js +4 -4
  53. package/dist/esm/v3/tasks.js.map +1 -1
  54. package/dist/esm/v3/tracer.d.ts +1 -1
  55. package/dist/esm/v3/tracer.js +1 -1
  56. package/dist/esm/v3/tracer.js.map +1 -1
  57. package/dist/esm/v3/waitUntil.d.ts +9 -0
  58. package/dist/esm/v3/waitUntil.js +13 -0
  59. package/dist/esm/v3/waitUntil.js.map +1 -0
  60. package/dist/esm/version.js +1 -1
  61. package/package.json +9 -5
  62. package/dist/browser/apiClient.d.ts +0 -737
  63. package/dist/browser/apiClient.js +0 -687
  64. package/dist/browser/apiClient.js.map +0 -1
  65. package/dist/browser/concurrencyLimit.d.ts +0 -10
  66. package/dist/browser/concurrencyLimit.js +0 -13
  67. package/dist/browser/concurrencyLimit.js.map +0 -1
  68. package/dist/browser/errors.d.ts +0 -66
  69. package/dist/browser/errors.js +0 -95
  70. package/dist/browser/errors.js.map +0 -1
  71. package/dist/browser/httpEndpoint.d.ts +0 -87
  72. package/dist/browser/httpEndpoint.js +0 -125
  73. package/dist/browser/httpEndpoint.js.map +0 -1
  74. package/dist/browser/index.d.ts +0 -23
  75. package/dist/browser/index.js +0 -35
  76. package/dist/browser/index.js.map +0 -1
  77. package/dist/browser/integrations.d.ts +0 -11
  78. package/dist/browser/integrations.js +0 -2
  79. package/dist/browser/integrations.js.map +0 -1
  80. package/dist/browser/io.d.ts +0 -453
  81. package/dist/browser/io.js +0 -1159
  82. package/dist/browser/io.js.map +0 -1
  83. package/dist/browser/ioWithIntegrations.d.ts +0 -4
  84. package/dist/browser/ioWithIntegrations.js +0 -29
  85. package/dist/browser/ioWithIntegrations.js.map +0 -1
  86. package/dist/browser/job.d.ts +0 -96
  87. package/dist/browser/job.js +0 -206
  88. package/dist/browser/job.js.map +0 -1
  89. package/dist/browser/retry.d.ts +0 -20
  90. package/dist/browser/retry.js +0 -19
  91. package/dist/browser/retry.js.map +0 -1
  92. package/dist/browser/runLocalStorage.d.ts +0 -8
  93. package/dist/browser/runLocalStorage.js +0 -3
  94. package/dist/browser/runLocalStorage.js.map +0 -1
  95. package/dist/browser/security.d.ts +0 -18
  96. package/dist/browser/security.js +0 -34
  97. package/dist/browser/security.js.map +0 -1
  98. package/dist/browser/status.d.ts +0 -19
  99. package/dist/browser/status.js +0 -34
  100. package/dist/browser/status.js.map +0 -1
  101. package/dist/browser/store/keyValueStore.d.ts +0 -17
  102. package/dist/browser/store/keyValueStore.js +0 -134
  103. package/dist/browser/store/keyValueStore.js.map +0 -1
  104. package/dist/browser/store/keyValueStoreClient.d.ts +0 -19
  105. package/dist/browser/store/keyValueStoreClient.js +0 -61
  106. package/dist/browser/store/keyValueStoreClient.js.map +0 -1
  107. package/dist/browser/triggerClient.d.ts +0 -300
  108. package/dist/browser/triggerClient.js +0 -1359
  109. package/dist/browser/triggerClient.js.map +0 -1
  110. package/dist/browser/triggers/dynamic.d.ts +0 -56
  111. package/dist/browser/triggers/dynamic.js +0 -93
  112. package/dist/browser/triggers/dynamic.js.map +0 -1
  113. package/dist/browser/triggers/eventTrigger.d.ts +0 -58
  114. package/dist/browser/triggers/eventTrigger.js +0 -64
  115. package/dist/browser/triggers/eventTrigger.js.map +0 -1
  116. package/dist/browser/triggers/externalSource.d.ts +0 -148
  117. package/dist/browser/triggers/externalSource.js +0 -100
  118. package/dist/browser/triggers/externalSource.js.map +0 -1
  119. package/dist/browser/triggers/invokeTrigger.d.ts +0 -39
  120. package/dist/browser/triggers/invokeTrigger.js +0 -53
  121. package/dist/browser/triggers/invokeTrigger.js.map +0 -1
  122. package/dist/browser/triggers/notifications.d.ts +0 -111
  123. package/dist/browser/triggers/notifications.js +0 -94
  124. package/dist/browser/triggers/notifications.js.map +0 -1
  125. package/dist/browser/triggers/scheduled.d.ts +0 -145
  126. package/dist/browser/triggers/scheduled.js +0 -197
  127. package/dist/browser/triggers/scheduled.js.map +0 -1
  128. package/dist/browser/triggers/webhook.d.ts +0 -143
  129. package/dist/browser/triggers/webhook.js +0 -128
  130. package/dist/browser/triggers/webhook.js.map +0 -1
  131. package/dist/browser/typed-emitter.d.ts +0 -37
  132. package/dist/browser/typed-emitter.js +0 -2
  133. package/dist/browser/typed-emitter.js.map +0 -1
  134. package/dist/browser/types.d.ts +0 -204
  135. package/dist/browser/types.js +0 -19
  136. package/dist/browser/types.js.map +0 -1
  137. package/dist/browser/utils/formatSchemaErrors.d.ts +0 -3
  138. package/dist/browser/utils/formatSchemaErrors.js +0 -7
  139. package/dist/browser/utils/formatSchemaErrors.js.map +0 -1
  140. package/dist/browser/utils/typedAsyncLocalStorage.d.ts +0 -6
  141. package/dist/browser/utils/typedAsyncLocalStorage.js +0 -14
  142. package/dist/browser/utils/typedAsyncLocalStorage.js.map +0 -1
  143. package/dist/browser/utils.d.ts +0 -1
  144. package/dist/browser/utils.js +0 -8
  145. package/dist/browser/utils.js.map +0 -1
  146. package/dist/browser/v3/cache.d.ts +0 -28
  147. package/dist/browser/v3/cache.js +0 -58
  148. package/dist/browser/v3/cache.js.map +0 -1
  149. package/dist/browser/v3/config.d.ts +0 -4
  150. package/dist/browser/v3/config.js +0 -4
  151. package/dist/browser/v3/config.js.map +0 -1
  152. package/dist/browser/v3/envvars.d.ts +0 -14
  153. package/dist/browser/v3/envvars.js +0 -219
  154. package/dist/browser/v3/envvars.js.map +0 -1
  155. package/dist/browser/v3/idempotencyKeys.d.ts +0 -44
  156. package/dist/browser/v3/idempotencyKeys.js +0 -72
  157. package/dist/browser/v3/idempotencyKeys.js.map +0 -1
  158. package/dist/browser/v3/index.d.ts +0 -21
  159. package/dist/browser/v3/index.js +0 -17
  160. package/dist/browser/v3/metadata.d.ts +0 -87
  161. package/dist/browser/v3/metadata.js +0 -105
  162. package/dist/browser/v3/metadata.js.map +0 -1
  163. package/dist/browser/v3/retry.d.ts +0 -15
  164. package/dist/browser/v3/retry.js +0 -408
  165. package/dist/browser/v3/retry.js.map +0 -1
  166. package/dist/browser/v3/runs.d.ts +0 -180
  167. package/dist/browser/v3/runs.js +0 -204
  168. package/dist/browser/v3/runs.js.map +0 -1
  169. package/dist/browser/v3/schedules/api.d.ts +0 -1
  170. package/dist/browser/v3/schedules/api.js +0 -2
  171. package/dist/browser/v3/schedules/api.js.map +0 -1
  172. package/dist/browser/v3/schedules/index.d.ts +0 -87
  173. package/dist/browser/v3/schedules/index.js +0 -215
  174. package/dist/browser/v3/schedules/index.js.map +0 -1
  175. package/dist/browser/v3/shared.d.ts +0 -90
  176. package/dist/browser/v3/shared.js +0 -546
  177. package/dist/browser/v3/shared.js.map +0 -1
  178. package/dist/browser/v3/tags.d.ts +0 -6
  179. package/dist/browser/v3/tags.js +0 -43
  180. package/dist/browser/v3/tags.js.map +0 -1
  181. package/dist/browser/v3/tasks.d.ts +0 -31
  182. package/dist/browser/v3/tasks.js +0 -30
  183. package/dist/browser/v3/tasks.js.map +0 -1
  184. package/dist/browser/v3/timeout.d.ts +0 -4
  185. package/dist/browser/v3/timeout.js +0 -7
  186. package/dist/browser/v3/timeout.js.map +0 -1
  187. package/dist/browser/v3/tracer.d.ts +0 -2
  188. package/dist/browser/v3/tracer.js +0 -4
  189. package/dist/browser/v3/tracer.js.map +0 -1
  190. package/dist/browser/v3/usage.d.ts +0 -77
  191. package/dist/browser/v3/usage.js +0 -112
  192. package/dist/browser/v3/usage.js.map +0 -1
  193. package/dist/browser/v3/wait.d.ts +0 -22
  194. package/dist/browser/v3/wait.js +0 -96
  195. package/dist/browser/v3/wait.js.map +0 -1
  196. package/dist/browser/version.d.ts +0 -1
  197. package/dist/browser/version.js +0 -2
  198. package/dist/browser/version.js.map +0 -1
  199. /package/dist/{browser → esm}/v3/index-browser.mjs.map +0 -0
@@ -1,105 +0,0 @@
1
- import { mergeRequestOptions, runMetadata, } from "@trigger.dev/core/v3";
2
- import { tracer } from "./tracer.js";
3
- /**
4
- * Provides access to run metadata operations.
5
- * @namespace
6
- * @property {Function} current - Get the current run's metadata.
7
- * @property {Function} get - Get a specific key from the current run's metadata.
8
- * @property {Function} set - Set a key in the current run's metadata.
9
- * @property {Function} del - Delete a key from the current run's metadata.
10
- * @property {Function} save - Update the entire metadata object for the current run.
11
- */
12
- export const metadata = {
13
- current: currentMetadata,
14
- get: getMetadataKey,
15
- set: setMetadataKey,
16
- del: deleteMetadataKey,
17
- save: saveMetadata,
18
- replace: replaceMetadata,
19
- flush: flushMetadata,
20
- };
21
- /**
22
- * Returns the metadata of the current run if inside a task run.
23
- * This function allows you to access the entire metadata object for the current run.
24
- *
25
- * @returns {RunMetadata | undefined} The current run's metadata or undefined if not in a run context.
26
- *
27
- * @example
28
- * const currentMetadata = metadata.current();
29
- * console.log(currentMetadata);
30
- */
31
- function currentMetadata() {
32
- return runMetadata.current();
33
- }
34
- /**
35
- * Get a specific key from the metadata of the current run if inside a task run.
36
- *
37
- * @param {string} key - The key to retrieve from the metadata.
38
- * @returns {DeserializedJson | undefined} The value associated with the key, or undefined if not found or not in a run context.
39
- *
40
- * @example
41
- * const user = metadata.get("user");
42
- * console.log(user.name); // "Eric"
43
- * console.log(user.id); // "user_1234"
44
- */
45
- function getMetadataKey(key) {
46
- return runMetadata.getKey(key);
47
- }
48
- /**
49
- * Set a key in the metadata of the current run if inside a task run.
50
- * This function allows you to update or add a new key-value pair to the run's metadata.
51
- *
52
- * @param {string} key - The key to set in the metadata.
53
- * @param {DeserializedJson} value - The value to associate with the key.
54
- *
55
- * @example
56
- * metadata.set("progress", 0.5);
57
- */
58
- function setMetadataKey(key, value) {
59
- runMetadata.setKey(key, value);
60
- }
61
- /**
62
- * Delete a key from the metadata of the current run if inside a task run.
63
- *
64
- * @param {string} key - The key to delete from the metadata.
65
- *
66
- * @example
67
- * metadata.del("progress");
68
- */
69
- function deleteMetadataKey(key) {
70
- runMetadata.deleteKey(key);
71
- }
72
- /**
73
- * Update the entire metadata object for the current run if inside a task run.
74
- * This function allows you to replace the entire metadata object with a new one.
75
- *
76
- * @param {RunMetadata} metadata - The new metadata object to set for the run.
77
- * @returns {void}
78
- *
79
- * @example
80
- * metadata.replace({ progress: 0.6, user: { name: "Alice", id: "user_5678" } });
81
- */
82
- function replaceMetadata(metadata) {
83
- runMetadata.update(metadata);
84
- }
85
- /**
86
- * @deprecated Use `metadata.replace()` instead.
87
- */
88
- function saveMetadata(metadata) {
89
- runMetadata.update(metadata);
90
- }
91
- /**
92
- * Flushes metadata to the Trigger.dev instance
93
- *
94
- * @param {ApiRequestOptions} [requestOptions] - Optional request options to customize the API request.
95
- * @returns {Promise<void>} A promise that resolves when the metadata flush operation is complete.
96
- */
97
- async function flushMetadata(requestOptions) {
98
- const $requestOptions = mergeRequestOptions({
99
- tracer,
100
- name: "metadata.flush()",
101
- icon: "code-plus",
102
- }, requestOptions);
103
- await runMetadata.flush($requestOptions);
104
- }
105
- //# sourceMappingURL=metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/v3/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,mBAAmB,EACnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,eAAe;IACxB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;CACrB,CAAC;AAIF;;;;;;;;;GASG;AACH,SAAS,eAAe;IACtB,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,KAAuB;IAC1D,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,GAAW;IACpC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,QAAqB;IAC5C,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,QAAqB;IACzC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,aAAa,CAAC,cAAkC;IAC7D,MAAM,eAAe,GAAG,mBAAmB,CACzC;QACE,MAAM;QACN,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,WAAW;KAClB,EACD,cAAc,CACf,CAAC;IAEF,MAAM,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,15 +0,0 @@
1
- import { FetchRetryOptions, RetryOptions } from "@trigger.dev/core/v3";
2
- export type { RetryOptions };
3
- declare function onThrow<T>(fn: (options: {
4
- attempt: number;
5
- maxAttempts: number;
6
- }) => Promise<T>, options: RetryOptions): Promise<T>;
7
- export interface RetryFetchRequestInit extends RequestInit {
8
- retry?: FetchRetryOptions;
9
- timeoutInMs?: number;
10
- }
11
- declare function retryFetch(input: RequestInfo | URL, init?: RetryFetchRequestInit | undefined): Promise<Response>;
12
- export declare const retry: {
13
- onThrow: typeof onThrow;
14
- fetch: typeof retryFetch;
15
- };
@@ -1,408 +0,0 @@
1
- import { SpanStatusCode, context, trace } from "@opentelemetry/api";
2
- import { SEMATTRS_HTTP_HOST, SEMATTRS_HTTP_METHOD, SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, SEMATTRS_HTTP_SCHEME, SEMATTRS_HTTP_STATUS_CODE, SEMATTRS_HTTP_URL, } from "@opentelemetry/semantic-conventions";
3
- import { SemanticInternalAttributes, accessoryAttributes, calculateNextRetryDelay, calculateResetAt, defaultFetchRetryOptions, defaultRetryOptions, eventFilterMatches, flattenAttributes, runtime, } from "@trigger.dev/core/v3";
4
- import { tracer } from "./tracer.js";
5
- function onThrow(fn, options) {
6
- const opts = {
7
- ...defaultRetryOptions,
8
- ...options,
9
- };
10
- return tracer.startActiveSpan(`retry.onThrow()`, async (span) => {
11
- let attempt = 1;
12
- while (attempt <= opts.maxAttempts) {
13
- const innerSpan = tracer.startSpan("retry.fn()", {
14
- attributes: {
15
- [SemanticInternalAttributes.STYLE_ICON]: "function",
16
- ...accessoryAttributes({
17
- items: [
18
- {
19
- text: `${attempt}/${opts.maxAttempts}`,
20
- variant: "normal",
21
- },
22
- ],
23
- style: "codepath",
24
- }),
25
- },
26
- });
27
- const contextWithSpanSet = trace.setSpan(context.active(), innerSpan);
28
- try {
29
- const result = await context.with(contextWithSpanSet, async () => {
30
- return fn({ attempt, maxAttempts: opts.maxAttempts });
31
- });
32
- innerSpan.end();
33
- return result;
34
- }
35
- catch (e) {
36
- if (e instanceof Error || typeof e === "string") {
37
- innerSpan.recordException(e);
38
- }
39
- else {
40
- innerSpan.recordException(String(e));
41
- }
42
- innerSpan.setStatus({ code: SpanStatusCode.ERROR });
43
- if (e instanceof Error && e.name === "AbortTaskRunError") {
44
- innerSpan.end();
45
- throw e;
46
- }
47
- const nextRetryDelay = calculateNextRetryDelay(opts, attempt);
48
- if (!nextRetryDelay) {
49
- innerSpan.end();
50
- throw e;
51
- }
52
- innerSpan.setAttribute(SemanticInternalAttributes.RETRY_AT, new Date(Date.now() + nextRetryDelay).toISOString());
53
- innerSpan.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);
54
- innerSpan.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetryDelay}ms`);
55
- innerSpan.end();
56
- await runtime.waitForDuration(nextRetryDelay);
57
- }
58
- finally {
59
- attempt++;
60
- }
61
- }
62
- throw new Error("Max attempts reached");
63
- }, {
64
- attributes: {
65
- [SemanticInternalAttributes.STYLE_ICON]: "arrow-capsule",
66
- },
67
- });
68
- }
69
- const normalizeUrlFromInput = (input) => {
70
- if (typeof input === "string") {
71
- return new URL(input);
72
- }
73
- if (input instanceof URL) {
74
- return input;
75
- }
76
- return new URL(input.url);
77
- };
78
- const normalizeHttpMethod = (input, init) => {
79
- if (typeof input === "string" || input instanceof URL) {
80
- return (init?.method || "GET").toUpperCase();
81
- }
82
- return (input.method ?? init?.method ?? "GET").toUpperCase();
83
- };
84
- class FetchErrorWithSpan extends Error {
85
- originalError;
86
- span;
87
- constructor(originalError, span) {
88
- super("Fetch error");
89
- this.originalError = originalError;
90
- this.span = span;
91
- }
92
- }
93
- const MAX_ATTEMPTS = 10;
94
- async function retryFetch(input, init) {
95
- return tracer.startActiveSpan("retry.fetch()", async (span) => {
96
- let attempt = 1;
97
- while (true) {
98
- try {
99
- const abortController = new AbortController();
100
- const timeoutId = init?.timeoutInMs
101
- ? setTimeout(() => {
102
- abortController.abort();
103
- }, init?.timeoutInMs)
104
- : undefined;
105
- init?.signal?.addEventListener("abort", () => {
106
- abortController.abort();
107
- });
108
- const [response, span] = await doFetchRequest(input, { ...(init ?? {}), signal: abortController.signal }, attempt);
109
- if (timeoutId) {
110
- clearTimeout(timeoutId);
111
- }
112
- if (response.ok) {
113
- span.setAttributes(createFetchResponseAttributes(response));
114
- span.end();
115
- return response;
116
- }
117
- const nextRetry = await calculateRetryDelayForResponse(resolveDefaults(init?.retry, "byStatus", defaultFetchRetryOptions.byStatus), response, attempt);
118
- if (!nextRetry) {
119
- span.setAttributes(createFetchResponseAttributes(response));
120
- span.end();
121
- return response;
122
- }
123
- if (attempt >= MAX_ATTEMPTS) {
124
- span.setAttributes(createFetchResponseAttributes(response));
125
- span.end();
126
- return response;
127
- }
128
- if (nextRetry.type === "delay") {
129
- span.setAttribute(SemanticInternalAttributes.RETRY_AT, new Date(Date.now() + nextRetry.value).toISOString());
130
- span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);
131
- span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetry.value}ms`);
132
- span.end();
133
- await runtime.waitForDuration(nextRetry.value);
134
- }
135
- else {
136
- const now = Date.now();
137
- const nextRetryDate = new Date(nextRetry.value);
138
- const isInFuture = nextRetryDate.getTime() > now;
139
- span.setAttribute(SemanticInternalAttributes.RETRY_AT, new Date(nextRetry.value).toISOString());
140
- span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);
141
- if (isInFuture) {
142
- span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetry.value - now}ms`);
143
- }
144
- span.end();
145
- await runtime.waitUntil(new Date(nextRetry.value));
146
- }
147
- }
148
- catch (e) {
149
- if (e instanceof FetchErrorWithSpan && e.originalError instanceof Error) {
150
- if (e.originalError.name === "AbortError") {
151
- const nextRetryDelay = calculateNextRetryDelay(resolveDefaults(init?.retry, "timeout", defaultFetchRetryOptions.timeout), attempt);
152
- if (!nextRetryDelay) {
153
- e.span.end();
154
- throw e;
155
- }
156
- if (attempt >= MAX_ATTEMPTS) {
157
- e.span.end();
158
- throw e;
159
- }
160
- e.span.setAttribute(SemanticInternalAttributes.RETRY_AT, new Date(Date.now() + nextRetryDelay).toISOString());
161
- e.span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);
162
- e.span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetryDelay}ms`);
163
- e.span.end();
164
- await runtime.waitForDuration(nextRetryDelay);
165
- continue; // Move to the next attempt
166
- }
167
- else if (e.originalError.name === "TypeError" &&
168
- "cause" in e.originalError &&
169
- e.originalError.cause instanceof Error) {
170
- const nextRetryDelay = calculateNextRetryDelay(resolveDefaults(init?.retry, "connectionError", defaultFetchRetryOptions.connectionError), attempt);
171
- if (!nextRetryDelay) {
172
- e.span.end();
173
- throw e;
174
- }
175
- if (attempt >= MAX_ATTEMPTS) {
176
- e.span.end();
177
- throw e;
178
- }
179
- e.span.setAttribute(SemanticInternalAttributes.RETRY_AT, new Date(Date.now() + nextRetryDelay).toISOString());
180
- e.span.setAttribute(SemanticInternalAttributes.RETRY_COUNT, attempt);
181
- e.span.setAttribute(SemanticInternalAttributes.RETRY_DELAY, `${nextRetryDelay}ms`);
182
- e.span.end();
183
- await runtime.waitForDuration(nextRetryDelay);
184
- continue; // Move to the next attempt
185
- }
186
- }
187
- if (e instanceof FetchErrorWithSpan) {
188
- e.span.end();
189
- }
190
- throw e;
191
- }
192
- finally {
193
- attempt++;
194
- }
195
- }
196
- }, {
197
- attributes: {
198
- [SemanticInternalAttributes.STYLE_ICON]: "arrow-capsule",
199
- ...createFetchAttributes(input, init),
200
- ...createFetchRetryOptionsAttributes(init?.retry),
201
- },
202
- });
203
- }
204
- const doFetchRequest = async (input, init, attemptCount = 0) => {
205
- const httpMethod = normalizeHttpMethod(input, init);
206
- const span = tracer.startSpan(`HTTP ${httpMethod}`, {
207
- attributes: {
208
- [SemanticInternalAttributes.STYLE_ICON]: "world",
209
- ...(attemptCount > 1 ? { ["http.request.resend_count"]: attemptCount - 1 } : {}),
210
- ...createFetchAttributes(input, init),
211
- },
212
- });
213
- try {
214
- const response = await fetch(input, {
215
- ...init,
216
- headers: {
217
- ...init?.headers,
218
- "x-retry-count": attemptCount.toString(),
219
- },
220
- });
221
- span.setAttributes(createFetchResponseAttributes(response));
222
- if (!response.ok) {
223
- span.recordException(`${response.status}: ${response.statusText}`);
224
- span.setStatus({
225
- code: SpanStatusCode.ERROR,
226
- message: `${response.status}: ${response.statusText}`,
227
- });
228
- }
229
- return [response, span];
230
- }
231
- catch (e) {
232
- if (typeof e === "string" || e instanceof Error) {
233
- span.recordException(e);
234
- }
235
- span.setStatus({ code: SpanStatusCode.ERROR });
236
- span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, 0);
237
- span.setAttribute("http.status_text", "This operation was aborted.");
238
- throw new FetchErrorWithSpan(e, span);
239
- }
240
- };
241
- const calculateRetryDelayForResponse = async (retry, response, attemptCount) => {
242
- if (!retry) {
243
- return;
244
- }
245
- const strategy = await getRetryStrategyForResponse(response, retry);
246
- if (!strategy) {
247
- return;
248
- }
249
- switch (strategy.strategy) {
250
- case "backoff": {
251
- const value = calculateNextRetryDelay({ ...defaultRetryOptions, ...strategy }, attemptCount);
252
- if (value) {
253
- return { type: "delay", value };
254
- }
255
- break;
256
- }
257
- case "headers": {
258
- const resetAt = response.headers.get(strategy.resetHeader);
259
- if (typeof resetAt === "string") {
260
- const resetTimestamp = calculateResetAt(resetAt, strategy.resetFormat ?? "unix_timestamp_in_ms");
261
- if (resetTimestamp) {
262
- return { type: "timestamp", value: resetTimestamp };
263
- }
264
- }
265
- break;
266
- }
267
- }
268
- return;
269
- };
270
- const getRetryStrategyForResponse = async (response, retry) => {
271
- const statusCodes = Object.keys(retry);
272
- const clonedResponse = response.clone();
273
- for (let i = 0; i < statusCodes.length; i++) {
274
- const statusRange = statusCodes[i];
275
- if (!statusRange) {
276
- continue;
277
- }
278
- const strategy = retry[statusRange];
279
- if (!strategy) {
280
- continue;
281
- }
282
- if (isStatusCodeInRange(response.status, statusRange)) {
283
- if (strategy.bodyFilter) {
284
- const body = safeJsonParse(await clonedResponse.text());
285
- if (!body) {
286
- continue;
287
- }
288
- if (eventFilterMatches(body, strategy.bodyFilter)) {
289
- return strategy;
290
- }
291
- else {
292
- continue;
293
- }
294
- }
295
- return strategy;
296
- }
297
- }
298
- return;
299
- };
300
- /**
301
- * Checks if a given status code falls within a given range.
302
- * The range can be a single status code (e.g. "200"),
303
- * a range of status codes (e.g. "500-599"),
304
- * a range of status codes with a wildcard (e.g. "4xx" for any 4xx status code),
305
- * or a list of status codes separated by commas (e.g. "401,403,404,409-412,5xx").
306
- * Returns `true` if the status code falls within the range, and `false` otherwise.
307
- */
308
- const isStatusCodeInRange = (statusCode, statusRange) => {
309
- if (statusRange === "all") {
310
- return true;
311
- }
312
- if (statusRange.includes(",")) {
313
- const statusCodes = statusRange.split(",").map((s) => s.trim());
314
- return statusCodes.some((s) => isStatusCodeInRange(statusCode, s));
315
- }
316
- const [start, end] = statusRange.split("-");
317
- if (end) {
318
- return statusCode >= parseInt(start ?? "0", 10) && statusCode <= parseInt(end, 10);
319
- }
320
- if (start?.endsWith("xx")) {
321
- const prefix = start.slice(0, -2);
322
- const statusCodePrefix = Math.floor(statusCode / 100).toString();
323
- return statusCodePrefix === prefix;
324
- }
325
- if (!start) {
326
- return false;
327
- }
328
- const statusCodeString = statusCode.toString();
329
- const rangePrefix = start.slice(0, -1);
330
- if (start.endsWith("x") && statusCodeString.startsWith(rangePrefix)) {
331
- return true;
332
- }
333
- return statusCode === parseInt(start, 10);
334
- };
335
- const createAttributesFromHeaders = (headers) => {
336
- const attributes = {};
337
- const normalizedHeaderKey = (key) => {
338
- return key.toLowerCase();
339
- };
340
- headers.forEach((value, key) => {
341
- attributes[`http.response.header.${normalizedHeaderKey(key)}`] = value;
342
- });
343
- return attributes;
344
- };
345
- const safeJsonParse = (json) => {
346
- try {
347
- return JSON.parse(json);
348
- }
349
- catch (e) {
350
- return null;
351
- }
352
- };
353
- // This function will resolve the defaults of a property within an options object.
354
- // If the options object is undefined, it will return the defaults for that property (passed in as the 3rd arg).
355
- // 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
356
- const resolveDefaults = (obj, key, defaults) => {
357
- if (!obj) {
358
- return defaults;
359
- }
360
- if (obj[key] === undefined || obj[key] === null) {
361
- return defaults;
362
- }
363
- return obj[key];
364
- };
365
- const createFetchAttributes = (input, init) => {
366
- const url = normalizeUrlFromInput(input);
367
- const httpMethod = normalizeHttpMethod(input, init);
368
- return {
369
- [SEMATTRS_HTTP_METHOD]: httpMethod,
370
- [SEMATTRS_HTTP_URL]: url.href,
371
- [SEMATTRS_HTTP_HOST]: url.hostname,
372
- ["server.host"]: url.hostname,
373
- ["server.port"]: url.port,
374
- [SEMATTRS_HTTP_SCHEME]: url.protocol.replace(":", ""),
375
- ...accessoryAttributes({
376
- items: [
377
- {
378
- text: url.hostname,
379
- variant: "normal",
380
- },
381
- ],
382
- style: "codepath",
383
- }),
384
- };
385
- };
386
- const createFetchResponseAttributes = (response) => {
387
- return {
388
- [SEMATTRS_HTTP_STATUS_CODE]: response.status,
389
- "http.status_text": response.statusText,
390
- [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]: response.headers.get("content-length") || "0",
391
- ...createAttributesFromHeaders(response.headers),
392
- };
393
- };
394
- const createFetchRetryOptionsAttributes = (retry) => {
395
- const byStatus = resolveDefaults(retry, "byStatus", defaultFetchRetryOptions.byStatus);
396
- const connectionError = resolveDefaults(retry, "connectionError", defaultFetchRetryOptions.connectionError);
397
- const timeout = resolveDefaults(retry, "timeout", defaultFetchRetryOptions.timeout);
398
- return {
399
- ...flattenAttributes(byStatus, "retry.byStatus"),
400
- ...flattenAttributes(connectionError, "retry.connectionError"),
401
- ...flattenAttributes(timeout, "retry.timeout"),
402
- };
403
- };
404
- export const retry = {
405
- onThrow,
406
- fetch: retryFetch,
407
- };
408
- //# sourceMappingURL=retry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/v3/retry.ts"],"names":[],"mappings":"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"}