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