@aifabrix/miso-client 3.1.2 → 3.2.5

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.
Files changed (87) hide show
  1. package/README.md +57 -2
  2. package/dist/express/client-token-endpoint.d.ts +76 -0
  3. package/dist/express/client-token-endpoint.d.ts.map +1 -0
  4. package/dist/express/client-token-endpoint.js +231 -0
  5. package/dist/express/client-token-endpoint.js.map +1 -0
  6. package/dist/express/index.d.ts +2 -1
  7. package/dist/express/index.d.ts.map +1 -1
  8. package/dist/express/index.js +8 -3
  9. package/dist/express/index.js.map +1 -1
  10. package/dist/express/response-middleware.d.ts.map +1 -1
  11. package/dist/express/response-middleware.js.map +1 -1
  12. package/dist/index.d.ts +19 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +30 -4
  15. package/dist/index.js.map +1 -1
  16. package/dist/services/auth.service.d.ts +26 -4
  17. package/dist/services/auth.service.d.ts.map +1 -1
  18. package/dist/services/auth.service.js +137 -6
  19. package/dist/services/auth.service.js.map +1 -1
  20. package/dist/services/browser-permission.service.d.ts +60 -0
  21. package/dist/services/browser-permission.service.d.ts.map +1 -0
  22. package/dist/services/browser-permission.service.js +159 -0
  23. package/dist/services/browser-permission.service.js.map +1 -0
  24. package/dist/services/browser-role.service.d.ts +60 -0
  25. package/dist/services/browser-role.service.d.ts.map +1 -0
  26. package/dist/services/browser-role.service.js +159 -0
  27. package/dist/services/browser-role.service.js.map +1 -0
  28. package/dist/services/cache.service.d.ts.map +1 -1
  29. package/dist/services/cache.service.js +4 -0
  30. package/dist/services/cache.service.js.map +1 -1
  31. package/dist/services/logger.service.d.ts +99 -24
  32. package/dist/services/logger.service.d.ts.map +1 -1
  33. package/dist/services/logger.service.js +174 -44
  34. package/dist/services/logger.service.js.map +1 -1
  35. package/dist/services/redis.service.d.ts.map +1 -1
  36. package/dist/services/redis.service.js +3 -6
  37. package/dist/services/redis.service.js.map +1 -1
  38. package/dist/types/config.types.d.ts +22 -0
  39. package/dist/types/config.types.d.ts.map +1 -1
  40. package/dist/types/config.types.js.map +1 -1
  41. package/dist/types/data-client.types.d.ts +10 -0
  42. package/dist/types/data-client.types.d.ts.map +1 -1
  43. package/dist/types/data-client.types.js.map +1 -1
  44. package/dist/utils/audit-log-queue.d.ts +4 -0
  45. package/dist/utils/audit-log-queue.d.ts.map +1 -1
  46. package/dist/utils/audit-log-queue.js +22 -2
  47. package/dist/utils/audit-log-queue.js.map +1 -1
  48. package/dist/utils/browser-jwt-decoder.d.ts +20 -0
  49. package/dist/utils/browser-jwt-decoder.d.ts.map +1 -0
  50. package/dist/utils/browser-jwt-decoder.js +75 -0
  51. package/dist/utils/browser-jwt-decoder.js.map +1 -0
  52. package/dist/utils/controller-url-resolver.d.ts +16 -0
  53. package/dist/utils/controller-url-resolver.d.ts.map +1 -1
  54. package/dist/utils/controller-url-resolver.js +12 -0
  55. package/dist/utils/controller-url-resolver.js.map +1 -1
  56. package/dist/utils/data-client-audit.d.ts.map +1 -1
  57. package/dist/utils/data-client-audit.js +19 -8
  58. package/dist/utils/data-client-audit.js.map +1 -1
  59. package/dist/utils/data-client-auth.d.ts +19 -7
  60. package/dist/utils/data-client-auth.d.ts.map +1 -1
  61. package/dist/utils/data-client-auth.js +269 -144
  62. package/dist/utils/data-client-auth.js.map +1 -1
  63. package/dist/utils/data-client-auto-init.d.ts +66 -0
  64. package/dist/utils/data-client-auto-init.d.ts.map +1 -0
  65. package/dist/utils/data-client-auto-init.js +259 -0
  66. package/dist/utils/data-client-auto-init.js.map +1 -0
  67. package/dist/utils/data-client-redirect.d.ts +52 -0
  68. package/dist/utils/data-client-redirect.d.ts.map +1 -0
  69. package/dist/utils/data-client-redirect.js +233 -0
  70. package/dist/utils/data-client-redirect.js.map +1 -0
  71. package/dist/utils/data-client-request.d.ts +8 -1
  72. package/dist/utils/data-client-request.d.ts.map +1 -1
  73. package/dist/utils/data-client-request.js +30 -5
  74. package/dist/utils/data-client-request.js.map +1 -1
  75. package/dist/utils/data-client.d.ts +116 -0
  76. package/dist/utils/data-client.d.ts.map +1 -1
  77. package/dist/utils/data-client.js +349 -4
  78. package/dist/utils/data-client.js.map +1 -1
  79. package/dist/utils/logging-helpers.d.ts +51 -0
  80. package/dist/utils/logging-helpers.d.ts.map +1 -0
  81. package/dist/utils/logging-helpers.js +57 -0
  82. package/dist/utils/logging-helpers.js.map +1 -0
  83. package/dist/utils/request-context.d.ts +32 -0
  84. package/dist/utils/request-context.d.ts.map +1 -0
  85. package/dist/utils/request-context.js +81 -0
  86. package/dist/utils/request-context.js.map +1 -0
  87. package/package.json +9 -2
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Browser-compatible role service for user authorization with caching
3
+ * Uses in-memory cache only (no Redis) and browser-compatible JWT decoder
4
+ */
5
+ import { HttpClient } from "../utils/http-client";
6
+ import { CacheService } from "./cache.service";
7
+ import { AuthStrategy } from "../types/config.types";
8
+ export declare class BrowserRoleService {
9
+ private httpClient;
10
+ private cache;
11
+ private config;
12
+ private roleTTL;
13
+ constructor(httpClient: HttpClient, cache: CacheService);
14
+ /**
15
+ * Extract userId from JWT token without making API call
16
+ * Uses browser-compatible JWT decoder
17
+ */
18
+ private extractUserIdFromToken;
19
+ /**
20
+ * Get user roles with caching
21
+ * Optimized to extract userId from token first to check cache before API call
22
+ * @param token - User authentication token
23
+ * @param authStrategy - Optional authentication strategy override
24
+ */
25
+ getRoles(token: string, authStrategy?: AuthStrategy): Promise<string[]>;
26
+ /**
27
+ * Check if user has specific role
28
+ * @param token - User authentication token
29
+ * @param role - Role to check
30
+ * @param authStrategy - Optional authentication strategy override
31
+ */
32
+ hasRole(token: string, role: string, authStrategy?: AuthStrategy): Promise<boolean>;
33
+ /**
34
+ * Check if user has any of the specified roles
35
+ * @param token - User authentication token
36
+ * @param roles - Roles to check
37
+ * @param authStrategy - Optional authentication strategy override
38
+ */
39
+ hasAnyRole(token: string, roles: string[], authStrategy?: AuthStrategy): Promise<boolean>;
40
+ /**
41
+ * Check if user has all of the specified roles
42
+ * @param token - User authentication token
43
+ * @param roles - Roles to check
44
+ * @param authStrategy - Optional authentication strategy override
45
+ */
46
+ hasAllRoles(token: string, roles: string[], authStrategy?: AuthStrategy): Promise<boolean>;
47
+ /**
48
+ * Force refresh roles from controller (bypass cache)
49
+ * @param token - User authentication token
50
+ * @param authStrategy - Optional authentication strategy override
51
+ */
52
+ refreshRoles(token: string, authStrategy?: AuthStrategy): Promise<string[]>;
53
+ /**
54
+ * Clear cached roles for a user
55
+ * @param token - User authentication token
56
+ * @param authStrategy - Optional authentication strategy override
57
+ */
58
+ clearRolesCache(token: string, authStrategy?: AuthStrategy): Promise<void>;
59
+ }
60
+ //# sourceMappingURL=browser-role.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-role.service.d.ts","sourceRoot":"","sources":["../../src/services/browser-role.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAGL,YAAY,EACb,MAAM,uBAAuB,CAAC;AAQ/B,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAAS;gBAEZ,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY;IAOvD;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;;;;OAKG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IAsDpB;;;;;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;IAyCpB;;;;OAIG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,IAAI,CAAC;CAqBjB"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ /**
3
+ * Browser-compatible role service for user authorization with caching
4
+ * Uses in-memory cache only (no Redis) and browser-compatible JWT decoder
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BrowserRoleService = void 0;
8
+ const browser_jwt_decoder_1 = require("../utils/browser-jwt-decoder");
9
+ class BrowserRoleService {
10
+ constructor(httpClient, cache) {
11
+ this.config = httpClient.config;
12
+ this.cache = cache;
13
+ this.httpClient = httpClient;
14
+ this.roleTTL = this.config.cache?.roleTTL || 900; // 15 minutes default
15
+ }
16
+ /**
17
+ * Extract userId from JWT token without making API call
18
+ * Uses browser-compatible JWT decoder
19
+ */
20
+ extractUserIdFromToken(token) {
21
+ try {
22
+ const decoded = (0, browser_jwt_decoder_1.decodeJWT)(token);
23
+ if (!decoded) {
24
+ return null;
25
+ }
26
+ // Try common JWT claim fields for user ID
27
+ return (decoded.sub ||
28
+ decoded.userId ||
29
+ decoded.user_id ||
30
+ decoded.id);
31
+ }
32
+ catch (error) {
33
+ return null;
34
+ }
35
+ }
36
+ /**
37
+ * Get user roles with caching
38
+ * Optimized to extract userId from token first to check cache before API call
39
+ * @param token - User authentication token
40
+ * @param authStrategy - Optional authentication strategy override
41
+ */
42
+ async getRoles(token, authStrategy) {
43
+ try {
44
+ // Extract userId from token to check cache first (avoids API call on cache hit)
45
+ let userId = this.extractUserIdFromToken(token);
46
+ const cacheKey = userId ? `roles:${userId}` : null;
47
+ // Check cache first if we have userId
48
+ if (cacheKey) {
49
+ const cached = await this.cache.get(cacheKey);
50
+ if (cached) {
51
+ return cached.roles || [];
52
+ }
53
+ }
54
+ // Cache miss or no userId in token - fetch from controller
55
+ // If we don't have userId, get it from validate endpoint
56
+ if (!userId) {
57
+ const userInfo = await this.httpClient.validateTokenRequest(token, authStrategy);
58
+ userId = userInfo.user?.id || null;
59
+ if (!userId) {
60
+ return [];
61
+ }
62
+ }
63
+ // Cache miss - fetch from controller
64
+ const roleResult = await this.httpClient.authenticatedRequest("GET", "/api/v1/auth/roles", // Backend knows app/env from client token
65
+ token, undefined, undefined, authStrategy);
66
+ const roles = roleResult.roles || [];
67
+ // Cache the result (use userId-based key)
68
+ const finalCacheKey = `roles:${userId}`;
69
+ await this.cache.set(finalCacheKey, { roles, timestamp: Date.now() }, this.roleTTL);
70
+ return roles;
71
+ }
72
+ catch (error) {
73
+ // eslint-disable-next-line no-console
74
+ console.error("Failed to get roles:", error);
75
+ return [];
76
+ }
77
+ }
78
+ /**
79
+ * Check if user has specific role
80
+ * @param token - User authentication token
81
+ * @param role - Role to check
82
+ * @param authStrategy - Optional authentication strategy override
83
+ */
84
+ async hasRole(token, role, authStrategy) {
85
+ const roles = await this.getRoles(token, authStrategy);
86
+ return roles.includes(role);
87
+ }
88
+ /**
89
+ * Check if user has any of the specified roles
90
+ * @param token - User authentication token
91
+ * @param roles - Roles to check
92
+ * @param authStrategy - Optional authentication strategy override
93
+ */
94
+ async hasAnyRole(token, roles, authStrategy) {
95
+ const userRoles = await this.getRoles(token, authStrategy);
96
+ return roles.some((role) => userRoles.includes(role));
97
+ }
98
+ /**
99
+ * Check if user has all of the specified roles
100
+ * @param token - User authentication token
101
+ * @param roles - Roles to check
102
+ * @param authStrategy - Optional authentication strategy override
103
+ */
104
+ async hasAllRoles(token, roles, authStrategy) {
105
+ const userRoles = await this.getRoles(token, authStrategy);
106
+ return roles.every((role) => userRoles.includes(role));
107
+ }
108
+ /**
109
+ * Force refresh roles from controller (bypass cache)
110
+ * @param token - User authentication token
111
+ * @param authStrategy - Optional authentication strategy override
112
+ */
113
+ async refreshRoles(token, authStrategy) {
114
+ try {
115
+ // Get user info to extract userId
116
+ const userInfo = await this.httpClient.validateTokenRequest(token, authStrategy);
117
+ if (!userInfo.user?.id) {
118
+ return [];
119
+ }
120
+ const userId = userInfo.user.id;
121
+ const cacheKey = `roles:${userId}`;
122
+ // Fetch fresh roles from controller using refresh endpoint
123
+ const roleResult = await this.httpClient.authenticatedRequest("GET", "/api/v1/auth/roles/refresh", token, undefined, undefined, authStrategy);
124
+ const roles = roleResult.roles || [];
125
+ // Update cache with fresh data
126
+ await this.cache.set(cacheKey, { roles, timestamp: Date.now() }, this.roleTTL);
127
+ return roles;
128
+ }
129
+ catch (error) {
130
+ // eslint-disable-next-line no-console
131
+ console.error("Failed to refresh roles:", error);
132
+ return [];
133
+ }
134
+ }
135
+ /**
136
+ * Clear cached roles for a user
137
+ * @param token - User authentication token
138
+ * @param authStrategy - Optional authentication strategy override
139
+ */
140
+ async clearRolesCache(token, authStrategy) {
141
+ try {
142
+ // Get user info to extract userId
143
+ const userInfo = await this.httpClient.validateTokenRequest(token, authStrategy);
144
+ if (!userInfo.user?.id) {
145
+ return;
146
+ }
147
+ const userId = userInfo.user.id;
148
+ const cacheKey = `roles:${userId}`;
149
+ // Clear from cache
150
+ await this.cache.delete(cacheKey);
151
+ }
152
+ catch (error) {
153
+ // eslint-disable-next-line no-console
154
+ console.error("Failed to clear roles cache:", error);
155
+ }
156
+ }
157
+ }
158
+ exports.BrowserRoleService = BrowserRoleService;
159
+ //# sourceMappingURL=browser-role.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-role.service.js","sourceRoot":"","sources":["../../src/services/browser-role.service.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH,sEAAyD;AAOzD,MAAa,kBAAkB;IAM7B,YAAY,UAAsB,EAAE,KAAmB;QACrD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,qBAAqB;IACzE,CAAC;IAED;;;OAGG;IACK,sBAAsB,CAAC,KAAa;QAC1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,+BAAS,EAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,CAAC;YAED,0CAA0C;YAC1C,OACE,CAAC,OAAO,CAAC,GAAG;gBACV,OAAO,CAAC,MAAM;gBACd,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,EAAE,CACb,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,YAA2B;QAE3B,IAAI,CAAC;YACH,gFAAgF;YAChF,IAAI,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAEnD,sCAAsC;YACtC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,QAAQ,CAAC,CAAC;gBAC7D,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,2DAA2D;YAC3D,yDAAyD;YACzD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAExD,KAAK,EAAE,YAAY,CAAC,CAAC;gBACxB,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC;gBACnC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,qCAAqC;YACrC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAC3D,KAAK,EACL,oBAAoB,EAAE,0CAA0C;YAChE,KAAK,EACL,SAAS,EACT,SAAS,EACT,YAAY,CACb,CAAC;YAEF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;YAErC,0CAA0C;YAC1C,MAAM,aAAa,GAAG,SAAS,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,aAAa,EACb,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAChC,IAAI,CAAC,OAAO,CACb,CAAC;YAEF,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,KAAa,EACb,IAAY,EACZ,YAA2B;QAE3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,KAAa,EACb,KAAe,EACf,YAA2B;QAE3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CACf,KAAa,EACb,KAAe,EACf,YAA2B;QAE3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,YAA2B;QAE3B,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAExD,KAAK,EAAE,YAAY,CAAC,CAAC;YAExB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;gBACvB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,SAAS,MAAM,EAAE,CAAC;YAEnC,2DAA2D;YAC3D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAC3D,KAAK,EACL,4BAA4B,EAC5B,KAAK,EACL,SAAS,EACT,SAAS,EACT,YAAY,CACb,CAAC;YAEF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;YAErC,+BAA+B;YAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,QAAQ,EACR,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAChC,IAAI,CAAC,OAAO,CACb,CAAC;YAEF,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CACnB,KAAa,EACb,YAA2B;QAE3B,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAExD,KAAK,EAAE,YAAY,CAAC,CAAC;YAExB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,SAAS,MAAM,EAAE,CAAC;YAEnC,mBAAmB;YACnB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF;AA9ND,gDA8NC"}
@@ -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;AAO/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;IAYhC;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA4C5C;;;;;;;OAOG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BlE;;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"}
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;AAO/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;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA4C5C;;;;;;;OAOG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BlE;;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"}
@@ -16,6 +16,10 @@ class CacheService {
16
16
  this.cleanupInterval = setInterval(() => {
17
17
  this.cleanupExpired();
18
18
  }, 5 * 60 * 1000);
19
+ // Use unref() so the interval doesn't keep the process alive (important for tests)
20
+ if (this.cleanupInterval && typeof this.cleanupInterval.unref === 'function') {
21
+ this.cleanupInterval.unref();
22
+ }
19
23
  }
