@discover-cloud/shared 1.2.8 → 1.3.0

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 (165) hide show
  1. package/dist/authorization/index.d.ts +1 -1
  2. package/dist/authorization/index.js +1 -1
  3. package/dist/authorization/permission-cache.service.d.ts +104 -16
  4. package/dist/authorization/permission-cache.service.js +156 -143
  5. package/dist/authorization/permission-checker.d.ts +30 -0
  6. package/dist/authorization/permission-checker.js +40 -0
  7. package/dist/contracts/auth-service/account.dto.d.ts +30 -0
  8. package/dist/contracts/auth-service/account.dto.js +7 -0
  9. package/dist/contracts/auth-service/auth.dto.d.ts +21 -0
  10. package/dist/contracts/auth-service/auth.dto.js +10 -0
  11. package/dist/dtos/auth-service.dto.d.ts +72 -26
  12. package/dist/dtos/auth-service.dto.js +4 -0
  13. package/dist/dtos/cloud-service.dto.d.ts +51 -27
  14. package/dist/dtos/cloud-service.dto.js +5 -0
  15. package/dist/dtos/insights-service.dto.d.ts +18 -27
  16. package/dist/dtos/insights-service.dto.js +8 -0
  17. package/dist/dtos/response.dto.d.ts +7 -84
  18. package/dist/dtos/response.dto.js +2 -21
  19. package/dist/dtos/user-service.dto.d.ts +118 -13
  20. package/dist/enums/domain.enums.d.ts +246 -75
  21. package/dist/enums/domain.enums.js +305 -102
  22. package/dist/enums/permissions.enums.d.ts +142 -80
  23. package/dist/enums/permissions.enums.js +174 -133
  24. package/dist/errors/app-error.d.ts +13 -18
  25. package/dist/errors/app-error.js +14 -20
  26. package/dist/errors/http-errors.d.ts +105 -17
  27. package/dist/errors/http-errors.js +118 -33
  28. package/dist/http/index.d.ts +1 -0
  29. package/dist/http/index.js +1 -0
  30. package/dist/http/request-context.d.ts +8 -0
  31. package/dist/http/request-context.js +37 -0
  32. package/dist/http/service-client.d.ts +91 -38
  33. package/dist/http/service-client.js +102 -53
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.js +1 -0
  36. package/dist/jwt/index.d.ts +2 -1
  37. package/dist/jwt/index.js +2 -1
  38. package/dist/jwt/machine-jwt-verifier.d.ts +21 -0
  39. package/dist/jwt/machine-jwt-verifier.js +84 -0
  40. package/dist/jwt/machine-token-client.d.ts +35 -4
  41. package/dist/jwt/machine-token-client.js +57 -23
  42. package/dist/jwt/user-jwt-verifier.d.ts +31 -0
  43. package/dist/jwt/user-jwt-verifier.js +101 -0
  44. package/dist/messaging/index.d.ts +1 -0
  45. package/dist/{security → messaging}/index.js +1 -1
  46. package/dist/messaging/rabbitmq.client.d.ts +13 -0
  47. package/dist/messaging/rabbitmq.client.js +127 -0
  48. package/dist/middleware/error-handler.middleware.d.ts +8 -28
  49. package/dist/middleware/error-handler.middleware.js +61 -52
  50. package/dist/middleware/index.d.ts +7 -5
  51. package/dist/middleware/index.js +7 -5
  52. package/dist/middleware/request-context.middleware.d.ts +17 -0
  53. package/dist/middleware/request-context.middleware.js +73 -0
  54. package/dist/middleware/require-auth.middleware.d.ts +17 -70
  55. package/dist/middleware/require-auth.middleware.js +24 -103
  56. package/dist/middleware/require-machine.middleware.d.ts +38 -0
  57. package/dist/middleware/require-machine.middleware.js +123 -0
  58. package/dist/middleware/require-org-permission-from-body.middleware.d.ts +10 -0
  59. package/dist/middleware/require-org-permission-from-body.middleware.js +24 -0
  60. package/dist/middleware/require-org-permission.middleware.d.ts +19 -0
  61. package/dist/middleware/require-org-permission.middleware.js +115 -0
  62. package/dist/middleware/require-platform-permission.middleware.d.ts +19 -0
  63. package/dist/middleware/require-platform-permission.middleware.js +91 -0
  64. package/dist/middleware/require-user.middleware.d.ts +14 -0
  65. package/dist/middleware/require-user.middleware.js +30 -0
  66. package/dist/middleware/require-workspace-permission.middleware.d.ts +20 -0
  67. package/dist/middleware/require-workspace-permission.middleware.js +114 -0
  68. package/dist/middleware/validate.middleware.d.ts +29 -29
  69. package/dist/middleware/validate.middleware.js +30 -32
  70. package/dist/types/express.types.d.ts +83 -122
  71. package/dist/types/express.types.js +28 -47
  72. package/dist/utils/date.util.d.ts +6 -0
  73. package/dist/utils/date.util.js +11 -0
  74. package/dist/utils/env.util.d.ts +6 -0
  75. package/dist/utils/env.util.js +19 -0
  76. package/dist/utils/index.d.ts +5 -4
  77. package/dist/utils/index.js +5 -4
  78. package/dist/utils/logger.util.d.ts +26 -0
  79. package/dist/utils/logger.util.js +53 -0
  80. package/dist/utils/pagination.util.d.ts +6 -0
  81. package/dist/utils/pagination.util.js +20 -0
  82. package/dist/utils/response.util.d.ts +27 -0
  83. package/dist/utils/response.util.js +56 -0
  84. package/dist/utils/slug.util.d.ts +9 -0
  85. package/dist/utils/slug.util.js +32 -0
  86. package/dist/utils/url-safety.util.d.ts +6 -0
  87. package/dist/utils/url-safety.util.js +72 -0
  88. package/package.json +3 -1
  89. package/dist/authorization/permissions.d.ts +0 -78
  90. package/dist/authorization/permissions.js +0 -174
  91. package/dist/context/access-context.d.ts +0 -10
  92. package/dist/context/access-context.js +0 -2
  93. package/dist/context/index.d.ts +0 -1
  94. package/dist/context/index.js +0 -17
  95. package/dist/dto/auth-service.dtos.d.ts +0 -44
  96. package/dist/dto/auth-service.dtos.js +0 -2
  97. package/dist/dto/index.d.ts +0 -3
  98. package/dist/dto/index.js +0 -19
  99. package/dist/dto/response.dtos.d.ts +0 -55
  100. package/dist/dto/response.dtos.js +0 -6
  101. package/dist/dto/user-service.dtos.d.ts +0 -50
  102. package/dist/dto/user-service.dtos.js +0 -2
  103. package/dist/enums/auth-service.enums.d.ts +0 -12
  104. package/dist/enums/auth-service.enums.js +0 -17
  105. package/dist/enums/permissions.types.d.ts +0 -12
  106. package/dist/enums/permissions.types.js +0 -17
  107. package/dist/enums/user-service.enums.d.ts +0 -32
  108. package/dist/enums/user-service.enums.js +0 -41
  109. package/dist/internal/index.d.ts +0 -4
  110. package/dist/internal/index.js +0 -20
  111. package/dist/internal/internal-jwt.service.d.ts +0 -13
  112. package/dist/internal/internal-jwt.service.js +0 -88
  113. package/dist/internal/internal-jwt.types.d.ts +0 -7
  114. package/dist/internal/internal-jwt.types.js +0 -2
  115. package/dist/internal/internal-key-manager.d.ts +0 -16
  116. package/dist/internal/internal-key-manager.js +0 -67
  117. package/dist/internal/registry.d.ts +0 -8
  118. package/dist/internal/registry.js +0 -34
  119. package/dist/internal/service-client.d.ts +0 -9
  120. package/dist/internal/service-client.js +0 -94
  121. package/dist/jwt/internal-jwt-verifier.d.ts +0 -41
  122. package/dist/jwt/internal-jwt-verifier.js +0 -185
  123. package/dist/jwt/jwt-verifier.d.ts +0 -9
  124. package/dist/jwt/jwt-verifier.js +0 -36
  125. package/dist/jwt/service-client.d.ts +0 -7
  126. package/dist/jwt/service-client.js +0 -87
  127. package/dist/middleware/authorize.d.ts +0 -3
  128. package/dist/middleware/authorize.js +0 -24
  129. package/dist/middleware/authorize.middleware.d.ts +0 -54
  130. package/dist/middleware/authorize.middleware.js +0 -104
  131. package/dist/middleware/error-handler.d.ts +0 -4
  132. package/dist/middleware/error-handler.js +0 -23
  133. package/dist/middleware/request-id.d.ts +0 -2
  134. package/dist/middleware/request-id.js +0 -9
  135. package/dist/middleware/request-id.middleware.d.ts +0 -22
  136. package/dist/middleware/request-id.middleware.js +0 -34
  137. package/dist/middleware/require-auth.d.ts +0 -10
  138. package/dist/middleware/require-auth.js +0 -34
  139. package/dist/middleware/require-human.middleware.d.ts +0 -2
  140. package/dist/middleware/require-human.middleware.js +0 -18
  141. package/dist/middleware/require-internal.middleware.d.ts +0 -18
  142. package/dist/middleware/require-internal.middleware.js +0 -183
  143. package/dist/middleware/validate.d.ts +0 -5
  144. package/dist/middleware/validate.js +0 -18
  145. package/dist/middleware/validated-merge.middleware.d.ts +0 -20
  146. package/dist/middleware/validated-merge.middleware.js +0 -33
  147. package/dist/middleware/verify-internal-jwt.d.ts +0 -7
  148. package/dist/middleware/verify-internal-jwt.js +0 -25
  149. package/dist/security/guard.d.ts +0 -10
  150. package/dist/security/guard.js +0 -40
  151. package/dist/security/index.d.ts +0 -1
  152. package/dist/types/express.d.ts +0 -22
  153. package/dist/types/express.js +0 -3
  154. package/dist/utils/date.utils.d.ts +0 -25
  155. package/dist/utils/date.utils.js +0 -30
  156. package/dist/utils/env.d.ts +0 -46
  157. package/dist/utils/env.js +0 -61
  158. package/dist/utils/env.utils.d.ts +0 -46
  159. package/dist/utils/env.utils.js +0 -61
  160. package/dist/utils/logger.utils.d.ts +0 -66
  161. package/dist/utils/logger.utils.js +0 -97
  162. package/dist/utils/response.d.ts +0 -4
  163. package/dist/utils/response.js +0 -35
  164. package/dist/utils/response.utils.d.ts +0 -54
  165. package/dist/utils/response.utils.js +0 -85
