@rixl/sdk 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,9 +8,12 @@ Published on npm as [`@rixl/sdk`](https://www.npmjs.com/package/@rixl/sdk).
8
8
 
9
9
  ## Install
10
10
 
11
- | npm | pnpm | bun | vite plus |
12
- | ----------------- | ------------------ | ----------------- | ---------------- |
13
- | `npm i @rixl/sdk` | `pnpm i @rixl/sdk` | `bun i @rixl/sdk` | `vp i @rixl/sdk` |
11
+ | **Tool** | **Command** |
12
+ | --------- | ------------------ |
13
+ | npm | `npm i @rixl/sdk` |
14
+ | pnpm | `pnpm i @rixl/sdk` |
15
+ | bun | `bun i @rixl/sdk` |
16
+ | vite plus | `vp i @rixl/sdk` |
14
17
 
15
18
  Requires Node.js 18+. ESM only.
16
19
 
@@ -193,34 +196,10 @@ console.log(video.id);
193
196
 
194
197
  This repository uses [Vite+](https://viteplus.dev/guide/) as the unified toolchain and package manager wrapper, with Bun underneath.
195
198
 
196
- Install dependencies:
197
-
198
- ```bash
199
- vp install
200
- ```
201
-
202
- Regenerate config after dependency or config changes:
203
-
204
- ```bash
205
- vp config
206
- ```
207
-
208
- Build the library:
209
-
210
- ```bash
211
- vp pack
212
- ```
213
-
214
- Run formatting, linting, and type checks:
215
-
216
- ```bash
217
- vp check
218
- ```
219
-
220
- Run tests:
221
-
222
199
  ```bash
223
- vp test
200
+ vp install # Install dependencies
201
+ vp run pack # Build the library
202
+ vp check # Run formatting, linting, and type checks
224
203
  ```
225
204
 
226
205
  ## Issues
package/dist/index.d.ts CHANGED
@@ -6,15 +6,15 @@ interface Auth {
6
6
  *
7
7
  * @default 'header'
8
8
  */
9
- in?: "header" | "query" | "cookie";
9
+ in?: 'header' | 'query' | 'cookie';
10
10
  /**
11
11
  * Header or query parameter name.
12
12
  *
13
13
  * @default 'Authorization'
14
14
  */
15
15
  name?: string;
16
- scheme?: "basic" | "bearer";
17
- type: "apiKey" | "http";
16
+ scheme?: 'basic' | 'bearer';
17
+ type: 'apiKey' | 'http';
18
18
  }
19
19
  //#endregion
20
20
  //#region src/core/pathSerializer.gen.d.ts
@@ -25,8 +25,8 @@ interface SerializerOptions<T> {
25
25
  explode: boolean;
26
26
  style: T;
27
27
  }
28
- type ArrayStyle = "form" | "spaceDelimited" | "pipeDelimited";
29
- type ObjectStyle = "form" | "deepObject";
28
+ type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';
29
+ type ObjectStyle = 'form' | 'deepObject';
30
30
  //#endregion
31
31
  //#region src/core/bodySerializer.gen.d.ts
32
32
  type QuerySerializer = (query: Record<string, unknown>) => string;
@@ -45,7 +45,7 @@ type QuerySerializerOptions = QuerySerializerOptionsObject & {
45
45
  };
46
46
  //#endregion
47
47
  //#region src/core/types.gen.d.ts
48
- type HttpMethod = "connect" | "delete" | "get" | "head" | "options" | "patch" | "post" | "put" | "trace";
48
+ type HttpMethod = 'connect' | 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace';
49
49
  type Client$1<RequestFn = never, Config = unknown, MethodFn = never, BuildUrlFn = never, SseFn = never> = {
50
50
  /**
51
51
  * Returns the final request URL.
@@ -76,7 +76,7 @@ interface Config$1 {
76
76
  *
77
77
  * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more}
78
78
  */
79
- headers?: RequestInit["headers"] | Record<string, string | number | boolean | (string | number | boolean)[] | null | undefined | unknown>;
79
+ headers?: RequestInit['headers'] | Record<string, string | number | boolean | (string | number | boolean)[] | null | undefined | unknown>;
80
80
  /**
81
81
  * The request method.
82
82
  *
@@ -114,7 +114,7 @@ interface Config$1 {
114
114
  }
115
115
  //#endregion
116
116
  //#region src/core/serverSentEvents.gen.d.ts
117
- type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, "method"> & Pick<Config$1, "method" | "responseTransformer" | "responseValidator"> & {
117
+ type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> & Pick<Config$1, 'method' | 'responseTransformer' | 'responseValidator'> & {
118
118
  /**
119
119
  * Fetch API implementation. You can use this option to provide a custom
120
120
  * fetch instance.
@@ -143,7 +143,7 @@ type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, "method"> & Pi
143
143
  * @returns Nothing (void).
144
144
  */
145
145
  onSseEvent?: (event: StreamEvent<TData>) => void;
146
- serializedBody?: RequestInit["body"];
146
+ serializedBody?: RequestInit['body'];
147
147
  /**
148
148
  * Default retry delay in milliseconds.
149
149
  *
@@ -208,12 +208,12 @@ interface Middleware<Req, Res, Err, Options> {
208
208
  }
209
209
  //#endregion
210
210
  //#region src/client/types.gen.d.ts
211
- type ResponseStyle = "data" | "fields";
212
- interface Config<T extends ClientOptions$1 = ClientOptions$1> extends Omit<RequestInit, "body" | "headers" | "method">, Config$1 {
211
+ type ResponseStyle = 'data' | 'fields';
212
+ interface Config<T extends ClientOptions$1 = ClientOptions$1> extends Omit<RequestInit, 'body' | 'headers' | 'method'>, Config$1 {
213
213
  /**
214
214
  * Base URL for all requests made by this client.
215
215
  */
216
- baseUrl?: T["baseUrl"];
216
+ baseUrl?: T['baseUrl'];
217
217
  /**
218
218
  * Fetch API implementation. You can use this option to provide a custom
219
219
  * fetch instance.
@@ -236,7 +236,7 @@ interface Config<T extends ClientOptions$1 = ClientOptions$1> extends Omit<Reque
236
236
  *
237
237
  * @default 'auto'
238
238
  */
239
- parseAs?: "arrayBuffer" | "auto" | "blob" | "formData" | "json" | "stream" | "text";
239
+ parseAs?: 'arrayBuffer' | 'auto' | 'blob' | 'formData' | 'json' | 'stream' | 'text';
240
240
  /**
241
241
  * Should we return only data or multiple fields (data, error, response, etc.)?
242
242
  *
@@ -248,12 +248,12 @@ interface Config<T extends ClientOptions$1 = ClientOptions$1> extends Omit<Reque
248
248
  *
249
249
  * @default false
250
250
  */
251
- throwOnError?: T["throwOnError"];
251
+ throwOnError?: T['throwOnError'];
252
252
  }
253
- interface RequestOptions<TData = unknown, TResponseStyle extends ResponseStyle = "fields", ThrowOnError extends boolean = boolean, Url extends string = string> extends Config<{
253
+ interface RequestOptions<TData = unknown, TResponseStyle extends ResponseStyle = 'fields', ThrowOnError extends boolean = boolean, Url extends string = string> extends Config<{
254
254
  responseStyle: TResponseStyle;
255
255
  throwOnError: ThrowOnError;
256
- }>, Pick<ServerSentEventsOptions<TData>, "onRequest" | "onSseError" | "onSseEvent" | "sseDefaultRetryDelay" | "sseMaxRetryAttempts" | "sseMaxRetryDelay"> {
256
+ }>, Pick<ServerSentEventsOptions<TData>, 'onRequest' | 'onSseError' | 'onSseEvent' | 'sseDefaultRetryDelay' | 'sseMaxRetryAttempts' | 'sseMaxRetryDelay'> {
257
257
  /**
258
258
  * Any body that you want to add to your request.
259
259
  *
@@ -268,15 +268,15 @@ interface RequestOptions<TData = unknown, TResponseStyle extends ResponseStyle =
268
268
  security?: ReadonlyArray<Auth>;
269
269
  url: Url;
270
270
  }
271
- interface ResolvedRequestOptions<TResponseStyle extends ResponseStyle = "fields", ThrowOnError extends boolean = boolean, Url extends string = string> extends RequestOptions<unknown, TResponseStyle, ThrowOnError, Url> {
271
+ interface ResolvedRequestOptions<TResponseStyle extends ResponseStyle = 'fields', ThrowOnError extends boolean = boolean, Url extends string = string> extends RequestOptions<unknown, TResponseStyle, ThrowOnError, Url> {
272
272
  headers: Headers;
273
273
  serializedBody?: string;
274
274
  }
275
- type RequestResult<TData = unknown, TError = unknown, ThrowOnError extends boolean = boolean, TResponseStyle extends ResponseStyle = "fields"> = ThrowOnError extends true ? Promise<TResponseStyle extends "data" ? TData extends Record<string, unknown> ? TData[keyof TData] : TData : {
275
+ type RequestResult<TData = unknown, TError = unknown, ThrowOnError extends boolean = boolean, TResponseStyle extends ResponseStyle = 'fields'> = ThrowOnError extends true ? Promise<TResponseStyle extends 'data' ? TData extends Record<string, unknown> ? TData[keyof TData] : TData : {
276
276
  data: TData extends Record<string, unknown> ? TData[keyof TData] : TData;
277
277
  request: Request;
278
278
  response: Response;
279
- }> : Promise<TResponseStyle extends "data" ? (TData extends Record<string, unknown> ? TData[keyof TData] : TData) | undefined : ({
279
+ }> : Promise<TResponseStyle extends 'data' ? (TData extends Record<string, unknown> ? TData[keyof TData] : TData) | undefined : ({
280
280
  data: TData extends Record<string, unknown> ? TData[keyof TData] : TData;
281
281
  error: undefined;
282
282
  } | {
@@ -291,9 +291,9 @@ interface ClientOptions$1 {
291
291
  responseStyle?: ResponseStyle;
292
292
  throwOnError?: boolean;
293
293
  }
294
- type MethodFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method">) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
295
- type SseFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<never, TResponseStyle, ThrowOnError>, "method">) => Promise<ServerSentEventsResult<TData, TError>>;
296
- type RequestFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields">(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, "method"> & Pick<Required<RequestOptions<TData, TResponseStyle, ThrowOnError>>, "method">) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
294
+ type MethodFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = 'fields'>(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, 'method'>) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
295
+ type SseFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = 'fields'>(options: Omit<RequestOptions<never, TResponseStyle, ThrowOnError>, 'method'>) => Promise<ServerSentEventsResult<TData, TError>>;
296
+ type RequestFn = <TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = 'fields'>(options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, 'method'> & Pick<Required<RequestOptions<TData, TResponseStyle, ThrowOnError>>, 'method'>) => RequestResult<TData, TError, ThrowOnError, TResponseStyle>;
297
297
  type BuildUrlFn = <TData extends {
298
298
  body?: unknown;
299
299
  path?: Record<string, unknown>;
@@ -311,11 +311,11 @@ interface TDataShape {
311
311
  url: string;
312
312
  }
313
313
  type OmitKeys<T, K> = Pick<T, Exclude<keyof T, K>>;
314
- type Options$1<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown, TResponseStyle extends ResponseStyle = "fields"> = OmitKeys<RequestOptions<TResponse, TResponseStyle, ThrowOnError>, "body" | "path" | "query" | "url"> & ([TData] extends [never] ? unknown : Omit<TData, "url">);
314
+ type Options$1<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown, TResponseStyle extends ResponseStyle = 'fields'> = OmitKeys<RequestOptions<TResponse, TResponseStyle, ThrowOnError>, 'body' | 'path' | 'query' | 'url'> & ([TData] extends [never] ? unknown : Omit<TData, 'url'>);
315
315
  //#endregion
316
316
  //#region src/types.gen.d.ts
317
317
  type ClientOptions = {
318
- baseUrl: `${string}://${string}` | (string & {});
318
+ baseUrl: 'https://api.rixl.com/' | (string & {});
319
319
  };
320
320
  type AudioTrack = {
321
321
  created_at?: string;
@@ -349,7 +349,7 @@ type File = {
349
349
  updated_at?: string;
350
350
  url?: string;
351
351
  };
352
- type FileStatus = "uploading" | "uploaded" | "processing" | "preparing" | "ready" | "error";
352
+ type FileStatus = 'uploading' | 'uploaded' | 'processing' | 'preparing' | 'ready' | 'error';
353
353
  type Image = {
354
354
  attached_to_video?: boolean;
355
355
  file?: File;
@@ -370,7 +370,7 @@ type Post = {
370
370
  updated_at?: string;
371
371
  video?: GithubComRixlhqApiInternalVideosVideoResponse;
372
372
  };
373
- type PostType = "image" | "video";
373
+ type PostType = 'image' | 'video';
374
374
  type Subtitle = {
375
375
  created_at?: string;
376
376
  id?: string;
@@ -411,8 +411,8 @@ type VideoUploadInitRequest = {
411
411
  image_format?: string;
412
412
  video_quality?: GithubComRixlhqApiDbSqlcVideoQuality;
413
413
  };
414
- type GithubComRixlhqApiDbSqlcPlanType = "free" | "pro" | "custom" | "pay_as_you_go";
415
- type GithubComRixlhqApiDbSqlcVideoQuality = "basic" | "shorts" | "pro";
414
+ type GithubComRixlhqApiDbSqlcPlanType = 'free' | 'pro' | 'custom' | 'pay_as_you_go';
415
+ type GithubComRixlhqApiDbSqlcVideoQuality = 'basic' | 'shorts' | 'pro';
416
416
  /**
417
417
  * Standard error response returned by the API
418
418
  */
@@ -537,7 +537,7 @@ type GetFeedsByFeedIdData = {
537
537
  */
538
538
  offset?: number;
539
539
  };
540
- url: "/feeds/{feedId}";
540
+ url: '/feeds/{feedId}';
541
541
  };
542
542
  type GetFeedsByFeedIdErrors = {
543
543
  /**
@@ -570,7 +570,7 @@ type GetFeedsByFeedIdByPostIdData = {
570
570
  postId: string;
571
571
  };
572
572
  query?: never;
573
- url: "/feeds/{feedId}/{postId}";
573
+ url: '/feeds/{feedId}/{postId}';
574
574
  };
575
575
  type GetFeedsByFeedIdByPostIdErrors = {
576
576
  /**
@@ -612,7 +612,7 @@ type GetFeedsByFeedIdCreatorsByCreatorIdData = {
612
612
  */
613
613
  offset?: number;
614
614
  };
615
- url: "/feeds/{feedId}/creators/{creatorId}";
615
+ url: '/feeds/{feedId}/creators/{creatorId}';
616
616
  };
617
617
  type GetFeedsByFeedIdCreatorsByCreatorIdErrors = {
618
618
  /**
@@ -653,7 +653,7 @@ type GetImagesData = {
653
653
  */
654
654
  order?: string;
655
655
  };
656
- url: "/images";
656
+ url: '/images';
657
657
  };
658
658
  type GetImagesErrors = {
659
659
  /**
@@ -690,7 +690,7 @@ type DeleteImagesByImageIdData = {
690
690
  imageId: string;
691
691
  };
692
692
  query?: never;
693
- url: "/images/{imageId}";
693
+ url: '/images/{imageId}';
694
694
  };
695
695
  type DeleteImagesByImageIdErrors = {
696
696
  /**
@@ -731,7 +731,7 @@ type GetImagesByImageIdData = {
731
731
  imageId: string;
732
732
  };
733
733
  query?: never;
734
- url: "/images/{imageId}";
734
+ url: '/images/{imageId}';
735
735
  };
736
736
  type GetImagesByImageIdErrors = {
737
737
  /**
@@ -770,7 +770,7 @@ type PostImagesUploadCompleteData = {
770
770
  body: InternalImagesHandlerCompleteRequest;
771
771
  path?: never;
772
772
  query?: never;
773
- url: "/images/upload/complete";
773
+ url: '/images/upload/complete';
774
774
  };
775
775
  type PostImagesUploadCompleteErrors = {
776
776
  /**
@@ -809,7 +809,7 @@ type PostImagesUploadInitData = {
809
809
  body: InternalImagesHandlerUploadInitRequest;
810
810
  path?: never;
811
811
  query?: never;
812
- url: "/images/upload/init";
812
+ url: '/images/upload/init';
813
813
  };
814
814
  type PostImagesUploadInitErrors = {
815
815
  /**
@@ -858,7 +858,7 @@ type GetVideosData = {
858
858
  */
859
859
  order?: string;
860
860
  };
861
- url: "/videos";
861
+ url: '/videos';
862
862
  };
