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