@trigger.dev/core 4.0.6 → 4.1.0

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 (175) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +26 -7
  2. package/dist/commonjs/v3/apiClient/index.js +48 -4
  3. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  4. package/dist/commonjs/v3/apiClient/runStream.d.ts +28 -14
  5. package/dist/commonjs/v3/apiClient/runStream.js +175 -58
  6. package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
  7. package/dist/commonjs/v3/apiClientManager/index.d.ts +1 -1
  8. package/dist/commonjs/v3/apiClientManager/index.js +11 -4
  9. package/dist/commonjs/v3/apiClientManager/index.js.map +1 -1
  10. package/dist/commonjs/v3/apiClientManager/types.d.ts +2 -1
  11. package/dist/commonjs/v3/index.d.ts +1 -0
  12. package/dist/commonjs/v3/index.js +1 -0
  13. package/dist/commonjs/v3/index.js.map +1 -1
  14. package/dist/commonjs/v3/lifecycle-hooks-api.d.ts +1 -1
  15. package/dist/commonjs/v3/lifecycleHooks/index.d.ts +5 -1
  16. package/dist/commonjs/v3/lifecycleHooks/index.js +12 -0
  17. package/dist/commonjs/v3/lifecycleHooks/index.js.map +1 -1
  18. package/dist/commonjs/v3/lifecycleHooks/manager.d.ts +11 -1
  19. package/dist/commonjs/v3/lifecycleHooks/manager.js +36 -0
  20. package/dist/commonjs/v3/lifecycleHooks/manager.js.map +1 -1
  21. package/dist/commonjs/v3/lifecycleHooks/types.d.ts +12 -0
  22. package/dist/commonjs/v3/realtime-streams-api.d.ts +3 -0
  23. package/dist/commonjs/v3/realtime-streams-api.js +23 -0
  24. package/dist/commonjs/v3/realtime-streams-api.js.map +1 -0
  25. package/dist/commonjs/v3/realtimeStreams/index.d.ts +10 -0
  26. package/dist/commonjs/v3/realtimeStreams/index.js +31 -0
  27. package/dist/commonjs/v3/realtimeStreams/index.js.map +1 -0
  28. package/dist/commonjs/v3/realtimeStreams/manager.d.ts +14 -0
  29. package/dist/commonjs/v3/realtimeStreams/manager.js +128 -0
  30. package/dist/commonjs/v3/realtimeStreams/manager.js.map +1 -0
  31. package/dist/commonjs/v3/realtimeStreams/noopManager.d.ts +5 -0
  32. package/dist/commonjs/v3/realtimeStreams/noopManager.js +17 -0
  33. package/dist/commonjs/v3/realtimeStreams/noopManager.js.map +1 -0
  34. package/dist/commonjs/v3/realtimeStreams/streamInstance.d.ts +23 -0
  35. package/dist/commonjs/v3/realtimeStreams/streamInstance.js +106 -0
  36. package/dist/commonjs/v3/realtimeStreams/streamInstance.js.map +1 -0
  37. package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.d.ts +49 -0
  38. package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.js +382 -0
  39. package/dist/commonjs/v3/realtimeStreams/streamsWriterV1.js.map +1 -0
  40. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.d.ts +60 -0
  41. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.js +179 -0
  42. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.js.map +1 -0
  43. package/dist/commonjs/v3/realtimeStreams/types.d.ts +119 -0
  44. package/dist/commonjs/v3/realtimeStreams/types.js +3 -0
  45. package/dist/commonjs/v3/realtimeStreams/types.js.map +1 -0
  46. package/dist/commonjs/v3/runEngineWorker/supervisor/http.d.ts +1 -0
  47. package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.d.ts +7 -0
  48. package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +1 -0
  49. package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +7 -0
  50. package/dist/commonjs/v3/runMetadata/manager.d.ts +3 -8
  51. package/dist/commonjs/v3/runMetadata/manager.js +14 -79
  52. package/dist/commonjs/v3/runMetadata/manager.js.map +1 -1
  53. package/dist/commonjs/v3/schemas/api.d.ts +38 -25
  54. package/dist/commonjs/v3/schemas/api.js +11 -4
  55. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  56. package/dist/commonjs/v3/schemas/common.d.ts +5 -0
  57. package/dist/commonjs/v3/schemas/common.js +1 -0
  58. package/dist/commonjs/v3/schemas/common.js.map +1 -1
  59. package/dist/commonjs/v3/schemas/messages.d.ts +35 -0
  60. package/dist/commonjs/v3/schemas/runEngine.d.ts +7 -0
  61. package/dist/commonjs/v3/schemas/schemas.d.ts +7 -0
  62. package/dist/commonjs/v3/semanticInternalAttributes.d.ts +1 -0
  63. package/dist/commonjs/v3/semanticInternalAttributes.js +1 -0
  64. package/dist/commonjs/v3/semanticInternalAttributes.js.map +1 -1
  65. package/dist/commonjs/v3/streams/asyncIterableStream.d.ts +2 -0
  66. package/dist/commonjs/v3/streams/asyncIterableStream.js +47 -0
  67. package/dist/commonjs/v3/streams/asyncIterableStream.js.map +1 -1
  68. package/dist/commonjs/v3/types/tasks.d.ts +17 -2
  69. package/dist/commonjs/v3/types/tasks.js.map +1 -1
  70. package/dist/commonjs/v3/utils/globals.d.ts +2 -0
  71. package/dist/commonjs/v3/utils/globals.js.map +1 -1
  72. package/dist/commonjs/v3/waitUntil/index.d.ts +1 -1
  73. package/dist/commonjs/v3/waitUntil/index.js +3 -3
  74. package/dist/commonjs/v3/waitUntil/index.js.map +1 -1
  75. package/dist/commonjs/v3/waitUntil/manager.d.ts +3 -1
  76. package/dist/commonjs/v3/waitUntil/manager.js +7 -3
  77. package/dist/commonjs/v3/waitUntil/manager.js.map +1 -1
  78. package/dist/commonjs/v3/waitUntil/types.d.ts +2 -2
  79. package/dist/commonjs/v3/workers/index.d.ts +1 -0
  80. package/dist/commonjs/v3/workers/index.js +3 -1
  81. package/dist/commonjs/v3/workers/index.js.map +1 -1
  82. package/dist/commonjs/v3/workers/taskExecutor.js +50 -25
  83. package/dist/commonjs/v3/workers/taskExecutor.js.map +1 -1
  84. package/dist/commonjs/version.js +1 -1
  85. package/dist/esm/v3/apiClient/index.d.ts +26 -7
  86. package/dist/esm/v3/apiClient/index.js +49 -6
  87. package/dist/esm/v3/apiClient/index.js.map +1 -1
  88. package/dist/esm/v3/apiClient/runStream.d.ts +28 -14
  89. package/dist/esm/v3/apiClient/runStream.js +176 -58
  90. package/dist/esm/v3/apiClient/runStream.js.map +1 -1
  91. package/dist/esm/v3/apiClientManager/index.d.ts +1 -1
  92. package/dist/esm/v3/apiClientManager/index.js +11 -4
  93. package/dist/esm/v3/apiClientManager/index.js.map +1 -1
  94. package/dist/esm/v3/apiClientManager/types.d.ts +2 -1
  95. package/dist/esm/v3/index.d.ts +1 -0
  96. package/dist/esm/v3/index.js +1 -0
  97. package/dist/esm/v3/index.js.map +1 -1
  98. package/dist/esm/v3/lifecycle-hooks-api.d.ts +1 -1
  99. package/dist/esm/v3/lifecycleHooks/index.d.ts +5 -1
  100. package/dist/esm/v3/lifecycleHooks/index.js +12 -0
  101. package/dist/esm/v3/lifecycleHooks/index.js.map +1 -1
  102. package/dist/esm/v3/lifecycleHooks/manager.d.ts +11 -1
  103. package/dist/esm/v3/lifecycleHooks/manager.js +36 -0
  104. package/dist/esm/v3/lifecycleHooks/manager.js.map +1 -1
  105. package/dist/esm/v3/lifecycleHooks/types.d.ts +12 -0
  106. package/dist/esm/v3/realtime-streams-api.d.ts +3 -0
  107. package/dist/esm/v3/realtime-streams-api.js +6 -0
  108. package/dist/esm/v3/realtime-streams-api.js.map +1 -0
  109. package/dist/esm/v3/realtimeStreams/index.d.ts +10 -0
  110. package/dist/esm/v3/realtimeStreams/index.js +27 -0
  111. package/dist/esm/v3/realtimeStreams/index.js.map +1 -0
  112. package/dist/esm/v3/realtimeStreams/manager.d.ts +14 -0
  113. package/dist/esm/v3/realtimeStreams/manager.js +124 -0
  114. package/dist/esm/v3/realtimeStreams/manager.js.map +1 -0
  115. package/dist/esm/v3/realtimeStreams/noopManager.d.ts +5 -0
  116. package/dist/esm/v3/realtimeStreams/noopManager.js +13 -0
  117. package/dist/esm/v3/realtimeStreams/noopManager.js.map +1 -0
  118. package/dist/esm/v3/realtimeStreams/streamInstance.d.ts +23 -0
  119. package/dist/esm/v3/realtimeStreams/streamInstance.js +102 -0
  120. package/dist/esm/v3/realtimeStreams/streamInstance.js.map +1 -0
  121. package/dist/esm/v3/realtimeStreams/streamsWriterV1.d.ts +49 -0
  122. package/dist/esm/v3/realtimeStreams/streamsWriterV1.js +378 -0
  123. package/dist/esm/v3/realtimeStreams/streamsWriterV1.js.map +1 -0
  124. package/dist/esm/v3/realtimeStreams/streamsWriterV2.d.ts +60 -0
  125. package/dist/esm/v3/realtimeStreams/streamsWriterV2.js +175 -0
  126. package/dist/esm/v3/realtimeStreams/streamsWriterV2.js.map +1 -0
  127. package/dist/esm/v3/realtimeStreams/types.d.ts +119 -0
  128. package/dist/esm/v3/realtimeStreams/types.js +2 -0
  129. package/dist/esm/v3/realtimeStreams/types.js.map +1 -0
  130. package/dist/esm/v3/runEngineWorker/supervisor/http.d.ts +1 -0
  131. package/dist/esm/v3/runEngineWorker/supervisor/schemas.d.ts +7 -0
  132. package/dist/esm/v3/runEngineWorker/workload/http.d.ts +1 -0
  133. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +7 -0
  134. package/dist/esm/v3/runMetadata/manager.d.ts +3 -8
  135. package/dist/esm/v3/runMetadata/manager.js +14 -79
  136. package/dist/esm/v3/runMetadata/manager.js.map +1 -1
  137. package/dist/esm/v3/schemas/api.d.ts +38 -25
  138. package/dist/esm/v3/schemas/api.js +10 -3
  139. package/dist/esm/v3/schemas/api.js.map +1 -1
  140. package/dist/esm/v3/schemas/common.d.ts +5 -0
  141. package/dist/esm/v3/schemas/common.js +1 -0
  142. package/dist/esm/v3/schemas/common.js.map +1 -1
  143. package/dist/esm/v3/schemas/messages.d.ts +35 -0
  144. package/dist/esm/v3/schemas/runEngine.d.ts +7 -0
  145. package/dist/esm/v3/schemas/schemas.d.ts +7 -0
  146. package/dist/esm/v3/semanticInternalAttributes.d.ts +1 -0
  147. package/dist/esm/v3/semanticInternalAttributes.js +1 -0
  148. package/dist/esm/v3/semanticInternalAttributes.js.map +1 -1
  149. package/dist/esm/v3/streams/asyncIterableStream.d.ts +2 -0
  150. package/dist/esm/v3/streams/asyncIterableStream.js +45 -0
  151. package/dist/esm/v3/streams/asyncIterableStream.js.map +1 -1
  152. package/dist/esm/v3/types/tasks.d.ts +17 -2
  153. package/dist/esm/v3/types/tasks.js.map +1 -1
  154. package/dist/esm/v3/utils/globals.d.ts +2 -0
  155. package/dist/esm/v3/utils/globals.js.map +1 -1
  156. package/dist/esm/v3/waitUntil/index.d.ts +1 -1
  157. package/dist/esm/v3/waitUntil/index.js +3 -3
  158. package/dist/esm/v3/waitUntil/index.js.map +1 -1
  159. package/dist/esm/v3/waitUntil/manager.d.ts +3 -1
  160. package/dist/esm/v3/waitUntil/manager.js +7 -3
  161. package/dist/esm/v3/waitUntil/manager.js.map +1 -1
  162. package/dist/esm/v3/waitUntil/types.d.ts +2 -2
  163. package/dist/esm/v3/workers/index.d.ts +1 -0
  164. package/dist/esm/v3/workers/index.js +1 -0
  165. package/dist/esm/v3/workers/index.js.map +1 -1
  166. package/dist/esm/v3/workers/taskExecutor.js +50 -25
  167. package/dist/esm/v3/workers/taskExecutor.js.map +1 -1
  168. package/dist/esm/version.js +1 -1
  169. package/package.json +2 -1
  170. package/dist/commonjs/v3/runMetadata/metadataStream.d.ts +0 -28
  171. package/dist/commonjs/v3/runMetadata/metadataStream.js +0 -155
  172. package/dist/commonjs/v3/runMetadata/metadataStream.js.map +0 -1
  173. package/dist/esm/v3/runMetadata/metadataStream.d.ts +0 -28
  174. package/dist/esm/v3/runMetadata/metadataStream.js +0 -151
  175. package/dist/esm/v3/runMetadata/metadataStream.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ import { StreamsWriterV1 } from "./streamsWriterV1.js";
