@djangocfg/api 2.1.332 → 2.1.334

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.
@@ -50,805 +50,6 @@ var proxyMiddlewareConfig = {
50
50
  matcher: ["/media/:path*", "/api/:path*"]
51
51
  };
52
52
 
53
- // src/_api/generated/core/bodySerializer.gen.ts
54
- var jsonBodySerializer = {
55
- bodySerializer: /* @__PURE__ */ __name((body) => JSON.stringify(body, (_key, value) => typeof value === "bigint" ? value.toString() : value), "bodySerializer")
56
- };
57
-
58
- // src/_api/generated/core/params.gen.ts
59
- var extraPrefixesMap = {
60
- $body_: "body",
61
- $headers_: "headers",
62
- $path_: "path",
63
- $query_: "query"
64
- };
65
- var extraPrefixes = Object.entries(extraPrefixesMap);
66
-
67
- // src/_api/generated/core/serverSentEvents.gen.ts
68
- function createSseClient({
69
- onRequest,
70
- onSseError,
71
- onSseEvent,
72
- responseTransformer,
73
- responseValidator,
74
- sseDefaultRetryDelay,
75
- sseMaxRetryAttempts,
76
- sseMaxRetryDelay,
77
- sseSleepFn,
78
- url,
79
- ...options
80
- }) {
81
- let lastEventId;
82
- const sleep = sseSleepFn ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
83
- const createStream = /* @__PURE__ */ __name(async function* () {
84
- let retryDelay = sseDefaultRetryDelay ?? 3e3;
85
- let attempt = 0;
86
- const signal = options.signal ?? new AbortController().signal;
87
- while (true) {
88
- if (signal.aborted) break;
89
- attempt++;
90
- const headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers);
91
- if (lastEventId !== void 0) {
92
- headers.set("Last-Event-ID", lastEventId);
93
- }
94
- try {
95
- const requestInit = {
96
- redirect: "follow",
97
- ...options,
98
- body: options.serializedBody,
99
- headers,
100
- signal
101
- };
102
- let request = new Request(url, requestInit);
103
- if (onRequest) {
104
- request = await onRequest(url, requestInit);
105
- }
106
- const _fetch = options.fetch ?? globalThis.fetch;
107
- const response = await _fetch(request);
108
- if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);
109
- if (!response.body) throw new Error("No body in SSE response");
110
- const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
111
- let buffer = "";
112
- const abortHandler = /* @__PURE__ */ __name(() => {
113
- try {
114
- reader.cancel();
115
- } catch {
116
- }
117
- }, "abortHandler");
118
- signal.addEventListener("abort", abortHandler);
119
- try {
120
- while (true) {
121
- const { done, value } = await reader.read();
122
- if (done) break;
123
- buffer += value;
124
- buffer = buffer.replace(/\r\n?/g, "\n");
125
- const chunks = buffer.split("\n\n");
126
- buffer = chunks.pop() ?? "";
127
- for (const chunk of chunks) {
128
- const lines = chunk.split("\n");
129
- const dataLines = [];
130
- let eventName;
131
- for (const line of lines) {
132
- if (line.startsWith("data:")) {
133
- dataLines.push(line.replace(/^data:\s*/, ""));
134
- } else if (line.startsWith("event:")) {
135
- eventName = line.replace(/^event:\s*/, "");
136
- } else if (line.startsWith("id:")) {
137
- lastEventId = line.replace(/^id:\s*/, "");
138
- } else if (line.startsWith("retry:")) {
139
- const parsed = Number.parseInt(line.replace(/^retry:\s*/, ""), 10);
140
- if (!Number.isNaN(parsed)) {
141
- retryDelay = parsed;
142
- }
143
- }
144
- }
145
- let data;
146
- let parsedJson = false;
147
- if (dataLines.length) {
148
- const rawData = dataLines.join("\n");
149
- try {
150
- data = JSON.parse(rawData);
151
- parsedJson = true;
152
- } catch {
153
- data = rawData;
154
- }
155
- }
156
- if (parsedJson) {
157
- if (responseValidator) {
158
- await responseValidator(data);
159
- }
160
- if (responseTransformer) {
161
- data = await responseTransformer(data);
162
- }
163
- }
164
- onSseEvent?.({
165
- data,
166
- event: eventName,
167
- id: lastEventId,
168
- retry: retryDelay
169
- });
170
- if (dataLines.length) {
171
- yield data;
172
- }
173
- }
174
- }
175
- } finally {
176
- signal.removeEventListener("abort", abortHandler);
177
- reader.releaseLock();
178
- }
179
- break;
180
- } catch (error) {
181
- onSseError?.(error);
182
- if (sseMaxRetryAttempts !== void 0 && attempt >= sseMaxRetryAttempts) {
183
- break;
184
- }
185
- const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 3e4);
186
- await sleep(backoff);
187
- }
188
- }
189
- }, "createStream");
190
- const stream = createStream();
191
- return { stream };
192
- }
193
- __name(createSseClient, "createSseClient");
194
-
195
- // src/_api/generated/core/pathSerializer.gen.ts
196
- var separatorArrayExplode = /* @__PURE__ */ __name((style) => {
197
- switch (style) {
198
- case "label":
199
- return ".";
200
- case "matrix":
201
- return ";";
202
- case "simple":
203
- return ",";
204
- default:
205
- return "&";
206
- }
207
- }, "separatorArrayExplode");
208
- var separatorArrayNoExplode = /* @__PURE__ */ __name((style) => {
209
- switch (style) {
210
- case "form":
211
- return ",";
212
- case "pipeDelimited":
213
- return "|";
214
- case "spaceDelimited":
215
- return "%20";
216
- default:
217
- return ",";
218
- }
219
- }, "separatorArrayNoExplode");
220
- var separatorObjectExplode = /* @__PURE__ */ __name((style) => {
221
- switch (style) {
222
- case "label":
223
- return ".";
224
- case "matrix":
225
- return ";";
226
- case "simple":
227
- return ",";
228
- default:
229
- return "&";
230
- }
231
- }, "separatorObjectExplode");
232
- var serializeArrayParam = /* @__PURE__ */ __name(({
233
- allowReserved,
234
- explode,
235
- name,
236
- style,
237
- value
238
- }) => {
239
- if (!explode) {
240
- const joinedValues2 = (allowReserved ? value : value.map((v) => encodeURIComponent(v))).join(separatorArrayNoExplode(style));
241
- switch (style) {
242
- case "label":
243
- return `.${joinedValues2}`;
244
- case "matrix":
245
- return `;${name}=${joinedValues2}`;
246
- case "simple":
247
- return joinedValues2;
248
- default:
249
- return `${name}=${joinedValues2}`;
250
- }
251
- }
252
- const separator = separatorArrayExplode(style);
253
- const joinedValues = value.map((v) => {
254
- if (style === "label" || style === "simple") {
255
- return allowReserved ? v : encodeURIComponent(v);
256
- }
257
- return serializePrimitiveParam({
258
- allowReserved,
259
- name,
260
- value: v
261
- });
262
- }).join(separator);
263
- return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
264
- }, "serializeArrayParam");
265
- var serializePrimitiveParam = /* @__PURE__ */ __name(({
266
- allowReserved,
267
- name,
268
- value
269
- }) => {
270
- if (value === void 0 || value === null) {
271
- return "";
272
- }
273
- if (typeof value === "object") {
274
- throw new Error(
275
- "Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these."
276
- );
277
- }
278
- return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;
279
- }, "serializePrimitiveParam");
280
- var serializeObjectParam = /* @__PURE__ */ __name(({
281
- allowReserved,
282
- explode,
283
- name,
284
- style,
285
- value,
286
- valueOnly
287
- }) => {
288
- if (value instanceof Date) {
289
- return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;
290
- }
291
- if (style !== "deepObject" && !explode) {
292
- let values = [];
293
- Object.entries(value).forEach(([key, v]) => {
294
- values = [...values, key, allowReserved ? v : encodeURIComponent(v)];
295
- });
296
- const joinedValues2 = values.join(",");
297
- switch (style) {
298
- case "form":
299
- return `${name}=${joinedValues2}`;
300
- case "label":
301
- return `.${joinedValues2}`;
302
- case "matrix":
303
- return `;${name}=${joinedValues2}`;
304
- default:
305
- return joinedValues2;
306
- }
307
- }
308
- const separator = separatorObjectExplode(style);
309
- const joinedValues = Object.entries(value).map(
310
- ([key, v]) => serializePrimitiveParam({
311
- allowReserved,
312
- name: style === "deepObject" ? `${name}[${key}]` : key,
313
- value: v
314
- })
315
- ).join(separator);
316
- return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
317
- }, "serializeObjectParam");
318
-
319
- // src/_api/generated/core/utils.gen.ts
320
- var PATH_PARAM_RE = /\{[^{}]+\}/g;
321
- var defaultPathSerializer = /* @__PURE__ */ __name(({ path, url: _url }) => {
322
- let url = _url;
323
- const matches = _url.match(PATH_PARAM_RE);
324
- if (matches) {
325
- for (const match of matches) {
326
- let explode = false;
327
- let name = match.substring(1, match.length - 1);
328
- let style = "simple";
329
- if (name.endsWith("*")) {
330
- explode = true;
331
- name = name.substring(0, name.length - 1);
332
- }
333
- if (name.startsWith(".")) {
334
- name = name.substring(1);
335
- style = "label";
336
- } else if (name.startsWith(";")) {
337
- name = name.substring(1);
338
- style = "matrix";
339
- }
340
- const value = path[name];
341
- if (value === void 0 || value === null) {
342
- continue;
343
- }
344
- if (Array.isArray(value)) {
345
- url = url.replace(match, serializeArrayParam({ explode, name, style, value }));
346
- continue;
347
- }
348
- if (typeof value === "object") {
349
- url = url.replace(
350
- match,
351
- serializeObjectParam({
352
- explode,
353
- name,
354
- style,
355
- value,
356
- valueOnly: true
357
- })
358
- );
359
- continue;
360
- }
361
- if (style === "matrix") {
362
- url = url.replace(
363
- match,
364
- `;${serializePrimitiveParam({
365
- name,
366
- value
367
- })}`
368
- );
369
- continue;
370
- }
371
- const replaceValue = encodeURIComponent(
372
- style === "label" ? `.${value}` : value
373
- );
374
- url = url.replace(match, replaceValue);
375
- }
376
- }
377
- return url;
378
- }, "defaultPathSerializer");
379
- var getUrl = /* @__PURE__ */ __name(({
380
- baseUrl,
381
- path,
382
- query,
383
- querySerializer,
384
- url: _url
385
- }) => {
386
- const pathUrl = _url.startsWith("/") ? _url : `/${_url}`;
387
- let url = (baseUrl ?? "") + pathUrl;
388
- if (path) {
389
- url = defaultPathSerializer({ path, url });
390
- }
391
- let search = query ? querySerializer(query) : "";
392
- if (search.startsWith("?")) {
393
- search = search.substring(1);
394
- }
395
- if (search) {
396
- url += `?${search}`;
397
- }
398
- return url;
399
- }, "getUrl");
400
- function getValidRequestBody(options) {
401
- const hasBody = options.body !== void 0;
402
- const isSerializedBody = hasBody && options.bodySerializer;
403
- if (isSerializedBody) {
404
- if ("serializedBody" in options) {
405
- const hasSerializedBody = options.serializedBody !== void 0 && options.serializedBody !== "";
406
- return hasSerializedBody ? options.serializedBody : null;
407
- }
408
- return options.body !== "" ? options.body : null;
409
- }
410
- if (hasBody) {
411
- return options.body;
412
- }
413
- return void 0;
414
- }
415
- __name(getValidRequestBody, "getValidRequestBody");
416
-
417
- // src/_api/generated/core/auth.gen.ts
418
- var getAuthToken = /* @__PURE__ */ __name(async (auth2, callback) => {
419
- const token = typeof callback === "function" ? await callback(auth2) : callback;
420
- if (!token) {
421
- return;
422
- }
423
- if (auth2.scheme === "bearer") {
424
- return `Bearer ${token}`;
425
- }
426
- if (auth2.scheme === "basic") {
427
- return `Basic ${btoa(token)}`;
428
- }
429
- return token;
430
- }, "getAuthToken");
431
-
432
- // src/_api/generated/client/utils.gen.ts
433
- var createQuerySerializer = /* @__PURE__ */ __name(({
434
- parameters = {},
435
- ...args
436
- } = {}) => {
437
- const querySerializer = /* @__PURE__ */ __name((queryParams) => {
438
- const search = [];
439
- if (queryParams && typeof queryParams === "object") {
440
- for (const name in queryParams) {
441
- const value = queryParams[name];
442
- if (value === void 0 || value === null) {
443
- continue;
444
- }
445
- const options = parameters[name] || args;
446
- if (Array.isArray(value)) {
447
- const serializedArray = serializeArrayParam({
448
- allowReserved: options.allowReserved,
449
- explode: true,
450
- name,
451
- style: "form",
452
- value,
453
- ...options.array
454
- });
455
- if (serializedArray) search.push(serializedArray);
456
- } else if (typeof value === "object") {
457
- const serializedObject = serializeObjectParam({
458
- allowReserved: options.allowReserved,
459
- explode: true,
460
- name,
461
- style: "deepObject",
462
- value,
463
- ...options.object
464
- });
465
- if (serializedObject) search.push(serializedObject);
466
- } else {
467
- const serializedPrimitive = serializePrimitiveParam({
468
- allowReserved: options.allowReserved,
469
- name,
470
- value
471
- });
472
- if (serializedPrimitive) search.push(serializedPrimitive);
473
- }
474
- }
475
- }
476
- return search.join("&");
477
- }, "querySerializer");
478
- return querySerializer;
479
- }, "createQuerySerializer");
480
- var getParseAs = /* @__PURE__ */ __name((contentType) => {
481
- if (!contentType) {
482
- return "stream";
483
- }
484
- const cleanContent = contentType.split(";")[0]?.trim();
485
- if (!cleanContent) {
486
- return;
487
- }
488
- if (cleanContent.startsWith("application/json") || cleanContent.endsWith("+json")) {
489
- return "json";
490
- }
491
- if (cleanContent === "multipart/form-data") {
492
- return "formData";
493
- }
494
- if (["application/", "audio/", "image/", "video/"].some((type) => cleanContent.startsWith(type))) {
495
- return "blob";
496
- }
497
- if (cleanContent.startsWith("text/")) {
498
- return "text";
499
- }
500
- return;
501
- }, "getParseAs");
502
- var checkForExistence = /* @__PURE__ */ __name((options, name) => {
503
- if (!name) {
504
- return false;
505
- }
506
- if (options.headers.has(name) || options.query?.[name] || options.headers.get("Cookie")?.includes(`${name}=`)) {
507
- return true;
508
- }
509
- return false;
510
- }, "checkForExistence");
511
- var setAuthParams = /* @__PURE__ */ __name(async ({
512
- security,
513
- ...options
514
- }) => {
515
- for (const auth2 of security) {
516
- if (checkForExistence(options, auth2.name)) {
517
- continue;
518
- }
519
- const token = await getAuthToken(auth2, options.auth);
520
- if (!token) {
521
- continue;
522
- }
523
- const name = auth2.name ?? "Authorization";
524
- switch (auth2.in) {
525
- case "query":
526
- if (!options.query) {
527
- options.query = {};
528
- }
529
- options.query[name] = token;
530
- break;
531
- case "cookie":
532
- options.headers.append("Cookie", `${name}=${token}`);
533
- break;
534
- case "header":
535
- default:
536
- options.headers.set(name, token);
537
- break;
538
- }
539
- }
540
- }, "setAuthParams");
541
- var buildUrl = /* @__PURE__ */ __name((options) => getUrl({
542
- baseUrl: options.baseUrl,
543
- path: options.path,
544
- query: options.query,
545
- querySerializer: typeof options.querySerializer === "function" ? options.querySerializer : createQuerySerializer(options.querySerializer),
546
- url: options.url
547
- }), "buildUrl");
548
- var mergeConfigs = /* @__PURE__ */ __name((a, b) => {
549
- const config = { ...a, ...b };
550
- if (config.baseUrl?.endsWith("/")) {
551
- config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);
552
- }
553
- config.headers = mergeHeaders(a.headers, b.headers);
554
- return config;
555
- }, "mergeConfigs");
556
- var headersEntries = /* @__PURE__ */ __name((headers) => {
557
- const entries = [];
558
- headers.forEach((value, key) => {
559
- entries.push([key, value]);
560
- });
561
- return entries;
562
- }, "headersEntries");
563
- var mergeHeaders = /* @__PURE__ */ __name((...headers) => {
564
- const mergedHeaders = new Headers();
565
- for (const header of headers) {
566
- if (!header) {
567
- continue;
568
- }
569
- const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);
570
- for (const [key, value] of iterator) {
571
- if (value === null) {
572
- mergedHeaders.delete(key);
573
- } else if (Array.isArray(value)) {
574
- for (const v of value) {
575
- mergedHeaders.append(key, v);
576
- }
577
- } else if (value !== void 0) {
578
- mergedHeaders.set(
579
- key,
580
- typeof value === "object" ? JSON.stringify(value) : value
581
- );
582
- }
583
- }
584
- }
585
- return mergedHeaders;
586
- }, "mergeHeaders");
587
- var Interceptors = class {
588
- static {
589
- __name(this, "Interceptors");
590
- }
591
- fns = [];
592
- clear() {
593
- this.fns = [];
594
- }
595
- eject(id) {
596
- const index = this.getInterceptorIndex(id);
597
- if (this.fns[index]) {
598
- this.fns[index] = null;
599
- }
600
- }
601
- exists(id) {
602
- const index = this.getInterceptorIndex(id);
603
- return Boolean(this.fns[index]);
604
- }
605
- getInterceptorIndex(id) {
606
- if (typeof id === "number") {
607
- return this.fns[id] ? id : -1;
608
- }
609
- return this.fns.indexOf(id);
610
- }
611
- update(id, fn) {
612
- const index = this.getInterceptorIndex(id);
613
- if (this.fns[index]) {
614
- this.fns[index] = fn;
615
- return id;
616
- }
617
- return false;
618
- }
619
- use(fn) {
620
- this.fns.push(fn);
621
- return this.fns.length - 1;
622
- }
623
- };
624
- var createInterceptors = /* @__PURE__ */ __name(() => ({
625
- error: new Interceptors(),
626
- request: new Interceptors(),
627
- response: new Interceptors()
628
- }), "createInterceptors");
629
- var defaultQuerySerializer = createQuerySerializer({
630
- allowReserved: false,
631
- array: {
632
- explode: true,
633
- style: "form"
634
- },
635
- object: {
636
- explode: true,
637
- style: "deepObject"
638
- }
639
- });
640
- var defaultHeaders = {
641
- "Content-Type": "application/json"
642
- };
643
- var createConfig = /* @__PURE__ */ __name((override = {}) => ({
644
- ...jsonBodySerializer,
645
- headers: defaultHeaders,
646
- parseAs: "auto",
647
- querySerializer: defaultQuerySerializer,
648
- ...override
649
- }), "createConfig");
650
-
651
- // src/_api/generated/client/client.gen.ts
652
- var createClient = /* @__PURE__ */ __name((config = {}) => {
653
- let _config = mergeConfigs(createConfig(), config);
654
- const getConfig = /* @__PURE__ */ __name(() => ({ ..._config }), "getConfig");
655
- const setConfig = /* @__PURE__ */ __name((config2) => {
656
- _config = mergeConfigs(_config, config2);
657
- return getConfig();
658
- }, "setConfig");
659
- const interceptors = createInterceptors();
660
- const beforeRequest = /* @__PURE__ */ __name(async (options) => {
661
- const opts = {
662
- ..._config,
663
- ...options,
664
- fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
665
- headers: mergeHeaders(_config.headers, options.headers),
666
- serializedBody: void 0
667
- };
668
- if (opts.security) {
669
- await setAuthParams({
670
- ...opts,
671
- security: opts.security
672
- });
673
- }
674
- if (opts.requestValidator) {
675
- await opts.requestValidator(opts);
676
- }
677
- if (opts.body !== void 0 && opts.bodySerializer) {
678
- opts.serializedBody = opts.bodySerializer(opts.body);
679
- }
680
- if (opts.body === void 0 || opts.serializedBody === "") {
681
- opts.headers.delete("Content-Type");
682
- }
683
- const resolvedOpts = opts;
684
- const url = buildUrl(resolvedOpts);
685
- return { opts: resolvedOpts, url };
686
- }, "beforeRequest");
687
- const request = /* @__PURE__ */ __name(async (options) => {
688
- const throwOnError = options.throwOnError ?? _config.throwOnError;
689
- const responseStyle = options.responseStyle ?? _config.responseStyle;
690
- let request2;
691
- let response;
692
- try {
693
- const { opts, url } = await beforeRequest(options);
694
- const requestInit = {
695
- redirect: "follow",
696
- ...opts,
697
- body: getValidRequestBody(opts)
698
- };
699
- request2 = new Request(url, requestInit);
700
- for (const fn of interceptors.request.fns) {
701
- if (fn) {
702
- request2 = await fn(request2, opts);
703
- }
704
- }
705
- const _fetch = opts.fetch;
706
- response = await _fetch(request2);
707
- for (const fn of interceptors.response.fns) {
708
- if (fn) {
709
- response = await fn(response, request2, opts);
710
- }
711
- }
712
- const result = {
713
- request: request2,
714
- response
715
- };
716
- if (response.ok) {
717
- const parseAs = (opts.parseAs === "auto" ? getParseAs(response.headers.get("Content-Type")) : opts.parseAs) ?? "json";
718
- if (response.status === 204 || response.headers.get("Content-Length") === "0") {
719
- let emptyData;
720
- switch (parseAs) {
721
- case "arrayBuffer":
722
- case "blob":
723
- case "text":
724
- emptyData = await response[parseAs]();
725
- break;
726
- case "formData":
727
- emptyData = new FormData();
728
- break;
729
- case "stream":
730
- emptyData = response.body;
731
- break;
732
- case "json":
733
- default:
734
- emptyData = {};
735
- break;
736
- }
737
- return opts.responseStyle === "data" ? emptyData : {
738
- data: emptyData,
739
- ...result
740
- };
741
- }
742
- let data;
743
- switch (parseAs) {
744
- case "arrayBuffer":
745
- case "blob":
746
- case "formData":
747
- case "text":
748
- data = await response[parseAs]();
749
- break;
750
- case "json": {
751
- const text = await response.text();
752
- data = text ? JSON.parse(text) : {};
753
- break;
754
- }
755
- case "stream":
756
- return opts.responseStyle === "data" ? response.body : {
757
- data: response.body,
758
- ...result
759
- };
760
- }
761
- if (parseAs === "json") {
762
- if (opts.responseValidator) {
763
- await opts.responseValidator(data);
764
- }
765
- if (opts.responseTransformer) {
766
- data = await opts.responseTransformer(data);
767
- }
768
- }
769
- return opts.responseStyle === "data" ? data : {
770
- data,
771
- ...result
772
- };
773
- }
774
- const textError = await response.text();
775
- let jsonError;
776
- try {
777
- jsonError = JSON.parse(textError);
778
- } catch {
779
- }
780
- throw jsonError ?? textError;
781
- } catch (error) {
782
- let finalError = error;
783
- for (const fn of interceptors.error.fns) {
784
- if (fn) {
785
- finalError = await fn(finalError, response, request2, options);
786
- }
787
- }
788
- finalError = finalError || {};
789
- if (throwOnError) {
790
- throw finalError;
791
- }
792
- return responseStyle === "data" ? void 0 : {
793
- error: finalError,
794
- request: request2,
795
- response
796
- };
797
- }
798
- }, "request");
799
- const makeMethodFn = /* @__PURE__ */ __name((method) => (options) => request({ ...options, method }), "makeMethodFn");
800
- const makeSseFn = /* @__PURE__ */ __name((method) => async (options) => {
801
- const { opts, url } = await beforeRequest(options);
802
- return createSseClient({
803
- ...opts,
804
- body: opts.body,
805
- method,
806
- onRequest: /* @__PURE__ */ __name(async (url2, init) => {
807
- let request2 = new Request(url2, init);
808
- for (const fn of interceptors.request.fns) {
809
- if (fn) {
810
- request2 = await fn(request2, opts);
811
- }
812
- }
813
- return request2;
814
- }, "onRequest"),
815
- serializedBody: getValidRequestBody(opts),
816
- url
817
- });
818
- }, "makeSseFn");
819
- const _buildUrl = /* @__PURE__ */ __name((options) => buildUrl({ ..._config, ...options }), "_buildUrl");
820
- return {
821
- buildUrl: _buildUrl,
822
- connect: makeMethodFn("CONNECT"),
823
- delete: makeMethodFn("DELETE"),
824
- get: makeMethodFn("GET"),
825
- getConfig,
826
- head: makeMethodFn("HEAD"),
827
- interceptors,
828
- options: makeMethodFn("OPTIONS"),
829
- patch: makeMethodFn("PATCH"),
830
- post: makeMethodFn("POST"),
831
- put: makeMethodFn("PUT"),
832
- request,
833
- setConfig,
834
- sse: {
835
- connect: makeSseFn("CONNECT"),
836
- delete: makeSseFn("DELETE"),
837
- get: makeSseFn("GET"),
838
- head: makeSseFn("HEAD"),
839
- options: makeSseFn("OPTIONS"),
840
- patch: makeSseFn("PATCH"),
841
- post: makeSseFn("POST"),
842
- put: makeSseFn("PUT"),
843
- trace: makeSseFn("TRACE")
844
- },
845
- trace: makeMethodFn("TRACE")
846
- };
847
- }, "createClient");
848
-
849
- // src/_api/generated/client.gen.ts
850
- var client = createClient(createConfig({ baseUrl: "http://localhost:8000" }));
851
-
852
53
  // src/_api/generated/helpers/auth.ts
