@s2-dev/streamstore 0.3.13 → 0.3.17

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/README.md CHANGED
@@ -88,7 +88,7 @@ The `S2Client` class provides a lot of convenience over the generated methods an
88
88
  ```typescript
89
89
  import { ReadRequest, S2Client } from "@s2-dev/streamstore";
90
90
 
91
- const s2 = new S2Client("<AUTH_TOKEN>");
91
+ const s2 = new S2Client({ authToken: "<AUTH_TOKEN>" });
92
92
 
93
93
  async function run() {
94
94
  await s2.account.createBasin("my-favorite-basin");
@@ -97,6 +97,67 @@ async function run() {
97
97
 
98
98
  run();
99
99
  ```
100
+ ### Examples
101
+
102
+ - Using `S2Endpoints`
103
+
104
+ ```typescript
105
+ const endpoints = new S2Endpoints(
106
+ "aws.s2.dev",
107
+ {
108
+ kind: BasinEndpointKind.Direct,
109
+ authority: "aws.s2.dev"
110
+ }
111
+ );
112
+
113
+ const s2 = new S2Client({ authToken: "<AUTH_TOKEN>", endpoints });
114
+ async function run() {
115
+ const allStreams = await s2.account.basin("my-favorite-basin").listStreams();
116
+ for await (const stream of allStreams) {
117
+ console.log(basin);
118
+ }
119
+ }
120
+
121
+ run();
122
+ ```
123
+
124
+ - Override Client level Auth token
125
+
126
+ ```typescript
127
+ const s2 = new S2Client({ authToken: "<AUTH_TOKEN>"});
128
+ async function run() {
129
+ const refreshedToken = await fetchToken();
130
+ await s2.account.deleteBasin("my-favorite-basin", { authToken: refreshedToken });
131
+ }
132
+
133
+ run();
134
+ ```
135
+
136
+ - Set custom user-agent
137
+
138
+ ```typescript
139
+ const s2 = new S2Client({ authToken: "<AUTH_TOKEN>", userAgent: "say-cheese" });
140
+ async function run() {
141
+ const config = await s2.account.getBasinConfig("mehul-test");
142
+ console.log(config);
143
+ }
144
+
145
+ run();
146
+ ```
147
+
148
+ - List Basins
149
+
150
+ ```typescript
151
+ const s2 = new S2Client({ authToken: "<AUTH_TOKEN>" });
152
+ async function run() {
153
+ const allBasins = await s2.account.listBasins();
154
+ for await (const basin of allBasins) {
155
+ console.log(basin);
156
+ }
157
+ }
158
+
159
+ run();
160
+ ```
100
161
 
101
162
  <!-- Start SDK Example Usage [usage] -->
102
163
  ## SDK Example Usage