863
863
  type GetVideosErrors = {
864
864
  /**
@@ -895,7 +895,7 @@ type GetVideosByVideoIdData = {
895
895
  videoId: string;
896
896
  };
897
897
  query?: never;
898
- url: "/videos/{videoId}";
898
+ url: '/videos/{videoId}';
899
899
  };
900
900
  type GetVideosByVideoIdErrors = {
901
901
  /**
@@ -936,7 +936,7 @@ type DeleteVideosByVideoIdAudioTracksData = {
936
936
  videoId: string;
937
937
  };
938
938
  query?: never;
939
- url: "/videos/{videoId}/audio-tracks";
939
+ url: '/videos/{videoId}/audio-tracks';
940
940
  };
941
941
  type DeleteVideosByVideoIdAudioTracksResponses = {
942
942
  /**
@@ -970,7 +970,7 @@ type PostVideosByVideoIdAudioTracksData = {
970
970
  videoId: string;
971
971
  };
972
972
  query?: never;
973
- url: "/videos/{videoId}/audio-tracks";
973
+ url: '/videos/{videoId}/audio-tracks';
974
974
  };
975
975
  type PostVideosByVideoIdAudioTracksResponses = {
976
976
  /**
@@ -992,7 +992,7 @@ type DeleteVideosByVideoIdAudioTracksByTrackIdData = {
992
992
  trackId: string;
993
993
  };
994
994
  query?: never;
995
- url: "/videos/{videoId}/audio-tracks/{trackId}";
995
+ url: '/videos/{videoId}/audio-tracks/{trackId}';
996
996
  };
997
997
  type DeleteVideosByVideoIdAudioTracksByTrackIdErrors = {
998
998
  /**
@@ -1033,7 +1033,7 @@ type DeleteVideosByVideoIdAudioTracksLanguageByLangCodeData = {
1033
1033
  lang_code: string;
1034
1034
  };
1035
1035
  query?: never;
1036
- url: "/videos/{videoId}/audio-tracks/language/{lang_code}";
1036
+ url: '/videos/{videoId}/audio-tracks/language/{lang_code}';
1037
1037
  };
1038
1038
  type DeleteVideosByVideoIdAudioTracksLanguageByLangCodeResponses = {
1039
1039
  /**
@@ -1067,7 +1067,7 @@ type PutVideosByVideoIdAudioTracksLanguageByLangCodeData = {
1067
1067
  lang_code: string;
1068
1068
  };
1069
1069
  query?: never;
1070
- url: "/videos/{videoId}/audio-tracks/language/{lang_code}";
1070
+ url: '/videos/{videoId}/audio-tracks/language/{lang_code}';
1071
1071
  };
1072
1072
  type PutVideosByVideoIdAudioTracksLanguageByLangCodeResponses = {
1073
1073
  /**
@@ -1085,7 +1085,7 @@ type DeleteVideosByVideoIdChaptersData = {
1085
1085
  videoId: string;
1086
1086
  };
1087
1087
  query?: never;
1088
- url: "/videos/{videoId}/chapters";
1088
+ url: '/videos/{videoId}/chapters';
1089
1089
  };
1090
1090
  type DeleteVideosByVideoIdChaptersErrors = {
1091
1091
  /**
@@ -1125,7 +1125,7 @@ type PutVideosByVideoIdChaptersData = {
1125
1125
  videoId: string;
1126
1126
  };
1127
1127
  query?: never;
1128
- url: "/videos/{videoId}/chapters";
1128
+ url: '/videos/{videoId}/chapters';
1129
1129
  };
1130
1130
  type PutVideosByVideoIdChaptersErrors = {
1131
1131
  /**
@@ -1166,7 +1166,7 @@ type DeleteVideosByVideoIdDeleteData = {
1166
1166
  videoId: string;
1167
1167
  };
1168
1168
  query?: never;
1169
- url: "/videos/{videoId}/delete";
1169
+ url: '/videos/{videoId}/delete';
1170
1170
  };
1171
1171
  type DeleteVideosByVideoIdDeleteErrors = {
1172
1172
  /**
@@ -1207,7 +1207,7 @@ type DeleteVideosByVideoIdSubtitlesData = {
1207
1207
  videoId: string;
1208
1208
  };
1209
1209
  query?: never;
1210
- url: "/videos/{videoId}/subtitles";
1210
+ url: '/videos/{videoId}/subtitles';
1211
1211
  };
1212
1212
  type DeleteVideosByVideoIdSubtitlesResponses = {
1213
1213
  /**
@@ -1241,7 +1241,7 @@ type PostVideosByVideoIdSubtitlesData = {
1241
1241
  videoId: string;
1242
1242
  };
1243
1243
  query?: never;
1244
- url: "/videos/{videoId}/subtitles";
1244
+ url: '/videos/{videoId}/subtitles';
1245
1245
  };
1246
1246
  type PostVideosByVideoIdSubtitlesResponses = {
1247
1247
  /**
@@ -1263,7 +1263,7 @@ type DeleteVideosByVideoIdSubtitlesBySubtitleIdData = {
1263
1263
  subtitleId: string;
1264
1264
  };
1265
1265
  query?: never;
1266
- url: "/videos/{videoId}/subtitles/{subtitleId}";
1266
+ url: '/videos/{videoId}/subtitles/{subtitleId}';
1267
1267
  };
1268
1268
  type DeleteVideosByVideoIdSubtitlesBySubtitleIdErrors = {
1269
1269
  /**
@@ -1304,7 +1304,7 @@ type DeleteVideosByVideoIdSubtitlesLanguageByLangCodeData = {
1304
1304
  lang_code: string;
1305
1305
  };
1306
1306
  query?: never;
1307
- url: "/videos/{videoId}/subtitles/language/{lang_code}";
1307
+ url: '/videos/{videoId}/subtitles/language/{lang_code}';
1308
1308
  };
1309
1309
  type DeleteVideosByVideoIdSubtitlesLanguageByLangCodeResponses = {
1310
1310
  /**
@@ -1338,7 +1338,7 @@ type PutVideosByVideoIdSubtitlesLanguageByLangCodeData = {
1338
1338
  lang_code: string;
1339
1339
  };
1340
1340
  query?: never;
1341
- url: "/videos/{videoId}/subtitles/language/{lang_code}";
1341
+ url: '/videos/{videoId}/subtitles/language/{lang_code}';
1342
1342
  };
1343
1343
  type PutVideosByVideoIdSubtitlesLanguageByLangCodeResponses = {
1344
1344
  /**
@@ -1364,7 +1364,7 @@ type PutVideosByVideoIdThumbnailData = {
1364
1364
  videoId: string;
1365
1365
  };
1366
1366
  query?: never;
1367
- url: "/videos/{videoId}/thumbnail";
1367
+ url: '/videos/{videoId}/thumbnail';
1368
1368
  };
1369
1369
  type PutVideosByVideoIdThumbnailErrors = {
1370
1370
  /**
@@ -1400,7 +1400,7 @@ type GetVideosLanguagesData = {
1400
1400
  body?: never;
1401
1401
  path?: never;
1402
1402
  query?: never;
1403
- url: "/videos/languages";
1403
+ url: '/videos/languages';
1404
1404
  };
1405
1405
  type GetVideosLanguagesResponses = {
1406
1406
  /**
@@ -1416,7 +1416,7 @@ type PostVideosUploadCompleteData = {
1416
1416
  body: GithubComRixlhqApiInternalVideosHandlerUploadCompleteRequest;
1417
1417
  path?: never;
1418
1418
  query?: never;
1419
- url: "/videos/upload/complete";
1419
+ url: '/videos/upload/complete';
1420
1420
  };
1421
1421
  type PostVideosUploadCompleteErrors = {
1422
1422
  /**
@@ -1455,7 +1455,7 @@ type PostVideosUploadInitData = {
1455
1455
  body: VideoUploadInitRequest;
1456
1456
  path?: never;
1457
1457
  query?: never;
1458
- url: "/videos/upload/init";
1458
+ url: '/videos/upload/init';
1459
1459
  };
1460
1460
  type PostVideosUploadInitErrors = {
1461
1461
  /**
package/dist/index.js CHANGED
@@ -631,7 +631,7 @@ const createClient = (config = {}) => {
631
631
 
632
632
  //#endregion
633
633
  //#region src/client.gen.ts
634
- const client = createClient(createConfig());
634
+ const client = createClient(createConfig({ baseUrl: "https://api.rixl.com/" }));
635
635
 
636
636
  //#endregion
637
637
  //#region src/sdk.gen.ts
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/core/bodySerializer.gen.ts","../src/core/params.gen.ts","../src/core/serverSentEvents.gen.ts","../src/core/pathSerializer.gen.ts","../src/core/utils.gen.ts","../src/core/auth.gen.ts","../src/client/utils.gen.ts","../src/client/client.gen.ts","../src/client.gen.ts","../src/sdk.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from \"./pathSerializer.gen\";\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === \"string\" || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === \"string\") {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === \"bigint\" ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ntype Slot = \"body\" | \"headers\" | \"path\" | \"query\";\n\nexport type Field =\n | {\n in: Exclude<Slot, \"body\">;\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If omitted, we use the same value as `key`.\n */\n map?: string;\n }\n | {\n in: Extract<Slot, \"body\">;\n /**\n * Key isn't required for bodies.\n */\n key?: string;\n map?: string;\n }\n | {\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If `in` is omitted, `map` aliases `key` to the transport layer.\n */\n map: Slot;\n };\n\nexport interface Fields {\n allowExtra?: Partial<Record<Slot, boolean>>;\n args?: ReadonlyArray<Field>;\n}\n\nexport type FieldsConfig = ReadonlyArray<Field | Fields>;\n\nconst extraPrefixesMap: Record<string, Slot> = {\n $body_: \"body\",\n $headers_: \"headers\",\n $path_: \"path\",\n $query_: \"query\",\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\n\ntype KeyMap = Map<\n string,\n | {\n in: Slot;\n map?: string;\n }\n | {\n in?: never;\n map: Slot;\n }\n>;\n\nconst buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => {\n if (!map) {\n map = new Map();\n }\n\n for (const config of fields) {\n if (\"in\" in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n } else if (\"key\" in config) {\n map.set(config.key, {\n map: config.map,\n });\n } else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n\n return map;\n};\n\ninterface Params {\n body: unknown;\n headers: Record<string, unknown>;\n path: Record<string, unknown>;\n query: Record<string, unknown>;\n}\n\nconst stripEmptySlots = (params: Params) => {\n for (const [slot, value] of Object.entries(params)) {\n if (value && typeof value === \"object\" && !Array.isArray(value) && !Object.keys(value).length) {\n delete params[slot as Slot];\n }\n }\n};\n\nexport const buildClientParams = (args: ReadonlyArray<unknown>, fields: FieldsConfig) => {\n const params: Params = {\n body: {},\n headers: {},\n path: {},\n query: {},\n };\n\n const map = buildKeyMap(fields);\n\n let config: FieldsConfig[number] | undefined;\n\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n\n if (!config) {\n continue;\n }\n\n if (\"in\" in config) {\n if (config.key) {\n const field = map.get(config.key)!;\n const name = field.map || config.key;\n if (field.in) {\n (params[field.in] as Record<string, unknown>)[name] = arg;\n }\n } else {\n params.body = arg;\n }\n } else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n\n if (field) {\n if (field.in) {\n const name = field.map || key;\n (params[field.in] as Record<string, unknown>)[name] = value;\n } else {\n params[field.map] = value;\n }\n } else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n\n if (extra) {\n const [prefix, slot] = extra;\n (params[slot] as Record<string, unknown>)[key.slice(prefix.length)] = value;\n } else if (\"allowExtra\" in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n (params[slot as Slot] as Record<string, unknown>)[key] = value;\n break;\n }\n }\n }\n }\n }\n }\n }\n\n stripEmptySlots(params);\n\n return params;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from \"./types.gen\";\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, \"method\"> &\n Pick<Config, \"method\" | \"responseTransformer\" | \"responseValidator\"> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit[\"body\"];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set(\"Last-Event-ID\", lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: \"follow\",\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error(\"No body in SSE response\");\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = \"\";\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener(\"abort\", abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, \"\\n\"); // normalize line endings\n\n const chunks = buffer.split(\"\\n\\n\");\n buffer = chunks.pop() ?? \"\";\n\n for (const chunk of chunks) {\n const lines = chunk.split(\"\\n\");\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith(\"data:\")) {\n dataLines.push(line.replace(/^data:\\s*/, \"\"));\n } else if (line.startsWith(\"event:\")) {\n eventName = line.replace(/^event:\\s*/, \"\");\n } else if (line.startsWith(\"id:\")) {\n lastEventId = line.replace(/^id:\\s*/, \"\");\n } else if (line.startsWith(\"retry:\")) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, \"\"), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join(\"\\n\");\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener(\"abort\", abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = \"form\" | \"spaceDelimited\" | \"pipeDelimited\";\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = \"label\" | \"matrix\" | \"simple\";\nexport type ObjectStyle = \"form\" | \"deepObject\";\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case \"label\":\n return \".\";\n case \"matrix\":\n return \";\";\n case \"simple\":\n return \",\";\n default:\n return \"&\";\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case \"form\":\n return \",\";\n case \"pipeDelimited\":\n return \"|\";\n case \"spaceDelimited\":\n return \"%20\";\n default:\n return \",\";\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case \"label\":\n return \".\";\n case \"matrix\":\n return \";\";\n case \"simple\":\n return \",\";\n default:\n return \"&\";\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case \"label\":\n return `.${joinedValues}`;\n case \"matrix\":\n return `;${name}=${joinedValues}`;\n case \"simple\":\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === \"label\" || style === \"simple\") {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === \"label\" || style === \"matrix\" ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return \"\";\n }\n\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.\",\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== \"deepObject\" && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(\",\");\n switch (style) {\n case \"form\":\n return `${name}=${joinedValues}`;\n case \"label\":\n return `.${joinedValues}`;\n case \"matrix\":\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === \"deepObject\" ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === \"label\" || style === \"matrix\" ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from \"./bodySerializer.gen\";\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from \"./pathSerializer.gen\";\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = \"simple\";\n\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith(\".\")) {\n name = name.substring(1);\n style = \"label\";\n } else if (name.startsWith(\";\")) {\n name = name.substring(1);\n style = \"matrix\";\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === \"object\") {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === \"matrix\") {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === \"label\" ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith(\"/\") ? _url : `/${_url}`;\n let url = (baseUrl ?? \"\") + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : \"\";\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if (\"serializedBody\" in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== \"\";\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== \"\" ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: \"header\" | \"query\" | \"cookie\";\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: \"basic\" | \"bearer\";\n type: \"apiKey\" | \"http\";\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === \"function\" ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === \"bearer\") {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === \"basic\") {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from \"../core/auth.gen\";\nimport type { QuerySerializerOptions } from \"../core/bodySerializer.gen\";\nimport { jsonBodySerializer } from \"../core/bodySerializer.gen\";\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from \"../core/pathSerializer.gen\";\nimport { getUrl } from \"../core/utils.gen\";\nimport type { Client, ClientOptions, Config, RequestOptions } from \"./types.gen\";\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: \"form\",\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === \"object\") {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: \"deepObject\",\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join(\"&\");\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config[\"parseAs\"], \"auto\"> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return \"stream\";\n }\n\n const cleanContent = contentType.split(\";\")[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith(\"application/json\") || cleanContent.endsWith(\"+json\")) {\n return \"json\";\n }\n\n if (cleanContent === \"multipart/form-data\") {\n return \"formData\";\n }\n\n if (\n [\"application/\", \"audio/\", \"image/\", \"video/\"].some((type) => cleanContent.startsWith(type))\n ) {\n return \"blob\";\n }\n\n if (cleanContent.startsWith(\"text/\")) {\n return \"text\";\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, \"auth\" | \"query\"> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get(\"Cookie\")?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, \"security\"> &\n Pick<RequestOptions, \"auth\" | \"query\"> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? \"Authorization\";\n\n switch (auth.in) {\n case \"query\":\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case \"cookie\":\n options.headers.append(\"Cookie\", `${name}=${token}`);\n break;\n case \"header\":\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client[\"buildUrl\"] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === \"function\"\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith(\"/\")) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>[\"headers\"] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === \"object\" ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === \"number\") {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: \"form\",\n },\n object: {\n explode: true,\n style: \"deepObject\",\n },\n});\n\nconst defaultHeaders = {\n \"Content-Type\": \"application/json\",\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: \"auto\",\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from \"../core/serverSentEvents.gen\";\nimport type { HttpMethod } from \"../core/types.gen\";\nimport { getValidRequestBody } from \"../core/utils.gen\";\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from \"./types.gen\";\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from \"./utils.gen\";\n\ntype ReqInit = Omit<RequestInit, \"body\" | \"headers\"> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends \"data\" | \"fields\" = \"fields\",\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === \"\") {\n opts.headers.delete(\"Content-Type\");\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client[\"request\"] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: \"follow\",\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === \"auto\"\n ? getParseAs(response.headers.get(\"Content-Type\"))\n : opts.parseAs) ?? \"json\";\n\n if (response.status === 204 || response.headers.get(\"Content-Length\") === \"0\") {\n let emptyData: any;\n switch (parseAs) {\n case \"arrayBuffer\":\n case \"blob\":\n case \"text\":\n emptyData = await response[parseAs]();\n break;\n case \"formData\":\n emptyData = new FormData();\n break;\n case \"stream\":\n emptyData = response.body;\n break;\n case \"json\":\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === \"data\"\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case \"arrayBuffer\":\n case \"blob\":\n case \"formData\":\n case \"text\":\n data = await response[parseAs]();\n break;\n case \"json\": {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case \"stream\":\n return opts.responseStyle === \"data\"\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === \"json\") {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === \"data\"\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === \"data\"\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client[\"buildUrl\"] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn(\"CONNECT\"),\n delete: makeMethodFn(\"DELETE\"),\n get: makeMethodFn(\"GET\"),\n getConfig,\n head: makeMethodFn(\"HEAD\"),\n interceptors,\n options: makeMethodFn(\"OPTIONS\"),\n patch: makeMethodFn(\"PATCH\"),\n post: makeMethodFn(\"POST\"),\n put: makeMethodFn(\"PUT\"),\n request,\n setConfig,\n sse: {\n connect: makeSseFn(\"CONNECT\"),\n delete: makeSseFn(\"DELETE\"),\n get: makeSseFn(\"GET\"),\n head: makeSseFn(\"HEAD\"),\n options: makeSseFn(\"OPTIONS\"),\n patch: makeSseFn(\"PATCH\"),\n post: makeSseFn(\"POST\"),\n put: makeSseFn(\"PUT\"),\n trace: makeSseFn(\"TRACE\"),\n },\n trace: makeMethodFn(\"TRACE\"),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from \"./client\";\nimport type { ClientOptions as ClientOptions2 } from \"./types.gen\";\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (\n override?: Config<ClientOptions & T>,\n) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>());\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport {\n type Client,\n formDataBodySerializer,\n type Options as Options2,\n type TDataShape,\n} from \"./client\";\nimport { client } from \"./client.gen\";\nimport type {\n DeleteImagesByImageIdData,\n DeleteImagesByImageIdErrors,\n DeleteImagesByImageIdResponses,\n DeleteVideosByVideoIdAudioTracksByTrackIdData,\n DeleteVideosByVideoIdAudioTracksByTrackIdErrors,\n DeleteVideosByVideoIdAudioTracksByTrackIdResponses,\n DeleteVideosByVideoIdAudioTracksData,\n DeleteVideosByVideoIdAudioTracksLanguageByLangCodeData,\n DeleteVideosByVideoIdAudioTracksLanguageByLangCodeResponses,\n DeleteVideosByVideoIdAudioTracksResponses,\n DeleteVideosByVideoIdChaptersData,\n DeleteVideosByVideoIdChaptersErrors,\n DeleteVideosByVideoIdChaptersResponses,\n DeleteVideosByVideoIdDeleteData,\n DeleteVideosByVideoIdDeleteErrors,\n DeleteVideosByVideoIdDeleteResponses,\n DeleteVideosByVideoIdSubtitlesBySubtitleIdData,\n DeleteVideosByVideoIdSubtitlesBySubtitleIdErrors,\n DeleteVideosByVideoIdSubtitlesBySubtitleIdResponses,\n DeleteVideosByVideoIdSubtitlesData,\n DeleteVideosByVideoIdSubtitlesLanguageByLangCodeData,\n DeleteVideosByVideoIdSubtitlesLanguageByLangCodeResponses,\n DeleteVideosByVideoIdSubtitlesResponses,\n GetFeedsByFeedIdByPostIdData,\n GetFeedsByFeedIdByPostIdErrors,\n GetFeedsByFeedIdByPostIdResponses,\n GetFeedsByFeedIdCreatorsByCreatorIdData,\n GetFeedsByFeedIdCreatorsByCreatorIdErrors,\n GetFeedsByFeedIdCreatorsByCreatorIdResponses,\n GetFeedsByFeedIdData,\n GetFeedsByFeedIdErrors,\n GetFeedsByFeedIdResponses,\n GetImagesByImageIdData,\n GetImagesByImageIdErrors,\n GetImagesByImageIdResponses,\n GetImagesData,\n GetImagesErrors,\n GetImagesResponses,\n GetVideosByVideoIdData,\n GetVideosByVideoIdErrors,\n GetVideosByVideoIdResponses,\n GetVideosData,\n GetVideosErrors,\n GetVideosLanguagesData,\n GetVideosLanguagesResponses,\n GetVideosResponses,\n PostImagesUploadCompleteData,\n PostImagesUploadCompleteErrors,\n PostImagesUploadCompleteResponses,\n PostImagesUploadInitData,\n PostImagesUploadInitErrors,\n PostImagesUploadInitResponses,\n PostVideosByVideoIdAudioTracksData,\n PostVideosByVideoIdAudioTracksResponses,\n PostVideosByVideoIdSubtitlesData,\n PostVideosByVideoIdSubtitlesResponses,\n PostVideosUploadCompleteData,\n PostVideosUploadCompleteErrors,\n PostVideosUploadCompleteResponses,\n PostVideosUploadInitData,\n PostVideosUploadInitErrors,\n PostVideosUploadInitResponses,\n PutVideosByVideoIdAudioTracksLanguageByLangCodeData,\n PutVideosByVideoIdAudioTracksLanguageByLangCodeResponses,\n PutVideosByVideoIdChaptersData,\n PutVideosByVideoIdChaptersErrors,\n PutVideosByVideoIdChaptersResponses,\n PutVideosByVideoIdSubtitlesLanguageByLangCodeData,\n PutVideosByVideoIdSubtitlesLanguageByLangCodeResponses,\n PutVideosByVideoIdThumbnailData,\n PutVideosByVideoIdThumbnailErrors,\n PutVideosByVideoIdThumbnailResponses,\n} from \"./types.gen\";\n\nexport type Options<\n TData extends TDataShape = TDataShape,\n ThrowOnError extends boolean = boolean,\n TResponse = unknown,\n> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * List posts in a feed\n *\n * Retrieve posts in a feed, with pagination.\n */\nexport const getFeedsByFeedId = <ThrowOnError extends boolean = false>(\n options: Options<GetFeedsByFeedIdData, ThrowOnError>,\n) =>\n (options.client ?? client).get<GetFeedsByFeedIdResponses, GetFeedsByFeedIdErrors, ThrowOnError>({\n url: \"/feeds/{feedId}\",\n ...options,\n });\n\n/**\n * Get a post\n *\n * Retrieve a post from feed by its ID\n */\nexport const getFeedsByFeedIdByPostId = <ThrowOnError extends boolean = false>(\n options: Options<GetFeedsByFeedIdByPostIdData, ThrowOnError>,\n) =>\n (options.client ?? client).get<\n GetFeedsByFeedIdByPostIdResponses,\n GetFeedsByFeedIdByPostIdErrors,\n ThrowOnError\n >({ url: \"/feeds/{feedId}/{postId}\", ...options });\n\n/**\n * List posts by creator\n *\n * Retrieve posts in a feed by a specific creator, with pagination.\n */\nexport const getFeedsByFeedIdCreatorsByCreatorId = <ThrowOnError extends boolean = false>(\n options: Options<GetFeedsByFeedIdCreatorsByCreatorIdData, ThrowOnError>,\n) =>\n (options.client ?? client).get<\n GetFeedsByFeedIdCreatorsByCreatorIdResponses,\n GetFeedsByFeedIdCreatorsByCreatorIdErrors,\n ThrowOnError\n >({ url: \"/feeds/{feedId}/creators/{creatorId}\", ...options });\n\n/**\n * List images for a project\n *\n * Retrieve all images for a specific project, with pagination and sorting.\n */\nexport const getImages = <ThrowOnError extends boolean = false>(\n options?: Options<GetImagesData, ThrowOnError>,\n) =>\n (options?.client ?? client).get<GetImagesResponses, GetImagesErrors, ThrowOnError>({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/images\",\n ...options,\n });\n\n/**\n * Delete image\n *\n * delete an image by marking it as deleted\n */\nexport const deleteImagesByImageId = <ThrowOnError extends boolean = false>(\n options: Options<DeleteImagesByImageIdData, ThrowOnError>,\n) =>\n (options.client ?? client).delete<\n DeleteImagesByImageIdResponses,\n DeleteImagesByImageIdErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/images/{imageId}\",\n ...options,\n });\n\n/**\n * Get image\n *\n * Retrieve an image by its ID for a specific project.\n */\nexport const getImagesByImageId = <ThrowOnError extends boolean = false>(\n options: Options<GetImagesByImageIdData, ThrowOnError>,\n) =>\n (options.client ?? client).get<\n GetImagesByImageIdResponses,\n GetImagesByImageIdErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/images/{imageId}\",\n ...options,\n });\n\n/**\n * Upload: Mark as complete\n *\n * Complete the upload process and create the image record using API key authentication\n */\nexport const postImagesUploadComplete = <ThrowOnError extends boolean = false>(\n options: Options<PostImagesUploadCompleteData, ThrowOnError>,\n) =>\n (options.client ?? client).post<\n PostImagesUploadCompleteResponses,\n PostImagesUploadCompleteErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/images/upload/complete\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upload: Init\n *\n * Initialize a presigned URL upload for an image file using API key authentication\n */\nexport const postImagesUploadInit = <ThrowOnError extends boolean = false>(\n options: Options<PostImagesUploadInitData, ThrowOnError>,\n) =>\n (options.client ?? client).post<\n PostImagesUploadInitResponses,\n PostImagesUploadInitErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/images/upload/init\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List videos for a project\n *\n * Retrieve all videos for a specific project, with pagination and sorting.\n */\nexport const getVideos = <ThrowOnError extends boolean = false>(\n options?: Options<GetVideosData, ThrowOnError>,\n) =>\n (options?.client ?? client).get<GetVideosResponses, GetVideosErrors, ThrowOnError>({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos\",\n ...options,\n });\n\n/**\n * Get a video\n *\n * Retrieve a video by its ID for a specific project.\n */\nexport const getVideosByVideoId = <ThrowOnError extends boolean = false>(\n options: Options<GetVideosByVideoIdData, ThrowOnError>,\n) =>\n (options.client ?? client).get<\n GetVideosByVideoIdResponses,\n GetVideosByVideoIdErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}\",\n ...options,\n });\n\n/**\n * Delete all audio tracks\n *\n * Remove all additional audio tracks from a video using API key authentication\n */\nexport const deleteVideosByVideoIdAudioTracks = <ThrowOnError extends boolean = false>(\n options: Options<DeleteVideosByVideoIdAudioTracksData, ThrowOnError>,\n) =>\n (options.client ?? client).delete<\n DeleteVideosByVideoIdAudioTracksResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/audio-tracks\",\n ...options,\n });\n\n/**\n * Bulk upsert video audio tracks\n *\n * Replace all audio tracks with the provided ones using API key authentication\n */\nexport const postVideosByVideoIdAudioTracks = <ThrowOnError extends boolean = false>(\n options: Options<PostVideosByVideoIdAudioTracksData, ThrowOnError>,\n) =>\n (options.client ?? client).post<PostVideosByVideoIdAudioTracksResponses, unknown, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/audio-tracks\",\n ...options,\n headers: {\n \"Content-Type\": null,\n ...options.headers,\n },\n });\n\n/**\n * Delete audio track\n *\n * Remove an additional audio track from a video using API key authentication\n */\nexport const deleteVideosByVideoIdAudioTracksByTrackId = <ThrowOnError extends boolean = false>(\n options: Options<DeleteVideosByVideoIdAudioTracksByTrackIdData, ThrowOnError>,\n) =>\n (options.client ?? client).delete<\n DeleteVideosByVideoIdAudioTracksByTrackIdResponses,\n DeleteVideosByVideoIdAudioTracksByTrackIdErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/audio-tracks/{trackId}\",\n ...options,\n });\n\n/**\n * Delete audio track by language\n *\n * Remove an audio track for a specific language using API key authentication\n */\nexport const deleteVideosByVideoIdAudioTracksLanguageByLangCode = <\n ThrowOnError extends boolean = false,\n>(\n options: Options<DeleteVideosByVideoIdAudioTracksLanguageByLangCodeData, ThrowOnError>,\n) =>\n (options.client ?? client).delete<\n DeleteVideosByVideoIdAudioTracksLanguageByLangCodeResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/audio-tracks/language/{lang_code}\",\n ...options,\n });\n\n/**\n * Upsert video audio track\n *\n * Add or replace an audio track for a specific language using API key authentication\n */\nexport const putVideosByVideoIdAudioTracksLanguageByLangCode = <\n ThrowOnError extends boolean = false,\n>(\n options: Options<PutVideosByVideoIdAudioTracksLanguageByLangCodeData, ThrowOnError>,\n) =>\n (options.client ?? client).put<\n PutVideosByVideoIdAudioTracksLanguageByLangCodeResponses,\n unknown,\n ThrowOnError\n >({\n ...formDataBodySerializer,\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/audio-tracks/language/{lang_code}\",\n ...options,\n headers: {\n \"Content-Type\": null,\n ...options.headers,\n },\n });\n\n/**\n * Delete video chapters\n *\n * Remove all chapters from a video using API key authentication\n */\nexport const deleteVideosByVideoIdChapters = <ThrowOnError extends boolean = false>(\n options: Options<DeleteVideosByVideoIdChaptersData, ThrowOnError>,\n) =>\n (options.client ?? client).delete<\n DeleteVideosByVideoIdChaptersResponses,\n DeleteVideosByVideoIdChaptersErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/chapters\",\n ...options,\n });\n\n/**\n * Update video chapters\n *\n * Replace all chapters for a video (atomic PUT operation) using API key authentication\n */\nexport const putVideosByVideoIdChapters = <ThrowOnError extends boolean = false>(\n options: Options<PutVideosByVideoIdChaptersData, ThrowOnError>,\n) =>\n (options.client ?? client).put<\n PutVideosByVideoIdChaptersResponses,\n PutVideosByVideoIdChaptersErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/chapters\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete video\n *\n * Delete a video by its ID within a project\n */\nexport const deleteVideosByVideoIdDelete = <ThrowOnError extends boolean = false>(\n options: Options<DeleteVideosByVideoIdDeleteData, ThrowOnError>,\n) =>\n (options.client ?? client).delete<\n DeleteVideosByVideoIdDeleteResponses,\n DeleteVideosByVideoIdDeleteErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/delete\",\n ...options,\n });\n\n/**\n * Delete all subtitles\n *\n * Remove all subtitles from a video using API key authentication\n */\nexport const deleteVideosByVideoIdSubtitles = <ThrowOnError extends boolean = false>(\n options: Options<DeleteVideosByVideoIdSubtitlesData, ThrowOnError>,\n) =>\n (options.client ?? client).delete<DeleteVideosByVideoIdSubtitlesResponses, unknown, ThrowOnError>(\n {\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/subtitles\",\n ...options,\n },\n );\n\n/**\n * Bulk upsert video subtitles\n *\n * Replace all subtitles with the provided ones using API key authentication\n */\nexport const postVideosByVideoIdSubtitles = <ThrowOnError extends boolean = false>(\n options: Options<PostVideosByVideoIdSubtitlesData, ThrowOnError>,\n) =>\n (options.client ?? client).post<PostVideosByVideoIdSubtitlesResponses, unknown, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/subtitles\",\n ...options,\n headers: {\n \"Content-Type\": null,\n ...options.headers,\n },\n });\n\n/**\n * Delete subtitle\n *\n * Remove a subtitle from a video using API key authentication\n */\nexport const deleteVideosByVideoIdSubtitlesBySubtitleId = <ThrowOnError extends boolean = false>(\n options: Options<DeleteVideosByVideoIdSubtitlesBySubtitleIdData, ThrowOnError>,\n) =>\n (options.client ?? client).delete<\n DeleteVideosByVideoIdSubtitlesBySubtitleIdResponses,\n DeleteVideosByVideoIdSubtitlesBySubtitleIdErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/subtitles/{subtitleId}\",\n ...options,\n });\n\n/**\n * Delete subtitle by language\n *\n * Remove a subtitle for a specific language using API key authentication\n */\nexport const deleteVideosByVideoIdSubtitlesLanguageByLangCode = <\n ThrowOnError extends boolean = false,\n>(\n options: Options<DeleteVideosByVideoIdSubtitlesLanguageByLangCodeData, ThrowOnError>,\n) =>\n (options.client ?? client).delete<\n DeleteVideosByVideoIdSubtitlesLanguageByLangCodeResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/subtitles/language/{lang_code}\",\n ...options,\n });\n\n/**\n * Upsert video subtitle\n *\n * Add or replace a subtitle for a specific language using API key authentication\n */\nexport const putVideosByVideoIdSubtitlesLanguageByLangCode = <ThrowOnError extends boolean = false>(\n options: Options<PutVideosByVideoIdSubtitlesLanguageByLangCodeData, ThrowOnError>,\n) =>\n (options.client ?? client).put<\n PutVideosByVideoIdSubtitlesLanguageByLangCodeResponses,\n unknown,\n ThrowOnError\n >({\n ...formDataBodySerializer,\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/subtitles/language/{lang_code}\",\n ...options,\n headers: {\n \"Content-Type\": null,\n ...options.headers,\n },\n });\n\n/**\n * Update video thumbnail\n *\n * Update the thumbnail image for an existing video using API key authentication\n */\nexport const putVideosByVideoIdThumbnail = <ThrowOnError extends boolean = false>(\n options: Options<PutVideosByVideoIdThumbnailData, ThrowOnError>,\n) =>\n (options.client ?? client).put<\n PutVideosByVideoIdThumbnailResponses,\n PutVideosByVideoIdThumbnailErrors,\n ThrowOnError\n >({\n ...formDataBodySerializer,\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/{videoId}/thumbnail\",\n ...options,\n headers: {\n \"Content-Type\": null,\n ...options.headers,\n },\n });\n\n/**\n * List available subtitle languages\n *\n * Get list of supported languages for subtitles\n */\nexport const getVideosLanguages = <ThrowOnError extends boolean = false>(\n options?: Options<GetVideosLanguagesData, ThrowOnError>,\n) =>\n (options?.client ?? client).get<GetVideosLanguagesResponses, unknown, ThrowOnError>({\n url: \"/videos/languages\",\n ...options,\n });\n\n/**\n * Upload: Mark as complete\n *\n * Mark a video upload as complete after successful upload to storage using API key authentication\n */\nexport const postVideosUploadComplete = <ThrowOnError extends boolean = false>(\n options: Options<PostVideosUploadCompleteData, ThrowOnError>,\n) =>\n (options.client ?? client).post<\n PostVideosUploadCompleteResponses,\n PostVideosUploadCompleteErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/upload/complete\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upload: Init\n *\n * Initialize a video upload and get presigned URLs for video and poster using API key authentication\n */\nexport const postVideosUploadInit = <ThrowOnError extends boolean = false>(\n options: Options<PostVideosUploadInitData, ThrowOnError>,\n) =>\n (options.client ?? client).post<\n PostVideosUploadInitResponses,\n PostVideosUploadInitErrors,\n ThrowOnError\n >({\n security: [{ name: \"X-API-Key\", type: \"apiKey\" }],\n url: \"/videos/upload/init\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n"],"mappings":";AAsBA,MAAM,yBAAyB,MAAgB,KAAa,UAAyB;AACnF,KAAI,OAAO,UAAU,YAAY,iBAAiB,KAChD,MAAK,OAAO,KAAK,MAAM;UACd,iBAAiB,KAC1B,MAAK,OAAO,KAAK,MAAM,aAAa,CAAC;KAErC,MAAK,OAAO,KAAK,KAAK,UAAU,MAAM,CAAC;;AAY3C,MAAa,yBAAyB,EACpC,iBAAiB,SAA4B;CAC3C,MAAM,OAAO,IAAI,UAAU;AAE3B,QAAO,QAAQ,KAAgC,CAAC,SAAS,CAAC,KAAK,WAAW;AACxE,MAAI,UAAU,UAAa,UAAU,KACnC;AAEF,MAAI,MAAM,QAAQ,MAAM,CACtB,OAAM,SAAS,MAAM,sBAAsB,MAAM,KAAK,EAAE,CAAC;MAEzD,uBAAsB,MAAM,KAAK,MAAM;GAEzC;AAEF,QAAO;GAEV;AAED,MAAa,qBAAqB,EAChC,iBAAiB,SACf,KAAK,UAAU,OAAO,MAAM,UAAW,OAAO,UAAU,WAAW,MAAM,UAAU,GAAG,MAAO,EAChG;;;;ACZD,MAAM,gBAAgB,OAAO,QAAQ;CALnC,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,SAAS;CAE0C,CAAC;;;;AC+BtD,SAAgB,gBAAiC,EAC/C,WACA,YACA,YACA,qBACA,mBACA,sBACA,qBACA,kBACA,YACA,KACA,GAAG,WACsD;CACzD,IAAI;CAEJ,MAAM,QAAQ,gBAAgB,OAAe,IAAI,SAAS,YAAY,WAAW,SAAS,GAAG,CAAC;CAE9F,MAAM,eAAe,mBAAmB;EACtC,IAAI,aAAqB,wBAAwB;EACjD,IAAI,UAAU;EACd,MAAM,SAAS,QAAQ,UAAU,IAAI,iBAAiB,CAAC;AAEvD,SAAO,MAAM;AACX,OAAI,OAAO,QAAS;AAEpB;GAEA,MAAM,UACJ,QAAQ,mBAAmB,UACvB,QAAQ,UACR,IAAI,QAAQ,QAAQ,QAA8C;AAExE,OAAI,gBAAgB,OAClB,SAAQ,IAAI,iBAAiB,YAAY;AAG3C,OAAI;IACF,MAAM,cAA2B;KAC/B,UAAU;KACV,GAAG;KACH,MAAM,QAAQ;KACd;KACA;KACD;IACD,IAAI,UAAU,IAAI,QAAQ,KAAK,YAAY;AAC3C,QAAI,UACF,WAAU,MAAM,UAAU,KAAK,YAAY;IAK7C,MAAM,WAAW,OADF,QAAQ,SAAS,WAAW,OACb,QAAQ;AAEtC,QAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,eAAe,SAAS,OAAO,GAAG,SAAS,aAAa;AAE1F,QAAI,CAAC,SAAS,KAAM,OAAM,IAAI,MAAM,0BAA0B;IAE9D,MAAM,SAAS,SAAS,KAAK,YAAY,IAAI,mBAAmB,CAAC,CAAC,WAAW;IAE7E,IAAI,SAAS;IAEb,MAAM,qBAAqB;AACzB,SAAI;AACF,aAAO,QAAQ;aACT;;AAKV,WAAO,iBAAiB,SAAS,aAAa;AAE9C,QAAI;AACF,YAAO,MAAM;MACX,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM;AAC3C,UAAI,KAAM;AACV,gBAAU;AACV,eAAS,OAAO,QAAQ,UAAU,KAAK;MAEvC,MAAM,SAAS,OAAO,MAAM,OAAO;AACnC,eAAS,OAAO,KAAK,IAAI;AAEzB,WAAK,MAAM,SAAS,QAAQ;OAC1B,MAAM,QAAQ,MAAM,MAAM,KAAK;OAC/B,MAAM,YAA2B,EAAE;OACnC,IAAI;AAEJ,YAAK,MAAM,QAAQ,MACjB,KAAI,KAAK,WAAW,QAAQ,CAC1B,WAAU,KAAK,KAAK,QAAQ,aAAa,GAAG,CAAC;gBACpC,KAAK,WAAW,SAAS,CAClC,aAAY,KAAK,QAAQ,cAAc,GAAG;gBACjC,KAAK,WAAW,MAAM,CAC/B,eAAc,KAAK,QAAQ,WAAW,GAAG;gBAChC,KAAK,WAAW,SAAS,EAAE;QACpC,MAAM,SAAS,OAAO,SAAS,KAAK,QAAQ,cAAc,GAAG,EAAE,GAAG;AAClE,YAAI,CAAC,OAAO,MAAM,OAAO,CACvB,cAAa;;OAKnB,IAAI;OACJ,IAAI,aAAa;AAEjB,WAAI,UAAU,QAAQ;QACpB,MAAM,UAAU,UAAU,KAAK,KAAK;AACpC,YAAI;AACF,gBAAO,KAAK,MAAM,QAAQ;AAC1B,sBAAa;gBACP;AACN,gBAAO;;;AAIX,WAAI,YAAY;AACd,YAAI,kBACF,OAAM,kBAAkB,KAAK;AAG/B,YAAI,oBACF,QAAO,MAAM,oBAAoB,KAAK;;AAI1C,oBAAa;QACX;QACA,OAAO;QACP,IAAI;QACJ,OAAO;QACR,CAAC;AAEF,WAAI,UAAU,OACZ,OAAM;;;cAIJ;AACR,YAAO,oBAAoB,SAAS,aAAa;AACjD,YAAO,aAAa;;AAGtB;YACO,OAAO;AAEd,iBAAa,MAAM;AAEnB,QAAI,wBAAwB,UAAa,WAAW,oBAClD;AAKF,UAAM,MADU,KAAK,IAAI,aAAa,MAAM,UAAU,IAAI,oBAAoB,IAC3D,CAAC;;;;AAO1B,QAAO,EAAE,QAFM,cAEA,EAAE;;;;;ACrNnB,MAAa,yBAAyB,UAA+B;AACnE,SAAQ,OAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,2BAA2B,UAA+B;AACrE,SAAQ,OAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK,gBACH,QAAO;EACT,KAAK,iBACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,0BAA0B,UAAgC;AACrE,SAAQ,OAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,uBAAuB,EAClC,eACA,SACA,MACA,OACA,YAGI;AACJ,KAAI,CAAC,SAAS;EACZ,MAAM,gBACJ,gBAAgB,QAAQ,MAAM,KAAK,MAAM,mBAAmB,EAAY,CAAC,EACzE,KAAK,wBAAwB,MAAM,CAAC;AACtC,UAAQ,OAAR;GACE,KAAK,QACH,QAAO,IAAI;GACb,KAAK,SACH,QAAO,IAAI,KAAK,GAAG;GACrB,KAAK,SACH,QAAO;GACT,QACE,QAAO,GAAG,KAAK,GAAG;;;CAIxB,MAAM,YAAY,sBAAsB,MAAM;CAC9C,MAAM,eAAe,MAClB,KAAK,MAAM;AACV,MAAI,UAAU,WAAW,UAAU,SACjC,QAAO,gBAAgB,IAAI,mBAAmB,EAAY;AAG5D,SAAO,wBAAwB;GAC7B;GACA;GACA,OAAO;GACR,CAAC;GACF,CACD,KAAK,UAAU;AAClB,QAAO,UAAU,WAAW,UAAU,WAAW,YAAY,eAAe;;AAG9E,MAAa,2BAA2B,EACtC,eACA,MACA,YAC6B;AAC7B,KAAI,UAAU,UAAa,UAAU,KACnC,QAAO;AAGT,KAAI,OAAO,UAAU,SACnB,OAAM,IAAI,MACR,uGACD;AAGH,QAAO,GAAG,KAAK,GAAG,gBAAgB,QAAQ,mBAAmB,MAAM;;AAGrE,MAAa,wBAAwB,EACnC,eACA,SACA,MACA,OACA,OACA,gBAII;AACJ,KAAI,iBAAiB,KACnB,QAAO,YAAY,MAAM,aAAa,GAAG,GAAG,KAAK,GAAG,MAAM,aAAa;AAGzE,KAAI,UAAU,gBAAgB,CAAC,SAAS;EACtC,IAAI,SAAmB,EAAE;AACzB,SAAO,QAAQ,MAAM,CAAC,SAAS,CAAC,KAAK,OAAO;AAC1C,YAAS;IAAC,GAAG;IAAQ;IAAK,gBAAiB,IAAe,mBAAmB,EAAY;IAAC;IAC1F;EACF,MAAM,eAAe,OAAO,KAAK,IAAI;AACrC,UAAQ,OAAR;GACE,KAAK,OACH,QAAO,GAAG,KAAK,GAAG;GACpB,KAAK,QACH,QAAO,IAAI;GACb,KAAK,SACH,QAAO,IAAI,KAAK,GAAG;GACrB,QACE,QAAO;;;CAIb,MAAM,YAAY,uBAAuB,MAAM;CAC/C,MAAM,eAAe,OAAO,QAAQ,MAAM,CACvC,KAAK,CAAC,KAAK,OACV,wBAAwB;EACtB;EACA,MAAM,UAAU,eAAe,GAAG,KAAK,GAAG,IAAI,KAAK;EACnD,OAAO;EACR,CAAC,CACH,CACA,KAAK,UAAU;AAClB,QAAO,UAAU,WAAW,UAAU,WAAW,YAAY,eAAe;;;;;AC1J9E,MAAa,gBAAgB;AAE7B,MAAa,yBAAyB,EAAE,MAAM,KAAK,WAA2B;CAC5E,IAAI,MAAM;CACV,MAAM,UAAU,KAAK,MAAM,cAAc;AACzC,KAAI,QACF,MAAK,MAAM,SAAS,SAAS;EAC3B,IAAI,UAAU;EACd,IAAI,OAAO,MAAM,UAAU,GAAG,MAAM,SAAS,EAAE;EAC/C,IAAI,QAA6B;AAEjC,MAAI,KAAK,SAAS,IAAI,EAAE;AACtB,aAAU;AACV,UAAO,KAAK,UAAU,GAAG,KAAK,SAAS,EAAE;;AAG3C,MAAI,KAAK,WAAW,IAAI,EAAE;AACxB,UAAO,KAAK,UAAU,EAAE;AACxB,WAAQ;aACC,KAAK,WAAW,IAAI,EAAE;AAC/B,UAAO,KAAK,UAAU,EAAE;AACxB,WAAQ;;EAGV,MAAM,QAAQ,KAAK;AAEnB,MAAI,UAAU,UAAa,UAAU,KACnC;AAGF,MAAI,MAAM,QAAQ,MAAM,EAAE;AACxB,SAAM,IAAI,QAAQ,OAAO,oBAAoB;IAAE;IAAS;IAAM;IAAO;IAAO,CAAC,CAAC;AAC9E;;AAGF,MAAI,OAAO,UAAU,UAAU;AAC7B,SAAM,IAAI,QACR,OACA,qBAAqB;IACnB;IACA;IACA;IACO;IACP,WAAW;IACZ,CAAC,CACH;AACD;;AAGF,MAAI,UAAU,UAAU;AACtB,SAAM,IAAI,QACR,OACA,IAAI,wBAAwB;IAC1B;IACO;IACR,CAAC,GACH;AACD;;EAGF,MAAM,eAAe,mBACnB,UAAU,UAAU,IAAI,UAAqB,MAC9C;AACD,QAAM,IAAI,QAAQ,OAAO,aAAa;;AAG1C,QAAO;;AAGT,MAAa,UAAU,EACrB,SACA,MACA,OACA,iBACA,KAAK,WAOD;CACJ,MAAM,UAAU,KAAK,WAAW,IAAI,GAAG,OAAO,IAAI;CAClD,IAAI,OAAO,WAAW,MAAM;AAC5B,KAAI,KACF,OAAM,sBAAsB;EAAE;EAAM;EAAK,CAAC;CAE5C,IAAI,SAAS,QAAQ,gBAAgB,MAAM,GAAG;AAC9C,KAAI,OAAO,WAAW,IAAI,CACxB,UAAS,OAAO,UAAU,EAAE;AAE9B,KAAI,OACF,QAAO,IAAI;AAEb,QAAO;;AAGT,SAAgB,oBAAoB,SAIjC;CACD,MAAM,UAAU,QAAQ,SAAS;AAGjC,KAFyB,WAAW,QAAQ,gBAEtB;AACpB,MAAI,oBAAoB,QAItB,QAFE,QAAQ,mBAAmB,UAAa,QAAQ,mBAAmB,KAE1C,QAAQ,iBAAiB;AAItD,SAAO,QAAQ,SAAS,KAAK,QAAQ,OAAO;;AAI9C,KAAI,QACF,QAAO,QAAQ;;;;;ACjHnB,MAAa,eAAe,OAC1B,MACA,aACgC;CAChC,MAAM,QAAQ,OAAO,aAAa,aAAa,MAAM,SAAS,KAAK,GAAG;AAEtE,KAAI,CAAC,MACH;AAGF,KAAI,KAAK,WAAW,SAClB,QAAO,UAAU;AAGnB,KAAI,KAAK,WAAW,QAClB,QAAO,SAAS,KAAK,MAAM;AAG7B,QAAO;;;;;AC1BT,MAAa,yBAAsC,EACjD,aAAa,EAAE,EACf,GAAG,SACuB,EAAE,KAAK;CACjC,MAAM,mBAAmB,gBAAmB;EAC1C,MAAM,SAAmB,EAAE;AAC3B,MAAI,eAAe,OAAO,gBAAgB,SACxC,MAAK,MAAM,QAAQ,aAAa;GAC9B,MAAM,QAAQ,YAAY;AAE1B,OAAI,UAAU,UAAa,UAAU,KACnC;GAGF,MAAM,UAAU,WAAW,SAAS;AAEpC,OAAI,MAAM,QAAQ,MAAM,EAAE;IACxB,MAAM,kBAAkB,oBAAoB;KAC1C,eAAe,QAAQ;KACvB,SAAS;KACT;KACA,OAAO;KACP;KACA,GAAG,QAAQ;KACZ,CAAC;AACF,QAAI,gBAAiB,QAAO,KAAK,gBAAgB;cACxC,OAAO,UAAU,UAAU;IACpC,MAAM,mBAAmB,qBAAqB;KAC5C,eAAe,QAAQ;KACvB,SAAS;KACT;KACA,OAAO;KACA;KACP,GAAG,QAAQ;KACZ,CAAC;AACF,QAAI,iBAAkB,QAAO,KAAK,iBAAiB;UAC9C;IACL,MAAM,sBAAsB,wBAAwB;KAClD,eAAe,QAAQ;KACvB;KACO;KACR,CAAC;AACF,QAAI,oBAAqB,QAAO,KAAK,oBAAoB;;;AAI/D,SAAO,OAAO,KAAK,IAAI;;AAEzB,QAAO;;;;;AAMT,MAAa,cAAc,gBAAmE;AAC5F,KAAI,CAAC,YAGH,QAAO;CAGT,MAAM,eAAe,YAAY,MAAM,IAAI,CAAC,IAAI,MAAM;AAEtD,KAAI,CAAC,aACH;AAGF,KAAI,aAAa,WAAW,mBAAmB,IAAI,aAAa,SAAS,QAAQ,CAC/E,QAAO;AAGT,KAAI,iBAAiB,sBACnB,QAAO;AAGT,KACE;EAAC;EAAgB;EAAU;EAAU;EAAS,CAAC,MAAM,SAAS,aAAa,WAAW,KAAK,CAAC,CAE5F,QAAO;AAGT,KAAI,aAAa,WAAW,QAAQ,CAClC,QAAO;;AAMX,MAAM,qBACJ,SAGA,SACY;AACZ,KAAI,CAAC,KACH,QAAO;AAET,KACE,QAAQ,QAAQ,IAAI,KAAK,IACzB,QAAQ,QAAQ,SAChB,QAAQ,QAAQ,IAAI,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,CAEnD,QAAO;AAET,QAAO;;AAGT,MAAa,gBAAgB,OAAO,EAClC,UACA,GAAG,cAIG;AACN,MAAK,MAAM,QAAQ,UAAU;AAC3B,MAAI,kBAAkB,SAAS,KAAK,KAAK,CACvC;EAGF,MAAM,QAAQ,MAAM,aAAa,MAAM,QAAQ,KAAK;AAEpD,MAAI,CAAC,MACH;EAGF,MAAM,OAAO,KAAK,QAAQ;AAE1B,UAAQ,KAAK,IAAb;GACE,KAAK;AACH,QAAI,CAAC,QAAQ,MACX,SAAQ,QAAQ,EAAE;AAEpB,YAAQ,MAAM,QAAQ;AACtB;GACF,KAAK;AACH,YAAQ,QAAQ,OAAO,UAAU,GAAG,KAAK,GAAG,QAAQ;AACpD;GAEF;AACE,YAAQ,QAAQ,IAAI,MAAM,MAAM;AAChC;;;;AAKR,MAAa,YAAgC,YAC3C,OAAO;CACL,SAAS,QAAQ;CACjB,MAAM,QAAQ;CACd,OAAO,QAAQ;CACf,iBACE,OAAO,QAAQ,oBAAoB,aAC/B,QAAQ,kBACR,sBAAsB,QAAQ,gBAAgB;CACpD,KAAK,QAAQ;CACd,CAAC;AAEJ,MAAa,gBAAgB,GAAW,MAAsB;CAC5D,MAAM,SAAS;EAAE,GAAG;EAAG,GAAG;EAAG;AAC7B,KAAI,OAAO,SAAS,SAAS,IAAI,CAC/B,QAAO,UAAU,OAAO,QAAQ,UAAU,GAAG,OAAO,QAAQ,SAAS,EAAE;AAEzE,QAAO,UAAU,aAAa,EAAE,SAAS,EAAE,QAAQ;AACnD,QAAO;;AAGT,MAAM,kBAAkB,YAA8C;CACpE,MAAM,UAAmC,EAAE;AAC3C,SAAQ,SAAS,OAAO,QAAQ;AAC9B,UAAQ,KAAK,CAAC,KAAK,MAAM,CAAC;GAC1B;AACF,QAAO;;AAGT,MAAa,gBACX,GAAG,YACS;CACZ,MAAM,gBAAgB,IAAI,SAAS;AACnC,MAAK,MAAM,UAAU,SAAS;AAC5B,MAAI,CAAC,OACH;EAGF,MAAM,WAAW,kBAAkB,UAAU,eAAe,OAAO,GAAG,OAAO,QAAQ,OAAO;AAE5F,OAAK,MAAM,CAAC,KAAK,UAAU,SACzB,KAAI,UAAU,KACZ,eAAc,OAAO,IAAI;WAChB,MAAM,QAAQ,MAAM,CAC7B,MAAK,MAAM,KAAK,MACd,eAAc,OAAO,KAAK,EAAY;WAE/B,UAAU,OAGnB,eAAc,IACZ,KACA,OAAO,UAAU,WAAW,KAAK,UAAU,MAAM,GAAI,MACtD;;AAIP,QAAO;;AAoBT,IAAM,eAAN,MAAgC;CAC9B,MAAiC,EAAE;CAEnC,QAAc;AACZ,OAAK,MAAM,EAAE;;CAGf,MAAM,IAAgC;EACpC,MAAM,QAAQ,KAAK,oBAAoB,GAAG;AAC1C,MAAI,KAAK,IAAI,OACX,MAAK,IAAI,SAAS;;CAItB,OAAO,IAAmC;EACxC,MAAM,QAAQ,KAAK,oBAAoB,GAAG;AAC1C,SAAO,QAAQ,KAAK,IAAI,OAAO;;CAGjC,oBAAoB,IAAkC;AACpD,MAAI,OAAO,OAAO,SAChB,QAAO,KAAK,IAAI,MAAM,KAAK;AAE7B,SAAO,KAAK,IAAI,QAAQ,GAAG;;CAG7B,OAAO,IAA0B,IAA+C;EAC9E,MAAM,QAAQ,KAAK,oBAAoB,GAAG;AAC1C,MAAI,KAAK,IAAI,QAAQ;AACnB,QAAK,IAAI,SAAS;AAClB,UAAO;;AAET,SAAO;;CAGT,IAAI,IAAyB;AAC3B,OAAK,IAAI,KAAK,GAAG;AACjB,SAAO,KAAK,IAAI,SAAS;;;AAU7B,MAAa,4BAKP;CACJ,OAAO,IAAI,cAAsD;CACjE,SAAS,IAAI,cAA4C;CACzD,UAAU,IAAI,cAAiD;CAChE;AAED,MAAM,yBAAyB,sBAAsB;CACnD,eAAe;CACf,OAAO;EACL,SAAS;EACT,OAAO;EACR;CACD,QAAQ;EACN,SAAS;EACT,OAAO;EACR;CACF,CAAC;AAEF,MAAM,iBAAiB,EACrB,gBAAgB,oBACjB;AAED,MAAa,gBACX,WAAqD,EAAE,MACT;CAC9C,GAAG;CACH,SAAS;CACT,SAAS;CACT,iBAAiB;CACjB,GAAG;CACJ;;;;ACxSD,MAAa,gBAAgB,SAAiB,EAAE,KAAa;CAC3D,IAAI,UAAU,aAAa,cAAc,EAAE,OAAO;CAElD,MAAM,mBAA2B,EAAE,GAAG,SAAS;CAE/C,MAAM,aAAa,WAA2B;AAC5C,YAAU,aAAa,SAAS,OAAO;AACvC,SAAO,WAAW;;CAGpB,MAAM,eAAe,oBAAwE;CAE7F,MAAM,gBAAgB,OAMpB,YACG;EACH,MAAM,OAAO;GACX,GAAG;GACH,GAAG;GACH,OAAO,QAAQ,SAAS,QAAQ,SAAS,WAAW;GACpD,SAAS,aAAa,QAAQ,SAAS,QAAQ,QAAQ;GACvD,gBAAgB;GACjB;AAED,MAAI,KAAK,SACP,OAAM,cAAc;GAClB,GAAG;GACH,UAAU,KAAK;GAChB,CAAC;AAGJ,MAAI,KAAK,iBACP,OAAM,KAAK,iBAAiB,KAAK;AAGnC,MAAI,KAAK,SAAS,UAAa,KAAK,eAClC,MAAK,iBAAiB,KAAK,eAAe,KAAK,KAAK;AAItD,MAAI,KAAK,SAAS,UAAa,KAAK,mBAAmB,GACrD,MAAK,QAAQ,OAAO,eAAe;EAGrC,MAAM,eAAe;AAIrB,SAAO;GAAE,MAAM;GAAc,KAFjB,SAAS,aAEW;GAAE;;CAGpC,MAAM,UAA6B,OAAO,YAAY;EACpD,MAAM,eAAe,QAAQ,gBAAgB,QAAQ;EACrD,MAAM,gBAAgB,QAAQ,iBAAiB,QAAQ;EAEvD,IAAI;EACJ,IAAI;AAEJ,MAAI;GACF,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,QAAQ;GAClD,MAAM,cAAuB;IAC3B,UAAU;IACV,GAAG;IACH,MAAM,oBAAoB,KAAK;IAChC;AAED,aAAU,IAAI,QAAQ,KAAK,YAAY;AAEvC,QAAK,MAAM,MAAM,aAAa,QAAQ,IACpC,KAAI,GACF,WAAU,MAAM,GAAG,SAAS,KAAK;GAMrC,MAAM,SAAS,KAAK;AAEpB,cAAW,MAAM,OAAO,QAAQ;AAEhC,QAAK,MAAM,MAAM,aAAa,SAAS,IACrC,KAAI,GACF,YAAW,MAAM,GAAG,UAAU,SAAS,KAAK;GAIhD,MAAM,SAAS;IACb;IACA;IACD;AAED,OAAI,SAAS,IAAI;IACf,MAAM,WACH,KAAK,YAAY,SACd,WAAW,SAAS,QAAQ,IAAI,eAAe,CAAC,GAChD,KAAK,YAAY;AAEvB,QAAI,SAAS,WAAW,OAAO,SAAS,QAAQ,IAAI,iBAAiB,KAAK,KAAK;KAC7E,IAAI;AACJ,aAAQ,SAAR;MACE,KAAK;MACL,KAAK;MACL,KAAK;AACH,mBAAY,MAAM,SAAS,UAAU;AACrC;MACF,KAAK;AACH,mBAAY,IAAI,UAAU;AAC1B;MACF,KAAK;AACH,mBAAY,SAAS;AACrB;MAEF;AACE,mBAAY,EAAE;AACd;;AAEJ,YAAO,KAAK,kBAAkB,SAC1B,YACA;MACE,MAAM;MACN,GAAG;MACJ;;IAGP,IAAI;AACJ,YAAQ,SAAR;KACE,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;AACH,aAAO,MAAM,SAAS,UAAU;AAChC;KACF,KAAK,QAAQ;MAGX,MAAM,OAAO,MAAM,SAAS,MAAM;AAClC,aAAO,OAAO,KAAK,MAAM,KAAK,GAAG,EAAE;AACnC;;KAEF,KAAK,SACH,QAAO,KAAK,kBAAkB,SAC1B,SAAS,OACT;MACE,MAAM,SAAS;MACf,GAAG;MACJ;;AAGT,QAAI,YAAY,QAAQ;AACtB,SAAI,KAAK,kBACP,OAAM,KAAK,kBAAkB,KAAK;AAGpC,SAAI,KAAK,oBACP,QAAO,MAAM,KAAK,oBAAoB,KAAK;;AAI/C,WAAO,KAAK,kBAAkB,SAC1B,OACA;KACE;KACA,GAAG;KACJ;;GAGP,MAAM,YAAY,MAAM,SAAS,MAAM;GACvC,IAAI;AAEJ,OAAI;AACF,gBAAY,KAAK,MAAM,UAAU;WAC3B;AAIR,SAAM,aAAa;WACZ,OAAO;GACd,IAAI,aAAa;AAEjB,QAAK,MAAM,MAAM,aAAa,MAAM,IAClC,KAAI,GACF,cAAa,MAAM,GAAG,YAAY,UAAU,SAAS,QAAkC;AAI3F,gBAAa,cAAc,EAAE;AAE7B,OAAI,aACF,OAAM;AAIR,UAAO,kBAAkB,SACrB,SACA;IACE,OAAO;IACP;IACA;IACD;;;CAIT,MAAM,gBAAgB,YAAmC,YACvD,QAAQ;EAAE,GAAG;EAAS;EAAQ,CAAC;CAEjC,MAAM,aAAa,WAAkC,OAAO,YAA4B;EACtF,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,QAAQ;AAClD,SAAO,gBAAgB;GACrB,GAAG;GACH,MAAM,KAAK;GACX;GACA,WAAW,OAAO,KAAK,SAAS;IAC9B,IAAI,UAAU,IAAI,QAAQ,KAAK,KAAK;AACpC,SAAK,MAAM,MAAM,aAAa,QAAQ,IACpC,KAAI,GACF,WAAU,MAAM,GAAG,SAAS,KAAK;AAGrC,WAAO;;GAET,gBAAgB,oBAAoB,KAAK;GACzC;GACD,CAAC;;CAGJ,MAAM,aAAiC,YAAY,SAAS;EAAE,GAAG;EAAS,GAAG;EAAS,CAAC;AAEvF,QAAO;EACL,UAAU;EACV,SAAS,aAAa,UAAU;EAChC,QAAQ,aAAa,SAAS;EAC9B,KAAK,aAAa,MAAM;EACxB;EACA,MAAM,aAAa,OAAO;EAC1B;EACA,SAAS,aAAa,UAAU;EAChC,OAAO,aAAa,QAAQ;EAC5B,MAAM,aAAa,OAAO;EAC1B,KAAK,aAAa,MAAM;EACxB;EACA;EACA,KAAK;GACH,SAAS,UAAU,UAAU;GAC7B,QAAQ,UAAU,SAAS;GAC3B,KAAK,UAAU,MAAM;GACrB,MAAM,UAAU,OAAO;GACvB,SAAS,UAAU,UAAU;GAC7B,OAAO,UAAU,QAAQ;GACzB,MAAM,UAAU,OAAO;GACvB,KAAK,UAAU,MAAM;GACrB,OAAO,UAAU,QAAQ;GAC1B;EACD,OAAO,aAAa,QAAQ;EAC7B;;;;;ACrQH,MAAa,SAAS,aAAa,cAA8B,CAAC;;;;;;;;;AC0FlE,MAAa,oBACX,aAEC,QAAQ,UAAU,QAAQ,IAAqE;CAC9F,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,4BACX,aAEC,QAAQ,UAAU,QAAQ,IAIzB;CAAE,KAAK;CAA4B,GAAG;CAAS,CAAC;;;;;;AAOpD,MAAa,uCACX,aAEC,QAAQ,UAAU,QAAQ,IAIzB;CAAE,KAAK;CAAwC,GAAG;CAAS,CAAC;;;;;;AAOhE,MAAa,aACX,aAEC,SAAS,UAAU,QAAQ,IAAuD;CACjF,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,yBACX,aAEC,QAAQ,UAAU,QAAQ,OAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,sBACX,aAEC,QAAQ,UAAU,QAAQ,IAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,4BACX,aAEC,QAAQ,UAAU,QAAQ,KAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC;;;;;;AAOJ,MAAa,wBACX,aAEC,QAAQ,UAAU,QAAQ,KAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC;;;;;;AAOJ,MAAa,aACX,aAEC,SAAS,UAAU,QAAQ,IAAuD;CACjF,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,sBACX,aAEC,QAAQ,UAAU,QAAQ,IAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,oCACX,aAEC,QAAQ,UAAU,QAAQ,OAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,kCACX,aAEC,QAAQ,UAAU,QAAQ,KAAqE;CAC9F,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC;;;;;;AAOJ,MAAa,6CACX,aAEC,QAAQ,UAAU,QAAQ,OAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,sDAGX,aAEC,QAAQ,UAAU,QAAQ,OAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,mDAGX,aAEC,QAAQ,UAAU,QAAQ,IAIzB;CACA,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC;;;;;;AAOJ,MAAa,iCACX,aAEC,QAAQ,UAAU,QAAQ,OAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,8BACX,aAEC,QAAQ,UAAU,QAAQ,IAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC;;;;;;AAOJ,MAAa,+BACX,aAEC,QAAQ,UAAU,QAAQ,OAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,kCACX,aAEC,QAAQ,UAAU,QAAQ,OACzB;CACE,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CACF;;;;;;AAOH,MAAa,gCACX,aAEC,QAAQ,UAAU,QAAQ,KAAmE;CAC5F,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC;;;;;;AAOJ,MAAa,8CACX,aAEC,QAAQ,UAAU,QAAQ,OAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,oDAGX,aAEC,QAAQ,UAAU,QAAQ,OAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,iDACX,aAEC,QAAQ,UAAU,QAAQ,IAIzB;CACA,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC;;;;;;AAOJ,MAAa,+BACX,aAEC,QAAQ,UAAU,QAAQ,IAIzB;CACA,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC;;;;;;AAOJ,MAAa,sBACX,aAEC,SAAS,UAAU,QAAQ,IAAwD;CAClF,KAAK;CACL,GAAG;CACJ,CAAC;;;;;;AAOJ,MAAa,4BACX,aAEC,QAAQ,UAAU,QAAQ,KAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC;;;;;;AAOJ,MAAa,wBACX,aAEC,QAAQ,UAAU,QAAQ,KAIzB;CACA,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACP,gBAAgB;EAChB,GAAG,QAAQ;EACZ;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/core/bodySerializer.gen.ts","../src/core/params.gen.ts","../src/core/serverSentEvents.gen.ts","../src/core/pathSerializer.gen.ts","../src/core/utils.gen.ts","../src/core/auth.gen.ts","../src/client/utils.gen.ts","../src/client/client.gen.ts","../src/client.gen.ts","../src/sdk.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ntype Slot = 'body' | 'headers' | 'path' | 'query';\n\nexport type Field =\n | {\n in: Exclude<Slot, 'body'>;\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If omitted, we use the same value as `key`.\n */\n map?: string;\n }\n | {\n in: Extract<Slot, 'body'>;\n /**\n * Key isn't required for bodies.\n */\n key?: string;\n map?: string;\n }\n | {\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If `in` is omitted, `map` aliases `key` to the transport layer.\n */\n map: Slot;\n };\n\nexport interface Fields {\n allowExtra?: Partial<Record<Slot, boolean>>;\n args?: ReadonlyArray<Field>;\n}\n\nexport type FieldsConfig = ReadonlyArray<Field | Fields>;\n\nconst extraPrefixesMap: Record<string, Slot> = {\n $body_: 'body',\n $headers_: 'headers',\n $path_: 'path',\n $query_: 'query',\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\n\ntype KeyMap = Map<\n string,\n | {\n in: Slot;\n map?: string;\n }\n | {\n in?: never;\n map: Slot;\n }\n>;\n\nconst buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => {\n if (!map) {\n map = new Map();\n }\n\n for (const config of fields) {\n if ('in' in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n } else if ('key' in config) {\n map.set(config.key, {\n map: config.map,\n });\n } else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n\n return map;\n};\n\ninterface Params {\n body: unknown;\n headers: Record<string, unknown>;\n path: Record<string, unknown>;\n query: Record<string, unknown>;\n}\n\nconst stripEmptySlots = (params: Params) => {\n for (const [slot, value] of Object.entries(params)) {\n if (value && typeof value === 'object' && !Array.isArray(value) && !Object.keys(value).length) {\n delete params[slot as Slot];\n }\n }\n};\n\nexport const buildClientParams = (args: ReadonlyArray<unknown>, fields: FieldsConfig) => {\n const params: Params = {\n body: {},\n headers: {},\n path: {},\n query: {},\n };\n\n const map = buildKeyMap(fields);\n\n let config: FieldsConfig[number] | undefined;\n\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n\n if (!config) {\n continue;\n }\n\n if ('in' in config) {\n if (config.key) {\n const field = map.get(config.key)!;\n const name = field.map || config.key;\n if (field.in) {\n (params[field.in] as Record<string, unknown>)[name] = arg;\n }\n } else {\n params.body = arg;\n }\n } else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n\n if (field) {\n if (field.in) {\n const name = field.map || key;\n (params[field.in] as Record<string, unknown>)[name] = value;\n } else {\n params[field.map] = value;\n }\n } else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n\n if (extra) {\n const [prefix, slot] = extra;\n (params[slot] as Record<string, unknown>)[key.slice(prefix.length)] = value;\n } else if ('allowExtra' in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n (params[slot as Slot] as Record<string, unknown>)[key] = value;\n break;\n }\n }\n }\n }\n }\n }\n }\n\n stripEmptySlots(params);\n\n return params;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://api.rixl.com/' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, formDataBodySerializer, type Options as Options2, type TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { DeleteImagesByImageIdData, DeleteImagesByImageIdErrors, DeleteImagesByImageIdResponses, DeleteVideosByVideoIdAudioTracksByTrackIdData, DeleteVideosByVideoIdAudioTracksByTrackIdErrors, DeleteVideosByVideoIdAudioTracksByTrackIdResponses, DeleteVideosByVideoIdAudioTracksData, DeleteVideosByVideoIdAudioTracksLanguageByLangCodeData, DeleteVideosByVideoIdAudioTracksLanguageByLangCodeResponses, DeleteVideosByVideoIdAudioTracksResponses, DeleteVideosByVideoIdChaptersData, DeleteVideosByVideoIdChaptersErrors, DeleteVideosByVideoIdChaptersResponses, DeleteVideosByVideoIdDeleteData, DeleteVideosByVideoIdDeleteErrors, DeleteVideosByVideoIdDeleteResponses, DeleteVideosByVideoIdSubtitlesBySubtitleIdData, DeleteVideosByVideoIdSubtitlesBySubtitleIdErrors, DeleteVideosByVideoIdSubtitlesBySubtitleIdResponses, DeleteVideosByVideoIdSubtitlesData, DeleteVideosByVideoIdSubtitlesLanguageByLangCodeData, DeleteVideosByVideoIdSubtitlesLanguageByLangCodeResponses, DeleteVideosByVideoIdSubtitlesResponses, GetFeedsByFeedIdByPostIdData, GetFeedsByFeedIdByPostIdErrors, GetFeedsByFeedIdByPostIdResponses, GetFeedsByFeedIdCreatorsByCreatorIdData, GetFeedsByFeedIdCreatorsByCreatorIdErrors, GetFeedsByFeedIdCreatorsByCreatorIdResponses, GetFeedsByFeedIdData, GetFeedsByFeedIdErrors, GetFeedsByFeedIdResponses, GetImagesByImageIdData, GetImagesByImageIdErrors, GetImagesByImageIdResponses, GetImagesData, GetImagesErrors, GetImagesResponses, GetVideosByVideoIdData, GetVideosByVideoIdErrors, GetVideosByVideoIdResponses, GetVideosData, GetVideosErrors, GetVideosLanguagesData, GetVideosLanguagesResponses, GetVideosResponses, PostImagesUploadCompleteData, PostImagesUploadCompleteErrors, PostImagesUploadCompleteResponses, PostImagesUploadInitData, PostImagesUploadInitErrors, PostImagesUploadInitResponses, PostVideosByVideoIdAudioTracksData, PostVideosByVideoIdAudioTracksResponses, PostVideosByVideoIdSubtitlesData, PostVideosByVideoIdSubtitlesResponses, PostVideosUploadCompleteData, PostVideosUploadCompleteErrors, PostVideosUploadCompleteResponses, PostVideosUploadInitData, PostVideosUploadInitErrors, PostVideosUploadInitResponses, PutVideosByVideoIdAudioTracksLanguageByLangCodeData, PutVideosByVideoIdAudioTracksLanguageByLangCodeResponses, PutVideosByVideoIdChaptersData, PutVideosByVideoIdChaptersErrors, PutVideosByVideoIdChaptersResponses, PutVideosByVideoIdSubtitlesLanguageByLangCodeData, PutVideosByVideoIdSubtitlesLanguageByLangCodeResponses, PutVideosByVideoIdThumbnailData, PutVideosByVideoIdThumbnailErrors, PutVideosByVideoIdThumbnailResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * List posts in a feed\n *\n * Retrieve posts in a feed, with pagination.\n */\nexport const getFeedsByFeedId = <ThrowOnError extends boolean = false>(options: Options<GetFeedsByFeedIdData, ThrowOnError>) => (options.client ?? client).get<GetFeedsByFeedIdResponses, GetFeedsByFeedIdErrors, ThrowOnError>({ url: '/feeds/{feedId}', ...options });\n\n/**\n * Get a post\n *\n * Retrieve a post from feed by its ID\n */\nexport const getFeedsByFeedIdByPostId = <ThrowOnError extends boolean = false>(options: Options<GetFeedsByFeedIdByPostIdData, ThrowOnError>) => (options.client ?? client).get<GetFeedsByFeedIdByPostIdResponses, GetFeedsByFeedIdByPostIdErrors, ThrowOnError>({ url: '/feeds/{feedId}/{postId}', ...options });\n\n/**\n * List posts by creator\n *\n * Retrieve posts in a feed by a specific creator, with pagination.\n */\nexport const getFeedsByFeedIdCreatorsByCreatorId = <ThrowOnError extends boolean = false>(options: Options<GetFeedsByFeedIdCreatorsByCreatorIdData, ThrowOnError>) => (options.client ?? client).get<GetFeedsByFeedIdCreatorsByCreatorIdResponses, GetFeedsByFeedIdCreatorsByCreatorIdErrors, ThrowOnError>({ url: '/feeds/{feedId}/creators/{creatorId}', ...options });\n\n/**\n * List images for a project\n *\n * Retrieve all images for a specific project, with pagination and sorting.\n */\nexport const getImages = <ThrowOnError extends boolean = false>(options?: Options<GetImagesData, ThrowOnError>) => (options?.client ?? client).get<GetImagesResponses, GetImagesErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/images',\n ...options\n});\n\n/**\n * Delete image\n *\n * delete an image by marking it as deleted\n */\nexport const deleteImagesByImageId = <ThrowOnError extends boolean = false>(options: Options<DeleteImagesByImageIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteImagesByImageIdResponses, DeleteImagesByImageIdErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/images/{imageId}',\n ...options\n});\n\n/**\n * Get image\n *\n * Retrieve an image by its ID for a specific project.\n */\nexport const getImagesByImageId = <ThrowOnError extends boolean = false>(options: Options<GetImagesByImageIdData, ThrowOnError>) => (options.client ?? client).get<GetImagesByImageIdResponses, GetImagesByImageIdErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/images/{imageId}',\n ...options\n});\n\n/**\n * Upload: Mark as complete\n *\n * Complete the upload process and create the image record using API key authentication\n */\nexport const postImagesUploadComplete = <ThrowOnError extends boolean = false>(options: Options<PostImagesUploadCompleteData, ThrowOnError>) => (options.client ?? client).post<PostImagesUploadCompleteResponses, PostImagesUploadCompleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/images/upload/complete',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Upload: Init\n *\n * Initialize a presigned URL upload for an image file using API key authentication\n */\nexport const postImagesUploadInit = <ThrowOnError extends boolean = false>(options: Options<PostImagesUploadInitData, ThrowOnError>) => (options.client ?? client).post<PostImagesUploadInitResponses, PostImagesUploadInitErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/images/upload/init',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List videos for a project\n *\n * Retrieve all videos for a specific project, with pagination and sorting.\n */\nexport const getVideos = <ThrowOnError extends boolean = false>(options?: Options<GetVideosData, ThrowOnError>) => (options?.client ?? client).get<GetVideosResponses, GetVideosErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos',\n ...options\n});\n\n/**\n * Get a video\n *\n * Retrieve a video by its ID for a specific project.\n */\nexport const getVideosByVideoId = <ThrowOnError extends boolean = false>(options: Options<GetVideosByVideoIdData, ThrowOnError>) => (options.client ?? client).get<GetVideosByVideoIdResponses, GetVideosByVideoIdErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}',\n ...options\n});\n\n/**\n * Delete all audio tracks\n *\n * Remove all additional audio tracks from a video using API key authentication\n */\nexport const deleteVideosByVideoIdAudioTracks = <ThrowOnError extends boolean = false>(options: Options<DeleteVideosByVideoIdAudioTracksData, ThrowOnError>) => (options.client ?? client).delete<DeleteVideosByVideoIdAudioTracksResponses, unknown, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/audio-tracks',\n ...options\n});\n\n/**\n * Bulk upsert video audio tracks\n *\n * Replace all audio tracks with the provided ones using API key authentication\n */\nexport const postVideosByVideoIdAudioTracks = <ThrowOnError extends boolean = false>(options: Options<PostVideosByVideoIdAudioTracksData, ThrowOnError>) => (options.client ?? client).post<PostVideosByVideoIdAudioTracksResponses, unknown, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/audio-tracks',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * Delete audio track\n *\n * Remove an additional audio track from a video using API key authentication\n */\nexport const deleteVideosByVideoIdAudioTracksByTrackId = <ThrowOnError extends boolean = false>(options: Options<DeleteVideosByVideoIdAudioTracksByTrackIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteVideosByVideoIdAudioTracksByTrackIdResponses, DeleteVideosByVideoIdAudioTracksByTrackIdErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/audio-tracks/{trackId}',\n ...options\n});\n\n/**\n * Delete audio track by language\n *\n * Remove an audio track for a specific language using API key authentication\n */\nexport const deleteVideosByVideoIdAudioTracksLanguageByLangCode = <ThrowOnError extends boolean = false>(options: Options<DeleteVideosByVideoIdAudioTracksLanguageByLangCodeData, ThrowOnError>) => (options.client ?? client).delete<DeleteVideosByVideoIdAudioTracksLanguageByLangCodeResponses, unknown, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/audio-tracks/language/{lang_code}',\n ...options\n});\n\n/**\n * Upsert video audio track\n *\n * Add or replace an audio track for a specific language using API key authentication\n */\nexport const putVideosByVideoIdAudioTracksLanguageByLangCode = <ThrowOnError extends boolean = false>(options: Options<PutVideosByVideoIdAudioTracksLanguageByLangCodeData, ThrowOnError>) => (options.client ?? client).put<PutVideosByVideoIdAudioTracksLanguageByLangCodeResponses, unknown, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/audio-tracks/language/{lang_code}',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * Delete video chapters\n *\n * Remove all chapters from a video using API key authentication\n */\nexport const deleteVideosByVideoIdChapters = <ThrowOnError extends boolean = false>(options: Options<DeleteVideosByVideoIdChaptersData, ThrowOnError>) => (options.client ?? client).delete<DeleteVideosByVideoIdChaptersResponses, DeleteVideosByVideoIdChaptersErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/chapters',\n ...options\n});\n\n/**\n * Update video chapters\n *\n * Replace all chapters for a video (atomic PUT operation) using API key authentication\n */\nexport const putVideosByVideoIdChapters = <ThrowOnError extends boolean = false>(options: Options<PutVideosByVideoIdChaptersData, ThrowOnError>) => (options.client ?? client).put<PutVideosByVideoIdChaptersResponses, PutVideosByVideoIdChaptersErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/chapters',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete video\n *\n * Delete a video by its ID within a project\n */\nexport const deleteVideosByVideoIdDelete = <ThrowOnError extends boolean = false>(options: Options<DeleteVideosByVideoIdDeleteData, ThrowOnError>) => (options.client ?? client).delete<DeleteVideosByVideoIdDeleteResponses, DeleteVideosByVideoIdDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/delete',\n ...options\n});\n\n/**\n * Delete all subtitles\n *\n * Remove all subtitles from a video using API key authentication\n */\nexport const deleteVideosByVideoIdSubtitles = <ThrowOnError extends boolean = false>(options: Options<DeleteVideosByVideoIdSubtitlesData, ThrowOnError>) => (options.client ?? client).delete<DeleteVideosByVideoIdSubtitlesResponses, unknown, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/subtitles',\n ...options\n});\n\n/**\n * Bulk upsert video subtitles\n *\n * Replace all subtitles with the provided ones using API key authentication\n */\nexport const postVideosByVideoIdSubtitles = <ThrowOnError extends boolean = false>(options: Options<PostVideosByVideoIdSubtitlesData, ThrowOnError>) => (options.client ?? client).post<PostVideosByVideoIdSubtitlesResponses, unknown, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/subtitles',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * Delete subtitle\n *\n * Remove a subtitle from a video using API key authentication\n */\nexport const deleteVideosByVideoIdSubtitlesBySubtitleId = <ThrowOnError extends boolean = false>(options: Options<DeleteVideosByVideoIdSubtitlesBySubtitleIdData, ThrowOnError>) => (options.client ?? client).delete<DeleteVideosByVideoIdSubtitlesBySubtitleIdResponses, DeleteVideosByVideoIdSubtitlesBySubtitleIdErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/subtitles/{subtitleId}',\n ...options\n});\n\n/**\n * Delete subtitle by language\n *\n * Remove a subtitle for a specific language using API key authentication\n */\nexport const deleteVideosByVideoIdSubtitlesLanguageByLangCode = <ThrowOnError extends boolean = false>(options: Options<DeleteVideosByVideoIdSubtitlesLanguageByLangCodeData, ThrowOnError>) => (options.client ?? client).delete<DeleteVideosByVideoIdSubtitlesLanguageByLangCodeResponses, unknown, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/subtitles/language/{lang_code}',\n ...options\n});\n\n/**\n * Upsert video subtitle\n *\n * Add or replace a subtitle for a specific language using API key authentication\n */\nexport const putVideosByVideoIdSubtitlesLanguageByLangCode = <ThrowOnError extends boolean = false>(options: Options<PutVideosByVideoIdSubtitlesLanguageByLangCodeData, ThrowOnError>) => (options.client ?? client).put<PutVideosByVideoIdSubtitlesLanguageByLangCodeResponses, unknown, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/subtitles/language/{lang_code}',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * Update video thumbnail\n *\n * Update the thumbnail image for an existing video using API key authentication\n */\nexport const putVideosByVideoIdThumbnail = <ThrowOnError extends boolean = false>(options: Options<PutVideosByVideoIdThumbnailData, ThrowOnError>) => (options.client ?? client).put<PutVideosByVideoIdThumbnailResponses, PutVideosByVideoIdThumbnailErrors, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/{videoId}/thumbnail',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * List available subtitle languages\n *\n * Get list of supported languages for subtitles\n */\nexport const getVideosLanguages = <ThrowOnError extends boolean = false>(options?: Options<GetVideosLanguagesData, ThrowOnError>) => (options?.client ?? client).get<GetVideosLanguagesResponses, unknown, ThrowOnError>({ url: '/videos/languages', ...options });\n\n/**\n * Upload: Mark as complete\n *\n * Mark a video upload as complete after successful upload to storage using API key authentication\n */\nexport const postVideosUploadComplete = <ThrowOnError extends boolean = false>(options: Options<PostVideosUploadCompleteData, ThrowOnError>) => (options.client ?? client).post<PostVideosUploadCompleteResponses, PostVideosUploadCompleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/upload/complete',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Upload: Init\n *\n * Initialize a video upload and get presigned URLs for video and poster using API key authentication\n */\nexport const postVideosUploadInit = <ThrowOnError extends boolean = false>(options: Options<PostVideosUploadInitData, ThrowOnError>) => (options.client ?? client).post<PostVideosUploadInitResponses, PostVideosUploadInitErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/videos/upload/init',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n"],"mappings":";AAsBA,MAAM,yBAAyB,MAAgB,KAAa,UAAyB;AACnF,KAAI,OAAO,UAAU,YAAY,iBAAiB,KAChD,MAAK,OAAO,KAAK,MAAM;UACd,iBAAiB,KAC1B,MAAK,OAAO,KAAK,MAAM,aAAa,CAAC;KAErC,MAAK,OAAO,KAAK,KAAK,UAAU,MAAM,CAAC;;AAY3C,MAAa,yBAAyB,EACpC,iBAAiB,SAA4B;CAC3C,MAAM,OAAO,IAAI,UAAU;AAE3B,QAAO,QAAQ,KAAgC,CAAC,SAAS,CAAC,KAAK,WAAW;AACxE,MAAI,UAAU,UAAa,UAAU,KACnC;AAEF,MAAI,MAAM,QAAQ,MAAM,CACtB,OAAM,SAAS,MAAM,sBAAsB,MAAM,KAAK,EAAE,CAAC;MAEzD,uBAAsB,MAAM,KAAK,MAAM;GAEzC;AAEF,QAAO;GAEV;AAED,MAAa,qBAAqB,EAChC,iBAAiB,SACf,KAAK,UAAU,OAAO,MAAM,UAAW,OAAO,UAAU,WAAW,MAAM,UAAU,GAAG,MAAO,EAChG;;;;ACZD,MAAM,gBAAgB,OAAO,QAAQ;CALnC,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,SAAS;CAE0C,CAAC;;;;AC+BtD,SAAgB,gBAAiC,EAC/C,WACA,YACA,YACA,qBACA,mBACA,sBACA,qBACA,kBACA,YACA,KACA,GAAG,WACsD;CACzD,IAAI;CAEJ,MAAM,QAAQ,gBAAgB,OAAe,IAAI,SAAS,YAAY,WAAW,SAAS,GAAG,CAAC;CAE9F,MAAM,eAAe,mBAAmB;EACtC,IAAI,aAAqB,wBAAwB;EACjD,IAAI,UAAU;EACd,MAAM,SAAS,QAAQ,UAAU,IAAI,iBAAiB,CAAC;AAEvD,SAAO,MAAM;AACX,OAAI,OAAO,QAAS;AAEpB;GAEA,MAAM,UACJ,QAAQ,mBAAmB,UACvB,QAAQ,UACR,IAAI,QAAQ,QAAQ,QAA8C;AAExE,OAAI,gBAAgB,OAClB,SAAQ,IAAI,iBAAiB,YAAY;AAG3C,OAAI;IACF,MAAM,cAA2B;KAC/B,UAAU;KACV,GAAG;KACH,MAAM,QAAQ;KACd;KACA;KACD;IACD,IAAI,UAAU,IAAI,QAAQ,KAAK,YAAY;AAC3C,QAAI,UACF,WAAU,MAAM,UAAU,KAAK,YAAY;IAK7C,MAAM,WAAW,OADF,QAAQ,SAAS,WAAW,OACb,QAAQ;AAEtC,QAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,eAAe,SAAS,OAAO,GAAG,SAAS,aAAa;AAE1F,QAAI,CAAC,SAAS,KAAM,OAAM,IAAI,MAAM,0BAA0B;IAE9D,MAAM,SAAS,SAAS,KAAK,YAAY,IAAI,mBAAmB,CAAC,CAAC,WAAW;IAE7E,IAAI,SAAS;IAEb,MAAM,qBAAqB;AACzB,SAAI;AACF,aAAO,QAAQ;aACT;;AAKV,WAAO,iBAAiB,SAAS,aAAa;AAE9C,QAAI;AACF,YAAO,MAAM;MACX,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM;AAC3C,UAAI,KAAM;AACV,gBAAU;AACV,eAAS,OAAO,QAAQ,UAAU,KAAK;MAEvC,MAAM,SAAS,OAAO,MAAM,OAAO;AACnC,eAAS,OAAO,KAAK,IAAI;AAEzB,WAAK,MAAM,SAAS,QAAQ;OAC1B,MAAM,QAAQ,MAAM,MAAM,KAAK;OAC/B,MAAM,YAA2B,EAAE;OACnC,IAAI;AAEJ,YAAK,MAAM,QAAQ,MACjB,KAAI,KAAK,WAAW,QAAQ,CAC1B,WAAU,KAAK,KAAK,QAAQ,aAAa,GAAG,CAAC;gBACpC,KAAK,WAAW,SAAS,CAClC,aAAY,KAAK,QAAQ,cAAc,GAAG;gBACjC,KAAK,WAAW,MAAM,CAC/B,eAAc,KAAK,QAAQ,WAAW,GAAG;gBAChC,KAAK,WAAW,SAAS,EAAE;QACpC,MAAM,SAAS,OAAO,SAAS,KAAK,QAAQ,cAAc,GAAG,EAAE,GAAG;AAClE,YAAI,CAAC,OAAO,MAAM,OAAO,CACvB,cAAa;;OAKnB,IAAI;OACJ,IAAI,aAAa;AAEjB,WAAI,UAAU,QAAQ;QACpB,MAAM,UAAU,UAAU,KAAK,KAAK;AACpC,YAAI;AACF,gBAAO,KAAK,MAAM,QAAQ;AAC1B,sBAAa;gBACP;AACN,gBAAO;;;AAIX,WAAI,YAAY;AACd,YAAI,kBACF,OAAM,kBAAkB,KAAK;AAG/B,YAAI,oBACF,QAAO,MAAM,oBAAoB,KAAK;;AAI1C,oBAAa;QACX;QACA,OAAO;QACP,IAAI;QACJ,OAAO;QACR,CAAC;AAEF,WAAI,UAAU,OACZ,OAAM;;;cAIJ;AACR,YAAO,oBAAoB,SAAS,aAAa;AACjD,YAAO,aAAa;;AAGtB;YACO,OAAO;AAEd,iBAAa,MAAM;AAEnB,QAAI,wBAAwB,UAAa,WAAW,oBAClD;AAKF,UAAM,MADU,KAAK,IAAI,aAAa,MAAM,UAAU,IAAI,oBAAoB,IAC3D,CAAC;;;;AAO1B,QAAO,EAAE,QAFM,cAEA,EAAE;;;;;ACrNnB,MAAa,yBAAyB,UAA+B;AACnE,SAAQ,OAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,2BAA2B,UAA+B;AACrE,SAAQ,OAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK,gBACH,QAAO;EACT,KAAK,iBACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,0BAA0B,UAAgC;AACrE,SAAQ,OAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,uBAAuB,EAClC,eACA,SACA,MACA,OACA,YAGI;AACJ,KAAI,CAAC,SAAS;EACZ,MAAM,gBACJ,gBAAgB,QAAQ,MAAM,KAAK,MAAM,mBAAmB,EAAY,CAAC,EACzE,KAAK,wBAAwB,MAAM,CAAC;AACtC,UAAQ,OAAR;GACE,KAAK,QACH,QAAO,IAAI;GACb,KAAK,SACH,QAAO,IAAI,KAAK,GAAG;GACrB,KAAK,SACH,QAAO;GACT,QACE,QAAO,GAAG,KAAK,GAAG;;;CAIxB,MAAM,YAAY,sBAAsB,MAAM;CAC9C,MAAM,eAAe,MAClB,KAAK,MAAM;AACV,MAAI,UAAU,WAAW,UAAU,SACjC,QAAO,gBAAgB,IAAI,mBAAmB,EAAY;AAG5D,SAAO,wBAAwB;GAC7B;GACA;GACA,OAAO;GACR,CAAC;GACF,CACD,KAAK,UAAU;AAClB,QAAO,UAAU,WAAW,UAAU,WAAW,YAAY,eAAe;;AAG9E,MAAa,2BAA2B,EACtC,eACA,MACA,YAC6B;AAC7B,KAAI,UAAU,UAAa,UAAU,KACnC,QAAO;AAGT,KAAI,OAAO,UAAU,SACnB,OAAM,IAAI,MACR,uGACD;AAGH,QAAO,GAAG,KAAK,GAAG,gBAAgB,QAAQ,mBAAmB,MAAM;;AAGrE,MAAa,wBAAwB,EACnC,eACA,SACA,MACA,OACA,OACA,gBAII;AACJ,KAAI,iBAAiB,KACnB,QAAO,YAAY,MAAM,aAAa,GAAG,GAAG,KAAK,GAAG,MAAM,aAAa;AAGzE,KAAI,UAAU,gBAAgB,CAAC,SAAS;EACtC,IAAI,SAAmB,EAAE;AACzB,SAAO,QAAQ,MAAM,CAAC,SAAS,CAAC,KAAK,OAAO;AAC1C,YAAS;IAAC,GAAG;IAAQ;IAAK,gBAAiB,IAAe,mBAAmB,EAAY;IAAC;IAC1F;EACF,MAAM,eAAe,OAAO,KAAK,IAAI;AACrC,UAAQ,OAAR;GACE,KAAK,OACH,QAAO,GAAG,KAAK,GAAG;GACpB,KAAK,QACH,QAAO,IAAI;GACb,KAAK,SACH,QAAO,IAAI,KAAK,GAAG;GACrB,QACE,QAAO;;;CAIb,MAAM,YAAY,uBAAuB,MAAM;CAC/C,MAAM,eAAe,OAAO,QAAQ,MAAM,CACvC,KAAK,CAAC,KAAK,OACV,wBAAwB;EACtB;EACA,MAAM,UAAU,eAAe,GAAG,KAAK,GAAG,IAAI,KAAK;EACnD,OAAO;EACR,CAAC,CACH,CACA,KAAK,UAAU;AAClB,QAAO,UAAU,WAAW,UAAU,WAAW,YAAY,eAAe;;;;;AC1J9E,MAAa,gBAAgB;AAE7B,MAAa,yBAAyB,EAAE,MAAM,KAAK,WAA2B;CAC5E,IAAI,MAAM;CACV,MAAM,UAAU,KAAK,MAAM,cAAc;AACzC,KAAI,QACF,MAAK,MAAM,SAAS,SAAS;EAC3B,IAAI,UAAU;EACd,IAAI,OAAO,MAAM,UAAU,GAAG,MAAM,SAAS,EAAE;EAC/C,IAAI,QAA6B;AAEjC,MAAI,KAAK,SAAS,IAAI,EAAE;AACtB,aAAU;AACV,UAAO,KAAK,UAAU,GAAG,KAAK,SAAS,EAAE;;AAG3C,MAAI,KAAK,WAAW,IAAI,EAAE;AACxB,UAAO,KAAK,UAAU,EAAE;AACxB,WAAQ;aACC,KAAK,WAAW,IAAI,EAAE;AAC/B,UAAO,KAAK,UAAU,EAAE;AACxB,WAAQ;;EAGV,MAAM,QAAQ,KAAK;AAEnB,MAAI,UAAU,UAAa,UAAU,KACnC;AAGF,MAAI,MAAM,QAAQ,MAAM,EAAE;AACxB,SAAM,IAAI,QAAQ,OAAO,oBAAoB;IAAE;IAAS;IAAM;IAAO;IAAO,CAAC,CAAC;AAC9E;;AAGF,MAAI,OAAO,UAAU,UAAU;AAC7B,SAAM,IAAI,QACR,OACA,qBAAqB;IACnB;IACA;IACA;IACO;IACP,WAAW;IACZ,CAAC,CACH;AACD;;AAGF,MAAI,UAAU,UAAU;AACtB,SAAM,IAAI,QACR,OACA,IAAI,wBAAwB;IAC1B;IACO;IACR,CAAC,GACH;AACD;;EAGF,MAAM,eAAe,mBACnB,UAAU,UAAU,IAAI,UAAqB,MAC9C;AACD,QAAM,IAAI,QAAQ,OAAO,aAAa;;AAG1C,QAAO;;AAGT,MAAa,UAAU,EACrB,SACA,MACA,OACA,iBACA,KAAK,WAOD;CACJ,MAAM,UAAU,KAAK,WAAW,IAAI,GAAG,OAAO,IAAI;CAClD,IAAI,OAAO,WAAW,MAAM;AAC5B,KAAI,KACF,OAAM,sBAAsB;EAAE;EAAM;EAAK,CAAC;CAE5C,IAAI,SAAS,QAAQ,gBAAgB,MAAM,GAAG;AAC9C,KAAI,OAAO,WAAW,IAAI,CACxB,UAAS,OAAO,UAAU,EAAE;AAE9B,KAAI,OACF,QAAO,IAAI;AAEb,QAAO;;AAGT,SAAgB,oBAAoB,SAIjC;CACD,MAAM,UAAU,QAAQ,SAAS;AAGjC,KAFyB,WAAW,QAAQ,gBAEtB;AACpB,MAAI,oBAAoB,QAItB,QAFE,QAAQ,mBAAmB,UAAa,QAAQ,mBAAmB,KAE1C,QAAQ,iBAAiB;AAItD,SAAO,QAAQ,SAAS,KAAK,QAAQ,OAAO;;AAI9C,KAAI,QACF,QAAO,QAAQ;;;;;ACjHnB,MAAa,eAAe,OAC1B,MACA,aACgC;CAChC,MAAM,QAAQ,OAAO,aAAa,aAAa,MAAM,SAAS,KAAK,GAAG;AAEtE,KAAI,CAAC,MACH;AAGF,KAAI,KAAK,WAAW,SAClB,QAAO,UAAU;AAGnB,KAAI,KAAK,WAAW,QAClB,QAAO,SAAS,KAAK,MAAM;AAG7B,QAAO;;;;;AC1BT,MAAa,yBAAsC,EACjD,aAAa,EAAE,EACf,GAAG,SACuB,EAAE,KAAK;CACjC,MAAM,mBAAmB,gBAAmB;EAC1C,MAAM,SAAmB,EAAE;AAC3B,MAAI,eAAe,OAAO,gBAAgB,SACxC,MAAK,MAAM,QAAQ,aAAa;GAC9B,MAAM,QAAQ,YAAY;AAE1B,OAAI,UAAU,UAAa,UAAU,KACnC;GAGF,MAAM,UAAU,WAAW,SAAS;AAEpC,OAAI,MAAM,QAAQ,MAAM,EAAE;IACxB,MAAM,kBAAkB,oBAAoB;KAC1C,eAAe,QAAQ;KACvB,SAAS;KACT;KACA,OAAO;KACP;KACA,GAAG,QAAQ;KACZ,CAAC;AACF,QAAI,gBAAiB,QAAO,KAAK,gBAAgB;cACxC,OAAO,UAAU,UAAU;IACpC,MAAM,mBAAmB,qBAAqB;KAC5C,eAAe,QAAQ;KACvB,SAAS;KACT;KACA,OAAO;KACA;KACP,GAAG,QAAQ;KACZ,CAAC;AACF,QAAI,iBAAkB,QAAO,KAAK,iBAAiB;UAC9C;IACL,MAAM,sBAAsB,wBAAwB;KAClD,eAAe,QAAQ;KACvB;KACO;KACR,CAAC;AACF,QAAI,oBAAqB,QAAO,KAAK,oBAAoB;;;AAI/D,SAAO,OAAO,KAAK,IAAI;;AAEzB,QAAO;;;;;AAMT,MAAa,cAAc,gBAAmE;AAC5F,KAAI,CAAC,YAGH,QAAO;CAGT,MAAM,eAAe,YAAY,MAAM,IAAI,CAAC,IAAI,MAAM;AAEtD,KAAI,CAAC,aACH;AAGF,KAAI,aAAa,WAAW,mBAAmB,IAAI,aAAa,SAAS,QAAQ,CAC/E,QAAO;AAGT,KAAI,iBAAiB,sBACnB,QAAO;AAGT,KACE;EAAC;EAAgB;EAAU;EAAU;EAAS,CAAC,MAAM,SAAS,aAAa,WAAW,KAAK,CAAC,CAE5F,QAAO;AAGT,KAAI,aAAa,WAAW,QAAQ,CAClC,QAAO;;AAMX,MAAM,qBACJ,SAGA,SACY;AACZ,KAAI,CAAC,KACH,QAAO;AAET,KACE,QAAQ,QAAQ,IAAI,KAAK,IACzB,QAAQ,QAAQ,SAChB,QAAQ,QAAQ,IAAI,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,CAEnD,QAAO;AAET,QAAO;;AAGT,MAAa,gBAAgB,OAAO,EAClC,UACA,GAAG,cAIG;AACN,MAAK,MAAM,QAAQ,UAAU;AAC3B,MAAI,kBAAkB,SAAS,KAAK,KAAK,CACvC;EAGF,MAAM,QAAQ,MAAM,aAAa,MAAM,QAAQ,KAAK;AAEpD,MAAI,CAAC,MACH;EAGF,MAAM,OAAO,KAAK,QAAQ;AAE1B,UAAQ,KAAK,IAAb;GACE,KAAK;AACH,QAAI,CAAC,QAAQ,MACX,SAAQ,QAAQ,EAAE;AAEpB,YAAQ,MAAM,QAAQ;AACtB;GACF,KAAK;AACH,YAAQ,QAAQ,OAAO,UAAU,GAAG,KAAK,GAAG,QAAQ;AACpD;GAEF;AACE,YAAQ,QAAQ,IAAI,MAAM,MAAM;AAChC;;;;AAKR,MAAa,YAAgC,YAC3C,OAAO;CACL,SAAS,QAAQ;CACjB,MAAM,QAAQ;CACd,OAAO,QAAQ;CACf,iBACE,OAAO,QAAQ,oBAAoB,aAC/B,QAAQ,kBACR,sBAAsB,QAAQ,gBAAgB;CACpD,KAAK,QAAQ;CACd,CAAC;AAEJ,MAAa,gBAAgB,GAAW,MAAsB;CAC5D,MAAM,SAAS;EAAE,GAAG;EAAG,GAAG;EAAG;AAC7B,KAAI,OAAO,SAAS,SAAS,IAAI,CAC/B,QAAO,UAAU,OAAO,QAAQ,UAAU,GAAG,OAAO,QAAQ,SAAS,EAAE;AAEzE,QAAO,UAAU,aAAa,EAAE,SAAS,EAAE,QAAQ;AACnD,QAAO;;AAGT,MAAM,kBAAkB,YAA8C;CACpE,MAAM,UAAmC,EAAE;AAC3C,SAAQ,SAAS,OAAO,QAAQ;AAC9B,UAAQ,KAAK,CAAC,KAAK,MAAM,CAAC;GAC1B;AACF,QAAO;;AAGT,MAAa,gBACX,GAAG,YACS;CACZ,MAAM,gBAAgB,IAAI,SAAS;AACnC,MAAK,MAAM,UAAU,SAAS;AAC5B,MAAI,CAAC,OACH;EAGF,MAAM,WAAW,kBAAkB,UAAU,eAAe,OAAO,GAAG,OAAO,QAAQ,OAAO;AAE5F,OAAK,MAAM,CAAC,KAAK,UAAU,SACzB,KAAI,UAAU,KACZ,eAAc,OAAO,IAAI;WAChB,MAAM,QAAQ,MAAM,CAC7B,MAAK,MAAM,KAAK,MACd,eAAc,OAAO,KAAK,EAAY;WAE/B,UAAU,OAGnB,eAAc,IACZ,KACA,OAAO,UAAU,WAAW,KAAK,UAAU,MAAM,GAAI,MACtD;;AAIP,QAAO;;AAoBT,IAAM,eAAN,MAAgC;CAC9B,MAAiC,EAAE;CAEnC,QAAc;AACZ,OAAK,MAAM,EAAE;;CAGf,MAAM,IAAgC;EACpC,MAAM,QAAQ,KAAK,oBAAoB,GAAG;AAC1C,MAAI,KAAK,IAAI,OACX,MAAK,IAAI,SAAS;;CAItB,OAAO,IAAmC;EACxC,MAAM,QAAQ,KAAK,oBAAoB,GAAG;AAC1C,SAAO,QAAQ,KAAK,IAAI,OAAO;;CAGjC,oBAAoB,IAAkC;AACpD,MAAI,OAAO,OAAO,SAChB,QAAO,KAAK,IAAI,MAAM,KAAK;AAE7B,SAAO,KAAK,IAAI,QAAQ,GAAG;;CAG7B,OAAO,IAA0B,IAA+C;EAC9E,MAAM,QAAQ,KAAK,oBAAoB,GAAG;AAC1C,MAAI,KAAK,IAAI,QAAQ;AACnB,QAAK,IAAI,SAAS;AAClB,UAAO;;AAET,SAAO;;CAGT,IAAI,IAAyB;AAC3B,OAAK,IAAI,KAAK,GAAG;AACjB,SAAO,KAAK,IAAI,SAAS;;;AAU7B,MAAa,4BAKP;CACJ,OAAO,IAAI,cAAsD;CACjE,SAAS,IAAI,cAA4C;CACzD,UAAU,IAAI,cAAiD;CAChE;AAED,MAAM,yBAAyB,sBAAsB;CACnD,eAAe;CACf,OAAO;EACL,SAAS;EACT,OAAO;EACR;CACD,QAAQ;EACN,SAAS;EACT,OAAO;EACR;CACF,CAAC;AAEF,MAAM,iBAAiB,EACrB,gBAAgB,oBACjB;AAED,MAAa,gBACX,WAAqD,EAAE,MACT;CAC9C,GAAG;CACH,SAAS;CACT,SAAS;CACT,iBAAiB;CACjB,GAAG;CACJ;;;;ACxSD,MAAa,gBAAgB,SAAiB,EAAE,KAAa;CAC3D,IAAI,UAAU,aAAa,cAAc,EAAE,OAAO;CAElD,MAAM,mBAA2B,EAAE,GAAG,SAAS;CAE/C,MAAM,aAAa,WAA2B;AAC5C,YAAU,aAAa,SAAS,OAAO;AACvC,SAAO,WAAW;;CAGpB,MAAM,eAAe,oBAAwE;CAE7F,MAAM,gBAAgB,OAMpB,YACG;EACH,MAAM,OAAO;GACX,GAAG;GACH,GAAG;GACH,OAAO,QAAQ,SAAS,QAAQ,SAAS,WAAW;GACpD,SAAS,aAAa,QAAQ,SAAS,QAAQ,QAAQ;GACvD,gBAAgB;GACjB;AAED,MAAI,KAAK,SACP,OAAM,cAAc;GAClB,GAAG;GACH,UAAU,KAAK;GAChB,CAAC;AAGJ,MAAI,KAAK,iBACP,OAAM,KAAK,iBAAiB,KAAK;AAGnC,MAAI,KAAK,SAAS,UAAa,KAAK,eAClC,MAAK,iBAAiB,KAAK,eAAe,KAAK,KAAK;AAItD,MAAI,KAAK,SAAS,UAAa,KAAK,mBAAmB,GACrD,MAAK,QAAQ,OAAO,eAAe;EAGrC,MAAM,eAAe;AAIrB,SAAO;GAAE,MAAM;GAAc,KAFjB,SAAS,aAEW;GAAE;;CAGpC,MAAM,UAA6B,OAAO,YAAY;EACpD,MAAM,eAAe,QAAQ,gBAAgB,QAAQ;EACrD,MAAM,gBAAgB,QAAQ,iBAAiB,QAAQ;EAEvD,IAAI;EACJ,IAAI;AAEJ,MAAI;GACF,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,QAAQ;GAClD,MAAM,cAAuB;IAC3B,UAAU;IACV,GAAG;IACH,MAAM,oBAAoB,KAAK;IAChC;AAED,aAAU,IAAI,QAAQ,KAAK,YAAY;AAEvC,QAAK,MAAM,MAAM,aAAa,QAAQ,IACpC,KAAI,GACF,WAAU,MAAM,GAAG,SAAS,KAAK;GAMrC,MAAM,SAAS,KAAK;AAEpB,cAAW,MAAM,OAAO,QAAQ;AAEhC,QAAK,MAAM,MAAM,aAAa,SAAS,IACrC,KAAI,GACF,YAAW,MAAM,GAAG,UAAU,SAAS,KAAK;GAIhD,MAAM,SAAS;IACb;IACA;IACD;AAED,OAAI,SAAS,IAAI;IACf,MAAM,WACH,KAAK,YAAY,SACd,WAAW,SAAS,QAAQ,IAAI,eAAe,CAAC,GAChD,KAAK,YAAY;AAEvB,QAAI,SAAS,WAAW,OAAO,SAAS,QAAQ,IAAI,iBAAiB,KAAK,KAAK;KAC7E,IAAI;AACJ,aAAQ,SAAR;MACE,KAAK;MACL,KAAK;MACL,KAAK;AACH,mBAAY,MAAM,SAAS,UAAU;AACrC;MACF,KAAK;AACH,mBAAY,IAAI,UAAU;AAC1B;MACF,KAAK;AACH,mBAAY,SAAS;AACrB;MAEF;AACE,mBAAY,EAAE;AACd;;AAEJ,YAAO,KAAK,kBAAkB,SAC1B,YACA;MACE,MAAM;MACN,GAAG;MACJ;;IAGP,IAAI;AACJ,YAAQ,SAAR;KACE,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;AACH,aAAO,MAAM,SAAS,UAAU;AAChC;KACF,KAAK,QAAQ;MAGX,MAAM,OAAO,MAAM,SAAS,MAAM;AAClC,aAAO,OAAO,KAAK,MAAM,KAAK,GAAG,EAAE;AACnC;;KAEF,KAAK,SACH,QAAO,KAAK,kBAAkB,SAC1B,SAAS,OACT;MACE,MAAM,SAAS;MACf,GAAG;MACJ;;AAGT,QAAI,YAAY,QAAQ;AACtB,SAAI,KAAK,kBACP,OAAM,KAAK,kBAAkB,KAAK;AAGpC,SAAI,KAAK,oBACP,QAAO,MAAM,KAAK,oBAAoB,KAAK;;AAI/C,WAAO,KAAK,kBAAkB,SAC1B,OACA;KACE;KACA,GAAG;KACJ;;GAGP,MAAM,YAAY,MAAM,SAAS,MAAM;GACvC,IAAI;AAEJ,OAAI;AACF,gBAAY,KAAK,MAAM,UAAU;WAC3B;AAIR,SAAM,aAAa;WACZ,OAAO;GACd,IAAI,aAAa;AAEjB,QAAK,MAAM,MAAM,aAAa,MAAM,IAClC,KAAI,GACF,cAAa,MAAM,GAAG,YAAY,UAAU,SAAS,QAAkC;AAI3F,gBAAa,cAAc,EAAE;AAE7B,OAAI,aACF,OAAM;AAIR,UAAO,kBAAkB,SACrB,SACA;IACE,OAAO;IACP;IACA;IACD;;;CAIT,MAAM,gBAAgB,YAAmC,YACvD,QAAQ;EAAE,GAAG;EAAS;EAAQ,CAAC;CAEjC,MAAM,aAAa,WAAkC,OAAO,YAA4B;EACtF,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,QAAQ;AAClD,SAAO,gBAAgB;GACrB,GAAG;GACH,MAAM,KAAK;GACX;GACA,WAAW,OAAO,KAAK,SAAS;IAC9B,IAAI,UAAU,IAAI,QAAQ,KAAK,KAAK;AACpC,SAAK,MAAM,MAAM,aAAa,QAAQ,IACpC,KAAI,GACF,WAAU,MAAM,GAAG,SAAS,KAAK;AAGrC,WAAO;;GAET,gBAAgB,oBAAoB,KAAK;GACzC;GACD,CAAC;;CAGJ,MAAM,aAAiC,YAAY,SAAS;EAAE,GAAG;EAAS,GAAG;EAAS,CAAC;AAEvF,QAAO;EACL,UAAU;EACV,SAAS,aAAa,UAAU;EAChC,QAAQ,aAAa,SAAS;EAC9B,KAAK,aAAa,MAAM;EACxB;EACA,MAAM,aAAa,OAAO;EAC1B;EACA,SAAS,aAAa,UAAU;EAChC,OAAO,aAAa,QAAQ;EAC5B,MAAM,aAAa,OAAO;EAC1B,KAAK,aAAa,MAAM;EACxB;EACA;EACA,KAAK;GACH,SAAS,UAAU,UAAU;GAC7B,QAAQ,UAAU,SAAS;GAC3B,KAAK,UAAU,MAAM;GACrB,MAAM,UAAU,OAAO;GACvB,SAAS,UAAU,UAAU;GAC7B,OAAO,UAAU,QAAQ;GACzB,MAAM,UAAU,OAAO;GACvB,KAAK,UAAU,MAAM;GACrB,OAAO,UAAU,QAAQ;GAC1B;EACD,OAAO,aAAa,QAAQ;EAC7B;;;;;ACvQH,MAAa,SAAS,aAAa,aAA6B,EAAE,SAAS,yBAAyB,CAAC,CAAC;;;;;;;;;ACUtG,MAAa,oBAA0D,aAA0D,QAAQ,UAAU,QAAQ,IAAqE;CAAE,KAAK;CAAmB,GAAG;CAAS,CAAC;;;;;;AAOvQ,MAAa,4BAAkE,aAAkE,QAAQ,UAAU,QAAQ,IAAqF;CAAE,KAAK;CAA4B,GAAG;CAAS,CAAC;;;;;;AAOhT,MAAa,uCAA6E,aAA6E,QAAQ,UAAU,QAAQ,IAA2G;CAAE,KAAK;CAAwC,GAAG;CAAS,CAAC;;;;;;AAOxW,MAAa,aAAmD,aAAoD,SAAS,UAAU,QAAQ,IAAuD;CAClM,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,yBAA+D,aAA+D,QAAQ,UAAU,QAAQ,OAAkF;CACnP,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,4BAAkE,aAAkE,QAAQ,UAAU,QAAQ,KAAsF;CAC7P,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,wBAA8D,aAA8D,QAAQ,UAAU,QAAQ,KAA8E;CAC7O,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,aAAmD,aAAoD,SAAS,UAAU,QAAQ,IAAuD;CAClM,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,oCAA0E,aAA0E,QAAQ,UAAU,QAAQ,OAAyE;CAChQ,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,kCAAwE,aAAwE,QAAQ,UAAU,QAAQ,KAAqE;CACxP,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,6CAAmF,aAAmF,QAAQ,UAAU,QAAQ,OAA0H;CACnU,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,sDAA4F,aAA4F,QAAQ,UAAU,QAAQ,OAA2F;CACtT,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,mDAAyF,aAAyF,QAAQ,UAAU,QAAQ,IAAqF;CAC1S,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,iCAAuE,aAAuE,QAAQ,UAAU,QAAQ,OAAkG;CACnR,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,8BAAoE,aAAoE,QAAQ,UAAU,QAAQ,IAAyF;CACpQ,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,+BAAqE,aAAqE,QAAQ,UAAU,QAAQ,OAA8F;CAC3Q,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,kCAAwE,aAAwE,QAAQ,UAAU,QAAQ,OAAuE;CAC1P,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,gCAAsE,aAAsE,QAAQ,UAAU,QAAQ,KAAmE;CAClP,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,8CAAoF,aAAoF,QAAQ,UAAU,QAAQ,OAA4H;CACvU,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,oDAA0F,aAA0F,QAAQ,UAAU,QAAQ,OAAyF;CAChT,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,iDAAuF,aAAuF,QAAQ,UAAU,QAAQ,IAAmF;CACpS,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,+BAAqE,aAAqE,QAAQ,UAAU,QAAQ,IAA2F;CACxQ,GAAG;CACH,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,sBAA4D,aAA6D,SAAS,UAAU,QAAQ,IAAwD;CAAE,KAAK;CAAqB,GAAG;CAAS,CAAC;;;;;;AAOlQ,MAAa,4BAAkE,aAAkE,QAAQ,UAAU,QAAQ,KAAsF;CAC7P,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,wBAA8D,aAA8D,QAAQ,UAAU,QAAQ,KAA8E;CAC7O,UAAU,CAAC;EAAE,MAAM;EAAa,MAAM;EAAU,CAAC;CACjD,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rixl/sdk",
3
- "version": "0.2.2",
3
+ "version": "0.4.0",
4
4
  "description": "Official TypeScript/JavaScript SDK for the Rixl REST API — typed client for managing images, videos, and feeds.",
5
5
  "keywords": [
6
6
  "media",
@@ -30,7 +30,8 @@
30
30
  "./package.json": "./package.json"
31
31
  },
32
32
  "scripts": {
33
- "prepare": "vp config",
33
+ "pack": "vp pack && vp fmt ./src",
34
+ "prepare": "vp config && vp fmt ./src",
34
35
  "ci:release": "vp pack && npm publish --access public"
35
36
  },
36
37
  "devDependencies": {
@@ -45,7 +46,7 @@
45
46
  "vitest": "npm:@voidzero-dev/vite-plus-test@latest"
46
47
  },
47
48
  "engines": {
48
- "node": ">=18"
49
+ "node": ">=22"
49
50
  },
50
51
  "packageManager": "bun@1.3.13"
51
52
  }