@@ -1,44 +0,0 @@
1
- import { AccountStatus } from "../enums";
2
- export interface AccountDto {
3
- id: string;
4
- email: string;
5
- isVerified: boolean;
6
- status: AccountStatus;
7
- createdAt: Date;
8
- updatedAt: Date;
9
- }
10
- export interface EmailVerificationDto {
11
- id: string;
12
- accountId: string;
13
- token: string;
14
- expiresAt: Date;
15
- isUsed: boolean;
16
- createdAt: Date;
17
- }
18
- export interface OAuthIdentityDto {
19
- id: string;
20
- accountId: string;
21
- provider: string;
22
- providerId: string;
23
- createdAt: Date;
24
- updatedAt: Date;
25
- }
26
- export interface PasswordResetDto {
27
- id: string;
28
- accountId: string;
29
- token: string;
30
- expiresAt: Date;
31
- isUsed: boolean;
32
- createdAt: Date;
33
- }
34
- export interface SessionDto {
35
- id: string;
36
- accountId: string;
37
- expiresAt: Date;
38
- revokedAt: Date | null;
39
- ipAddress: string | null;
40
- userAgent: string | null;
41
- device: string | null;
42
- createdAt: Date;
43
- updatedAt: Date;
44
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,3 +0,0 @@
1
- export * from "./user-service.dtos";
2
- export * from "./auth-service.dtos";
3
- export * from "./response.dtos";
package/dist/dto/index.js DELETED
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./user-service.dtos"), exports);
18
- __exportStar(require("./auth-service.dtos"), exports);
19
- __exportStar(require("./response.dtos"), exports);
@@ -1,55 +0,0 @@
1
- export interface ApiMeta {
2
- requestId: string;
3
- timestamp: string;
4
- }
5
- export interface ApiSuccessResponse<T> {
6
- success: true;
7
- data: T;
8
- meta: ApiMeta;
9
- }
10
- export interface ApiErrorResponse {
11
- success: false;
12
- error: {
13
- code: string;
14
- message: string;
15
- details?: unknown;
16
- };
17
- meta: ApiMeta;
18
- }
19
- /**
20
- * Returned on login / token refresh.
21
- * accessToken goes in the response body.
22
- * refreshToken goes in an HttpOnly cookie — not in the body.
23
- * Only include refreshToken here if your client explicitly needs it
24
- * (e.g. mobile clients that can't use cookies).
25
- */
26
- export interface TokensResponseDto {
27
- accessToken: string;
28
- }
29
- /** Generic message — use for simple confirmations */
30
- export interface MessageResponseDto {
31
- message: string;
32
- }
33
- /**
34
- * Generic action confirmation — use when the client needs to know
35
- * which action was performed (e.g. in a polling or event-driven context).
36
- *
37
- * action: machine-readable string, e.g. "account.suspended", "session.revoked"
38
- * message: human-readable description
39
- */
40
- export interface ActionResponseDto {
41
- action: string;
42
- message: string;
43
- }
44
- export interface PaginationMeta {
45
- page: number;
46
- pageSize: number;
47
- totalItems: number;
48
- totalPages: number;
49
- hasNext: boolean;
50
- hasPrev: boolean;
51
- }
52
- export interface PaginatedResponseDto<T> {
53
- items: T[];
54
- pagination: PaginationMeta;
55
- }
@@ -1,6 +0,0 @@
1
- "use strict";
2
- /* ====================================================================
3
- RESPONSE DTOs
4
- Shared HTTP response shapes used across all services.
5
- ==================================================================== */
6
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,50 +0,0 @@
1
- import { AccountStatus, OrganizationRole, MembershipStatus, OrganizationStatus, Theme, Currency } from "../enums";
2
- export interface UserDto {
3
- id: string;
4
- email: string;
5
- status: AccountStatus;
6
- createdAt: Date;
7
- updatedAt: Date;
8
- }
9
- export interface UserProfileDto {
10
- id: string;
11
- userId: string;
12
- displayName: string | null;
13
- avatarUrl: string | null;
14
- jobTitle: string | null;
15
- bio: string | null;
16
- timezone: string | null;
17
- locale: string;
18
- country: string | null;
19
- pronouns: string | null;
20
- createdAt: Date;
21
- updatedAt: Date;
22
- }
23
- export interface UserPreferencesDto {
24
- id: string;
25
- userId: string;
26
- theme: Theme;
27
- language: string;
28
- currency: Currency;
29
- emailAlerts: boolean;
30
- createdAt: Date;
31
- updatedAt: Date;
32
- }
33
- export interface OrganizationDto {
34
- id: string;
35
- name: string;
36
- slug: string;
37
- status: OrganizationStatus;
38
- createdAt: Date;
39
- updatedAt: Date;
40
- deletedAt: Date | null;
41
- }
42
- export interface OrganizationMemberDto {
43
- id: string;
44
- userId: string;
45
- organizationId: string;
46
- role: OrganizationRole;
47
- status: MembershipStatus;
48
- createdAt: Date;
49
- updatedAt: Date;
50
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,12 +0,0 @@
1
- export declare enum AccountStatus {
2
- ACTIVE = "ACTIVE",
3
- SUSPENDED = "SUSPENDED",
4
- DELETED = "DELETED"
5
- }
6
- export declare enum AccountRole {
7
- SUPERADMIN = "SUPERADMIN",
8
- ADMIN = "ADMIN",
9
- SUPPORT = "SUPPORT",
10
- MODERATOR = "MODERATOR",
11
- USER = "USER"
12
- }
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AccountRole = exports.AccountStatus = void 0;
4
- var AccountStatus;
5
- (function (AccountStatus) {
6
- AccountStatus["ACTIVE"] = "ACTIVE";
7
- AccountStatus["SUSPENDED"] = "SUSPENDED";
8
- AccountStatus["DELETED"] = "DELETED";
9
- })(AccountStatus || (exports.AccountStatus = AccountStatus = {}));
10
- var AccountRole;
11
- (function (AccountRole) {
12
- AccountRole["SUPERADMIN"] = "SUPERADMIN";
13
- AccountRole["ADMIN"] = "ADMIN";
14
- AccountRole["SUPPORT"] = "SUPPORT";
15
- AccountRole["MODERATOR"] = "MODERATOR";
16
- AccountRole["USER"] = "USER";
17
- })(AccountRole || (exports.AccountRole = AccountRole = {}));
@@ -1,12 +0,0 @@
1
- export declare enum GlobalPermission {
2
- MANAGE_SYSTEM = "manage_system",
3
- MANAGE_ALL_ORGS = "manage_all_orgs",
4
- MANAGE_USERS = "manage_users",
5
- VIEW_SYSTEM_LOGS = "view_system_logs",
6
- SUPPORT_ACTIONS = "support_actions",
7
- MODERATE_CONTENT = "moderate_content"
8
- }
9
- export declare enum OrgPermission {
10
- MANAGE_ORG = "manage_org",
11
- MANAGE_MEMBERS = "manage_members"
12
- }
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OrgPermission = exports.GlobalPermission = void 0;
4
- var GlobalPermission;
5
- (function (GlobalPermission) {
6
- GlobalPermission["MANAGE_SYSTEM"] = "manage_system";
7
- GlobalPermission["MANAGE_ALL_ORGS"] = "manage_all_orgs";
8
- GlobalPermission["MANAGE_USERS"] = "manage_users";
9
- GlobalPermission["VIEW_SYSTEM_LOGS"] = "view_system_logs";
10
- GlobalPermission["SUPPORT_ACTIONS"] = "support_actions";
11
- GlobalPermission["MODERATE_CONTENT"] = "moderate_content";
12
- })(GlobalPermission || (exports.GlobalPermission = GlobalPermission = {}));
13
- var OrgPermission;
14
- (function (OrgPermission) {
15
- OrgPermission["MANAGE_ORG"] = "manage_org";
16
- OrgPermission["MANAGE_MEMBERS"] = "manage_members";
17
- })(OrgPermission || (exports.OrgPermission = OrgPermission = {}));
@@ -1,32 +0,0 @@
1
- export declare enum OrganizationRole {
2
- OWNER = "OWNER",
3
- ADMIN = "ADMIN",
4
- EDITOR = "EDITOR",
5
- VIEWER = "VIEWER"
6
- }
7
- export declare enum UserStatus {
8
- ACTIVE = "ACTIVE",
9
- SUSPENDED = "SUSPENDED",
10
- DELETED = "DELETED"
11
- }
12
- export declare enum OrganizationStatus {
13
- ACTIVE = "ACTIVE",
14
- SUSPENDED = "SUSPENDED",
15
- CLOSED = "CLOSED"
16
- }
17
- export declare enum MembershipStatus {
18
- ACTIVE = "ACTIVE",
19
- INVITED = "INVITED",
20
- SUSPENDED = "SUSPENDED"
21
- }
22
- export declare enum Theme {
23
- LIGHT = "LIGHT",
24
- DARK = "DARK",
25
- SYSTEM = "SYSTEM"
26
- }
27
- export declare enum Currency {
28
- USD = "USD",
29
- EUR = "EUR",
30
- GBP = "GBP",
31
- INR = "INR"
32
- }
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Currency = exports.Theme = exports.MembershipStatus = exports.OrganizationStatus = exports.UserStatus = exports.OrganizationRole = void 0;
4
- var OrganizationRole;
5
- (function (OrganizationRole) {
6
- OrganizationRole["OWNER"] = "OWNER";
7
- OrganizationRole["ADMIN"] = "ADMIN";
8
- OrganizationRole["EDITOR"] = "EDITOR";
9
- OrganizationRole["VIEWER"] = "VIEWER";
10
- })(OrganizationRole || (exports.OrganizationRole = OrganizationRole = {}));
11
- var UserStatus;
12
- (function (UserStatus) {
13
- UserStatus["ACTIVE"] = "ACTIVE";
14
- UserStatus["SUSPENDED"] = "SUSPENDED";
15
- UserStatus["DELETED"] = "DELETED";
16
- })(UserStatus || (exports.UserStatus = UserStatus = {}));
17
- var OrganizationStatus;
18
- (function (OrganizationStatus) {
19
- OrganizationStatus["ACTIVE"] = "ACTIVE";
20
- OrganizationStatus["SUSPENDED"] = "SUSPENDED";
21
- OrganizationStatus["CLOSED"] = "CLOSED";
22
- })(OrganizationStatus || (exports.OrganizationStatus = OrganizationStatus = {}));
23
- var MembershipStatus;
24
- (function (MembershipStatus) {
25
- MembershipStatus["ACTIVE"] = "ACTIVE";
26
- MembershipStatus["INVITED"] = "INVITED";
27
- MembershipStatus["SUSPENDED"] = "SUSPENDED";
28
- })(MembershipStatus || (exports.MembershipStatus = MembershipStatus = {}));
29
- var Theme;
30
- (function (Theme) {
31
- Theme["LIGHT"] = "LIGHT";
32
- Theme["DARK"] = "DARK";
33
- Theme["SYSTEM"] = "SYSTEM";
34
- })(Theme || (exports.Theme = Theme = {}));
35
- var Currency;
36
- (function (Currency) {
37
- Currency["USD"] = "USD";
38
- Currency["EUR"] = "EUR";
39
- Currency["GBP"] = "GBP";
40
- Currency["INR"] = "INR";
41
- })(Currency || (exports.Currency = Currency = {}));
@@ -1,4 +0,0 @@
1
- export * from "./internal-jwt.service";
2
- export * from "./registry";
3
- export * from "./internal-jwt.types";
4
- export * from "./internal-key-manager";
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./internal-jwt.service"), exports);
18
- __exportStar(require("./registry"), exports);
19
- __exportStar(require("./internal-jwt.types"), exports);
20
- __exportStar(require("./internal-key-manager"), exports);
@@ -1,13 +0,0 @@
1
- import { InternalKeyManager } from "./internal-key-manager";
2
- import { InternalJwtPayload } from "./internal-jwt.types";
3
- export declare class InternalJwtService {
4
- private readonly keyManager;
5
- private readonly serviceName;
6
- private jwksCache;
7
- constructor(keyManager: InternalKeyManager);
8
- sign(payload: {
9
- requestId: string;
10
- }, targetService: string): Promise<string>;
11
- verify(token: string): Promise<InternalJwtPayload>;
12
- private getRemoteJWKS;
13
- }
@@ -1,88 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.InternalJwtService = void 0;
37
- const jose = __importStar(require("jose"));
38
- class InternalJwtService {
39
- constructor(keyManager) {
40
- this.keyManager = keyManager;
41
- this.jwksCache = new Map();
42
- this.serviceName = process.env.SERVICE_NAME || "unknown-service";
43
- }
44
- async sign(payload, targetService) {
45
- const signer = this.keyManager.getPrivateKey();
46
- const kid = this.keyManager.getKid();
47
- return new jose.SignJWT({
48
- ...payload,
49
- typ: "internal"
50
- })
51
- .setProtectedHeader({ alg: "RS256", kid })
52
- .setIssuer(this.serviceName)
53
- .setAudience(targetService)
54
- .setIssuedAt()
55
- .setExpirationTime("1m")
56
- .sign(signer);
57
- }
58
- async verify(token) {
59
- const unverified = jose.decodeJwt(token);
60
- if (!unverified.iss)
61
- throw new Error("Missing issuer");
62
- if (unverified.typ !== "internal")
63
- throw new Error("Invalid token type");
64
- const jwks = this.getRemoteJWKS(unverified.iss);
65
- const { payload } = await jose.jwtVerify(token, jwks, {
66
- algorithms: ["RS256"],
67
- audience: this.serviceName,
68
- issuer: unverified.iss
69
- });
70
- return payload;
71
- }
72
- getRemoteJWKS(issuer) {
73
- const envKey = `${issuer.replace(/-/g, "_").toUpperCase()}_URL`;
74
- const baseUrl = process.env[envKey];
75
- const url = baseUrl
76
- ? `${baseUrl}/internal/jwks`
77
- : `http://${issuer}/internal/jwks`;
78
- if (!this.jwksCache.has(url)) {
79
- console.log(`[InternalJwt] Caching JWKS for ${issuer} at ${url}`);
80
- this.jwksCache.set(url, jose.createRemoteJWKSet(new URL(url), {
81
- cacheMaxAge: 600000,
82
- cooldownDuration: 30000
83
- }));
84
- }
85
- return this.jwksCache.get(url);
86
- }
87
- }
88
- exports.InternalJwtService = InternalJwtService;
@@ -1,7 +0,0 @@
1
- import { JWTPayload } from "jose";
2
- export interface InternalJwtPayload extends JWTPayload {
3
- iss: string;
4
- aud: string;
5
- typ: "internal";
6
- requestId: string;
7
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,16 +0,0 @@
1
- import { JWK } from "jose";
2
- import { KeyObject } from "crypto";
3
- export declare class InternalKeyManager {
4
- private privateKey;
5
- private publicKey;
6
- private jwks;
7
- private readonly serviceName;
8
- private readonly keyPath;
9
- constructor();
10
- private init;
11
- getPrivateKey(): CryptoKey | KeyObject;
12
- getPublicJwks(): {
13
- keys: JWK[];
14
- };
15
- getKid(): string;
16
- }
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.InternalKeyManager = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const jose_1 = require("jose");
10
- class InternalKeyManager {
11
- constructor() {
12
- this.jwks = [];
13
- this.serviceName = process.env.SERVICE_NAME || "unknown-service";
14
- this.keyPath = (() => {
15
- const envPath = process.env.INTERNAL_KEYS_PATH;
16
- if (!envPath) {
17
- console.warn("[InternalKeyManager] INTERNAL_KEYS_PATH not set. Using default: src/keys/internal");
18
- return path_1.default.join(process.cwd(), "src/keys/internal");
19
- }
20
- return path_1.default.isAbsolute(envPath) ? envPath : path_1.default.join(process.cwd(), envPath);
21
- })();
22
- this.init();
23
- }
24
- async init() {
25
- try {
26
- if (!fs_1.default.existsSync(this.keyPath)) {
27
- console.error(`[InternalKeyManager] Missing keys directory: ${this.keyPath}`);
28
- return;
29
- }
30
- const privPath = path_1.default.join(this.keyPath, "/private/private.pem");
31
- if (fs_1.default.existsSync(privPath)) {
32
- const privPem = fs_1.default.readFileSync(privPath, "utf8");
33
- this.privateKey = await (0, jose_1.importPKCS8)(privPem, "RS256");
34
- }
35
- const pubPath = path_1.default.join(this.keyPath, "/public/public.pem");
36
- if (fs_1.default.existsSync(pubPath)) {
37
- const pubPem = fs_1.default.readFileSync(pubPath, "utf8");
38
- this.publicKey = await (0, jose_1.importSPKI)(pubPem, "RS256");
39
- const jwk = await (0, jose_1.exportJWK)(this.publicKey);
40
- this.jwks = [{
41
- ...jwk,
42
- kid: `${this.serviceName}-internal`,
43
- use: "sig",
44
- alg: "RS256"
45
- }];
46
- }
47
- console.log(`[InternalKeyManager] Loaded keys for: ${this.serviceName}`);
48
- }
49
- catch (error) {
50
- console.error("[InternalKeyManager] Failed to load keys.", error);
51
- if (process.env.NODE_ENV === "production")
52
- process.exit(1);
53
- }
54
- }
55
- getPrivateKey() {
56
- if (!this.privateKey)
57
- throw new Error("Private key not loaded");
58
- return this.privateKey;
59
- }
60
- getPublicJwks() {
61
- return { keys: this.jwks };
62
- }
63
- getKid() {
64
- return `${this.serviceName}-internal`;
65
- }
66
- }
67
- exports.InternalKeyManager = InternalKeyManager;
@@ -1,8 +0,0 @@
1
- export declare const SERVICE_REGISTRY: {
2
- readonly auth: "auth-service";
3
- readonly user: "user-service";
4
- readonly billing: "billing-service";
5
- readonly notifications: "notification-service";
6
- };
7
- export type ServiceName = typeof SERVICE_REGISTRY[keyof typeof SERVICE_REGISTRY];
8
- export declare const extractServiceName: (url?: string) => ServiceName | null;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractServiceName = exports.SERVICE_REGISTRY = void 0;
4
- exports.SERVICE_REGISTRY = {
5
- auth: "auth-service",
6
- user: "user-service",
7
- billing: "billing-service",
8
- notifications: "notification-service"
9
- };
10
- const extractServiceName = (url) => {
11
- if (!url)
12
- return null;
13
- try {
14
- const u = new URL(url);
15
- // If localhost, infer by port
16
- switch (u.port) {
17
- case "3001": return "auth-service";
18
- case "3002": return "user-service";
19
- case "3003": return "billing-service";
20
- case "3004": return "notification-service";
21
- default: break;
22
- }
23
- // Docker/K8s case: hostname is service name
24
- const host = u.hostname.split(".")[0];
25
- if (Object.values(exports.SERVICE_REGISTRY).includes(host)) {
26
- return host;
27
- }
28
- return null;
29
- }
30
- catch {
31
- return null;
32
- }
33
- };
34
- exports.extractServiceName = extractServiceName;
@@ -1,9 +0,0 @@
1
- import { AxiosInstance } from "axios";
2
- import { InternalJwtService } from "./internal-jwt.service";
3
- export declare class ServiceClient {
4
- private readonly internalJwt;
5
- readonly http: AxiosInstance;
6
- constructor(internalJwt: InternalJwtService);
7
- private setupRetry;
8
- private setupInterceptors;
9
- }