@s2-dev/streamstore 0.19.5 → 0.21.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.
- package/LICENSE +21 -201
- package/README.md +60 -10
- package/dist/cjs/accessTokens.d.ts +27 -14
- package/dist/cjs/accessTokens.d.ts.map +1 -1
- package/dist/cjs/accessTokens.js +72 -8
- package/dist/cjs/accessTokens.js.map +1 -1
- package/dist/cjs/basins.d.ts +29 -19
- package/dist/cjs/basins.d.ts.map +1 -1
- package/dist/cjs/basins.js +119 -9
- package/dist/cjs/basins.js.map +1 -1
- package/dist/cjs/batch-transform.d.ts +12 -16
- package/dist/cjs/batch-transform.d.ts.map +1 -1
- package/dist/cjs/batch-transform.js +17 -21
- package/dist/cjs/batch-transform.js.map +1 -1
- package/dist/cjs/common.d.ts +31 -24
- package/dist/cjs/common.d.ts.map +1 -1
- package/dist/cjs/common.js +22 -0
- package/dist/cjs/common.js.map +1 -1
- package/dist/cjs/endpoints.d.ts +63 -0
- package/dist/cjs/endpoints.d.ts.map +1 -0
- package/dist/cjs/endpoints.js +120 -0
- package/dist/cjs/endpoints.js.map +1 -0
- package/dist/cjs/error.d.ts.map +1 -1
- package/dist/cjs/error.js +11 -0
- package/dist/cjs/error.js.map +1 -1
- package/dist/cjs/generated/types.gen.d.ts +11 -20
- package/dist/cjs/generated/types.gen.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +30 -46
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +50 -26
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/case-transform.d.ts +59 -0
- package/dist/cjs/internal/case-transform.d.ts.map +1 -0
- package/dist/cjs/internal/case-transform.js +80 -0
- package/dist/cjs/internal/case-transform.js.map +1 -0
- package/dist/cjs/internal/mappers.d.ts +51 -0
- package/dist/cjs/internal/mappers.d.ts.map +1 -0
- package/dist/cjs/internal/mappers.js +225 -0
- package/dist/cjs/internal/mappers.js.map +1 -0
- package/dist/cjs/internal/sdk-types.d.ts +127 -0
- package/dist/cjs/internal/sdk-types.d.ts.map +1 -0
- package/dist/cjs/internal/sdk-types.js +9 -0
- package/dist/cjs/internal/sdk-types.js.map +1 -0
- package/dist/cjs/lib/base64.d.ts +8 -0
- package/dist/cjs/lib/base64.d.ts.map +1 -1
- package/dist/cjs/lib/base64.js +32 -12
- package/dist/cjs/lib/base64.js.map +1 -1
- package/dist/cjs/lib/event-stream.d.ts.map +1 -1
- package/dist/cjs/lib/event-stream.js +2 -1
- package/dist/cjs/lib/event-stream.js.map +1 -1
- package/dist/cjs/lib/paginate.d.ts +57 -0
- package/dist/cjs/lib/paginate.d.ts.map +1 -0
- package/dist/cjs/lib/paginate.js +51 -0
- package/dist/cjs/lib/paginate.js.map +1 -0
- package/dist/cjs/lib/result.d.ts +1 -1
- package/dist/cjs/lib/result.d.ts.map +1 -1
- package/dist/cjs/lib/retry.d.ts +47 -31
- package/dist/cjs/lib/retry.d.ts.map +1 -1
- package/dist/cjs/lib/retry.js +302 -201
- package/dist/cjs/lib/retry.js.map +1 -1
- package/dist/cjs/lib/stream/runtime.d.ts +1 -1
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts +7 -9
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/index.js +38 -39
- package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +7 -2
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/shared.js +56 -110
- package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -1
- package/dist/cjs/lib/stream/transport/proto.d.ts +9 -0
- package/dist/cjs/lib/stream/transport/proto.d.ts.map +1 -0
- package/dist/cjs/lib/stream/transport/proto.js +118 -0
- package/dist/cjs/lib/stream/transport/proto.js.map +1 -0
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts +3 -3
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/s2s/index.js +115 -82
- package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -1
- package/dist/cjs/lib/stream/types.d.ts +81 -36
- package/dist/cjs/lib/stream/types.d.ts.map +1 -1
- package/dist/cjs/lib/stream/types.js +18 -0
- package/dist/cjs/lib/stream/types.js.map +1 -1
- package/dist/cjs/metrics.d.ts +18 -17
- package/dist/cjs/metrics.d.ts.map +1 -1
- package/dist/cjs/metrics.js +67 -12
- package/dist/cjs/metrics.js.map +1 -1
- package/dist/cjs/producer.d.ts +82 -0
- package/dist/cjs/producer.d.ts.map +1 -0
- package/dist/cjs/producer.js +305 -0
- package/dist/cjs/producer.js.map +1 -0
- package/dist/cjs/s2.d.ts +1 -2
- package/dist/cjs/s2.d.ts.map +1 -1
- package/dist/cjs/s2.js +11 -15
- package/dist/cjs/s2.js.map +1 -1
- package/dist/cjs/stream.d.ts +26 -12
- package/dist/cjs/stream.d.ts.map +1 -1
- package/dist/cjs/stream.js +77 -13
- package/dist/cjs/stream.js.map +1 -1
- package/dist/cjs/streams.d.ts +29 -19
- package/dist/cjs/streams.d.ts.map +1 -1
- package/dist/cjs/streams.js +120 -9
- package/dist/cjs/streams.js.map +1 -1
- package/dist/cjs/types.d.ts +624 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +129 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +1 -22
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +0 -42
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/accessTokens.d.ts +27 -14
- package/dist/esm/accessTokens.d.ts.map +1 -1
- package/dist/esm/accessTokens.js +73 -9
- package/dist/esm/accessTokens.js.map +1 -1
- package/dist/esm/basins.d.ts +29 -19
- package/dist/esm/basins.d.ts.map +1 -1
- package/dist/esm/basins.js +119 -9
- package/dist/esm/basins.js.map +1 -1
- package/dist/esm/batch-transform.d.ts +12 -16
- package/dist/esm/batch-transform.d.ts.map +1 -1
- package/dist/esm/batch-transform.js +18 -22
- package/dist/esm/batch-transform.js.map +1 -1
- package/dist/esm/common.d.ts +31 -24
- package/dist/esm/common.d.ts.map +1 -1
- package/dist/esm/common.js +20 -1
- package/dist/esm/common.js.map +1 -1
- package/dist/esm/endpoints.d.ts +63 -0
- package/dist/esm/endpoints.d.ts.map +1 -0
- package/dist/esm/endpoints.js +115 -0
- package/dist/esm/endpoints.js.map +1 -0
- package/dist/esm/error.d.ts.map +1 -1
- package/dist/esm/error.js +11 -0
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/generated/types.gen.d.ts +11 -20
- package/dist/esm/generated/types.gen.d.ts.map +1 -1
- package/dist/esm/index.d.ts +30 -46
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +33 -19
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/case-transform.d.ts +59 -0
- package/dist/esm/internal/case-transform.d.ts.map +1 -0
- package/dist/esm/internal/case-transform.js +76 -0
- package/dist/esm/internal/case-transform.js.map +1 -0
- package/dist/esm/internal/mappers.d.ts +51 -0
- package/dist/esm/internal/mappers.d.ts.map +1 -0
- package/dist/esm/internal/mappers.js +218 -0
- package/dist/esm/internal/mappers.js.map +1 -0
- package/dist/esm/internal/sdk-types.d.ts +127 -0
- package/dist/esm/internal/sdk-types.d.ts.map +1 -0
- package/dist/esm/internal/sdk-types.js +8 -0
- package/dist/esm/internal/sdk-types.js.map +1 -0
- package/dist/esm/lib/base64.d.ts +8 -0
- package/dist/esm/lib/base64.d.ts.map +1 -1
- package/dist/esm/lib/base64.js +30 -11
- package/dist/esm/lib/base64.js.map +1 -1
- package/dist/esm/lib/event-stream.d.ts.map +1 -1
- package/dist/esm/lib/event-stream.js +2 -1
- package/dist/esm/lib/event-stream.js.map +1 -1
- package/dist/esm/lib/paginate.d.ts +57 -0
- package/dist/esm/lib/paginate.d.ts.map +1 -0
- package/dist/esm/lib/paginate.js +48 -0
- package/dist/esm/lib/paginate.js.map +1 -0
- package/dist/esm/lib/result.d.ts +1 -1
- package/dist/esm/lib/result.d.ts.map +1 -1
- package/dist/esm/lib/retry.d.ts +47 -31
- package/dist/esm/lib/retry.d.ts.map +1 -1
- package/dist/esm/lib/retry.js +303 -201
- package/dist/esm/lib/retry.js.map +1 -1
- package/dist/esm/lib/stream/runtime.d.ts +1 -1
- package/dist/esm/lib/stream/transport/fetch/index.d.ts +7 -9
- package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/index.js +40 -41
- package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts +7 -2
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/shared.js +58 -112
- package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -1
- package/dist/esm/lib/stream/transport/proto.d.ts +9 -0
- package/dist/esm/lib/stream/transport/proto.d.ts.map +1 -0
- package/dist/esm/lib/stream/transport/proto.js +110 -0
- package/dist/esm/lib/stream/transport/proto.js.map +1 -0
- package/dist/esm/lib/stream/transport/s2s/index.d.ts +3 -3
- package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/s2s/index.js +116 -82
- package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -1
- package/dist/esm/lib/stream/types.d.ts +81 -36
- package/dist/esm/lib/stream/types.d.ts.map +1 -1
- package/dist/esm/lib/stream/types.js +17 -1
- package/dist/esm/lib/stream/types.js.map +1 -1
- package/dist/esm/metrics.d.ts +18 -17
- package/dist/esm/metrics.d.ts.map +1 -1
- package/dist/esm/metrics.js +66 -12
- package/dist/esm/metrics.js.map +1 -1
- package/dist/esm/producer.d.ts +82 -0
- package/dist/esm/producer.d.ts.map +1 -0
- package/dist/esm/producer.js +300 -0
- package/dist/esm/producer.js.map +1 -0
- package/dist/esm/s2.d.ts +1 -2
- package/dist/esm/s2.d.ts.map +1 -1
- package/dist/esm/s2.js +12 -16
- package/dist/esm/s2.js.map +1 -1
- package/dist/esm/stream.d.ts +26 -12
- package/dist/esm/stream.d.ts.map +1 -1
- package/dist/esm/stream.js +79 -15
- package/dist/esm/stream.js.map +1 -1
- package/dist/esm/streams.d.ts +29 -19
- package/dist/esm/streams.d.ts.map +1 -1
- package/dist/esm/streams.js +120 -9
- package/dist/esm/streams.js.map +1 -1
- package/dist/esm/types.d.ts +624 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +126 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +1 -22
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +0 -41
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +4 -3
|
@@ -1,31 +1,38 @@
|
|
|
1
1
|
import type { RetryConfig, S2RequestOptions } from "../../common.js";
|
|
2
|
-
import
|
|
3
|
-
import type
|
|
2
|
+
import { S2Error } from "../../error.js";
|
|
3
|
+
import type * as API from "../../generated/index.js";
|
|
4
|
+
import type * as Types from "../../types.js";
|
|
4
5
|
import type * as Redacted from "../redacted.js";
|
|
6
|
+
import type * as Result from "../result.js";
|
|
5
7
|
export type ReadHeaders<Format extends "string" | "bytes" = "string"> = Format extends "string" ? Record<string, string> : Array<[Uint8Array, Uint8Array]>;
|
|
6
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Internal read batch type used by transports.
|
|
10
|
+
* Records use API-level field names (snake_case).
|
|
11
|
+
*/
|
|
12
|
+
export type ReadBatch<Format extends "string" | "bytes" = "string"> = {
|
|
7
13
|
records: Array<ReadRecord<Format>>;
|
|
14
|
+
tail?: API.StreamPosition | null;
|
|
8
15
|
};
|
|
9
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Internal read record type used by transports.
|
|
18
|
+
* Uses API-level field names (snake_case).
|
|
19
|
+
*/
|
|
20
|
+
export type ReadRecord<Format extends "string" | "bytes" = "string"> = {
|
|
21
|
+
seq_num: number;
|
|
22
|
+
timestamp: number;
|
|
10
23
|
body?: Format extends "string" ? string : Uint8Array;
|
|
11
24
|
headers?: ReadHeaders<Format>;
|
|
12
25
|
};
|
|
13
|
-
export type ReadArgs<Format extends "string" | "bytes" = "string"> = ReadData["query"] & {
|
|
26
|
+
export type ReadArgs<Format extends "string" | "bytes" = "string"> = API.ReadData["query"] & {
|
|
14
27
|
as?: Format;
|
|
15
28
|
};
|
|
16
|
-
export type AppendHeaders<Format extends "string" | "bytes" = "string"> = Format extends "string" ? Array<[string, string]>
|
|
17
|
-
export type AppendRecordForFormat<Format extends "string" | "bytes" = "string"> =
|
|
18
|
-
|
|
19
|
-
headers?: AppendHeaders<Format>;
|
|
20
|
-
};
|
|
21
|
-
export type AppendRecord = AppendRecordForFormat<"string"> | AppendRecordForFormat<"bytes">;
|
|
22
|
-
export type AppendArgs = Omit<GeneratedAppendInput, "records"> & {
|
|
23
|
-
records: Array<AppendRecord>;
|
|
24
|
-
};
|
|
29
|
+
export type AppendHeaders<Format extends "string" | "bytes" = "string"> = Format extends "string" ? Array<[string, string]> : Array<[Uint8Array, Uint8Array]>;
|
|
30
|
+
export type AppendRecordForFormat<Format extends "string" | "bytes" = "string"> = Format extends "string" ? Types.StringAppendRecord : Types.BytesAppendRecord;
|
|
31
|
+
export type AppendRecord = Types.AppendRecord;
|
|
25
32
|
/**
|
|
26
33
|
* Stream of append acknowledgements used by {@link AppendSession}.
|
|
27
34
|
*/
|
|
28
|
-
export interface AcksStream extends ReadableStream<AppendAck>, AsyncIterable<AppendAck> {
|
|
35
|
+
export interface AcksStream extends ReadableStream<Types.AppendAck>, AsyncIterable<Types.AppendAck> {
|
|
29
36
|
}
|
|
30
37
|
/**
|
|
31
38
|
* Low-level append session implemented by transports.
|
|
@@ -34,31 +41,54 @@ export interface AcksStream extends ReadableStream<AppendAck>, AsyncIterable<App
|
|
|
34
41
|
* - Does not implement retry or backpressure; those are added by {@link AppendSession}.
|
|
35
42
|
*/
|
|
36
43
|
export interface TransportAppendSession {
|
|
37
|
-
submit(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
submit(input: Types.AppendInput): Promise<Result.AppendResult>;
|
|
45
|
+
close(): Promise<Result.CloseResult>;
|
|
46
|
+
}
|
|
47
|
+
export declare class BatchSubmitTicket {
|
|
48
|
+
private readonly promise;
|
|
49
|
+
readonly bytes: number;
|
|
50
|
+
readonly numRecords: number;
|
|
51
|
+
constructor(promise: Promise<Types.AppendAck>, bytes: number, numRecords: number);
|
|
52
|
+
/**
|
|
53
|
+
* Returns a promise that resolves with the AppendAck once the batch is durable.
|
|
54
|
+
*/
|
|
55
|
+
ack(): Promise<Types.AppendAck>;
|
|
41
56
|
}
|
|
42
57
|
/**
|
|
43
|
-
* Public AppendSession interface with retry, backpressure, and streams.
|
|
44
|
-
*
|
|
58
|
+
* Public AppendSession interface with retry, backpressure, and readable/writable streams.
|
|
59
|
+
*
|
|
60
|
+
* Typical lifecycle:
|
|
61
|
+
* 1. Call {@link S2Stream.appendSession} to create a session (optionally tuning {@link AppendSessionOptions}).
|
|
62
|
+
* 2. Submit batches with {@link AppendSession.submit} or pipe `AppendInput` objects into {@link AppendSession.writable}.
|
|
63
|
+
* 3. Observe acknowledgements via {@link AppendSession.readable} / {@link AppendSession.acks}.
|
|
64
|
+
* 4. Call {@link AppendSession.close} to flush and surface any fatal errors.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* const session = await stream.appendSession();
|
|
69
|
+
* const ackTicket = await session.submit(
|
|
70
|
+
* AppendInput.create([AppendRecord.string({ body: "event" })]),
|
|
71
|
+
* );
|
|
72
|
+
* await ackTicket.ack();
|
|
73
|
+
* await session.close();
|
|
74
|
+
* ```
|
|
45
75
|
*/
|
|
46
76
|
export interface AppendSession extends AsyncDisposable {
|
|
47
77
|
/**
|
|
48
78
|
* Readable stream of acknowledgements for appends.
|
|
49
79
|
*/
|
|
50
|
-
readonly readable: ReadableStream<AppendAck>;
|
|
80
|
+
readonly readable: ReadableStream<Types.AppendAck>;
|
|
51
81
|
/**
|
|
52
82
|
* Writable stream of append requests.
|
|
53
83
|
*/
|
|
54
|
-
readonly writable: WritableStream<
|
|
84
|
+
readonly writable: WritableStream<Types.AppendInput>;
|
|
55
85
|
/**
|
|
56
|
-
* Submit an append request
|
|
57
|
-
*
|
|
86
|
+
* Submit an append request.
|
|
87
|
+
* Returns a promise that resolves to a submit ticket once the batch is enqueued (has capacity).
|
|
88
|
+
* Call ticket.ack() to get a promise for the AppendAck once the batch is durable.
|
|
89
|
+
* This method applies backpressure and will block if capacity limits are reached.
|
|
58
90
|
*/
|
|
59
|
-
submit(
|
|
60
|
-
precalculatedSize?: number;
|
|
61
|
-
}): Promise<AppendAck>;
|
|
91
|
+
submit(input: Types.AppendInput): Promise<BatchSubmitTicket>;
|
|
62
92
|
/**
|
|
63
93
|
* Close the append session, waiting for all inflight appends to settle.
|
|
64
94
|
*/
|
|
@@ -70,7 +100,7 @@ export interface AppendSession extends AsyncDisposable {
|
|
|
70
100
|
/**
|
|
71
101
|
* Get the last acknowledged position, if any.
|
|
72
102
|
*/
|
|
73
|
-
lastAckedPosition(): AppendAck | undefined;
|
|
103
|
+
lastAckedPosition(): Types.AppendAck | undefined;
|
|
74
104
|
/**
|
|
75
105
|
* If the session failed, returns the fatal error that caused it to stop.
|
|
76
106
|
*/
|
|
@@ -93,22 +123,36 @@ export type ReadResult<Format extends "string" | "bytes" = "string"> = {
|
|
|
93
123
|
* ReadSession wraps these and converts them to the public ReadSession interface.
|
|
94
124
|
*/
|
|
95
125
|
export interface TransportReadSession<Format extends "string" | "bytes" = "string"> extends ReadableStream<ReadResult<Format>>, AsyncIterable<ReadResult<Format>>, AsyncDisposable {
|
|
96
|
-
nextReadPosition(): StreamPosition | undefined;
|
|
97
|
-
lastObservedTail(): StreamPosition | undefined;
|
|
126
|
+
nextReadPosition(): API.StreamPosition | undefined;
|
|
127
|
+
lastObservedTail(): API.StreamPosition | undefined;
|
|
98
128
|
}
|
|
99
129
|
/**
|
|
100
130
|
* Public-facing read session interface.
|
|
101
|
-
*
|
|
131
|
+
*
|
|
132
|
+
* Yields records directly (as an async iterable or `ReadableStream`) and translates transport errors into thrown exceptions.
|
|
133
|
+
* Track progress using {@link ReadSession.nextReadPosition} / {@link ReadSession.lastObservedTail}.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* const session = await stream.readSession({
|
|
138
|
+
* start: { from: { tailOffset: 50 } },
|
|
139
|
+
* stop: { wait: 15 },
|
|
140
|
+
* });
|
|
141
|
+
*
|
|
142
|
+
* for await (const record of session) {
|
|
143
|
+
* console.log(record.seqNum, record.body);
|
|
144
|
+
* }
|
|
145
|
+
* ```
|
|
102
146
|
*/
|
|
103
|
-
export interface ReadSession<Format extends "string" | "bytes" = "string"> extends ReadableStream<ReadRecord<Format>>, AsyncIterable<ReadRecord<Format>>, AsyncDisposable {
|
|
147
|
+
export interface ReadSession<Format extends "string" | "bytes" = "string"> extends ReadableStream<Types.ReadRecord<Format>>, AsyncIterable<Types.ReadRecord<Format>>, AsyncDisposable {
|
|
104
148
|
/**
|
|
105
149
|
* Get the next read position, if known.
|
|
106
150
|
*/
|
|
107
|
-
nextReadPosition(): StreamPosition | undefined;
|
|
151
|
+
nextReadPosition(): Types.StreamPosition | undefined;
|
|
108
152
|
/**
|
|
109
153
|
* Get the last observed tail position, if known.
|
|
110
154
|
*/
|
|
111
|
-
lastObservedTail(): StreamPosition | undefined;
|
|
155
|
+
lastObservedTail(): Types.StreamPosition | undefined;
|
|
112
156
|
}
|
|
113
157
|
/**
|
|
114
158
|
* Options that control client-side append backpressure and concurrency.
|
|
@@ -117,7 +161,7 @@ export interface ReadSession<Format extends "string" | "bytes" = "string"> exten
|
|
|
117
161
|
*/
|
|
118
162
|
export interface AppendSessionOptions {
|
|
119
163
|
/**
|
|
120
|
-
* Aggregate size of records, as calculated by {@link meteredBytes}, to allow in-flight before applying backpressure (default:
|
|
164
|
+
* Aggregate size of records, as calculated by {@link meteredBytes}, to allow in-flight before applying backpressure (default: 3 MiB).
|
|
121
165
|
*/
|
|
122
166
|
maxInflightBytes?: number;
|
|
123
167
|
/**
|
|
@@ -129,6 +173,7 @@ export interface AppendSessionOptions {
|
|
|
129
173
|
export interface SessionTransport {
|
|
130
174
|
makeAppendSession(stream: string, args?: AppendSessionOptions, options?: S2RequestOptions): Promise<AppendSession>;
|
|
131
175
|
makeReadSession<Format extends "string" | "bytes" = "string">(stream: string, args?: ReadArgs<Format>, options?: S2RequestOptions): Promise<ReadSession<Format>>;
|
|
176
|
+
close(): Promise<void>;
|
|
132
177
|
}
|
|
133
178
|
export type SessionTransports = "fetch" | "s2s";
|
|
134
179
|
export interface TransportConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/stream/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/stream/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import { S2Error } from "../../error.js";
|
|
2
|
+
export class BatchSubmitTicket {
|
|
3
|
+
promise;
|
|
4
|
+
bytes;
|
|
5
|
+
numRecords;
|
|
6
|
+
constructor(promise, bytes, numRecords) {
|
|
7
|
+
this.promise = promise;
|
|
8
|
+
this.bytes = bytes;
|
|
9
|
+
this.numRecords = numRecords;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Returns a promise that resolves with the AppendAck once the batch is durable.
|
|
13
|
+
*/
|
|
14
|
+
ack() {
|
|
15
|
+
return this.promise;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
2
18
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/stream/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/stream/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAoEzC,MAAM,OAAO,iBAAiB;IAEX;IACD;IACA;IAHjB,YACkB,OAAiC,EAClC,KAAa,EACb,UAAkB;QAFjB,YAAO,GAAP,OAAO,CAA0B;QAClC,UAAK,GAAL,KAAK,CAAQ;QACb,eAAU,GAAV,UAAU,CAAQ;IAChC,CAAC;IAEJ;;OAEG;IACH,GAAG;QACF,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;CACD"}
|
package/dist/esm/metrics.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RetryConfig, S2RequestOptions } from "./common.js";
|
|
2
2
|
import type { Client } from "./generated/client/types.gen.js";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
3
|
+
import type * as Types from "./types.js";
|
|
4
|
+
/** Convert API metric response to SDK types with Date conversions. */
|
|
5
|
+
export declare function fromAPIMetricSetResponse(response: unknown): Types.MetricSetResponse;
|
|
6
|
+
/**
|
|
7
|
+
* Helper for querying account, basin, and stream level metrics.
|
|
8
|
+
*
|
|
9
|
+
* Access via {@link S2.metrics}. Responses are automatically converted to Date-friendly SDK types.
|
|
10
|
+
*/
|
|
10
11
|
export declare class S2Metrics {
|
|
11
12
|
readonly client: Client;
|
|
12
13
|
private readonly retryConfig?;
|
|
@@ -15,31 +16,31 @@ export declare class S2Metrics {
|
|
|
15
16
|
* Account-level metrics.
|
|
16
17
|
*
|
|
17
18
|
* @param args.set Metric set to return
|
|
18
|
-
* @param args.start Optional start timestamp (Unix
|
|
19
|
-
* @param args.end Optional end timestamp (Unix
|
|
19
|
+
* @param args.start Optional start timestamp (milliseconds since Unix epoch)
|
|
20
|
+
* @param args.end Optional end timestamp (milliseconds since Unix epoch)
|
|
20
21
|
* @param args.interval Optional aggregation interval for timeseries sets
|
|
21
22
|
*/
|
|
22
|
-
account(args:
|
|
23
|
+
account(args: Types.AccountMetricsInput, options?: S2RequestOptions): Promise<Types.MetricSetResponse>;
|
|
23
24
|
/**
|
|
24
25
|
* Basin-level metrics.
|
|
25
26
|
*
|
|
26
27
|
* @param args.basin Basin name
|
|
27
28
|
* @param args.set Metric set to return
|
|
28
|
-
* @param args.start Optional start timestamp (Unix
|
|
29
|
-
* @param args.end Optional end timestamp (Unix
|
|
29
|
+
* @param args.start Optional start timestamp (milliseconds since Unix epoch)
|
|
30
|
+
* @param args.end Optional end timestamp (milliseconds since Unix epoch)
|
|
30
31
|
* @param args.interval Optional aggregation interval for timeseries sets
|
|
31
32
|
*/
|
|
32
|
-
basin(args:
|
|
33
|
+
basin(args: Types.BasinMetricsInput, options?: S2RequestOptions): Promise<Types.MetricSetResponse>;
|
|
33
34
|
/**
|
|
34
35
|
* Stream-level metrics.
|
|
35
36
|
*
|
|
36
37
|
* @param args.basin Basin name
|
|
37
38
|
* @param args.stream Stream name
|
|
38
39
|
* @param args.set Metric set to return
|
|
39
|
-
* @param args.start Optional start timestamp (Unix
|
|
40
|
-
* @param args.end Optional end timestamp (Unix
|
|
40
|
+
* @param args.start Optional start timestamp (milliseconds since Unix epoch)
|
|
41
|
+
* @param args.end Optional end timestamp (milliseconds since Unix epoch)
|
|
41
42
|
* @param args.interval Optional aggregation interval for timeseries sets
|
|
42
43
|
*/
|
|
43
|
-
stream(args:
|
|
44
|
+
stream(args: Types.StreamMetricsInput, options?: S2RequestOptions): Promise<Types.MetricSetResponse>;
|
|
44
45
|
}
|
|
45
46
|
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAQ9D,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAC;AASzC,sEAAsE;AACtE,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,OAAO,GACf,KAAK,CAAC,iBAAiB,CAqCzB;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;gBAE/B,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;;;;;;OAOG;IACU,OAAO,CACnB,IAAI,EAAE,KAAK,CAAC,mBAAmB,EAC/B,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAiBnC;;;;;;;;OAQG;IACU,KAAK,CACjB,IAAI,EAAE,KAAK,CAAC,iBAAiB,EAC7B,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAkBnC;;;;;;;;;OASG;IACU,MAAM,CAClB,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAC9B,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;CAiBnC"}
|
package/dist/esm/metrics.js
CHANGED
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
import { withS2Data } from "./error.js";
|
|
2
2
|
import { accountMetrics, basinMetrics, streamMetrics, } from "./generated/index.js";
|
|
3
|
+
import { toCamelCase, toSnakeCase } from "./internal/case-transform.js";
|
|
3
4
|
import { withRetries } from "./lib/retry.js";
|
|
5
|
+
/** Convert timestamp (Date or milliseconds) to Unix seconds (floored). */
|
|
6
|
+
function toEpochSeconds(value) {
|
|
7
|
+
if (value === undefined)
|
|
8
|
+
return undefined;
|
|
9
|
+
const ms = typeof value === "number" ? value : value.getTime();
|
|
10
|
+
return Math.floor(ms / 1000);
|
|
11
|
+
}
|
|
12
|
+
/** Convert API metric response to SDK types with Date conversions. */
|
|
13
|
+
export function fromAPIMetricSetResponse(response) {
|
|
14
|
+
const camelCased = toCamelCase(response);
|
|
15
|
+
// Convert timeseries timestamps from seconds to Date
|
|
16
|
+
return {
|
|
17
|
+
values: camelCased.values.map((metric) => {
|
|
18
|
+
if ("accumulation" in metric) {
|
|
19
|
+
return {
|
|
20
|
+
accumulation: {
|
|
21
|
+
...metric.accumulation,
|
|
22
|
+
values: metric.accumulation.values.map(([ts, value]) => [new Date(ts * 1000), value]),
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if ("gauge" in metric) {
|
|
27
|
+
return {
|
|
28
|
+
gauge: {
|
|
29
|
+
...metric.gauge,
|
|
30
|
+
values: metric.gauge.values.map(([ts, value]) => [new Date(ts * 1000), value]),
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return metric;
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Helper for querying account, basin, and stream level metrics.
|
|
40
|
+
*
|
|
41
|
+
* Access via {@link S2.metrics}. Responses are automatically converted to Date-friendly SDK types.
|
|
42
|
+
*/
|
|
4
43
|
export class S2Metrics {
|
|
5
44
|
client;
|
|
6
45
|
retryConfig;
|
|
@@ -12,37 +51,47 @@ export class S2Metrics {
|
|
|
12
51
|
* Account-level metrics.
|
|
13
52
|
*
|
|
14
53
|
* @param args.set Metric set to return
|
|
15
|
-
* @param args.start Optional start timestamp (Unix
|
|
16
|
-
* @param args.end Optional end timestamp (Unix
|
|
54
|
+
* @param args.start Optional start timestamp (milliseconds since Unix epoch)
|
|
55
|
+
* @param args.end Optional end timestamp (milliseconds since Unix epoch)
|
|
17
56
|
* @param args.interval Optional aggregation interval for timeseries sets
|
|
18
57
|
*/
|
|
19
58
|
async account(args, options) {
|
|
20
|
-
|
|
59
|
+
const response = await withRetries(this.retryConfig, async () => {
|
|
21
60
|
return await withS2Data(() => accountMetrics({
|
|
22
61
|
client: this.client,
|
|
23
|
-
query:
|
|
62
|
+
query: toSnakeCase({
|
|
63
|
+
...args,
|
|
64
|
+
start: toEpochSeconds(args.start),
|
|
65
|
+
end: toEpochSeconds(args.end),
|
|
66
|
+
}),
|
|
24
67
|
...options,
|
|
25
68
|
}));
|
|
26
69
|
});
|
|
70
|
+
return fromAPIMetricSetResponse(response);
|
|
27
71
|
}
|
|
28
72
|
/**
|
|
29
73
|
* Basin-level metrics.
|
|
30
74
|
*
|
|
31
75
|
* @param args.basin Basin name
|
|
32
76
|
* @param args.set Metric set to return
|
|
33
|
-
* @param args.start Optional start timestamp (Unix
|
|
34
|
-
* @param args.end Optional end timestamp (Unix
|
|
77
|
+
* @param args.start Optional start timestamp (milliseconds since Unix epoch)
|
|
78
|
+
* @param args.end Optional end timestamp (milliseconds since Unix epoch)
|
|
35
79
|
* @param args.interval Optional aggregation interval for timeseries sets
|
|
36
80
|
*/
|
|
37
81
|
async basin(args, options) {
|
|
38
|
-
|
|
82
|
+
const response = await withRetries(this.retryConfig, async () => {
|
|
39
83
|
return await withS2Data(() => basinMetrics({
|
|
40
84
|
client: this.client,
|
|
41
85
|
path: args,
|
|
42
|
-
query:
|
|
86
|
+
query: toSnakeCase({
|
|
87
|
+
...args,
|
|
88
|
+
start: toEpochSeconds(args.start),
|
|
89
|
+
end: toEpochSeconds(args.end),
|
|
90
|
+
}),
|
|
43
91
|
...options,
|
|
44
92
|
}));
|
|
45
93
|
});
|
|
94
|
+
return fromAPIMetricSetResponse(response);
|
|
46
95
|
}
|
|
47
96
|
/**
|
|
48
97
|
* Stream-level metrics.
|
|
@@ -50,19 +99,24 @@ export class S2Metrics {
|
|
|
50
99
|
* @param args.basin Basin name
|
|
51
100
|
* @param args.stream Stream name
|
|
52
101
|
* @param args.set Metric set to return
|
|
53
|
-
* @param args.start Optional start timestamp (Unix
|
|
54
|
-
* @param args.end Optional end timestamp (Unix
|
|
102
|
+
* @param args.start Optional start timestamp (milliseconds since Unix epoch)
|
|
103
|
+
* @param args.end Optional end timestamp (milliseconds since Unix epoch)
|
|
55
104
|
* @param args.interval Optional aggregation interval for timeseries sets
|
|
56
105
|
*/
|
|
57
106
|
async stream(args, options) {
|
|
58
|
-
|
|
107
|
+
const response = await withRetries(this.retryConfig, async () => {
|
|
59
108
|
return await withS2Data(() => streamMetrics({
|
|
60
109
|
client: this.client,
|
|
61
110
|
path: args,
|
|
62
|
-
query:
|
|
111
|
+
query: toSnakeCase({
|
|
112
|
+
...args,
|
|
113
|
+
start: toEpochSeconds(args.start),
|
|
114
|
+
end: toEpochSeconds(args.end),
|
|
115
|
+
}),
|
|
63
116
|
...options,
|
|
64
117
|
}));
|
|
65
118
|
});
|
|
119
|
+
return fromAPIMetricSetResponse(response);
|
|
66
120
|
}
|
|
67
121
|
}
|
|
68
122
|
//# sourceMappingURL=metrics.js.map
|
package/dist/esm/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type BatchOutput, BatchTransform } from "./batch-transform.js";
|
|
2
|
+
import type { AppendSession } from "./lib/stream/types.js";
|
|
3
|
+
import { type AppendAck, type AppendRecord } from "./types.js";
|
|
4
|
+
export declare class IndexedAppendAck {
|
|
5
|
+
readonly index: number;
|
|
6
|
+
readonly ack: AppendAck;
|
|
7
|
+
constructor(index: number, ack: AppendAck);
|
|
8
|
+
batchAppendAck(): AppendAck;
|
|
9
|
+
seqNum(): number;
|
|
10
|
+
}
|
|
11
|
+
export declare class RecordSubmitTicket {
|
|
12
|
+
private readonly ackPromise;
|
|
13
|
+
constructor(ackPromise: Promise<IndexedAppendAck>);
|
|
14
|
+
/**
|
|
15
|
+
* Returns a promise that resolves with the IndexedAppendAck once the record is durable.
|
|
16
|
+
*/
|
|
17
|
+
ack(): Promise<IndexedAppendAck>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Producer provides per-record append semantics on top of a batched AppendSession.
|
|
21
|
+
*
|
|
22
|
+
* - submit(record) returns a Promise<RecordSubmitTicket> that resolves once the record
|
|
23
|
+
* has been accepted (written to the batch transform). Backpressure is applied
|
|
24
|
+
* automatically via the transform stream when the AppendSession is at capacity.
|
|
25
|
+
* - ticket.ack() returns a Promise<IndexedAppendAck> that resolves once the record is durable.
|
|
26
|
+
*
|
|
27
|
+
* See the "Producer API" section of the root README for guidance on sizing batches,
|
|
28
|
+
* wiring transforms, and handling application-level ids.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const appendSession = await stream.appendSession();
|
|
33
|
+
* const producer = new Producer(new BatchTransform(), appendSession);
|
|
34
|
+
* const writer = producer.writable.getWriter();
|
|
35
|
+
* await writer.write(AppendRecord.string({ body: "hello" }));
|
|
36
|
+
* await writer.close();
|
|
37
|
+
*
|
|
38
|
+
* for await (const ack of producer.readable) {
|
|
39
|
+
* console.log("record durable at seq", ack.seqNum());
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* await producer.close();
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare class Producer implements AsyncDisposable {
|
|
46
|
+
readonly batchTransform: BatchTransform;
|
|
47
|
+
readonly transformWriter: WritableStreamDefaultWriter<AppendRecord>;
|
|
48
|
+
readonly transformReader: ReadableStreamDefaultReader<BatchOutput>;
|
|
49
|
+
readonly pump: Promise<void>;
|
|
50
|
+
readonly appendSession: AppendSession;
|
|
51
|
+
readonly readable: ReadableStream<IndexedAppendAck>;
|
|
52
|
+
readonly writable: WritableStream<AppendRecord>;
|
|
53
|
+
private readonly inflightRecords;
|
|
54
|
+
private pumpError;
|
|
55
|
+
private readableController;
|
|
56
|
+
private readonly debugName;
|
|
57
|
+
private submitCounter;
|
|
58
|
+
constructor(batchTransform: BatchTransform, appendSession: AppendSession, debugName?: string);
|
|
59
|
+
/**
|
|
60
|
+
* Main pump loop: reads batches from transform, submits to session, handles acks.
|
|
61
|
+
*/
|
|
62
|
+
private runPump;
|
|
63
|
+
/**
|
|
64
|
+
* Submit a single record for appending.
|
|
65
|
+
*
|
|
66
|
+
* Returns a promise that resolves to a RecordSubmitTicket once the record has been
|
|
67
|
+
* accepted. The promise blocks if the underlying AppendSession is at capacity
|
|
68
|
+
* (backpressure is applied via the transform stream).
|
|
69
|
+
*
|
|
70
|
+
* @throws S2Error if the Producer has failed
|
|
71
|
+
*/
|
|
72
|
+
submit(record: AppendRecord): Promise<RecordSubmitTicket>;
|
|
73
|
+
/**
|
|
74
|
+
* Close the Producer gracefully.
|
|
75
|
+
*
|
|
76
|
+
* Waits for all pending records to be flushed, submitted, and acknowledged.
|
|
77
|
+
* If any error occurred during the Producer's lifetime, this method throws it.
|
|
78
|
+
*/
|
|
79
|
+
close(): Promise<void>;
|
|
80
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=producer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"producer.d.ts","sourceRoot":"","sources":["../../src/producer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,KAAK,SAAS,EAAe,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAa5E,qBAAa,gBAAgB;IAE3B,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS;gBADd,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,SAAS;IAGxB,cAAc,IAAI,SAAS;IAI3B,MAAM,IAAI,MAAM;CAGhB;AAED,qBAAa,kBAAkB;IAClB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAKlE;;OAEG;IACH,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAGhC;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,QAAS,YAAW,eAAe;IAC/C,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACpE,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAEnE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEtC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IAExD,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,kBAAkB,CACpB;IAEN,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,aAAa,CAAK;gBAGzB,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,SAAS,CAAC,EAAE,MAAM;IAuCnB;;OAEG;YACW,OAAO;IA2IrB;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6E/D;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCtB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5C"}
|