@trigger.dev/core 0.0.0-v4-prerelease-20251107123438 → 0.0.0-v4-prerelease-20251204105839

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