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