@@ -10292,6 +10292,322 @@ export class Api<
10292
10292
"
10293
10293
`;
10294
10294
10295
+ exports[`extended > 'enum-type-mismatch' 1`] = `
10296
+ "/* eslint-disable */
10297
+ /* tslint:disable */
10298
+ // @ts-nocheck
10299
+ /*
10300
+ * ---------------------------------------------------------------
10301
+ * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##
10302
+ * ## ##
10303
+ * ## AUTHOR: acacode ##
10304
+ * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
10305
+ * ---------------------------------------------------------------
10306
+ */
10307
+
10308
+ export type GetStatusData = ModelsConsultStatus;
10309
+
10310
+ /** @format int32 */
10311
+ export enum ModelsConsultStatus {
10312
+ Scheduled = "Scheduled",
10313
+ CancelledByClient = "CancelledByClient",
10314
+ }
10315
+
10316
+ export namespace Status {
10317
+ /**
10318
+ * No description
10319
+ * @name GetStatus
10320
+ * @request GET:/status
10321
+ */
10322
+ export namespace GetStatus {
10323
+ export type RequestParams = {};
10324
+ export type RequestQuery = {};
10325
+ export type RequestBody = never;
10326
+ export type RequestHeaders = {};
10327
+ export type ResponseBody = GetStatusData;
10328
+ }
10329
+ }
10330
+
10331
+ export type QueryParamsType = Record<string | number, any>;
10332
+ export type ResponseFormat = keyof Omit<Body, "body" | "bodyUsed">;
10333
+
10334
+ export interface FullRequestParams extends Omit<RequestInit, "body"> {
10335
+ /** set parameter to \`true\` for call \`securityWorker\` for this request */
10336
+ secure?: boolean;
10337
+ /** request path */
10338
+ path: string;
10339
+ /** content type of request body */
10340
+ type?: ContentType;
10341
+ /** query params */
10342
+ query?: QueryParamsType;
10343
+ /** format of response (i.e. response.json() -> format: "json") */
10344
+ format?: ResponseFormat;
10345
+ /** request body */
10346
+ body?: unknown;
10347
+ /** base url */
10348
+ baseUrl?: string;
10349
+ /** request cancellation token */
10350
+ cancelToken?: CancelToken;
10351
+ }
10352
+
10353
+ export type RequestParams = Omit<
10354
+ FullRequestParams,
10355
+ "body" | "method" | "query" | "path"
10356
+ >;
10357
+
10358
+ export interface ApiConfig<SecurityDataType = unknown> {
10359
+ baseUrl?: string;
10360
+ baseApiParams?: Omit<RequestParams, "baseUrl" | "cancelToken" | "signal">;
10361
+ securityWorker?: (
10362
+ securityData: SecurityDataType | null,
10363
+ ) => Promise<RequestParams | void> | RequestParams | void;
10364
+ customFetch?: typeof fetch;
10365
+ }
10366
+
10367
+ export interface HttpResponse<D extends unknown, E extends unknown = unknown>
10368
+ extends Response {
10369
+ data: D;
10370
+ error: E;
10371
+ }
10372
+
10373
+ type CancelToken = Symbol | string | number;
10374
+
10375
+ export enum ContentType {
10376
+ Json = "application/json",
10377
+ JsonApi = "application/vnd.api+json",
10378
+ FormData = "multipart/form-data",
10379
+ UrlEncoded = "application/x-www-form-urlencoded",
10380
+ Text = "text/plain",
10381
+ }
10382
+
10383
+ export class HttpClient<SecurityDataType = unknown> {
10384
+ public baseUrl: string = "";
10385
+ private securityData: SecurityDataType | null = null;
10386
+ private securityWorker?: ApiConfig<SecurityDataType>["securityWorker"];
10387
+ private abortControllers = new Map<CancelToken, AbortController>();
10388
+ private customFetch = (...fetchParams: Parameters<typeof fetch>) =>
10389
+ fetch(...fetchParams);
10390
+
10391
+ private baseApiParams: RequestParams = {
10392
+ credentials: "same-origin",
10393
+ headers: {},
10394
+ redirect: "follow",
10395
+ referrerPolicy: "no-referrer",
10396
+ };
10397
+
10398
+ constructor(apiConfig: ApiConfig<SecurityDataType> = {}) {
10399
+ Object.assign(this, apiConfig);
10400
+ }
10401
+
10402
+ public setSecurityData = (data: SecurityDataType | null) => {
10403
+ this.securityData = data;
10404
+ };
10405
+
10406
+ protected encodeQueryParam(key: string, value: any) {
10407
+ const encodedKey = encodeURIComponent(key);
10408
+ return \`\${encodedKey}=\${encodeURIComponent(typeof value === "number" ? value : \`\${value}\`)}\`;
10409
+ }
10410
+
10411
+ protected addQueryParam(query: QueryParamsType, key: string) {
10412
+ return this.encodeQueryParam(key, query[key]);
10413
+ }
10414
+
10415
+ protected addArrayQueryParam(query: QueryParamsType, key: string) {
10416
+ const value = query[key];
10417
+ return value.map((v: any) => this.encodeQueryParam(key, v)).join("&");
10418
+ }
10419
+
10420
+ protected toQueryString(rawQuery?: QueryParamsType): string {
10421
+ const query = rawQuery || {};
10422
+ const keys = Object.keys(query).filter(
10423
+ (key) => "undefined" !== typeof query[key],
10424
+ );
10425
+ return keys
10426
+ .map((key) =>
10427
+ Array.isArray(query[key])
10428
+ ? this.addArrayQueryParam(query, key)
10429
+ : this.addQueryParam(query, key),
10430
+ )
10431
+ .join("&");
10432
+ }
10433
+
10434
+ protected addQueryParams(rawQuery?: QueryParamsType): string {
10435
+ const queryString = this.toQueryString(rawQuery);
10436
+ return queryString ? \`?\${queryString}\` : "";
10437
+ }
10438
+
10439
+ private contentFormatters: Record<ContentType, (input: any) => any> = {
10440
+ [ContentType.Json]: (input: any) =>
10441
+ input !== null && (typeof input === "object" || typeof input === "string")
10442
+ ? JSON.stringify(input)
10443
+ : input,
10444
+ [ContentType.JsonApi]: (input: any) =>
10445
+ input !== null && (typeof input === "object" || typeof input === "string")
10446
+ ? JSON.stringify(input)
10447
+ : input,
10448
+ [ContentType.Text]: (input: any) =>
10449
+ input !== null && typeof input !== "string"
10450
+ ? JSON.stringify(input)
10451
+ : input,
10452
+ [ContentType.FormData]: (input: any) => {
10453
+ if (input instanceof FormData) {
10454
+ return input;
10455
+ }
10456
+
10457
+ return Object.keys(input || {}).reduce((formData, key) => {
10458
+ const property = input[key];
10459
+ formData.append(
10460
+ key,
10461
+ property instanceof Blob
10462
+ ? property
10463
+ : typeof property === "object" && property !== null
10464
+ ? JSON.stringify(property)
10465
+ : \`\${property}\`,
10466
+ );
10467
+ return formData;
10468
+ }, new FormData());
10469
+ },
10470
+ [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input),
10471
+ };
10472
+
10473
+ protected mergeRequestParams(
10474
+ params1: RequestParams,
10475
+ params2?: RequestParams,
10476
+ ): RequestParams {
10477
+ return {
10478
+ ...this.baseApiParams,
10479
+ ...params1,
10480
+ ...(params2 || {}),
10481
+ headers: {
10482
+ ...(this.baseApiParams.headers || {}),
10483
+ ...(params1.headers || {}),
10484
+ ...((params2 && params2.headers) || {}),
10485
+ },
10486
+ };
10487
+ }
10488
+
10489
+ protected createAbortSignal = (
10490
+ cancelToken: CancelToken,
10491
+ ): AbortSignal | undefined => {
10492
+ if (this.abortControllers.has(cancelToken)) {
10493
+ const abortController = this.abortControllers.get(cancelToken);
10494
+ if (abortController) {
10495
+ return abortController.signal;
10496
+ }
10497
+ return void 0;
10498
+ }
10499
+
10500
+ const abortController = new AbortController();
10501
+ this.abortControllers.set(cancelToken, abortController);
10502
+ return abortController.signal;
10503
+ };
10504
+
10505
+ public abortRequest = (cancelToken: CancelToken) => {
10506
+ const abortController = this.abortControllers.get(cancelToken);
10507
+
10508
+ if (abortController) {
10509
+ abortController.abort();
10510
+ this.abortControllers.delete(cancelToken);
10511
+ }
10512
+ };
10513
+
10514
+ public request = async <T = any, E = any>({
10515
+ body,
10516
+ secure,
10517
+ path,
10518
+ type,
10519
+ query,
10520
+ format,
10521
+ baseUrl,
10522
+ cancelToken,
10523
+ ...params
10524
+ }: FullRequestParams): Promise<HttpResponse<T, E>> => {
10525
+ const secureParams =
10526
+ ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) &&
10527
+ this.securityWorker &&
10528
+ (await this.securityWorker(this.securityData))) ||
10529
+ {};
10530
+ const requestParams = this.mergeRequestParams(params, secureParams);
10531
+ const queryString = query && this.toQueryString(query);
10532
+ const payloadFormatter = this.contentFormatters[type || ContentType.Json];
10533
+ const responseFormat = format || requestParams.format;
10534
+
10535
+ return this.customFetch(
10536
+ \`\${baseUrl || this.baseUrl || ""}\${path}\${queryString ? \`?\${queryString}\` : ""}\`,
10537
+ {
10538
+ ...requestParams,
10539
+ headers: {
10540
+ ...(requestParams.headers || {}),
10541
+ ...(type && type !== ContentType.FormData
10542
+ ? { "Content-Type": type }
10543
+ : {}),
10544
+ },
10545
+ signal:
10546
+ (cancelToken
10547
+ ? this.createAbortSignal(cancelToken)
10548
+ : requestParams.signal) || null,
10549
+ body:
10550
+ typeof body === "undefined" || body === null
10551
+ ? null
10552
+ : payloadFormatter(body),
10553
+ },
10554
+ ).then(async (response) => {
10555
+ const r = response.clone() as HttpResponse<T, E>;
10556
+ r.data = null as unknown as T;
10557
+ r.error = null as unknown as E;
10558
+
10559
+ const data = !responseFormat
10560
+ ? r
10561
+ : await response[responseFormat]()
10562
+ .then((data) => {
10563
+ if (r.ok) {
10564
+ r.data = data;
10565
+ } else {
10566
+ r.error = data;
10567
+ }
10568
+ return r;
10569
+ })
10570
+ .catch((e) => {
10571
+ r.error = e;
10572
+ return r;
10573
+ });
10574
+
10575
+ if (cancelToken) {
10576
+ this.abortControllers.delete(cancelToken);
10577
+ }
10578
+
10579
+ if (!response.ok) throw data;
10580
+ return data;
10581
+ });
10582
+ };
10583
+ }
10584
+
10585
+ /**
10586
+ * @title Enum Type Mismatch
10587
+ * @version 1.0.0
10588
+ */
10589
+ export class Api<
10590
+ SecurityDataType extends unknown,
10591
+ > extends HttpClient<SecurityDataType> {
10592
+ status = {
10593
+ /**
10594
+ * No description
10595
+ *
10596
+ * @name GetStatus
10597
+ * @request GET:/status
10598
+ */
10599
+ getStatus: (params: RequestParams = {}) =>
10600
+ this.request<GetStatusData, any>({
10601
+ path: \`/status\`,
10602
+ method: "GET",
10603
+ format: "json",
10604
+ ...params,
10605
+ }),
10606
+ };
10607
+ }
10608
+ "
10609
+ `;
10610
+
10295
10611
exports[`extended > 'enums' 1`] = `
10296
10612
"/* eslint-disable */
10297
10613
/* tslint:disable */
0 commit comments