@aifabrix/miso-client 4.3.1 → 4.4.1
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/CHANGELOG.md +1253 -1215
- package/README.md +22 -23
- package/dist/api/applications.api.d.ts +42 -0
- package/dist/api/applications.api.d.ts.map +1 -0
- package/dist/api/applications.api.js +91 -0
- package/dist/api/applications.api.js.map +1 -0
- package/dist/api/index.d.ts +5 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/types/applications.types.d.ts +58 -0
- package/dist/api/types/applications.types.d.ts.map +1 -0
- package/dist/api/types/applications.types.js +7 -0
- package/dist/api/types/applications.types.js.map +1 -0
- package/dist/api/types/encryption.types.d.ts +2 -2
- package/dist/api/types/encryption.types.d.ts.map +1 -1
- package/dist/express/client-token-endpoint.d.ts +2 -2
- package/dist/express/client-token-endpoint.d.ts.map +1 -1
- package/dist/express/client-token-endpoint.js +21 -3
- package/dist/express/client-token-endpoint.js.map +1 -1
- package/dist/express/error-handler.d.ts +8 -1
- package/dist/express/error-handler.d.ts.map +1 -1
- package/dist/express/error-handler.js +8 -1
- package/dist/express/error-handler.js.map +1 -1
- package/dist/express/error-response.d.ts +16 -4
- package/dist/express/error-response.d.ts.map +1 -1
- package/dist/express/error-response.js +16 -4
- package/dist/express/error-response.js.map +1 -1
- package/dist/express/error-types.d.ts +13 -0
- package/dist/express/error-types.d.ts.map +1 -1
- package/dist/express/error-types.js +13 -0
- package/dist/express/error-types.js.map +1 -1
- package/dist/express/index.d.ts +8 -4
- package/dist/express/index.d.ts.map +1 -1
- package/dist/express/index.js.map +1 -1
- package/dist/express/logger-context.middleware.d.ts +8 -4
- package/dist/express/logger-context.middleware.d.ts.map +1 -1
- package/dist/express/logger-context.middleware.js +9 -4
- package/dist/express/logger-context.middleware.js.map +1 -1
- package/dist/express/response-middleware.d.ts +4 -0
- package/dist/express/response-middleware.d.ts.map +1 -1
- package/dist/express/response-middleware.js +4 -0
- package/dist/express/response-middleware.js.map +1 -1
- package/dist/index.d.ts +207 -34
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +214 -36
- package/dist/index.js.map +1 -1
- package/dist/services/application-context.service.d.ts +0 -1
- package/dist/services/application-context.service.d.ts.map +1 -1
- package/dist/services/application-context.service.js +12 -7
- package/dist/services/application-context.service.js.map +1 -1
- package/dist/services/auth-cache-helpers.d.ts +22 -0
- package/dist/services/auth-cache-helpers.d.ts.map +1 -0
- package/dist/services/auth-cache-helpers.js +85 -0
- package/dist/services/auth-cache-helpers.js.map +1 -0
- package/dist/services/auth-environment-token.d.ts +20 -0
- package/dist/services/auth-environment-token.d.ts.map +1 -0
- package/dist/services/auth-environment-token.js +94 -0
- package/dist/services/auth-environment-token.js.map +1 -0
- package/dist/services/auth-error-handler.d.ts.map +1 -1
- package/dist/services/auth-error-handler.js +1 -1
- package/dist/services/auth-error-handler.js.map +1 -1
- package/dist/services/auth.service.d.ts +16 -28
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +112 -208
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/browser-permission.service.d.ts +3 -1
- package/dist/services/browser-permission.service.d.ts.map +1 -1
- package/dist/services/browser-permission.service.js +44 -9
- package/dist/services/browser-permission.service.js.map +1 -1
- package/dist/services/browser-role.service.d.ts +3 -1
- package/dist/services/browser-role.service.d.ts.map +1 -1
- package/dist/services/browser-role.service.js +44 -9
- package/dist/services/browser-role.service.js.map +1 -1
- package/dist/services/cache.service.d.ts.map +1 -1
- package/dist/services/cache.service.js +8 -2
- package/dist/services/cache.service.js.map +1 -1
- package/dist/services/encryption.service.d.ts +1 -1
- package/dist/services/encryption.service.js +2 -2
- package/dist/services/encryption.service.js.map +1 -1
- package/dist/services/logger/index.d.ts +6 -4
- package/dist/services/logger/index.d.ts.map +1 -1
- package/dist/services/logger/index.js +1 -4
- package/dist/services/logger/index.js.map +1 -1
- package/dist/services/logger/logger-chain.d.ts +18 -8
- package/dist/services/logger/logger-chain.d.ts.map +1 -1
- package/dist/services/logger/logger-chain.js +35 -41
- package/dist/services/logger/logger-chain.js.map +1 -1
- package/dist/services/logger/logger-context-storage.d.ts +2 -0
- package/dist/services/logger/logger-context-storage.d.ts.map +1 -1
- package/dist/services/logger/logger-context-storage.js.map +1 -1
- package/dist/services/logger/logger-context.d.ts +0 -22
- package/dist/services/logger/logger-context.d.ts.map +1 -1
- package/dist/services/logger/logger-context.js +2 -50
- package/dist/services/logger/logger-context.js.map +1 -1
- package/dist/services/logger/logger.service.d.ts +37 -14
- package/dist/services/logger/logger.service.d.ts.map +1 -1
- package/dist/services/logger/logger.service.js +157 -133
- package/dist/services/logger/logger.service.js.map +1 -1
- package/dist/services/logger/unified-logger.service.d.ts.map +1 -1
- package/dist/services/logger/unified-logger.service.js +2 -34
- package/dist/services/logger/unified-logger.service.js.map +1 -1
- package/dist/services/permission.service.d.ts +12 -5
- package/dist/services/permission.service.d.ts.map +1 -1
- package/dist/services/permission.service.js +50 -10
- package/dist/services/permission.service.js.map +1 -1
- package/dist/services/redis.service.d.ts +29 -0
- package/dist/services/redis.service.d.ts.map +1 -1
- package/dist/services/redis.service.js +48 -5
- package/dist/services/redis.service.js.map +1 -1
- package/dist/services/role.service.d.ts +12 -5
- package/dist/services/role.service.d.ts.map +1 -1
- package/dist/services/role.service.js +38 -9
- package/dist/services/role.service.js.map +1 -1
- package/dist/services/token-validation.service.d.ts +30 -0
- package/dist/services/token-validation.service.d.ts.map +1 -1
- package/dist/services/token-validation.service.js +30 -0
- package/dist/services/token-validation.service.js.map +1 -1
- package/dist/types/config.types.d.ts +38 -1
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js.map +1 -1
- package/dist/utils/audit-log-queue.d.ts.map +1 -1
- package/dist/utils/audit-log-queue.js +3 -0
- package/dist/utils/audit-log-queue.js.map +1 -1
- package/dist/utils/client-token-manager.d.ts.map +1 -1
- package/dist/utils/client-token-manager.js +9 -1
- package/dist/utils/client-token-manager.js.map +1 -1
- package/dist/utils/config-loader.d.ts +3 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +5 -3
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/data-client-audit.d.ts.map +1 -1
- package/dist/utils/data-client-audit.js +15 -2
- package/dist/utils/data-client-audit.js.map +1 -1
- package/dist/utils/data-client-auth.d.ts.map +1 -1
- package/dist/utils/data-client-auth.js +17 -9
- package/dist/utils/data-client-auth.js.map +1 -1
- package/dist/utils/data-client-auto-init.d.ts.map +1 -1
- package/dist/utils/data-client-auto-init.js +110 -119
- package/dist/utils/data-client-auto-init.js.map +1 -1
- package/dist/utils/data-client-request.d.ts +0 -3
- package/dist/utils/data-client-request.d.ts.map +1 -1
- package/dist/utils/data-client-request.js +148 -97
- package/dist/utils/data-client-request.js.map +1 -1
- package/dist/utils/data-client-response.d.ts.map +1 -1
- package/dist/utils/data-client-response.js +93 -63
- package/dist/utils/data-client-response.js.map +1 -1
- package/dist/utils/data-client-utils.d.ts +2 -1
- package/dist/utils/data-client-utils.d.ts.map +1 -1
- package/dist/utils/data-client-utils.js +2 -1
- package/dist/utils/data-client-utils.js.map +1 -1
- package/dist/utils/data-client.d.ts.map +1 -1
- package/dist/utils/data-client.js +4 -1
- package/dist/utils/data-client.js.map +1 -1
- package/dist/utils/data-masker.d.ts +3 -0
- package/dist/utils/data-masker.d.ts.map +1 -1
- package/dist/utils/data-masker.js +3 -0
- package/dist/utils/data-masker.js.map +1 -1
- package/dist/utils/filter-schema.utils.d.ts.map +1 -1
- package/dist/utils/filter-schema.utils.js +64 -46
- package/dist/utils/filter-schema.utils.js.map +1 -1
- package/dist/utils/filter.utils.d.ts.map +1 -1
- package/dist/utils/filter.utils.js +59 -75
- package/dist/utils/filter.utils.js.map +1 -1
- package/dist/utils/http-client-audit.d.ts.map +1 -1
- package/dist/utils/http-client-audit.js +31 -19
- package/dist/utils/http-client-audit.js.map +1 -1
- package/dist/utils/http-client-metadata.d.ts +2 -1
- package/dist/utils/http-client-metadata.d.ts.map +1 -1
- package/dist/utils/http-client-metadata.js +2 -1
- package/dist/utils/http-client-metadata.js.map +1 -1
- package/dist/utils/internal-http-client.d.ts.map +1 -1
- package/dist/utils/internal-http-client.js +13 -7
- package/dist/utils/internal-http-client.js.map +1 -1
- package/package.json +86 -84
|
@@ -84,140 +84,131 @@ function cacheConfig(config, expiresIn) {
|
|
|
84
84
|
// Ignore localStorage errors (SSR, private browsing, etc.)
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
*
|
|
90
|
-
* @param baseUrl - Base URL for the API
|
|
91
|
-
* @param clientTokenUri - Client token endpoint URI
|
|
92
|
-
* @returns Config response
|
|
93
|
-
*/
|
|
94
|
-
async function fetchConfig(baseUrl, clientTokenUri) {
|
|
95
|
-
// Build full URL
|
|
96
|
-
const fullUrl = /^https?:\/\//i.test(clientTokenUri)
|
|
87
|
+
function buildConfigUrl(baseUrl, clientTokenUri) {
|
|
88
|
+
return /^https?:\/\//i.test(clientTokenUri)
|
|
97
89
|
? clientTokenUri
|
|
98
90
|
: `${baseUrl}${clientTokenUri}`;
|
|
99
|
-
|
|
100
|
-
|
|
91
|
+
}
|
|
92
|
+
function createTimeoutController(timeout) {
|
|
101
93
|
const controller = new AbortController();
|
|
102
94
|
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
95
|
+
if (typeof timeoutId.unref === "function") {
|
|
96
|
+
timeoutId.unref();
|
|
97
|
+
}
|
|
98
|
+
return { controller, timeoutId };
|
|
99
|
+
}
|
|
100
|
+
function buildFetchError(fetchError, fullUrl, timeout) {
|
|
101
|
+
const errorMessage = fetchError instanceof Error ? fetchError.message : String(fetchError);
|
|
102
|
+
const errorName = fetchError instanceof Error ? fetchError.name : "Unknown";
|
|
103
|
+
if (errorName === "AbortError" || errorMessage.includes("aborted")) {
|
|
104
|
+
return new Error(`Request timeout: The client token endpoint did not respond within ${timeout}ms. ` +
|
|
105
|
+
`Please check if the server is running and accessible at ${fullUrl}`);
|
|
106
|
+
}
|
|
107
|
+
if (errorMessage.includes("ERR_EMPTY_RESPONSE") ||
|
|
108
|
+
errorMessage.includes("empty response")) {
|
|
109
|
+
return new Error(`Connection error: The server closed the connection without sending a response. ` +
|
|
110
|
+
`Please check if the server is running and accessible at ${fullUrl}`);
|
|
111
|
+
}
|
|
112
|
+
if (errorMessage.includes("Failed to fetch") ||
|
|
113
|
+
errorMessage.includes("network")) {
|
|
114
|
+
return new Error(`Network error: Cannot connect to ${fullUrl}. ` +
|
|
115
|
+
`Please check your network connection and ensure the server is running.`);
|
|
116
|
+
}
|
|
117
|
+
return new Error(`Failed to fetch config: ${errorMessage}`);
|
|
118
|
+
}
|
|
119
|
+
async function fetchWithTimeout(fullUrl, method, timeout, headers) {
|
|
120
|
+
const { controller, timeoutId } = createTimeoutController(timeout);
|
|
103
121
|
try {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
"Content-Type": "application/json",
|
|
111
|
-
},
|
|
112
|
-
credentials: "include",
|
|
113
|
-
signal: controller.signal,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
catch (fetchError) {
|
|
117
|
-
clearTimeout(timeoutId);
|
|
118
|
-
// Handle timeout and network errors
|
|
119
|
-
const errorMessage = fetchError instanceof Error ? fetchError.message : String(fetchError);
|
|
120
|
-
const errorName = fetchError instanceof Error ? fetchError.name : "Unknown";
|
|
121
|
-
if (errorName === "AbortError" || errorMessage.includes("aborted")) {
|
|
122
|
-
throw new Error(`Request timeout: The client token endpoint did not respond within ${timeout}ms. ` +
|
|
123
|
-
`Please check if the server is running and accessible at ${fullUrl}`);
|
|
124
|
-
}
|
|
125
|
-
if (errorMessage.includes("ERR_EMPTY_RESPONSE") || errorMessage.includes("empty response")) {
|
|
126
|
-
throw new Error(`Connection error: The server closed the connection without sending a response. ` +
|
|
127
|
-
`Please check if the server is running and accessible at ${fullUrl}`);
|
|
128
|
-
}
|
|
129
|
-
if (errorMessage.includes("Failed to fetch") || errorMessage.includes("network")) {
|
|
130
|
-
throw new Error(`Network error: Cannot connect to ${fullUrl}. ` +
|
|
131
|
-
`Please check your network connection and ensure the server is running.`);
|
|
132
|
-
}
|
|
133
|
-
throw new Error(`Failed to fetch config: ${errorMessage}`);
|
|
134
|
-
}
|
|
122
|
+
const response = await fetch(fullUrl, {
|
|
123
|
+
method,
|
|
124
|
+
headers,
|
|
125
|
+
credentials: "include",
|
|
126
|
+
signal: controller.signal,
|
|
127
|
+
});
|
|
135
128
|
clearTimeout(timeoutId);
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
129
|
+
return response;
|
|
130
|
+
}
|
|
131
|
+
catch (fetchError) {
|
|
132
|
+
clearTimeout(timeoutId);
|
|
133
|
+
throw buildFetchError(fetchError, fullUrl, timeout);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async function fetchConfigResponse(fullUrl, timeout) {
|
|
137
|
+
const response = await fetchWithTimeout(fullUrl, "POST", timeout, {
|
|
138
|
+
"Content-Type": "application/json",
|
|
139
|
+
});
|
|
140
|
+
if (response.status !== 405) {
|
|
141
|
+
return response;
|
|
142
|
+
}
|
|
143
|
+
return fetchWithTimeout(fullUrl, "GET", timeout);
|
|
144
|
+
}
|
|
145
|
+
async function buildHttpErrorMessage(response) {
|
|
146
|
+
let errorMessage = `Failed to fetch config: ${response.status} ${response.statusText}`;
|
|
147
|
+
let errorDetails;
|
|
148
|
+
try {
|
|
149
|
+
const contentType = response.headers.get("content-type");
|
|
150
|
+
if (contentType && contentType.includes("application/json")) {
|
|
151
|
+
const errorData = (await response.json().catch(() => null));
|
|
152
|
+
if (errorData) {
|
|
153
|
+
if (typeof errorData.message === "string") {
|
|
154
|
+
errorMessage = errorData.message;
|
|
156
155
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
// Extract error message from structured error response
|
|
170
|
-
if (typeof errorData.message === "string") {
|
|
171
|
-
errorMessage = errorData.message;
|
|
172
|
-
}
|
|
173
|
-
else if (typeof errorData.error === "string") {
|
|
174
|
-
errorMessage = errorData.error;
|
|
156
|
+
else if (typeof errorData.error === "string") {
|
|
157
|
+
errorMessage = errorData.error;
|
|
158
|
+
}
|
|
159
|
+
if (errorData.details) {
|
|
160
|
+
if (typeof errorData.details === "string") {
|
|
161
|
+
errorDetails = errorData.details;
|
|
162
|
+
}
|
|
163
|
+
else if (typeof errorData.details === "object" &&
|
|
164
|
+
errorData.details !== null) {
|
|
165
|
+
const details = errorData.details;
|
|
166
|
+
if (typeof details.suggestion === "string") {
|
|
167
|
+
errorDetails = details.suggestion;
|
|
175
168
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
if (typeof errorData.details === "string") {
|
|
179
|
-
errorDetails = errorData.details;
|
|
180
|
-
}
|
|
181
|
-
else if (typeof errorData.details === "object" && errorData.details !== null) {
|
|
182
|
-
const details = errorData.details;
|
|
183
|
-
if (typeof details.suggestion === "string") {
|
|
184
|
-
errorDetails = details.suggestion;
|
|
185
|
-
}
|
|
186
|
-
else if (typeof details.controllerUrl === "string") {
|
|
187
|
-
errorDetails = `Controller URL: ${details.controllerUrl}`;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
169
|
+
else if (typeof details.controllerUrl === "string") {
|
|
170
|
+
errorDetails = `Controller URL: ${details.controllerUrl}`;
|
|
190
171
|
}
|
|
191
172
|
}
|
|
192
173
|
}
|
|
193
|
-
else {
|
|
194
|
-
// Try to read as text if not JSON
|
|
195
|
-
const errorText = await response.text().catch(() => "Unable to read error response");
|
|
196
|
-
if (errorText && errorText !== "Unable to read error response") {
|
|
197
|
-
errorMessage = `${errorMessage}. ${errorText}`;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
174
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const errorText = await response.text().catch(() => "Unable to read error response");
|
|
178
|
+
if (errorText && errorText !== "Unable to read error response") {
|
|
179
|
+
errorMessage = `${errorMessage}. ${errorText}`;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
try {
|
|
185
|
+
const errorText = await response.text().catch(() => "");
|
|
186
|
+
if (errorText) {
|
|
187
|
+
errorMessage = `${errorMessage}. ${errorText}`;
|
|
212
188
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Ignore errors reading response
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return errorDetails ? `${errorMessage}. ${errorDetails}` : errorMessage;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Fetch config from server endpoint
|
|
198
|
+
*
|
|
199
|
+
* @param baseUrl - Base URL for the API
|
|
200
|
+
* @param clientTokenUri - Client token endpoint URI
|
|
201
|
+
* @returns Config response
|
|
202
|
+
*/
|
|
203
|
+
async function fetchConfig(baseUrl, clientTokenUri) {
|
|
204
|
+
const fullUrl = buildConfigUrl(baseUrl, clientTokenUri);
|
|
205
|
+
const timeout = 30000;
|
|
206
|
+
try {
|
|
207
|
+
const response = await fetchConfigResponse(fullUrl, timeout);
|
|
208
|
+
if (!response.ok) {
|
|
209
|
+
throw new Error(await buildHttpErrorMessage(response));
|
|
218
210
|
}
|
|
219
211
|
const data = (await response.json());
|
|
220
|
-
// Check if response has config
|
|
221
212
|
if (!(0, client_token_endpoint_1.hasConfig)(data)) {
|
|
222
213
|
throw new Error("Invalid response format: config not found in response. " +
|
|
223
214
|
"Make sure your server endpoint uses createClientTokenEndpoint() helper.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-client-auto-init.js","sourceRoot":"","sources":["../../src/utils/data-client-auto-init.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoFH,8DAGC;
|
|
1
|
+
{"version":3,"file":"data-client-auto-init.js","sourceRoot":"","sources":["../../src/utils/data-client-auto-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,9 +28,6 @@ export declare function mergeSignals(signal1: AbortSignal, signal2: AbortSignal)
|
|
|
28
28
|
* Make fetch request with timeout and authentication
|
|
29
29
|
*/
|
|
30
30
|
export declare function makeFetchRequest(method: string, url: string, config: DataClientConfig, getToken: GetTokenFn, options?: ApiRequestOptions): Promise<Response>;
|
|
31
|
-
/**
|
|
32
|
-
* Execute HTTP request with retry logic
|
|
33
|
-
*/
|
|
34
31
|
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, refreshUserToken: RefreshUserTokenFn, interceptors: InterceptorConfig, metrics: {
|
|
35
32
|
totalRequests: number;
|
|
36
33
|
totalFailures: number;
|
|
@@ -1 +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;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQhE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAE5F;;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,CAiBpC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CASrE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAcpF;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,
|
|
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;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQhE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAE5F;;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,CAiBpC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CASrE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAcpF;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,CA4CnB;AAkQD,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,gBAAgB,EAAE,kBAAkB,EACpC,YAAY,EAAE,iBAAiB,EAC/B,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,EAClF,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,CAAC,CAAC,CA6BZ"}
|
|
@@ -88,6 +88,9 @@ async function makeFetchRequest(method, url, config, getToken, options) {
|
|
|
88
88
|
const timeout = options?.timeout || config.timeout || 30000;
|
|
89
89
|
const controller = new AbortController();
|
|
90
90
|
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
91
|
+
if (typeof timeoutId.unref === "function") {
|
|
92
|
+
timeoutId.unref();
|
|
93
|
+
}
|
|
91
94
|
const signal = options?.signal
|
|
92
95
|
? mergeSignals(controller.signal, options.signal)
|
|
93
96
|
: controller.signal;
|
|
@@ -105,111 +108,159 @@ async function makeFetchRequest(method, url, config, getToken, options) {
|
|
|
105
108
|
throw new data_client_types_1.NetworkError(`Network error: ${error instanceof Error ? error.message : "Unknown error"}`, error instanceof Error ? error : undefined);
|
|
106
109
|
}
|
|
107
110
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
111
|
+
function resolveRetryConfig(config, options) {
|
|
112
|
+
return {
|
|
113
|
+
maxRetries: options?.retries !== undefined
|
|
114
|
+
? options.retries
|
|
115
|
+
: config.retry?.maxRetries || 3,
|
|
116
|
+
retryEnabled: config.retry?.enabled !== false,
|
|
117
|
+
baseDelay: config.retry?.baseDelay || 1000,
|
|
118
|
+
maxDelay: config.retry?.maxDelay || 10000,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function isAuthStatus(status) {
|
|
122
|
+
return status === 401 || status === 403;
|
|
123
|
+
}
|
|
124
|
+
function isAuthErrorInstance(error) {
|
|
125
|
+
const errorObj = error;
|
|
126
|
+
return (error instanceof data_client_types_1.AuthenticationError ||
|
|
127
|
+
errorObj.name === "AuthenticationError" ||
|
|
128
|
+
errorObj.statusCode === 401 ||
|
|
129
|
+
errorObj.statusCode === 403);
|
|
130
|
+
}
|
|
131
|
+
function resolveStatusCode(error, responseStatus) {
|
|
132
|
+
const errorResponseStatus = error.response?.status;
|
|
133
|
+
return error.statusCode ?? errorResponseStatus ?? responseStatus ?? undefined;
|
|
134
|
+
}
|
|
135
|
+
function shouldRetryError(statusCode, retryConfig, attempt, error) {
|
|
136
|
+
const is500Error = statusCode !== undefined && statusCode >= 500 && statusCode < 600;
|
|
137
|
+
const effectiveMaxRetries = is500Error ? 0 : retryConfig.maxRetries;
|
|
138
|
+
return (retryConfig.retryEnabled &&
|
|
139
|
+
!is500Error &&
|
|
140
|
+
attempt < effectiveMaxRetries &&
|
|
141
|
+
(0, data_client_utils_1.isRetryableError)(statusCode, error));
|
|
142
|
+
}
|
|
143
|
+
async function handleAuthResponse(params) {
|
|
144
|
+
const { responseStatus, config, refreshUserToken, attempt, state } = params;
|
|
145
|
+
if (!isAuthStatus(responseStatus)) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
if (responseStatus === 401 &&
|
|
149
|
+
config.onTokenRefresh &&
|
|
150
|
+
refreshUserToken &&
|
|
151
|
+
attempt === 0 &&
|
|
152
|
+
!state.tokenRefreshAttempted) {
|
|
153
|
+
state.tokenRefreshAttempted = true;
|
|
124
154
|
try {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
if (responseStatus === 401 && config.onTokenRefresh && refreshUserToken && attempt === 0 && !tokenRefreshAttempted) {
|
|
130
|
-
tokenRefreshAttempted = true;
|
|
131
|
-
try {
|
|
132
|
-
const refreshResult = await refreshUserToken();
|
|
133
|
-
if (refreshResult?.token) {
|
|
134
|
-
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
135
|
-
return attemptRequest(attempt + 1);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
catch (refreshError) {
|
|
139
|
-
console.warn("Token refresh failed, redirecting to login:", refreshError);
|
|
140
|
-
// If refresh fails, mark as auth error and don't retry
|
|
141
|
-
authErrorDetected = true;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// Always mark auth errors to prevent retries
|
|
145
|
-
authErrorDetected = true;
|
|
146
|
-
const authError = responseStatus === 401
|
|
147
|
-
? new data_client_types_1.AuthenticationError("Authentication required", response)
|
|
148
|
-
: new data_client_types_1.ApiError("Forbidden", 403, response);
|
|
149
|
-
(0, data_client_response_1.handleAuthErrorCleanup)(authError, responseStatus, method, endpoint, startTime, config, misoClient, hasAnyToken, getToken, handleAuthError, metrics, options);
|
|
150
|
-
throw authError;
|
|
155
|
+
const refreshResult = await refreshUserToken();
|
|
156
|
+
if (refreshResult?.token) {
|
|
157
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
158
|
+
return attemptRequest({ ...params, attempt: attempt + 1 });
|
|
151
159
|
}
|
|
152
|
-
const data = await parseResponse(response);
|
|
153
|
-
return await (0, data_client_response_1.processSuccessfulResponse)(response, data, method, endpoint, startTime, config, cache, cacheKey, cacheEnabled, misoClient, hasAnyToken, getToken, interceptors, metrics, options);
|
|
154
160
|
}
|
|
155
|
-
catch (
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
authErrorDetected = true;
|
|
159
|
-
throw error;
|
|
160
|
-
}
|
|
161
|
-
if (error instanceof data_client_types_1.AuthenticationError) {
|
|
162
|
-
authErrorDetected = true;
|
|
163
|
-
throw error;
|
|
164
|
-
}
|
|
165
|
-
if (responseStatus === 401 || responseStatus === 403) {
|
|
166
|
-
authErrorDetected = true;
|
|
167
|
-
throw error;
|
|
168
|
-
}
|
|
169
|
-
const errorObj = error;
|
|
170
|
-
if (errorObj.name === "AuthenticationError" || errorObj.statusCode === 401 || errorObj.statusCode === 403) {
|
|
171
|
-
authErrorDetected = true;
|
|
172
|
-
throw error;
|
|
173
|
-
}
|
|
174
|
-
const errorResponseStatus = errorObj.response?.status;
|
|
175
|
-
const statusCode = error instanceof data_client_types_1.AuthenticationError
|
|
176
|
-
? 401
|
|
177
|
-
: (errorObj.statusCode ?? errorResponseStatus ?? responseStatus ?? undefined);
|
|
178
|
-
const is500Error = statusCode && statusCode >= 500 && statusCode < 600;
|
|
179
|
-
const effectiveMaxRetries = is500Error ? 0 : maxRetries;
|
|
180
|
-
const isRetryable = retryEnabled && !is500Error && attempt < effectiveMaxRetries && (0, data_client_utils_1.isRetryableError)(statusCode, error);
|
|
181
|
-
if (!isRetryable) {
|
|
182
|
-
const isAuthError = error instanceof data_client_types_1.AuthenticationError ||
|
|
183
|
-
error.name === "AuthenticationError" ||
|
|
184
|
-
statusCode === 401 || statusCode === 403 ||
|
|
185
|
-
responseStatus === 401 || responseStatus === 403;
|
|
186
|
-
if (isAuthError) {
|
|
187
|
-
authErrorDetected = true;
|
|
188
|
-
throw error;
|
|
189
|
-
}
|
|
190
|
-
metrics.totalFailures++;
|
|
191
|
-
await (0, data_client_response_1.handleNonRetryableError)(error, method, endpoint, startTime, statusCode, responseStatus, config, misoClient, hasAnyToken, getToken, metrics, options);
|
|
192
|
-
}
|
|
193
|
-
if (authErrorDetected) {
|
|
194
|
-
throw error;
|
|
195
|
-
}
|
|
196
|
-
await (0, data_client_response_1.waitForRetry)(attempt, baseDelay, maxDelay, data_client_utils_1.calculateBackoffDelay);
|
|
197
|
-
return attemptRequest(attempt + 1);
|
|
161
|
+
catch (refreshError) {
|
|
162
|
+
console.warn("Token refresh failed, redirecting to login:", refreshError);
|
|
163
|
+
state.authErrorDetected = true;
|
|
198
164
|
}
|
|
199
165
|
}
|
|
200
|
-
|
|
201
|
-
|
|
166
|
+
state.authErrorDetected = true;
|
|
167
|
+
const authError = responseStatus === 401
|
|
168
|
+
? new data_client_types_1.AuthenticationError("Authentication required", params.response)
|
|
169
|
+
: new data_client_types_1.ApiError("Forbidden", 403, params.response);
|
|
170
|
+
(0, data_client_response_1.handleAuthErrorCleanup)(authError, responseStatus, params.method, params.endpoint, params.startTime, params.config, params.misoClient, params.hasAnyToken, params.getToken, params.handleAuthError, params.metrics, params.options);
|
|
171
|
+
throw authError;
|
|
172
|
+
}
|
|
173
|
+
async function handleAttemptError(params) {
|
|
174
|
+
const { error, responseStatus, state, attempt, retryConfig } = params;
|
|
175
|
+
if (state.tokenRefreshAttempted && isAuthStatus(responseStatus)) {
|
|
176
|
+
state.authErrorDetected = true;
|
|
177
|
+
throw error;
|
|
202
178
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
179
|
+
if (error instanceof data_client_types_1.AuthenticationError || isAuthStatus(responseStatus) || isAuthErrorInstance(error)) {
|
|
180
|
+
state.authErrorDetected = true;
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
const errorObj = error;
|
|
184
|
+
const statusCode = resolveStatusCode(errorObj, responseStatus);
|
|
185
|
+
const isRetryable = shouldRetryError(statusCode, retryConfig, attempt, error);
|
|
186
|
+
if (!isRetryable) {
|
|
187
|
+
if (isAuthStatus(statusCode)) {
|
|
188
|
+
state.authErrorDetected = true;
|
|
189
|
+
throw error;
|
|
211
190
|
}
|
|
191
|
+
params.metrics.totalFailures++;
|
|
192
|
+
await (0, data_client_response_1.handleNonRetryableError)(error, params.method, params.endpoint, params.startTime, statusCode, responseStatus, params.config, params.misoClient, params.hasAnyToken, params.getToken, params.metrics, params.options);
|
|
193
|
+
}
|
|
194
|
+
if (state.authErrorDetected) {
|
|
212
195
|
throw error;
|
|
213
196
|
}
|
|
197
|
+
await (0, data_client_response_1.waitForRetry)(attempt, retryConfig.baseDelay, retryConfig.maxDelay, data_client_utils_1.calculateBackoffDelay);
|
|
198
|
+
return attemptRequest({ ...params, attempt: attempt + 1 });
|
|
199
|
+
}
|
|
200
|
+
async function attemptRequest(params) {
|
|
201
|
+
if (params.state.authErrorDetected) {
|
|
202
|
+
throw new data_client_types_1.AuthenticationError("Authentication error detected - should not retry");
|
|
203
|
+
}
|
|
204
|
+
let responseStatus;
|
|
205
|
+
let response;
|
|
206
|
+
try {
|
|
207
|
+
response = await makeFetchRequest(params.method, params.fullUrl, params.config, params.getToken, params.options);
|
|
208
|
+
responseStatus = response.status;
|
|
209
|
+
const authResult = await handleAuthResponse({
|
|
210
|
+
...params,
|
|
211
|
+
response,
|
|
212
|
+
responseStatus,
|
|
213
|
+
});
|
|
214
|
+
if (authResult) {
|
|
215
|
+
return authResult;
|
|
216
|
+
}
|
|
217
|
+
const data = await parseResponse(response);
|
|
218
|
+
return await (0, data_client_response_1.processSuccessfulResponse)(response, data, params.method, params.endpoint, params.startTime, params.config, params.cache, params.cacheKey, params.cacheEnabled, params.misoClient, params.hasAnyToken, params.getToken, params.interceptors, params.metrics, params.options);
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
return handleAttemptError({
|
|
222
|
+
...params,
|
|
223
|
+
error,
|
|
224
|
+
responseStatus,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
async function handleFinalError(error, interceptors, metrics) {
|
|
229
|
+
const isAuthError = isAuthErrorInstance(error);
|
|
230
|
+
metrics.totalFailures++;
|
|
231
|
+
if (interceptors.onError && !isAuthError) {
|
|
232
|
+
throw await interceptors.onError(error);
|
|
233
|
+
}
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
async function executeHttpRequest(method, fullUrl, endpoint, config, cache, cacheKey, cacheEnabled, startTime, misoClient, hasAnyToken, getToken, handleAuthError, refreshUserToken, interceptors, metrics, options) {
|
|
237
|
+
const retryConfig = resolveRetryConfig(config, options);
|
|
238
|
+
const state = { authErrorDetected: false, tokenRefreshAttempted: false };
|
|
239
|
+
try {
|
|
240
|
+
return await attemptRequest({
|
|
241
|
+
attempt: 0,
|
|
242
|
+
method,
|
|
243
|
+
fullUrl,
|
|
244
|
+
endpoint,
|
|
245
|
+
config,
|
|
246
|
+
cache,
|
|
247
|
+
cacheKey,
|
|
248
|
+
cacheEnabled,
|
|
249
|
+
startTime,
|
|
250
|
+
misoClient,
|
|
251
|
+
hasAnyToken,
|
|
252
|
+
getToken,
|
|
253
|
+
handleAuthError,
|
|
254
|
+
refreshUserToken,
|
|
255
|
+
interceptors,
|
|
256
|
+
metrics,
|
|
257
|
+
options,
|
|
258
|
+
retryConfig,
|
|
259
|
+
state,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
return handleFinalError(error, interceptors, metrics);
|
|
264
|
+
}
|
|
214
265
|
}
|
|
215
266
|
//# sourceMappingURL=data-client-request.js.map
|