@s2-dev/streamstore 0.16.0 → 0.16.2
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.
- package/LICENSE +201 -0
- package/README.md +1 -2
- package/dist/accessTokens.d.ts +37 -0
- package/dist/accessTokens.d.ts.map +1 -0
- package/dist/accessTokens.js +74 -0
- package/dist/accessTokens.js.map +1 -0
- package/dist/basin.d.ts +26 -0
- package/dist/basin.d.ts.map +1 -0
- package/dist/basin.js +34 -0
- package/dist/basin.js.map +1 -0
- package/dist/basins.d.ts +53 -0
- package/dist/basins.d.ts.map +1 -0
- package/dist/basins.js +115 -0
- package/dist/basins.js.map +1 -0
- package/dist/common.d.ts +44 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +2 -0
- package/dist/common.js.map +1 -0
- package/dist/error.d.ts +28 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +43 -0
- package/dist/error.js.map +1 -0
- package/dist/generated/client/client.gen.d.ts +3 -0
- package/dist/generated/client/client.gen.d.ts.map +1 -0
- package/dist/generated/client/client.gen.js +205 -0
- package/dist/generated/client/client.gen.js.map +1 -0
- package/dist/generated/client/index.d.ts +9 -0
- package/dist/generated/client/index.d.ts.map +1 -0
- package/dist/generated/client/index.js +7 -0
- package/dist/generated/client/index.js.map +1 -0
- package/dist/generated/client/types.gen.d.ts +125 -0
- package/dist/generated/client/types.gen.d.ts.map +1 -0
- package/dist/generated/client/types.gen.js +3 -0
- package/dist/generated/client/types.gen.js.map +1 -0
- package/dist/generated/client/utils.gen.d.ts +34 -0
- package/dist/generated/client/utils.gen.d.ts.map +1 -0
- package/dist/generated/client/utils.gen.js +231 -0
- package/dist/generated/client/utils.gen.js.map +1 -0
- package/{src/generated/client.gen.ts → dist/generated/client.gen.d.ts} +3 -8
- package/dist/generated/client.gen.d.ts.map +1 -0
- package/dist/generated/client.gen.js +6 -0
- package/dist/generated/client.gen.js.map +1 -0
- package/dist/generated/core/auth.gen.d.ts +19 -0
- package/dist/generated/core/auth.gen.d.ts.map +1 -0
- package/dist/generated/core/auth.gen.js +15 -0
- package/dist/generated/core/auth.gen.js.map +1 -0
- package/dist/generated/core/bodySerializer.gen.d.ts +18 -0
- package/dist/generated/core/bodySerializer.gen.d.ts.map +1 -0
- package/dist/generated/core/bodySerializer.gen.js +58 -0
- package/dist/generated/core/bodySerializer.gen.js.map +1 -0
- package/dist/generated/core/params.gen.d.ts +34 -0
- package/dist/generated/core/params.gen.d.ts.map +1 -0
- package/dist/generated/core/params.gen.js +89 -0
- package/dist/generated/core/params.gen.js.map +1 -0
- package/dist/generated/core/pathSerializer.gen.d.ts +34 -0
- package/dist/generated/core/pathSerializer.gen.d.ts.map +1 -0
- package/dist/generated/core/pathSerializer.gen.js +115 -0
- package/dist/generated/core/pathSerializer.gen.js.map +1 -0
- package/dist/generated/core/queryKeySerializer.gen.d.ts +19 -0
- package/dist/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
- package/dist/generated/core/queryKeySerializer.gen.js +100 -0
- package/dist/generated/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/generated/core/serverSentEvents.gen.d.ts +72 -0
- package/dist/generated/core/serverSentEvents.gen.d.ts.map +1 -0
- package/dist/generated/core/serverSentEvents.gen.js +136 -0
- package/dist/generated/core/serverSentEvents.gen.js.map +1 -0
- package/dist/generated/core/types.gen.d.ts +79 -0
- package/dist/generated/core/types.gen.d.ts.map +1 -0
- package/dist/generated/core/types.gen.js +3 -0
- package/dist/generated/core/types.gen.js.map +1 -0
- package/dist/generated/core/utils.gen.d.ts +20 -0
- package/dist/generated/core/utils.gen.d.ts.map +1 -0
- package/dist/generated/core/utils.gen.js +88 -0
- package/dist/generated/core/utils.gen.js.map +1 -0
- package/dist/generated/index.d.ts +3 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/{src/generated/index.ts → dist/generated/index.js} +1 -2
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/sdk.gen.d.ts +100 -0
- package/dist/generated/sdk.gen.d.ts.map +1 -0
- package/dist/generated/sdk.gen.js +350 -0
- package/dist/generated/sdk.gen.js.map +1 -0
- package/{src/generated/types.gen.ts → dist/generated/types.gen.d.ts} +1 -158
- package/dist/generated/types.gen.d.ts.map +1 -0
- package/dist/generated/types.gen.js +3 -0
- package/dist/generated/types.gen.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/event-stream.d.ts +26 -0
- package/dist/lib/event-stream.d.ts.map +1 -0
- package/dist/lib/event-stream.js +138 -0
- package/dist/lib/event-stream.js.map +1 -0
- package/dist/metrics.d.ts +44 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +83 -0
- package/dist/metrics.js.map +1 -0
- package/dist/s2.d.ts +38 -0
- package/dist/s2.d.ts.map +1 -0
- package/dist/s2.js +56 -0
- package/dist/s2.js.map +1 -0
- package/dist/stream.d.ts +156 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +598 -0
- package/dist/stream.js.map +1 -0
- package/dist/streams.d.ts +52 -0
- package/dist/streams.d.ts.map +1 -0
- package/dist/streams.js +114 -0
- package/dist/streams.js.map +1 -0
- package/dist/utils.d.ts +20 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +52 -0
- package/dist/utils.js.map +1 -0
- package/package.json +13 -4
- package/.changeset/README.md +0 -8
- package/.changeset/config.json +0 -11
- package/.claude/settings.local.json +0 -9
- package/.github/workflows/ci.yml +0 -59
- package/.github/workflows/publish.yml +0 -35
- package/CHANGELOG.md +0 -7
- package/biome.json +0 -30
- package/bun.lock +0 -598
- package/examples/append.ts +0 -84
- package/examples/kitchen-sink.ts +0 -73
- package/examples/read.ts +0 -30
- package/openapi-ts.config.ts +0 -7
- package/src/accessTokens.ts +0 -100
- package/src/basin.ts +0 -43
- package/src/basins.ts +0 -154
- package/src/common.ts +0 -45
- package/src/error.ts +0 -58
- package/src/generated/client/client.gen.ts +0 -268
- package/src/generated/client/index.ts +0 -26
- package/src/generated/client/types.gen.ts +0 -268
- package/src/generated/client/utils.gen.ts +0 -331
- package/src/generated/core/auth.gen.ts +0 -42
- package/src/generated/core/bodySerializer.gen.ts +0 -92
- package/src/generated/core/params.gen.ts +0 -153
- package/src/generated/core/pathSerializer.gen.ts +0 -181
- package/src/generated/core/queryKeySerializer.gen.ts +0 -136
- package/src/generated/core/serverSentEvents.gen.ts +0 -264
- package/src/generated/core/types.gen.ts +0 -118
- package/src/generated/core/utils.gen.ts +0 -143
- package/src/generated/sdk.gen.ts +0 -387
- package/src/index.ts +0 -66
- package/src/lib/event-stream.ts +0 -167
- package/src/metrics.ts +0 -106
- package/src/s2.ts +0 -65
- package/src/stream.ts +0 -791
- package/src/streams.ts +0 -156
- package/src/tests/appendSession.test.ts +0 -149
- package/src/tests/batcher-session.integration.test.ts +0 -80
- package/src/tests/batcher.test.ts +0 -216
- package/src/tests/index.test.ts +0 -7
- package/src/utils.ts +0 -80
- package/tsconfig.build.json +0 -10
- package/tsconfig.json +0 -31
package/dist/stream.d.ts
ADDED
|
@@ -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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"}
|