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