@aifabrix/miso-client 4.4.2 → 4.4.3
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 +18 -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 -4
- package/dist/services/logger/logger.service.d.ts.map +1 -1
- package/dist/services/logger/logger.service.js +61 -77
- 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 +47 -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
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.BrowserRoleService = void 0;
|
|
8
8
|
const browser_jwt_decoder_1 = require("../utils/browser-jwt-decoder");
|
|
9
9
|
const application_context_service_1 = require("./application-context.service");
|
|
10
|
+
const error_extractor_1 = require("../utils/error-extractor");
|
|
11
|
+
const console_logger_1 = require("../utils/console-logger");
|
|
10
12
|
class BrowserRoleService {
|
|
11
13
|
constructor(httpClient, apiClient, cache) {
|
|
12
14
|
this.cache = cache;
|
|
@@ -15,10 +17,15 @@ class BrowserRoleService {
|
|
|
15
17
|
this.roleTTL = this.httpClient.config.cache?.roleTTL || 900; // 15 minutes default
|
|
16
18
|
this.applicationContextService = new application_context_service_1.ApplicationContextService(httpClient);
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
logRoleError(error, token, operation, method, path) {
|
|
21
|
+
const errorInfo = (0, error_extractor_1.extractErrorInfo)(error, {
|
|
22
|
+
endpoint: path,
|
|
23
|
+
method,
|
|
24
|
+
correlationId: error?.correlationId,
|
|
25
|
+
});
|
|
26
|
+
errorInfo.message = `Failed to ${operation}: ${errorInfo.message}`;
|
|
27
|
+
(0, console_logger_1.logErrorWithContext)(errorInfo, "[BrowserRoleService]");
|
|
28
|
+
}
|
|
22
29
|
/**
|
|
23
30
|
* Extract userId from JWT token without verification.
|
|
24
31
|
*/
|
|
@@ -38,6 +45,18 @@ class BrowserRoleService {
|
|
|
38
45
|
return null;
|
|
39
46
|
}
|
|
40
47
|
}
|
|
48
|
+
buildAuthStrategyWithToken(token, authStrategy) {
|
|
49
|
+
const base = authStrategy || this.httpClient.config.authStrategy;
|
|
50
|
+
return base ? { ...base, bearerToken: token } : { methods: ['bearer'], bearerToken: token };
|
|
51
|
+
}
|
|
52
|
+
async resolveUserId(token, authStrategy) {
|
|
53
|
+
const userInfo = await this.apiClient.auth.validateToken({ token }, this.buildAuthStrategyWithToken(token, authStrategy));
|
|
54
|
+
return userInfo.data?.user?.id || null;
|
|
55
|
+
}
|
|
56
|
+
getRolesQueryParams() {
|
|
57
|
+
const context = this.applicationContextService.getApplicationContext();
|
|
58
|
+
return context.environment ? { environment: context.environment } : undefined;
|
|
59
|
+
}
|
|
41
60
|
/**
|
|
42
61
|
* Get user roles with caching
|
|
43
62
|
* Optimized to extract userId from token first to check cache before API call
|
|
@@ -46,58 +65,27 @@ class BrowserRoleService {
|
|
|
46
65
|
*/
|
|
47
66
|
async getRoles(token, authStrategy) {
|
|
48
67
|
try {
|
|
49
|
-
// Extract userId from token to check cache first (avoids API call on cache hit)
|
|
50
68
|
let userId = this.extractUserIdFromToken(token);
|
|
51
69
|
const cacheKey = userId ? `roles:${userId}` : null;
|
|
52
|
-
// Check cache first if we have userId
|
|
53
70
|
if (cacheKey) {
|
|
54
71
|
const cached = await this.cache.get(cacheKey);
|
|
55
|
-
if (cached)
|
|
72
|
+
if (cached)
|
|
56
73
|
return cached.roles || [];
|
|
57
|
-
}
|
|
58
74
|
}
|
|
59
|
-
// Cache miss or no userId in token - fetch from controller
|
|
60
|
-
// If we don't have userId, get it from validate endpoint
|
|
61
75
|
if (!userId) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
? { ...authStrategyToUse, bearerToken: token }
|
|
65
|
-
: { methods: ['bearer'], bearerToken: token };
|
|
66
|
-
const userInfo = await this.apiClient.auth.validateToken({ token }, authStrategyWithToken);
|
|
67
|
-
userId = userInfo.data?.user?.id || null;
|
|
68
|
-
if (!userId) {
|
|
76
|
+
userId = await this.resolveUserId(token, authStrategy);
|
|
77
|
+
if (!userId)
|
|
69
78
|
return [];
|
|
70
|
-
}
|
|
71
79
|
}
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
const authStrategyWithToken = authStrategyToUse
|
|
75
|
-
? { ...authStrategyToUse, bearerToken: token }
|
|
76
|
-
: { methods: ['bearer'], bearerToken: token };
|
|
77
|
-
// Extract environment from application context service
|
|
78
|
-
const context = this.applicationContextService.getApplicationContext();
|
|
79
|
-
const queryParams = context.environment ? { environment: context.environment } : undefined;
|
|
80
|
+
const authStrategyWithToken = this.buildAuthStrategyWithToken(token, authStrategy);
|
|
81
|
+
const queryParams = this.getRolesQueryParams();
|
|
80
82
|
const roleResult = await this.apiClient.roles.getRoles(queryParams, authStrategyWithToken);
|
|
81
83
|
const roles = roleResult.data?.roles || [];
|
|
82
|
-
|
|
83
|
-
const finalCacheKey = `roles:${userId}`;
|
|
84
|
-
await this.cache.set(finalCacheKey, { roles, timestamp: Date.now() }, this.roleTTL);
|
|
84
|
+
await this.cache.set(`roles:${userId}`, { roles, timestamp: Date.now() }, this.roleTTL);
|
|
85
85
|
return roles;
|
|
86
86
|
}
|
|
87
87
|
catch (error) {
|
|
88
|
-
|
|
89
|
-
const statusCode = error?.statusCode ||
|
|
90
|
-
error?.response?.status;
|
|
91
|
-
console.error("Failed to get roles:", {
|
|
92
|
-
method: "GET",
|
|
93
|
-
path: "/api/auth/roles",
|
|
94
|
-
statusCode,
|
|
95
|
-
ipAddress: "unknown",
|
|
96
|
-
correlationId: error?.correlationId,
|
|
97
|
-
userId: this.extractUserIdFromToken(token) || undefined,
|
|
98
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
99
|
-
stackTrace: error instanceof Error ? error.stack : undefined,
|
|
100
|
-
});
|
|
88
|
+
this.logRoleError(error, token, "getRoles", "GET", "/api/auth/roles");
|
|
101
89
|
return [];
|
|
102
90
|
}
|
|
103
91
|
}
|
|
@@ -138,41 +126,18 @@ class BrowserRoleService {
|
|
|
138
126
|
*/
|
|
139
127
|
async refreshRoles(token, authStrategy) {
|
|
140
128
|
try {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const authStrategyWithToken = authStrategyToUse
|
|
144
|
-
? { ...authStrategyToUse, bearerToken: token }
|
|
145
|
-
: { methods: ['bearer'], bearerToken: token };
|
|
146
|
-
const userInfo = await this.apiClient.auth.validateToken({ token }, authStrategyWithToken);
|
|
147
|
-
if (!userInfo.data?.user?.id) {
|
|
129
|
+
const userId = await this.resolveUserId(token, authStrategy);
|
|
130
|
+
if (!userId)
|
|
148
131
|
return [];
|
|
149
|
-
|
|
150
|
-
const
|
|
151
|
-
const cacheKey = `roles:${userId}`;
|
|
152
|
-
// Extract environment from application context service
|
|
153
|
-
const context = this.applicationContextService.getApplicationContext();
|
|
154
|
-
const queryParams = context.environment ? { environment: context.environment } : undefined;
|
|
155
|
-
// Fetch fresh roles from controller using refresh endpoint via ApiClient
|
|
132
|
+
const authStrategyWithToken = this.buildAuthStrategyWithToken(token, authStrategy);
|
|
133
|
+
const queryParams = this.getRolesQueryParams();
|
|
156
134
|
const roleResult = await this.apiClient.roles.refreshRoles(queryParams, authStrategyWithToken);
|
|
157
135
|
const roles = roleResult.data?.roles || [];
|
|
158
|
-
|
|
159
|
-
await this.cache.set(cacheKey, { roles, timestamp: Date.now() }, this.roleTTL);
|
|
136
|
+
await this.cache.set(`roles:${userId}`, { roles, timestamp: Date.now() }, this.roleTTL);
|
|
160
137
|
return roles;
|
|
161
138
|
}
|
|
162
139
|
catch (error) {
|
|
163
|
-
|
|
164
|
-
const statusCode = error?.statusCode ||
|
|
165
|
-
error?.response?.status;
|
|
166
|
-
console.error("Failed to refresh roles:", {
|
|
167
|
-
method: "POST",
|
|
168
|
-
path: "/api/auth/roles/refresh",
|
|
169
|
-
statusCode,
|
|
170
|
-
ipAddress: "unknown",
|
|
171
|
-
correlationId: error?.correlationId,
|
|
172
|
-
userId: this.extractUserIdFromToken(token) || undefined,
|
|
173
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
174
|
-
stackTrace: error instanceof Error ? error.stack : undefined,
|
|
175
|
-
});
|
|
140
|
+
this.logRoleError(error, token, "refreshRoles", "POST", "/api/auth/roles/refresh");
|
|
176
141
|
return [];
|
|
177
142
|
}
|
|
178
143
|
}
|
|
@@ -183,34 +148,13 @@ class BrowserRoleService {
|
|
|
183
148
|
*/
|
|
184
149
|
async clearRolesCache(token, authStrategy) {
|
|
185
150
|
try {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const authStrategyWithToken = authStrategyToUse
|
|
189
|
-
? { ...authStrategyToUse, bearerToken: token }
|
|
190
|
-
: { methods: ['bearer'], bearerToken: token };
|
|
191
|
-
const userInfo = await this.apiClient.auth.validateToken({ token }, authStrategyWithToken);
|
|
192
|
-
if (!userInfo.data?.user?.id) {
|
|
151
|
+
const userId = await this.resolveUserId(token, authStrategy);
|
|
152
|
+
if (!userId)
|
|
193
153
|
return;
|
|
194
|
-
}
|
|
195
|
-
const userId = userInfo.data.user.id;
|
|
196
|
-
const cacheKey = `roles:${userId}`;
|
|
197
|
-
// Clear from cache
|
|
198
|
-
await this.cache.delete(cacheKey);
|
|
154
|
+
await this.cache.delete(`roles:${userId}`);
|
|
199
155
|
}
|
|
200
156
|
catch (error) {
|
|
201
|
-
|
|
202
|
-
const statusCode = error?.statusCode ||
|
|
203
|
-
error?.response?.status;
|
|
204
|
-
console.error("Failed to clear roles cache:", {
|
|
205
|
-
method: "DELETE",
|
|
206
|
-
path: "/cache/roles",
|
|
207
|
-
statusCode,
|
|
208
|
-
ipAddress: "unknown",
|
|
209
|
-
correlationId: error?.correlationId,
|
|
210
|
-
userId: this.extractUserIdFromToken(token) || undefined,
|
|
211
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
212
|
-
stackTrace: error instanceof Error ? error.stack : undefined,
|
|
213
|
-
});
|
|
157
|
+
this.logRoleError(error, token, "clearRolesCache", "DELETE", "/cache/roles");
|
|
214
158
|
}
|
|
215
159
|
}
|
|
216
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-role.service.js","sourceRoot":"","sources":["../../src/services/browser-role.service.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH,sEAAyD;AACzD,+EAA0E;
|
|
1
|
+
{"version":3,"file":"browser-role.service.js","sourceRoot":"","sources":["../../src/services/browser-role.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.service.d.ts","sourceRoot":"","sources":["../../src/services/cache.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.service.d.ts","sourceRoot":"","sources":["../../src/services/cache.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAS/C,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAC,CAAe;IAC7B,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC;;;OAGG;gBACS,KAAK,CAAC,EAAE,YAAY;IAgBhC;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,uBAAuB;IAe/B;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAsB5C;;;;;;;OAOG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BlE;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc3C;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;;OAGG;IACH,OAAO,IAAI,IAAI;CAOhB"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.CacheService = void 0;
|
|
7
|
+
const error_extractor_1 = require("../utils/error-extractor");
|
|
8
|
+
const console_logger_1 = require("../utils/console-logger");
|
|
7
9
|
class CacheService {
|
|
8
10
|
/**
|
|
9
11
|
* Create a CacheService instance
|
|
@@ -36,6 +38,18 @@ class CacheService {
|
|
|
36
38
|
this.memoryCache.delete(key);
|
|
37
39
|
}
|
|
38
40
|
}
|
|
41
|
+
parseAndCacheRedisValue(key, cached) {
|
|
42
|
+
try {
|
|
43
|
+
const parsed = JSON.parse(cached);
|
|
44
|
+
this.setInMemory(key, parsed, 300);
|
|
45
|
+
return parsed;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
(0, console_logger_1.logErrorWithContext)((0, error_extractor_1.extractErrorInfo)(error, { endpoint: key, method: "parseCache" }), "[CacheService]");
|
|
49
|
+
void this.delete(key);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
39
53
|
/**
|
|
40
54
|
* Get cached value
|
|
41
55
|
* Checks Redis first, then falls back to memory cache
|
|
@@ -44,33 +58,13 @@ class CacheService {
|
|
|
44
58
|
*/
|
|
45
59
|
async get(key) {
|
|
46
60
|
try {
|
|
47
|
-
// Try Redis first if available
|
|
48
61
|
if (this.redis && this.redis.isConnected()) {
|
|
49
62
|
const cached = await this.redis.get(key);
|
|
50
|
-
if (cached)
|
|
51
|
-
|
|
52
|
-
const parsed = JSON.parse(cached);
|
|
53
|
-
// Also cache in memory for faster subsequent access
|
|
54
|
-
// We don't know the TTL from Redis, so we'll use a default 5 minutes
|
|
55
|
-
// This is just for optimization, Redis is still the source of truth
|
|
56
|
-
this.setInMemory(key, parsed, 300);
|
|
57
|
-
return parsed;
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
// Invalid JSON, remove from cache
|
|
61
|
-
console.warn("Failed to parse cached data:", {
|
|
62
|
-
key,
|
|
63
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
64
|
-
});
|
|
65
|
-
await this.delete(key);
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
63
|
+
if (cached)
|
|
64
|
+
return this.parseAndCacheRedisValue(key, cached);
|
|
69
65
|
}
|
|
70
|
-
// Fallback to memory cache
|
|
71
66
|
const entry = this.memoryCache.get(key);
|
|
72
67
|
if (entry) {
|
|
73
|
-
// Check if expired
|
|
74
68
|
if (entry.expiresAt < Date.now()) {
|
|
75
69
|
this.memoryCache.delete(key);
|
|
76
70
|
return null;
|
|
@@ -79,13 +73,9 @@ class CacheService {
|
|
|
79
73
|
}
|
|
80
74
|
return null;
|
|
81
75
|
}
|
|
82
|
-
catch
|
|
83
|
-
// On error, try memory cache
|
|
76
|
+
catch {
|
|
84
77
|
const entry = this.memoryCache.get(key);
|
|
85
|
-
|
|
86
|
-
return entry.value;
|
|
87
|
-
}
|
|
88
|
-
return null;
|
|
78
|
+
return entry && entry.expiresAt >= Date.now() ? entry.value : null;
|
|
89
79
|
}
|
|
90
80
|
}
|
|
91
81
|
/**
|
|
@@ -117,10 +107,7 @@ class CacheService {
|
|
|
117
107
|
return false; // Indicate Redis failed, but memory cache set
|
|
118
108
|
}
|
|
119
109
|
catch (memoryError) {
|
|
120
|
-
|
|
121
|
-
key,
|
|
122
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
123
|
-
});
|
|
110
|
+
(0, console_logger_1.logErrorWithContext)((0, error_extractor_1.extractErrorInfo)(error, { endpoint: key, method: "setCache" }), "[CacheService]");
|
|
124
111
|
return false;
|
|
125
112
|
}
|
|
126
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../src/services/cache.service.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../src/services/cache.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,12 @@ export declare function extractJwtContext(token?: string): {
|
|
|
22
22
|
* @returns Partial LogEntry with environment metadata
|
|
23
23
|
*/
|
|
24
24
|
export declare function extractEnvironmentMetadata(): Partial<LogEntry>;
|
|
25
|
+
export interface GetLogWithRequestOptions {
|
|
26
|
+
applicationContextService: ApplicationContextService;
|
|
27
|
+
generateCorrelationId: () => string;
|
|
28
|
+
maskSensitiveData: boolean;
|
|
29
|
+
clientId?: string;
|
|
30
|
+
}
|
|
25
31
|
/**
|
|
26
32
|
* Get LogEntry object with request context extracted
|
|
27
33
|
* Extracts IP, method, path, userAgent, correlationId, userId from Express Request
|
|
@@ -31,19 +37,16 @@ export declare function extractEnvironmentMetadata(): Partial<LogEntry>;
|
|
|
31
37
|
* @param message - Log message
|
|
32
38
|
* @param level - Optional log level (defaults to 'info')
|
|
33
39
|
* @param context - Optional additional context
|
|
34
|
-
* @param
|
|
35
|
-
* @param generateCorrelationId - Function to generate correlation ID
|
|
36
|
-
* @param maskSensitiveData - Whether to mask sensitive data
|
|
37
|
-
* @param clientId - Client ID to use as fallback when application is empty
|
|
40
|
+
* @param options - Options with applicationContextService, generateCorrelationId, maskSensitiveData, clientId
|
|
38
41
|
* @returns Complete LogEntry object with all request context extracted
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```typescript
|
|
42
|
-
* const logEntry = getLogWithRequest(req, 'User action', 'info', { action: 'login' }, applicationContextService, generateCorrelationId, true, config.clientId);
|
|
43
|
-
* await myCustomLogger.save(logEntry);
|
|
44
|
-
* ```
|
|
45
42
|
*/
|
|
46
|
-
export declare function getLogWithRequest(req: Request, message: string, level: LogEntry["level"] | undefined, context: Record<string, unknown> | undefined,
|
|
43
|
+
export declare function getLogWithRequest(req: Request, message: string, level: LogEntry["level"] | undefined, context: Record<string, unknown> | undefined, options: GetLogWithRequestOptions): LogEntry;
|
|
44
|
+
export interface GetWithContextOptions {
|
|
45
|
+
applicationContextService: ApplicationContextService;
|
|
46
|
+
generateCorrelationId: () => string;
|
|
47
|
+
maskSensitiveData: boolean;
|
|
48
|
+
clientId?: string;
|
|
49
|
+
}
|
|
47
50
|
/**
|
|
48
51
|
* Get LogEntry object with provided context
|
|
49
52
|
* Generates correlation ID automatically and extracts metadata from environment
|
|
@@ -51,17 +54,14 @@ export declare function getLogWithRequest(req: Request, message: string, level:
|
|
|
51
54
|
* @param context - Context object to include in logs
|
|
52
55
|
* @param message - Log message
|
|
53
56
|
* @param level - Optional log level (defaults to 'info')
|
|
54
|
-
* @param
|
|
55
|
-
* @param generateCorrelationId - Function to generate correlation ID
|
|
56
|
-
* @param maskSensitiveData - Whether to mask sensitive data
|
|
57
|
-
* @param clientId - Client ID to use as fallback when application is empty
|
|
57
|
+
* @param options - Options with applicationContextService, generateCorrelationId, maskSensitiveData, clientId
|
|
58
58
|
* @returns Complete LogEntry object
|
|
59
59
|
*
|
|
60
60
|
* @example
|
|
61
61
|
* ```typescript
|
|
62
|
-
* const logEntry = getWithContext({ operation: 'sync' }, 'Sync started', 'info', applicationContextService, generateCorrelationId, true, config.clientId);
|
|
62
|
+
* const logEntry = getWithContext({ operation: 'sync' }, 'Sync started', 'info', { applicationContextService, generateCorrelationId, maskSensitiveData: true, clientId: config.clientId });
|
|
63
63
|
* await myCustomLogger.save(logEntry);
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
|
66
|
-
export declare function getWithContext(context: Record<string, unknown>, message: string, level: LogEntry["level"] | undefined,
|
|
66
|
+
export declare function getWithContext(context: Record<string, unknown>, message: string, level: LogEntry["level"] | undefined, options: GetWithContextOptions): LogEntry;
|
|
67
67
|
//# sourceMappingURL=logger-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-context.d.ts","sourceRoot":"","sources":["../../../src/services/logger/logger-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CA0BA;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAAC,QAAQ,CAAC,CAuB9D;AAED
|
|
1
|
+
{"version":3,"file":"logger-context.d.ts","sourceRoot":"","sources":["../../../src/services/logger/logger-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CA0BA;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAAC,QAAQ,CAAC,CAuB9D;AAED,MAAM,WAAW,wBAAwB;IACvC,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,qBAAqB,EAAE,MAAM,MAAM,CAAC;IACpC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAS,EACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC5C,OAAO,EAAE,wBAAwB,GAChC,QAAQ,CA+CV;AAED,MAAM,WAAW,qBAAqB;IACpC,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,qBAAqB,EAAE,MAAM,MAAM,CAAC;IACpC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAS,EACjC,OAAO,EAAE,qBAAqB,GAC7B,QAAQ,CAsBV"}
|
|
@@ -72,19 +72,11 @@ function extractEnvironmentMetadata() {
|
|
|
72
72
|
* @param message - Log message
|
|
73
73
|
* @param level - Optional log level (defaults to 'info')
|
|
74
74
|
* @param context - Optional additional context
|
|
75
|
-
* @param
|
|
76
|
-
* @param generateCorrelationId - Function to generate correlation ID
|
|
77
|
-
* @param maskSensitiveData - Whether to mask sensitive data
|
|
78
|
-
* @param clientId - Client ID to use as fallback when application is empty
|
|
75
|
+
* @param options - Options with applicationContextService, generateCorrelationId, maskSensitiveData, clientId
|
|
79
76
|
* @returns Complete LogEntry object with all request context extracted
|
|
80
|
-
*
|
|
81
|
-
* @example
|
|
82
|
-
* ```typescript
|
|
83
|
-
* const logEntry = getLogWithRequest(req, 'User action', 'info', { action: 'login' }, applicationContextService, generateCorrelationId, true, config.clientId);
|
|
84
|
-
* await myCustomLogger.save(logEntry);
|
|
85
|
-
* ```
|
|
86
77
|
*/
|
|
87
|
-
function getLogWithRequest(req, message, level = "info", context,
|
|
78
|
+
function getLogWithRequest(req, message, level = "info", context, options) {
|
|
79
|
+
const { applicationContextService, generateCorrelationId, maskSensitiveData, clientId, } = options;
|
|
88
80
|
const requestContext = (0, request_context_1.extractRequestContext)(req);
|
|
89
81
|
const jwtContext = extractJwtContext(req.headers.authorization?.replace("Bearer ", ""));
|
|
90
82
|
const metadata = extractEnvironmentMetadata();
|
|
@@ -125,19 +117,17 @@ function getLogWithRequest(req, message, level = "info", context, applicationCon
|
|
|
125
117
|
* @param context - Context object to include in logs
|
|
126
118
|
* @param message - Log message
|
|
127
119
|
* @param level - Optional log level (defaults to 'info')
|
|
128
|
-
* @param
|
|
129
|
-
* @param generateCorrelationId - Function to generate correlation ID
|
|
130
|
-
* @param maskSensitiveData - Whether to mask sensitive data
|
|
131
|
-
* @param clientId - Client ID to use as fallback when application is empty
|
|
120
|
+
* @param options - Options with applicationContextService, generateCorrelationId, maskSensitiveData, clientId
|
|
132
121
|
* @returns Complete LogEntry object
|
|
133
122
|
*
|
|
134
123
|
* @example
|
|
135
124
|
* ```typescript
|
|
136
|
-
* const logEntry = getWithContext({ operation: 'sync' }, 'Sync started', 'info', applicationContextService, generateCorrelationId, true, config.clientId);
|
|
125
|
+
* const logEntry = getWithContext({ operation: 'sync' }, 'Sync started', 'info', { applicationContextService, generateCorrelationId, maskSensitiveData: true, clientId: config.clientId });
|
|
137
126
|
* await myCustomLogger.save(logEntry);
|
|
138
127
|
* ```
|
|
139
128
|
*/
|
|
140
|
-
function getWithContext(context, message, level = "info",
|
|
129
|
+
function getWithContext(context, message, level = "info", options) {
|
|
130
|
+
const { applicationContextService, generateCorrelationId, maskSensitiveData, clientId } = options;
|
|
141
131
|
const metadata = extractEnvironmentMetadata();
|
|
142
132
|
const correlationId = generateCorrelationId();
|
|
143
133
|
const appContext = applicationContextService.getApplicationContext();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-context.js","sourceRoot":"","sources":["../../../src/services/logger/logger-context.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAcH,8CAgCC;AAMD,gEAuBC;
|
|
1
|
+
{"version":3,"file":"logger-context.js","sourceRoot":"","sources":["../../../src/services/logger/logger-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP logging utilities for LoggerService
|
|
3
|
+
* Extracted to keep logger.service.ts under max-lines limit
|
|
4
|
+
*/
|
|
5
|
+
import { LogEntry } from "../../types/config.types";
|
|
6
|
+
import type { ApiClient } from "../../api";
|
|
7
|
+
export declare function isAuthError(error: unknown): boolean;
|
|
8
|
+
export declare function sendAuditLogPayload(apiClient: ApiClient, logEntry: LogEntry, enrichedContext: Record<string, unknown>, logType: "audit" | "error" | "general", logLevel: string): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=logger-http-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-http-utils.d.ts","sourceRoot":"","sources":["../../../src/services/logger/logger-http-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAInD;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HTTP logging utilities for LoggerService
|
|
4
|
+
* Extracted to keep logger.service.ts under max-lines limit
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.isAuthError = isAuthError;
|
|
8
|
+
exports.sendAuditLogPayload = sendAuditLogPayload;
|
|
9
|
+
function isAuthError(error) {
|
|
10
|
+
if (!(error instanceof Error))
|
|
11
|
+
return false;
|
|
12
|
+
if (error.message.includes("401") || error.message.includes("Unauthorized"))
|
|
13
|
+
return true;
|
|
14
|
+
return error.statusCode === 401;
|
|
15
|
+
}
|
|
16
|
+
async function sendAuditLogPayload(apiClient, logEntry, enrichedContext, logType, logLevel) {
|
|
17
|
+
const auditResource = enrichedContext.resource;
|
|
18
|
+
const providedOldValues = enrichedContext.oldValues;
|
|
19
|
+
const providedNewValues = enrichedContext.newValues;
|
|
20
|
+
const entityType = enrichedContext.entityType ||
|
|
21
|
+
(auditResource?.startsWith("/api/") ? "API Endpoint" : "HTTP Request");
|
|
22
|
+
const entityId = enrichedContext.entityId || auditResource || "unknown";
|
|
23
|
+
const action = enrichedContext.action || "unknown";
|
|
24
|
+
delete enrichedContext.action;
|
|
25
|
+
delete enrichedContext.resource;
|
|
26
|
+
delete enrichedContext.entityType;
|
|
27
|
+
delete enrichedContext.entityId;
|
|
28
|
+
delete enrichedContext.oldValues;
|
|
29
|
+
delete enrichedContext.newValues;
|
|
30
|
+
await apiClient.logs.createLog({
|
|
31
|
+
type: logType,
|
|
32
|
+
data: {
|
|
33
|
+
level: logLevel,
|
|
34
|
+
message: logEntry.message,
|
|
35
|
+
context: enrichedContext,
|
|
36
|
+
correlationId: logEntry.correlationId,
|
|
37
|
+
entityType,
|
|
38
|
+
entityId,
|
|
39
|
+
action,
|
|
40
|
+
oldValues: providedOldValues,
|
|
41
|
+
newValues: providedNewValues,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=logger-http-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-http-utils.js","sourceRoot":"","sources":["../../../src/services/logger/logger-http-utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAKH,kCAIC;AAED,kDAoCC;AA1CD,SAAgB,WAAW,CAAC,KAAc;IACxC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IACzF,OAAQ,KAAiC,CAAC,UAAU,KAAK,GAAG,CAAC;AAC/D,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,SAAoB,EACpB,QAAkB,EAClB,eAAwC,EACxC,OAAsC,EACtC,QAAgB;IAEhB,MAAM,aAAa,GAAG,eAAe,CAAC,QAA8B,CAAC;IACrE,MAAM,iBAAiB,GAAG,eAAe,CAAC,SAAgD,CAAC;IAC3F,MAAM,iBAAiB,GAAG,eAAe,CAAC,SAAgD,CAAC;IAC3F,MAAM,UAAU,GAAI,eAAe,CAAC,UAAqB;QACvD,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAI,eAAe,CAAC,QAAmB,IAAI,aAAa,IAAI,SAAS,CAAC;IACpF,MAAM,MAAM,GAAI,eAAe,CAAC,MAAiB,IAAI,SAAS,CAAC;IAE/D,OAAO,eAAe,CAAC,MAAM,CAAC;IAC9B,OAAO,eAAe,CAAC,QAAQ,CAAC;IAChC,OAAO,eAAe,CAAC,UAAU,CAAC;IAClC,OAAO,eAAe,CAAC,QAAQ,CAAC;IAChC,OAAO,eAAe,CAAC,SAAS,CAAC;IACjC,OAAO,eAAe,CAAC,SAAS,CAAC;IAEjC,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;QAC7B,IAAI,EAAE,OAAO;QACb,IAAI,EAAE;YACJ,KAAK,EAAE,QAAsC;YAC7C,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,eAAe;YACxB,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,UAAU;YACV,QAAQ;YACR,MAAM;YACN,SAAS,EAAE,iBAAiB;YAC5B,SAAS,EAAE,iBAAiB;SAC7B;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -38,6 +38,7 @@ export declare class LoggerService extends EventEmitter {
|
|
|
38
38
|
private static readonly MAX_FAILURES;
|
|
39
39
|
private static readonly DISABLE_DURATION_MS;
|
|
40
40
|
constructor(httpClient: HttpClient, redis: RedisService);
|
|
41
|
+
setHttpClient(httpClient: HttpClient): void;
|
|
41
42
|
/**
|
|
42
43
|
* Set ApiClient instance (used to resolve circular dependency)
|
|
43
44
|
* @param apiClient - ApiClient instance
|
|
@@ -113,10 +114,6 @@ export declare class LoggerService extends EventEmitter {
|
|
|
113
114
|
* Build enriched context for API payload.
|
|
114
115
|
*/
|
|
115
116
|
private buildEnrichedContext;
|
|
116
|
-
/**
|
|
117
|
-
* Detect auth-related HTTP errors for circuit breaker logic.
|
|
118
|
-
*/
|
|
119
|
-
private isAuthError;
|
|
120
117
|
/**
|
|
121
118
|
* Send log entry to controller via API client.
|
|
122
119
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../src/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../src/services/logger/logger.service.ts"],"names":[],"mappings":"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"}
|