@aifabrix/miso-client 4.4.2 → 4.4.4
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 +30 -0
- package/README.md +20 -38
- package/dist/api/auth-token.api.d.ts.map +1 -1
- package/dist/api/auth-token.api.js +45 -48
- package/dist/api/auth-token.api.js.map +1 -1
- package/dist/api/logs-create.api.d.ts.map +1 -1
- package/dist/api/logs-create.api.js +37 -50
- package/dist/api/logs-create.api.js.map +1 -1
- package/dist/express/client-token-endpoint.d.ts.map +1 -1
- package/dist/express/client-token-endpoint.js +88 -82
- package/dist/express/client-token-endpoint.js.map +1 -1
- package/dist/express/error-handler.d.ts.map +1 -1
- package/dist/express/error-handler.js +15 -7
- package/dist/express/error-handler.js.map +1 -1
- package/dist/express/error-types.d.ts +8 -1
- package/dist/express/error-types.d.ts.map +1 -1
- package/dist/express/error-types.js +11 -5
- package/dist/express/error-types.js.map +1 -1
- package/dist/express/index.d.ts +1 -1
- package/dist/express/index.d.ts.map +1 -1
- package/dist/express/response-helper.d.ts.map +1 -1
- package/dist/express/response-helper.js +4 -1
- package/dist/express/response-helper.js.map +1 -1
- package/dist/express/validation-helper.d.ts +1 -1
- package/dist/express/validation-helper.d.ts.map +1 -1
- package/dist/express/validation-helper.js +8 -10
- package/dist/express/validation-helper.js.map +1 -1
- package/dist/index.d.ts +3 -354
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -542
- package/dist/index.js.map +1 -1
- package/dist/miso-client.d.ts +82 -0
- package/dist/miso-client.d.ts.map +1 -0
- package/dist/miso-client.js +187 -0
- package/dist/miso-client.js.map +1 -0
- package/dist/sdk-exports.d.ts +56 -0
- package/dist/sdk-exports.d.ts.map +1 -0
- package/dist/sdk-exports.js +105 -0
- package/dist/sdk-exports.js.map +1 -0
- package/dist/services/application-context.service.d.ts +9 -1
- package/dist/services/application-context.service.d.ts.map +1 -1
- package/dist/services/application-context.service.js +46 -60
- package/dist/services/application-context.service.js.map +1 -1
- package/dist/services/auth-cache-helpers.d.ts.map +1 -1
- package/dist/services/auth-cache-helpers.js +4 -6
- package/dist/services/auth-cache-helpers.js.map +1 -1
- package/dist/services/auth-error-handler.d.ts.map +1 -1
- package/dist/services/auth-error-handler.js +12 -1
- package/dist/services/auth-error-handler.js.map +1 -1
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +9 -13
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/browser-permission.service.d.ts +4 -4
- package/dist/services/browser-permission.service.d.ts.map +1 -1
- package/dist/services/browser-permission.service.js +35 -80
- package/dist/services/browser-permission.service.js.map +1 -1
- package/dist/services/browser-role.service.d.ts +4 -4
- package/dist/services/browser-role.service.d.ts.map +1 -1
- package/dist/services/browser-role.service.js +40 -96
- package/dist/services/browser-role.service.js.map +1 -1
- package/dist/services/cache.service.d.ts +1 -0
- package/dist/services/cache.service.d.ts.map +1 -1
- package/dist/services/cache.service.js +19 -32
- package/dist/services/cache.service.js.map +1 -1
- package/dist/services/logger/logger-context.d.ts +17 -17
- package/dist/services/logger/logger-context.d.ts.map +1 -1
- package/dist/services/logger/logger-context.js +7 -17
- package/dist/services/logger/logger-context.js.map +1 -1
- package/dist/services/logger/logger-http-utils.d.ts +9 -0
- package/dist/services/logger/logger-http-utils.d.ts.map +1 -0
- package/dist/services/logger/logger-http-utils.js +45 -0
- package/dist/services/logger/logger-http-utils.js.map +1 -0
- package/dist/services/logger/logger.service.d.ts +1 -9
- package/dist/services/logger/logger.service.d.ts.map +1 -1
- package/dist/services/logger/logger.service.js +69 -82
- package/dist/services/logger/logger.service.js.map +1 -1
- package/dist/services/permission.service.d.ts.map +1 -1
- package/dist/services/permission.service.js +17 -30
- package/dist/services/permission.service.js.map +1 -1
- package/dist/services/role.service.d.ts.map +1 -1
- package/dist/services/role.service.js +12 -20
- package/dist/services/role.service.js.map +1 -1
- package/dist/services/token-validation.service.js +1 -3
- package/dist/services/token-validation.service.js.map +1 -1
- package/dist/types/config.types.d.ts +1 -0
- 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 +3 -0
- package/dist/utils/audit-log-queue.d.ts.map +1 -1
- package/dist/utils/audit-log-queue.js +42 -66
- package/dist/utils/audit-log-queue.js.map +1 -1
- package/dist/utils/client-token-manager.d.ts +0 -7
- package/dist/utils/client-token-manager.d.ts.map +1 -1
- package/dist/utils/client-token-manager.js +40 -46
- package/dist/utils/client-token-manager.js.map +1 -1
- package/dist/utils/config-loader.d.ts +0 -5
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +14 -11
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/console-logger.d.ts +4 -0
- package/dist/utils/console-logger.d.ts.map +1 -1
- package/dist/utils/console-logger.js +21 -5
- package/dist/utils/console-logger.js.map +1 -1
- package/dist/utils/data-client-audit.d.ts +19 -1
- package/dist/utils/data-client-audit.d.ts.map +1 -1
- package/dist/utils/data-client-audit.js +87 -117
- 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 +139 -95
- 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 +57 -72
- package/dist/utils/data-client-auto-init.js.map +1 -1
- package/dist/utils/data-client-init.d.ts.map +1 -1
- package/dist/utils/data-client-init.js +3 -3
- package/dist/utils/data-client-init.js.map +1 -1
- package/dist/utils/data-client-oauth.d.ts.map +1 -1
- package/dist/utils/data-client-oauth.js +84 -60
- package/dist/utils/data-client-oauth.js.map +1 -1
- package/dist/utils/data-client-redirect.d.ts.map +1 -1
- package/dist/utils/data-client-redirect.js +75 -98
- package/dist/utils/data-client-redirect.js.map +1 -1
- package/dist/utils/data-client-request.d.ts +24 -5
- package/dist/utils/data-client-request.d.ts.map +1 -1
- package/dist/utils/data-client-request.js +80 -42
- package/dist/utils/data-client-request.js.map +1 -1
- package/dist/utils/data-client-response.d.ts +63 -15
- package/dist/utils/data-client-response.d.ts.map +1 -1
- package/dist/utils/data-client-response.js +89 -33
- package/dist/utils/data-client-response.js.map +1 -1
- package/dist/utils/data-client.d.ts +4 -0
- package/dist/utils/data-client.d.ts.map +1 -1
- package/dist/utils/data-client.js +57 -30
- package/dist/utils/data-client.js.map +1 -1
- package/dist/utils/environment-token.d.ts.map +1 -1
- package/dist/utils/environment-token.js +49 -59
- package/dist/utils/environment-token.js.map +1 -1
- package/dist/utils/error-extractor.d.ts.map +1 -1
- package/dist/utils/error-extractor.js +56 -79
- package/dist/utils/error-extractor.js.map +1 -1
- package/dist/utils/filter-colon.utils.d.ts.map +1 -1
- package/dist/utils/filter-colon.utils.js +34 -45
- package/dist/utils/filter-colon.utils.js.map +1 -1
- package/dist/utils/filter-schema-loader.d.ts +12 -0
- package/dist/utils/filter-schema-loader.d.ts.map +1 -0
- package/dist/utils/filter-schema-loader.js +69 -0
- package/dist/utils/filter-schema-loader.js.map +1 -0
- package/dist/utils/filter-schema.utils.d.ts +1 -14
- package/dist/utils/filter-schema.utils.d.ts.map +1 -1
- package/dist/utils/filter-schema.utils.js +78 -136
- 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 +38 -36
- 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 +3 -12
- package/dist/utils/http-client-audit.js.map +1 -1
- package/dist/utils/http-client-masking.d.ts +13 -2
- package/dist/utils/http-client-masking.d.ts.map +1 -1
- package/dist/utils/http-client-masking.js +27 -27
- package/dist/utils/http-client-masking.js.map +1 -1
- package/dist/utils/http-response-validator.d.ts.map +1 -1
- package/dist/utils/http-response-validator.js +8 -3
- package/dist/utils/http-response-validator.js.map +1 -1
- package/dist/utils/internal-http-client.d.ts.map +1 -1
- package/dist/utils/internal-http-client.js +5 -3
- package/dist/utils/internal-http-client.js.map +1 -1
- package/dist/utils/response-validator.d.ts.map +1 -1
- package/dist/utils/response-validator.js +29 -44
- package/dist/utils/response-validator.js.map +1 -1
- package/dist/utils/sensitive-fields.loader.d.ts +0 -7
- package/dist/utils/sensitive-fields.loader.d.ts.map +1 -1
- package/dist/utils/sensitive-fields.loader.js +68 -114
- package/dist/utils/sensitive-fields.loader.js.map +1 -1
- package/dist/utils/token-utils.d.ts.map +1 -1
- package/dist/utils/token-utils.js +28 -37
- package/dist/utils/token-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ exports.logDataClientAudit = logDataClientAudit;
|
|
|
9
9
|
const logger_context_storage_1 = require("../services/logger/logger-context-storage");
|
|
10
10
|
const data_masker_1 = require("./data-masker");
|
|
11
11
|
const data_client_utils_1 = require("./data-client-utils");
|
|
12
|
+
const console_logger_1 = require("./console-logger");
|
|
12
13
|
/**
|
|
13
14
|
* Check if endpoint should skip audit logging
|
|
14
15
|
*/
|
|
@@ -18,134 +19,103 @@ function shouldSkipAudit(endpoint, auditConfig) {
|
|
|
18
19
|
const skipEndpoints = auditConfig.skipEndpoints || [];
|
|
19
20
|
return skipEndpoints.some((skip) => endpoint.includes(skip));
|
|
20
21
|
}
|
|
22
|
+
function maskPayload(data, maxSize, mask) {
|
|
23
|
+
const truncated = (0, data_client_utils_1.truncatePayload)(data, maxSize);
|
|
24
|
+
return mask && !truncated.truncated
|
|
25
|
+
? data_masker_1.DataMasker.maskSensitiveData(truncated.data)
|
|
26
|
+
: truncated.data;
|
|
27
|
+
}
|
|
28
|
+
function isExpectedAuditError(err) {
|
|
29
|
+
const statusCode = err.statusCode || err.response?.status;
|
|
30
|
+
const msg = err.message || String(err);
|
|
31
|
+
const code = err.code;
|
|
32
|
+
const isNetwork = code === "ECONNREFUSED" ||
|
|
33
|
+
code === "ENOTFOUND" ||
|
|
34
|
+
msg.includes("ERR_CONNECTION_REFUSED") ||
|
|
35
|
+
msg.includes("Failed to fetch") ||
|
|
36
|
+
msg.includes("NetworkError") ||
|
|
37
|
+
msg.includes("network error");
|
|
38
|
+
return statusCode === 401 || Boolean(isNetwork);
|
|
39
|
+
}
|
|
40
|
+
async function runWithTokenContext(token, handler) {
|
|
41
|
+
if (!token) {
|
|
42
|
+
await handler();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const ctx = logger_context_storage_1.LoggerContextStorage.getInstance();
|
|
46
|
+
await ctx.runWithContextAsync({ token }, handler);
|
|
47
|
+
}
|
|
48
|
+
async function performAudit(misoClient, token, method, url, auditContext) {
|
|
49
|
+
await runWithTokenContext(token, async () => {
|
|
50
|
+
await misoClient.log.audit(`http.request.${method.toLowerCase()}`, url, auditContext);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function addStandardAuditContext(ctx, opts) {
|
|
54
|
+
const maxResp = opts.auditConfig?.maxResponseSize || 10000;
|
|
55
|
+
const maxMask = opts.auditConfig?.maxMaskingSize || 50000;
|
|
56
|
+
ctx.requestBody = opts.requestBody !== undefined ? maskPayload(opts.requestBody, maxMask, true) : undefined;
|
|
57
|
+
ctx.responseBody = opts.responseBody !== undefined ? maskPayload(opts.responseBody, maxResp, true) : undefined;
|
|
58
|
+
ctx.requestHeaders = opts.requestHeaders ? data_masker_1.DataMasker.maskSensitiveData(opts.requestHeaders) : undefined;
|
|
59
|
+
ctx.responseHeaders = opts.responseHeaders ? data_masker_1.DataMasker.maskSensitiveData(opts.responseHeaders) : undefined;
|
|
60
|
+
}
|
|
61
|
+
function addDetailedAuditContext(ctx, opts, level) {
|
|
62
|
+
if (level !== "detailed" && level !== "full")
|
|
63
|
+
return;
|
|
64
|
+
if (opts.requestSize !== undefined)
|
|
65
|
+
ctx.requestSize = opts.requestSize;
|
|
66
|
+
if (opts.responseSize !== undefined)
|
|
67
|
+
ctx.responseSize = opts.responseSize;
|
|
68
|
+
}
|
|
69
|
+
function buildFullContext(opts) {
|
|
70
|
+
const { method, url, statusCode, duration } = opts;
|
|
71
|
+
const token = opts.getToken();
|
|
72
|
+
const userId = token ? (0, data_client_utils_1.extractUserIdFromToken)(token) : undefined;
|
|
73
|
+
const level = opts.auditConfig?.level || "standard";
|
|
74
|
+
const ctx = { method, url, statusCode, duration, ...(userId && { userId }) };
|
|
75
|
+
if (level === "minimal")
|
|
76
|
+
return ctx;
|
|
77
|
+
addStandardAuditContext(ctx, opts);
|
|
78
|
+
addDetailedAuditContext(ctx, opts, level);
|
|
79
|
+
if (opts.error)
|
|
80
|
+
ctx.error = data_masker_1.DataMasker.maskSensitiveData({ message: opts.error.message, name: opts.error.name, stack: opts.error.stack });
|
|
81
|
+
return ctx;
|
|
82
|
+
}
|
|
83
|
+
async function logAuditInternal(opts) {
|
|
84
|
+
const { method, url, misoClient, getToken } = opts;
|
|
85
|
+
const ctx = buildFullContext(opts);
|
|
86
|
+
await performAudit(misoClient, getToken(), method, url, ctx);
|
|
87
|
+
}
|
|
21
88
|
/**
|
|
22
89
|
* Log audit event (ISO 27001 compliance)
|
|
23
90
|
* Skips audit logging if no authentication token is available (user token OR client token)
|
|
24
91
|
*/
|
|
25
|
-
async function logDataClientAudit(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
// Skip audit logging if no authentication token is available
|
|
29
|
-
// This prevents 401 errors when attempting to audit log unauthenticated requests
|
|
30
|
-
if (!hasAnyToken()) {
|
|
31
|
-
// Silently skip audit logging for unauthenticated requests
|
|
32
|
-
// This is expected behavior and prevents 401 errors
|
|
92
|
+
async function logDataClientAudit(params) {
|
|
93
|
+
const { url, auditConfig, misoClient, hasAnyToken } = params;
|
|
94
|
+
if (shouldSkipAudit(url, auditConfig) || !misoClient || !hasAnyToken())
|
|
33
95
|
return;
|
|
34
|
-
}
|
|
35
96
|
try {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const auditLevel = auditConfig?.level || "standard";
|
|
39
|
-
// Build audit context based on level
|
|
40
|
-
const auditContext = {
|
|
41
|
-
method,
|
|
97
|
+
await logAuditInternal({
|
|
98
|
+
method: params.method,
|
|
42
99
|
url,
|
|
43
|
-
statusCode,
|
|
44
|
-
duration,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
// Standard/Detailed/Full levels: include headers and bodies (masked)
|
|
57
|
-
const maxResponseSize = auditConfig?.maxResponseSize || 10000;
|
|
58
|
-
const maxMaskingSize = auditConfig?.maxMaskingSize || 50000;
|
|
59
|
-
// Truncate and mask request body
|
|
60
|
-
let maskedRequestBody = undefined;
|
|
61
|
-
if (requestBody !== undefined) {
|
|
62
|
-
const truncated = (0, data_client_utils_1.truncatePayload)(requestBody, maxMaskingSize);
|
|
63
|
-
if (!truncated.truncated) {
|
|
64
|
-
maskedRequestBody = data_masker_1.DataMasker.maskSensitiveData(truncated.data);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
maskedRequestBody = truncated.data;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
// Truncate and mask response body (for standard, detailed, full levels)
|
|
71
|
-
let maskedResponseBody = undefined;
|
|
72
|
-
if (responseBody !== undefined) {
|
|
73
|
-
const truncated = (0, data_client_utils_1.truncatePayload)(responseBody, maxResponseSize);
|
|
74
|
-
if (!truncated.truncated) {
|
|
75
|
-
maskedResponseBody = data_masker_1.DataMasker.maskSensitiveData(truncated.data);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
maskedResponseBody = truncated.data;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// Mask headers
|
|
82
|
-
const maskedRequestHeaders = requestHeaders
|
|
83
|
-
? data_masker_1.DataMasker.maskSensitiveData(requestHeaders)
|
|
84
|
-
: undefined;
|
|
85
|
-
const maskedResponseHeaders = responseHeaders
|
|
86
|
-
? data_masker_1.DataMasker.maskSensitiveData(responseHeaders)
|
|
87
|
-
: undefined;
|
|
88
|
-
// Add to context based on level (standard, detailed, full all include headers/bodies)
|
|
89
|
-
if (maskedRequestHeaders)
|
|
90
|
-
auditContext.requestHeaders = maskedRequestHeaders;
|
|
91
|
-
if (maskedResponseHeaders)
|
|
92
|
-
auditContext.responseHeaders = maskedResponseHeaders;
|
|
93
|
-
if (maskedRequestBody !== undefined)
|
|
94
|
-
auditContext.requestBody = maskedRequestBody;
|
|
95
|
-
if (maskedResponseBody !== undefined)
|
|
96
|
-
auditContext.responseBody = maskedResponseBody;
|
|
97
|
-
// Add sizes for detailed/full levels
|
|
98
|
-
if (auditLevel === "detailed" || auditLevel === "full") {
|
|
99
|
-
if (requestSize !== undefined)
|
|
100
|
-
auditContext.requestSize = requestSize;
|
|
101
|
-
if (responseSize !== undefined)
|
|
102
|
-
auditContext.responseSize = responseSize;
|
|
103
|
-
}
|
|
104
|
-
if (error) {
|
|
105
|
-
const maskedError = data_masker_1.DataMasker.maskSensitiveData({
|
|
106
|
-
message: error.message,
|
|
107
|
-
name: error.name,
|
|
108
|
-
stack: error.stack,
|
|
109
|
-
});
|
|
110
|
-
auditContext.error = maskedError;
|
|
111
|
-
}
|
|
112
|
-
await runWithTokenContext(token, async () => {
|
|
113
|
-
await misoClient.log.audit(`http.request.${method.toLowerCase()}`, url, auditContext);
|
|
100
|
+
statusCode: params.statusCode,
|
|
101
|
+
duration: params.duration,
|
|
102
|
+
misoClient,
|
|
103
|
+
auditConfig,
|
|
104
|
+
getToken: params.getToken,
|
|
105
|
+
requestSize: params.requestSize,
|
|
106
|
+
responseSize: params.responseSize,
|
|
107
|
+
error: params.error,
|
|
108
|
+
requestHeaders: params.requestHeaders,
|
|
109
|
+
responseHeaders: params.responseHeaders,
|
|
110
|
+
requestBody: params.requestBody,
|
|
111
|
+
responseBody: params.responseBody,
|
|
114
112
|
});
|
|
115
113
|
}
|
|
116
114
|
catch (auditError) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const error = auditError;
|
|
120
|
-
const statusCode = error.statusCode || error.response?.status;
|
|
121
|
-
const errorMessage = error.message || String(auditError);
|
|
122
|
-
const errorCode = error.code;
|
|
123
|
-
// Silently skip for expected error conditions:
|
|
124
|
-
// - 401: User not authenticated (expected for unauthenticated requests)
|
|
125
|
-
// - Network errors: Connection refused, ECONNREFUSED, ERR_CONNECTION_REFUSED
|
|
126
|
-
// - These are expected when server is unavailable or misconfigured
|
|
127
|
-
const isNetworkError = errorCode === 'ECONNREFUSED' ||
|
|
128
|
-
errorCode === 'ENOTFOUND' ||
|
|
129
|
-
errorMessage.includes('ERR_CONNECTION_REFUSED') ||
|
|
130
|
-
errorMessage.includes('Failed to fetch') ||
|
|
131
|
-
errorMessage.includes('NetworkError') ||
|
|
132
|
-
errorMessage.includes('network error');
|
|
133
|
-
if (statusCode === 401 || isNetworkError) {
|
|
134
|
-
// Silently skip to avoid noise - these are expected conditions
|
|
135
|
-
// 401: User not authenticated (we already check hasAnyToken() before attempting)
|
|
136
|
-
// Network errors: Server unavailable or misconfigured (expected in demo/dev environments)
|
|
115
|
+
const err = auditError;
|
|
116
|
+
if (isExpectedAuditError(err))
|
|
137
117
|
return;
|
|
138
|
-
}
|
|
139
|
-
// Other unexpected errors - log warning but don't fail request
|
|
140
|
-
console.warn("Failed to log audit event:", auditError);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
async function runWithTokenContext(token, handler) {
|
|
144
|
-
if (!token) {
|
|
145
|
-
await handler();
|
|
146
|
-
return;
|
|
118
|
+
(0, console_logger_1.writeWarn)(`Failed to log audit event: ${String(auditError)}`);
|
|
147
119
|
}
|
|
148
|
-
const contextStorage = logger_context_storage_1.LoggerContextStorage.getInstance();
|
|
149
|
-
await contextStorage.runWithContextAsync({ token }, handler);
|
|
150
120
|
}
|
|
151
121
|
//# sourceMappingURL=data-client-audit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-client-audit.js","sourceRoot":"","sources":["../../src/utils/data-client-audit.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"data-client-audit.js","sourceRoot":"","sources":["../../src/utils/data-client-audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-client-auth.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EAA0B,eAAe,EAAE,MAAM,eAAe,CAAC;AAQxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAQ5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,UAAU,EAAE,gBAAgB,GAAG,SAAS,GACvC,OAAO,CA2BT;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,EAC9B,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGxF;
|
|
1
|
+
{"version":3,"file":"data-client-auth.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EAA0B,eAAe,EAAE,MAAM,eAAe,CAAC;AAQxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAQ5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,UAAU,EAAE,gBAAgB,GAAG,SAAS,GACvC,OAAO,CA2BT;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,EAC9B,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGxF;AAsFD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC1C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxB;AAGD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA0HjE;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,UAAU,GAAG,IAAI,GAC5B,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAUnG"}
|
|
@@ -84,6 +84,42 @@ function getControllerUrl(misoConfig) {
|
|
|
84
84
|
return null;
|
|
85
85
|
return misoConfig.controllerPublicUrl || misoConfig.controllerUrl || null;
|
|
86
86
|
}
|
|
87
|
+
function debugClientToken(isDebug, message) {
|
|
88
|
+
if (isDebug)
|
|
89
|
+
(0, console_logger_1.writeWarn)(message);
|
|
90
|
+
}
|
|
91
|
+
function clearCachedClientToken() {
|
|
92
|
+
(0, data_client_utils_1.removeLocalStorage)("miso:client-token");
|
|
93
|
+
(0, data_client_utils_1.removeLocalStorage)("miso:client-token-expires-at");
|
|
94
|
+
}
|
|
95
|
+
function getValidCachedClientToken(cachedToken, expiresAtStr, isDebug) {
|
|
96
|
+
if (!cachedToken)
|
|
97
|
+
return null;
|
|
98
|
+
if (!isCachedTokenValid(cachedToken, expiresAtStr)) {
|
|
99
|
+
debugClientToken(isDebug, "[getClientToken] Token expired, removing from cache");
|
|
100
|
+
clearCachedClientToken();
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
debugClientToken(isDebug, "[getClientToken] Returning valid cached token");
|
|
104
|
+
return cachedToken;
|
|
105
|
+
}
|
|
106
|
+
async function fetchClientTokenFromEnvironment(isDebug, getEnvironmentTokenFn) {
|
|
107
|
+
try {
|
|
108
|
+
debugClientToken(isDebug, "[getClientToken] Fetching new token via getEnvironmentToken()");
|
|
109
|
+
const newToken = await getEnvironmentTokenFn();
|
|
110
|
+
debugClientToken(isDebug, `[getClientToken] Got new token, length: ${newToken?.length}`);
|
|
111
|
+
return newToken;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
(0, console_logger_1.writeErr)(`[getClientToken] Failed to get environment token: ${JSON.stringify({
|
|
115
|
+
method: "POST",
|
|
116
|
+
path: "/api/v1/auth/token",
|
|
117
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
118
|
+
stackTrace: error instanceof Error ? error.stack : undefined,
|
|
119
|
+
})}`);
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
87
123
|
/**
|
|
88
124
|
* Decode JWT token to check expiration
|
|
89
125
|
*/
|
|
@@ -128,50 +164,107 @@ async function getClientToken(misoConfig, _baseUrl, _getEnvironmentToken) {
|
|
|
128
164
|
const isDebug = misoConfig?.logLevel === "debug";
|
|
129
165
|
const cachedToken = (0, data_client_utils_1.getLocalStorage)("miso:client-token");
|
|
130
166
|
const expiresAtStr = (0, data_client_utils_1.getLocalStorage)("miso:client-token-expires-at");
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (isCachedTokenValid(cachedToken, expiresAtStr)) {
|
|
136
|
-
if (isDebug)
|
|
137
|
-
console.log("[getClientToken] Returning valid cached token");
|
|
138
|
-
return cachedToken;
|
|
139
|
-
}
|
|
140
|
-
// Token expired - clean up
|
|
141
|
-
if (isDebug)
|
|
142
|
-
console.log("[getClientToken] Token expired, removing from cache");
|
|
143
|
-
(0, data_client_utils_1.removeLocalStorage)("miso:client-token");
|
|
144
|
-
(0, data_client_utils_1.removeLocalStorage)("miso:client-token-expires-at");
|
|
145
|
-
}
|
|
167
|
+
debugClientToken(isDebug, `[getClientToken] Cache check: ${JSON.stringify({ hasToken: !!cachedToken, hasExpiresAt: !!expiresAtStr })}`);
|
|
168
|
+
const validCachedToken = getValidCachedClientToken(cachedToken, expiresAtStr, isDebug);
|
|
169
|
+
if (validCachedToken)
|
|
170
|
+
return validCachedToken;
|
|
146
171
|
// Check config for static token
|
|
147
172
|
if (misoConfig?.clientToken) {
|
|
148
|
-
|
|
149
|
-
console.log("[getClientToken] Returning token from config");
|
|
173
|
+
debugClientToken(isDebug, "[getClientToken] Returning token from config");
|
|
150
174
|
return misoConfig.clientToken;
|
|
151
175
|
}
|
|
152
|
-
|
|
153
|
-
try {
|
|
154
|
-
if (isDebug)
|
|
155
|
-
console.log("[getClientToken] Fetching new token via getEnvironmentToken()");
|
|
156
|
-
const newToken = await _getEnvironmentToken();
|
|
157
|
-
if (isDebug)
|
|
158
|
-
console.log("[getClientToken] Got new token, length:", newToken?.length);
|
|
159
|
-
return newToken;
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
console.error("[getClientToken] Failed to get environment token:", {
|
|
163
|
-
method: "POST",
|
|
164
|
-
path: "/api/v1/auth/token",
|
|
165
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
166
|
-
stackTrace: error instanceof Error ? error.stack : undefined,
|
|
167
|
-
});
|
|
168
|
-
return null;
|
|
169
|
-
}
|
|
176
|
+
return fetchClientTokenFromEnvironment(isDebug, _getEnvironmentToken);
|
|
170
177
|
}
|
|
171
178
|
// Re-export redirect functions for backward compatibility
|
|
172
179
|
var data_client_redirect_1 = require("./data-client-redirect");
|
|
173
180
|
Object.defineProperty(exports, "redirectToLogin", { enumerable: true, get: function () { return data_client_redirect_1.redirectToLogin; } });
|
|
174
181
|
Object.defineProperty(exports, "logout", { enumerable: true, get: function () { return data_client_redirect_1.logout; } });
|
|
182
|
+
const CACHE_KEY = "miso:client-token";
|
|
183
|
+
const EXPIRES_AT_KEY = "miso:client-token-expires-at";
|
|
184
|
+
function getCachedEnvToken() {
|
|
185
|
+
const cachedToken = (0, data_client_utils_1.getLocalStorage)(CACHE_KEY);
|
|
186
|
+
const expiresAtStr = (0, data_client_utils_1.getLocalStorage)(EXPIRES_AT_KEY);
|
|
187
|
+
if (!cachedToken || !expiresAtStr)
|
|
188
|
+
return null;
|
|
189
|
+
const expiresAt = parseInt(expiresAtStr, 10);
|
|
190
|
+
if (expiresAt <= Date.now()) {
|
|
191
|
+
(0, data_client_utils_1.removeLocalStorage)(CACHE_KEY);
|
|
192
|
+
(0, data_client_utils_1.removeLocalStorage)(EXPIRES_AT_KEY);
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
return cachedToken;
|
|
196
|
+
}
|
|
197
|
+
function parseTokenResponse(data) {
|
|
198
|
+
const token = data.data?.token ||
|
|
199
|
+
data.token ||
|
|
200
|
+
data.accessToken ||
|
|
201
|
+
data.access_token;
|
|
202
|
+
if (!token || typeof token !== "string") {
|
|
203
|
+
throw new Error("Invalid response format: token not found in response");
|
|
204
|
+
}
|
|
205
|
+
const dataExp = data.data?.expiresIn;
|
|
206
|
+
const expiresIn = dataExp ?? data.expiresIn ?? data.expires_in ?? 3600;
|
|
207
|
+
return { token, expiresIn: Number(expiresIn) };
|
|
208
|
+
}
|
|
209
|
+
async function auditTokenSuccess(misoClient, clientTokenUri, statusCode, config) {
|
|
210
|
+
if ((0, data_client_audit_1.shouldSkipAudit)(clientTokenUri, config.audit))
|
|
211
|
+
return;
|
|
212
|
+
try {
|
|
213
|
+
await misoClient.log.audit("client.token.request.success", clientTokenUri, { method: "POST", url: clientTokenUri, statusCode, cached: false }, {});
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
// Silently fail audit logging
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async function auditTokenFailure(misoClient, config, errorInfo, clientTokenUri) {
|
|
220
|
+
if ((0, data_client_audit_1.shouldSkipAudit)(clientTokenUri, config.audit))
|
|
221
|
+
return;
|
|
222
|
+
try {
|
|
223
|
+
const contextStorage = logger_context_storage_1.LoggerContextStorage.getInstance();
|
|
224
|
+
await contextStorage.runWithContextAsync({ correlationId: errorInfo.correlationId }, async () => {
|
|
225
|
+
await misoClient.log.audit("client.token.request.failed", clientTokenUri, {
|
|
226
|
+
method: "POST",
|
|
227
|
+
url: clientTokenUri,
|
|
228
|
+
statusCode: errorInfo.statusCode || 0,
|
|
229
|
+
error: errorInfo.message,
|
|
230
|
+
cached: false,
|
|
231
|
+
errorType: errorInfo.errorType,
|
|
232
|
+
errorName: errorInfo.errorName,
|
|
233
|
+
}, {
|
|
234
|
+
errorCategory: "authentication",
|
|
235
|
+
httpStatusCategory: errorInfo.statusCode && errorInfo.statusCode >= 500 ? "server-error" : "client-error",
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// Silently fail audit logging
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function buildClientTokenFetchUrl(config) {
|
|
244
|
+
const clientTokenUri = config.misoConfig?.clientTokenUri || "/api/v1/auth/client-token";
|
|
245
|
+
const fullUrl = /^https?:\/\//i.test(clientTokenUri)
|
|
246
|
+
? clientTokenUri
|
|
247
|
+
: `${config.baseUrl}${clientTokenUri}`;
|
|
248
|
+
return { clientTokenUri, fullUrl };
|
|
249
|
+
}
|
|
250
|
+
function storeEnvironmentToken(token, expiresIn) {
|
|
251
|
+
const expiresAt = Date.now() + expiresIn * 1000;
|
|
252
|
+
(0, data_client_utils_1.setLocalStorage)(CACHE_KEY, token);
|
|
253
|
+
(0, data_client_utils_1.setLocalStorage)(EXPIRES_AT_KEY, expiresAt.toString());
|
|
254
|
+
}
|
|
255
|
+
async function requestEnvironmentToken(fullUrl) {
|
|
256
|
+
const response = await fetch(fullUrl, {
|
|
257
|
+
method: "POST",
|
|
258
|
+
headers: { "Content-Type": "application/json" },
|
|
259
|
+
credentials: "include",
|
|
260
|
+
});
|
|
261
|
+
if (!response.ok) {
|
|
262
|
+
const errorText = await response.text();
|
|
263
|
+
throw new Error(`Failed to get environment token: ${response.status} ${response.statusText}. ${errorText}`);
|
|
264
|
+
}
|
|
265
|
+
const data = (await response.json());
|
|
266
|
+
return { response, data };
|
|
267
|
+
}
|
|
175
268
|
/**
|
|
176
269
|
* Get environment token (browser-side)
|
|
177
270
|
* Checks localStorage cache first, then calls backend endpoint if needed
|
|
@@ -180,50 +273,16 @@ async function getEnvironmentToken(config, misoClient) {
|
|
|
180
273
|
if (!(0, data_client_utils_1.isBrowser)()) {
|
|
181
274
|
throw new Error("getEnvironmentToken() is only available in browser environment");
|
|
182
275
|
}
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
const
|
|
187
|
-
const expiresAtStr = (0, data_client_utils_1.getLocalStorage)(expiresAtKey);
|
|
188
|
-
if (cachedToken && expiresAtStr) {
|
|
189
|
-
const expiresAt = parseInt(expiresAtStr, 10);
|
|
190
|
-
if (expiresAt > Date.now())
|
|
191
|
-
return cachedToken;
|
|
192
|
-
(0, data_client_utils_1.removeLocalStorage)(cacheKey);
|
|
193
|
-
(0, data_client_utils_1.removeLocalStorage)(expiresAtKey);
|
|
194
|
-
}
|
|
195
|
-
// Fetch from backend
|
|
196
|
-
const clientTokenUri = config.misoConfig?.clientTokenUri || "/api/v1/auth/client-token";
|
|
197
|
-
const fullUrl = /^https?:\/\//i.test(clientTokenUri) ? clientTokenUri : `${config.baseUrl}${clientTokenUri}`;
|
|
276
|
+
const cached = getCachedEnvToken();
|
|
277
|
+
if (cached)
|
|
278
|
+
return cached;
|
|
279
|
+
const { clientTokenUri, fullUrl } = buildClientTokenFetchUrl(config);
|
|
198
280
|
try {
|
|
199
|
-
const response = await
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
if (!response.ok) {
|
|
205
|
-
const errorText = await response.text();
|
|
206
|
-
throw new Error(`Failed to get environment token: ${response.status} ${response.statusText}. ${errorText}`);
|
|
207
|
-
}
|
|
208
|
-
const data = (await response.json());
|
|
209
|
-
const token = data.data?.token || data.token || data.accessToken || data.access_token;
|
|
210
|
-
if (!token || typeof token !== "string") {
|
|
211
|
-
throw new Error("Invalid response format: token not found in response");
|
|
212
|
-
}
|
|
213
|
-
const expiresIn = data.data?.expiresIn || data.expiresIn || data.expires_in || 3600;
|
|
214
|
-
const expiresAt = Date.now() + expiresIn * 1000;
|
|
215
|
-
(0, data_client_utils_1.setLocalStorage)(cacheKey, token);
|
|
216
|
-
(0, data_client_utils_1.setLocalStorage)(expiresAtKey, expiresAt.toString());
|
|
217
|
-
// Audit logging
|
|
218
|
-
if (misoClient && !(0, data_client_audit_1.shouldSkipAudit)(clientTokenUri, config.audit)) {
|
|
219
|
-
try {
|
|
220
|
-
await misoClient.log.audit("client.token.request.success", clientTokenUri, {
|
|
221
|
-
method: "POST", url: clientTokenUri, statusCode: response.status, cached: false,
|
|
222
|
-
}, {});
|
|
223
|
-
}
|
|
224
|
-
catch {
|
|
225
|
-
// Silently fail audit logging
|
|
226
|
-
}
|
|
281
|
+
const { response, data } = await requestEnvironmentToken(fullUrl);
|
|
282
|
+
const { token, expiresIn } = parseTokenResponse(data);
|
|
283
|
+
storeEnvironmentToken(token, expiresIn);
|
|
284
|
+
if (misoClient) {
|
|
285
|
+
await auditTokenSuccess(misoClient, clientTokenUri, response.status, config);
|
|
227
286
|
}
|
|
228
287
|
return token;
|
|
229
288
|
}
|
|
@@ -234,23 +293,8 @@ async function getEnvironmentToken(config, misoClient) {
|
|
|
234
293
|
correlationId: misoClient?.log?.generateCorrelationId?.(),
|
|
235
294
|
});
|
|
236
295
|
(0, console_logger_1.logErrorWithContext)(errorInfo, "[DataClient] [AUTH] [ClientToken]");
|
|
237
|
-
if (misoClient
|
|
238
|
-
|
|
239
|
-
const contextStorage = logger_context_storage_1.LoggerContextStorage.getInstance();
|
|
240
|
-
await contextStorage.runWithContextAsync({ correlationId: errorInfo.correlationId }, async () => {
|
|
241
|
-
await misoClient.log.audit("client.token.request.failed", clientTokenUri, {
|
|
242
|
-
method: "POST", url: clientTokenUri, statusCode: errorInfo.statusCode || 0,
|
|
243
|
-
error: error instanceof Error ? error.message : "Unknown error",
|
|
244
|
-
cached: false, errorType: errorInfo.errorType, errorName: errorInfo.errorName,
|
|
245
|
-
}, {
|
|
246
|
-
errorCategory: "authentication",
|
|
247
|
-
httpStatusCategory: errorInfo.statusCode && errorInfo.statusCode >= 500 ? "server-error" : "client-error",
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
catch {
|
|
252
|
-
// Silently fail audit logging
|
|
253
|
-
}
|
|
296
|
+
if (misoClient) {
|
|
297
|
+
await auditTokenFailure(misoClient, config, errorInfo, clientTokenUri);
|
|
254
298
|
}
|
|
255
299
|
throw error;
|
|
256
300
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-client-auth.js","sourceRoot":"","sources":["../../src/utils/data-client-auth.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAkBH,4BAQC;AAKD,wCA8BC;AAKD,kCAMC;AAKD,4CAGC;
|
|
1
|
+
{"version":3,"file":"data-client-auth.js","sourceRoot":"","sources":["../../src/utils/data-client-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-client-auto-init.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-auto-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,wBAAwB,EAAkC,MAAM,kCAAkC,CAAC;AAE5G;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA0CD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,IAAI,wBAAwB,GAAG,IAAI,CAG3E;
|
|
1
|
+
{"version":3,"file":"data-client-auto-init.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-auto-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,wBAAwB,EAAkC,MAAM,kCAAkC,CAAC;AAE5G;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA0CD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,IAAI,wBAAwB,GAAG,IAAI,CAG3E;AAgOD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,UAAU,CAAC,CA+BrB"}
|