@s2-dev/streamstore 0.20.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +60 -10
  3. package/dist/cjs/accessTokens.d.ts +27 -14
  4. package/dist/cjs/accessTokens.d.ts.map +1 -1
  5. package/dist/cjs/accessTokens.js +72 -8
  6. package/dist/cjs/accessTokens.js.map +1 -1
  7. package/dist/cjs/basins.d.ts +29 -19
  8. package/dist/cjs/basins.d.ts.map +1 -1
  9. package/dist/cjs/basins.js +119 -9
  10. package/dist/cjs/basins.js.map +1 -1
  11. package/dist/cjs/batch-transform.d.ts +12 -16
  12. package/dist/cjs/batch-transform.d.ts.map +1 -1
  13. package/dist/cjs/batch-transform.js +17 -21
  14. package/dist/cjs/batch-transform.js.map +1 -1
  15. package/dist/cjs/common.d.ts +31 -24
  16. package/dist/cjs/common.d.ts.map +1 -1
  17. package/dist/cjs/common.js +22 -0
  18. package/dist/cjs/common.js.map +1 -1
  19. package/dist/cjs/endpoints.d.ts +63 -0
  20. package/dist/cjs/endpoints.d.ts.map +1 -0
  21. package/dist/cjs/endpoints.js +120 -0
  22. package/dist/cjs/endpoints.js.map +1 -0
  23. package/dist/cjs/error.d.ts +12 -2
  24. package/dist/cjs/error.d.ts.map +1 -1
  25. package/dist/cjs/error.js +20 -1
  26. package/dist/cjs/error.js.map +1 -1
  27. package/dist/cjs/generated/types.gen.d.ts +11 -20
  28. package/dist/cjs/generated/types.gen.d.ts.map +1 -1
  29. package/dist/cjs/index.d.ts +30 -46
  30. package/dist/cjs/index.d.ts.map +1 -1
  31. package/dist/cjs/index.js +50 -26
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/cjs/internal/case-transform.d.ts +59 -0
  34. package/dist/cjs/internal/case-transform.d.ts.map +1 -0
  35. package/dist/cjs/internal/case-transform.js +80 -0
  36. package/dist/cjs/internal/case-transform.js.map +1 -0
  37. package/dist/cjs/internal/mappers.d.ts +51 -0
  38. package/dist/cjs/internal/mappers.d.ts.map +1 -0
  39. package/dist/cjs/internal/mappers.js +225 -0
  40. package/dist/cjs/internal/mappers.js.map +1 -0
  41. package/dist/cjs/internal/sdk-types.d.ts +127 -0
  42. package/dist/cjs/internal/sdk-types.d.ts.map +1 -0
  43. package/dist/cjs/internal/sdk-types.js +9 -0
  44. package/dist/cjs/internal/sdk-types.js.map +1 -0
  45. package/dist/cjs/lib/base64.d.ts +8 -0
  46. package/dist/cjs/lib/base64.d.ts.map +1 -1
  47. package/dist/cjs/lib/base64.js +32 -12
  48. package/dist/cjs/lib/base64.js.map +1 -1
  49. package/dist/cjs/lib/event-stream.d.ts.map +1 -1
  50. package/dist/cjs/lib/event-stream.js +2 -1
  51. package/dist/cjs/lib/event-stream.js.map +1 -1
  52. package/dist/cjs/lib/paginate.d.ts +57 -0
  53. package/dist/cjs/lib/paginate.d.ts.map +1 -0
  54. package/dist/cjs/lib/paginate.js +51 -0
  55. package/dist/cjs/lib/paginate.js.map +1 -0
  56. package/dist/cjs/lib/result.d.ts +1 -1
  57. package/dist/cjs/lib/result.d.ts.map +1 -1
  58. package/dist/cjs/lib/retry.d.ts +47 -31
  59. package/dist/cjs/lib/retry.d.ts.map +1 -1
  60. package/dist/cjs/lib/retry.js +302 -201
  61. package/dist/cjs/lib/retry.js.map +1 -1
  62. package/dist/cjs/lib/stream/runtime.d.ts +1 -1
  63. package/dist/cjs/lib/stream/transport/fetch/index.d.ts +7 -9
  64. package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -1
  65. package/dist/cjs/lib/stream/transport/fetch/index.js +38 -39
  66. package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -1
  67. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +7 -2
  68. package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -1
  69. package/dist/cjs/lib/stream/transport/fetch/shared.js +62 -111
  70. package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -1
  71. package/dist/cjs/lib/stream/transport/proto.d.ts +9 -0
  72. package/dist/cjs/lib/stream/transport/proto.d.ts.map +1 -0
  73. package/dist/cjs/lib/stream/transport/proto.js +118 -0
  74. package/dist/cjs/lib/stream/transport/proto.js.map +1 -0
  75. package/dist/cjs/lib/stream/transport/s2s/index.d.ts +3 -3
  76. package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -1
  77. package/dist/cjs/lib/stream/transport/s2s/index.js +139 -86
  78. package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -1
  79. package/dist/cjs/lib/stream/types.d.ts +81 -36
  80. package/dist/cjs/lib/stream/types.d.ts.map +1 -1
  81. package/dist/cjs/lib/stream/types.js +18 -0
  82. package/dist/cjs/lib/stream/types.js.map +1 -1
  83. package/dist/cjs/metrics.d.ts +18 -17
  84. package/dist/cjs/metrics.d.ts.map +1 -1
  85. package/dist/cjs/metrics.js +67 -12
  86. package/dist/cjs/metrics.js.map +1 -1
  87. package/dist/cjs/producer.d.ts +82 -0
  88. package/dist/cjs/producer.d.ts.map +1 -0
  89. package/dist/cjs/producer.js +305 -0
  90. package/dist/cjs/producer.js.map +1 -0
  91. package/dist/cjs/s2.d.ts +1 -2
  92. package/dist/cjs/s2.d.ts.map +1 -1
  93. package/dist/cjs/s2.js +9 -9
  94. package/dist/cjs/s2.js.map +1 -1
  95. package/dist/cjs/stream.d.ts +26 -12
  96. package/dist/cjs/stream.d.ts.map +1 -1
  97. package/dist/cjs/stream.js +77 -13
  98. package/dist/cjs/stream.js.map +1 -1
  99. package/dist/cjs/streams.d.ts +29 -19
  100. package/dist/cjs/streams.d.ts.map +1 -1
  101. package/dist/cjs/streams.js +120 -9
  102. package/dist/cjs/streams.js.map +1 -1
  103. package/dist/cjs/types.d.ts +624 -0
  104. package/dist/cjs/types.d.ts.map +1 -0
  105. package/dist/cjs/types.js +129 -0
  106. package/dist/cjs/types.js.map +1 -0
  107. package/dist/cjs/utils.d.ts +1 -22
  108. package/dist/cjs/utils.d.ts.map +1 -1
  109. package/dist/cjs/utils.js +0 -42
  110. package/dist/cjs/utils.js.map +1 -1
  111. package/dist/cjs/version.d.ts +1 -1
  112. package/dist/cjs/version.js +1 -1
  113. package/dist/esm/accessTokens.d.ts +27 -14
  114. package/dist/esm/accessTokens.d.ts.map +1 -1
  115. package/dist/esm/accessTokens.js +73 -9
  116. package/dist/esm/accessTokens.js.map +1 -1
  117. package/dist/esm/basins.d.ts +29 -19
  118. package/dist/esm/basins.d.ts.map +1 -1
  119. package/dist/esm/basins.js +119 -9
  120. package/dist/esm/basins.js.map +1 -1
  121. package/dist/esm/batch-transform.d.ts +12 -16
  122. package/dist/esm/batch-transform.d.ts.map +1 -1
  123. package/dist/esm/batch-transform.js +18 -22
  124. package/dist/esm/batch-transform.js.map +1 -1
  125. package/dist/esm/common.d.ts +31 -24
  126. package/dist/esm/common.d.ts.map +1 -1
  127. package/dist/esm/common.js +20 -1
  128. package/dist/esm/common.js.map +1 -1
  129. package/dist/esm/endpoints.d.ts +63 -0
  130. package/dist/esm/endpoints.d.ts.map +1 -0
  131. package/dist/esm/endpoints.js +115 -0
  132. package/dist/esm/endpoints.js.map +1 -0
  133. package/dist/esm/error.d.ts +12 -2
  134. package/dist/esm/error.d.ts.map +1 -1
  135. package/dist/esm/error.js +20 -1
  136. package/dist/esm/error.js.map +1 -1
  137. package/dist/esm/generated/types.gen.d.ts +11 -20
  138. package/dist/esm/generated/types.gen.d.ts.map +1 -1
  139. package/dist/esm/index.d.ts +30 -46
  140. package/dist/esm/index.d.ts.map +1 -1
  141. package/dist/esm/index.js +33 -19
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/internal/case-transform.d.ts +59 -0
  144. package/dist/esm/internal/case-transform.d.ts.map +1 -0
  145. package/dist/esm/internal/case-transform.js +76 -0
  146. package/dist/esm/internal/case-transform.js.map +1 -0
  147. package/dist/esm/internal/mappers.d.ts +51 -0
  148. package/dist/esm/internal/mappers.d.ts.map +1 -0
  149. package/dist/esm/internal/mappers.js +218 -0
  150. package/dist/esm/internal/mappers.js.map +1 -0
  151. package/dist/esm/internal/sdk-types.d.ts +127 -0
  152. package/dist/esm/internal/sdk-types.d.ts.map +1 -0
  153. package/dist/esm/internal/sdk-types.js +8 -0
  154. package/dist/esm/internal/sdk-types.js.map +1 -0
  155. package/dist/esm/lib/base64.d.ts +8 -0
  156. package/dist/esm/lib/base64.d.ts.map +1 -1
  157. package/dist/esm/lib/base64.js +30 -11
  158. package/dist/esm/lib/base64.js.map +1 -1
  159. package/dist/esm/lib/event-stream.d.ts.map +1 -1
  160. package/dist/esm/lib/event-stream.js +2 -1
  161. package/dist/esm/lib/event-stream.js.map +1 -1
  162. package/dist/esm/lib/paginate.d.ts +57 -0
  163. package/dist/esm/lib/paginate.d.ts.map +1 -0
  164. package/dist/esm/lib/paginate.js +48 -0
  165. package/dist/esm/lib/paginate.js.map +1 -0
  166. package/dist/esm/lib/result.d.ts +1 -1
  167. package/dist/esm/lib/result.d.ts.map +1 -1
  168. package/dist/esm/lib/retry.d.ts +47 -31
  169. package/dist/esm/lib/retry.d.ts.map +1 -1
  170. package/dist/esm/lib/retry.js +303 -201
  171. package/dist/esm/lib/retry.js.map +1 -1
  172. package/dist/esm/lib/stream/runtime.d.ts +1 -1
  173. package/dist/esm/lib/stream/transport/fetch/index.d.ts +7 -9
  174. package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -1
  175. package/dist/esm/lib/stream/transport/fetch/index.js +40 -41
  176. package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -1
  177. package/dist/esm/lib/stream/transport/fetch/shared.d.ts +7 -2
  178. package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -1
  179. package/dist/esm/lib/stream/transport/fetch/shared.js +64 -113
  180. package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -1
  181. package/dist/esm/lib/stream/transport/proto.d.ts +9 -0
  182. package/dist/esm/lib/stream/transport/proto.d.ts.map +1 -0
  183. package/dist/esm/lib/stream/transport/proto.js +110 -0
  184. package/dist/esm/lib/stream/transport/proto.js.map +1 -0
  185. package/dist/esm/lib/stream/transport/s2s/index.d.ts +3 -3
  186. package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -1
  187. package/dist/esm/lib/stream/transport/s2s/index.js +140 -86
  188. package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -1
  189. package/dist/esm/lib/stream/types.d.ts +81 -36
  190. package/dist/esm/lib/stream/types.d.ts.map +1 -1
  191. package/dist/esm/lib/stream/types.js +17 -1
  192. package/dist/esm/lib/stream/types.js.map +1 -1
  193. package/dist/esm/metrics.d.ts +18 -17
  194. package/dist/esm/metrics.d.ts.map +1 -1
  195. package/dist/esm/metrics.js +66 -12
  196. package/dist/esm/metrics.js.map +1 -1
  197. package/dist/esm/producer.d.ts +82 -0
  198. package/dist/esm/producer.d.ts.map +1 -0
  199. package/dist/esm/producer.js +300 -0
  200. package/dist/esm/producer.js.map +1 -0
  201. package/dist/esm/s2.d.ts +1 -2
  202. package/dist/esm/s2.d.ts.map +1 -1
  203. package/dist/esm/s2.js +9 -9
  204. package/dist/esm/s2.js.map +1 -1
  205. package/dist/esm/stream.d.ts +26 -12
  206. package/dist/esm/stream.d.ts.map +1 -1
  207. package/dist/esm/stream.js +79 -15
  208. package/dist/esm/stream.js.map +1 -1
  209. package/dist/esm/streams.d.ts +29 -19
  210. package/dist/esm/streams.d.ts.map +1 -1
  211. package/dist/esm/streams.js +120 -9
  212. package/dist/esm/streams.js.map +1 -1
  213. package/dist/esm/types.d.ts +624 -0
  214. package/dist/esm/types.d.ts.map +1 -0
  215. package/dist/esm/types.js +126 -0
  216. package/dist/esm/types.js.map +1 -0
  217. package/dist/esm/utils.d.ts +1 -22
  218. package/dist/esm/utils.d.ts.map +1 -1
  219. package/dist/esm/utils.js +0 -41
  220. package/dist/esm/utils.js.map +1 -1
  221. package/dist/esm/version.d.ts +1 -1
  222. package/dist/esm/version.js +1 -1
  223. package/package.json +4 -3
