@s2-dev/streamstore 0.16.0 → 0.16.1

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 (156) hide show
  1. package/dist/accessTokens.d.ts +37 -0
  2. package/dist/accessTokens.d.ts.map +1 -0
  3. package/dist/accessTokens.js +74 -0
  4. package/dist/accessTokens.js.map +1 -0
  5. package/dist/basin.d.ts +26 -0
  6. package/dist/basin.d.ts.map +1 -0
  7. package/dist/basin.js +34 -0
  8. package/dist/basin.js.map +1 -0
  9. package/dist/basins.d.ts +53 -0
  10. package/dist/basins.d.ts.map +1 -0
  11. package/dist/basins.js +115 -0
  12. package/dist/basins.js.map +1 -0
  13. package/dist/common.d.ts +44 -0
  14. package/dist/common.d.ts.map +1 -0
  15. package/dist/common.js +2 -0
  16. package/dist/common.js.map +1 -0
  17. package/dist/error.d.ts +28 -0
  18. package/dist/error.d.ts.map +1 -0
  19. package/dist/error.js +43 -0
  20. package/dist/error.js.map +1 -0
  21. package/dist/generated/client/client.gen.d.ts +3 -0
  22. package/dist/generated/client/client.gen.d.ts.map +1 -0
  23. package/dist/generated/client/client.gen.js +205 -0
  24. package/dist/generated/client/client.gen.js.map +1 -0
  25. package/dist/generated/client/index.d.ts +9 -0
  26. package/dist/generated/client/index.d.ts.map +1 -0
  27. package/dist/generated/client/index.js +7 -0
  28. package/dist/generated/client/index.js.map +1 -0
  29. package/dist/generated/client/types.gen.d.ts +125 -0
  30. package/dist/generated/client/types.gen.d.ts.map +1 -0
  31. package/dist/generated/client/types.gen.js +3 -0
  32. package/dist/generated/client/types.gen.js.map +1 -0
  33. package/dist/generated/client/utils.gen.d.ts +34 -0
  34. package/dist/generated/client/utils.gen.d.ts.map +1 -0
  35. package/dist/generated/client/utils.gen.js +231 -0
  36. package/dist/generated/client/utils.gen.js.map +1 -0
  37. package/{src/generated/client.gen.ts → dist/generated/client.gen.d.ts} +3 -8
  38. package/dist/generated/client.gen.d.ts.map +1 -0
  39. package/dist/generated/client.gen.js +6 -0
  40. package/dist/generated/client.gen.js.map +1 -0
  41. package/dist/generated/core/auth.gen.d.ts +19 -0
  42. package/dist/generated/core/auth.gen.d.ts.map +1 -0
  43. package/dist/generated/core/auth.gen.js +15 -0
  44. package/dist/generated/core/auth.gen.js.map +1 -0
  45. package/dist/generated/core/bodySerializer.gen.d.ts +18 -0
  46. package/dist/generated/core/bodySerializer.gen.d.ts.map +1 -0
  47. package/dist/generated/core/bodySerializer.gen.js +58 -0
  48. package/dist/generated/core/bodySerializer.gen.js.map +1 -0
  49. package/dist/generated/core/params.gen.d.ts +34 -0
  50. package/dist/generated/core/params.gen.d.ts.map +1 -0
  51. package/dist/generated/core/params.gen.js +89 -0
  52. package/dist/generated/core/params.gen.js.map +1 -0
  53. package/dist/generated/core/pathSerializer.gen.d.ts +34 -0
  54. package/dist/generated/core/pathSerializer.gen.d.ts.map +1 -0
  55. package/dist/generated/core/pathSerializer.gen.js +115 -0
  56. package/dist/generated/core/pathSerializer.gen.js.map +1 -0
  57. package/dist/generated/core/queryKeySerializer.gen.d.ts +19 -0
  58. package/dist/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  59. package/dist/generated/core/queryKeySerializer.gen.js +100 -0
  60. package/dist/generated/core/queryKeySerializer.gen.js.map +1 -0
  61. package/dist/generated/core/serverSentEvents.gen.d.ts +72 -0
  62. package/dist/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  63. package/dist/generated/core/serverSentEvents.gen.js +136 -0
  64. package/dist/generated/core/serverSentEvents.gen.js.map +1 -0
  65. package/dist/generated/core/types.gen.d.ts +79 -0
  66. package/dist/generated/core/types.gen.d.ts.map +1 -0
  67. package/dist/generated/core/types.gen.js +3 -0
  68. package/dist/generated/core/types.gen.js.map +1 -0
  69. package/dist/generated/core/utils.gen.d.ts +20 -0
  70. package/dist/generated/core/utils.gen.d.ts.map +1 -0
  71. package/dist/generated/core/utils.gen.js +88 -0
  72. package/dist/generated/core/utils.gen.js.map +1 -0
  73. package/dist/generated/index.d.ts +3 -0
  74. package/dist/generated/index.d.ts.map +1 -0
  75. package/{src/generated/index.ts → dist/generated/index.js} +1 -2
  76. package/dist/generated/index.js.map +1 -0
  77. package/dist/generated/sdk.gen.d.ts +100 -0
  78. package/dist/generated/sdk.gen.d.ts.map +1 -0
  79. package/dist/generated/sdk.gen.js +350 -0
  80. package/dist/generated/sdk.gen.js.map +1 -0
  81. package/{src/generated/types.gen.ts → dist/generated/types.gen.d.ts} +1 -158
  82. package/dist/generated/types.gen.d.ts.map +1 -0
  83. package/dist/generated/types.gen.js +3 -0
  84. package/dist/generated/types.gen.js.map +1 -0
  85. package/dist/index.d.ts +10 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +4 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/lib/event-stream.d.ts +26 -0
  90. package/dist/lib/event-stream.d.ts.map +1 -0
  91. package/dist/lib/event-stream.js +138 -0
  92. package/dist/lib/event-stream.js.map +1 -0
  93. package/dist/metrics.d.ts +44 -0
  94. package/dist/metrics.d.ts.map +1 -0
  95. package/dist/metrics.js +83 -0
  96. package/dist/metrics.js.map +1 -0
  97. package/dist/s2.d.ts +38 -0
  98. package/dist/s2.d.ts.map +1 -0
  99. package/dist/s2.js +56 -0
  100. package/dist/s2.js.map +1 -0
  101. package/dist/stream.d.ts +156 -0
  102. package/dist/stream.d.ts.map +1 -0
  103. package/dist/stream.js +598 -0
  104. package/dist/stream.js.map +1 -0
  105. package/dist/streams.d.ts +52 -0
  106. package/dist/streams.d.ts.map +1 -0
  107. package/dist/streams.js +114 -0
  108. package/dist/streams.js.map +1 -0
  109. package/dist/utils.d.ts +20 -0
  110. package/dist/utils.d.ts.map +1 -0
  111. package/dist/utils.js +52 -0
  112. package/dist/utils.js.map +1 -0
  113. package/package.json +5 -1
  114. package/.changeset/README.md +0 -8
  115. package/.changeset/config.json +0 -11
  116. package/.claude/settings.local.json +0 -9
  117. package/.github/workflows/ci.yml +0 -59
  118. package/.github/workflows/publish.yml +0 -35
  119. package/CHANGELOG.md +0 -7
  120. package/biome.json +0 -30
  121. package/bun.lock +0 -598
  122. package/examples/append.ts +0 -84
  123. package/examples/kitchen-sink.ts +0 -73
  124. package/examples/read.ts +0 -30
  125. package/openapi-ts.config.ts +0 -7
  126. package/src/accessTokens.ts +0 -100
  127. package/src/basin.ts +0 -43
  128. package/src/basins.ts +0 -154
  129. package/src/common.ts +0 -45
  130. package/src/error.ts +0 -58
  131. package/src/generated/client/client.gen.ts +0 -268
  132. package/src/generated/client/index.ts +0 -26
  133. package/src/generated/client/types.gen.ts +0 -268
  134. package/src/generated/client/utils.gen.ts +0 -331
  135. package/src/generated/core/auth.gen.ts +0 -42
  136. package/src/generated/core/bodySerializer.gen.ts +0 -92
  137. package/src/generated/core/params.gen.ts +0 -153
  138. package/src/generated/core/pathSerializer.gen.ts +0 -181
  139. package/src/generated/core/queryKeySerializer.gen.ts +0 -136
  140. package/src/generated/core/serverSentEvents.gen.ts +0 -264
  141. package/src/generated/core/types.gen.ts +0 -118
  142. package/src/generated/core/utils.gen.ts +0 -143
  143. package/src/generated/sdk.gen.ts +0 -387
  144. package/src/index.ts +0 -66
  145. package/src/lib/event-stream.ts +0 -167
  146. package/src/metrics.ts +0 -106
  147. package/src/s2.ts +0 -65
  148. package/src/stream.ts +0 -791
  149. package/src/streams.ts +0 -156
  150. package/src/tests/appendSession.test.ts +0 -149
  151. package/src/tests/batcher-session.integration.test.ts +0 -80
  152. package/src/tests/batcher.test.ts +0 -216
  153. package/src/tests/index.test.ts +0 -7
  154. package/src/utils.ts +0 -80
  155. package/tsconfig.build.json +0 -10
  156. package/tsconfig.json +0 -31
