@aifabrix/miso-client 3.1.1 → 3.1.2
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/README.md +1 -1
- package/dist/services/auth.service.js +2 -2
- package/dist/types/data-client.types.d.ts +1 -0
- package/dist/types/data-client.types.d.ts.map +1 -1
- package/dist/types/data-client.types.js.map +1 -1
- package/dist/utils/auth-strategy.js +2 -2
- package/dist/utils/data-client-audit.d.ts +24 -0
- package/dist/utils/data-client-audit.d.ts.map +1 -0
- package/dist/utils/data-client-audit.js +127 -0
- package/dist/utils/data-client-audit.js.map +1 -0
- package/dist/utils/data-client-auth.d.ts +60 -0
- package/dist/utils/data-client-auth.d.ts.map +1 -0
- package/dist/utils/data-client-auth.js +386 -0
- package/dist/utils/data-client-auth.js.map +1 -0
- package/dist/utils/data-client-cache.d.ts +36 -0
- package/dist/utils/data-client-cache.d.ts.map +1 -0
- package/dist/utils/data-client-cache.js +55 -0
- package/dist/utils/data-client-cache.js.map +1 -0
- package/dist/utils/data-client-request.d.ts +32 -0
- package/dist/utils/data-client-request.d.ts.map +1 -0
- package/dist/utils/data-client-request.js +306 -0
- package/dist/utils/data-client-request.js.map +1 -0
- package/dist/utils/data-client-utils.d.ts +49 -0
- package/dist/utils/data-client-utils.d.ts.map +1 -0
- package/dist/utils/data-client-utils.js +139 -0
- package/dist/utils/data-client-utils.js.map +1 -0
- package/dist/utils/data-client.d.ts +0 -29
- package/dist/utils/data-client.d.ts.map +1 -1
- package/dist/utils/data-client.js +51 -773
- package/dist/utils/data-client.js.map +1 -1
- package/dist/utils/internal-http-client.d.ts.map +1 -1
- package/dist/utils/internal-http-client.js +7 -3
- package/dist/utils/internal-http-client.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DataClient authentication utilities
|
|
4
|
+
* Handles authentication, token management, and login/logout flows
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.getToken = getToken;
|
|
8
|
+
exports.hasClientToken = hasClientToken;
|
|
9
|
+
exports.hasAnyToken = hasAnyToken;
|
|
10
|
+
exports.getClientToken = getClientToken;
|
|
11
|
+
exports.getControllerUrl = getControllerUrl;
|
|
12
|
+
exports.redirectToLogin = redirectToLogin;
|
|
13
|
+
exports.logout = logout;
|
|
14
|
+
exports.getEnvironmentToken = getEnvironmentToken;
|
|
15
|
+
exports.getClientTokenInfo = getClientTokenInfo;
|
|
16
|
+
const data_client_utils_1 = require("./data-client-utils");
|
|
17
|
+
const token_utils_1 = require("./token-utils");
|
|
18
|
+
const data_client_audit_1 = require("./data-client-audit");
|
|
19
|
+
/**
|
|
20
|
+
* Get authentication token from localStorage
|
|
21
|
+
*/
|
|
22
|
+
function getToken(tokenKeys) {
|
|
23
|
+
if (!(0, data_client_utils_1.isBrowser)())
|
|
24
|
+
return null;
|
|
25
|
+
const keys = tokenKeys || ["token", "accessToken", "authToken"];
|
|
26
|
+
for (const key of keys) {
|
|
27
|
+
const token = (0, data_client_utils_1.getLocalStorage)(key);
|
|
28
|
+
if (token)
|
|
29
|
+
return token;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if client token is available (from localStorage cache or config)
|
|
35
|
+
*/
|
|
36
|
+
function hasClientToken(misoClient, misoConfig) {
|
|
37
|
+
if (!(0, data_client_utils_1.isBrowser)()) {
|
|
38
|
+
// Server-side: check if misoClient config has clientSecret
|
|
39
|
+
if (misoClient && misoConfig?.clientSecret) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
// Browser-side: check localStorage cache
|
|
45
|
+
const cachedToken = (0, data_client_utils_1.getLocalStorage)("miso:client-token");
|
|
46
|
+
if (cachedToken) {
|
|
47
|
+
const expiresAtStr = (0, data_client_utils_1.getLocalStorage)("miso:client-token-expires-at");
|
|
48
|
+
if (expiresAtStr) {
|
|
49
|
+
const expiresAt = parseInt(expiresAtStr, 10);
|
|
50
|
+
if (expiresAt > Date.now()) {
|
|
51
|
+
return true; // Valid cached token
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Check config token
|
|
56
|
+
if (misoConfig?.clientToken) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
// Check if misoClient config has onClientTokenRefresh callback (browser pattern)
|
|
60
|
+
if (misoConfig?.onClientTokenRefresh) {
|
|
61
|
+
return true; // Has means to get client token
|
|
62
|
+
}
|
|
63
|
+
// Check if misoClient config has clientSecret (server-side fallback)
|
|
64
|
+
if (misoConfig?.clientSecret) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check if any authentication token is available (user token OR client token)
|
|
71
|
+
*/
|
|
72
|
+
function hasAnyToken(tokenKeys, misoClient, misoConfig) {
|
|
73
|
+
return getToken(tokenKeys) !== null || hasClientToken(misoClient || null, misoConfig);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get client token for requests
|
|
77
|
+
* Checks localStorage cache first, then config, then calls getEnvironmentToken() if needed
|
|
78
|
+
* @returns Client token string or null if unavailable
|
|
79
|
+
*/
|
|
80
|
+
async function getClientToken(misoConfig, _baseUrl, _getEnvironmentToken) {
|
|
81
|
+
if (!(0, data_client_utils_1.isBrowser)()) {
|
|
82
|
+
// Server-side: return null (client token handled by MisoClient)
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
// Check localStorage cache first
|
|
86
|
+
const cachedToken = (0, data_client_utils_1.getLocalStorage)("miso:client-token");
|
|
87
|
+
const expiresAtStr = (0, data_client_utils_1.getLocalStorage)("miso:client-token-expires-at");
|
|
88
|
+
if (cachedToken && expiresAtStr) {
|
|
89
|
+
const expiresAt = parseInt(expiresAtStr, 10);
|
|
90
|
+
if (expiresAt > Date.now()) {
|
|
91
|
+
return cachedToken; // Valid cached token
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Check config token
|
|
95
|
+
if (misoConfig?.clientToken) {
|
|
96
|
+
return misoConfig.clientToken;
|
|
97
|
+
}
|
|
98
|
+
// Don't fetch client token if we don't have a cached token
|
|
99
|
+
// This prevents unnecessary fetch calls during auth error handling
|
|
100
|
+
// redirectToLogin can work without a client token (it's optional)
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Build controller URL from configuration
|
|
105
|
+
* Uses controllerPublicUrl (browser) or controllerUrl (fallback)
|
|
106
|
+
* @returns Controller base URL or null if not configured
|
|
107
|
+
*/
|
|
108
|
+
function getControllerUrl(misoConfig) {
|
|
109
|
+
if (!misoConfig) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
// Browser: prefer controllerPublicUrl, fallback to controllerUrl
|
|
113
|
+
if ((0, data_client_utils_1.isBrowser)()) {
|
|
114
|
+
return misoConfig.controllerPublicUrl ||
|
|
115
|
+
misoConfig.controllerUrl ||
|
|
116
|
+
null;
|
|
117
|
+
}
|
|
118
|
+
// Server: prefer controllerPrivateUrl, fallback to controllerUrl
|
|
119
|
+
return misoConfig.controllerPrivateUrl ||
|
|
120
|
+
misoConfig.controllerUrl ||
|
|
121
|
+
null;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Redirect to login page via controller
|
|
125
|
+
* Calls the controller login endpoint with redirect parameter and x-client-token header
|
|
126
|
+
* @param redirectUrl - Optional redirect URL to return to after login (defaults to current page URL)
|
|
127
|
+
*/
|
|
128
|
+
async function redirectToLogin(config, getClientTokenFn, redirectUrl) {
|
|
129
|
+
if (!(0, data_client_utils_1.isBrowser)())
|
|
130
|
+
return;
|
|
131
|
+
// Get redirect URL - use provided URL or current page URL
|
|
132
|
+
const currentUrl = globalThis.window.location.href;
|
|
133
|
+
const finalRedirectUrl = redirectUrl || currentUrl;
|
|
134
|
+
// Build controller URL
|
|
135
|
+
const controllerUrl = getControllerUrl(config.misoConfig);
|
|
136
|
+
if (!controllerUrl) {
|
|
137
|
+
// Fallback to static loginUrl if controller URL not configured
|
|
138
|
+
const loginUrl = config.loginUrl || "/login";
|
|
139
|
+
const fullUrl = /^https?:\/\//i.test(loginUrl)
|
|
140
|
+
? loginUrl
|
|
141
|
+
: `${globalThis.window.location.origin}${loginUrl.startsWith("/") ? loginUrl : `/${loginUrl}`}`;
|
|
142
|
+
globalThis.window.location.href = fullUrl;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
// Get client token
|
|
147
|
+
const clientToken = await getClientTokenFn();
|
|
148
|
+
// Build login endpoint URL with query parameters
|
|
149
|
+
const loginEndpoint = `${controllerUrl}/api/v1/auth/login`;
|
|
150
|
+
const url = new URL(loginEndpoint);
|
|
151
|
+
url.searchParams.set("redirect", finalRedirectUrl);
|
|
152
|
+
// Build headers
|
|
153
|
+
const headers = {
|
|
154
|
+
"Content-Type": "application/json",
|
|
155
|
+
};
|
|
156
|
+
// Add x-client-token header if available
|
|
157
|
+
if (clientToken) {
|
|
158
|
+
headers["x-client-token"] = clientToken;
|
|
159
|
+
}
|
|
160
|
+
// Make fetch request
|
|
161
|
+
const response = await fetch(url.toString(), {
|
|
162
|
+
method: "GET",
|
|
163
|
+
headers,
|
|
164
|
+
credentials: "include", // Include cookies for CORS
|
|
165
|
+
});
|
|
166
|
+
if (!response.ok) {
|
|
167
|
+
throw new Error(`Login request failed: ${response.status} ${response.statusText}`);
|
|
168
|
+
}
|
|
169
|
+
const data = (await response.json());
|
|
170
|
+
// Extract loginUrl (support both nested and flat formats)
|
|
171
|
+
const loginUrl = data.data?.loginUrl || data.loginUrl;
|
|
172
|
+
if (loginUrl) {
|
|
173
|
+
// Redirect to the login URL returned by controller
|
|
174
|
+
globalThis.window.location.href = loginUrl;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// Fallback if loginUrl not in response
|
|
178
|
+
const fallbackLoginUrl = config.loginUrl || "/login";
|
|
179
|
+
const fullUrl = /^https?:\/\//i.test(fallbackLoginUrl)
|
|
180
|
+
? fallbackLoginUrl
|
|
181
|
+
: `${globalThis.window.location.origin}${fallbackLoginUrl.startsWith("/") ? fallbackLoginUrl : `/${fallbackLoginUrl}`}`;
|
|
182
|
+
globalThis.window.location.href = fullUrl;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
// On error, fallback to static loginUrl
|
|
187
|
+
console.error("Failed to get login URL from controller:", error);
|
|
188
|
+
const loginUrl = config.loginUrl || "/login";
|
|
189
|
+
const fullUrl = /^https?:\/\//i.test(loginUrl)
|
|
190
|
+
? loginUrl
|
|
191
|
+
: `${globalThis.window.location.origin}${loginUrl.startsWith("/") ? loginUrl : `/${loginUrl}`}`;
|
|
192
|
+
globalThis.window.location.href = fullUrl;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Logout user and redirect
|
|
197
|
+
* Calls logout API with x-client-token header, clears tokens from localStorage, clears cache, and redirects
|
|
198
|
+
* @param redirectUrl - Optional redirect URL after logout (defaults to logoutUrl or loginUrl)
|
|
199
|
+
*/
|
|
200
|
+
async function logout(config, getTokenFn, getClientTokenFn, clearCacheFn, redirectUrl) {
|
|
201
|
+
if (!(0, data_client_utils_1.isBrowser)())
|
|
202
|
+
return;
|
|
203
|
+
const token = getTokenFn();
|
|
204
|
+
// Build controller URL
|
|
205
|
+
const controllerUrl = getControllerUrl(config.misoConfig);
|
|
206
|
+
// Call logout API if controller URL available and token exists
|
|
207
|
+
if (controllerUrl && token) {
|
|
208
|
+
try {
|
|
209
|
+
// Get client token
|
|
210
|
+
const clientToken = await getClientTokenFn();
|
|
211
|
+
// Build logout endpoint URL
|
|
212
|
+
const logoutEndpoint = `${controllerUrl}/api/v1/auth/logout`;
|
|
213
|
+
// Build headers
|
|
214
|
+
const headers = {
|
|
215
|
+
"Content-Type": "application/json",
|
|
216
|
+
};
|
|
217
|
+
// Add x-client-token header if available
|
|
218
|
+
if (clientToken) {
|
|
219
|
+
headers["x-client-token"] = clientToken;
|
|
220
|
+
}
|
|
221
|
+
// Make fetch request
|
|
222
|
+
const response = await fetch(logoutEndpoint, {
|
|
223
|
+
method: "POST",
|
|
224
|
+
headers,
|
|
225
|
+
body: JSON.stringify({ token }),
|
|
226
|
+
credentials: "include", // Include cookies for CORS
|
|
227
|
+
});
|
|
228
|
+
if (!response.ok) {
|
|
229
|
+
// Log error but continue with cleanup (logout should always clear local state)
|
|
230
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
231
|
+
console.error(`Logout API call failed: ${response.status} ${response.statusText}. ${errorText}`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
// Log error but continue with cleanup (logout should always clear local state)
|
|
236
|
+
console.error("Logout API call failed:", error);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Clear tokens from localStorage (always, even if API call failed)
|
|
240
|
+
const keys = config.tokenKeys || ["token", "accessToken", "authToken"];
|
|
241
|
+
keys.forEach(key => {
|
|
242
|
+
try {
|
|
243
|
+
const storage = globalThis.localStorage;
|
|
244
|
+
if (storage) {
|
|
245
|
+
storage.removeItem(key);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch (e) {
|
|
249
|
+
// Ignore localStorage errors (SSR, private browsing, etc.)
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
// Clear HTTP cache
|
|
253
|
+
clearCacheFn();
|
|
254
|
+
// Determine redirect URL: redirectUrl param > logoutUrl config > loginUrl config > '/login'
|
|
255
|
+
const finalRedirectUrl = redirectUrl ||
|
|
256
|
+
config.logoutUrl ||
|
|
257
|
+
config.loginUrl ||
|
|
258
|
+
"/login";
|
|
259
|
+
// Construct full URL
|
|
260
|
+
const fullUrl = /^https?:\/\//i.test(finalRedirectUrl)
|
|
261
|
+
? finalRedirectUrl
|
|
262
|
+
: `${globalThis.window.location.origin}${finalRedirectUrl.startsWith("/") ? finalRedirectUrl : `/${finalRedirectUrl}`}`;
|
|
263
|
+
// Redirect
|
|
264
|
+
globalThis.window.location.href = fullUrl;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Get environment token (browser-side)
|
|
268
|
+
* Checks localStorage cache first, then calls backend endpoint if needed
|
|
269
|
+
* Uses clientTokenUri from config or defaults to /api/v1/auth/client-token
|
|
270
|
+
*
|
|
271
|
+
* @returns Client token string
|
|
272
|
+
* @throws Error if token fetch fails
|
|
273
|
+
*/
|
|
274
|
+
async function getEnvironmentToken(config, misoClient) {
|
|
275
|
+
if (!(0, data_client_utils_1.isBrowser)()) {
|
|
276
|
+
throw new Error("getEnvironmentToken() is only available in browser environment");
|
|
277
|
+
}
|
|
278
|
+
const cacheKey = "miso:client-token";
|
|
279
|
+
const expiresAtKey = "miso:client-token-expires-at";
|
|
280
|
+
// Check cache first
|
|
281
|
+
const cachedToken = (0, data_client_utils_1.getLocalStorage)(cacheKey);
|
|
282
|
+
const expiresAtStr = (0, data_client_utils_1.getLocalStorage)(expiresAtKey);
|
|
283
|
+
if (cachedToken && expiresAtStr) {
|
|
284
|
+
const expiresAt = parseInt(expiresAtStr, 10);
|
|
285
|
+
const now = Date.now();
|
|
286
|
+
// If token is still valid, return cached token
|
|
287
|
+
if (expiresAt > now) {
|
|
288
|
+
return cachedToken;
|
|
289
|
+
}
|
|
290
|
+
// Token expired, remove from cache
|
|
291
|
+
(0, data_client_utils_1.removeLocalStorage)(cacheKey);
|
|
292
|
+
(0, data_client_utils_1.removeLocalStorage)(expiresAtKey);
|
|
293
|
+
}
|
|
294
|
+
// Cache miss or expired - fetch from backend
|
|
295
|
+
const clientTokenUri = config.misoConfig?.clientTokenUri || "/api/v1/auth/client-token";
|
|
296
|
+
// Build full URL
|
|
297
|
+
const fullUrl = /^https?:\/\//i.test(clientTokenUri)
|
|
298
|
+
? clientTokenUri
|
|
299
|
+
: `${config.baseUrl}${clientTokenUri}`;
|
|
300
|
+
try {
|
|
301
|
+
// Make request to backend endpoint
|
|
302
|
+
const response = await fetch(fullUrl, {
|
|
303
|
+
method: "POST",
|
|
304
|
+
headers: {
|
|
305
|
+
"Content-Type": "application/json",
|
|
306
|
+
},
|
|
307
|
+
credentials: "include", // Include cookies for CORS
|
|
308
|
+
});
|
|
309
|
+
if (!response.ok) {
|
|
310
|
+
const errorText = await response.text();
|
|
311
|
+
throw new Error(`Failed to get environment token: ${response.status} ${response.statusText}. ${errorText}`);
|
|
312
|
+
}
|
|
313
|
+
const data = (await response.json());
|
|
314
|
+
// Extract token from response (support both nested and flat formats)
|
|
315
|
+
const token = data.data?.token || data.token || data.accessToken || data.access_token;
|
|
316
|
+
if (!token || typeof token !== "string") {
|
|
317
|
+
throw new Error("Invalid response format: token not found in response");
|
|
318
|
+
}
|
|
319
|
+
// Calculate expiration time (default to 1 hour if not provided)
|
|
320
|
+
const expiresIn = data.data?.expiresIn || data.expiresIn || data.expires_in || 3600;
|
|
321
|
+
const expiresAt = Date.now() + expiresIn * 1000;
|
|
322
|
+
// Cache token
|
|
323
|
+
(0, data_client_utils_1.setLocalStorage)(cacheKey, token);
|
|
324
|
+
(0, data_client_utils_1.setLocalStorage)(expiresAtKey, expiresAt.toString());
|
|
325
|
+
// Log audit event if misoClient available
|
|
326
|
+
if (misoClient && !(0, data_client_audit_1.shouldSkipAudit)(clientTokenUri, config.audit)) {
|
|
327
|
+
try {
|
|
328
|
+
await misoClient.log.audit("client.token.request.success", clientTokenUri, {
|
|
329
|
+
method: "POST",
|
|
330
|
+
url: clientTokenUri,
|
|
331
|
+
statusCode: response.status,
|
|
332
|
+
cached: false,
|
|
333
|
+
}, {});
|
|
334
|
+
}
|
|
335
|
+
catch (auditError) {
|
|
336
|
+
// Silently fail audit logging to avoid breaking requests
|
|
337
|
+
console.warn("Failed to log audit event:", auditError);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return token;
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
// Log audit event for error if misoClient available
|
|
344
|
+
if (misoClient && !(0, data_client_audit_1.shouldSkipAudit)(clientTokenUri, config.audit)) {
|
|
345
|
+
try {
|
|
346
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
347
|
+
await misoClient.log.audit("client.token.request.failed", clientTokenUri, {
|
|
348
|
+
method: "POST",
|
|
349
|
+
url: clientTokenUri,
|
|
350
|
+
statusCode: 0,
|
|
351
|
+
error: errorMessage,
|
|
352
|
+
cached: false,
|
|
353
|
+
}, {});
|
|
354
|
+
}
|
|
355
|
+
catch (auditError) {
|
|
356
|
+
// Silently fail audit logging to avoid breaking requests
|
|
357
|
+
console.warn("Failed to log audit event:", auditError);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
throw error;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Get client token information (browser-side)
|
|
365
|
+
* Extracts application and environment info from client token
|
|
366
|
+
*
|
|
367
|
+
* @returns Client token info or null if token not available
|
|
368
|
+
*/
|
|
369
|
+
function getClientTokenInfo(misoConfig) {
|
|
370
|
+
if (!(0, data_client_utils_1.isBrowser)()) {
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
// Try to get token from cache first
|
|
374
|
+
const cachedToken = (0, data_client_utils_1.getLocalStorage)("miso:client-token");
|
|
375
|
+
if (cachedToken) {
|
|
376
|
+
return (0, token_utils_1.extractClientTokenInfo)(cachedToken);
|
|
377
|
+
}
|
|
378
|
+
// Try to get token from config (if provided)
|
|
379
|
+
const configToken = misoConfig?.clientToken;
|
|
380
|
+
if (configToken) {
|
|
381
|
+
return (0, token_utils_1.extractClientTokenInfo)(configToken);
|
|
382
|
+
}
|
|
383
|
+
// No token available
|
|
384
|
+
return null;
|
|
385
|
+
}
|
|
386
|
+
//# sourceMappingURL=data-client-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-client-auth.js","sourceRoot":"","sources":["../../src/utils/data-client-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataClient cache management utilities
|
|
3
|
+
* Handles cache operations, size enforcement, and metrics tracking
|
|
4
|
+
*/
|
|
5
|
+
import { CacheEntry, CacheConfig } from "../types/data-client.types";
|
|
6
|
+
import { ApiRequestOptions } from "../types/data-client.types";
|
|
7
|
+
/**
|
|
8
|
+
* Cache manager interface
|
|
9
|
+
*/
|
|
10
|
+
export interface CacheManager {
|
|
11
|
+
cache: Map<string, CacheEntry>;
|
|
12
|
+
metrics: {
|
|
13
|
+
cacheHits: number;
|
|
14
|
+
cacheMisses: number;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get cached entry if valid
|
|
19
|
+
*/
|
|
20
|
+
export declare function getCachedEntry<T>(cache: Map<string, CacheEntry>, cacheKey: string, metrics: {
|
|
21
|
+
cacheHits: number;
|
|
22
|
+
cacheMisses: number;
|
|
23
|
+
}): T | null;
|
|
24
|
+
/**
|
|
25
|
+
* Set cache entry with TTL and enforce max size
|
|
26
|
+
*/
|
|
27
|
+
export declare function setCacheEntry(cache: Map<string, CacheEntry>, cacheKey: string, data: unknown, ttl: number, maxSize: number): void;
|
|
28
|
+
/**
|
|
29
|
+
* Check if caching is enabled for request
|
|
30
|
+
*/
|
|
31
|
+
export declare function isCacheEnabled(method: string, cacheConfig: CacheConfig | undefined, options?: ApiRequestOptions): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Generate cache key for request
|
|
34
|
+
*/
|
|
35
|
+
export declare function getCacheKeyForRequest(endpoint: string, options?: ApiRequestOptions): string;
|
|
36
|
+
//# sourceMappingURL=data-client-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-client-cache.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/B,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAClD,CAAC,GAAG,IAAI,CAQV;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,IAAI,CAYN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAOT;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CAER"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DataClient cache management utilities
|
|
4
|
+
* Handles cache operations, size enforcement, and metrics tracking
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.getCachedEntry = getCachedEntry;
|
|
8
|
+
exports.setCacheEntry = setCacheEntry;
|
|
9
|
+
exports.isCacheEnabled = isCacheEnabled;
|
|
10
|
+
exports.getCacheKeyForRequest = getCacheKeyForRequest;
|
|
11
|
+
const data_client_utils_1 = require("./data-client-utils");
|
|
12
|
+
/**
|
|
13
|
+
* Get cached entry if valid
|
|
14
|
+
*/
|
|
15
|
+
function getCachedEntry(cache, cacheKey, metrics) {
|
|
16
|
+
const cached = cache.get(cacheKey);
|
|
17
|
+
if (cached && cached.expiresAt > Date.now()) {
|
|
18
|
+
metrics.cacheHits++;
|
|
19
|
+
return cached.data;
|
|
20
|
+
}
|
|
21
|
+
metrics.cacheMisses++;
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Set cache entry with TTL and enforce max size
|
|
26
|
+
*/
|
|
27
|
+
function setCacheEntry(cache, cacheKey, data, ttl, maxSize) {
|
|
28
|
+
cache.set(cacheKey, {
|
|
29
|
+
data,
|
|
30
|
+
expiresAt: Date.now() + ttl * 1000,
|
|
31
|
+
key: cacheKey,
|
|
32
|
+
});
|
|
33
|
+
// Enforce max cache size
|
|
34
|
+
if (cache.size > maxSize) {
|
|
35
|
+
const firstKey = cache.keys().next().value;
|
|
36
|
+
if (firstKey)
|
|
37
|
+
cache.delete(firstKey);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check if caching is enabled for request
|
|
42
|
+
*/
|
|
43
|
+
function isCacheEnabled(method, cacheConfig, options) {
|
|
44
|
+
const isGetRequest = method.toUpperCase() === "GET";
|
|
45
|
+
return ((cacheConfig?.enabled !== false) &&
|
|
46
|
+
isGetRequest &&
|
|
47
|
+
(options?.cache?.enabled !== false));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Generate cache key for request
|
|
51
|
+
*/
|
|
52
|
+
function getCacheKeyForRequest(endpoint, options) {
|
|
53
|
+
return options?.cache?.key || (0, data_client_utils_1.generateCacheKey)(endpoint, options);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data-client-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-client-cache.js","sourceRoot":"","sources":["../../src/utils/data-client-cache.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAoBH,wCAYC;AAKD,sCAkBC;AAKD,wCAWC;AAKD,sDAKC;AA9ED,2DAAuD;AAcvD;;GAEG;AACH,SAAgB,cAAc,CAC5B,KAA8B,EAC9B,QAAgB,EAChB,OAAmD;IAEnD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC5C,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,IAAS,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,WAAW,EAAE,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,KAA8B,EAC9B,QAAgB,EAChB,IAAa,EACb,GAAW,EACX,OAAe;IAEf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;QAClB,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI;QAClC,GAAG,EAAE,QAAQ;KACd,CAAC,CAAC;IAEH,yBAAyB;IACzB,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC3C,IAAI,QAAQ;YAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,MAAc,EACd,WAAoC,EACpC,OAA2B;IAE3B,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;IACpD,OAAO,CACL,CAAC,WAAW,EAAE,OAAO,KAAK,KAAK,CAAC;QAChC,YAAY;QACZ,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC,CACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,QAAgB,EAChB,OAA2B;IAE3B,OAAO,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,IAAA,oCAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataClient request execution utilities
|
|
3
|
+
* Handles HTTP request execution, retry logic, fetch handling, and response parsing
|
|
4
|
+
*/
|
|
5
|
+
import { ApiRequestOptions, DataClientConfig, InterceptorConfig, CacheEntry } from "../types/data-client.types";
|
|
6
|
+
import { HasAnyTokenFn, GetTokenFn } from "./data-client-audit";
|
|
7
|
+
import { MisoClient } from "../index";
|
|
8
|
+
/**
|
|
9
|
+
* Extract headers from Headers object or Record
|
|
10
|
+
*/
|
|
11
|
+
export declare function extractHeaders(headers?: Headers | Record<string, string> | string[][] | Record<string, string | readonly string[]>): Record<string, string> | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Parse response based on content type
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseResponse<T>(response: Response): Promise<T>;
|
|
16
|
+
/**
|
|
17
|
+
* Merge AbortSignals
|
|
18
|
+
*/
|
|
19
|
+
export declare function mergeSignals(signal1: AbortSignal, signal2: AbortSignal): AbortSignal;
|
|
20
|
+
/**
|
|
21
|
+
* Make fetch request with timeout and authentication
|
|
22
|
+
*/
|
|
23
|
+
export declare function makeFetchRequest(method: string, url: string, config: DataClientConfig, getToken: GetTokenFn, options?: ApiRequestOptions): Promise<Response>;
|
|
24
|
+
/**
|
|
25
|
+
* Execute HTTP request with retry logic
|
|
26
|
+
*/
|
|
27
|
+
export declare function executeHttpRequest<T>(method: string, fullUrl: string, endpoint: string, config: DataClientConfig, cache: Map<string, CacheEntry>, cacheKey: string, cacheEnabled: boolean, startTime: number, misoClient: MisoClient | null, hasAnyToken: HasAnyTokenFn, getToken: GetTokenFn, handleAuthError: () => void, interceptors: InterceptorConfig, metrics: {
|
|
28
|
+
totalRequests: number;
|
|
29
|
+
totalFailures: number;
|
|
30
|
+
responseTimes: number[];
|
|
31
|
+
}, options?: ApiRequestOptions): Promise<T>;
|
|
32
|
+
//# sourceMappingURL=data-client-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-client-request.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-request.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAKhB,iBAAiB,EACjB,UAAU,EACX,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EAAsB,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,GACnG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAsBpC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CASrE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,GACnB,WAAW,CAkBb;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CAqDnB;AA0LD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,OAAO,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,WAAW,EAAE,aAAa,EAC1B,QAAQ,EAAE,UAAU,EACpB,eAAe,EAAE,MAAM,IAAI,EAC3B,YAAY,EAAE,iBAAiB,EAC/B,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,EACD,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,CAAC,CAAC,CA+KZ"}
|