@@ -1,31 +1,38 @@
1
1
  import type { RetryConfig, S2RequestOptions } from "../../common.js";
2
- import type { S2Error } from "../../error.js";
3
- import type { AppendAck, AppendInput as GeneratedAppendInput, AppendRecord as GeneratedAppendRecord, ReadBatch as GeneratedReadBatch, SequencedRecord as GeneratedSequencedRecord, ReadData, StreamPosition } from "../../generated/index.js";
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
- export type ReadBatch<Format extends "string" | "bytes" = "string"> = Omit<GeneratedReadBatch, "records"> & {
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
- export type ReadRecord<Format extends "string" | "bytes" = "string"> = Omit<GeneratedSequencedRecord, "body" | "headers"> & {
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]> | Record<string, string> : Array<[Uint8Array, Uint8Array]>;
17
- export type AppendRecordForFormat<Format extends "string" | "bytes" = "string"> = Omit<GeneratedAppendRecord, "body" | "headers"> & {
18
- body?: Format extends "string" ? string : Uint8Array;
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(records: AppendRecord | AppendRecord[], args?: Omit<AppendArgs, "records"> & {
38
- precalculatedSize?: number;
39
- }): Promise<import("../result.js").AppendResult>;
40
- close(): Promise<import("../result.js").CloseResult>;
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
- * This is what users interact with - implemented by AppendSession in ../retry.ts.
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<AppendArgs>;
84
+ readonly writable: WritableStream<Types.AppendInput>;
55
85
  /**
56
- * Submit an append request and await its acknowledgement.
57
- * This method does not apply backpressure; use {@link writable} for that.
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(records: AppendRecord | AppendRecord[], args?: Omit<AppendArgs, "records"> & {
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
- * Yields records directly and propagates errors by throwing (standard stream behavior).
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: 10 MiB).
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":"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"}
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
- export {};
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"}
@@ -1,12 +1,13 @@
1
- import type { DataToObject, RetryConfig, S2RequestOptions } from "./common.js";
1
+ import type { RetryConfig, S2RequestOptions } from "./common.js";
2
2
  import type { Client } from "./generated/client/types.gen.js";
3
- import { type AccountMetricsData, type BasinMetricsData, type StreamMetricsData } from "./generated/index.js";
4
- export interface AccountMetricsArgs extends DataToObject<AccountMetricsData> {
5
- }
6
- export interface BasinMetricsArgs extends DataToObject<BasinMetricsData> {
7
- }
8
- export interface StreamMetricsArgs extends DataToObject<StreamMetricsData> {
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 seconds)
19
- * @param args.end Optional end timestamp (Unix seconds)
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: AccountMetricsArgs, options?: S2RequestOptions): Promise<import("./generated/types.gen.js").MetricSetResponse>;
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 seconds)
29
- * @param args.end Optional end timestamp (Unix seconds)
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: BasinMetricsArgs, options?: S2RequestOptions): Promise<import("./generated/types.gen.js").MetricSetResponse>;
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 seconds)
40
- * @param args.end Optional end timestamp (Unix seconds)
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: StreamMetricsArgs, options?: S2RequestOptions): Promise<import("./generated/types.gen.js").MetricSetResponse>;
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,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EACN,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EAEtB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,kBAAmB,SAAQ,YAAY,CAAC,kBAAkB,CAAC;CAAG;AAC/E,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,gBAAgB,CAAC;CAAG;AAC3E,MAAM,WAAW,iBAAkB,SAAQ,YAAY,CAAC,iBAAiB,CAAC;CAAG;AAE7E,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,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAYzE;;;;;;;;OAQG;IACU,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAarE;;;;;;;;;OASG;IACU,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,gBAAgB;CAYvE"}
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"}
@@ -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 seconds)
16
- * @param args.end Optional end timestamp (Unix seconds)
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
- return await withRetries(this.retryConfig, async () => {
59
+ const response = await withRetries(this.retryConfig, async () => {
21
60
  return await withS2Data(() => accountMetrics({
22
61
  client: this.client,
23
- query: args,
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 seconds)
34
- * @param args.end Optional end timestamp (Unix seconds)
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
- return await withRetries(this.retryConfig, async () => {
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: args,
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 seconds)
54
- * @param args.end Optional end timestamp (Unix seconds)
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
- return await withRetries(this.retryConfig, async () => {
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: args,
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
@@ -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,EAEN,cAAc,EAEd,YAAY,EAEZ,aAAa,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM7C,MAAM,OAAO,SAAS;IACZ,MAAM,CAAS;IACP,WAAW,CAAe;IAE3C,YAAY,MAAc,EAAE,WAAyB;QACpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,OAAO,CAAC,IAAwB,EAAE,OAA0B;QACxE,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,UAAU,CAAC,GAAG,EAAE,CAC5B,cAAc,CAAC;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI;gBACX,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,KAAK,CAAC,IAAsB,EAAE,OAA0B;QACpE,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,UAAU,CAAC,GAAG,EAAE,CAC5B,YAAY,CAAC;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,MAAM,CAAC,IAAuB,EAAE,OAA0B;QACtE,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,MAAM,UAAU,CAAC,GAAG,EAAE,CAC5B,aAAa,CAAC;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,GAAG,OAAO;aACV,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
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"}