@aifabrix/miso-client 3.5.0 → 3.8.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 +263 -0
- package/dist/api/auth-cache.api.d.ts.map +1 -1
- package/dist/api/auth-cache.api.js +27 -5
- package/dist/api/auth-cache.api.js.map +1 -1
- package/dist/api/auth-login.api.d.ts.map +1 -1
- package/dist/api/auth-login.api.js +49 -6
- package/dist/api/auth-login.api.js.map +1 -1
- package/dist/api/auth-token.api.d.ts.map +1 -1
- package/dist/api/auth-token.api.js +99 -7
- package/dist/api/auth-token.api.js.map +1 -1
- package/dist/api/auth-user.api.d.ts.map +1 -1
- package/dist/api/auth-user.api.js +22 -4
- package/dist/api/auth-user.api.js.map +1 -1
- package/dist/api/auth.api.d.ts +2 -9
- package/dist/api/auth.api.d.ts.map +1 -1
- package/dist/api/auth.api.js +1 -66
- package/dist/api/auth.api.js.map +1 -1
- package/dist/api/logs-create.api.d.ts.map +1 -1
- package/dist/api/logs-create.api.js +57 -4
- package/dist/api/logs-create.api.js.map +1 -1
- package/dist/api/logs-export.api.d.ts.map +1 -1
- package/dist/api/logs-export.api.js +7 -1
- package/dist/api/logs-export.api.js.map +1 -1
- package/dist/api/logs-list.api.d.ts.map +1 -1
- package/dist/api/logs-list.api.js +32 -6
- package/dist/api/logs-list.api.js.map +1 -1
- package/dist/api/logs-stats.api.d.ts.map +1 -1
- package/dist/api/logs-stats.api.js +22 -4
- package/dist/api/logs-stats.api.js.map +1 -1
- package/dist/api/permissions.api.d.ts +2 -1
- package/dist/api/permissions.api.d.ts.map +1 -1
- package/dist/api/permissions.api.js +16 -5
- package/dist/api/permissions.api.js.map +1 -1
- package/dist/api/roles.api.d.ts +2 -1
- package/dist/api/roles.api.d.ts.map +1 -1
- package/dist/api/roles.api.js +16 -5
- package/dist/api/roles.api.js.map +1 -1
- package/dist/api/types/logs.types.d.ts +44 -7
- package/dist/api/types/logs.types.d.ts.map +1 -1
- package/dist/express/client-token-endpoint.d.ts.map +1 -1
- package/dist/express/client-token-endpoint.js +42 -5
- 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 +32 -8
- package/dist/express/error-handler.js.map +1 -1
- package/dist/express/index.d.ts +1 -0
- package/dist/express/index.d.ts.map +1 -1
- package/dist/express/index.js +4 -1
- package/dist/express/index.js.map +1 -1
- package/dist/express/logger-context.middleware.d.ts +46 -0
- package/dist/express/logger-context.middleware.d.ts.map +1 -0
- package/dist/express/logger-context.middleware.js +99 -0
- package/dist/express/logger-context.middleware.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -5
- package/dist/index.js.map +1 -1
- package/dist/services/application-context.service.d.ts +48 -0
- package/dist/services/application-context.service.d.ts.map +1 -0
- package/dist/services/application-context.service.js +141 -0
- package/dist/services/application-context.service.js.map +1 -0
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +97 -8
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/browser-permission.service.d.ts +5 -0
- package/dist/services/browser-permission.service.d.ts.map +1 -1
- package/dist/services/browser-permission.service.js +39 -2
- package/dist/services/browser-permission.service.js.map +1 -1
- package/dist/services/browser-role.service.d.ts +5 -0
- package/dist/services/browser-role.service.d.ts.map +1 -1
- package/dist/services/browser-role.service.js +45 -2
- package/dist/services/browser-role.service.js.map +1 -1
- package/dist/services/logger/index.d.ts +10 -0
- package/dist/services/logger/index.d.ts.map +1 -0
- package/dist/services/logger/index.js +22 -0
- package/dist/services/logger/index.js.map +1 -0
- package/dist/services/logger/logger-chain.d.ts +90 -0
- package/dist/services/logger/logger-chain.d.ts.map +1 -0
- package/dist/services/logger/logger-chain.js +169 -0
- package/dist/services/logger/logger-chain.js.map +1 -0
- package/dist/services/logger/logger-context-storage.d.ts +73 -0
- package/dist/services/logger/logger-context-storage.d.ts.map +1 -0
- package/dist/services/logger/logger-context-storage.js +86 -0
- package/dist/services/logger/logger-context-storage.js.map +1 -0
- package/dist/services/logger/logger-context.d.ts +89 -0
- package/dist/services/logger/logger-context.d.ts.map +1 -0
- package/dist/services/logger/logger-context.js +208 -0
- package/dist/services/logger/logger-context.js.map +1 -0
- package/dist/services/logger/logger.service.d.ts +186 -0
- package/dist/services/logger/logger.service.d.ts.map +1 -0
- package/dist/services/logger/logger.service.js +423 -0
- package/dist/services/logger/logger.service.js.map +1 -0
- package/dist/services/logger/unified-logger.factory.d.ts +87 -0
- package/dist/services/logger/unified-logger.factory.d.ts.map +1 -0
- package/dist/services/logger/unified-logger.factory.js +120 -0
- package/dist/services/logger/unified-logger.factory.js.map +1 -0
- package/dist/services/logger/unified-logger.service.d.ts +89 -0
- package/dist/services/logger/unified-logger.service.d.ts.map +1 -0
- package/dist/services/logger/unified-logger.service.js +186 -0
- package/dist/services/logger/unified-logger.service.js.map +1 -0
- package/dist/services/permission.service.d.ts +1 -0
- package/dist/services/permission.service.d.ts.map +1 -1
- package/dist/services/permission.service.js +10 -2
- package/dist/services/permission.service.js.map +1 -1
- package/dist/services/role.service.d.ts +1 -0
- package/dist/services/role.service.d.ts.map +1 -1
- package/dist/services/role.service.js +10 -2
- package/dist/services/role.service.js.map +1 -1
- package/dist/types/filter.types.d.ts +6 -6
- package/dist/types/filter.types.d.ts.map +1 -1
- package/dist/types/filter.types.js +14 -5
- package/dist/types/filter.types.js.map +1 -1
- package/dist/utils/console-logger.d.ts +21 -0
- package/dist/utils/console-logger.d.ts.map +1 -0
- package/dist/utils/console-logger.js +58 -0
- package/dist/utils/console-logger.js.map +1 -0
- package/dist/utils/controller-url-resolver.d.ts.map +1 -1
- package/dist/utils/controller-url-resolver.js +5 -0
- package/dist/utils/controller-url-resolver.js.map +1 -1
- package/dist/utils/data-client-auth.d.ts.map +1 -1
- package/dist/utils/data-client-auth.js +34 -2
- 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 +59 -3
- package/dist/utils/data-client-auto-init.js.map +1 -1
- package/dist/utils/data-client-request.d.ts.map +1 -1
- package/dist/utils/data-client-request.js +78 -2
- package/dist/utils/data-client-request.js.map +1 -1
- package/dist/utils/data-client.d.ts.map +1 -1
- package/dist/utils/data-client.js +10 -7
- 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 +37 -57
- package/dist/utils/environment-token.js.map +1 -1
- package/dist/utils/error-extractor.d.ts +52 -0
- package/dist/utils/error-extractor.d.ts.map +1 -0
- package/dist/utils/error-extractor.js +136 -0
- package/dist/utils/error-extractor.js.map +1 -0
- package/dist/utils/filter.utils.d.ts +115 -3
- package/dist/utils/filter.utils.d.ts.map +1 -1
- package/dist/utils/filter.utils.js +298 -27
- package/dist/utils/filter.utils.js.map +1 -1
- package/dist/utils/http-client-audit.d.ts +1 -1
- package/dist/utils/http-client-audit.d.ts.map +1 -1
- package/dist/utils/http-client.d.ts +1 -1
- package/dist/utils/http-client.d.ts.map +1 -1
- package/dist/utils/internal-http-client.d.ts +4 -0
- package/dist/utils/internal-http-client.d.ts.map +1 -1
- package/dist/utils/internal-http-client.js +190 -11
- 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 +2 -4
- package/dist/utils/response-validator.js.map +1 -1
- package/dist/utils/token-utils.d.ts.map +1 -1
- package/dist/utils/token-utils.js +75 -4
- package/dist/utils/token-utils.js.map +1 -1
- package/package.json +2 -1
- package/dist/services/logger.service.d.ts +0 -191
- package/dist/services/logger.service.d.ts.map +0 -1
- package/dist/services/logger.service.js +0 -488
- package/dist/services/logger.service.js.map +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Logger Service
|
|
3
|
+
* Provides minimal API (1-3 parameters max) with automatic context extraction
|
|
4
|
+
* Wraps LoggerService with simplified interface
|
|
5
|
+
*/
|
|
6
|
+
import { LoggerService } from "./logger.service";
|
|
7
|
+
import { LoggerContextStorage } from "./logger-context-storage";
|
|
8
|
+
/**
|
|
9
|
+
* Unified Logger Interface
|
|
10
|
+
* Minimal API with automatic context extraction
|
|
11
|
+
*/
|
|
12
|
+
export interface UnifiedLogger {
|
|
13
|
+
/**
|
|
14
|
+
* Log info message
|
|
15
|
+
* @param message - Info message
|
|
16
|
+
*/
|
|
17
|
+
info(message: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Log warning message
|
|
20
|
+
* @param message - Warning message
|
|
21
|
+
*/
|
|
22
|
+
warn(message: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Log debug message
|
|
25
|
+
* @param message - Debug message
|
|
26
|
+
*/
|
|
27
|
+
debug(message: string): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Log error message
|
|
30
|
+
* @param message - Error message
|
|
31
|
+
* @param error - Optional error object (auto-extracts stack trace)
|
|
32
|
+
*/
|
|
33
|
+
error(message: string, error?: unknown): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Log audit event
|
|
36
|
+
* @param action - Action performed (e.g., 'CREATE', 'UPDATE', 'DELETE')
|
|
37
|
+
* @param resource - Resource type (e.g., 'User', 'Tenant')
|
|
38
|
+
* @param entityId - Optional entity ID (defaults to 'unknown')
|
|
39
|
+
* @param oldValues - Optional old values for UPDATE operations (ISO 27001 requirement)
|
|
40
|
+
* @param newValues - Optional new values for CREATE/UPDATE operations (ISO 27001 requirement)
|
|
41
|
+
*/
|
|
42
|
+
audit(action: string, resource: string, entityId?: string, oldValues?: object, newValues?: object): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Unified Logger Service Implementation
|
|
46
|
+
* Wraps LoggerService with minimal API and automatic context extraction
|
|
47
|
+
*/
|
|
48
|
+
export declare class UnifiedLoggerService implements UnifiedLogger {
|
|
49
|
+
private loggerService;
|
|
50
|
+
private contextStorage;
|
|
51
|
+
constructor(loggerService: LoggerService, contextStorage: LoggerContextStorage);
|
|
52
|
+
/**
|
|
53
|
+
* Get current context from AsyncLocalStorage
|
|
54
|
+
* Falls back to empty context if not available
|
|
55
|
+
*/
|
|
56
|
+
private getContext;
|
|
57
|
+
/**
|
|
58
|
+
* Build ClientLoggingOptions from context
|
|
59
|
+
* Extracts all relevant fields from LoggerContext
|
|
60
|
+
*/
|
|
61
|
+
private buildLoggingOptions;
|
|
62
|
+
/**
|
|
63
|
+
* Extract error context from error object
|
|
64
|
+
* Extracts stack trace, error name, and error message
|
|
65
|
+
*/
|
|
66
|
+
private extractErrorContext;
|
|
67
|
+
/**
|
|
68
|
+
* Log info message
|
|
69
|
+
*/
|
|
70
|
+
info(message: string): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Log warning message
|
|
73
|
+
* Note: LoggerService doesn't have a warn method, so we use info level
|
|
74
|
+
*/
|
|
75
|
+
warn(message: string): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Log debug message
|
|
78
|
+
*/
|
|
79
|
+
debug(message: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Log error message with optional error object
|
|
82
|
+
*/
|
|
83
|
+
error(message: string, error?: unknown): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Log audit event
|
|
86
|
+
*/
|
|
87
|
+
audit(action: string, resource: string, entityId?: string, oldValues?: object, newValues?: object): Promise<void>;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=unified-logger.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-logger.service.d.ts","sourceRoot":"","sources":["../../../src/services/logger/unified-logger.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAwB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAiB,MAAM,0BAA0B,CAAC;AAG/E;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;OAGG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;;;;;;OAOG;IACH,KAAK,CACH,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IAEtD,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,cAAc;gBADd,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,oBAAoB;IAG9C;;;OAGG;IACH,OAAO,CAAC,UAAU;IAIlB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoC3B;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1C;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1C;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B5D;;OAEG;IACG,KAAK,CACT,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;CAuBjB"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unified Logger Service
|
|
4
|
+
* Provides minimal API (1-3 parameters max) with automatic context extraction
|
|
5
|
+
* Wraps LoggerService with simplified interface
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.UnifiedLoggerService = void 0;
|
|
9
|
+
const logger_context_1 = require("./logger-context");
|
|
10
|
+
/**
|
|
11
|
+
* Unified Logger Service Implementation
|
|
12
|
+
* Wraps LoggerService with minimal API and automatic context extraction
|
|
13
|
+
*/
|
|
14
|
+
class UnifiedLoggerService {
|
|
15
|
+
constructor(loggerService, contextStorage) {
|
|
16
|
+
this.loggerService = loggerService;
|
|
17
|
+
this.contextStorage = contextStorage;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get current context from AsyncLocalStorage
|
|
21
|
+
* Falls back to empty context if not available
|
|
22
|
+
*/
|
|
23
|
+
getContext() {
|
|
24
|
+
return this.contextStorage.getContext() || {};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build ClientLoggingOptions from context
|
|
28
|
+
* Extracts all relevant fields from LoggerContext
|
|
29
|
+
*/
|
|
30
|
+
buildLoggingOptions(context) {
|
|
31
|
+
const options = {
|
|
32
|
+
ipAddress: context.ipAddress,
|
|
33
|
+
userAgent: context.userAgent,
|
|
34
|
+
correlationId: context.correlationId,
|
|
35
|
+
userId: context.userId,
|
|
36
|
+
sessionId: context.sessionId,
|
|
37
|
+
requestId: context.requestId,
|
|
38
|
+
applicationId: context.applicationId,
|
|
39
|
+
token: context.token,
|
|
40
|
+
maskSensitiveData: true, // Default: mask sensitive data
|
|
41
|
+
};
|
|
42
|
+
// Get application context service from logger service
|
|
43
|
+
const applicationContextService = this.loggerService.getApplicationContextService();
|
|
44
|
+
const appContext = applicationContextService.getApplicationContext();
|
|
45
|
+
// Extract JWT context if token is available
|
|
46
|
+
if (context.token) {
|
|
47
|
+
const jwtContext = (0, logger_context_1.extractJwtContext)(context.token);
|
|
48
|
+
// Merge JWT context, but don't override explicit values
|
|
49
|
+
if (!options.userId && jwtContext.userId) {
|
|
50
|
+
options.userId = jwtContext.userId;
|
|
51
|
+
}
|
|
52
|
+
if (!options.sessionId && jwtContext.sessionId) {
|
|
53
|
+
options.sessionId = jwtContext.sessionId;
|
|
54
|
+
}
|
|
55
|
+
// applicationId priority: explicit > user JWT > client token
|
|
56
|
+
if (!options.applicationId && jwtContext.applicationId) {
|
|
57
|
+
options.applicationId = jwtContext.applicationId;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// If still no applicationId, try client token
|
|
61
|
+
if (!options.applicationId && appContext.applicationId) {
|
|
62
|
+
options.applicationId = appContext.applicationId;
|
|
63
|
+
}
|
|
64
|
+
return options;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Extract error context from error object
|
|
68
|
+
* Extracts stack trace, error name, and error message
|
|
69
|
+
*/
|
|
70
|
+
extractErrorContext(error) {
|
|
71
|
+
if (!error) {
|
|
72
|
+
return {};
|
|
73
|
+
}
|
|
74
|
+
if (error instanceof Error) {
|
|
75
|
+
return {
|
|
76
|
+
stackTrace: error.stack,
|
|
77
|
+
errorName: error.name,
|
|
78
|
+
errorMessage: error.message,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
if (typeof error === "string") {
|
|
82
|
+
return {
|
|
83
|
+
errorMessage: error,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Try to extract from object
|
|
87
|
+
if (typeof error === "object" && error !== null) {
|
|
88
|
+
const errorObj = error;
|
|
89
|
+
return {
|
|
90
|
+
stackTrace: errorObj.stack,
|
|
91
|
+
errorName: errorObj.name,
|
|
92
|
+
errorMessage: errorObj.message,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Log info message
|
|
99
|
+
*/
|
|
100
|
+
async info(message) {
|
|
101
|
+
try {
|
|
102
|
+
const context = this.getContext();
|
|
103
|
+
const options = this.buildLoggingOptions(context);
|
|
104
|
+
await this.loggerService.info(message, undefined, options);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
// Error handling in logger should be silent (catch and swallow)
|
|
108
|
+
// Per Logger Chain Pattern
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Log warning message
|
|
113
|
+
* Note: LoggerService doesn't have a warn method, so we use info level
|
|
114
|
+
*/
|
|
115
|
+
async warn(message) {
|
|
116
|
+
try {
|
|
117
|
+
const context = this.getContext();
|
|
118
|
+
const options = this.buildLoggingOptions(context);
|
|
119
|
+
// LoggerService doesn't have warn, use info level
|
|
120
|
+
await this.loggerService.info(message, undefined, options);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
// Error handling in logger should be silent (catch and swallow)
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Log debug message
|
|
128
|
+
*/
|
|
129
|
+
async debug(message) {
|
|
130
|
+
try {
|
|
131
|
+
const context = this.getContext();
|
|
132
|
+
const options = this.buildLoggingOptions(context);
|
|
133
|
+
await this.loggerService.debug(message, undefined, options);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
// Error handling in logger should be silent (catch and swallow)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Log error message with optional error object
|
|
141
|
+
*/
|
|
142
|
+
async error(message, error) {
|
|
143
|
+
try {
|
|
144
|
+
const context = this.getContext();
|
|
145
|
+
const options = this.buildLoggingOptions(context);
|
|
146
|
+
const errorContext = this.extractErrorContext(error);
|
|
147
|
+
// Build context with error details
|
|
148
|
+
const logContext = {};
|
|
149
|
+
if (errorContext.errorName) {
|
|
150
|
+
logContext.errorName = errorContext.errorName;
|
|
151
|
+
}
|
|
152
|
+
if (errorContext.errorMessage) {
|
|
153
|
+
logContext.errorMessage = errorContext.errorMessage;
|
|
154
|
+
}
|
|
155
|
+
await this.loggerService.error(message, logContext, errorContext.stackTrace, options);
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
// Error handling in logger should be silent (catch and swallow)
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Log audit event
|
|
163
|
+
*/
|
|
164
|
+
async audit(action, resource, entityId, oldValues, newValues) {
|
|
165
|
+
try {
|
|
166
|
+
const context = this.getContext();
|
|
167
|
+
const options = this.buildLoggingOptions(context);
|
|
168
|
+
// Build audit context with entityId, oldValues, newValues
|
|
169
|
+
const auditContext = {
|
|
170
|
+
entityId: entityId || "unknown",
|
|
171
|
+
};
|
|
172
|
+
if (oldValues !== undefined) {
|
|
173
|
+
auditContext.oldValues = oldValues;
|
|
174
|
+
}
|
|
175
|
+
if (newValues !== undefined) {
|
|
176
|
+
auditContext.newValues = newValues;
|
|
177
|
+
}
|
|
178
|
+
await this.loggerService.audit(action, resource, auditContext, options);
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
// Error handling in logger should be silent (catch and swallow)
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.UnifiedLoggerService = UnifiedLoggerService;
|
|
186
|
+
//# sourceMappingURL=unified-logger.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-logger.service.js","sourceRoot":"","sources":["../../../src/services/logger/unified-logger.service.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,qDAAqD;AAiDrD;;;GAGG;AACH,MAAa,oBAAoB;IAC/B,YACU,aAA4B,EAC5B,cAAoC;QADpC,kBAAa,GAAb,aAAa,CAAe;QAC5B,mBAAc,GAAd,cAAc,CAAsB;IAC3C,CAAC;IAEJ;;;OAGG;IACK,UAAU;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,OAAsB;QAChD,MAAM,OAAO,GAAyB;YACpC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,iBAAiB,EAAE,IAAI,EAAE,+BAA+B;SACzD,CAAC;QAEF,sDAAsD;QACtD,MAAM,yBAAyB,GAAG,IAAI,CAAC,aAAa,CAAC,4BAA4B,EAAE,CAAC;QACpF,MAAM,UAAU,GAAG,yBAAyB,CAAC,qBAAqB,EAAE,CAAC;QAErE,4CAA4C;QAC5C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,IAAA,kCAAiB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpD,wDAAwD;YACxD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACzC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBAC/C,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YAC3C,CAAC;YACD,6DAA6D;YAC7D,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBACvD,OAAO,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;YACnD,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YACvD,OAAO,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;QACnD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,KAAe;QAKzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,KAAK;gBACvB,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,YAAY,EAAE,KAAK,CAAC,OAAO;aAC5B,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO;gBACL,YAAY,EAAE,KAAK;aACpB,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,KAAgC,CAAC;YAClD,OAAO;gBACL,UAAU,EAAE,QAAQ,CAAC,KAA2B;gBAChD,SAAS,EAAE,QAAQ,CAAC,IAA0B;gBAC9C,YAAY,EAAE,QAAQ,CAAC,OAA6B;aACrD,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gEAAgE;YAChE,2BAA2B;QAC7B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAClD,kDAAkD;YAClD,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gEAAgE;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gEAAgE;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,KAAe;QAC1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAErD,mCAAmC;YACnC,MAAM,UAAU,GAA4B,EAAE,CAAC;YAC/C,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC3B,UAAU,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;YAChD,CAAC;YACD,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;gBAC9B,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;YACtD,CAAC;YAED,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAC5B,OAAO,EACP,UAAU,EACV,YAAY,CAAC,UAAU,EACvB,OAAO,CACR,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,gEAAgE;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,MAAc,EACd,QAAgB,EAChB,QAAiB,EACjB,SAAkB,EAClB,SAAkB;QAElB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAElD,0DAA0D;YAC1D,MAAM,YAAY,GAA4B;gBAC5C,QAAQ,EAAE,QAAQ,IAAI,SAAS;aAChC,CAAC;YAEF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;YACrC,CAAC;YAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;YACrC,CAAC;YAED,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gEAAgE;QAClE,CAAC;IACH,CAAC;CACF;AA1MD,oDA0MC"}
|
|
@@ -11,6 +11,7 @@ export declare class PermissionService {
|
|
|
11
11
|
private cache;
|
|
12
12
|
private config;
|
|
13
13
|
private permissionTTL;
|
|
14
|
+
private applicationContextService;
|
|
14
15
|
constructor(httpClient: HttpClient, apiClient: ApiClient, cache: CacheService);
|
|
15
16
|
/**
|
|
16
17
|
* Extract userId from JWT token without making API call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.service.d.ts","sourceRoot":"","sources":["../../src/services/permission.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAEL,YAAY,EAEb,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"permission.service.d.ts","sourceRoot":"","sources":["../../src/services/permission.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAEL,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAS/B,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,yBAAyB,CAA4B;gBAEjD,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY;IAS7E;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;;;OAKG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IAiEpB;;;;;OAKG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;;OAKG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAOnB;;;;;OAKG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAOnB;;;;OAIG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IA+CpB;;;;OAIG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,IAAI,CAAC;CA2BjB"}
|
|
@@ -8,6 +8,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.PermissionService = void 0;
|
|
10
10
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
11
|
+
const application_context_service_1 = require("./application-context.service");
|
|
11
12
|
class PermissionService {
|
|
12
13
|
constructor(httpClient, apiClient, cache) {
|
|
13
14
|
this.config = httpClient.config;
|
|
@@ -15,6 +16,7 @@ class PermissionService {
|
|
|
15
16
|
this.httpClient = httpClient;
|
|
16
17
|
this.apiClient = apiClient;
|
|
17
18
|
this.permissionTTL = this.config.cache?.permissionTTL || 900; // 15 minutes default
|
|
19
|
+
this.applicationContextService = new application_context_service_1.ApplicationContextService(httpClient);
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
22
|
* Extract userId from JWT token without making API call
|
|
@@ -70,7 +72,10 @@ class PermissionService {
|
|
|
70
72
|
const authStrategyWithToken = authStrategyToUse
|
|
71
73
|
? { ...authStrategyToUse, bearerToken: token }
|
|
72
74
|
: { methods: ['bearer'], bearerToken: token };
|
|
73
|
-
|
|
75
|
+
// Extract environment from application context service
|
|
76
|
+
const context = this.applicationContextService.getApplicationContext();
|
|
77
|
+
const queryParams = context.environment ? { environment: context.environment } : undefined;
|
|
78
|
+
const permissionResult = await this.apiClient.permissions.getPermissions(queryParams, authStrategyWithToken);
|
|
74
79
|
const permissions = permissionResult.data?.permissions || [];
|
|
75
80
|
// Cache the result (use userId-based key)
|
|
76
81
|
const finalCacheKey = `permissions:${userId}`;
|
|
@@ -131,8 +136,11 @@ class PermissionService {
|
|
|
131
136
|
}
|
|
132
137
|
const userId = userInfo.data.user.id;
|
|
133
138
|
const cacheKey = `permissions:${userId}`;
|
|
139
|
+
// Extract environment from application context service
|
|
140
|
+
const context = this.applicationContextService.getApplicationContext();
|
|
141
|
+
const queryParams = context.environment ? { environment: context.environment } : undefined;
|
|
134
142
|
// Fetch fresh permissions from controller using refresh endpoint via ApiClient
|
|
135
|
-
const permissionResult = await this.apiClient.permissions.refreshPermissions(authStrategyWithToken);
|
|
143
|
+
const permissionResult = await this.apiClient.permissions.refreshPermissions(queryParams, authStrategyWithToken);
|
|
136
144
|
const permissions = permissionResult.data?.permissions || [];
|
|
137
145
|
// Update cache with fresh data
|
|
138
146
|
await this.cache.set(cacheKey, { permissions, timestamp: Date.now() }, this.permissionTTL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.service.js","sourceRoot":"","sources":["../../src/services/permission.service.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAUH,gEAA+B;
|
|
1
|
+
{"version":3,"file":"permission.service.js","sourceRoot":"","sources":["../../src/services/permission.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export declare class RoleService {
|
|
|
11
11
|
private cache;
|
|
12
12
|
private config;
|
|
13
13
|
private roleTTL;
|
|
14
|
+
private applicationContextService;
|
|
14
15
|
constructor(httpClient: HttpClient, apiClient: ApiClient, cache: CacheService);
|
|
15
16
|
/**
|
|
16
17
|
* Extract userId from JWT token without making API call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.service.d.ts","sourceRoot":"","sources":["../../src/services/role.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAEL,YAAY,EAEb,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"role.service.d.ts","sourceRoot":"","sources":["../../src/services/role.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAEL,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAS/B,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,yBAAyB,CAA4B;gBAEjD,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY;IAS7E;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;;;OAKG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IAiEpB;;;;;OAKG;IACG,OAAO,CACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;;OAKG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;;OAKG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;OAIG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;CA8CrB"}
|
|
@@ -8,6 +8,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.RoleService = void 0;
|
|
10
10
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
11
|
+
const application_context_service_1 = require("./application-context.service");
|
|
11
12
|
class RoleService {
|
|
12
13
|
constructor(httpClient, apiClient, cache) {
|
|
13
14
|
this.config = httpClient.config;
|
|
@@ -15,6 +16,7 @@ class RoleService {
|
|
|
15
16
|
this.httpClient = httpClient;
|
|
16
17
|
this.apiClient = apiClient;
|
|
17
18
|
this.roleTTL = this.config.cache?.roleTTL || 900; // 15 minutes default
|
|
19
|
+
this.applicationContextService = new application_context_service_1.ApplicationContextService(httpClient);
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
22
|
* Extract userId from JWT token without making API call
|
|
@@ -70,7 +72,10 @@ class RoleService {
|
|
|
70
72
|
const authStrategyWithToken = authStrategyToUse
|
|
71
73
|
? { ...authStrategyToUse, bearerToken: token }
|
|
72
74
|
: { methods: ['bearer'], bearerToken: token };
|
|
73
|
-
|
|
75
|
+
// Extract environment from application context service
|
|
76
|
+
const context = this.applicationContextService.getApplicationContext();
|
|
77
|
+
const queryParams = context.environment ? { environment: context.environment } : undefined;
|
|
78
|
+
const roleResult = await this.apiClient.roles.getRoles(queryParams, authStrategyWithToken);
|
|
74
79
|
const roles = roleResult.data?.roles || [];
|
|
75
80
|
// Cache the result (use userId-based key)
|
|
76
81
|
const finalCacheKey = `roles:${userId}`;
|
|
@@ -131,8 +136,11 @@ class RoleService {
|
|
|
131
136
|
}
|
|
132
137
|
const userId = userInfo.data.user.id;
|
|
133
138
|
const cacheKey = `roles:${userId}`;
|
|
139
|
+
// Extract environment from application context service
|
|
140
|
+
const context = this.applicationContextService.getApplicationContext();
|
|
141
|
+
const queryParams = context.environment ? { environment: context.environment } : undefined;
|
|
134
142
|
// Fetch fresh roles from controller using refresh endpoint via ApiClient
|
|
135
|
-
const roleResult = await this.apiClient.roles.refreshRoles(authStrategyWithToken);
|
|
143
|
+
const roleResult = await this.apiClient.roles.refreshRoles(queryParams, authStrategyWithToken);
|
|
136
144
|
const roles = roleResult.data?.roles || [];
|
|
137
145
|
// Update cache with fresh data
|
|
138
146
|
await this.cache.set(cacheKey, { roles, timestamp: Date.now() }, this.roleTTL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.service.js","sourceRoot":"","sources":["../../src/services/role.service.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAUH,gEAA+B;
|
|
1
|
+
{"version":3,"file":"role.service.js","sourceRoot":"","sources":["../../src/services/role.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* Filter operators supported by the API.
|
|
7
7
|
*/
|
|
8
|
-
export type FilterOperator = "eq" | "neq" | "in" | "nin" | "gt" | "lt" | "gte" | "lte" | "contains" | "like";
|
|
8
|
+
export type FilterOperator = "eq" | "neq" | "in" | "nin" | "gt" | "lt" | "gte" | "lte" | "contains" | "like" | "isNull" | "isNotNull";
|
|
9
9
|
/**
|
|
10
10
|
* Single filter option with field, operator, and value.
|
|
11
11
|
*/
|
|
@@ -14,8 +14,8 @@ export interface FilterOption {
|
|
|
14
14
|
field: string;
|
|
15
15
|
/** Filter operator. */
|
|
16
16
|
op: FilterOperator;
|
|
17
|
-
/** Filter value (supports arrays for `in` and `nin` operators). */
|
|
18
|
-
value: string | number | boolean | Array<string | number
|
|
17
|
+
/** Filter value (supports arrays for `in` and `nin` operators, null for `isNull` and `isNotNull`). */
|
|
18
|
+
value: string | number | boolean | Array<string | number> | null;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Complete filter query including filters, sorting, pagination, and field selection.
|
|
@@ -45,7 +45,7 @@ export declare class FilterBuilder {
|
|
|
45
45
|
* @param value - Filter value (supports arrays for `in` and `nin`)
|
|
46
46
|
* @returns FilterBuilder instance for method chaining
|
|
47
47
|
*/
|
|
48
|
-
add(field: string, op: FilterOperator, value: string | number | boolean | Array<string | number>): FilterBuilder;
|
|
48
|
+
add(field: string, op: FilterOperator, value: string | number | boolean | Array<string | number> | null): FilterBuilder;
|
|
49
49
|
/**
|
|
50
50
|
* Add multiple filters at once.
|
|
51
51
|
* @param filters - Array of filter options to add
|
|
@@ -58,8 +58,8 @@ export declare class FilterBuilder {
|
|
|
58
58
|
*/
|
|
59
59
|
build(): FilterOption[];
|
|
60
60
|
/**
|
|
61
|
-
* Convert filters to query string format.
|
|
62
|
-
* @returns Query string with
|
|
61
|
+
* Convert filters to query string format using JSON format.
|
|
62
|
+
* @returns Query string with URL-encoded JSON filter format
|
|
63
63
|
*/
|
|
64
64
|
toQueryString(): string;
|
|
65
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.types.d.ts","sourceRoot":"","sources":["../../src/types/filter.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,UAAU,GACV,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.types.d.ts","sourceRoot":"","sources":["../../src/types/filter.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,UAAU,GACV,MAAM,GACN,QAAQ,GACR,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,EAAE,EAAE,cAAc,CAAC;IAEnB,sGAAsG;IACtG,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB,gGAAgG;IAChG,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsB;IAErC;;;;;;OAMG;IACH,GAAG,CACD,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,GAC/D,aAAa;IAKhB;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa;IAK/C;;;OAGG;IACH,KAAK,IAAI,YAAY,EAAE;IAIvB;;;OAGG;IACH,aAAa,IAAI,MAAM;CAmBxB"}
|
|
@@ -41,15 +41,24 @@ class FilterBuilder {
|
|
|
41
41
|
return [...this.filters];
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* Convert filters to query string format.
|
|
45
|
-
* @returns Query string with
|
|
44
|
+
* Convert filters to query string format using JSON format.
|
|
45
|
+
* @returns Query string with URL-encoded JSON filter format
|
|
46
46
|
*/
|
|
47
47
|
toQueryString() {
|
|
48
|
-
|
|
48
|
+
if (this.filters.length === 0) {
|
|
49
|
+
return "";
|
|
50
|
+
}
|
|
51
|
+
const jsonFilter = {};
|
|
49
52
|
this.filters.forEach((f) => {
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
if (!jsonFilter[f.field]) {
|
|
54
|
+
jsonFilter[f.field] = {};
|
|
55
|
+
}
|
|
56
|
+
jsonFilter[f.field][f.op] = f.value === null ? null : f.value;
|
|
52
57
|
});
|
|
58
|
+
const jsonString = JSON.stringify(jsonFilter);
|
|
59
|
+
const params = new URLSearchParams();
|
|
60
|
+
// URLSearchParams.append() automatically URL-encodes, so don't double-encode
|
|
61
|
+
params.append("filter", jsonString);
|
|
53
62
|
return params.toString();
|
|
54
63
|
}
|
|
55
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.types.js","sourceRoot":"","sources":["../../src/types/filter.types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"filter.types.js","sourceRoot":"","sources":["../../src/types/filter.types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAqDH;;;GAGG;AACH,MAAa,aAAa;IAA1B;QACU,YAAO,GAAmB,EAAE,CAAC;IA2DvC,CAAC;IAzDC;;;;;;OAMG;IACH,GAAG,CACD,KAAa,EACb,EAAkB,EAClB,KAAgE;QAEhE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAuB;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAA4C,EAAE,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,CAAC;YACD,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,6EAA6E;QAC7E,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA5DD,sCA4DC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced console logger with correlation ID prefixes
|
|
3
|
+
* Provides structured console logging for errors and events
|
|
4
|
+
*/
|
|
5
|
+
import { StructuredErrorInfo } from "./error-extractor";
|
|
6
|
+
/**
|
|
7
|
+
* Log error with context to console
|
|
8
|
+
* Formats error with correlation ID prefix and structured details
|
|
9
|
+
*
|
|
10
|
+
* @param errorInfo - Structured error information
|
|
11
|
+
* @param prefix - Optional prefix (e.g., '[MisoClient]', '[DataClient]', '[AUTH]')
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const errorInfo = extractErrorInfo(error, { endpoint: '/api/users', method: 'POST' });
|
|
16
|
+
* logErrorWithContext(errorInfo, '[MisoClient]');
|
|
17
|
+
* // Output: [MisoClient] [abc123-xyz] ApiError: Request failed | Status: 400 | Endpoint: POST /api/users
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function logErrorWithContext(errorInfo: StructuredErrorInfo, prefix?: string): void;
|
|
21
|
+
//# sourceMappingURL=console-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-logger.d.ts","sourceRoot":"","sources":["../../src/utils/console-logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,GAAE,MAAuB,GAC9B,IAAI,CA+CN"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Enhanced console logger with correlation ID prefixes
|
|
4
|
+
* Provides structured console logging for errors and events
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.logErrorWithContext = logErrorWithContext;
|
|
8
|
+
/**
|
|
9
|
+
* Log error with context to console
|
|
10
|
+
* Formats error with correlation ID prefix and structured details
|
|
11
|
+
*
|
|
12
|
+
* @param errorInfo - Structured error information
|
|
13
|
+
* @param prefix - Optional prefix (e.g., '[MisoClient]', '[DataClient]', '[AUTH]')
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const errorInfo = extractErrorInfo(error, { endpoint: '/api/users', method: 'POST' });
|
|
18
|
+
* logErrorWithContext(errorInfo, '[MisoClient]');
|
|
19
|
+
* // Output: [MisoClient] [abc123-xyz] ApiError: Request failed | Status: 400 | Endpoint: POST /api/users
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
function logErrorWithContext(errorInfo, prefix = "[MisoClient]") {
|
|
23
|
+
const correlationId = errorInfo.correlationId || "no-correlation-id";
|
|
24
|
+
const parts = [];
|
|
25
|
+
// Build error description
|
|
26
|
+
parts.push(`${errorInfo.errorName}: ${errorInfo.message}`);
|
|
27
|
+
// Add status code if available
|
|
28
|
+
if (errorInfo.statusCode !== undefined) {
|
|
29
|
+
parts.push(`Status: ${errorInfo.statusCode}`);
|
|
30
|
+
}
|
|
31
|
+
// Add endpoint and method if available
|
|
32
|
+
if (errorInfo.endpoint && errorInfo.method) {
|
|
33
|
+
parts.push(`Endpoint: ${errorInfo.method} ${errorInfo.endpoint}`);
|
|
34
|
+
}
|
|
35
|
+
else if (errorInfo.endpoint) {
|
|
36
|
+
parts.push(`Endpoint: ${errorInfo.endpoint}`);
|
|
37
|
+
}
|
|
38
|
+
else if (errorInfo.method) {
|
|
39
|
+
parts.push(`Method: ${errorInfo.method}`);
|
|
40
|
+
}
|
|
41
|
+
// Build final message
|
|
42
|
+
const message = parts.join(" | ");
|
|
43
|
+
// Log with correlation ID prefix
|
|
44
|
+
console.error(`${prefix} [${correlationId}] ${message}`);
|
|
45
|
+
// Log response body if available
|
|
46
|
+
if (errorInfo.responseBody) {
|
|
47
|
+
console.error(`${prefix} [${correlationId}] Response Body:`, JSON.stringify(errorInfo.responseBody, null, 2));
|
|
48
|
+
}
|
|
49
|
+
// Log stack trace if available
|
|
50
|
+
if (errorInfo.stackTrace) {
|
|
51
|
+
console.error(`${prefix} [${correlationId}] Stack Trace:`, errorInfo.stackTrace);
|
|
52
|
+
}
|
|
53
|
+
// Log original error if available
|
|
54
|
+
if (errorInfo.originalError) {
|
|
55
|
+
console.error(`${prefix} [${correlationId}] Original Error:`, errorInfo.originalError);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=console-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-logger.js","sourceRoot":"","sources":["../../src/utils/console-logger.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAkBH,kDAkDC;AAhED;;;;;;;;;;;;;GAaG;AACH,SAAgB,mBAAmB,CACjC,SAA8B,EAC9B,SAAiB,cAAc;IAE/B,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,IAAI,mBAAmB,CAAC;IACrE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,0BAA0B;IAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAE3D,+BAA+B;IAC/B,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,uCAAuC;IACvC,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;SAAM,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,sBAAsB;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElC,iCAAiC;IACjC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,aAAa,KAAK,OAAO,EAAE,CAAC,CAAC;IAEzD,iCAAiC;IACjC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CACX,GAAG,MAAM,KAAK,aAAa,kBAAkB,EAC7C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAChD,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,aAAa,gBAAgB,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IACnF,CAAC;IAED,kCAAkC;IAClC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CACX,GAAG,MAAM,KAAK,aAAa,mBAAmB,EAC9C,SAAS,CAAC,aAAa,CACxB,CAAC;IACJ,CAAC;AACH,CAAC"}
|