@@ -0,0 +1,156 @@
1
+ import type { S2RequestOptions } from "./common";
2
+ import { type AppendAck, type AppendInput as GeneratedAppendInput, type AppendRecord as GeneratedAppendRecord, type ReadBatch as GeneratedReadBatch, type SequencedRecord as GeneratedSequencedRecord, type ReadData, type StreamPosition } from "./generated";
3
+ import type { Client } from "./generated/client/types.gen";
4
+ import { EventStream } from "./lib/event-stream";
5
+ export declare class S2Stream {
6
+ private readonly client;
7
+ readonly name: string;
8
+ constructor(name: string, client: Client);
9
+ /**
10
+ * Check the tail of the stream.
11
+ *
12
+ * Returns the next sequence number and timestamp to be assigned (`tail`).
13
+ */
14
+ checkTail(options?: S2RequestOptions): Promise<import("./generated").TailResponse>;
15
+ /**
16
+ * Read records from the stream.
17
+ *
18
+ * - When `as: "bytes"` is provided, bodies and headers are decoded from base64 to `Uint8Array`.
19
+ * - Supports starting position by `seq_num`, `timestamp`, or `tail_offset` and can clamp to the tail.
20
+ * - Non-streaming reads are bounded by `count` and `bytes` (defaults 1000 and 1 MiB).
21
+ * - Use `readSession` for streaming reads
22
+ */
23
+ read<Format extends "string" | "bytes" = "string">(args?: ReadArgs<Format>, options?: S2RequestOptions): Promise<ReadBatch<Format>>;
24
+ /**
25
+ * Append one or more records to the stream.
26
+ *
27
+ * - Automatically base64-encodes when any body or header is a `Uint8Array`.
28
+ * - Supports conditional appends via `fencing_token` and `match_seq_num`.
29
+ * - Returns the acknowledged range and the stream tail after the append.
30
+ */
31
+ append(records: AppendRecord | AppendRecord[], args?: Omit<AppendArgs, "records">, options?: S2RequestOptions): Promise<AppendAck>;
32
+ /**
33
+ * Open a streaming read session
34
+ *
35
+ * Use the returned session as an async iterable or as a readable stream.
36
+ * When `as: "bytes"` is provided, bodies and headers are decoded to `Uint8Array`.
37
+ */
38
+ readSession<Format extends "string" | "bytes" = "string">(args?: ReadArgs<Format>, options?: S2RequestOptions): Promise<ReadSession<Format>>;
39
+ /**
40
+ * Create an append session that guaranteeds ordering of submissions.
41
+ *
42
+ * Use this to coordinate high-throughput, sequential appends with backpressure.
43
+ */
44
+ appendSession(options?: S2RequestOptions): Promise<AppendSession>;
45
+ }
46
+ export type Header<Format extends "string" | "bytes" = "string"> = Format extends "string" ? [string, string] : [Uint8Array, Uint8Array];
47
+ export type ReadBatch<Format extends "string" | "bytes" = "string"> = Omit<GeneratedReadBatch, "records"> & {
48
+ records?: Array<SequencedRecord<Format>>;
49
+ };
50
+ export type SequencedRecord<Format extends "string" | "bytes" = "string"> = Omit<GeneratedSequencedRecord, "body" | "headers"> & {
51
+ body?: Format extends "string" ? string : Uint8Array;
52
+ headers?: Array<Header<Format>>;
53
+ };
54
+ export type ReadArgs<Format extends "string" | "bytes" = "string"> = ReadData["query"] & {
55
+ as?: Format;
56
+ };
57
+ export type AppendRecord = Omit<GeneratedAppendRecord, "body" | "headers"> & {
58
+ body?: string | Uint8Array;
59
+ headers?: Array<[string | Uint8Array, string | Uint8Array]> | Record<string, string | Uint8Array>;
60
+ };
61
+ export type AppendArgs = Omit<GeneratedAppendInput, "records"> & {
62
+ records: Array<AppendRecord>;
63
+ };
64
+ declare class ReadSession<Format extends "string" | "bytes" = "string"> extends EventStream<SequencedRecord<Format>> {
65
+ static create<Format extends "string" | "bytes" = "string">(client: Client, name: string, args?: ReadArgs<Format>, options?: S2RequestOptions): Promise<ReadSession<"string" | Format>>;
66
+ private _streamPosition;
67
+ private constructor();
68
+ get streamPosition(): StreamPosition | undefined;
69
+ }
70
+ declare class AcksStream extends ReadableStream<AppendAck> implements AsyncDisposable {
71
+ constructor(setController: (controller: ReadableStreamDefaultController<AppendAck>) => void);
72
+ [Symbol.asyncDispose](): Promise<void>;
73
+ [Symbol.asyncIterator](): AsyncIterableIterator<AppendAck>;
74
+ }
75
+ interface BatcherArgs {
76
+ /** Duration in milliseconds to wait before flushing a batch (default: 5ms) */
77
+ lingerDuration?: number;
78
+ /** Maximum number of records in a batch (default: 1000) */
79
+ maxBatchSize?: number;
80
+ /** Optional fencing token to enforce (remains static across batches) */
81
+ fencing_token?: string;
82
+ /** Optional sequence number to match for first batch (auto-increments for subsequent batches) */
83
+ match_seq_num?: number;
84
+ }
85
+ /**
86
+ * Batches individual records and submits them to an AppendSession.
87
+ * Handles linger duration, batch size limits, and auto-incrementing match_seq_num.
88
+ */
89
+ declare class Batcher extends WritableStream<AppendRecord | AppendRecord[]> implements AsyncDisposable {
90
+ private session;
91
+ private currentBatch;
92
+ private currentBatchResolvers;
93
+ private lingerTimer;
94
+ private closed;
95
+ private readonly maxBatchSize;
96
+ private readonly lingerDuration;
97
+ private readonly fencing_token?;
98
+ private next_match_seq_num?;
99
+ constructor(session: AppendSession, args?: BatcherArgs);
100
+ [Symbol.asyncDispose](): Promise<void>;
101
+ /**
102
+ * Submit one or more records to be batched.
103
+ * For array submits, the entire array is treated as an atomic unit and will never be split across batches.
104
+ * If it doesn't fit in the current batch, the current batch is flushed and the array is queued in the next batch.
105
+ * Returns a promise that resolves when the batch containing these records is acknowledged.
106
+ */
107
+ submit(records: AppendRecord | AppendRecord[]): Promise<AppendAck>;
108
+ /**
109
+ * Flush the current batch to the session.
110
+ */
111
+ flush(): void;
112
+ private startLingerTimer;
113
+ private cancelLingerTimer;
114
+ private cleanup;
115
+ }
116
+ /**
117
+ * Session for appending records to a stream.
118
+ * Queues append requests and ensures only one is in-flight at a time.
119
+ */
120
+ declare class AppendSession extends WritableStream<AppendArgs> implements AsyncDisposable {
121
+ private _lastSeenPosition;
122
+ private queue;
123
+ private pendingResolvers;
124
+ private inFlight;
125
+ private readonly options?;
126
+ private readonly stream;
127
+ private acksController;
128
+ private _acksStream;
129
+ private closed;
130
+ private processingPromise;
131
+ static create(stream: S2Stream, options?: S2RequestOptions): Promise<AppendSession>;
132
+ private constructor();
133
+ [Symbol.asyncDispose](): Promise<void>;
134
+ /**
135
+ * Create a batcher that batches individual records and submits them to this session.
136
+ */
137
+ makeBatcher(args?: BatcherArgs): Batcher;
138
+ /**
139
+ * Get a stream of acknowledgements for appends.
140
+ */
141
+ acks(): AcksStream;
142
+ /**
143
+ * Submit an append request to the session.
144
+ * The request will be queued and sent when no other request is in-flight.
145
+ * Returns a promise that resolves when the append is acknowledged or rejects on error.
146
+ */
147
+ submit(records: AppendRecord | AppendRecord[], args?: Omit<AppendArgs, "records">): Promise<AppendAck>;
148
+ /**
149
+ * Main processing loop that sends queued requests one at a time.
150
+ */
151
+ private processLoop;
152
+ private waitForDrain;
153
+ get lastSeenPosition(): AppendAck | undefined;
154
+ }
155
+ export {};
156
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}