package/index.extras.d.ts CHANGED
@@ -2,6 +2,7 @@ import { AppendOutput, BasinConfig, BasinInfo, CheckTailResponse, CreateBasinReq
2
2
  import { ListBasinsRequest, ListBasinsResponse, ListStreamsRequest, ListStreamsResponse, ReadRequest as ReadRequestInner, AppendRequest as AppendRequestInner } from "./models/operations";
3
3
  import { PageIterator } from "./types";
4
4
  import { S2Endpoints } from "./endpoints";
5
+ import { HTTPClient } from "./lib/http";
5
6
  export type ReadRequest = Omit<ReadRequestInner, "stream">;
6
7
  export type AppendRequest = Omit<AppendRequestInner, "stream">;
7
8
  export type { GetBasinConfigRequest, ListBasinsRequest, ListBasinsResponse, ListStreamsRequest, ListStreamsResponse, ReconfigureBasinRequest, } from "./models/operations";
@@ -9,15 +10,37 @@ export type { BasinConfig, BasinInfo, CheckTailResponse, CreateBasinRequest, Cre
9
10
  export * from "./endpoints";
10
11
  export type S2ClientConfig = {
11
12
  authToken?: string;
13
+ userAgent?: string;
12
14
  requestTimeout?: number;
13
15
  endpoints?: S2Endpoints;
14
16
  appedRetryPolicy?: AppendRetryPolicy;
15
17
  maxRetries?: number;
16
18
  initialBackoffMs?: number;
17
19
  maxBackoffMs?: number;
20
+ httpClient?: HTTPClient;
18
21
  };
22
+ /**
23
+ * Override the client level configuration for a specific operation.
24
+ *
25
+ * @remarks
26
+ * Only `authToken` can be overridden for now.
27
+ */
28
+ export type S2OperationConfig = {
29
+ authToken?: string;
30
+ };
31
+ /**
32
+ * Retry policy for appends.
33
+ */
19
34
  export declare enum AppendRetryPolicy {
35
+ /**
36
+ * Retry all eligible failures encountered during an append.
37
+ * This could result in append batches being duplicated on the stream.
38
+ */
20
39
  All = 0,
40
+ /**
41
+ * Retry only failures with no side effects.
42
+ * Will not attempt to retry failures where it cannot be concluded whether an append may become durable, in order to prevent duplicates.
43
+ */
21
44
  NoSideEffects = 1
22
45
  }
23
46
  export declare class S2Client {
@@ -33,15 +56,16 @@ declare class S2Account {
33
56
  private config;
34
57
  private readonly accountURLSuffx;
35
58
  constructor(config: S2ClientConfig);
36
- get URL(): string | undefined;
59
+ get URL(): string;
37
60
  basin(basinName: string): S2Basin;
38
- listBasins(request?: ListBasinsRequest): Promise<PageIterator<ListBasinsResponse, {
61
+ private overrideConfig;
62
+ listBasins(request?: ListBasinsRequest, opConfig?: S2OperationConfig): Promise<PageIterator<ListBasinsResponse, {
39
63
  cursor: string;
40
64
  }>>;
41
- getBasinConfig(basin: string): Promise<BasinConfig | undefined>;
42
- createBasin(basin: string, request?: CreateBasinRequest): Promise<BasinInfo | undefined>;
43
- deleteBasin(basin: string, if_exists?: boolean): Promise<void>;
44
- reconfigureBasin(basin: string, config: BasinConfig): Promise<BasinConfig | undefined>;
65
+ getBasinConfig(basin: string, opConfig?: S2OperationConfig): Promise<BasinConfig | undefined>;
66
+ createBasin(basin: string, request?: CreateBasinRequest, opConfig?: S2OperationConfig): Promise<BasinInfo | undefined>;
67
+ deleteBasin(basin: string, if_exists?: boolean, opConfig?: S2OperationConfig): Promise<void>;
68
+ reconfigureBasin(basin: string, config: BasinConfig, opConfig?: S2OperationConfig): Promise<BasinConfig | undefined>;
45
69
  }
46
70
  declare class S2Basin {
47
71
  private _basin;
@@ -53,13 +77,14 @@ declare class S2Basin {
53
77
  private get URL();
54
78
  constructor(basinName: string, config: S2ClientConfig);
55
79
  stream(streamName: string): Stream;
56
- listStreams(request: ListStreamsRequest): Promise<PageIterator<ListStreamsResponse, {
80
+ private overrideConfig;
81
+ listStreams(request?: ListStreamsRequest, opConfig?: S2OperationConfig): Promise<PageIterator<ListStreamsResponse, {
57
82
  cursor: string;
58
83
  }>>;
59
- getStreamConfig(stream: string): Promise<StreamConfig | undefined>;
60
- createStream(stream: string, request?: CreateStreamRequest): Promise<StreamInfo | undefined>;
61
- deleteStream(stream: string, if_exists?: boolean): Promise<void | undefined>;
62
- reconfigureStream(stream: string, config: StreamConfig): Promise<StreamConfig>;
84
+ getStreamConfig(stream: string, opConfig?: S2OperationConfig): Promise<StreamConfig | undefined>;
85
+ createStream(stream: string, request?: CreateStreamRequest, opConfig?: S2OperationConfig): Promise<StreamInfo | undefined>;
86
+ deleteStream(stream: string, if_exists?: boolean, opConfig?: S2OperationConfig): Promise<void | undefined>;
87
+ reconfigureStream(stream: string, config: StreamConfig, opConfig?: S2OperationConfig): Promise<StreamConfig>;
63
88
  }
64
89
  declare class Stream {
65
90
  private _stream;
@@ -68,11 +93,12 @@ declare class Stream {
68
93
  private clientKind;
69
94
  private readonly basinURLSuffx;
70
95
  private get basinURL();
96
+ private overrideConfig;
71
97
  constructor(basinName: string, streamName: string, config: S2ClientConfig);
72
- checkTail(): Promise<CheckTailResponse>;
73
- append(request: AppendRequest): Promise<AppendOutput>;
74
- read(request: ReadRequest): Promise<Output>;
75
- readStream(request: ReadRequest): AsyncGenerator<ReadResponse, void, undefined>;
98
+ checkTail(opConfig?: S2OperationConfig): Promise<CheckTailResponse>;
99
+ append(request: AppendRequest, opConfig?: S2OperationConfig): Promise<AppendOutput>;
100
+ read(request: ReadRequest, opConfig?: S2OperationConfig): Promise<Output>;
101
+ readStream(request: ReadRequest, opConfig?: S2OperationConfig): AsyncGenerator<ReadResponse, void, undefined>;
76
102
  }
77
103
  export declare function genS2RequestToken(): string;
78
104
  //# sourceMappingURL=index.extras.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.extras.d.ts","sourceRoot":"","sources":["src/index.extras.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.extras.d.ts","sourceRoot":"","sources":["src/index.extras.ts"],"names":[],"mappings":"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"}
package/index.extras.js CHANGED
@@ -24,16 +24,31 @@ const account_1 = require("./sdk/account");
24
24
  const uuid_1 = require("uuid");
25
25
  const basinDeleteStream_1 = require("./funcs/basinDeleteStream");
26
26
  const endpoints_1 = require("./endpoints");
27
+ const http_1 = require("./lib/http");
27
28
  __exportStar(require("./endpoints"), exports);
29
+ /**
30
+ * Retry policy for appends.
31
+ */
28
32
  var AppendRetryPolicy;
29
33
  (function (AppendRetryPolicy) {
34
+ /**
35
+ * Retry all eligible failures encountered during an append.
36
+ * This could result in append batches being duplicated on the stream.
37
+ */
30
38
  AppendRetryPolicy[AppendRetryPolicy["All"] = 0] = "All";
39
+ /**
40
+ * Retry only failures with no side effects.
41
+ * Will not attempt to retry failures where it cannot be concluded whether an append may become durable, in order to prevent duplicates.
42
+ */
31
43
  AppendRetryPolicy[AppendRetryPolicy["NoSideEffects"] = 1] = "NoSideEffects";
32
44
  })(AppendRetryPolicy || (exports.AppendRetryPolicy = AppendRetryPolicy = {}));
33
45
  const defaultS2ClientConfig = {
34
46
  requestTimeout: 3000,
35
47
  endpoints: endpoints_1.S2Endpoints.forCloud(endpoints_1.S2Cloud.Aws),
36
48
  appedRetryPolicy: AppendRetryPolicy.All,
49
+ httpClient: new http_1.HTTPClient({
50
+ fetcher: async (request) => fetch(request),
51
+ }),
37
52
  };
38
53
  class S2Client {
39
54
  get account() {
@@ -50,51 +65,64 @@ exports.S2Client = S2Client;
50
65
  class S2Account {
51
66
  constructor(config) {
52
67
  this.accountURLSuffx = "/v1alpha";
68
+ config.httpClient?.addHook("beforeRequest", (request) => {
69
+ if (config.userAgent !== undefined) {
70
+ request.headers.set("user-agent", config.userAgent ?? "s2-sdk-typescript");
71
+ }
72
+ });
53
73
  this._account = new account_1.Account({
54
74
  ...(config.authToken !== undefined && { bearerAuth: config.authToken }),
55
- ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout })
75
+ ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout }),
76
+ ...(config.httpClient !== undefined && { httpClient: config.httpClient }),
56
77
  });
57
78
  this.config = config;
58
79
  }
59
80
  get URL() {
60
- if (!this.config.endpoints)
61
- return undefined;
62
- return `https://${endpoints_1.ClientKind.toAuthority({ kind: "Account" }, this.config.endpoints)}${this.accountURLSuffx}`;
81
+ return `https://${endpoints_1.ClientKind.toAuthority({ kind: "Account" }, this.config.endpoints ?? endpoints_1.S2Endpoints.forCloud(endpoints_1.S2Cloud.Aws))}${this.accountURLSuffx}`;
63
82
  }
64
83
  basin(basinName) {
65
84
  return new S2Basin(basinName, this.config);
66
85
  }
67
- async listBasins(request) {
68
- const url = this.URL;
69
- return retryWithExponentialBackoff(() => this._account.listBasins(request ?? {}, url ? { serverURL: url } : {}), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
86
+ overrideConfig(config) {
87
+ this.config.httpClient?.addHook("beforeRequest", (request) => {
88
+ if (config?.authToken !== undefined) {
89
+ request.headers.set("Authorization", `Bearer ${config.authToken}`);
90
+ }
91
+ });
92
+ }
93
+ async listBasins(request, opConfig) {
94
+ this.overrideConfig(opConfig);
95
+ return retryWithExponentialBackoff(() => this._account.listBasins(request ?? {}, {
96
+ serverURL: this.URL,
97
+ }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
70
98
  }
71
- async getBasinConfig(basin) {
99
+ async getBasinConfig(basin, opConfig) {
100
+ this.overrideConfig(opConfig);
72
101
  const _request = { basin };
73
- const url = this.URL;
74
- return retryWithExponentialBackoff(() => this._account.getBasinConfig(_request, url ? { serverURL: url } : {}), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
102
+ return retryWithExponentialBackoff(() => this._account.getBasinConfig(_request, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
75
103
  }
76
- async createBasin(basin, request) {
104
+ async createBasin(basin, request, opConfig) {
105
+ this.overrideConfig(opConfig);
77
106
  const _request = {
78
107
  basin,
79
108
  s2RequestToken: genS2RequestToken(),
80
109
  createBasinRequest: request ?? {},
81
110
  };
82
- const url = this.URL;
83
- return retryWithExponentialBackoff(() => this._account.createBasin(_request, url ? { serverURL: url } : {}), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
111
+ return retryWithExponentialBackoff(() => this._account.createBasin(_request, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
84
112
  }
85
- async deleteBasin(basin, if_exists) {
86
- const url = this.URL;
87
- const response = await retryWithExponentialBackoff(() => (0, accountDeleteBasin_1.accountDeleteBasin)(this._account, { basin }, url ? { serverURL: url } : {}), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
113
+ async deleteBasin(basin, if_exists, opConfig) {
114
+ this.overrideConfig(opConfig);
115
+ const response = await retryWithExponentialBackoff(() => (0, accountDeleteBasin_1.accountDeleteBasin)(this._account, { basin }, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
88
116
  if (if_exists && response.error instanceof errors_1.NotFoundError)
89
117
  return;
90
118
  if (response.error)
91
119
  throw new Error(response.error.message);
92
120
  return;
93
121
  }
94
- async reconfigureBasin(basin, config) {
95
- const url = this.URL;
122
+ async reconfigureBasin(basin, config, opConfig) {
123
+ this.overrideConfig(opConfig);
96
124
  const _request = { basin, basinConfig: config };
97
- return retryWithExponentialBackoff(() => this._account.reconfigureBasin(_request, url ? { serverURL: url } : {}), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
125
+ return retryWithExponentialBackoff(() => this._account.reconfigureBasin(_request, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
98
126
  }
99
127
  }
100
128
  class S2Basin {
@@ -103,9 +131,18 @@ class S2Basin {
103
131
  }
104
132
  constructor(basinName, config) {
105
133
  this.basinURLSuffx = "/v1alpha";
134
+ config.httpClient?.addHook("beforeRequest", (request) => {
135
+ if (config.userAgent !== undefined) {
136
+ request.headers.set("user-agent", config.userAgent ?? "s2-sdk-typescript");
137
+ }
138
+ if (config.endpoints?.basin?.kind === "Direct") {
139
+ request.headers.set("s2-basin", basinName);
140
+ }
141
+ });
106
142
  this._basin = new basin_1.Basin({
107
143
  ...(config.authToken !== undefined && { bearerAuth: config.authToken }),
108
- ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout })
144
+ ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout }),
145
+ ...(config.httpClient !== undefined && { httpClient: config.httpClient }),
109
146
  });
110
147
  this.config = config;
111
148
  this.clientKind = { kind: "Basin", basin: basinName };
@@ -114,13 +151,23 @@ class S2Basin {
114
151
  stream(streamName) {
115
152
  return (this._stream ?? (this._stream = new Stream(this.basinName, streamName, this.config)));
116
153
  }
117
- async listStreams(request) {
118
- return retryWithExponentialBackoff(() => this._basin.listStreams(request, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
154
+ overrideConfig(config) {
155
+ this.config.httpClient?.addHook("beforeRequest", (request) => {
156
+ if (config?.authToken !== undefined) {
157
+ request.headers.set("Authorization", `Bearer ${config.authToken}`);
158
+ }
159
+ });
160
+ }
161
+ async listStreams(request, opConfig) {
162
+ this.overrideConfig(opConfig);
163
+ return retryWithExponentialBackoff(() => this._basin.listStreams(request ?? {}, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
119
164
  }
120
- async getStreamConfig(stream) {
165
+ async getStreamConfig(stream, opConfig) {
166
+ this.overrideConfig(opConfig);
121
167
  return retryWithExponentialBackoff(() => this._basin.getStreamConfig({ stream }, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
122
168
  }
123
- async createStream(stream, request) {
169
+ async createStream(stream, request, opConfig) {
170
+ this.overrideConfig(opConfig);
124
171
  const _request = {
125
172
  stream,
126
173
  s2RequestToken: genS2RequestToken(),
@@ -128,7 +175,8 @@ class S2Basin {
128
175
  };
129
176
  return retryWithExponentialBackoff(() => this._basin.createStream(_request, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
130
177
  }
131
- async deleteStream(stream, if_exists) {
178
+ async deleteStream(stream, if_exists, opConfig) {
179
+ this.overrideConfig(opConfig);
132
180
  const response = await retryWithExponentialBackoff(() => (0, basinDeleteStream_1.basinDeleteStream)(this._basin, { stream }, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
133
181
  if (if_exists && response instanceof errors_1.NotFoundError)
134
182
  return;
@@ -136,7 +184,8 @@ class S2Basin {
136
184
  throw new Error(response.error.message);
137
185
  return;
138
186
  }
139
- async reconfigureStream(stream, config) {
187
+ async reconfigureStream(stream, config, opConfig) {
188
+ this.overrideConfig(opConfig);
140
189
  return retryWithExponentialBackoff(() => this._basin.reconfigureStream({ stream, streamConfig: config }, { serverURL: this.URL }), this.config.maxRetries, this.config.initialBackoffMs, this.config.maxBackoffMs);
141
190
  }
142
191
  }
@@ -144,20 +193,38 @@ class Stream {
144
193
  get basinURL() {
145
194
  return `https://${endpoints_1.ClientKind.toAuthority(this.clientKind, this.config.endpoints ?? endpoints_1.S2Endpoints.forCloud(endpoints_1.S2Cloud.Aws))}${this.basinURLSuffx}`;
146
195
  }
196
+ overrideConfig(config) {
197
+ this.config.httpClient?.addHook("beforeRequest", (request) => {
198
+ if (config?.authToken !== undefined) {
199
+ request.headers.set("Authorization", `Bearer ${config.authToken}`);
200
+ }
201
+ });
202
+ }
147
203
  constructor(basinName, streamName, config) {
148
204
  this.basinURLSuffx = "/v1alpha";
149
205
  this.config = config;
150
206
  this.clientKind = { kind: "Basin", basin: basinName };
151
207
  this.streamName = streamName;
208
+ config.httpClient?.addHook("beforeRequest", (request) => {
209
+ if (config.userAgent !== undefined) {
210
+ request.headers.set("user-agent", config.userAgent ?? "s2-sdk-typescript");
211
+ }
212
+ if (config.endpoints?.basin?.kind === "Direct") {
213
+ request.headers.set("s2-basin", basinName);
214
+ }
215
+ });
152
216
  this._stream = new stream_1.Stream({
153
217
  ...(config.authToken !== undefined && { bearerAuth: config.authToken }),
154
- ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout })
218
+ ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout }),
219
+ ...(config.httpClient !== undefined && { httpClient: config.httpClient })
155
220
  });
156
221
  }
157
- async checkTail() {
222
+ async checkTail(opConfig) {
223
+ this.overrideConfig(opConfig);
158
224
  return (await this._stream.checkTail({ stream: this.streamName }, { serverURL: this.basinURL }));
159
225
  }
160
- async append(request) {
226
+ async append(request, opConfig) {
227
+ this.overrideConfig(opConfig);
161
228
  switch (this.config.appedRetryPolicy) {
162
229
  case AppendRetryPolicy.All:
163
230
  case undefined:
@@ -170,10 +237,12 @@ class Stream {
170
237
  throw new Error("Invalid AppendRetryPolicy");
171
238
  }
172
239
  }
173
- async read(request) {
240
+ async read(request, opConfig) {
241
+ this.overrideConfig(opConfig);
174
242
  return await this._stream.read({ ...request, stream: this.streamName }, { serverURL: this.basinURL });
175
243
  }
176
- async *readStream(request) {
244
+ async *readStream(request, opConfig) {
245
+ this.overrideConfig(opConfig);
177
246
  let currentRequest = { ...request };
178
247
  let initialBackoffMs = this.config.initialBackoffMs ?? 100;
179
248
  const maxBackoffMs = 5000;
@@ -1 +1 @@
1
- {"version":3,"file":"index.extras.js","sourceRoot":"","sources":["src/index.extras.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.extras.js","sourceRoot":"","sources":["src/index.extras.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAyeA,8CAEC;AA3eD,mEAAgE;AAgBhE,4CAAgE;AAehE,yCAAqE;AACrE,uCAAkD;AAClD,2CAAwD;AAExD,+BAAoC;AACpC,iEAA8D;AAE9D,2CAA+D;AAC/D,qCAAwC;AAwBxC,8CAA4B;AAwB5B;;GAEG;AACH,IAAY,iBAWX;AAXD,WAAY,iBAAiB;IACzB;;;OAGG;IACH,uDAAG,CAAA;IACH;;;OAGG;IACH,2EAAa,CAAA;AACjB,CAAC,EAXW,iBAAiB,iCAAjB,iBAAiB,QAW5B;AAED,MAAM,qBAAqB,GAAmB;IAC1C,cAAc,EAAE,IAAI;IACpB,SAAS,EAAE,uBAAW,CAAC,QAAQ,CAAC,mBAAO,CAAC,GAAG,CAAC;IAC5C,gBAAgB,EAAE,iBAAiB,CAAC,GAAG;IACvC,UAAU,EAAE,IAAI,iBAAU,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;KAC7C,CAAC;CACL,CAAC;AAGF,MAAa,QAAQ;IAIjB,IAAI,OAAO;QACP,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAb,IAAI,CAAC,QAAQ,GAAK,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;IAC1D,CAAC;IAGD,KAAK,CAAC,SAAiB;QACnB,OAAO,CAAC,IAAI,CAAC,MAAM,KAAX,IAAI,CAAC,MAAM,GAAK,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;IACjE,CAAC;IAED,YAAY,MAAuB;QAC/B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,qBAAqB,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1D,CAAC;CACJ;AAhBD,4BAgBC;AAED,MAAM,SAAS;IAKX,YAAY,MAAsB;QAFjB,oBAAe,GAAG,UAAU,CAAC;QAG1C,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YACpD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,IAAI,mBAAmB,CAAC,CAAC;YAC/E,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAY,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;SAC5E,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,IAAI,GAAG;QACH,OAAO,WAAW,sBAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,uBAAW,CAAC,QAAQ,CAAC,mBAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IACvJ,CAAC;IAED,KAAK,CAAC,SAAiB;QACnB,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEO,cAAc,CAAC,MAA0B;QAC7C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YACzD,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACvE,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU,CACZ,OAA2B,EAC3B,QAA4B;QAE5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,2BAA2B,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE;YAC1C,SAAS,EAAE,IAAI,CAAC,GAAG;SACtB,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,QAA4B;QAC5D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAA0B,EAAE,KAAK,EAAE,CAAC;QAClD,OAAO,2BAA2B,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EACrE,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,OAA4B,EAAE,QAA4B;QACvF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAA4B;YACtC,KAAK;YACL,cAAc,EAAE,iBAAiB,EAAE;YACnC,kBAAkB,EAAE,OAAO,IAAI,EAAE;SACpC,CAAC;QACF,OAAO,2BAA2B,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAClE,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,SAAmB,EAAE,QAA4B;QAC9E,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAC9C,GAAG,EAAE,CAAC,IAAA,uCAAkB,EAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAC3E,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;QACF,IAAI,SAAS,IAAI,QAAQ,CAAC,KAAK,YAAY,sBAAa;YAAE,OAAO;QACjE,IAAI,QAAQ,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO;IACX,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,MAAmB,EAAE,QAA4B;QACnF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAA4B,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QACzE,OAAO,2BAA2B,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EACvE,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;IACN,CAAC;CACJ;AAED,MAAM,OAAO;IAQT,IAAY,GAAG;QACX,OAAO,WAAW,sBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,uBAAW,CAAC,QAAQ,CAAC,mBAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACjJ,CAAC;IAED,YAAY,SAAiB,EAAE,MAAsB;QANpC,kBAAa,GAAG,UAAU,CAAC;QAOxC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YACpD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,IAAI,mBAAmB,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,aAAU,CAAC;YACzB,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;SAC5E,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,UAAkB;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,KAAZ,IAAI,CAAC,OAAO,GAAK,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;IAClF,CAAC;IAEO,cAAc,CAAC,MAA0B;QAC7C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YACzD,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACvE,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,WAAW,CACb,OAA4B,EAC5B,QAA4B;QAE5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,2BAA2B,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EACrE,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,eAAe,CACjB,MAAc,EACd,QAA4B;QAE5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,2BAA2B,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EACtE,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,OAA6B,EAAE,QAA4B;QAC1F,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAA6B;YACvC,MAAM;YACN,cAAc,EAAE,iBAAiB,EAAE;YACnC,mBAAmB,EAAE,OAAO,IAAI,EAAE;SACrC,CAAC;QACF,OAAO,2BAA2B,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EACjE,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,SAAmB,EAAE,QAA4B;QAChF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAC9C,GAAG,EAAE,CAAC,IAAA,qCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EACzE,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;QACF,IAAI,SAAS,IAAI,QAAQ,YAAY,sBAAa;YAAE,OAAO;QAC3D,IAAI,QAAQ,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO;IACX,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,MAAoB,EAAE,QAA4B;QACtF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,2BAA2B,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAC9F,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;IACN,CAAC;CACJ;AAED,MAAM,MAAM;IAOR,IAAY,QAAQ;QAChB,OAAO,WAAW,sBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,uBAAW,CAAC,QAAQ,CAAC,mBAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACjJ,CAAC;IAEO,cAAc,CAAC,MAA0B;QAC7C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YACzD,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACvE,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,SAAiB,EAAE,UAAkB,EAAE,MAAsB;QAdxD,kBAAa,GAAG,UAAU,CAAC;QAexC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YACpD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,IAAI,mBAAmB,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,eAAW,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;SAC5E,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAA4B;QACxC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,CACH,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAC1F,CAAC;IACN,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB,EAAE,QAA4B;QAC7D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACnC,KAAK,iBAAiB,CAAC,GAAG,CAAC;YAC3B,KAAK,SAAS;gBACV,OAAO,2BAA2B,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAChG,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;YACN,KAAK,iBAAiB,CAAC,aAAa;gBAChC,OAAO,CACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE;oBAC/D,SAAS,EAAE,IAAI,CAAC,QAAQ;iBAC3B,CAAC,CACL,CAAC;YACN;gBACI,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAoB,EAAE,QAA4B;QACzD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,OACI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAChG,CAAC;IACN,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CAAC,OAAoB,EAAE,QAA4B;QAChE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,cAAc,GAAgB,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,GAAG,CAAC;QAC3D,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,MAA6C,CAAC;YAClD,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CACpC,EAAE,GAAG,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAC9C;oBACI,SAAS,EAAE,IAAI,CAAC,QAAQ;oBACxB,SAAS,EAAE,CAAC,CAAC,EAAE,6BAA6B;oBAC5C,oBAAoB,EAAE,uBAAc,CAAC,eAAe;iBACvD,CACJ,CAAC;gBACF,MAAM,GAAG,QAAqC,CAAC;gBAC/C,IAAI,CAAC,MAAM;oBAAE,OAAO;gBAEpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC/B,MAAM,KAAK,CAAC;oBAEZ,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC5B,MAAM,MAAM,GAAG,KAA2B,CAAC;wBAC3C,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;4BACzB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;4BAChC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gCAC3D,IAAI,UAAU,EAAE,CAAC;oCACb,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC/E,CAAC;4BACL,CAAC;4BACD,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;gCACvB,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;oCACrC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gCAChG,CAAC;gCACD,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;oCACrC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;gCACnG,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;gBACD,OAAO;YACX,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,KAAK,YAAY,uBAAc,EAAE,CAAC;oBAClC,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;wBAC3B,MAAM,KAAK,CAAC;oBAChB,CAAC;oBACD,UAAU,EAAE,CAAC;oBACb,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;oBACpE,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACJ,MAAM,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AAED,SAAS,iBAAiB,CAAC,KAAsB;IAC7C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAEnC,OAAO,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA2B;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAgB,iBAAiB;IAC7B,OAAO,IAAA,SAAM,GAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,2BAA2B,CACtC,SAA2B,EAC3B,cAAsB,CAAC,EACvB,mBAA2B,GAAG,EAC9B,eAAuB,IAAI;IAE3B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,OAAO,OAAO,GAAG,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC;YACD,OAAO,MAAM,SAAS,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,uBAAc,EAAE,CAAC;gBAClC,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,IAAI,WAAW;oBAAE,MAAM,KAAK,CAAC;gBAExC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC;gBAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,YAAY,CAAC,CAAC;gBAEzF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAClD,CAAC"}
package/jsr.json CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  {
4
4
  "name": "@s2-dev/streamstore",
5
- "version": "0.3.13",
5
+ "version": "0.3.17",
6
6
  "exports": {
7
7
  ".": "./src/index.ts",
8
8
  "./models/errors": "./src/models/errors/index.ts",
package/lib/config.d.ts CHANGED
@@ -27,8 +27,8 @@ export declare function serverURLFromOptions(options: SDKOptions): URL | null;
27
27
  export declare const SDK_METADATA: {
28
28
  readonly language: "typescript";
29
29
  readonly openapiDocVersion: "1.0.0";
30
- readonly sdkVersion: "0.3.13";
30
+ readonly sdkVersion: "0.3.17";
31
31
  readonly genVersion: "2.506.0";
32
- readonly userAgent: "speakeasy-sdk/typescript 0.3.13 2.506.0 1.0.0 @s2-dev/streamstore";
32
+ readonly userAgent: "speakeasy-sdk/typescript 0.3.17 2.506.0 1.0.0 @s2-dev/streamstore";
33
33
  };
34
34
  //# sourceMappingURL=config.d.ts.map
package/lib/config.js CHANGED
@@ -28,8 +28,8 @@ function serverURLFromOptions(options) {
28
28
  exports.SDK_METADATA = {
29
29
  language: "typescript",
30
30
  openapiDocVersion: "1.0.0",
31
- sdkVersion: "0.3.13",
31
+ sdkVersion: "0.3.17",
32
32
  genVersion: "2.506.0",
33
- userAgent: "speakeasy-sdk/typescript 0.3.13 2.506.0 1.0.0 @s2-dev/streamstore",
33
+ userAgent: "speakeasy-sdk/typescript 0.3.17 2.506.0 1.0.0 @s2-dev/streamstore",
34
34
  };
35
35
  //# sourceMappingURL=config.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@s2-dev/streamstore",
3
- "version": "0.3.13",
3
+ "version": "0.3.17",
4
4
  "author": "Speakeasy",
5
5
  "main": "./index.js",
6
6
  "sideEffects": false,
@@ -37,6 +37,7 @@ import { v4 as uuidv4 } from "uuid";
37
37
  import { basinDeleteStream } from "./funcs/basinDeleteStream";
38
38
  import { EventStream } from "./lib/event-streams";
39
39
  import { ClientKind, S2Cloud, S2Endpoints } from "./endpoints";
40
+ import { HTTPClient } from "./lib/http";
40
41
 
41
42
  export type ReadRequest = Omit<ReadRequestInner, "stream">;
42
43
  export type AppendRequest = Omit<AppendRequestInner, "stream">;
@@ -64,16 +65,39 @@ export * from "./endpoints";
64
65
 
65
66
  export type S2ClientConfig = {
66
67
  authToken?: string;
68
+ userAgent?: string;
67
69
  requestTimeout?: number;
68
70
  endpoints?: S2Endpoints;
69
71
  appedRetryPolicy?: AppendRetryPolicy;
70
72
  maxRetries?: number;
71
73
  initialBackoffMs?: number;
72
74
  maxBackoffMs?: number;
75
+ httpClient?: HTTPClient;
73
76
  };
74
77
 
78
+ /**
79
+ * Override the client level configuration for a specific operation.
80
+ *
81
+ * @remarks
82
+ * Only `authToken` can be overridden for now.
83
+ */
84
+ export type S2OperationConfig = {
85
+ authToken?: string;
86
+ };
87
+
88
+ /**
89
+ * Retry policy for appends.
90
+ */
75
91
  export enum AppendRetryPolicy {
92
+ /**
93
+ * Retry all eligible failures encountered during an append.
94
+ * This could result in append batches being duplicated on the stream.
95
+ */
76
96
  All,
97
+ /**
98
+ * Retry only failures with no side effects.
99
+ * Will not attempt to retry failures where it cannot be concluded whether an append may become durable, in order to prevent duplicates.
100
+ */
77
101
  NoSideEffects,
78
102
  }
79
103
 
@@ -81,12 +105,16 @@ const defaultS2ClientConfig: S2ClientConfig = {
81
105
  requestTimeout: 3000,
82
106
  endpoints: S2Endpoints.forCloud(S2Cloud.Aws),
83
107
  appedRetryPolicy: AppendRetryPolicy.All,
108
+ httpClient: new HTTPClient({
109
+ fetcher: async (request) => fetch(request),
110
+ }),
84
111
  };
85
112
 
86
113
 
87
114
  export class S2Client {
88
115
  private config: S2ClientConfig;
89
116
  private _account?: S2Account;
117
+
90
118
  get account(): S2Account {
91
119
  return (this._account ??= new S2Account(this.config));
92
120
  }
@@ -107,64 +135,80 @@ class S2Account {
107
135
  private readonly accountURLSuffx = "/v1alpha";
108
136
 
109
137
  constructor(config: S2ClientConfig) {
138
+ config.httpClient?.addHook("beforeRequest", (request) => {
139
+ if (config.userAgent !== undefined) {
140
+ request.headers.set("user-agent", config.userAgent ?? "s2-sdk-typescript");
141
+ }
142
+ });
110
143
  this._account = new InnerAccount({
111
144
  ...(config.authToken !== undefined && { bearerAuth: config.authToken }),
112
- ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout })
145
+ ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout }),
146
+ ...(config.httpClient !== undefined && { httpClient: config.httpClient }),
113
147
  });
114
148
  this.config = config;
115
149
  }
116
150
 
117
- get URL(): string | undefined {
118
- if (!this.config.endpoints) return undefined;
119
- return `https://${ClientKind.toAuthority({ kind: "Account" }, this.config.endpoints)}${this.accountURLSuffx}`;
151
+ get URL(): string {
152
+ return `https://${ClientKind.toAuthority({ kind: "Account" }, this.config.endpoints ?? S2Endpoints.forCloud(S2Cloud.Aws))}${this.accountURLSuffx}`;
120
153
  }
121
154
 
122
155
  basin(basinName: string): S2Basin {
123
156
  return new S2Basin(basinName, this.config);
124
157
  }
125
158
 
159
+ private overrideConfig(config?: S2OperationConfig) {
160
+ this.config.httpClient?.addHook("beforeRequest", (request) => {
161
+ if (config?.authToken !== undefined) {
162
+ request.headers.set("Authorization", `Bearer ${config.authToken}`);
163
+ }
164
+ });
165
+ }
166
+
126
167
  async listBasins(
127
- request?: ListBasinsRequest
168
+ request?: ListBasinsRequest,
169
+ opConfig?: S2OperationConfig,
128
170
  ): Promise<PageIterator<ListBasinsResponse, { cursor: string }>> {
129
- const url = this.URL;
171
+ this.overrideConfig(opConfig);
130
172
  return retryWithExponentialBackoff(
131
- () => this._account.listBasins(request ?? {}, url ? { serverURL: url } : {}),
173
+ () => this._account.listBasins(request ?? {}, {
174
+ serverURL: this.URL,
175
+ }),
132
176
  this.config.maxRetries,
133
177
  this.config.initialBackoffMs,
134
178
  this.config.maxBackoffMs
135
179
  );
136
180
  }
137
181
 
138
- async getBasinConfig(basin: string): Promise<BasinConfig | undefined> {
182
+ async getBasinConfig(basin: string, opConfig?: S2OperationConfig): Promise<BasinConfig | undefined> {
183
+ this.overrideConfig(opConfig);
139
184
  const _request: GetBasinConfigRequest = { basin };
140
- const url = this.URL;
141
185
  return retryWithExponentialBackoff(
142
- () => this._account.getBasinConfig(_request, url ? { serverURL: url } : {}),
186
+ () => this._account.getBasinConfig(_request, { serverURL: this.URL }),
143
187
  this.config.maxRetries,
144
188
  this.config.initialBackoffMs,
145
189
  this.config.maxBackoffMs
146
190
  );
147
191
  }
148
192
 
149
- async createBasin(basin: string, request?: CreateBasinRequest): Promise<BasinInfo | undefined> {
193
+ async createBasin(basin: string, request?: CreateBasinRequest, opConfig?: S2OperationConfig): Promise<BasinInfo | undefined> {
194
+ this.overrideConfig(opConfig);
150
195
  const _request: CreateBasinRequestInner = {
151
196
  basin,
152
197
  s2RequestToken: genS2RequestToken(),
153
198
  createBasinRequest: request ?? {},
154
199
  };
155
- const url = this.URL;
156
200
  return retryWithExponentialBackoff(
157
- () => this._account.createBasin(_request, url ? { serverURL: url } : {}),
201
+ () => this._account.createBasin(_request, { serverURL: this.URL }),
158
202
  this.config.maxRetries,
159
203
  this.config.initialBackoffMs,
160
204
  this.config.maxBackoffMs
161
205
  );
162
206
  }
163
207
 
164
- async deleteBasin(basin: string, if_exists?: boolean): Promise<void> {
165
- const url = this.URL;
208
+ async deleteBasin(basin: string, if_exists?: boolean, opConfig?: S2OperationConfig): Promise<void> {
209
+ this.overrideConfig(opConfig);
166
210
  const response = await retryWithExponentialBackoff(
167
- () => accountDeleteBasin(this._account, { basin }, url ? { serverURL: url } : {}),
211
+ () => accountDeleteBasin(this._account, { basin }, { serverURL: this.URL }),
168
212
  this.config.maxRetries,
169
213
  this.config.initialBackoffMs,
170
214
  this.config.maxBackoffMs
@@ -174,11 +218,11 @@ class S2Account {
174
218
  return;
175
219
  }
176
220
 
177
- async reconfigureBasin(basin: string, config: BasinConfig): Promise<BasinConfig | undefined> {
178
- const url = this.URL;
221
+ async reconfigureBasin(basin: string, config: BasinConfig, opConfig?: S2OperationConfig): Promise<BasinConfig | undefined> {
222
+ this.overrideConfig(opConfig);
179
223
  const _request: ReconfigureBasinRequest = { basin, basinConfig: config };
180
224
  return retryWithExponentialBackoff(
181
- () => this._account.reconfigureBasin(_request, url ? { serverURL: url } : {}),
225
+ () => this._account.reconfigureBasin(_request, { serverURL: this.URL }),
182
226
  this.config.maxRetries,
183
227
  this.config.initialBackoffMs,
184
228
  this.config.maxBackoffMs
@@ -199,9 +243,18 @@ class S2Basin {
199
243
  }
200
244
 
201
245
  constructor(basinName: string, config: S2ClientConfig) {
246
+ config.httpClient?.addHook("beforeRequest", (request) => {
247
+ if (config.userAgent !== undefined) {
248
+ request.headers.set("user-agent", config.userAgent ?? "s2-sdk-typescript");
249
+ }
250
+ if (config.endpoints?.basin?.kind === "Direct") {
251
+ request.headers.set("s2-basin", basinName);
252
+ }
253
+ });
202
254
  this._basin = new InnerBasin({
203
255
  ...(config.authToken !== undefined && { bearerAuth: config.authToken }),
204
- ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout })
256
+ ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout }),
257
+ ...(config.httpClient !== undefined && { httpClient: config.httpClient }),
205
258
  });
206
259
  this.config = config;
207
260
  this.clientKind = { kind: "Basin" as const, basin: basinName };
@@ -212,18 +265,32 @@ class S2Basin {
212
265
  return (this._stream ??= new Stream(this.basinName, streamName, this.config));
213
266
  }
214
267
 
268
+ private overrideConfig(config?: S2OperationConfig) {
269
+ this.config.httpClient?.addHook("beforeRequest", (request) => {
270
+ if (config?.authToken !== undefined) {
271
+ request.headers.set("Authorization", `Bearer ${config.authToken}`);
272
+ }
273
+ });
274
+ }
275
+
215
276
  async listStreams(
216
- request: ListStreamsRequest
277
+ request?: ListStreamsRequest,
278
+ opConfig?: S2OperationConfig,
217
279
  ): Promise<PageIterator<ListStreamsResponse, { cursor: string }>> {
280
+ this.overrideConfig(opConfig);
218
281
  return retryWithExponentialBackoff(
219
- () => this._basin.listStreams(request, { serverURL: this.URL }),
282
+ () => this._basin.listStreams(request ?? {}, { serverURL: this.URL }),
220
283
  this.config.maxRetries,
221
284
  this.config.initialBackoffMs,
222
285
  this.config.maxBackoffMs
223
286
  );
224
287
  }
225
288
 
226
- async getStreamConfig(stream: string): Promise<StreamConfig | undefined> {
289
+ async getStreamConfig(
290
+ stream: string,
291
+ opConfig?: S2OperationConfig
292
+ ): Promise<StreamConfig | undefined> {
293
+ this.overrideConfig(opConfig);
227
294
  return retryWithExponentialBackoff(
228
295
  () => this._basin.getStreamConfig({ stream }, { serverURL: this.URL }),
229
296
  this.config.maxRetries,
@@ -232,7 +299,8 @@ class S2Basin {
232
299
  );
233
300
  }
234
301
 
235
- async createStream(stream: string, request?: CreateStreamRequest): Promise<StreamInfo | undefined> {
302
+ async createStream(stream: string, request?: CreateStreamRequest, opConfig?: S2OperationConfig): Promise<StreamInfo | undefined> {
303
+ this.overrideConfig(opConfig);
236
304
  const _request: CreateStreamRequestInner = {
237
305
  stream,
238
306
  s2RequestToken: genS2RequestToken(),
@@ -246,7 +314,8 @@ class S2Basin {
246
314
  );
247
315
  }
248
316
 
249
- async deleteStream(stream: string, if_exists?: boolean): Promise<void | undefined> {
317
+ async deleteStream(stream: string, if_exists?: boolean, opConfig?: S2OperationConfig): Promise<void | undefined> {
318
+ this.overrideConfig(opConfig);
250
319
  const response = await retryWithExponentialBackoff(
251
320
  () => basinDeleteStream(this._basin, { stream }, { serverURL: this.URL }),
252
321
  this.config.maxRetries,
@@ -258,7 +327,8 @@ class S2Basin {
258
327
  return;
259
328
  }
260
329
 
261
- async reconfigureStream(stream: string, config: StreamConfig): Promise<StreamConfig> {
330
+ async reconfigureStream(stream: string, config: StreamConfig, opConfig?: S2OperationConfig): Promise<StreamConfig> {
331
+ this.overrideConfig(opConfig);
262
332
  return retryWithExponentialBackoff(
263
333
  () => this._basin.reconfigureStream({ stream, streamConfig: config }, { serverURL: this.URL }),
264
334
  this.config.maxRetries,
@@ -279,23 +349,42 @@ class Stream {
279
349
  return `https://${ClientKind.toAuthority(this.clientKind, this.config.endpoints ?? S2Endpoints.forCloud(S2Cloud.Aws))}${this.basinURLSuffx}`;
280
350
  }
281
351
 
352
+ private overrideConfig(config?: S2OperationConfig) {
353
+ this.config.httpClient?.addHook("beforeRequest", (request) => {
354
+ if (config?.authToken !== undefined) {
355
+ request.headers.set("Authorization", `Bearer ${config.authToken}`);
356
+ }
357
+ });
358
+ }
359
+
282
360
  constructor(basinName: string, streamName: string, config: S2ClientConfig) {
283
361
  this.config = config;
284
362
  this.clientKind = { kind: "Basin" as const, basin: basinName };
285
363
  this.streamName = streamName;
364
+ config.httpClient?.addHook("beforeRequest", (request) => {
365
+ if (config.userAgent !== undefined) {
366
+ request.headers.set("user-agent", config.userAgent ?? "s2-sdk-typescript");
367
+ }
368
+ if (config.endpoints?.basin?.kind === "Direct") {
369
+ request.headers.set("s2-basin", basinName);
370
+ }
371
+ });
286
372
  this._stream = new InnerStream({
287
373
  ...(config.authToken !== undefined && { bearerAuth: config.authToken }),
288
- ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout })
374
+ ...(config.requestTimeout !== undefined && { timeoutMs: config.requestTimeout }),
375
+ ...(config.httpClient !== undefined && { httpClient: config.httpClient })
289
376
  });
290
377
  }
291
378
 
292
- async checkTail(): Promise<CheckTailResponse> {
379
+ async checkTail(opConfig?: S2OperationConfig): Promise<CheckTailResponse> {
380
+ this.overrideConfig(opConfig);
293
381
  return (
294
382
  await this._stream.checkTail({ stream: this.streamName }, { serverURL: this.basinURL })
295
383
  );
296
384
  }
297
385
 
298
- async append(request: AppendRequest): Promise<AppendOutput> {
386
+ async append(request: AppendRequest, opConfig?: S2OperationConfig): Promise<AppendOutput> {
387
+ this.overrideConfig(opConfig);
299
388
  switch (this.config.appedRetryPolicy) {
300
389
  case AppendRetryPolicy.All:
301
390
  case undefined:
@@ -316,13 +405,15 @@ class Stream {
316
405
  }
317
406
  }
318
407
 
319
- async read(request: ReadRequest): Promise<Output> {
408
+ async read(request: ReadRequest, opConfig?: S2OperationConfig): Promise<Output> {
409
+ this.overrideConfig(opConfig);
320
410
  return (
321
411
  await this._stream.read({ ...request, stream: this.streamName }, { serverURL: this.basinURL }) as Output
322
412
  );
323
413
  }
324
414
 
325
- async *readStream(request: ReadRequest): AsyncGenerator<ReadResponse, void, undefined> {
415
+ async *readStream(request: ReadRequest, opConfig?: S2OperationConfig): AsyncGenerator<ReadResponse, void, undefined> {
416
+ this.overrideConfig(opConfig);
326
417
  let currentRequest: ReadRequest = { ...request };
327
418
  let initialBackoffMs = this.config.initialBackoffMs ?? 100;
328
419
  const maxBackoffMs = 5000;
package/src/lib/config.ts CHANGED
@@ -54,8 +54,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
54
54
  export const SDK_METADATA = {
55
55
  language: "typescript",
56
56
  openapiDocVersion: "1.0.0",
57
- sdkVersion: "0.3.13",
57
+ sdkVersion: "0.3.17",
58
58
  genVersion: "2.506.0",
59
59
  userAgent:
60
- "speakeasy-sdk/typescript 0.3.13 2.506.0 1.0.0 @s2-dev/streamstore",
60
+ "speakeasy-sdk/typescript 0.3.17 2.506.0 1.0.0 @s2-dev/streamstore",
61
61
  } as const;