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