2
+ import { StreamsWriterV2 } from "./streamsWriterV2.js";
3
+ export class StreamInstance {
4
+ options;
5
+ streamPromise;
6
+ constructor(options) {
7
+ this.options = options;
8
+ this.streamPromise = this.initializeWriter();
9
+ }
10
+ async initializeWriter() {
11
+ const { version, headers } = await this.options.apiClient.createStream(this.options.runId, "self", this.options.key, this.options?.requestOptions);
12
+ const parsedResponse = parseCreateStreamResponse(version, headers);
13
+ const streamWriter = parsedResponse.version === "v1"
14
+ ? new StreamsWriterV1({
15
+ key: this.options.key,
16
+ runId: this.options.runId,
17
+ source: this.options.source,
18
+ baseUrl: this.options.baseUrl,
19
+ headers: this.options.apiClient.getHeaders(),
20
+ signal: this.options.signal,
21
+ version,
22
+ target: "self",
23
+ })
24
+ : new StreamsWriterV2({
25
+ basin: parsedResponse.basin,
26
+ stream: parsedResponse.streamName ?? this.options.key,
27
+ accessToken: parsedResponse.accessToken,
28
+ source: this.options.source,
29
+ signal: this.options.signal,
30
+ debug: this.options.debug,
31
+ flushIntervalMs: parsedResponse.flushIntervalMs,
32
+ maxRetries: parsedResponse.maxRetries,
33
+ });
34
+ return streamWriter;
35
+ }
36
+ async wait() {
37
+ return this.streamPromise.then((writer) => writer.wait());
38
+ }
39
+ get stream() {
40
+ const self = this;
41
+ return new ReadableStream({
42
+ async start(controller) {
43
+ const streamWriter = await self.streamPromise;
44
+ const iterator = streamWriter[Symbol.asyncIterator]();
45
+ while (true) {
46
+ if (self.options.signal?.aborted) {
47
+ controller.close();
48
+ break;
49
+ }
50
+ const { done, value } = await iterator.next();
51
+ if (done) {
52
+ controller.close();
53
+ break;
54
+ }
55
+ controller.enqueue(value);
56
+ }
57
+ },
58
+ });
59
+ }
60
+ }
61
+ function parseCreateStreamResponse(version, headers) {
62
+ if (version === "v1") {
63
+ return { version: "v1" };
64
+ }
65
+ const accessToken = headers?.["x-s2-access-token"];
66
+ const basin = headers?.["x-s2-basin"];
67
+ if (!accessToken || !basin) {
68
+ return { version: "v1" };
69
+ }
70
+ const flushIntervalMs = headers?.["x-s2-flush-interval-ms"];
71
+ const maxRetries = headers?.["x-s2-max-retries"];
72
+ const streamName = headers?.["x-s2-stream-name"];
73
+ return {
74
+ version: "v2",
75
+ accessToken,
76
+ basin,
77
+ flushIntervalMs: flushIntervalMs ? parseInt(flushIntervalMs) : undefined,
78
+ maxRetries: maxRetries ? parseInt(maxRetries) : undefined,
79
+ streamName,
80
+ };
81
+ }
82
+ async function* streamToAsyncIterator(stream) {
83
+ const reader = stream.getReader();
84
+ try {
85
+ while (true) {
86
+ const { done, value } = await reader.read();
87
+ if (done)
88
+ return;
89
+ yield value;
90
+ }
91
+ }
92
+ finally {
93
+ safeReleaseLock(reader);
94
+ }
95
+ }
96
+ function safeReleaseLock(reader) {
97
+ try {
98
+ reader.releaseLock();
99
+ }
100
+ catch (error) { }
101
+ }
102
+ //# sourceMappingURL=streamInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamInstance.js","sourceRoot":"","sources":["../../../../src/v3/realtimeStreams/streamInstance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { StreamsWriter } from "./types.js";
2
+ export type StreamsWriterV1Options<T> = {
3
+ baseUrl: string;
4
+ runId: string;
5
+ key: string;
6
+ source: ReadableStream<T>;
7
+ headers?: Record<string, string>;
8
+ signal?: AbortSignal;
9
+ version?: string;
10
+ target?: "self" | "parent" | "root";
11
+ maxRetries?: number;
12
+ maxBufferSize?: number;
13
+ clientId?: string;
14
+ };
15
+ export declare class StreamsWriterV1<T> implements StreamsWriter {
16
+ private options;
17
+ private controller;
18
+ private serverStream;
19
+ private consumerStream;
20
+ private streamPromise;
21
+ private retryCount;
22
+ private readonly maxRetries;
23
+ private currentChunkIndex;
24
+ private readonly baseDelayMs;
25
+ private readonly maxDelayMs;
26
+ private readonly maxBufferSize;
27
+ private readonly clientId;
28
+ private ringBuffer;
29
+ private bufferStartIndex;
30
+ private highestBufferedIndex;
31
+ private streamReader;
32
+ private bufferReaderTask;
33
+ private streamComplete;
34
+ constructor(options: StreamsWriterV1Options<T>);
35
+ private generateClientId;
36
+ private startBuffering;
37
+ private makeRequest;
38
+ private initializeServerStream;
39
+ wait(): Promise<void>;
40
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
41
+ private buildUrl;
42
+ private isRetryableError;
43
+ private isRetryableStatusCode;
44
+ private delay;
45
+ private calculateBackoffDelay;
46
+ private addToRingBuffer;
47
+ private getChunksFromBuffer;
48
+ private queryServerLastChunkIndex;
49
+ }
@@ -0,0 +1,378 @@
1
+ import { request as httpsRequest } from "node:https";
2
+ import { request as httpRequest } from "node:http";
3
+ import { URL } from "node:url";
4
+ import { randomBytes } from "node:crypto";
5
+ export class StreamsWriterV1 {
6
+ options;
7
+ controller = new AbortController();
8
+ serverStream;
9
+ consumerStream;
10
+ streamPromise;
11
+ retryCount = 0;
12
+ maxRetries;
13
+ currentChunkIndex = 0;
14
+ baseDelayMs = 1000; // 1 second base delay
15
+ maxDelayMs = 30000; // 30 seconds max delay
16
+ maxBufferSize;
17
+ clientId;
18
+ ringBuffer = []; // Ring buffer for recent chunks
19
+ bufferStartIndex = 0; // Index of the oldest chunk in buffer
20
+ highestBufferedIndex = -1; // Highest chunk index that's been buffered
21
+ streamReader = null;
22
+ bufferReaderTask = null;
23
+ streamComplete = false;
24
+ constructor(options) {
25
+ this.options = options;
26
+ const [serverStream, consumerStream] = this.options.source.tee();
27
+ this.serverStream = serverStream;
28
+ this.consumerStream = consumerStream;
29
+ this.maxRetries = options.maxRetries ?? 10;
30
+ this.maxBufferSize = options.maxBufferSize ?? 10000; // Default 10000 chunks
31
+ this.clientId = options.clientId || this.generateClientId();
32
+ // Start background task to continuously read from stream into ring buffer
33
+ this.startBuffering();
34
+ this.streamPromise = this.initializeServerStream();
35
+ }
36
+ generateClientId() {
37
+ return randomBytes(4).toString("hex");
38
+ }
39
+ startBuffering() {
40
+ this.streamReader = this.serverStream.getReader();
41
+ this.bufferReaderTask = (async () => {
42
+ try {
43
+ let chunkIndex = 0;
44
+ while (true) {
45
+ const { done, value } = await this.streamReader.read();
46
+ if (done) {
47
+ this.streamComplete = true;
48
+ break;
49
+ }
50
+ // Add to ring buffer
51
+ this.addToRingBuffer(chunkIndex, value);
52
+ this.highestBufferedIndex = chunkIndex;
53
+ chunkIndex++;
54
+ }
55
+ }
56
+ catch (error) {
57
+ throw error;
58
+ }
59
+ })();
60
+ }
61
+ async makeRequest(startFromChunk = 0) {
62
+ return new Promise((resolve, reject) => {
63
+ const url = new URL(this.buildUrl());
64
+ const timeout = 15 * 60 * 1000; // 15 minutes
65
+ const requestFn = url.protocol === "https:" ? httpsRequest : httpRequest;
66
+ const req = requestFn({
67
+ method: "POST",
68
+ hostname: url.hostname,
69
+ port: url.port || (url.protocol === "https:" ? 443 : 80),
70
+ path: url.pathname + url.search,
71
+ headers: {
72
+ ...this.options.headers,
73
+ "Content-Type": "application/json",
74
+ "X-Client-Id": this.clientId,
75
+ "X-Resume-From-Chunk": startFromChunk.toString(),
76
+ "X-Stream-Version": this.options.version ?? "v1",
77
+ },
78
+ timeout,
79
+ });
80
+ req.on("error", async (error) => {
81
+ const errorCode = "code" in error ? error.code : undefined;
82
+ const errorMsg = error instanceof Error ? error.message : String(error);
83
+ // Check if this is a retryable connection error
84
+ if (this.isRetryableError(error)) {
85
+ if (this.retryCount < this.maxRetries) {
86
+ this.retryCount++;
87
+ // Clean up the current request to avoid socket leaks
88
+ req.destroy();
89
+ const delayMs = this.calculateBackoffDelay();
90
+ await this.delay(delayMs);
91
+ // Query server to find out what the last chunk it received was
92
+ const serverLastChunk = await this.queryServerLastChunkIndex();
93
+ // Resume from the next chunk after what the server has
94
+ const resumeFromChunk = serverLastChunk + 1;
95
+ resolve(this.makeRequest(resumeFromChunk));
96
+ return;
97
+ }
98
+ }
99
+ reject(error);
100
+ });
101
+ req.on("timeout", async () => {
102
+ // Timeout is retryable
103
+ if (this.retryCount < this.maxRetries) {
104
+ this.retryCount++;
105
+ // Clean up the current request to avoid socket leaks
106
+ req.destroy();
107
+ const delayMs = this.calculateBackoffDelay();
108
+ await this.delay(delayMs);
109
+ // Query server to find where to resume
110
+ const serverLastChunk = await this.queryServerLastChunkIndex();
111
+ const resumeFromChunk = serverLastChunk + 1;
112
+ resolve(this.makeRequest(resumeFromChunk));
113
+ return;
114
+ }
115
+ req.destroy();
116
+ reject(new Error("Request timed out"));
117
+ });
118
+ req.on("response", async (res) => {
119
+ // Check for retryable status codes (408, 429, 5xx)
120
+ if (res.statusCode && this.isRetryableStatusCode(res.statusCode)) {
121
+ if (this.retryCount < this.maxRetries) {
122
+ this.retryCount++;
123
+ // Drain and destroy the response and request to avoid socket leaks
124
+ // We need to consume the response before destroying it
125
+ res.resume(); // Start draining the response
126
+ res.destroy(); // Destroy the response to free the socket
127
+ req.destroy(); // Destroy the request as well
128
+ const delayMs = this.calculateBackoffDelay();
129
+ await this.delay(delayMs);
130
+ // Query server to find where to resume (in case some data was written)
131
+ const serverLastChunk = await this.queryServerLastChunkIndex();
132
+ const resumeFromChunk = serverLastChunk + 1;
133
+ resolve(this.makeRequest(resumeFromChunk));
134
+ return;
135
+ }
136
+ res.destroy();
137
+ req.destroy();
138
+ reject(new Error(`Max retries (${this.maxRetries}) exceeded for status code ${res.statusCode}`));
139
+ return;
140
+ }
141
+ // Non-retryable error status
142
+ if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
143
+ res.destroy();
144
+ req.destroy();
145
+ const error = new Error(`HTTP error! status: ${res.statusCode}`);
146
+ reject(error);
147
+ return;
148
+ }
149
+ // Success! Reset retry count
150
+ this.retryCount = 0;
151
+ res.on("end", () => {
152
+ resolve();
153
+ });
154
+ res.resume();
155
+ });
156
+ if (this.options.signal) {
157
+ this.options.signal.addEventListener("abort", () => {
158
+ req.destroy(new Error("Request aborted"));
159
+ });
160
+ }
161
+ const processStream = async () => {
162
+ try {
163
+ let lastSentIndex = startFromChunk - 1;
164
+ while (true) {
165
+ // Send all chunks that are available in buffer
166
+ while (lastSentIndex < this.highestBufferedIndex) {
167
+ lastSentIndex++;
168
+ const chunk = this.ringBuffer.find((c) => c.index === lastSentIndex);
169
+ if (chunk) {
170
+ const stringified = JSON.stringify(chunk.data) + "\n";
171
+ req.write(stringified);
172
+ this.currentChunkIndex = lastSentIndex + 1;
173
+ }
174
+ }
175
+ // If stream is complete and we've sent all buffered chunks, we're done
176
+ if (this.streamComplete && lastSentIndex >= this.highestBufferedIndex) {
177
+ req.end();
178
+ break;
179
+ }
180
+ // Wait a bit for more chunks to be buffered
181
+ await this.delay(10);
182
+ }
183
+ }
184
+ catch (error) {
185
+ reject(error);
186
+ }
187
+ };
188
+ processStream().catch((error) => {
189
+ reject(error);
190
+ });
191
+ });
192
+ }
193
+ async initializeServerStream() {
194
+ await this.makeRequest(0);
195
+ }
196
+ async wait() {
197
+ return this.streamPromise;
198
+ }
199
+ [Symbol.asyncIterator]() {
200
+ return streamToAsyncIterator(this.consumerStream);
201
+ }
202
+ buildUrl() {
203
+ return `${this.options.baseUrl}/realtime/v1/streams/${this.options.runId}/${this.options.target ?? "self"}/${this.options.key}`;
204
+ }
205
+ isRetryableError(error) {
206
+ if (!error)
207
+ return false;
208
+ // Connection errors that are safe to retry
209
+ const retryableErrors = [
210
+ "ECONNRESET", // Connection reset by peer
211
+ "ECONNREFUSED", // Connection refused
212
+ "ETIMEDOUT", // Connection timed out
213
+ "ENOTFOUND", // DNS lookup failed
214
+ "EPIPE", // Broken pipe
215
+ "EHOSTUNREACH", // Host unreachable
216
+ "ENETUNREACH", // Network unreachable
217
+ "socket hang up", // Socket hang up
218
+ ];
219
+ // Check error code
220
+ if (error.code && retryableErrors.includes(error.code)) {
221
+ return true;
222
+ }
223
+ // Check error message for socket hang up
224
+ if (error.message && error.message.includes("socket hang up")) {
225
+ return true;
226
+ }
227
+ return false;
228
+ }
229
+ isRetryableStatusCode(statusCode) {
230
+ // Retry on transient server errors
231
+ if (statusCode === 408)
232
+ return true; // Request Timeout
233
+ if (statusCode === 429)
234
+ return true; // Rate Limit
235
+ if (statusCode === 500)
236
+ return true; // Internal Server Error
237
+ if (statusCode === 502)
238
+ return true; // Bad Gateway
239
+ if (statusCode === 503)
240
+ return true; // Service Unavailable
241
+ if (statusCode === 504)
242
+ return true; // Gateway Timeout
243
+ return false;
244
+ }
245
+ async delay(ms) {
246
+ return new Promise((resolve) => setTimeout(resolve, ms));
247
+ }
248
+ calculateBackoffDelay() {
249
+ // Exponential backoff with jitter: baseDelay * 2^retryCount + random jitter
250
+ const exponentialDelay = this.baseDelayMs * Math.pow(2, this.retryCount);
251
+ const jitter = Math.random() * 1000; // 0-1000ms jitter
252
+ return Math.min(exponentialDelay + jitter, this.maxDelayMs);
253
+ }
254
+ addToRingBuffer(index, data) {
255
+ const chunk = { index, data };
256
+ if (this.ringBuffer.length < this.maxBufferSize) {
257
+ // Buffer not full yet, just append
258
+ this.ringBuffer.push(chunk);
259
+ }
260
+ else {
261
+ // Buffer full, replace oldest chunk (ring buffer behavior)
262
+ const bufferIndex = index % this.maxBufferSize;
263
+ this.ringBuffer[bufferIndex] = chunk;
264
+ this.bufferStartIndex = Math.max(this.bufferStartIndex, index - this.maxBufferSize + 1);
265
+ }
266
+ }
267
+ getChunksFromBuffer(startIndex) {
268
+ const result = [];
269
+ for (const chunk of this.ringBuffer) {
270
+ if (chunk.index >= startIndex) {
271
+ result.push(chunk);
272
+ }
273
+ }
274
+ // Sort by index to ensure correct order
275
+ result.sort((a, b) => a.index - b.index);
276
+ return result;
277
+ }
278
+ async queryServerLastChunkIndex(attempt = 0) {
279
+ return new Promise((resolve, reject) => {
280
+ const url = new URL(this.buildUrl());
281
+ const maxHeadRetries = 3; // Separate retry limit for HEAD requests
282
+ const requestFn = url.protocol === "https:" ? httpsRequest : httpRequest;
283
+ const req = requestFn({
284
+ method: "HEAD",
285
+ hostname: url.hostname,
286
+ port: url.port || (url.protocol === "https:" ? 443 : 80),
287
+ path: url.pathname + url.search,
288
+ headers: {
289
+ ...this.options.headers,
290
+ "X-Client-Id": this.clientId,
291
+ "X-Stream-Version": this.options.version ?? "v1",
292
+ },
293
+ timeout: 5000, // 5 second timeout for HEAD request
294
+ });
295
+ req.on("error", async (error) => {
296
+ if (this.isRetryableError(error) && attempt < maxHeadRetries) {
297
+ // Clean up the current request to avoid socket leaks
298
+ req.destroy();
299
+ await this.delay(1000 * (attempt + 1)); // Simple linear backoff
300
+ const result = await this.queryServerLastChunkIndex(attempt + 1);
301
+ resolve(result);
302
+ return;
303
+ }
304
+ req.destroy();
305
+ // Return -1 to indicate we don't know what the server has (resume from 0)
306
+ resolve(-1);
307
+ });
308
+ req.on("timeout", async () => {
309
+ req.destroy();
310
+ if (attempt < maxHeadRetries) {
311
+ await this.delay(1000 * (attempt + 1));
312
+ const result = await this.queryServerLastChunkIndex(attempt + 1);
313
+ resolve(result);
314
+ return;
315
+ }
316
+ resolve(-1);
317
+ });
318
+ req.on("response", async (res) => {
319
+ // Retry on 5xx errors
320
+ if (res.statusCode && this.isRetryableStatusCode(res.statusCode)) {
321
+ if (attempt < maxHeadRetries) {
322
+ // Drain and destroy the response and request to avoid socket leaks
323
+ res.resume();
324
+ res.destroy();
325
+ req.destroy();
326
+ await this.delay(1000 * (attempt + 1));
327
+ const result = await this.queryServerLastChunkIndex(attempt + 1);
328
+ resolve(result);
329
+ return;
330
+ }
331
+ res.destroy();
332
+ req.destroy();
333
+ resolve(-1);
334
+ return;
335
+ }
336
+ // Non-retryable error
337
+ if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
338
+ res.destroy();
339
+ req.destroy();
340
+ resolve(-1);
341
+ return;
342
+ }
343
+ // Success - extract chunk index
344
+ const lastChunkHeader = res.headers["x-last-chunk-index"];
345
+ if (lastChunkHeader) {
346
+ const lastChunkIndex = parseInt(Array.isArray(lastChunkHeader) ? lastChunkHeader[0] ?? "0" : lastChunkHeader ?? "0", 10);
347
+ resolve(lastChunkIndex);
348
+ }
349
+ else {
350
+ resolve(-1);
351
+ }
352
+ res.resume(); // Consume response
353
+ });
354
+ req.end();
355
+ });
356
+ }
357
+ }
358
+ async function* streamToAsyncIterator(stream) {
359
+ const reader = stream.getReader();
360
+ try {
361
+ while (true) {
362
+ const { done, value } = await reader.read();
363
+ if (done)
364
+ return;
365
+ yield value;
366
+ }
367
+ }
368
+ finally {
369
+ safeReleaseLock(reader);
370
+ }
371
+ }
372
+ function safeReleaseLock(reader) {
373
+ try {
374
+ reader.releaseLock();
375
+ }
376
+ catch (error) { }
377
+ }
378
+ //# sourceMappingURL=streamsWriterV1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamsWriterV1.js","sourceRoot":"","sources":["../../../../src/v3/realtimeStreams/streamsWriterV1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { StreamsWriter } from "./types.js";
2
+ export type StreamsWriterV2Options<T = any> = {
3
+ basin: string;
4
+ stream: string;
5
+ accessToken: string;
6
+ source: ReadableStream<T>;
7
+ signal?: AbortSignal;
8
+ flushIntervalMs?: number;
9
+ maxRetries?: number;
10
+ debug?: boolean;
11
+ maxQueuedBytes?: number;
12
+ };
13
+ /**
14
+ * StreamsWriterV2 writes metadata stream data directly to S2 (https://s2.dev).
15
+ *
16
+ * Features:
17
+ * - Direct streaming: Uses S2's appendSession for efficient streaming
18
+ * - Automatic batching: Uses BatchTransform to batch records
19
+ * - No manual buffering: S2 handles buffering internally
20
+ * - Debug logging: Enable with debug: true to see detailed operation logs
21
+ *
22
+ * Example usage:
23
+ * ```typescript
24
+ * const stream = new StreamsWriterV2({
25
+ * basin: "my-basin",
26
+ * stream: "my-stream",
27
+ * accessToken: "s2-token-here",
28
+ * source: myAsyncIterable,
29
+ * flushIntervalMs: 200, // Optional: batch linger duration in ms
30
+ * debug: true, // Optional: enable debug logging
31
+ * });
32
+ *
33
+ * // Wait for streaming to complete
34
+ * await stream.wait();
35
+ *
36
+ * // Or consume the stream
37
+ * for await (const value of stream) {
38
+ * console.log(value);
39
+ * }
40
+ * ```
41
+ */
42
+ export declare class StreamsWriterV2<T = any> implements StreamsWriter {
43
+ private options;
44
+ private s2Client;
45
+ private serverStream;
46
+ private consumerStream;
47
+ private streamPromise;
48
+ private readonly flushIntervalMs;
49
+ private readonly debug;
50
+ private readonly maxQueuedBytes;
51
+ private aborted;
52
+ private sessionWritable;
53
+ constructor(options: StreamsWriterV2Options<T>);
54
+ private handleAbort;
55
+ private initializeServerStream;
56
+ wait(): Promise<void>;
57
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
58
+ private log;
59
+ private logError;
60
+ }