@vertesia/api-fetch-client 1.4.0-dev.20260615.042549Z → 1.4.0-dev.20260629.130134Z

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
@@ -165,6 +165,29 @@ await client.post('/workflow/execute', {
165
165
  await client.get('/no-retry', { retryPolicy: false });
166
166
  ```
167
167
 
168
+ ## Timeouts
169
+
170
+ No request timeout is applied by default. Set a default on the client (applies to every request) and/or override it per request. The timeout aborts the **whole** request — connection, response headers, **and** body consumption (JSON parse) — using a browser-standard `AbortSignal`, so it behaves the same in the browser and in Node (no `undici`-specific configuration).
171
+
172
+ ```typescript
173
+ // Default timeout (ms) for every request on this client.
174
+ const client = new FetchClient('https://api.example.com').withTimeout(60_000);
175
+
176
+ // Override for a single slow request (e.g. one that blocks on an LLM).
177
+ await client.post('/long-running', { payload, timeoutMs: 30 * 60_000 });
178
+
179
+ // Disable the client default for one request.
180
+ await client.get('/no-timeout', { timeoutMs: false });
181
+
182
+ // Combine with a caller-supplied AbortSignal — whichever aborts first wins.
183
+ await client.get('/data', { signal: controller.signal, timeoutMs: 5_000 });
184
+ ```
185
+
186
+ - `timeoutMs`: a positive number sets the timeout; `false`/`null`/`0` disables it for that request (overriding the client default); omitted falls back to the client default (`withTimeout` / `defaultTimeoutMs`).
187
+ - On timeout the request rejects as a connection failure. When a retry policy is enabled, a timed-out attempt is retried like any other connection error, with a **fresh deadline per attempt**.
188
+ - SSE requests (`reader: 'sse'`) are never given a total-request timeout — they are long-lived by design; apply your own idle/close handling to the stream.
189
+ - `ApiTopic` sub-clients inherit the parent client's default timeout, so setting it once on the root client covers all topics.
190
+
168
191
  ### Custom Error Factory
169
192
 
170
193
  Transform errors before they're thrown:
@@ -281,6 +304,9 @@ The main client class for making HTTP requests.
281
304
  | `payload` | `object \| BodyInit` | Request body |
282
305
  | `reader` | `'sse' \| function` | Custom response reader |
283
306
  | `jsonPayload` | `boolean` | Auto-serialize payload as JSON (default: true) |
307
+ | `retryPolicy` | `IRequestRetryPolicy \| false` | Per-request retry policy; `false` disables the client default |
308
+ | `timeoutMs` | `number \| false \| null` | Per-request timeout (ms). Positive sets it; `false`/`null`/`0` disables; omitted uses the client default |
309
+ | `signal` | `AbortSignal` | Caller abort signal, merged with the timeout signal |
284
310
 
285
311
  ### Error Classes
286
312
 
package/lib/base.d.ts CHANGED
@@ -15,6 +15,13 @@ export interface IRequestRetryPolicy {
15
15
  * HTTP response statuses that should be retried. Defaults to 502, 503, and 504.
16
16
  */
17
17
  statuses?: number[];
18
+ /**
19
+ * Also retry any 5xx whose body is not JSON — e.g. an HTML error page from a load balancer,
20
+ * gateway, or Cloud Run ("no available instance" / "try again in 30 seconds"). These originate
21
+ * at the edge, not the application (which serializes its errors as JSON), so they are transient
22
+ * and safe to retry even when the exact status (often 500) is not in `statuses`. Defaults to true.
23
+ */
24
+ retryNonJsonServerErrors?: boolean;
18
25
  /**
19
26
  * Retry network failures thrown by fetch. Defaults to true.
20
27
  */
@@ -36,6 +43,7 @@ type NormalizedRetryPolicy = {
36
43
  attempts: number;
37
44
  methods: Set<string>;
38
45
  statuses: Set<number>;
46
+ retryNonJsonServerErrors: boolean;
39
47
  retryOnConnectionError: boolean;
40
48
  baseDelayMs: number;
41
49
  maxDelayMs: number;
@@ -55,6 +63,18 @@ export interface IRequestParams {
55
63
  * Set to false to disable a client-level retry policy for this request.
56
64
  */
57
65
  retryPolicy?: IRequestRetryPolicy | false | null;
66
+ /**
67
+ * Per-request timeout in milliseconds. Aborts the whole request — connection, response headers,
68
+ * AND body consumption (JSON parse) — via a browser-standard AbortSignal. A positive number sets
69
+ * the timeout; `false`/`null`/`0` disables it for this request (overriding any client default).
70
+ * When omitted, the client-level default (`withTimeout` / `defaultTimeoutMs`) applies.
71
+ * Not applied to SSE (`reader: 'sse'`) requests, which are long-lived by design.
72
+ */
73
+ timeoutMs?: number | false | null;
74
+ /**
75
+ * Caller-supplied AbortSignal. Merged with the timeout signal — whichever aborts first wins.
76
+ */
77
+ signal?: AbortSignal;
58
78
  }
59
79
  export interface IRequestParamsWithPayload extends IRequestParams {
60
80
  payload?: object | BodyInit | null;
@@ -66,6 +86,7 @@ export declare abstract class ClientBase {
66
86
  errorFactory: (err: RequestError) => Error;
67
87
  verboseErrors: boolean;
68
88
  retryPolicy?: IRequestRetryPolicy;
89
+ defaultTimeoutMs?: number;
69
90
  abstract get headers(): Record<string, string>;
70
91
  constructor(baseUrl: string, fetchImpl?: FETCH_FN | Promise<FETCH_FN>);
71
92
  /**
@@ -75,6 +96,19 @@ export declare abstract class ClientBase {
75
96
  throwError(err: RequestError): never;
76
97
  withRetryPolicy(policy?: IRequestRetryPolicy | null): this;
77
98
  getRetryPolicy(): IRequestRetryPolicy | undefined;
99
+ /**
100
+ * Set a default request timeout (ms) applied to every request unless overridden per-request via
101
+ * `timeoutMs`. Pass `false`/`null`/`0` to clear it. The timeout aborts the whole request
102
+ * (connection + response headers + body consumption) via AbortSignal.
103
+ */
104
+ withTimeout(timeoutMs?: number | false | null): this;
105
+ getTimeout(): number | undefined;
106
+ /**
107
+ * Resolve the effective timeout for a request: per-request `timeoutMs` wins (a positive number
108
+ * sets it; `false`/`null`/`0` disables it), otherwise the client default applies. SSE streams are
109
+ * never given a total-request timeout.
110
+ */
111
+ protected resolveTimeout(params: IRequestParams | undefined): number | undefined;
78
112
  /**
79
113
  * Resolve a path to a full URL. If the path is already an absolute URL
80
114
  * (starts with http:// or https://), it is returned as-is.
package/lib/base.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
package/lib/base.js CHANGED
@@ -29,6 +29,19 @@ function isInvalidJsonPayload(payload) {
29
29
  function isReplayableBody(body) {
30
30
  return !body || typeof ReadableStream === 'undefined' || !(body instanceof ReadableStream);
31
31
  }
32
+ /**
33
+ * True for a 5xx whose Content-Type is not JSON. The application serializes its errors as JSON, so a
34
+ * non-JSON 5xx (HTML/text, or no content-type) is an edge/LB/gateway failure — e.g. a Cloud Run
35
+ * "no available instance" or GFE "try again in 30 seconds" page — which is transient and retryable.
36
+ * Reads only headers (no body consumption), so it is safe to call before deciding to retry.
37
+ */
38
+ function isNonJsonServerError(res) {
39
+ if (res.status < 500) {
40
+ return false;
41
+ }
42
+ const contentType = (res.headers.get('content-type') ?? '').toLowerCase();
43
+ return !contentType.includes('json');
44
+ }
32
45
  function normalizeRetryPolicy(policy) {
33
46
  const attempts = Math.max(1, Math.floor(policy.attempts ?? DEFAULT_RETRY_ATTEMPTS));
34
47
  const baseDelayMs = Math.max(0, policy.baseDelayMs ?? DEFAULT_RETRY_BASE_DELAY_MS);
@@ -37,6 +50,7 @@ function normalizeRetryPolicy(policy) {
37
50
  attempts,
38
51
  methods: new Set((policy.methods ?? DEFAULT_RETRY_METHODS).map((method) => method.toUpperCase())),
39
52
  statuses: new Set(policy.statuses ?? DEFAULT_RETRY_STATUSES),
53
+ retryNonJsonServerErrors: policy.retryNonJsonServerErrors ?? true,
40
54
  retryOnConnectionError: policy.retryOnConnectionError ?? true,
41
55
  baseDelayMs,
42
56
  maxDelayMs,
@@ -66,6 +80,55 @@ function retryDelayMs(policy, attempt, res) {
66
80
  function toError(err) {
67
81
  return err instanceof Error ? err : new Error(String(err));
68
82
  }
83
+ /**
84
+ * True for an AbortSignal-driven failure (caller abort or our timeout). Checks `name` rather than
85
+ * `instanceof Error` because runtimes surface these as a `DOMException` (`TimeoutError`/`AbortError`),
86
+ * which is not always an `Error` subclass in browsers.
87
+ */
88
+ function isAbortError(err) {
89
+ return (typeof err === 'object' &&
90
+ err !== null &&
91
+ 'name' in err &&
92
+ (err.name === 'TimeoutError' || err.name === 'AbortError'));
93
+ }
94
+ /**
95
+ * Browser + Node safe `AbortSignal.timeout(ms)`, with a fallback for runtimes that lack it.
96
+ */
97
+ function timeoutSignal(ms) {
98
+ const timeoutFn = AbortSignal.timeout;
99
+ if (typeof timeoutFn === 'function') {
100
+ return timeoutFn(ms);
101
+ }
102
+ const controller = new AbortController();
103
+ setTimeout(() => controller.abort(new DOMException('The operation timed out', 'TimeoutError')), ms);
104
+ return controller.signal;
105
+ }
106
+ /**
107
+ * Merge abort signals (caller + timeout). Uses the standard `AbortSignal.any` when available, with a
108
+ * manual fallback for older runtimes. Returns undefined when there is nothing to combine.
109
+ */
110
+ function combineAbortSignals(signals) {
111
+ const list = signals.filter((s) => !!s);
112
+ if (list.length === 0) {
113
+ return undefined;
114
+ }
115
+ if (list.length === 1) {
116
+ return list[0];
117
+ }
118
+ const anyFn = AbortSignal.any;
119
+ if (typeof anyFn === 'function') {
120
+ return anyFn(list);
121
+ }
122
+ const controller = new AbortController();
123
+ for (const s of list) {
124
+ if (s.aborted) {
125
+ controller.abort(s.reason);
126
+ break;
127
+ }
128
+ s.addEventListener('abort', () => controller.abort(s.reason), { once: true });
129
+ }
130
+ return controller.signal;
131
+ }
69
132
  async function discardBody(res) {
70
133
  try {
71
134
  await res.body?.cancel();
@@ -80,6 +143,7 @@ export class ClientBase {
80
143
  errorFactory = (err) => err;
81
144
  verboseErrors = true;
82
145
  retryPolicy;
146
+ defaultTimeoutMs;
83
147
  constructor(baseUrl, fetchImpl) {
84
148
  this.baseUrl = removeTrailingSlash(baseUrl);
85
149
  this._fetch = fetchPromise(fetchImpl);
@@ -98,6 +162,37 @@ export class ClientBase {
98
162
  getRetryPolicy() {
99
163
  return this.retryPolicy;
100
164
  }
165
+ /**
166
+ * Set a default request timeout (ms) applied to every request unless overridden per-request via
167
+ * `timeoutMs`. Pass `false`/`null`/`0` to clear it. The timeout aborts the whole request
168
+ * (connection + response headers + body consumption) via AbortSignal.
169
+ */
170
+ withTimeout(timeoutMs) {
171
+ this.defaultTimeoutMs = typeof timeoutMs === 'number' && timeoutMs > 0 ? timeoutMs : undefined;
172
+ return this;
173
+ }
174
+ getTimeout() {
175
+ return this.defaultTimeoutMs;
176
+ }
177
+ /**
178
+ * Resolve the effective timeout for a request: per-request `timeoutMs` wins (a positive number
179
+ * sets it; `false`/`null`/`0` disables it), otherwise the client default applies. SSE streams are
180
+ * never given a total-request timeout.
181
+ */
182
+ resolveTimeout(params) {
183
+ if (params?.reader === 'sse') {
184
+ return undefined;
185
+ }
186
+ const requestTimeout = params?.timeoutMs;
187
+ if (requestTimeout === false || requestTimeout === null) {
188
+ return undefined;
189
+ }
190
+ if (typeof requestTimeout === 'number') {
191
+ return requestTimeout > 0 ? requestTimeout : undefined;
192
+ }
193
+ const clientTimeout = this.getTimeout();
194
+ return clientTimeout && clientTimeout > 0 ? clientTimeout : undefined;
195
+ }
101
196
  /**
102
197
  * Resolve a path to a full URL. If the path is already an absolute URL
103
198
  * (starts with http:// or https://), it is returned as-is.
@@ -186,6 +281,11 @@ export class ClientBase {
186
281
  }
187
282
  })
188
283
  .catch((err) => {
284
+ // A timeout/abort during body consumption is a real failure — surface it instead of
285
+ // swallowing it into an error payload that would otherwise be returned as the result.
286
+ if (isAbortError(err)) {
287
+ throw err;
288
+ }
189
289
  return {
190
290
  status: res.status,
191
291
  error: 'Unable to load response content',
@@ -247,12 +347,21 @@ export class ClientBase {
247
347
  headers.accept = 'text/event-stream';
248
348
  }
249
349
  const normalizedMethod = method.toUpperCase();
350
+ // Resolved once; createRequestInit() then mints a FRESH timeout signal per attempt so each
351
+ // retry gets its own deadline. The signal is set on the Request, so it bounds the connection,
352
+ // the wait for response headers, AND body consumption (handleResponse reads res.text()).
353
+ const timeoutMs = this.resolveTimeout(params);
250
354
  const createRequestInit = () => {
251
- return {
355
+ const signal = combineAbortSignals([params?.signal, timeoutMs ? timeoutSignal(timeoutMs) : undefined]);
356
+ const init = {
252
357
  method: normalizedMethod,
253
358
  headers: Object.assign({}, headers),
254
359
  body: body,
255
360
  };
361
+ if (signal) {
362
+ init.signal = signal;
363
+ }
364
+ return init;
256
365
  };
257
366
  const retryPolicy = this.resolveRetryPolicy(params);
258
367
  const fetch = await this._fetch;
@@ -315,10 +424,8 @@ export class ClientBase {
315
424
  return policy.attempts > 1 ? policy : undefined;
316
425
  }
317
426
  shouldRetryResponse(policy, method, attempt, replayableBody, res) {
318
- return (attempt < policy.attempts - 1 &&
319
- replayableBody &&
320
- policy.methods.has(method) &&
321
- policy.statuses.has(res.status));
427
+ const retryableStatus = policy.statuses.has(res.status) || (policy.retryNonJsonServerErrors && isNonJsonServerError(res));
428
+ return attempt < policy.attempts - 1 && replayableBody && policy.methods.has(method) && retryableStatus;
322
429
  }
323
430
  shouldRetryConnectionError(policy, method, attempt, replayableBody) {
324
431
  return (attempt < policy.attempts - 1 &&
package/lib/base.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqB,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAwB,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA8CzE,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1E,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/C,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAExC,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACvD,CAAC;AA+BD,MAAM,UAAU,YAAY,CAAC,SAAwC;IACjE,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACJ,wBAAwB;QACxB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,0BAA0B,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;AACjH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA0B;IAChD,OAAO,CAAC,IAAI,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,YAAY,cAAc,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA2B;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,sBAAsB,CAAC,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,IAAI,0BAA0B,CAAC,CAAC;IAC1F,OAAO;QACH,QAAQ;QACR,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACjG,QAAQ,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,sBAAsB,CAAC;QAC5D,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,IAAI,IAAI;QAC7D,WAAW;QACX,UAAU;QACV,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;KAChC,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAa;IACpC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,MAA6B,EAAE,OAAe,EAAE,GAAc;IAChF,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrE,CAAC;AAED,SAAS,OAAO,CAAC,GAAY;IACzB,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAa;IACpC,IAAI,CAAC;QACD,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACL,oEAAoE;IACxE,CAAC;AACL,CAAC;AAED,MAAM,OAAgB,UAAU;IAC5B,MAAM,CAAoB;IAC1B,OAAO,CAAS;IAChB,YAAY,GAAiC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;IAC1D,aAAa,GAAG,IAAI,CAAC;IACrB,WAAW,CAAuB;IAIlC,YAAY,OAAe,EAAE,SAAwC;QACjE,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,GAAiB;QACxB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,eAAe,CAAC,MAAmC;QAC/C,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,SAAS,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAY;QACf,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5D,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,GAAG,CAAc,IAAY,EAAE,MAAuB;QAClD,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAc,IAAY,EAAE,MAAuB;QAClD,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,MAAuB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAc,IAAY,EAAE,MAAkC;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,GAAG,CAAc,IAAY,EAAE,MAAkC;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,GAAW,EAAE,IAAiB;QACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,mBAAmB,CAAC,IAAa,EAAE,IAAc,IAAS,CAAC;IAE3D,iBAAiB,CAAC,GAAY,EAAE,GAAa,EAAE,OAAgB;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,OAAO,GAAG,iBAAiB,MAAM,EAAE,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,IAAI,qBAAqB,CAAC;YACrC,CAAC;iBAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC9C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACpC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;qBAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAC9E,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;gBACpC,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAa;QAC/B,OAAO,GAAG;aACL,IAAI,EAAE;aACN,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACX,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,SAAS,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC;oBACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACpB,OAAO;wBACH,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,KAAK,EAAE,0BAA0B;wBACjC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;wBACzD,IAAI,EAAE,IAAI;qBACb,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACpB,OAAO;gBACH,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,iCAAiC;gBACxC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aAC5D,CAAC;QACN,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;OAGG;IACH,cAAc,CACV,GAAY,EACZ,GAAa,EACb,MAA6C;QAE7C,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACjB,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC1B,OAAO,GAAG,CAAC,GAAG,CAAM,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACJ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAmB,CAAC;YAC3D,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC9C,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACT,OAAO,OAAY,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAc,MAAc,EAAE,IAAY,EAAE,MAAkC;QACvF,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAChB,GAAG,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,CAAC;QACtC,IAAI,aAAa,EAAE,CAAC;YAChB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACpD,CAAC;QACL,CAAC;QACD,IAAI,IAA0B,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC;QAChC,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;gBACzC,IAAI,GAAG,OAAmB,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACvE,IAAI,CAAC,CAAC,cAAc,IAAI,OAAO,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;gBACjD,CAAC;YACL,CAAC;QACL,CAAC;QACD,wEAAwE;QACxE,IAAI,MAAM,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,GAAG,mBAAmB,CAAC;QACzC,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,iBAAiB,GAAG,GAAgB,EAAE;YACxC,OAAO;gBACH,MAAM,EAAE,gBAAgB;gBACxB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;gBACnC,IAAI,EAAE,IAAI;aACb,CAAC;QACN,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;QAEhC,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC/D,IAAI,GAAa,CAAC;YAClB,IAAI,CAAC;gBACD,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;gBAClD,IAAI,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC,cAAc,CAAI,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,OAA4B,CAAC;QACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC/D,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,GAAa,CAAC;YAClB,IAAI,CAAC;gBACD,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;oBAC3F,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;oBAClD,IAAI,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACjD,SAAS;YACb,CAAC;YACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxF,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;gBACvB,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBACtD,SAAS;YACb,CAAC;YACD,OAAO,IAAI,CAAC,cAAc,CAAI,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,UAAU,CACX,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,gCAAgC,gBAAgB,IAAI,GAAG,EAAE,CAAC,CAAC,CACrG,CAAC;QACN,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,gBAAgB,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/E,CAAC;IAES,kBAAkB,CAAC,MAA6C;QACtE,IAAI,MAAM,EAAE,MAAM,KAAK,KAAK,IAAI,MAAM,EAAE,WAAW,KAAK,KAAK,IAAI,MAAM,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;YAC5F,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,EAAE,WAAW,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAChC,GAAG,YAAY;YACf,GAAG,aAAa;SACnB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IAEO,mBAAmB,CACvB,MAA6B,EAC7B,MAAc,EACd,OAAe,EACf,cAAuB,EACvB,GAAa;QAEb,OAAO,CACH,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC;YAC7B,cAAc;YACd,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAClC,CAAC;IACN,CAAC;IAEO,0BAA0B,CAC9B,MAA6B,EAC7B,MAAc,EACd,OAAe,EACf,cAAuB;QAEvB,OAAO,CACH,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC;YAC7B,cAAc;YACd,MAAM,CAAC,sBAAsB;YAC7B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAC7B,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,MAA6B,EAAE,OAAe,EAAE,GAAc;QAClF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,UAAU,CACZ,MAAc,EACd,IAAY,EACZ,MAA6C,EAC7C,OAAyC;QAEzC,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;YAC7C,GAAG,MAAM;YACT,MAAM,EAAE,KAAK;SAChB,CAAC,CAAoC,CAAC;QAEvC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,SAAsC,CAAC;QAE3C,IAAI,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;gBACV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAChB,SAAS,GAAG,KAAK,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,MAAM,CAAC,WAAW,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAkB,EAAE,IAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;CACJ"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqB,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAwB,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAsDzE,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1E,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/C,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAExC,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACvD,CAAC;AA2CD,MAAM,UAAU,YAAY,CAAC,SAAwC;IACjE,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACJ,wBAAwB;QACxB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,0BAA0B,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;AACjH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA0B;IAChD,OAAO,CAAC,IAAI,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,YAAY,cAAc,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,GAAa;IACvC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1E,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA2B;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,sBAAsB,CAAC,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,IAAI,2BAA2B,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,IAAI,0BAA0B,CAAC,CAAC;IAC1F,OAAO;QACH,QAAQ;QACR,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACjG,QAAQ,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,sBAAsB,CAAC;QAC5D,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,IAAI,IAAI;QACjE,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,IAAI,IAAI;QAC7D,WAAW;QACX,UAAU;QACV,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;KAChC,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAa;IACpC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,MAA6B,EAAE,OAAe,EAAE,GAAc;IAChF,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrE,CAAC;AAED,SAAS,OAAO,CAAC,GAAY;IACzB,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,GAAY;IAC9B,OAAO,CACH,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,MAAM,IAAI,GAAG;QACb,CAAE,GAAyB,CAAC,IAAI,KAAK,cAAc,IAAK,GAAyB,CAAC,IAAI,KAAK,YAAY,CAAC,CAC3G,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,EAAU;IAC7B,MAAM,SAAS,GAAI,WAAoE,CAAC,OAAO,CAAC;IAChG,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,yBAAyB,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpG,OAAO,UAAU,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,OAAuC;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAI,WAAsE,CAAC,GAAG,CAAC;IAC1F,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACZ,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM;QACV,CAAC;QACD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAa;IACpC,IAAI,CAAC;QACD,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACL,oEAAoE;IACxE,CAAC;AACL,CAAC;AAED,MAAM,OAAgB,UAAU;IAC5B,MAAM,CAAoB;IAC1B,OAAO,CAAS;IAChB,YAAY,GAAiC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;IAC1D,aAAa,GAAG,IAAI,CAAC;IACrB,WAAW,CAAuB;IAClC,gBAAgB,CAAU;IAI1B,YAAY,OAAe,EAAE,SAAwC;QACjE,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,GAAiB;QACxB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,eAAe,CAAC,MAAmC;QAC/C,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,SAAS,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,SAAiC;QACzC,IAAI,CAAC,gBAAgB,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACO,cAAc,CAAC,MAAkC;QACvD,IAAI,MAAM,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,EAAE,SAAS,CAAC;QACzC,IAAI,cAAc,KAAK,KAAK,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,OAAO,aAAa,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAY;QACf,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5D,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,GAAG,CAAc,IAAY,EAAE,MAAuB;QAClD,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAc,IAAY,EAAE,MAAuB;QAClD,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,MAAuB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAc,IAAY,EAAE,MAAkC;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,GAAG,CAAc,IAAY,EAAE,MAAkC;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,GAAW,EAAE,IAAiB;QACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,mBAAmB,CAAC,IAAa,EAAE,IAAc,IAAS,CAAC;IAE3D,iBAAiB,CAAC,GAAY,EAAE,GAAa,EAAE,OAAgB;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,OAAO,GAAG,iBAAiB,MAAM,EAAE,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,IAAI,qBAAqB,CAAC;YACrC,CAAC;iBAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC9C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACpC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;qBAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAC9E,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;gBACpC,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAa;QAC/B,OAAO,GAAG;aACL,IAAI,EAAE;aACN,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACX,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,SAAS,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC;oBACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACpB,OAAO;wBACH,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,KAAK,EAAE,0BAA0B;wBACjC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;wBACzD,IAAI,EAAE,IAAI;qBACb,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACpB,oFAAoF;YACpF,sFAAsF;YACtF,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,GAAG,CAAC;YACd,CAAC;YACD,OAAO;gBACH,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,iCAAiC;gBACxC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aAC5D,CAAC;QACN,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;OAGG;IACH,cAAc,CACV,GAAY,EACZ,GAAa,EACb,MAA6C;QAE7C,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACjB,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC1B,OAAO,GAAG,CAAC,GAAG,CAAM,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACJ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAmB,CAAC;YAC3D,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC9C,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACT,OAAO,OAAY,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAc,MAAc,EAAE,IAAY,EAAE,MAAkC;QACvF,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAChB,GAAG,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,CAAC;QACtC,IAAI,aAAa,EAAE,CAAC;YAChB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACpD,CAAC;QACL,CAAC;QACD,IAAI,IAA0B,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC;QAChC,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;gBACzC,IAAI,GAAG,OAAmB,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACvE,IAAI,CAAC,CAAC,cAAc,IAAI,OAAO,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;gBACjD,CAAC;YACL,CAAC;QACL,CAAC;QACD,wEAAwE;QACxE,IAAI,MAAM,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,GAAG,mBAAmB,CAAC;QACzC,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9C,2FAA2F;QAC3F,8FAA8F;QAC9F,yFAAyF;QACzF,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,iBAAiB,GAAG,GAAgB,EAAE;YACxC,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACvG,MAAM,IAAI,GAAgB;gBACtB,MAAM,EAAE,gBAAgB;gBACxB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;gBACnC,IAAI,EAAE,IAAI;aACb,CAAC;YACF,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;QAEhC,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC/D,IAAI,GAAa,CAAC;YAClB,IAAI,CAAC;gBACD,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;gBAClD,IAAI,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC,cAAc,CAAI,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,OAA4B,CAAC;QACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC/D,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,GAAa,CAAC;YAClB,IAAI,CAAC;gBACD,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;oBAC3F,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;oBAClD,IAAI,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACjD,SAAS;YACb,CAAC;YACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxF,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;gBACvB,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBACtD,SAAS;YACb,CAAC;YACD,OAAO,IAAI,CAAC,cAAc,CAAI,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,UAAU,CACX,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,gCAAgC,gBAAgB,IAAI,GAAG,EAAE,CAAC,CAAC,CACrG,CAAC;QACN,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,gBAAgB,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/E,CAAC;IAES,kBAAkB,CAAC,MAA6C;QACtE,IAAI,MAAM,EAAE,MAAM,KAAK,KAAK,IAAI,MAAM,EAAE,WAAW,KAAK,KAAK,IAAI,MAAM,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;YAC5F,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,EAAE,WAAW,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAChC,GAAG,YAAY;YACf,GAAG,aAAa;SACnB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IAEO,mBAAmB,CACvB,MAA6B,EAC7B,MAAc,EACd,OAAe,EACf,cAAuB,EACvB,GAAa;QAEb,MAAM,eAAe,GACjB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACtG,OAAO,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,cAAc,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC;IAC5G,CAAC;IAEO,0BAA0B,CAC9B,MAA6B,EAC7B,MAAc,EACd,OAAe,EACf,cAAuB;QAEvB,OAAO,CACH,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC;YAC7B,cAAc;YACd,MAAM,CAAC,sBAAsB;YAC7B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAC7B,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,MAA6B,EAAE,OAAe,EAAE,GAAc;QAClF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,UAAU,CACZ,MAAc,EACd,IAAY,EACZ,MAA6C,EAC7C,OAAyC;QAEzC,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;YAC7C,GAAG,MAAM;YACT,MAAM,EAAE,KAAK;SAChB,CAAC,CAAoC,CAAC;QAEvC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,SAAsC,CAAC;QAE3C,IAAI,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;gBACV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAChB,SAAS,GAAG,KAAK,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,MAAM,CAAC,WAAW,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAkB,EAAE,IAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;CACJ"}
package/lib/client.d.ts CHANGED
@@ -30,6 +30,7 @@ export declare abstract class ApiTopic extends ClientBase {
30
30
  handleResponse<T = unknown>(req: Request, res: Response, params: IRequestParamsWithPayload | undefined): T | Promise<T>;
31
31
  handleFetchResponse(req: Request, res: Response): void;
32
32
  getRetryPolicy(): import("./base.js").IRequestRetryPolicy | undefined;
33
+ getTimeout(): number | undefined;
33
34
  get headers(): Record<string, string>;
34
35
  }
35
36
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqBhD,qBAAa,mBAAmB,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAE,SAAQ,UAAU;IACjF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnD,QAAQ,CAAC,EAAE,QAAQ,CAAC;gBAER,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMrE,IAAI,cAAc,2BAMjB;IAED;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;IAKxD,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,KAAK,GAExB,CAAC;IAG/B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAMZ,CAAC;IAG/B,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAQb,CAAC;IAG/B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;IAQ1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAelD,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;CAIzD;AAED,qBAAa,WAAY,SAAQ,mBAAmB,CAAC,WAAW,CAAC;CAAG;AAEpE,8BAAsB,QAAS,SAAQ,UAAU;IAElC,MAAM,EAAE,UAAU;gBAAlB,MAAM,EAAE,UAAU,EACzB,QAAQ,EAAE,MAAM;IAUpB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,cAAc,CAAC,CAAC,GAAG,OAAO,EACtB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,yBAAyB,GAAG,SAAS,GAC9C,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IAItD,cAAc;IAId,IAAI,OAAO,2BAEV;CACJ"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqBhD,qBAAa,mBAAmB,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAE,SAAQ,UAAU;IACjF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnD,QAAQ,CAAC,EAAE,QAAQ,CAAC;gBAER,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMrE,IAAI,cAAc,2BAMjB;IAED;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;IAKxD,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,KAAK,GAExB,CAAC;IAG/B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAMZ,CAAC;IAG/B,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAQb,CAAC;IAG/B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;IAQ1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAelD,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;CAIzD;AAED,qBAAa,WAAY,SAAQ,mBAAmB,CAAC,WAAW,CAAC;CAAG;AAEpE,8BAAsB,QAAS,SAAQ,UAAU;IAElC,MAAM,EAAE,UAAU;gBAAlB,MAAM,EAAE,UAAU,EACzB,QAAQ,EAAE,MAAM;IAUpB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,cAAc,CAAC,CAAC,GAAG,OAAO,EACtB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,yBAAyB,GAAG,SAAS,GAC9C,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IAItD,cAAc;IAId,UAAU;IAIV,IAAI,OAAO,2BAEV;CACJ"}
package/lib/client.js CHANGED
@@ -115,6 +115,9 @@ export class ApiTopic extends ClientBase {
115
115
  getRetryPolicy() {
116
116
  return this.client.getRetryPolicy();
117
117
  }
118
+ getTimeout() {
119
+ return this.client.getTimeout();
120
+ }
118
121
  get headers() {
119
122
  return this.client.headers;
120
123
  }
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiD,MAAM,WAAW,CAAC;AAGtF,SAAS,wBAAwB,CAAC,OAAgC;IAC9D,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,eAAe,IAAI,OAAO,CAAC;AACtC,CAAC;AAED,SAAS,oBAAoB;IACzB,MAAM,OAAO,GAAG,UAIf,CAAC;IACF,OAAO,CACH,OAAO,OAAO,CAAC,MAAM,KAAK,WAAW;QACrC,CAAC,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,KAAK,QAAQ;YAChD,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,QAAQ;YAClD,OAAO,OAAO,CAAC,GAAG,KAAK,WAAW,CAAC,CAC1C,CAAC;AACN,CAAC;AAED,MAAM,OAAO,mBAAsD,SAAQ,UAAU;IACjF,OAAO,CAAyB;IAChC,KAAK,CAAyB;IAC9B,iDAAiD;IACjD,SAAS,CAA0B;IACnC,UAAU,CAAyC;IACnD,iEAAiE;IACjE,QAAQ,CAAY;IAEpB,YAAY,OAAe,EAAE,SAAwC;QACjE,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACxG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;IACvC,CAAC;IAED,IAAI,cAAc;QACd,MAAM,OAAO,GAA2B,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QACvE,IAAI,oBAAoB,EAAE,EAAE,CAAC;YACzB,OAAO,CAAC,iBAAiB,CAAC,GAAG,mBAAmB,CAAC;QACrD,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,MAAuC;QACpD,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,SAAS,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gBAAgB,CAAC,OAAqC;QAClD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,OAAO,IAAoB,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,MAAiC;QACtC,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;QAC7C,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAoB,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,OAA+B;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChB,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;YAC3C,CAAC;QACL,CAAC;QACD,OAAO,IAAoB,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,KAAyB;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW,EAAE,IAAiB;QAC9C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAA2B,CAAC;YAC7E,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YACtC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,mBAAmB,CAAC,GAAY,EAAE,GAAa;QAC3C,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,sBAAsB;QAC3C,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;CACJ;AAED,MAAM,OAAO,WAAY,SAAQ,mBAAgC;CAAG;AAEpE,MAAM,OAAgB,QAAS,SAAQ,UAAU;IAElC;IADX,YACW,MAAkB,EACzB,QAAgB;QAEhB,oEAAoE;QACpE,sCAAsC;QACtC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QALvC,WAAM,GAAN,MAAM,CAAY;QAMzB,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,IAAiB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,cAAc,CACV,GAAY,EACZ,GAAa,EACb,MAA6C;QAE7C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAI,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,mBAAmB,CAAC,GAAY,EAAE,GAAa;QAC3C,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACxC,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/B,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertesia/api-fetch-client",
3
- "version": "1.4.0-dev.20260615.042549Z",
3
+ "version": "1.4.0-dev.20260629.130134Z",
4
4
  "description": "HTTP client which wraps a fetch implementation and simplify the creation of REST API clients. Works both in browser and in node.",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -40,14 +40,14 @@
40
40
  "devDependencies": {
41
41
  "@types/koa": "^3.0.3",
42
42
  "@types/mocha": "^10.0.10",
43
- "@types/node": "^24.12.4",
43
+ "@types/node": "^24.13.2",
44
44
  "koa": "^3.2.1",
45
45
  "mocha": "^11.7.6",
46
46
  "tsx": "^4.22.4",
47
47
  "typescript": "^6.0.3",
48
- "@koa-stack/server": "0.24.0",
48
+ "@koa-stack/router": "0.25.0-dev.20260629.122506Z",
49
49
  "@vertesia/tsconfig": "0.1.0",
50
- "@koa-stack/router": "0.24.0"
50
+ "@koa-stack/server": "0.25.0-dev.20260629.122506Z"
51
51
  },
52
52
  "dependencies": {
53
53
  "eventsource-parser": "^3.1.0"
@@ -56,7 +56,8 @@
56
56
  "test": "ESBK_TSCONFIG_PATH=./test/tsconfig.json pnpm exec mocha -r tsx --exit ./test/**/*.ts",
57
57
  "lint": "biome lint src",
58
58
  "typecheck:test": "tsc -p test/tsconfig.json --noEmit",
59
- "build": "rm -rf ./lib ./tsconfig.tsbuildinfo && tsc",
60
- "clean": "rm -rf ./node_modules ./lib ./tsconfig.tsbuildinfo"
59
+ "clean:lib": "rimraf ./lib ./tsconfig.tsbuildinfo",
60
+ "build": "pnpm run clean:lib && tsc -p tsconfig.json",
61
+ "clean": "rimraf ./node_modules ./lib ./tsconfig.tsbuildinfo"
61
62
  }
62
63
  }
package/src/base.ts CHANGED
@@ -18,6 +18,13 @@ export interface IRequestRetryPolicy {
18
18
  * HTTP response statuses that should be retried. Defaults to 502, 503, and 504.
19
19
  */
20
20
  statuses?: number[];
21
+ /**
22
+ * Also retry any 5xx whose body is not JSON — e.g. an HTML error page from a load balancer,
23
+ * gateway, or Cloud Run ("no available instance" / "try again in 30 seconds"). These originate
24
+ * at the edge, not the application (which serializes its errors as JSON), so they are transient
25
+ * and safe to retry even when the exact status (often 500) is not in `statuses`. Defaults to true.
26
+ */
27
+ retryNonJsonServerErrors?: boolean;
21
28
  /**
22
29
  * Retry network failures thrown by fetch. Defaults to true.
23
30
  */
@@ -40,6 +47,7 @@ type NormalizedRetryPolicy = {
40
47
  attempts: number;
41
48
  methods: Set<string>;
42
49
  statuses: Set<number>;
50
+ retryNonJsonServerErrors: boolean;
43
51
  retryOnConnectionError: boolean;
44
52
  baseDelayMs: number;
45
53
  maxDelayMs: number;
@@ -79,6 +87,18 @@ export interface IRequestParams {
79
87
  * Set to false to disable a client-level retry policy for this request.
80
88
  */
81
89
  retryPolicy?: IRequestRetryPolicy | false | null;
90
+ /**
91
+ * Per-request timeout in milliseconds. Aborts the whole request — connection, response headers,
92
+ * AND body consumption (JSON parse) — via a browser-standard AbortSignal. A positive number sets
93
+ * the timeout; `false`/`null`/`0` disables it for this request (overriding any client default).
94
+ * When omitted, the client-level default (`withTimeout` / `defaultTimeoutMs`) applies.
95
+ * Not applied to SSE (`reader: 'sse'`) requests, which are long-lived by design.
96
+ */
97
+ timeoutMs?: number | false | null;
98
+ /**
99
+ * Caller-supplied AbortSignal. Merged with the timeout signal — whichever aborts first wins.
100
+ */
101
+ signal?: AbortSignal;
82
102
  }
83
103
 
84
104
  export interface IRequestParamsWithPayload extends IRequestParams {
@@ -106,6 +126,20 @@ function isReplayableBody(body: BodyInit | undefined) {
106
126
  return !body || typeof ReadableStream === 'undefined' || !(body instanceof ReadableStream);
107
127
  }
108
128
 
129
+ /**
130
+ * True for a 5xx whose Content-Type is not JSON. The application serializes its errors as JSON, so a
131
+ * non-JSON 5xx (HTML/text, or no content-type) is an edge/LB/gateway failure — e.g. a Cloud Run
132
+ * "no available instance" or GFE "try again in 30 seconds" page — which is transient and retryable.
133
+ * Reads only headers (no body consumption), so it is safe to call before deciding to retry.
134
+ */
135
+ function isNonJsonServerError(res: Response): boolean {
136
+ if (res.status < 500) {
137
+ return false;
138
+ }
139
+ const contentType = (res.headers.get('content-type') ?? '').toLowerCase();
140
+ return !contentType.includes('json');
141
+ }
142
+
109
143
  function normalizeRetryPolicy(policy: IRequestRetryPolicy): NormalizedRetryPolicy {
110
144
  const attempts = Math.max(1, Math.floor(policy.attempts ?? DEFAULT_RETRY_ATTEMPTS));
111
145
  const baseDelayMs = Math.max(0, policy.baseDelayMs ?? DEFAULT_RETRY_BASE_DELAY_MS);
@@ -114,6 +148,7 @@ function normalizeRetryPolicy(policy: IRequestRetryPolicy): NormalizedRetryPolic
114
148
  attempts,
115
149
  methods: new Set((policy.methods ?? DEFAULT_RETRY_METHODS).map((method) => method.toUpperCase())),
116
150
  statuses: new Set(policy.statuses ?? DEFAULT_RETRY_STATUSES),
151
+ retryNonJsonServerErrors: policy.retryNonJsonServerErrors ?? true,
117
152
  retryOnConnectionError: policy.retryOnConnectionError ?? true,
118
153
  baseDelayMs,
119
154
  maxDelayMs,
@@ -147,6 +182,60 @@ function toError(err: unknown): Error {
147
182
  return err instanceof Error ? err : new Error(String(err));
148
183
  }
149
184
 
185
+ /**
186
+ * True for an AbortSignal-driven failure (caller abort or our timeout). Checks `name` rather than
187
+ * `instanceof Error` because runtimes surface these as a `DOMException` (`TimeoutError`/`AbortError`),
188
+ * which is not always an `Error` subclass in browsers.
189
+ */
190
+ function isAbortError(err: unknown): boolean {
191
+ return (
192
+ typeof err === 'object' &&
193
+ err !== null &&
194
+ 'name' in err &&
195
+ ((err as { name: unknown }).name === 'TimeoutError' || (err as { name: unknown }).name === 'AbortError')
196
+ );
197
+ }
198
+
199
+ /**
200
+ * Browser + Node safe `AbortSignal.timeout(ms)`, with a fallback for runtimes that lack it.
201
+ */
202
+ function timeoutSignal(ms: number): AbortSignal {
203
+ const timeoutFn = (AbortSignal as unknown as { timeout?: (ms: number) => AbortSignal }).timeout;
204
+ if (typeof timeoutFn === 'function') {
205
+ return timeoutFn(ms);
206
+ }
207
+ const controller = new AbortController();
208
+ setTimeout(() => controller.abort(new DOMException('The operation timed out', 'TimeoutError')), ms);
209
+ return controller.signal;
210
+ }
211
+
212
+ /**
213
+ * Merge abort signals (caller + timeout). Uses the standard `AbortSignal.any` when available, with a
214
+ * manual fallback for older runtimes. Returns undefined when there is nothing to combine.
215
+ */
216
+ function combineAbortSignals(signals: Array<AbortSignal | undefined>): AbortSignal | undefined {
217
+ const list = signals.filter((s): s is AbortSignal => !!s);
218
+ if (list.length === 0) {
219
+ return undefined;
220
+ }
221
+ if (list.length === 1) {
222
+ return list[0];
223
+ }
224
+ const anyFn = (AbortSignal as unknown as { any?: (s: AbortSignal[]) => AbortSignal }).any;
225
+ if (typeof anyFn === 'function') {
226
+ return anyFn(list);
227
+ }
228
+ const controller = new AbortController();
229
+ for (const s of list) {
230
+ if (s.aborted) {
231
+ controller.abort(s.reason);
232
+ break;
233
+ }
234
+ s.addEventListener('abort', () => controller.abort(s.reason), { once: true });
235
+ }
236
+ return controller.signal;
237
+ }
238
+
150
239
  async function discardBody(res: Response) {
151
240
  try {
152
241
  await res.body?.cancel();
@@ -161,6 +250,7 @@ export abstract class ClientBase {
161
250
  errorFactory: (err: RequestError) => Error = (err) => err;
162
251
  verboseErrors = true;
163
252
  retryPolicy?: IRequestRetryPolicy;
253
+ defaultTimeoutMs?: number;
164
254
 
165
255
  abstract get headers(): Record<string, string>;
166
256
 
@@ -186,6 +276,40 @@ export abstract class ClientBase {
186
276
  return this.retryPolicy;
187
277
  }
188
278
 
279
+ /**
280
+ * Set a default request timeout (ms) applied to every request unless overridden per-request via
281
+ * `timeoutMs`. Pass `false`/`null`/`0` to clear it. The timeout aborts the whole request
282
+ * (connection + response headers + body consumption) via AbortSignal.
283
+ */
284
+ withTimeout(timeoutMs?: number | false | null): this {
285
+ this.defaultTimeoutMs = typeof timeoutMs === 'number' && timeoutMs > 0 ? timeoutMs : undefined;
286
+ return this;
287
+ }
288
+
289
+ getTimeout(): number | undefined {
290
+ return this.defaultTimeoutMs;
291
+ }
292
+
293
+ /**
294
+ * Resolve the effective timeout for a request: per-request `timeoutMs` wins (a positive number
295
+ * sets it; `false`/`null`/`0` disables it), otherwise the client default applies. SSE streams are
296
+ * never given a total-request timeout.
297
+ */
298
+ protected resolveTimeout(params: IRequestParams | undefined): number | undefined {
299
+ if (params?.reader === 'sse') {
300
+ return undefined;
301
+ }
302
+ const requestTimeout = params?.timeoutMs;
303
+ if (requestTimeout === false || requestTimeout === null) {
304
+ return undefined;
305
+ }
306
+ if (typeof requestTimeout === 'number') {
307
+ return requestTimeout > 0 ? requestTimeout : undefined;
308
+ }
309
+ const clientTimeout = this.getTimeout();
310
+ return clientTimeout && clientTimeout > 0 ? clientTimeout : undefined;
311
+ }
312
+
189
313
  /**
190
314
  * Resolve a path to a full URL. If the path is already an absolute URL
191
315
  * (starts with http:// or https://), it is returned as-is.
@@ -279,6 +403,11 @@ export abstract class ClientBase {
279
403
  }
280
404
  })
281
405
  .catch((err: unknown) => {
406
+ // A timeout/abort during body consumption is a real failure — surface it instead of
407
+ // swallowing it into an error payload that would otherwise be returned as the result.
408
+ if (isAbortError(err)) {
409
+ throw err;
410
+ }
282
411
  return {
283
412
  status: res.status,
284
413
  error: 'Unable to load response content',
@@ -343,12 +472,21 @@ export abstract class ClientBase {
343
472
  }
344
473
 
345
474
  const normalizedMethod = method.toUpperCase();
475
+ // Resolved once; createRequestInit() then mints a FRESH timeout signal per attempt so each
476
+ // retry gets its own deadline. The signal is set on the Request, so it bounds the connection,
477
+ // the wait for response headers, AND body consumption (handleResponse reads res.text()).
478
+ const timeoutMs = this.resolveTimeout(params);
346
479
  const createRequestInit = (): RequestInit => {
347
- return {
480
+ const signal = combineAbortSignals([params?.signal, timeoutMs ? timeoutSignal(timeoutMs) : undefined]);
481
+ const init: RequestInit = {
348
482
  method: normalizedMethod,
349
483
  headers: Object.assign({}, headers),
350
484
  body: body,
351
485
  };
486
+ if (signal) {
487
+ init.signal = signal;
488
+ }
489
+ return init;
352
490
  };
353
491
  const retryPolicy = this.resolveRetryPolicy(params);
354
492
  const fetch = await this._fetch;
@@ -422,12 +560,9 @@ export abstract class ClientBase {
422
560
  replayableBody: boolean,
423
561
  res: Response,
424
562
  ) {
425
- return (
426
- attempt < policy.attempts - 1 &&
427
- replayableBody &&
428
- policy.methods.has(method) &&
429
- policy.statuses.has(res.status)
430
- );
563
+ const retryableStatus =
564
+ policy.statuses.has(res.status) || (policy.retryNonJsonServerErrors && isNonJsonServerError(res));
565
+ return attempt < policy.attempts - 1 && replayableBody && policy.methods.has(method) && retryableStatus;
431
566
  }
432
567
 
433
568
  private shouldRetryConnectionError(
package/src/client.ts CHANGED
@@ -142,6 +142,10 @@ export abstract class ApiTopic extends ClientBase {
142
142
  return this.client.getRetryPolicy();
143
143
  }
144
144
 
145
+ getTimeout() {
146
+ return this.client.getTimeout();
147
+ }
148
+
145
149
  get headers() {
146
150
  return this.client.headers;
147
151
  }