853
54
  var ACCESS_KEY = "cfg.access_token";
854
55
  var REFRESH_KEY = "cfg.refresh_token";
@@ -941,15 +142,23 @@ var _apiKeyOverride = null;
941
142
  var _baseUrlOverride = null;
942
143
  var _withCredentials = true;
943
144
  var _onUnauthorized = null;
145
+ var _refreshHandler = null;
146
+ var _refreshInflight = null;
147
+ var RETRY_MARKER = "X-Auth-Retry";
148
+ var _client = null;
149
+ function pushClientConfig() {
150
+ if (!_client) return;
151
+ _client.setConfig({
152
+ baseUrl: auth.getBaseUrl(),
153
+ credentials: _withCredentials ? "include" : "same-origin"
154
+ });
155
+ }
156
+ __name(pushClientConfig, "pushClientConfig");
944
157
  var auth = {
945
158
  // ── Storage mode ──────────────────────────────────────────────────
946
159
  getStorageMode() {
947
160
  return _storageMode;
948
161
  },
949
- /**
950
- * Switch the storage backend. Existing values in the *previous*
951
- * backend are NOT migrated — set fresh values after switching.
952
- */
953
162
  setStorageMode(mode) {
954
163
  _storageMode = mode;
955
164
  _storage = mode === "cookie" ? cookieBackend : localStorageBackend;
@@ -975,15 +184,12 @@ var auth = {
975
184
  return _storage.get(ACCESS_KEY) !== null;
976
185
  },
977
186
  // ── API key ───────────────────────────────────────────────────────
978
- /** In-memory API key. Falls back to storage, then NEXT_PUBLIC_API_KEY. */
979
187
  getApiKey() {
980
188
  return _apiKeyOverride ?? _storage.get(API_KEY_KEY) ?? defaultApiKey();
981
189
  },
982
- /** In-memory only (cleared on reload). */
983
190
  setApiKey(key) {
984
191
  _apiKeyOverride = key;
985
192
  },
986
- /** Persist to active storage backend (localStorage or cookie). */
987
193
  setApiKeyPersist(key) {
988
194
  _apiKeyOverride = key;
989
195
  _storage.set(API_KEY_KEY, key);
@@ -993,7 +199,6 @@ var auth = {
993
199
  _storage.set(API_KEY_KEY, null);
994
200
  },
995
201
  // ── Locale ────────────────────────────────────────────────────────
996
- /** Override locale → falls back to NEXT_LOCALE cookie / navigator.language. */
997
202
  getLocale() {
998
203
  return _localeOverride ?? detectLocale();
999
204
  },
@@ -1007,309 +212,1213 @@ var auth = {
1007
212
  },
1008
213
  setBaseUrl(url) {
1009
214
  _baseUrlOverride = url ? url.replace(/\/$/, "") : null;
1010
- client.setConfig({ baseUrl: this.getBaseUrl() });
215
+ pushClientConfig();
1011
216
  },
1012
- // ── Credentials toggle (Django session/CSRF cross-origin) ─────────
217
+ // ── Credentials toggle ────────────────────────────────────────────
1013
218
  getWithCredentials() {
1014
219
  return _withCredentials;
1015
220
  },
1016
221
  setWithCredentials(value) {
1017
222
  _withCredentials = value;
1018
- client.setConfig({ credentials: value ? "include" : "same-origin" });
223
+ pushClientConfig();
1019
224
  },
1020
225
  // ── 401 handler ───────────────────────────────────────────────────
1021
226
  /**
1022
- * Register a callback fired on every 401 response. Use this to wire
1023
- * a token-refresh flow or a forced logout. Setting `null` removes
1024
- * the handler.
227
+ * Fired when the server returns 401 AND no refresh path recovers it
228
+ * (no refresh token, no refresh handler, refresh failed, or retry
229
+ * still 401). The app should clear local state and redirect to login.
230
+ *
231
+ * NOT fired for 401 that gets transparently recovered by the refresh
232
+ * handler — those are invisible to callers.
233
+ */
234
+ onUnauthorized(cb) {
235
+ _onUnauthorized = cb;
236
+ },
237
+ /**
238
+ * Register the refresh strategy. The handler receives the current
239
+ * refresh token and must call your refresh endpoint, returning
240
+ * `{ access, refresh? }` on success or `null` on failure.
241
+ *
242
+ * @example
243
+ * auth.setRefreshHandler(async (refresh) => {
244
+ * const { data } = await Auth.tokenRefreshCreate({ body: { refresh } });
245
+ * return data ? { access: data.access, refresh: data.refresh } : null;
246
+ * });
1025
247
  */
248
+ setRefreshHandler(fn) {
249
+ _refreshHandler = fn;
250
+ }
251
+ };
252
+ async function tryRefresh() {
253
+ if (_refreshInflight) return _refreshInflight;
254
+ if (!_refreshHandler) return null;
255
+ const refresh = auth.getRefreshToken();
256
+ if (!refresh) return null;
257
+ _refreshInflight = (async () => {
258
+ try {
259
+ const result = await _refreshHandler(refresh);
260
+ if (!result?.access) return null;
261
+ auth.setToken(result.access);
262
+ if (result.refresh) auth.setRefreshToken(result.refresh);
263
+ return result.access;
264
+ } catch {
265
+ return null;
266
+ } finally {
267
+ _refreshInflight = null;
268
+ }
269
+ })();
270
+ return _refreshInflight;
271
+ }
272
+ __name(tryRefresh, "tryRefresh");
273
+ function installAuthOnClient(client2) {
274
+ if (_client) return;
275
+ _client = client2;
276
+ client2.setConfig({
277
+ baseUrl: auth.getBaseUrl(),
278
+ credentials: _withCredentials ? "include" : "same-origin"
279
+ });
280
+ client2.interceptors.request.use((request) => {
281
+ const token = auth.getToken();
282
+ if (token) request.headers.set("Authorization", `Bearer ${token}`);
283
+ const locale = auth.getLocale();
284
+ if (locale) request.headers.set("Accept-Language", locale);
285
+ const apiKey = auth.getApiKey();
286
+ if (apiKey) request.headers.set("X-API-Key", apiKey);
287
+ return request;
288
+ });
289
+ client2.interceptors.response.use(async (response, request) => {
290
+ if (response.status !== 401) return response;
291
+ if (request.headers.get(RETRY_MARKER)) {
292
+ if (_onUnauthorized) {
293
+ try {
294
+ _onUnauthorized(response);
295
+ } catch {
296
+ }
297
+ }
298
+ return response;
299
+ }
300
+ const newToken = await tryRefresh();
301
+ if (!newToken) {
302
+ if (_onUnauthorized) {
303
+ try {
304
+ _onUnauthorized(response);
305
+ } catch {
306
+ }
307
+ }
308
+ return response;
309
+ }
310
+ const retry = request.clone();
311
+ retry.headers.set("Authorization", `Bearer ${newToken}`);
312
+ retry.headers.set(RETRY_MARKER, "1");
313
+ try {
314
+ const retried = await fetch(retry);
315
+ if (retried.status === 401 && _onUnauthorized) {
316
+ try {
317
+ _onUnauthorized(retried);
318
+ } catch {
319
+ }
320
+ }
321
+ return retried;
322
+ } catch {
323
+ if (_onUnauthorized) {
324
+ try {
325
+ _onUnauthorized(response);
326
+ } catch {
327
+ }
328
+ }
329
+ return response;
330
+ }
331
+ });
332
+ }
333
+ __name(installAuthOnClient, "installAuthOnClient");
334
+
335
+ // src/_api/generated/helpers/logger.ts
336
+ var import_consola = require("consola");
337
+ var DEFAULT_CONFIG = {
338
+ enabled: typeof process !== "undefined" && process.env.NODE_ENV !== "production",
339
+ logRequests: true,
340
+ logResponses: true,
341
+ logErrors: true,
342
+ logBodies: true,
343
+ logHeaders: false
344
+ };
345
+ var SENSITIVE_HEADERS = [
346
+ "authorization",
347
+ "cookie",
348
+ "set-cookie",
349
+ "x-api-key",
350
+ "x-csrf-token"
351
+ ];
352
+ var APILogger = class {
353
+ static {
354
+ __name(this, "APILogger");
355
+ }
356
+ config;
357
+ consola;
358
+ constructor(config = {}) {
359
+ this.config = { ...DEFAULT_CONFIG, ...config };
360
+ this.consola = config.consola || (0, import_consola.createConsola)({
361
+ level: this.config.enabled ? 4 : 0
362
+ });
363
+ }
364
+ enable() {
365
+ this.config.enabled = true;
366
+ }
367
+ disable() {
368
+ this.config.enabled = false;
369
+ }
370
+ setConfig(config) {
371
+ this.config = { ...this.config, ...config };
372
+ }
373
+ filterHeaders(headers) {
374
+ if (!headers) return {};
375
+ const filtered = {};
376
+ Object.keys(headers).forEach((key) => {
377
+ filtered[key] = SENSITIVE_HEADERS.includes(key.toLowerCase()) ? "***" : headers[key] || "";
378
+ });
379
+ return filtered;
380
+ }
381
+ logRequest(request) {
382
+ if (!this.config.enabled || !this.config.logRequests) return;
383
+ const { method, url, headers, body } = request;
384
+ this.consola.start(`${method} ${url}`);
385
+ if (this.config.logHeaders && headers) this.consola.debug("Headers:", this.filterHeaders(headers));
386
+ if (this.config.logBodies && body) this.consola.debug("Body:", body);
387
+ }
388
+ logResponse(request, response) {
389
+ if (!this.config.enabled || !this.config.logResponses) return;
390
+ const { method, url } = request;
391
+ const { status, statusText, data, duration } = response;
392
+ this.consola.success(`${method} ${url} ${status} ${statusText} (${duration}ms)`);
393
+ if (this.config.logBodies && data) this.consola.debug("Response:", data);
394
+ }
395
+ logError(request, error) {
396
+ if (!this.config.enabled || !this.config.logErrors) return;
397
+ const { method, url } = request;
398
+ const { message, statusCode, fieldErrors, duration } = error;
399
+ this.consola.error(`${method} ${url} ${statusCode || "Network"} Error (${duration}ms)`);
400
+ this.consola.error("Message:", message);
401
+ if (fieldErrors && Object.keys(fieldErrors).length > 0) {
402
+ this.consola.error("Field Errors:");
403
+ Object.entries(fieldErrors).forEach(([field, errors]) => {
404
+ errors.forEach((err) => this.consola.error(` \u2022 ${field}: ${err}`));
405
+ });
406
+ }
407
+ }
408
+ info(message, ...args) {
409
+ if (this.config.enabled) this.consola.info(message, ...args);
410
+ }
411
+ warn(message, ...args) {
412
+ if (this.config.enabled) this.consola.warn(message, ...args);
413
+ }
414
+ error(message, ...args) {
415
+ if (this.config.enabled) this.consola.error(message, ...args);
416
+ }
417
+ debug(message, ...args) {
418
+ if (this.config.enabled) this.consola.debug(message, ...args);
419
+ }
420
+ success(message, ...args) {
421
+ if (this.config.enabled) this.consola.success(message, ...args);
422
+ }
423
+ withTag(tag) {
424
+ return this.consola.withTag(tag);
425
+ }
426
+ };
427
+ var defaultLogger = new APILogger();
428
+
429
+ // src/_api/generated/_cfg_accounts/api.ts
430
+ var API = class {
431
+ static {
432
+ __name(this, "API");
433
+ }
434
+ logger;
435
+ constructor(_baseUrl, opts = {}) {
436
+ this.logger = new APILogger(opts.logger);
437
+ if (_baseUrl) auth.setBaseUrl(_baseUrl);
438
+ if (opts.locale !== void 0) auth.setLocale(opts.locale);
439
+ if (opts.apiKey !== void 0) auth.setApiKey(opts.apiKey);
440
+ if (opts.withCredentials !== void 0) auth.setWithCredentials(opts.withCredentials);
441
+ }
442
+ // ── Base URL ────────────────────────────────────────────────────────────
443
+ getBaseUrl() {
444
+ return auth.getBaseUrl();
445
+ }
446
+ setBaseUrl(url) {
447
+ auth.setBaseUrl(url);
448
+ }
449
+ // ── Tokens ──────────────────────────────────────────────────────────────
450
+ getToken() {
451
+ return auth.getToken();
452
+ }
453
+ setToken(token) {
454
+ auth.setToken(token);
455
+ }
456
+ getRefreshToken() {
457
+ return auth.getRefreshToken();
458
+ }
459
+ setRefreshToken(token) {
460
+ auth.setRefreshToken(token);
461
+ }
462
+ clearToken() {
463
+ auth.clearTokens();
464
+ }
465
+ isAuthenticated() {
466
+ return auth.isAuthenticated();
467
+ }
468
+ // ── Locale / API key ────────────────────────────────────────────────────
469
+ getLocale() {
470
+ return auth.getLocale();
471
+ }
472
+ setLocale(locale) {
473
+ auth.setLocale(locale);
474
+ }
475
+ getApiKey() {
476
+ return auth.getApiKey();
477
+ }
478
+ setApiKey(key) {
479
+ auth.setApiKey(key);
480
+ }
481
+ // ── 401 handling ────────────────────────────────────────────────────────
482
+ /** Fired only on terminal 401 (after refresh+retry path is exhausted). */
483
+ onUnauthorized(cb) {
484
+ auth.onUnauthorized(cb);
485
+ }
486
+ /** Provide a refresh strategy. See `auth.setRefreshHandler` for the contract. */
487
+ setRefreshHandler(fn) {
488
+ auth.setRefreshHandler(fn);
489
+ }
490
+ };
491
+
492
+ // src/_api/generated/_cfg_centrifugo/api.ts
493
+ var API2 = class {
494
+ static {
495
+ __name(this, "API");
496
+ }
497
+ logger;
498
+ constructor(_baseUrl, opts = {}) {
499
+ this.logger = new APILogger(opts.logger);
500
+ if (_baseUrl) auth.setBaseUrl(_baseUrl);
501
+ if (opts.locale !== void 0) auth.setLocale(opts.locale);
502
+ if (opts.apiKey !== void 0) auth.setApiKey(opts.apiKey);
503
+ if (opts.withCredentials !== void 0) auth.setWithCredentials(opts.withCredentials);
504
+ }
505
+ // ── Base URL ────────────────────────────────────────────────────────────
506
+ getBaseUrl() {
507
+ return auth.getBaseUrl();
508
+ }
509
+ setBaseUrl(url) {
510
+ auth.setBaseUrl(url);
511
+ }
512
+ // ── Tokens ──────────────────────────────────────────────────────────────
513
+ getToken() {
514
+ return auth.getToken();
515
+ }
516
+ setToken(token) {
517
+ auth.setToken(token);
518
+ }
519
+ getRefreshToken() {
520
+ return auth.getRefreshToken();
521
+ }
522
+ setRefreshToken(token) {
523
+ auth.setRefreshToken(token);
524
+ }
525
+ clearToken() {
526
+ auth.clearTokens();
527
+ }
528
+ isAuthenticated() {
529
+ return auth.isAuthenticated();
530
+ }
531
+ // ── Locale / API key ────────────────────────────────────────────────────
532
+ getLocale() {
533
+ return auth.getLocale();
534
+ }
535
+ setLocale(locale) {
536
+ auth.setLocale(locale);
537
+ }
538
+ getApiKey() {
539
+ return auth.getApiKey();
540
+ }
541
+ setApiKey(key) {
542
+ auth.setApiKey(key);
543
+ }
544
+ // ── 401 handling ────────────────────────────────────────────────────────
545
+ /** Fired only on terminal 401 (after refresh+retry path is exhausted). */
1026
546
  onUnauthorized(cb) {
1027
- _onUnauthorized = cb;
547
+ auth.onUnauthorized(cb);
1028
548
  }
1029
- };
1030
- client.setConfig({
1031
- baseUrl: auth.getBaseUrl(),
1032
- credentials: _withCredentials ? "include" : "same-origin"
1033
- });
1034
- client.interceptors.request.use((request) => {
1035
- const token = auth.getToken();
1036
- if (token) request.headers.set("Authorization", `Bearer ${token}`);
1037
- const locale = auth.getLocale();
1038
- if (locale) request.headers.set("Accept-Language", locale);
1039
- const apiKey = auth.getApiKey();
1040
- if (apiKey) request.headers.set("X-API-Key", apiKey);
1041
- return request;
1042
- });
1043
- client.interceptors.response.use((response) => {
1044
- if (response.status === 401 && _onUnauthorized) {
1045
- try {
1046
- _onUnauthorized(response);
1047
- } catch {
1048
- }
549
+ /** Provide a refresh strategy. See `auth.setRefreshHandler` for the contract. */
550
+ setRefreshHandler(fn) {
551
+ auth.setRefreshHandler(fn);
1049
552
  }
1050
- return response;
1051
- });
1052
-
1053
- // src/_api/generated/helpers/logger.ts
1054
- var import_consola = require("consola");
1055
- var DEFAULT_CONFIG = {
1056
- enabled: typeof process !== "undefined" && process.env.NODE_ENV !== "production",
1057
- logRequests: true,
1058
- logResponses: true,
1059
- logErrors: true,
1060
- logBodies: true,
1061
- logHeaders: false
1062
553
  };
1063
- var SENSITIVE_HEADERS = [
1064
- "authorization",
1065
- "cookie",
1066
- "set-cookie",
1067
- "x-api-key",
1068
- "x-csrf-token"
1069
- ];
1070
- var APILogger = class {
554
+
555
+ // src/_api/generated/_cfg_totp/api.ts
556
+ var API3 = class {
1071
557
  static {
1072
- __name(this, "APILogger");
558
+ __name(this, "API");
1073
559
  }
1074
- config;
1075
- consola;
1076
- constructor(config = {}) {
1077
- this.config = { ...DEFAULT_CONFIG, ...config };
1078
- this.consola = config.consola || (0, import_consola.createConsola)({
1079
- level: this.config.enabled ? 4 : 0
1080
- });
560
+ logger;
561
+ constructor(_baseUrl, opts = {}) {
562
+ this.logger = new APILogger(opts.logger);
563
+ if (_baseUrl) auth.setBaseUrl(_baseUrl);
564
+ if (opts.locale !== void 0) auth.setLocale(opts.locale);
565
+ if (opts.apiKey !== void 0) auth.setApiKey(opts.apiKey);
566
+ if (opts.withCredentials !== void 0) auth.setWithCredentials(opts.withCredentials);
1081
567
  }
1082
- enable() {
1083
- this.config.enabled = true;
568
+ // ── Base URL ────────────────────────────────────────────────────────────
569
+ getBaseUrl() {
570
+ return auth.getBaseUrl();
1084
571
  }
1085
- disable() {
1086
- this.config.enabled = false;
572
+ setBaseUrl(url) {
573
+ auth.setBaseUrl(url);
1087
574
  }
1088
- setConfig(config) {
1089
- this.config = { ...this.config, ...config };
575
+ // ── Tokens ──────────────────────────────────────────────────────────────
576
+ getToken() {
577
+ return auth.getToken();
1090
578
  }
1091
- filterHeaders(headers) {
1092
- if (!headers) return {};
1093
- const filtered = {};
1094
- Object.keys(headers).forEach((key) => {
1095
- filtered[key] = SENSITIVE_HEADERS.includes(key.toLowerCase()) ? "***" : headers[key] || "";
1096
- });
1097
- return filtered;
579
+ setToken(token) {
580
+ auth.setToken(token);
1098
581
  }
1099
- logRequest(request) {
1100
- if (!this.config.enabled || !this.config.logRequests) return;
1101
- const { method, url, headers, body } = request;
1102
- this.consola.start(`${method} ${url}`);
1103
- if (this.config.logHeaders && headers) this.consola.debug("Headers:", this.filterHeaders(headers));
1104
- if (this.config.logBodies && body) this.consola.debug("Body:", body);
582
+ getRefreshToken() {
583
+ return auth.getRefreshToken();
1105
584
  }
1106
- logResponse(request, response) {
1107
- if (!this.config.enabled || !this.config.logResponses) return;
1108
- const { method, url } = request;
1109
- const { status, statusText, data, duration } = response;
1110
- this.consola.success(`${method} ${url} ${status} ${statusText} (${duration}ms)`);
1111
- if (this.config.logBodies && data) this.consola.debug("Response:", data);
585
+ setRefreshToken(token) {
586
+ auth.setRefreshToken(token);
1112
587
  }
1113
- logError(request, error) {
1114
- if (!this.config.enabled || !this.config.logErrors) return;
1115
- const { method, url } = request;
1116
- const { message, statusCode, fieldErrors, duration } = error;
1117
- this.consola.error(`${method} ${url} ${statusCode || "Network"} Error (${duration}ms)`);
1118
- this.consola.error("Message:", message);
1119
- if (fieldErrors && Object.keys(fieldErrors).length > 0) {
1120
- this.consola.error("Field Errors:");
1121
- Object.entries(fieldErrors).forEach(([field, errors]) => {
1122
- errors.forEach((err) => this.consola.error(` \u2022 ${field}: ${err}`));
1123
- });
1124
- }
588
+ clearToken() {
589
+ auth.clearTokens();
1125
590
  }
1126
- info(message, ...args) {
1127
- if (this.config.enabled) this.consola.info(message, ...args);
591
+ isAuthenticated() {
592
+ return auth.isAuthenticated();
1128
593
  }
1129
- warn(message, ...args) {
1130
- if (this.config.enabled) this.consola.warn(message, ...args);
594
+ // ── Locale / API key ────────────────────────────────────────────────────
595
+ getLocale() {
596
+ return auth.getLocale();
1131
597
  }
1132
- error(message, ...args) {
1133
- if (this.config.enabled) this.consola.error(message, ...args);
598
+ setLocale(locale) {
599
+ auth.setLocale(locale);
1134
600
  }
1135
- debug(message, ...args) {
1136
- if (this.config.enabled) this.consola.debug(message, ...args);
601
+ getApiKey() {
602
+ return auth.getApiKey();
1137
603
  }
1138
- success(message, ...args) {
1139
- if (this.config.enabled) this.consola.success(message, ...args);
604
+ setApiKey(key) {
605
+ auth.setApiKey(key);
1140
606
  }
1141
- withTag(tag) {
1142
- return this.consola.withTag(tag);
607
+ // ── 401 handling ────────────────────────────────────────────────────────
608
+ /** Fired only on terminal 401 (after refresh+retry path is exhausted). */
609
+ onUnauthorized(cb) {
610
+ auth.onUnauthorized(cb);
611
+ }
612
+ /** Provide a refresh strategy. See `auth.setRefreshHandler` for the contract. */
613
+ setRefreshHandler(fn) {
614
+ auth.setRefreshHandler(fn);
1143
615
  }
1144
616
  };
1145
- var defaultLogger = new APILogger();
1146
617
 
1147
- // src/_api/generated/_cfg_accounts/api.ts
1148
- var API = class {
1149
- static {
1150
- __name(this, "API");
1151
- }
1152
- logger;
1153
- constructor(_baseUrl, opts = {}) {
1154
- this.logger = new APILogger(opts.logger);
1155
- if (_baseUrl) auth.setBaseUrl(_baseUrl);
1156
- if (opts.locale !== void 0) auth.setLocale(opts.locale);
1157
- if (opts.apiKey !== void 0) auth.setApiKey(opts.apiKey);
1158
- if (opts.withCredentials !== void 0) auth.setWithCredentials(opts.withCredentials);
1159
- }
1160
- // ── Base URL ────────────────────────────────────────────────────────────
1161
- getBaseUrl() {
1162
- return auth.getBaseUrl();
1163
- }
1164
- setBaseUrl(url) {
1165
- auth.setBaseUrl(url);
1166
- }
1167
- // ── Tokens ──────────────────────────────────────────────────────────────
1168
- getToken() {
1169
- return auth.getToken();
1170
- }
1171
- setToken(token) {
1172
- auth.setToken(token);
1173
- }
1174
- getRefreshToken() {
1175
- return auth.getRefreshToken();
618
+ // src/_api/generated/index.ts
619
+ var CfgAccountsApi = new API();
620
+ var CfgCentrifugoApi = new API2();
621
+ var CfgTotpApi = new API3();
622
+
623
+ // src/_api/generated/core/bodySerializer.gen.ts
624
+ var jsonBodySerializer = {
625
+ bodySerializer: /* @__PURE__ */ __name((body) => JSON.stringify(body, (_key, value) => typeof value === "bigint" ? value.toString() : value), "bodySerializer")
626
+ };
627
+
628
+ // src/_api/generated/core/params.gen.ts
629
+ var extraPrefixesMap = {
630
+ $body_: "body",
631
+ $headers_: "headers",
632
+ $path_: "path",
633
+ $query_: "query"
634
+ };
635
+ var extraPrefixes = Object.entries(extraPrefixesMap);
636
+
637
+ // src/_api/generated/core/serverSentEvents.gen.ts
638
+ function createSseClient({
639
+ onRequest,
640
+ onSseError,
641
+ onSseEvent,
642
+ responseTransformer,
643
+ responseValidator,
644
+ sseDefaultRetryDelay,
645
+ sseMaxRetryAttempts,
646
+ sseMaxRetryDelay,
647
+ sseSleepFn,
648
+ url,
649
+ ...options
650
+ }) {
651
+ let lastEventId;
652
+ const sleep = sseSleepFn ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
653
+ const createStream = /* @__PURE__ */ __name(async function* () {
654
+ let retryDelay = sseDefaultRetryDelay ?? 3e3;
655
+ let attempt = 0;
656
+ const signal = options.signal ?? new AbortController().signal;
657
+ while (true) {
658
+ if (signal.aborted) break;
659
+ attempt++;
660
+ const headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers);
661
+ if (lastEventId !== void 0) {
662
+ headers.set("Last-Event-ID", lastEventId);
663
+ }
664
+ try {
665
+ const requestInit = {
666
+ redirect: "follow",
667
+ ...options,
668
+ body: options.serializedBody,
669
+ headers,
670
+ signal
671
+ };
672
+ let request = new Request(url, requestInit);
673
+ if (onRequest) {
674
+ request = await onRequest(url, requestInit);
675
+ }
676
+ const _fetch = options.fetch ?? globalThis.fetch;
677
+ const response = await _fetch(request);
678
+ if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);
679
+ if (!response.body) throw new Error("No body in SSE response");
680
+ const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
681
+ let buffer = "";
682
+ const abortHandler = /* @__PURE__ */ __name(() => {
683
+ try {
684
+ reader.cancel();
685
+ } catch {
686
+ }
687
+ }, "abortHandler");
688
+ signal.addEventListener("abort", abortHandler);
689
+ try {
690
+ while (true) {
691
+ const { done, value } = await reader.read();
692
+ if (done) break;
693
+ buffer += value;
694
+ buffer = buffer.replace(/\r\n?/g, "\n");
695
+ const chunks = buffer.split("\n\n");
696
+ buffer = chunks.pop() ?? "";
697
+ for (const chunk of chunks) {
698
+ const lines = chunk.split("\n");
699
+ const dataLines = [];
700
+ let eventName;
701
+ for (const line of lines) {
702
+ if (line.startsWith("data:")) {
703
+ dataLines.push(line.replace(/^data:\s*/, ""));
704
+ } else if (line.startsWith("event:")) {
705
+ eventName = line.replace(/^event:\s*/, "");
706
+ } else if (line.startsWith("id:")) {
707
+ lastEventId = line.replace(/^id:\s*/, "");
708
+ } else if (line.startsWith("retry:")) {
709
+ const parsed = Number.parseInt(line.replace(/^retry:\s*/, ""), 10);
710
+ if (!Number.isNaN(parsed)) {
711
+ retryDelay = parsed;
712
+ }
713
+ }
714
+ }
715
+ let data;
716
+ let parsedJson = false;
717
+ if (dataLines.length) {
718
+ const rawData = dataLines.join("\n");
719
+ try {
720
+ data = JSON.parse(rawData);
721
+ parsedJson = true;
722
+ } catch {
723
+ data = rawData;
724
+ }
725
+ }
726
+ if (parsedJson) {
727
+ if (responseValidator) {
728
+ await responseValidator(data);
729
+ }
730
+ if (responseTransformer) {
731
+ data = await responseTransformer(data);
732
+ }
733
+ }
734
+ onSseEvent?.({
735
+ data,
736
+ event: eventName,
737
+ id: lastEventId,
738
+ retry: retryDelay
739
+ });
740
+ if (dataLines.length) {
741
+ yield data;
742
+ }
743
+ }
744
+ }
745
+ } finally {
746
+ signal.removeEventListener("abort", abortHandler);
747
+ reader.releaseLock();
748
+ }
749
+ break;
750
+ } catch (error) {
751
+ onSseError?.(error);
752
+ if (sseMaxRetryAttempts !== void 0 && attempt >= sseMaxRetryAttempts) {
753
+ break;
754
+ }
755
+ const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 3e4);
756
+ await sleep(backoff);
757
+ }
758
+ }
759
+ }, "createStream");
760
+ const stream = createStream();
761
+ return { stream };
762
+ }
763
+ __name(createSseClient, "createSseClient");
764
+
765
+ // src/_api/generated/core/pathSerializer.gen.ts
766
+ var separatorArrayExplode = /* @__PURE__ */ __name((style) => {
767
+ switch (style) {
768
+ case "label":
769
+ return ".";
770
+ case "matrix":
771
+ return ";";
772
+ case "simple":
773
+ return ",";
774
+ default:
775
+ return "&";
1176
776
  }
1177
- setRefreshToken(token) {
1178
- auth.setRefreshToken(token);
777
+ }, "separatorArrayExplode");
778
+ var separatorArrayNoExplode = /* @__PURE__ */ __name((style) => {
779
+ switch (style) {
780
+ case "form":
781
+ return ",";
782
+ case "pipeDelimited":
783
+ return "|";
784
+ case "spaceDelimited":
785
+ return "%20";
786
+ default:
787
+ return ",";
1179
788
  }
1180
- clearToken() {
1181
- auth.clearTokens();
789
+ }, "separatorArrayNoExplode");
790
+ var separatorObjectExplode = /* @__PURE__ */ __name((style) => {
791
+ switch (style) {
792
+ case "label":
793
+ return ".";
794
+ case "matrix":
795
+ return ";";
796
+ case "simple":
797
+ return ",";
798
+ default:
799
+ return "&";
1182
800
  }
1183
- isAuthenticated() {
1184
- return auth.isAuthenticated();
801
+ }, "separatorObjectExplode");
802
+ var serializeArrayParam = /* @__PURE__ */ __name(({
803
+ allowReserved,
804
+ explode,
805
+ name,
806
+ style,
807
+ value
808
+ }) => {
809
+ if (!explode) {
810
+ const joinedValues2 = (allowReserved ? value : value.map((v) => encodeURIComponent(v))).join(separatorArrayNoExplode(style));
811
+ switch (style) {
812
+ case "label":
813
+ return `.${joinedValues2}`;
814
+ case "matrix":
815
+ return `;${name}=${joinedValues2}`;
816
+ case "simple":
817
+ return joinedValues2;
818
+ default:
819
+ return `${name}=${joinedValues2}`;
820
+ }
1185
821
  }
1186
- // ── Locale / API key ────────────────────────────────────────────────────
1187
- getLocale() {
1188
- return auth.getLocale();
822
+ const separator = separatorArrayExplode(style);
823
+ const joinedValues = value.map((v) => {
824
+ if (style === "label" || style === "simple") {
825
+ return allowReserved ? v : encodeURIComponent(v);
826
+ }
827
+ return serializePrimitiveParam({
828
+ allowReserved,
829
+ name,
830
+ value: v
831
+ });
832
+ }).join(separator);
833
+ return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
834
+ }, "serializeArrayParam");
835
+ var serializePrimitiveParam = /* @__PURE__ */ __name(({
836
+ allowReserved,
837
+ name,
838
+ value
839
+ }) => {
840
+ if (value === void 0 || value === null) {
841
+ return "";
1189
842
  }
1190
- setLocale(locale) {
1191
- auth.setLocale(locale);
843
+ if (typeof value === "object") {
844
+ throw new Error(
845
+ "Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these."
846
+ );
1192
847
  }
1193
- getApiKey() {
1194
- return auth.getApiKey();
848
+ return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;
849
+ }, "serializePrimitiveParam");
850
+ var serializeObjectParam = /* @__PURE__ */ __name(({
851
+ allowReserved,
852
+ explode,
853
+ name,
854
+ style,
855
+ value,
856
+ valueOnly
857
+ }) => {
858
+ if (value instanceof Date) {
859
+ return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;
1195
860
  }
1196
- setApiKey(key) {
1197
- auth.setApiKey(key);
861
+ if (style !== "deepObject" && !explode) {
862
+ let values = [];
863
+ Object.entries(value).forEach(([key, v]) => {
864
+ values = [...values, key, allowReserved ? v : encodeURIComponent(v)];
865
+ });
866
+ const joinedValues2 = values.join(",");
867
+ switch (style) {
868
+ case "form":
869
+ return `${name}=${joinedValues2}`;
870
+ case "label":
871
+ return `.${joinedValues2}`;
872
+ case "matrix":
873
+ return `;${name}=${joinedValues2}`;
874
+ default:
875
+ return joinedValues2;
876
+ }
1198
877
  }
1199
- };
878
+ const separator = separatorObjectExplode(style);
879
+ const joinedValues = Object.entries(value).map(
880
+ ([key, v]) => serializePrimitiveParam({
881
+ allowReserved,
882
+ name: style === "deepObject" ? `${name}[${key}]` : key,
883
+ value: v
884
+ })
885
+ ).join(separator);
886
+ return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
887
+ }, "serializeObjectParam");
1200
888
 
1201
- // src/_api/generated/_cfg_centrifugo/api.ts
1202
- var API2 = class {
1203
- static {
1204
- __name(this, "API");
889
+ // src/_api/generated/core/utils.gen.ts
890
+ var PATH_PARAM_RE = /\{[^{}]+\}/g;
891
+ var defaultPathSerializer = /* @__PURE__ */ __name(({ path, url: _url }) => {
892
+ let url = _url;
893
+ const matches = _url.match(PATH_PARAM_RE);
894
+ if (matches) {
895
+ for (const match of matches) {
896
+ let explode = false;
897
+ let name = match.substring(1, match.length - 1);
898
+ let style = "simple";
899
+ if (name.endsWith("*")) {
900
+ explode = true;
901
+ name = name.substring(0, name.length - 1);
902
+ }
903
+ if (name.startsWith(".")) {
904
+ name = name.substring(1);
905
+ style = "label";
906
+ } else if (name.startsWith(";")) {
907
+ name = name.substring(1);
908
+ style = "matrix";
909
+ }
910
+ const value = path[name];
911
+ if (value === void 0 || value === null) {
912
+ continue;
913
+ }
914
+ if (Array.isArray(value)) {
915
+ url = url.replace(match, serializeArrayParam({ explode, name, style, value }));
916
+ continue;
917
+ }
918
+ if (typeof value === "object") {
919
+ url = url.replace(
920
+ match,
921
+ serializeObjectParam({
922
+ explode,
923
+ name,
924
+ style,
925
+ value,
926
+ valueOnly: true
927
+ })
928
+ );
929
+ continue;
930
+ }
931
+ if (style === "matrix") {
932
+ url = url.replace(
933
+ match,
934
+ `;${serializePrimitiveParam({
935
+ name,
936
+ value
937
+ })}`
938
+ );
939
+ continue;
940
+ }
941
+ const replaceValue = encodeURIComponent(
942
+ style === "label" ? `.${value}` : value
943
+ );
944
+ url = url.replace(match, replaceValue);
945
+ }
1205
946
  }
1206
- logger;
1207
- constructor(_baseUrl, opts = {}) {
1208
- this.logger = new APILogger(opts.logger);
1209
- if (_baseUrl) auth.setBaseUrl(_baseUrl);
1210
- if (opts.locale !== void 0) auth.setLocale(opts.locale);
1211
- if (opts.apiKey !== void 0) auth.setApiKey(opts.apiKey);
1212
- if (opts.withCredentials !== void 0) auth.setWithCredentials(opts.withCredentials);
947
+ return url;
948
+ }, "defaultPathSerializer");
949
+ var getUrl = /* @__PURE__ */ __name(({
950
+ baseUrl,
951
+ path,
952
+ query,
953
+ querySerializer,
954
+ url: _url
955
+ }) => {
956
+ const pathUrl = _url.startsWith("/") ? _url : `/${_url}`;
957
+ let url = (baseUrl ?? "") + pathUrl;
958
+ if (path) {
959
+ url = defaultPathSerializer({ path, url });
1213
960
  }
1214
- // ── Base URL ────────────────────────────────────────────────────────────
1215
- getBaseUrl() {
1216
- return auth.getBaseUrl();
961
+ let search = query ? querySerializer(query) : "";
962
+ if (search.startsWith("?")) {
963
+ search = search.substring(1);
1217
964
  }
1218
- setBaseUrl(url) {
1219
- auth.setBaseUrl(url);
965
+ if (search) {
966
+ url += `?${search}`;
1220
967
  }
1221
- // ── Tokens ──────────────────────────────────────────────────────────────
1222
- getToken() {
1223
- return auth.getToken();
968
+ return url;
969
+ }, "getUrl");
970
+ function getValidRequestBody(options) {
971
+ const hasBody = options.body !== void 0;
972
+ const isSerializedBody = hasBody && options.bodySerializer;
973
+ if (isSerializedBody) {
974
+ if ("serializedBody" in options) {
975
+ const hasSerializedBody = options.serializedBody !== void 0 && options.serializedBody !== "";
976
+ return hasSerializedBody ? options.serializedBody : null;
977
+ }
978
+ return options.body !== "" ? options.body : null;
1224
979
  }
1225
- setToken(token) {
1226
- auth.setToken(token);
980
+ if (hasBody) {
981
+ return options.body;
1227
982
  }
1228
- getRefreshToken() {
1229
- return auth.getRefreshToken();
983
+ return void 0;
984
+ }
985
+ __name(getValidRequestBody, "getValidRequestBody");
986
+
987
+ // src/_api/generated/core/auth.gen.ts
988
+ var getAuthToken = /* @__PURE__ */ __name(async (auth2, callback) => {
989
+ const token = typeof callback === "function" ? await callback(auth2) : callback;
990
+ if (!token) {
991
+ return;
1230
992
  }
1231
- setRefreshToken(token) {
1232
- auth.setRefreshToken(token);
993
+ if (auth2.scheme === "bearer") {
994
+ return `Bearer ${token}`;
1233
995
  }
1234
- clearToken() {
1235
- auth.clearTokens();
996
+ if (auth2.scheme === "basic") {
997
+ return `Basic ${btoa(token)}`;
1236
998
  }
1237
- isAuthenticated() {
1238
- return auth.isAuthenticated();
999
+ return token;
1000
+ }, "getAuthToken");
1001
+
1002
+ // src/_api/generated/client/utils.gen.ts
1003
+ var createQuerySerializer = /* @__PURE__ */ __name(({
1004
+ parameters = {},
1005
+ ...args
1006
+ } = {}) => {
1007
+ const querySerializer = /* @__PURE__ */ __name((queryParams) => {
1008
+ const search = [];
1009
+ if (queryParams && typeof queryParams === "object") {
1010
+ for (const name in queryParams) {
1011
+ const value = queryParams[name];
1012
+ if (value === void 0 || value === null) {
1013
+ continue;
1014
+ }
1015
+ const options = parameters[name] || args;
1016
+ if (Array.isArray(value)) {
1017
+ const serializedArray = serializeArrayParam({
1018
+ allowReserved: options.allowReserved,
1019
+ explode: true,
1020
+ name,
1021
+ style: "form",
1022
+ value,
1023
+ ...options.array
1024
+ });
1025
+ if (serializedArray) search.push(serializedArray);
1026
+ } else if (typeof value === "object") {
1027
+ const serializedObject = serializeObjectParam({
1028
+ allowReserved: options.allowReserved,
1029
+ explode: true,
1030
+ name,
1031
+ style: "deepObject",
1032
+ value,
1033
+ ...options.object
1034
+ });
1035
+ if (serializedObject) search.push(serializedObject);
1036
+ } else {
1037
+ const serializedPrimitive = serializePrimitiveParam({
1038
+ allowReserved: options.allowReserved,
1039
+ name,
1040
+ value
1041
+ });
1042
+ if (serializedPrimitive) search.push(serializedPrimitive);
1043
+ }
1044
+ }
1045
+ }
1046
+ return search.join("&");
1047
+ }, "querySerializer");
1048
+ return querySerializer;
1049
+ }, "createQuerySerializer");
1050
+ var getParseAs = /* @__PURE__ */ __name((contentType) => {
1051
+ if (!contentType) {
1052
+ return "stream";
1239
1053
  }
1240
- // ── Locale / API key ────────────────────────────────────────────────────
1241
- getLocale() {
1242
- return auth.getLocale();
1054
+ const cleanContent = contentType.split(";")[0]?.trim();
1055
+ if (!cleanContent) {
1056
+ return;
1243
1057
  }
1244
- setLocale(locale) {
1245
- auth.setLocale(locale);
1058
+ if (cleanContent.startsWith("application/json") || cleanContent.endsWith("+json")) {
1059
+ return "json";
1246
1060
  }
1247
- getApiKey() {
1248
- return auth.getApiKey();
1061
+ if (cleanContent === "multipart/form-data") {
1062
+ return "formData";
1249
1063
  }
1250
- setApiKey(key) {
1251
- auth.setApiKey(key);
1064
+ if (["application/", "audio/", "image/", "video/"].some((type) => cleanContent.startsWith(type))) {
1065
+ return "blob";
1252
1066
  }
1253
- };
1254
-
1255
- // src/_api/generated/_cfg_totp/api.ts
1256
- var API3 = class {
1257
- static {
1258
- __name(this, "API");
1067
+ if (cleanContent.startsWith("text/")) {
1068
+ return "text";
1259
1069
  }
1260
- logger;
1261
- constructor(_baseUrl, opts = {}) {
1262
- this.logger = new APILogger(opts.logger);
1263
- if (_baseUrl) auth.setBaseUrl(_baseUrl);
1264
- if (opts.locale !== void 0) auth.setLocale(opts.locale);
1265
- if (opts.apiKey !== void 0) auth.setApiKey(opts.apiKey);
1266
- if (opts.withCredentials !== void 0) auth.setWithCredentials(opts.withCredentials);
1070
+ return;
1071
+ }, "getParseAs");
1072
+ var checkForExistence = /* @__PURE__ */ __name((options, name) => {
1073
+ if (!name) {
1074
+ return false;
1267
1075
  }
1268
- // ── Base URL ────────────────────────────────────────────────────────────
1269
- getBaseUrl() {
1270
- return auth.getBaseUrl();
1076
+ if (options.headers.has(name) || options.query?.[name] || options.headers.get("Cookie")?.includes(`${name}=`)) {
1077
+ return true;
1271
1078
  }
1272
- setBaseUrl(url) {
1273
- auth.setBaseUrl(url);
1079
+ return false;
1080
+ }, "checkForExistence");
1081
+ var setAuthParams = /* @__PURE__ */ __name(async ({
1082
+ security,
1083
+ ...options
1084
+ }) => {
1085
+ for (const auth2 of security) {
1086
+ if (checkForExistence(options, auth2.name)) {
1087
+ continue;
1088
+ }
1089
+ const token = await getAuthToken(auth2, options.auth);
1090
+ if (!token) {
1091
+ continue;
1092
+ }
1093
+ const name = auth2.name ?? "Authorization";
1094
+ switch (auth2.in) {
1095
+ case "query":
1096
+ if (!options.query) {
1097
+ options.query = {};
1098
+ }
1099
+ options.query[name] = token;
1100
+ break;
1101
+ case "cookie":
1102
+ options.headers.append("Cookie", `${name}=${token}`);
1103
+ break;
1104
+ case "header":
1105
+ default:
1106
+ options.headers.set(name, token);
1107
+ break;
1108
+ }
1274
1109
  }
1275
- // ── Tokens ──────────────────────────────────────────────────────────────
1276
- getToken() {
1277
- return auth.getToken();
1110
+ }, "setAuthParams");
1111
+ var buildUrl = /* @__PURE__ */ __name((options) => getUrl({
1112
+ baseUrl: options.baseUrl,
1113
+ path: options.path,
1114
+ query: options.query,
1115
+ querySerializer: typeof options.querySerializer === "function" ? options.querySerializer : createQuerySerializer(options.querySerializer),
1116
+ url: options.url
1117
+ }), "buildUrl");
1118
+ var mergeConfigs = /* @__PURE__ */ __name((a, b) => {
1119
+ const config = { ...a, ...b };
1120
+ if (config.baseUrl?.endsWith("/")) {
1121
+ config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);
1278
1122
  }
1279
- setToken(token) {
1280
- auth.setToken(token);
1123
+ config.headers = mergeHeaders(a.headers, b.headers);
1124
+ return config;
1125
+ }, "mergeConfigs");
1126
+ var headersEntries = /* @__PURE__ */ __name((headers) => {
1127
+ const entries = [];
1128
+ headers.forEach((value, key) => {
1129
+ entries.push([key, value]);
1130
+ });
1131
+ return entries;
1132
+ }, "headersEntries");
1133
+ var mergeHeaders = /* @__PURE__ */ __name((...headers) => {
1134
+ const mergedHeaders = new Headers();
1135
+ for (const header of headers) {
1136
+ if (!header) {
1137
+ continue;
1138
+ }
1139
+ const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);
1140
+ for (const [key, value] of iterator) {
1141
+ if (value === null) {
1142
+ mergedHeaders.delete(key);
1143
+ } else if (Array.isArray(value)) {
1144
+ for (const v of value) {
1145
+ mergedHeaders.append(key, v);
1146
+ }
1147
+ } else if (value !== void 0) {
1148
+ mergedHeaders.set(
1149
+ key,
1150
+ typeof value === "object" ? JSON.stringify(value) : value
1151
+ );
1152
+ }
1153
+ }
1281
1154
  }
1282
- getRefreshToken() {
1283
- return auth.getRefreshToken();
1155
+ return mergedHeaders;
1156
+ }, "mergeHeaders");
1157
+ var Interceptors = class {
1158
+ static {
1159
+ __name(this, "Interceptors");
1284
1160
  }
1285
- setRefreshToken(token) {
1286
- auth.setRefreshToken(token);
1161
+ fns = [];
1162
+ clear() {
1163
+ this.fns = [];
1287
1164
  }
1288
- clearToken() {
1289
- auth.clearTokens();
1165
+ eject(id) {
1166
+ const index = this.getInterceptorIndex(id);
1167
+ if (this.fns[index]) {
1168
+ this.fns[index] = null;
1169
+ }
1290
1170
  }
1291
- isAuthenticated() {
1292
- return auth.isAuthenticated();
1171
+ exists(id) {
1172
+ const index = this.getInterceptorIndex(id);
1173
+ return Boolean(this.fns[index]);
1293
1174
  }
1294
- // ── Locale / API key ────────────────────────────────────────────────────
1295
- getLocale() {
1296
- return auth.getLocale();
1175
+ getInterceptorIndex(id) {
1176
+ if (typeof id === "number") {
1177
+ return this.fns[id] ? id : -1;
1178
+ }
1179
+ return this.fns.indexOf(id);
1297
1180
  }
1298
- setLocale(locale) {
1299
- auth.setLocale(locale);
1181
+ update(id, fn) {
1182
+ const index = this.getInterceptorIndex(id);
1183
+ if (this.fns[index]) {
1184
+ this.fns[index] = fn;
1185
+ return id;
1186
+ }
1187
+ return false;
1300
1188
  }
1301
- getApiKey() {
1302
- return auth.getApiKey();
1189
+ use(fn) {
1190
+ this.fns.push(fn);
1191
+ return this.fns.length - 1;
1303
1192
  }
1304
- setApiKey(key) {
1305
- auth.setApiKey(key);
1193
+ };
1194
+ var createInterceptors = /* @__PURE__ */ __name(() => ({
1195
+ error: new Interceptors(),
1196
+ request: new Interceptors(),
1197
+ response: new Interceptors()
1198
+ }), "createInterceptors");
1199
+ var defaultQuerySerializer = createQuerySerializer({
1200
+ allowReserved: false,
1201
+ array: {
1202
+ explode: true,
1203
+ style: "form"
1204
+ },
1205
+ object: {
1206
+ explode: true,
1207
+ style: "deepObject"
1306
1208
  }
1209
+ });
1210
+ var defaultHeaders = {
1211
+ "Content-Type": "application/json"
1307
1212
  };
1213
+ var createConfig = /* @__PURE__ */ __name((override = {}) => ({
1214
+ ...jsonBodySerializer,
1215
+ headers: defaultHeaders,
1216
+ parseAs: "auto",
1217
+ querySerializer: defaultQuerySerializer,
1218
+ ...override
1219
+ }), "createConfig");
1308
1220
 
1309
- // src/_api/generated/index.ts
1310
- var CfgAccountsApi = new API();
1311
- var CfgCentrifugoApi = new API2();
1312
- var CfgTotpApi = new API3();
1221
+ // src/_api/generated/client/client.gen.ts
1222
+ var createClient = /* @__PURE__ */ __name((config = {}) => {
1223
+ let _config = mergeConfigs(createConfig(), config);
1224
+ const getConfig = /* @__PURE__ */ __name(() => ({ ..._config }), "getConfig");
1225
+ const setConfig = /* @__PURE__ */ __name((config2) => {
1226
+ _config = mergeConfigs(_config, config2);
1227
+ return getConfig();
1228
+ }, "setConfig");
1229
+ const interceptors = createInterceptors();
1230
+ const beforeRequest = /* @__PURE__ */ __name(async (options) => {
1231
+ const opts = {
1232
+ ..._config,
1233
+ ...options,
1234
+ fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
1235
+ headers: mergeHeaders(_config.headers, options.headers),
1236
+ serializedBody: void 0
1237
+ };
1238
+ if (opts.security) {
1239
+ await setAuthParams({
1240
+ ...opts,
1241
+ security: opts.security
1242
+ });
1243
+ }
1244
+ if (opts.requestValidator) {
1245
+ await opts.requestValidator(opts);
1246
+ }
1247
+ if (opts.body !== void 0 && opts.bodySerializer) {
1248
+ opts.serializedBody = opts.bodySerializer(opts.body);
1249
+ }
1250
+ if (opts.body === void 0 || opts.serializedBody === "") {
1251
+ opts.headers.delete("Content-Type");
1252
+ }
1253
+ const resolvedOpts = opts;
1254
+ const url = buildUrl(resolvedOpts);
1255
+ return { opts: resolvedOpts, url };
1256
+ }, "beforeRequest");
1257
+ const request = /* @__PURE__ */ __name(async (options) => {
1258
+ const throwOnError = options.throwOnError ?? _config.throwOnError;
1259
+ const responseStyle = options.responseStyle ?? _config.responseStyle;
1260
+ let request2;
1261
+ let response;
1262
+ try {
1263
+ const { opts, url } = await beforeRequest(options);
1264
+ const requestInit = {
1265
+ redirect: "follow",
1266
+ ...opts,
1267
+ body: getValidRequestBody(opts)
1268
+ };
1269
+ request2 = new Request(url, requestInit);
1270
+ for (const fn of interceptors.request.fns) {
1271
+ if (fn) {
1272
+ request2 = await fn(request2, opts);
1273
+ }
1274
+ }
1275
+ const _fetch = opts.fetch;
1276
+ response = await _fetch(request2);
1277
+ for (const fn of interceptors.response.fns) {
1278
+ if (fn) {
1279
+ response = await fn(response, request2, opts);
1280
+ }
1281
+ }
1282
+ const result = {
1283
+ request: request2,
1284
+ response
1285
+ };
1286
+ if (response.ok) {
1287
+ const parseAs = (opts.parseAs === "auto" ? getParseAs(response.headers.get("Content-Type")) : opts.parseAs) ?? "json";
1288
+ if (response.status === 204 || response.headers.get("Content-Length") === "0") {
1289
+ let emptyData;
1290
+ switch (parseAs) {
1291
+ case "arrayBuffer":
1292
+ case "blob":
1293
+ case "text":
1294
+ emptyData = await response[parseAs]();
1295
+ break;
1296
+ case "formData":
1297
+ emptyData = new FormData();
1298
+ break;
1299
+ case "stream":
1300
+ emptyData = response.body;
1301
+ break;
1302
+ case "json":
1303
+ default:
1304
+ emptyData = {};
1305
+ break;
1306
+ }
1307
+ return opts.responseStyle === "data" ? emptyData : {
1308
+ data: emptyData,
1309
+ ...result
1310
+ };
1311
+ }
1312
+ let data;
1313
+ switch (parseAs) {
1314
+ case "arrayBuffer":
1315
+ case "blob":
1316
+ case "formData":
1317
+ case "text":
1318
+ data = await response[parseAs]();
1319
+ break;
1320
+ case "json": {
1321
+ const text = await response.text();
1322
+ data = text ? JSON.parse(text) : {};
1323
+ break;
1324
+ }
1325
+ case "stream":
1326
+ return opts.responseStyle === "data" ? response.body : {
1327
+ data: response.body,
1328
+ ...result
1329
+ };
1330
+ }
1331
+ if (parseAs === "json") {
1332
+ if (opts.responseValidator) {
1333
+ await opts.responseValidator(data);
1334
+ }
1335
+ if (opts.responseTransformer) {
1336
+ data = await opts.responseTransformer(data);
1337
+ }
1338
+ }
1339
+ return opts.responseStyle === "data" ? data : {
1340
+ data,
1341
+ ...result
1342
+ };
1343
+ }
1344
+ const textError = await response.text();
1345
+ let jsonError;
1346
+ try {
1347
+ jsonError = JSON.parse(textError);
1348
+ } catch {
1349
+ }
1350
+ throw jsonError ?? textError;
1351
+ } catch (error) {
1352
+ let finalError = error;
1353
+ for (const fn of interceptors.error.fns) {
1354
+ if (fn) {
1355
+ finalError = await fn(finalError, response, request2, options);
1356
+ }
1357
+ }
1358
+ finalError = finalError || {};
1359
+ if (throwOnError) {
1360
+ throw finalError;
1361
+ }
1362
+ return responseStyle === "data" ? void 0 : {
1363
+ error: finalError,
1364
+ request: request2,
1365
+ response
1366
+ };
1367
+ }
1368
+ }, "request");
1369
+ const makeMethodFn = /* @__PURE__ */ __name((method) => (options) => request({ ...options, method }), "makeMethodFn");
1370
+ const makeSseFn = /* @__PURE__ */ __name((method) => async (options) => {
1371
+ const { opts, url } = await beforeRequest(options);
1372
+ return createSseClient({
1373
+ ...opts,
1374
+ body: opts.body,
1375
+ method,
1376
+ onRequest: /* @__PURE__ */ __name(async (url2, init) => {
1377
+ let request2 = new Request(url2, init);
1378
+ for (const fn of interceptors.request.fns) {
1379
+ if (fn) {
1380
+ request2 = await fn(request2, opts);
1381
+ }
1382
+ }
1383
+ return request2;
1384
+ }, "onRequest"),
1385
+ serializedBody: getValidRequestBody(opts),
1386
+ url
1387
+ });
1388
+ }, "makeSseFn");
1389
+ const _buildUrl = /* @__PURE__ */ __name((options) => buildUrl({ ..._config, ...options }), "_buildUrl");
1390
+ return {
1391
+ buildUrl: _buildUrl,
1392
+ connect: makeMethodFn("CONNECT"),
1393
+ delete: makeMethodFn("DELETE"),
1394
+ get: makeMethodFn("GET"),
1395
+ getConfig,
1396
+ head: makeMethodFn("HEAD"),
1397
+ interceptors,
1398
+ options: makeMethodFn("OPTIONS"),
1399
+ patch: makeMethodFn("PATCH"),
1400
+ post: makeMethodFn("POST"),
1401
+ put: makeMethodFn("PUT"),
1402
+ request,
1403
+ setConfig,
1404
+ sse: {
1405
+ connect: makeSseFn("CONNECT"),
1406
+ delete: makeSseFn("DELETE"),
1407
+ get: makeSseFn("GET"),
1408
+ head: makeSseFn("HEAD"),
1409
+ options: makeSseFn("OPTIONS"),
1410
+ patch: makeSseFn("PATCH"),
1411
+ post: makeSseFn("POST"),
1412
+ put: makeSseFn("PUT"),
1413
+ trace: makeSseFn("TRACE")
1414
+ },
1415
+ trace: makeMethodFn("TRACE")
1416
+ };
1417
+ }, "createClient");
1418
+
1419
+ // src/_api/generated/client.gen.ts
1420
+ var client = createClient(createConfig({ baseUrl: "http://localhost:8000" }));
1421
+ installAuthOnClient(client);
1313
1422
 
1314
1423
  // src/_api/generated/sdk.gen.ts
1315
1424
  var Auth = class {