20
24
  /**
21
25
  * Clean up expired entries from memory cache
@@ -1 +1 @@
1
- {"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../src/services/cache.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../src/services/cache.service.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@
2
2
  * Logger service for application logging and audit events
3
3
  */
4
4
  import { EventEmitter } from "events";
5
+ import { Request } from "express";
5
6
  import { HttpClient } from "../utils/http-client";
6
7
  import { RedisService } from "./redis.service";
8
+ import { IndexedLoggingContext } from "../utils/logging-helpers";
7
9
  export interface ClientLoggingOptions {
8
10
  applicationId?: string;
9
11
  userId?: string;
@@ -12,19 +14,21 @@ export interface ClientLoggingOptions {
12
14
  sessionId?: string;
13
15
  token?: string;
14
16
  maskSensitiveData?: boolean;
15
- performanceMetrics?: boolean;
16
- }
17
- export interface PerformanceMetrics {
18
- startTime: number;
19
- endTime?: number;
20
- duration?: number;
21
- memoryUsage?: {
22
- rss: number;
23
- heapTotal: number;
24
- heapUsed: number;
25
- external: number;
26
- arrayBuffers: number;
27
- };
17
+ ipAddress?: string;
18
+ userAgent?: string;
19
+ sourceKey?: string;
20
+ sourceDisplayName?: string;
21
+ externalSystemKey?: string;
22
+ externalSystemDisplayName?: string;
23
+ recordKey?: string;
24
+ recordDisplayName?: string;
25
+ credentialId?: string;
26
+ credentialType?: string;
27
+ requestSize?: number;
28
+ responseSize?: number;
29
+ durationMs?: number;
30
+ errorCategory?: string;
31
+ httpStatusCategory?: string;
28
32
  }
29
33
  export declare class LoggerService extends EventEmitter {
30
34
  private httpClient;
@@ -32,8 +36,11 @@ export declare class LoggerService extends EventEmitter {
32
36
  private config;
33
37
  private maskSensitiveData;
34
38
  private correlationCounter;
35
- private performanceMetrics;
36
39
  private auditLogQueue;
40
+ private httpLoggingFailures;
41
+ private httpLoggingDisabledUntil;
42
+ private static readonly MAX_FAILURES;
43
+ private static readonly DISABLE_DURATION_MS;
37
44
  constructor(httpClient: HttpClient, redis: RedisService);
38
45
  /**
39
46
  * Enable or disable sensitive data masking
@@ -51,14 +58,6 @@ export declare class LoggerService extends EventEmitter {
51
58
  * Extract metadata from environment (browser or Node.js)
52
59
  */
53
60
  private extractMetadata;
54
- /**
55
- * Start performance tracking
56
- */
57
- startPerformanceTracking(operationId: string): void;
58
- /**
59
- * End performance tracking and get metrics
60
- */
61
- endPerformanceTracking(operationId: string): PerformanceMetrics | null;
62
61
  /**
63
62
  * Log error message with optional stack trace and enhanced options
64
63
  */
@@ -84,8 +83,20 @@ export declare class LoggerService extends EventEmitter {
84
83
  */
85
84
  withContext(context: Record<string, unknown>): LoggerChain;
86
85
  withToken(token: string): LoggerChain;
87
- withPerformance(): LoggerChain;
88
86
  withoutMasking(): LoggerChain;
87
+ /**
88
+ * Create logger chain with request context pre-populated
89
+ * Auto-extracts: IP, method, path, user-agent, correlation ID, user from JWT
90
+ *
91
+ * @param req - Express Request object
92
+ * @returns LoggerChain with request context pre-populated
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * await miso.log.forRequest(req).info("Processing request");
97
+ * ```
98
+ */
99
+ forRequest(req: Request): LoggerChain;
89
100
  }
90
101
  /**
91
102
  * Method chaining class for fluent logging API
@@ -100,8 +111,72 @@ export declare class LoggerChain {
100
111
  addApplication(applicationId: string): LoggerChain;
101
112
  addCorrelation(correlationId: string): LoggerChain;
102
113
  withToken(token: string): LoggerChain;
103
- withPerformance(): LoggerChain;
104
114
  withoutMasking(): LoggerChain;
115
+ /**
116
+ * Add indexed logging context fields for fast queries
117
+ *
118
+ * @param context - Indexed logging context with source, external system, and record fields
119
+ * @returns LoggerChain instance for method chaining
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * await logger
124
+ * .withIndexedContext({
125
+ * sourceKey: 'datasource-1',
126
+ * sourceDisplayName: 'PostgreSQL DB',
127
+ * externalSystemKey: 'system-1',
128
+ * recordKey: 'record-123'
129
+ * })
130
+ * .info('Sync completed');
131
+ * ```
132
+ */
133
+ withIndexedContext(context: IndexedLoggingContext): LoggerChain;
134
+ /**
135
+ * Add credential context for audit logging
136
+ *
137
+ * @param credentialId - Optional credential identifier
138
+ * @param credentialType - Optional credential type (e.g., 'oauth2', 'api-key')
139
+ * @returns LoggerChain instance for method chaining
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * await logger
144
+ * .withCredentialContext('cred-123', 'oauth2')
145
+ * .info('API call completed');
146
+ * ```
147
+ */
148
+ withCredentialContext(credentialId?: string, credentialType?: string): LoggerChain;
149
+ /**
150
+ * Add request/response metrics for performance logging
151
+ *
152
+ * @param requestSize - Optional request size in bytes
153
+ * @param responseSize - Optional response size in bytes
154
+ * @param durationMs - Optional request duration in milliseconds
155
+ * @returns LoggerChain instance for method chaining
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * await logger
160
+ * .withRequestMetrics(1024, 2048, 150)
161
+ * .info('Upstream API call completed');
162
+ * ```
163
+ */
164
+ withRequestMetrics(requestSize?: number, responseSize?: number, durationMs?: number): LoggerChain;
165
+ /**
166
+ * Auto-extract logging context from Express Request
167
+ * Extracts: IP, method, path, user-agent, correlation ID, user from JWT
168
+ *
169
+ * @param req - Express Request object
170
+ * @returns LoggerChain instance for method chaining
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * await miso.log
175
+ * .withRequest(req)
176
+ * .info("Processing request");
177
+ * ```
178
+ */
179
+ withRequest(req: Request): LoggerChain;
105
180
  error(message: string, stackTrace?: string): Promise<void>;
106
181
  info(message: string): Promise<void>;
107
182
  audit(action: string, resource: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/services/logger.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/services/logger.service.ts"],"names":[],"mappings":"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"}