@djangocfg/api 2.1.331 → 2.1.333

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/dist/clients.cjs CHANGED
@@ -30,838 +30,178 @@ __export(clients_exports, {
30
30
  });
31
31
  module.exports = __toCommonJS(clients_exports);
32
32
 
33
- // src/_api/generated/core/bodySerializer.gen.ts
34
- var jsonBodySerializer = {
35
- bodySerializer: /* @__PURE__ */ __name((body) => JSON.stringify(body, (_key, value) => typeof value === "bigint" ? value.toString() : value), "bodySerializer")
36
- };
37
-
38
- // src/_api/generated/core/params.gen.ts
39
- var extraPrefixesMap = {
40
- $body_: "body",
41
- $headers_: "headers",
42
- $path_: "path",
43
- $query_: "query"
44
- };
45
- var extraPrefixes = Object.entries(extraPrefixesMap);
46
-
47
- // src/_api/generated/core/serverSentEvents.gen.ts
48
- function createSseClient({
49
- onRequest,
50
- onSseError,
51
- onSseEvent,
52
- responseTransformer,
53
- responseValidator,
54
- sseDefaultRetryDelay,
55
- sseMaxRetryAttempts,
56
- sseMaxRetryDelay,
57
- sseSleepFn,
58
- url,
59
- ...options
60
- }) {
61
- let lastEventId;
62
- const sleep = sseSleepFn ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
63
- const createStream = /* @__PURE__ */ __name(async function* () {
64
- let retryDelay = sseDefaultRetryDelay ?? 3e3;
65
- let attempt = 0;
66
- const signal = options.signal ?? new AbortController().signal;
67
- while (true) {
68
- if (signal.aborted) break;
69
- attempt++;
70
- const headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers);
71
- if (lastEventId !== void 0) {
72
- headers.set("Last-Event-ID", lastEventId);
73
- }
74
- try {
75
- const requestInit = {
76
- redirect: "follow",
77
- ...options,
78
- body: options.serializedBody,
79
- headers,
80
- signal
81
- };
82
- let request = new Request(url, requestInit);
83
- if (onRequest) {
84
- request = await onRequest(url, requestInit);
85
- }
86
- const _fetch = options.fetch ?? globalThis.fetch;
87
- const response = await _fetch(request);
88
- if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);
89
- if (!response.body) throw new Error("No body in SSE response");
90
- const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
91
- let buffer = "";
92
- const abortHandler = /* @__PURE__ */ __name(() => {
93
- try {
94
- reader.cancel();
95
- } catch {
96
- }
97
- }, "abortHandler");
98
- signal.addEventListener("abort", abortHandler);
99
- try {
100
- while (true) {
101
- const { done, value } = await reader.read();
102
- if (done) break;
103
- buffer += value;
104
- buffer = buffer.replace(/\r\n?/g, "\n");
105
- const chunks = buffer.split("\n\n");
106
- buffer = chunks.pop() ?? "";
107
- for (const chunk of chunks) {
108
- const lines = chunk.split("\n");
109
- const dataLines = [];
110
- let eventName;
111
- for (const line of lines) {
112
- if (line.startsWith("data:")) {
113
- dataLines.push(line.replace(/^data:\s*/, ""));
114
- } else if (line.startsWith("event:")) {
115
- eventName = line.replace(/^event:\s*/, "");
116
- } else if (line.startsWith("id:")) {
117
- lastEventId = line.replace(/^id:\s*/, "");
118
- } else if (line.startsWith("retry:")) {
119
- const parsed = Number.parseInt(line.replace(/^retry:\s*/, ""), 10);
120
- if (!Number.isNaN(parsed)) {
121
- retryDelay = parsed;
122
- }
123
- }
124
- }
125
- let data;
126
- let parsedJson = false;
127
- if (dataLines.length) {
128
- const rawData = dataLines.join("\n");
129
- try {
130
- data = JSON.parse(rawData);
131
- parsedJson = true;
132
- } catch {
133
- data = rawData;
134
- }
135
- }
136
- if (parsedJson) {
137
- if (responseValidator) {
138
- await responseValidator(data);
139
- }
140
- if (responseTransformer) {
141
- data = await responseTransformer(data);
142
- }
143
- }
144
- onSseEvent?.({
145
- data,
146
- event: eventName,
147
- id: lastEventId,
148
- retry: retryDelay
149
- });
150
- if (dataLines.length) {
151
- yield data;
152
- }
153
- }
154
- }
155
- } finally {
156
- signal.removeEventListener("abort", abortHandler);
157
- reader.releaseLock();
158
- }
159
- break;
160
- } catch (error) {
161
- onSseError?.(error);
162
- if (sseMaxRetryAttempts !== void 0 && attempt >= sseMaxRetryAttempts) {
163
- break;
164
- }
165
- const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 3e4);
166
- await sleep(backoff);
167
- }
168
- }
169
- }, "createStream");
170
- const stream = createStream();
171
- return { stream };
172
- }
173
- __name(createSseClient, "createSseClient");
174
-
175
- // src/_api/generated/core/pathSerializer.gen.ts
176
- var separatorArrayExplode = /* @__PURE__ */ __name((style) => {
177
- switch (style) {
178
- case "label":
179
- return ".";
180
- case "matrix":
181
- return ";";
182
- case "simple":
183
- return ",";
184
- default:
185
- return "&";
186
- }
187
- }, "separatorArrayExplode");
188
- var separatorArrayNoExplode = /* @__PURE__ */ __name((style) => {
189
- switch (style) {
190
- case "form":
191
- return ",";
192
- case "pipeDelimited":
193
- return "|";
194
- case "spaceDelimited":
195
- return "%20";
196
- default:
197
- return ",";
198
- }
199
- }, "separatorArrayNoExplode");
200
- var separatorObjectExplode = /* @__PURE__ */ __name((style) => {
201
- switch (style) {
202
- case "label":
203
- return ".";
204
- case "matrix":
205
- return ";";
206
- case "simple":
207
- return ",";
208
- default:
209
- return "&";
210
- }
211
- }, "separatorObjectExplode");
212
- var serializeArrayParam = /* @__PURE__ */ __name(({
213
- allowReserved,
214
- explode,
215
- name,
216
- style,
217
- value
218
- }) => {
219
- if (!explode) {
220
- const joinedValues2 = (allowReserved ? value : value.map((v) => encodeURIComponent(v))).join(separatorArrayNoExplode(style));
221
- switch (style) {
222
- case "label":
223
- return `.${joinedValues2}`;
224
- case "matrix":
225
- return `;${name}=${joinedValues2}`;
226
- case "simple":
227
- return joinedValues2;
228
- default:
229
- return `${name}=${joinedValues2}`;
230
- }
231
- }
232
- const separator = separatorArrayExplode(style);
233
- const joinedValues = value.map((v) => {
234
- if (style === "label" || style === "simple") {
235
- return allowReserved ? v : encodeURIComponent(v);
236
- }
237
- return serializePrimitiveParam({
238
- allowReserved,
239
- name,
240
- value: v
241
- });
242
- }).join(separator);
243
- return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
244
- }, "serializeArrayParam");
245
- var serializePrimitiveParam = /* @__PURE__ */ __name(({
246
- allowReserved,
247
- name,
248
- value
249
- }) => {
250
- if (value === void 0 || value === null) {
251
- return "";
252
- }
253
- if (typeof value === "object") {
254
- throw new Error(
255
- "Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these."
256
- );
257
- }
258
- return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;
259
- }, "serializePrimitiveParam");
260
- var serializeObjectParam = /* @__PURE__ */ __name(({
261
- allowReserved,
262
- explode,
263
- name,
264
- style,
265
- value,
266
- valueOnly
267
- }) => {
268
- if (value instanceof Date) {
269
- return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;
270
- }
271
- if (style !== "deepObject" && !explode) {
272
- let values = [];
273
- Object.entries(value).forEach(([key, v]) => {
274
- values = [...values, key, allowReserved ? v : encodeURIComponent(v)];
275
- });
276
- const joinedValues2 = values.join(",");
277
- switch (style) {
278
- case "form":
279
- return `${name}=${joinedValues2}`;
280
- case "label":
281
- return `.${joinedValues2}`;
282
- case "matrix":
283
- return `;${name}=${joinedValues2}`;
284
- default:
285
- return joinedValues2;
286
- }
287
- }
288
- const separator = separatorObjectExplode(style);
289
- const joinedValues = Object.entries(value).map(
290
- ([key, v]) => serializePrimitiveParam({
291
- allowReserved,
292
- name: style === "deepObject" ? `${name}[${key}]` : key,
293
- value: v
294
- })
295
- ).join(separator);
296
- return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
297
- }, "serializeObjectParam");
298
-
299
- // src/_api/generated/core/utils.gen.ts
300
- var PATH_PARAM_RE = /\{[^{}]+\}/g;
301
- var defaultPathSerializer = /* @__PURE__ */ __name(({ path, url: _url }) => {
302
- let url = _url;
303
- const matches = _url.match(PATH_PARAM_RE);
304
- if (matches) {
305
- for (const match of matches) {
306
- let explode = false;
307
- let name = match.substring(1, match.length - 1);
308
- let style = "simple";
309
- if (name.endsWith("*")) {
310
- explode = true;
311
- name = name.substring(0, name.length - 1);
312
- }
313
- if (name.startsWith(".")) {
314
- name = name.substring(1);
315
- style = "label";
316
- } else if (name.startsWith(";")) {
317
- name = name.substring(1);
318
- style = "matrix";
319
- }
320
- const value = path[name];
321
- if (value === void 0 || value === null) {
322
- continue;
323
- }
324
- if (Array.isArray(value)) {
325
- url = url.replace(match, serializeArrayParam({ explode, name, style, value }));
326
- continue;
327
- }
328
- if (typeof value === "object") {
329
- url = url.replace(
330
- match,
331
- serializeObjectParam({
332
- explode,
333
- name,
334
- style,
335
- value,
336
- valueOnly: true
337
- })
338
- );
339
- continue;
340
- }
341
- if (style === "matrix") {
342
- url = url.replace(
343
- match,
344
- `;${serializePrimitiveParam({
345
- name,
346
- value
347
- })}`
348
- );
349
- continue;
350
- }
351
- const replaceValue = encodeURIComponent(
352
- style === "label" ? `.${value}` : value
353
- );
354
- url = url.replace(match, replaceValue);
355
- }
356
- }
357
- return url;
358
- }, "defaultPathSerializer");
359
- var getUrl = /* @__PURE__ */ __name(({
360
- baseUrl: baseUrl2,
361
- path,
362
- query,
363
- querySerializer,
364
- url: _url
365
- }) => {
366
- const pathUrl = _url.startsWith("/") ? _url : `/${_url}`;
367
- let url = (baseUrl2 ?? "") + pathUrl;
368
- if (path) {
369
- url = defaultPathSerializer({ path, url });
370
- }
371
- let search = query ? querySerializer(query) : "";
372
- if (search.startsWith("?")) {
373
- search = search.substring(1);
374
- }
375
- if (search) {
376
- url += `?${search}`;
377
- }
378
- return url;
379
- }, "getUrl");
380
- function getValidRequestBody(options) {
381
- const hasBody = options.body !== void 0;
382
- const isSerializedBody = hasBody && options.bodySerializer;
383
- if (isSerializedBody) {
384
- if ("serializedBody" in options) {
385
- const hasSerializedBody = options.serializedBody !== void 0 && options.serializedBody !== "";
386
- return hasSerializedBody ? options.serializedBody : null;
387
- }
388
- return options.body !== "" ? options.body : null;
389
- }
390
- if (hasBody) {
391
- return options.body;
392
- }
393
- return void 0;
394
- }
395
- __name(getValidRequestBody, "getValidRequestBody");
396
-
397
- // src/_api/generated/core/auth.gen.ts
398
- var getAuthToken = /* @__PURE__ */ __name(async (auth, callback) => {
399
- const token = typeof callback === "function" ? await callback(auth) : callback;
400
- if (!token) {
401
- return;
402
- }
403
- if (auth.scheme === "bearer") {
404
- return `Bearer ${token}`;
405
- }
406
- if (auth.scheme === "basic") {
407
- return `Basic ${btoa(token)}`;
408
- }
409
- return token;
410
- }, "getAuthToken");
411
-
412
- // src/_api/generated/client/utils.gen.ts
413
- var createQuerySerializer = /* @__PURE__ */ __name(({
414
- parameters = {},
415
- ...args
416
- } = {}) => {
417
- const querySerializer = /* @__PURE__ */ __name((queryParams) => {
418
- const search = [];
419
- if (queryParams && typeof queryParams === "object") {
420
- for (const name in queryParams) {
421
- const value = queryParams[name];
422
- if (value === void 0 || value === null) {
423
- continue;
424
- }
425
- const options = parameters[name] || args;
426
- if (Array.isArray(value)) {
427
- const serializedArray = serializeArrayParam({
428
- allowReserved: options.allowReserved,
429
- explode: true,
430
- name,
431
- style: "form",
432
- value,
433
- ...options.array
434
- });
435
- if (serializedArray) search.push(serializedArray);
436
- } else if (typeof value === "object") {
437
- const serializedObject = serializeObjectParam({
438
- allowReserved: options.allowReserved,
439
- explode: true,
440
- name,
441
- style: "deepObject",
442
- value,
443
- ...options.object
444
- });
445
- if (serializedObject) search.push(serializedObject);
446
- } else {
447
- const serializedPrimitive = serializePrimitiveParam({
448
- allowReserved: options.allowReserved,
449
- name,
450
- value
451
- });
452
- if (serializedPrimitive) search.push(serializedPrimitive);
453
- }
454
- }
455
- }
456
- return search.join("&");
457
- }, "querySerializer");
458
- return querySerializer;
459
- }, "createQuerySerializer");
460
- var getParseAs = /* @__PURE__ */ __name((contentType) => {
461
- if (!contentType) {
462
- return "stream";
463
- }
464
- const cleanContent = contentType.split(";")[0]?.trim();
465
- if (!cleanContent) {
466
- return;
467
- }
468
- if (cleanContent.startsWith("application/json") || cleanContent.endsWith("+json")) {
469
- return "json";
470
- }
471
- if (cleanContent === "multipart/form-data") {
472
- return "formData";
473
- }
474
- if (["application/", "audio/", "image/", "video/"].some((type) => cleanContent.startsWith(type))) {
475
- return "blob";
476
- }
477
- if (cleanContent.startsWith("text/")) {
478
- return "text";
479
- }
480
- return;
481
- }, "getParseAs");
482
- var checkForExistence = /* @__PURE__ */ __name((options, name) => {
483
- if (!name) {
484
- return false;
485
- }
486
- if (options.headers.has(name) || options.query?.[name] || options.headers.get("Cookie")?.includes(`${name}=`)) {
487
- return true;
488
- }
489
- return false;
490
- }, "checkForExistence");
491
- var setAuthParams = /* @__PURE__ */ __name(async ({
492
- security,
493
- ...options
494
- }) => {
495
- for (const auth of security) {
496
- if (checkForExistence(options, auth.name)) {
497
- continue;
498
- }
499
- const token = await getAuthToken(auth, options.auth);
500
- if (!token) {
501
- continue;
502
- }
503
- const name = auth.name ?? "Authorization";
504
- switch (auth.in) {
505
- case "query":
506
- if (!options.query) {
507
- options.query = {};
508
- }
509
- options.query[name] = token;
510
- break;
511
- case "cookie":
512
- options.headers.append("Cookie", `${name}=${token}`);
513
- break;
514
- case "header":
515
- default:
516
- options.headers.set(name, token);
517
- break;
518
- }
519
- }
520
- }, "setAuthParams");
521
- var buildUrl = /* @__PURE__ */ __name((options) => getUrl({
522
- baseUrl: options.baseUrl,
523
- path: options.path,
524
- query: options.query,
525
- querySerializer: typeof options.querySerializer === "function" ? options.querySerializer : createQuerySerializer(options.querySerializer),
526
- url: options.url
527
- }), "buildUrl");
528
- var mergeConfigs = /* @__PURE__ */ __name((a, b) => {
529
- const config = { ...a, ...b };
530
- if (config.baseUrl?.endsWith("/")) {
531
- config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);
532
- }
533
- config.headers = mergeHeaders(a.headers, b.headers);
534
- return config;
535
- }, "mergeConfigs");
536
- var headersEntries = /* @__PURE__ */ __name((headers) => {
537
- const entries = [];
538
- headers.forEach((value, key) => {
539
- entries.push([key, value]);
540
- });
541
- return entries;
542
- }, "headersEntries");
543
- var mergeHeaders = /* @__PURE__ */ __name((...headers) => {
544
- const mergedHeaders = new Headers();
545
- for (const header of headers) {
546
- if (!header) {
547
- continue;
548
- }
549
- const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);
550
- for (const [key, value] of iterator) {
551
- if (value === null) {
552
- mergedHeaders.delete(key);
553
- } else if (Array.isArray(value)) {
554
- for (const v of value) {
555
- mergedHeaders.append(key, v);
556
- }
557
- } else if (value !== void 0) {
558
- mergedHeaders.set(
559
- key,
560
- typeof value === "object" ? JSON.stringify(value) : value
561
- );
562
- }
563
- }
564
- }
565
- return mergedHeaders;
566
- }, "mergeHeaders");
567
- var Interceptors = class {
568
- static {
569
- __name(this, "Interceptors");
570
- }
571
- fns = [];
572
- clear() {
573
- this.fns = [];
574
- }
575
- eject(id) {
576
- const index = this.getInterceptorIndex(id);
577
- if (this.fns[index]) {
578
- this.fns[index] = null;
579
- }
580
- }
581
- exists(id) {
582
- const index = this.getInterceptorIndex(id);
583
- return Boolean(this.fns[index]);
584
- }
585
- getInterceptorIndex(id) {
586
- if (typeof id === "number") {
587
- return this.fns[id] ? id : -1;
588
- }
589
- return this.fns.indexOf(id);
590
- }
591
- update(id, fn) {
592
- const index = this.getInterceptorIndex(id);
593
- if (this.fns[index]) {
594
- this.fns[index] = fn;
595
- return id;
33
+ // src/_api/generated/helpers/auth.ts
34
+ var ACCESS_KEY = "cfg.access_token";
35
+ var REFRESH_KEY = "cfg.refresh_token";
36
+ var API_KEY_KEY = "cfg.api_key";
37
+ var isBrowser = typeof window !== "undefined";
38
+ var localStorageBackend = {
39
+ get(key) {
40
+ if (!isBrowser) return null;
41
+ try {
42
+ return window.localStorage.getItem(key);
43
+ } catch {
44
+ return null;
596
45
  }
597
- return false;
598
- }
599
- use(fn) {
600
- this.fns.push(fn);
601
- return this.fns.length - 1;
602
- }
603
- };
604
- var createInterceptors = /* @__PURE__ */ __name(() => ({
605
- error: new Interceptors(),
606
- request: new Interceptors(),
607
- response: new Interceptors()
608
- }), "createInterceptors");
609
- var defaultQuerySerializer = createQuerySerializer({
610
- allowReserved: false,
611
- array: {
612
- explode: true,
613
- style: "form"
614
46
  },
615
- object: {
616
- explode: true,
617
- style: "deepObject"
618
- }
619
- });
620
- var defaultHeaders = {
621
- "Content-Type": "application/json"
622
- };
623
- var createConfig = /* @__PURE__ */ __name((override = {}) => ({
624
- ...jsonBodySerializer,
625
- headers: defaultHeaders,
626
- parseAs: "auto",
627
- querySerializer: defaultQuerySerializer,
628
- ...override
629
- }), "createConfig");
630
-
631
- // src/_api/generated/client/client.gen.ts
632
- var createClient = /* @__PURE__ */ __name((config = {}) => {
633
- let _config = mergeConfigs(createConfig(), config);
634
- const getConfig = /* @__PURE__ */ __name(() => ({ ..._config }), "getConfig");
635
- const setConfig = /* @__PURE__ */ __name((config2) => {
636
- _config = mergeConfigs(_config, config2);
637
- return getConfig();
638
- }, "setConfig");
639
- const interceptors = createInterceptors();
640
- const beforeRequest = /* @__PURE__ */ __name(async (options) => {
641
- const opts = {
642
- ..._config,
643
- ...options,
644
- fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
645
- headers: mergeHeaders(_config.headers, options.headers),
646
- serializedBody: void 0
647
- };
648
- if (opts.security) {
649
- await setAuthParams({
650
- ...opts,
651
- security: opts.security
652
- });
653
- }
654
- if (opts.requestValidator) {
655
- await opts.requestValidator(opts);
656
- }
657
- if (opts.body !== void 0 && opts.bodySerializer) {
658
- opts.serializedBody = opts.bodySerializer(opts.body);
659
- }
660
- if (opts.body === void 0 || opts.serializedBody === "") {
661
- opts.headers.delete("Content-Type");
662
- }
663
- const resolvedOpts = opts;
664
- const url = buildUrl(resolvedOpts);
665
- return { opts: resolvedOpts, url };
666
- }, "beforeRequest");
667
- const request = /* @__PURE__ */ __name(async (options) => {
668
- const throwOnError = options.throwOnError ?? _config.throwOnError;
669
- const responseStyle = options.responseStyle ?? _config.responseStyle;
670
- let request2;
671
- let response;
47
+ set(key, value) {
48
+ if (!isBrowser) return;
672
49
  try {
673
- const { opts, url } = await beforeRequest(options);
674
- const requestInit = {
675
- redirect: "follow",
676
- ...opts,
677
- body: getValidRequestBody(opts)
678
- };
679
- request2 = new Request(url, requestInit);
680
- for (const fn of interceptors.request.fns) {
681
- if (fn) {
682
- request2 = await fn(request2, opts);
683
- }
684
- }
685
- const _fetch = opts.fetch;
686
- response = await _fetch(request2);
687
- for (const fn of interceptors.response.fns) {
688
- if (fn) {
689
- response = await fn(response, request2, opts);
690
- }
691
- }
692
- const result = {
693
- request: request2,
694
- response
695
- };
696
- if (response.ok) {
697
- const parseAs = (opts.parseAs === "auto" ? getParseAs(response.headers.get("Content-Type")) : opts.parseAs) ?? "json";
698
- if (response.status === 204 || response.headers.get("Content-Length") === "0") {
699
- let emptyData;
700
- switch (parseAs) {
701
- case "arrayBuffer":
702
- case "blob":
703
- case "text":
704
- emptyData = await response[parseAs]();
705
- break;
706
- case "formData":
707
- emptyData = new FormData();
708
- break;
709
- case "stream":
710
- emptyData = response.body;
711
- break;
712
- case "json":
713
- default:
714
- emptyData = {};
715
- break;
716
- }
717
- return opts.responseStyle === "data" ? emptyData : {
718
- data: emptyData,
719
- ...result
720
- };
721
- }
722
- let data;
723
- switch (parseAs) {
724
- case "arrayBuffer":
725
- case "blob":
726
- case "formData":
727
- case "text":
728
- data = await response[parseAs]();
729
- break;
730
- case "json": {
731
- const text = await response.text();
732
- data = text ? JSON.parse(text) : {};
733
- break;
734
- }
735
- case "stream":
736
- return opts.responseStyle === "data" ? response.body : {
737
- data: response.body,
738
- ...result
739
- };
740
- }
741
- if (parseAs === "json") {
742
- if (opts.responseValidator) {
743
- await opts.responseValidator(data);
744
- }
745
- if (opts.responseTransformer) {
746
- data = await opts.responseTransformer(data);
747
- }
748
- }
749
- return opts.responseStyle === "data" ? data : {
750
- data,
751
- ...result
752
- };
753
- }
754
- const textError = await response.text();
755
- let jsonError;
756
- try {
757
- jsonError = JSON.parse(textError);
758
- } catch {
759
- }
760
- throw jsonError ?? textError;
761
- } catch (error) {
762
- let finalError = error;
763
- for (const fn of interceptors.error.fns) {
764
- if (fn) {
765
- finalError = await fn(finalError, response, request2, options);
766
- }
767
- }
768
- finalError = finalError || {};
769
- if (throwOnError) {
770
- throw finalError;
771
- }
772
- return responseStyle === "data" ? void 0 : {
773
- error: finalError,
774
- request: request2,
775
- response
776
- };
50
+ if (value === null) window.localStorage.removeItem(key);
51
+ else window.localStorage.setItem(key, value);
52
+ } catch {
777
53
  }
778
- }, "request");
779
- const makeMethodFn = /* @__PURE__ */ __name((method) => (options) => request({ ...options, method }), "makeMethodFn");
780
- const makeSseFn = /* @__PURE__ */ __name((method) => async (options) => {
781
- const { opts, url } = await beforeRequest(options);
782
- return createSseClient({
783
- ...opts,
784
- body: opts.body,
785
- method,
786
- onRequest: /* @__PURE__ */ __name(async (url2, init) => {
787
- let request2 = new Request(url2, init);
788
- for (const fn of interceptors.request.fns) {
789
- if (fn) {
790
- request2 = await fn(request2, opts);
791
- }
792
- }
793
- return request2;
794
- }, "onRequest"),
795
- serializedBody: getValidRequestBody(opts),
796
- url
797
- });
798
- }, "makeSseFn");
799
- const _buildUrl = /* @__PURE__ */ __name((options) => buildUrl({ ..._config, ...options }), "_buildUrl");
800
- return {
801
- buildUrl: _buildUrl,
802
- connect: makeMethodFn("CONNECT"),
803
- delete: makeMethodFn("DELETE"),
804
- get: makeMethodFn("GET"),
805
- getConfig,
806
- head: makeMethodFn("HEAD"),
807
- interceptors,
808
- options: makeMethodFn("OPTIONS"),
809
- patch: makeMethodFn("PATCH"),
810
- post: makeMethodFn("POST"),
811
- put: makeMethodFn("PUT"),
812
- request,
813
- setConfig,
814
- sse: {
815
- connect: makeSseFn("CONNECT"),
816
- delete: makeSseFn("DELETE"),
817
- get: makeSseFn("GET"),
818
- head: makeSseFn("HEAD"),
819
- options: makeSseFn("OPTIONS"),
820
- patch: makeSseFn("PATCH"),
821
- post: makeSseFn("POST"),
822
- put: makeSseFn("PUT"),
823
- trace: makeSseFn("TRACE")
824
- },
825
- trace: makeMethodFn("TRACE")
826
- };
827
- }, "createClient");
828
-
829
- // src/_api/generated/client.gen.ts
830
- var client = createClient(createConfig({ baseUrl: "http://localhost:8000" }));
831
-
832
- // src/_api/generated/helpers/storage.ts
833
- var LocalStorageAdapter = class {
834
- static {
835
- __name(this, "LocalStorageAdapter");
836
54
  }
837
- getItem(key) {
838
- if (typeof window === "undefined") return null;
55
+ };
56
+ var COOKIE_MAX_AGE = 60 * 60 * 24 * 30;
57
+ var cookieBackend = {
58
+ get(key) {
59
+ if (!isBrowser) return null;
839
60
  try {
840
- return window.localStorage.getItem(key);
61
+ const re = new RegExp(`(?:^|;\\s*)${encodeURIComponent(key)}=([^;]*)`);
62
+ const m = document.cookie.match(re);
63
+ return m ? decodeURIComponent(m[1]) : null;
841
64
  } catch {
842
65
  return null;
843
66
  }
844
- }
845
- setItem(key, value) {
846
- if (typeof window === "undefined") return;
67
+ },
68
+ set(key, value) {
69
+ if (!isBrowser) return;
847
70
  try {
848
- window.localStorage.setItem(key, value);
71
+ const k = encodeURIComponent(key);
72
+ const secure = window.location.protocol === "https:" ? "; Secure" : "";
73
+ if (value === null) {
74
+ document.cookie = `${k}=; Path=/; Max-Age=0; SameSite=Lax${secure}`;
75
+ } else {
76
+ const v = encodeURIComponent(value);
77
+ document.cookie = `${k}=${v}; Path=/; Max-Age=${COOKIE_MAX_AGE}; SameSite=Lax${secure}`;
78
+ }
849
79
  } catch {
850
80
  }
851
81
  }
852
- removeItem(key) {
853
- if (typeof window === "undefined") return;
854
- try {
855
- window.localStorage.removeItem(key);
856
- } catch {
82
+ };
83
+ var _storage = localStorageBackend;
84
+ var _storageMode = "localStorage";
85
+ function detectLocale() {
86
+ try {
87
+ if (typeof document !== "undefined") {
88
+ const m = document.cookie.match(/(?:^|;\s*)NEXT_LOCALE=([^;]*)/);
89
+ if (m) return decodeURIComponent(m[1]);
90
+ }
91
+ if (typeof navigator !== "undefined" && navigator.language) {
92
+ return navigator.language;
857
93
  }
94
+ } catch {
858
95
  }
859
- clear() {
860
- if (typeof window === "undefined") return;
861
- try {
862
- window.localStorage.clear();
863
- } catch {
96
+ return null;
97
+ }
98
+ __name(detectLocale, "detectLocale");
99
+ function defaultBaseUrl() {
100
+ try {
101
+ if (typeof process !== "undefined" && process.env) {
102
+ if (process.env.NEXT_PUBLIC_STATIC_BUILD === "true") return "";
103
+ return process.env.NEXT_PUBLIC_API_URL || "";
864
104
  }
105
+ } catch {
106
+ }
107
+ return "";
108
+ }
109
+ __name(defaultBaseUrl, "defaultBaseUrl");
110
+ function defaultApiKey() {
111
+ try {
112
+ if (typeof process !== "undefined" && process.env?.NEXT_PUBLIC_API_KEY) {
113
+ return process.env.NEXT_PUBLIC_API_KEY;
114
+ }
115
+ } catch {
116
+ }
117
+ return null;
118
+ }
119
+ __name(defaultApiKey, "defaultApiKey");
120
+ var _localeOverride = null;
121
+ var _apiKeyOverride = null;
122
+ var _baseUrlOverride = null;
123
+ var _withCredentials = true;
124
+ var _onUnauthorized = null;
125
+ var _client = null;
126
+ function pushClientConfig() {
127
+ if (!_client) return;
128
+ _client.setConfig({
129
+ baseUrl: auth.getBaseUrl(),
130
+ credentials: _withCredentials ? "include" : "same-origin"
131
+ });
132
+ }
133
+ __name(pushClientConfig, "pushClientConfig");
134
+ var auth = {
135
+ // ── Storage mode ──────────────────────────────────────────────────
136
+ getStorageMode() {
137
+ return _storageMode;
138
+ },
139
+ setStorageMode(mode) {
140
+ _storageMode = mode;
141
+ _storage = mode === "cookie" ? cookieBackend : localStorageBackend;
142
+ },
143
+ // ── Bearer token ──────────────────────────────────────────────────
144
+ getToken() {
145
+ return _storage.get(ACCESS_KEY);
146
+ },
147
+ setToken(token) {
148
+ _storage.set(ACCESS_KEY, token);
149
+ },
150
+ getRefreshToken() {
151
+ return _storage.get(REFRESH_KEY);
152
+ },
153
+ setRefreshToken(token) {
154
+ _storage.set(REFRESH_KEY, token);
155
+ },
156
+ clearTokens() {
157
+ _storage.set(ACCESS_KEY, null);
158
+ _storage.set(REFRESH_KEY, null);
159
+ },
160
+ isAuthenticated() {
161
+ return _storage.get(ACCESS_KEY) !== null;
162
+ },
163
+ // ── API key ───────────────────────────────────────────────────────
164
+ getApiKey() {
165
+ return _apiKeyOverride ?? _storage.get(API_KEY_KEY) ?? defaultApiKey();
166
+ },
167
+ setApiKey(key) {
168
+ _apiKeyOverride = key;
169
+ },
170
+ setApiKeyPersist(key) {
171
+ _apiKeyOverride = key;
172
+ _storage.set(API_KEY_KEY, key);
173
+ },
174
+ clearApiKey() {
175
+ _apiKeyOverride = null;
176
+ _storage.set(API_KEY_KEY, null);
177
+ },
178
+ // ── Locale ────────────────────────────────────────────────────────
179
+ getLocale() {
180
+ return _localeOverride ?? detectLocale();
181
+ },
182
+ setLocale(locale) {
183
+ _localeOverride = locale;
184
+ },
185
+ // ── Base URL ──────────────────────────────────────────────────────
186
+ getBaseUrl() {
187
+ const url = _baseUrlOverride ?? defaultBaseUrl();
188
+ return url.replace(/\/$/, "");
189
+ },
190
+ setBaseUrl(url) {
191
+ _baseUrlOverride = url ? url.replace(/\/$/, "") : null;
192
+ pushClientConfig();
193
+ },
194
+ // ── Credentials toggle ────────────────────────────────────────────
195
+ getWithCredentials() {
196
+ return _withCredentials;
197
+ },
198
+ setWithCredentials(value) {
199
+ _withCredentials = value;
200
+ pushClientConfig();
201
+ },
202
+ // ── 401 handler ───────────────────────────────────────────────────
203
+ onUnauthorized(cb) {
204
+ _onUnauthorized = cb;
865
205
  }
866
206
  };
867
207
 
@@ -960,273 +300,169 @@ var APILogger = class {
960
300
  var defaultLogger = new APILogger();
961
301
 
962
302
  // src/_api/generated/_cfg_accounts/api.ts
963
- var ACCESS_KEY = "cfg.access_token";
964
- var REFRESH_KEY = "cfg.refresh_token";
965
- function detectLocale() {
966
- try {
967
- if (typeof document !== "undefined") {
968
- const m = document.cookie.match(/(?:^|;\s*)NEXT_LOCALE=([^;]*)/);
969
- if (m) return decodeURIComponent(m[1]);
970
- }
971
- if (typeof navigator !== "undefined" && navigator.language) {
972
- return navigator.language;
973
- }
974
- } catch {
975
- }
976
- return null;
977
- }
978
- __name(detectLocale, "detectLocale");
979
303
  var API = class {
980
304
  static {
981
305
  __name(this, "API");
982
306
  }
983
- baseUrl;
984
- storage;
985
- locale;
986
- apiKey;
987
307
  logger;
988
- constructor(baseUrl2, opts = {}) {
989
- this.baseUrl = baseUrl2.replace(/\/$/, "");
990
- this.storage = opts.storage ?? new LocalStorageAdapter();
308
+ constructor(_baseUrl, opts = {}) {
991
309
  this.logger = new APILogger(opts.logger);
992
- this.locale = opts.locale ?? null;
993
- this.apiKey = opts.apiKey ?? (typeof process !== "undefined" ? process.env?.NEXT_PUBLIC_API_KEY ?? null : null);
994
- const credentials = opts.withCredentials ?? true ? "include" : "same-origin";
995
- client.setConfig({ baseUrl: this.baseUrl, credentials });
996
- client.interceptors.request.use((request) => {
997
- const access = this.getToken();
998
- if (access) request.headers.set("Authorization", `Bearer ${access}`);
999
- const locale = this.locale ?? detectLocale();
1000
- if (locale) request.headers.set("Accept-Language", locale);
1001
- if (this.apiKey) request.headers.set("X-API-Key", this.apiKey);
1002
- return request;
1003
- });
310
+ if (_baseUrl) auth.setBaseUrl(_baseUrl);
311
+ if (opts.locale !== void 0) auth.setLocale(opts.locale);
312
+ if (opts.apiKey !== void 0) auth.setApiKey(opts.apiKey);
313
+ if (opts.withCredentials !== void 0) auth.setWithCredentials(opts.withCredentials);
1004
314
  }
1005
315
  // ── Base URL ────────────────────────────────────────────────────────────
1006
316
  getBaseUrl() {
1007
- return this.baseUrl;
317
+ return auth.getBaseUrl();
1008
318
  }
1009
319
  setBaseUrl(url) {
1010
- this.baseUrl = url.replace(/\/$/, "");
1011
- client.setConfig({ baseUrl: this.baseUrl });
320
+ auth.setBaseUrl(url);
1012
321
  }
1013
322
  // ── Tokens ──────────────────────────────────────────────────────────────
1014
323
  getToken() {
1015
- return this.storage.getItem(ACCESS_KEY);
324
+ return auth.getToken();
1016
325
  }
1017
326
  setToken(token) {
1018
- if (token) this.storage.setItem(ACCESS_KEY, token);
1019
- else this.storage.removeItem(ACCESS_KEY);
327
+ auth.setToken(token);
1020
328
  }
1021
329
  getRefreshToken() {
1022
- return this.storage.getItem(REFRESH_KEY);
330
+ return auth.getRefreshToken();
1023
331
  }
1024
332
  setRefreshToken(token) {
1025
- if (token) this.storage.setItem(REFRESH_KEY, token);
1026
- else this.storage.removeItem(REFRESH_KEY);
333
+ auth.setRefreshToken(token);
1027
334
  }
1028
335
  clearToken() {
1029
- this.storage.removeItem(ACCESS_KEY);
1030
- this.storage.removeItem(REFRESH_KEY);
336
+ auth.clearTokens();
1031
337
  }
1032
338
  isAuthenticated() {
1033
- return this.getToken() !== null;
339
+ return auth.isAuthenticated();
1034
340
  }
1035
341
  // ── Locale / API key ────────────────────────────────────────────────────
1036
342
  getLocale() {
1037
- return this.locale ?? detectLocale();
343
+ return auth.getLocale();
1038
344
  }
1039
345
  setLocale(locale) {
1040
- this.locale = locale;
346
+ auth.setLocale(locale);
1041
347
  }
1042
348
  getApiKey() {
1043
- return this.apiKey;
349
+ return auth.getApiKey();
1044
350
  }
1045
351
  setApiKey(key) {
1046
- this.apiKey = key;
352
+ auth.setApiKey(key);
1047
353
  }
1048
354
  };
1049
355
 
1050
356
  // src/_api/generated/_cfg_centrifugo/api.ts
1051
- var ACCESS_KEY2 = "cfg.access_token";
1052
- var REFRESH_KEY2 = "cfg.refresh_token";
1053
- function detectLocale2() {
1054
- try {
1055
- if (typeof document !== "undefined") {
1056
- const m = document.cookie.match(/(?:^|;\s*)NEXT_LOCALE=([^;]*)/);
1057
- if (m) return decodeURIComponent(m[1]);
1058
- }
1059
- if (typeof navigator !== "undefined" && navigator.language) {
1060
- return navigator.language;
1061
- }
1062
- } catch {
1063
- }
1064
- return null;
1065
- }
1066
- __name(detectLocale2, "detectLocale");
1067
357
  var API2 = class {
1068
358
  static {
1069
359
  __name(this, "API");
1070
360
  }
1071
- baseUrl;
1072
- storage;
1073
- locale;
1074
- apiKey;
1075
361
  logger;
1076
- constructor(baseUrl2, opts = {}) {
1077
- this.baseUrl = baseUrl2.replace(/\/$/, "");
1078
- this.storage = opts.storage ?? new LocalStorageAdapter();
362
+ constructor(_baseUrl, opts = {}) {
1079
363
  this.logger = new APILogger(opts.logger);
1080
- this.locale = opts.locale ?? null;
1081
- this.apiKey = opts.apiKey ?? (typeof process !== "undefined" ? process.env?.NEXT_PUBLIC_API_KEY ?? null : null);
1082
- const credentials = opts.withCredentials ?? true ? "include" : "same-origin";
1083
- client.setConfig({ baseUrl: this.baseUrl, credentials });
1084
- client.interceptors.request.use((request) => {
1085
- const access = this.getToken();
1086
- if (access) request.headers.set("Authorization", `Bearer ${access}`);
1087
- const locale = this.locale ?? detectLocale2();
1088
- if (locale) request.headers.set("Accept-Language", locale);
1089
- if (this.apiKey) request.headers.set("X-API-Key", this.apiKey);
1090
- return request;
1091
- });
364
+ if (_baseUrl) auth.setBaseUrl(_baseUrl);
365
+ if (opts.locale !== void 0) auth.setLocale(opts.locale);
366
+ if (opts.apiKey !== void 0) auth.setApiKey(opts.apiKey);
367
+ if (opts.withCredentials !== void 0) auth.setWithCredentials(opts.withCredentials);
1092
368
  }
1093
369
  // ── Base URL ────────────────────────────────────────────────────────────
1094
370
  getBaseUrl() {
1095
- return this.baseUrl;
371
+ return auth.getBaseUrl();
1096
372
  }
1097
373
  setBaseUrl(url) {
1098
- this.baseUrl = url.replace(/\/$/, "");
1099
- client.setConfig({ baseUrl: this.baseUrl });
374
+ auth.setBaseUrl(url);
1100
375
  }
1101
376
  // ── Tokens ──────────────────────────────────────────────────────────────
1102
377
  getToken() {
1103
- return this.storage.getItem(ACCESS_KEY2);
378
+ return auth.getToken();
1104
379
  }
1105
380
  setToken(token) {
1106
- if (token) this.storage.setItem(ACCESS_KEY2, token);
1107
- else this.storage.removeItem(ACCESS_KEY2);
381
+ auth.setToken(token);
1108
382
  }
1109
383
  getRefreshToken() {
1110
- return this.storage.getItem(REFRESH_KEY2);
384
+ return auth.getRefreshToken();
1111
385
  }
1112
386
  setRefreshToken(token) {
1113
- if (token) this.storage.setItem(REFRESH_KEY2, token);
1114
- else this.storage.removeItem(REFRESH_KEY2);
387
+ auth.setRefreshToken(token);
1115
388
  }
1116
389
  clearToken() {
1117
- this.storage.removeItem(ACCESS_KEY2);
1118
- this.storage.removeItem(REFRESH_KEY2);
390
+ auth.clearTokens();
1119
391
  }
1120
392
  isAuthenticated() {
1121
- return this.getToken() !== null;
393
+ return auth.isAuthenticated();
1122
394
  }
1123
395
  // ── Locale / API key ────────────────────────────────────────────────────
1124
396
  getLocale() {
1125
- return this.locale ?? detectLocale2();
397
+ return auth.getLocale();
1126
398
  }
1127
399
  setLocale(locale) {
1128
- this.locale = locale;
400
+ auth.setLocale(locale);
1129
401
  }
1130
402
  getApiKey() {
1131
- return this.apiKey;
403
+ return auth.getApiKey();
1132
404
  }
1133
405
  setApiKey(key) {
1134
- this.apiKey = key;
406
+ auth.setApiKey(key);
1135
407
  }
1136
408
  };
1137
409
 
1138
410
  // src/_api/generated/_cfg_totp/api.ts
1139
- var ACCESS_KEY3 = "cfg.access_token";
1140
- var REFRESH_KEY3 = "cfg.refresh_token";
1141
- function detectLocale3() {
1142
- try {
1143
- if (typeof document !== "undefined") {
1144
- const m = document.cookie.match(/(?:^|;\s*)NEXT_LOCALE=([^;]*)/);
1145
- if (m) return decodeURIComponent(m[1]);
1146
- }
1147
- if (typeof navigator !== "undefined" && navigator.language) {
1148
- return navigator.language;
1149
- }
1150
- } catch {
1151
- }
1152
- return null;
1153
- }
1154
- __name(detectLocale3, "detectLocale");
1155
411
  var API3 = class {
1156
412
  static {
1157
413
  __name(this, "API");
1158
414
  }
1159
- baseUrl;
1160
- storage;
1161
- locale;
1162
- apiKey;
1163
415
  logger;
1164
- constructor(baseUrl2, opts = {}) {
1165
- this.baseUrl = baseUrl2.replace(/\/$/, "");
1166
- this.storage = opts.storage ?? new LocalStorageAdapter();
416
+ constructor(_baseUrl, opts = {}) {
1167
417
  this.logger = new APILogger(opts.logger);
1168
- this.locale = opts.locale ?? null;
1169
- this.apiKey = opts.apiKey ?? (typeof process !== "undefined" ? process.env?.NEXT_PUBLIC_API_KEY ?? null : null);
1170
- const credentials = opts.withCredentials ?? true ? "include" : "same-origin";
1171
- client.setConfig({ baseUrl: this.baseUrl, credentials });
1172
- client.interceptors.request.use((request) => {
1173
- const access = this.getToken();
1174
- if (access) request.headers.set("Authorization", `Bearer ${access}`);
1175
- const locale = this.locale ?? detectLocale3();
1176
- if (locale) request.headers.set("Accept-Language", locale);
1177
- if (this.apiKey) request.headers.set("X-API-Key", this.apiKey);
1178
- return request;
1179
- });
418
+ if (_baseUrl) auth.setBaseUrl(_baseUrl);
419
+ if (opts.locale !== void 0) auth.setLocale(opts.locale);
420
+ if (opts.apiKey !== void 0) auth.setApiKey(opts.apiKey);
421
+ if (opts.withCredentials !== void 0) auth.setWithCredentials(opts.withCredentials);
1180
422
  }
1181
423
  // ── Base URL ────────────────────────────────────────────────────────────
1182
424
  getBaseUrl() {
1183
- return this.baseUrl;
425
+ return auth.getBaseUrl();
1184
426
  }
1185
427
  setBaseUrl(url) {
1186
- this.baseUrl = url.replace(/\/$/, "");
1187
- client.setConfig({ baseUrl: this.baseUrl });
428
+ auth.setBaseUrl(url);
1188
429
  }
1189
430
  // ── Tokens ──────────────────────────────────────────────────────────────
1190
431
  getToken() {
1191
- return this.storage.getItem(ACCESS_KEY3);
432
+ return auth.getToken();
1192
433
  }
1193
434
  setToken(token) {
1194
- if (token) this.storage.setItem(ACCESS_KEY3, token);
1195
- else this.storage.removeItem(ACCESS_KEY3);
435
+ auth.setToken(token);
1196
436
  }
1197
437
  getRefreshToken() {
1198
- return this.storage.getItem(REFRESH_KEY3);
438
+ return auth.getRefreshToken();
1199
439
  }
1200
440
  setRefreshToken(token) {
1201
- if (token) this.storage.setItem(REFRESH_KEY3, token);
1202
- else this.storage.removeItem(REFRESH_KEY3);
441
+ auth.setRefreshToken(token);
1203
442
  }
1204
443
  clearToken() {
1205
- this.storage.removeItem(ACCESS_KEY3);
1206
- this.storage.removeItem(REFRESH_KEY3);
444
+ auth.clearTokens();
1207
445
  }
1208
446
  isAuthenticated() {
1209
- return this.getToken() !== null;
447
+ return auth.isAuthenticated();
1210
448
  }
1211
449
  // ── Locale / API key ────────────────────────────────────────────────────
1212
450
  getLocale() {
1213
- return this.locale ?? detectLocale3();
451
+ return auth.getLocale();
1214
452
  }
1215
453
  setLocale(locale) {
1216
- this.locale = locale;
454
+ auth.setLocale(locale);
1217
455
  }
1218
456
  getApiKey() {
1219
- return this.apiKey;
457
+ return auth.getApiKey();
1220
458
  }
1221
459
  setApiKey(key) {
1222
- this.apiKey = key;
460
+ auth.setApiKey(key);
1223
461
  }
1224
462
  };
1225
463
 
1226
464
  // src/_api/generated/index.ts
1227
- var isStaticBuild = process.env.NEXT_PUBLIC_STATIC_BUILD === "true";
1228
- var baseUrl = isStaticBuild ? "" : process.env.NEXT_PUBLIC_API_URL || "";
1229
- var CfgAccountsApi = new API(baseUrl, { storage: new LocalStorageAdapter() });
1230
- var CfgCentrifugoApi = new API2(baseUrl, { storage: new LocalStorageAdapter() });
1231
- var CfgTotpApi = new API3(baseUrl, { storage: new LocalStorageAdapter() });
465
+ var CfgAccountsApi = new API();
466
+ var CfgCentrifugoApi = new API2();
467
+ var CfgTotpApi = new API3();
1232
468
  //# sourceMappingURL=clients.cjs.map