@onroad/core 4.0.0-alpha.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 (202) hide show
  1. package/README.md +670 -0
  2. package/dist/OnRoadExpress.d.ts +59 -0
  3. package/dist/OnRoadExpress.d.ts.map +1 -0
  4. package/dist/OnRoadExpress.js +320 -0
  5. package/dist/OnRoadExpress.js.map +1 -0
  6. package/dist/container/Container.d.ts +53 -0
  7. package/dist/container/Container.d.ts.map +1 -0
  8. package/dist/container/Container.js +175 -0
  9. package/dist/container/Container.js.map +1 -0
  10. package/dist/container/index.d.ts +3 -0
  11. package/dist/container/index.d.ts.map +1 -0
  12. package/dist/container/index.js +2 -0
  13. package/dist/container/index.js.map +1 -0
  14. package/dist/context/RequestContext.d.ts +10 -0
  15. package/dist/context/RequestContext.d.ts.map +1 -0
  16. package/dist/context/RequestContext.js +11 -0
  17. package/dist/context/RequestContext.js.map +1 -0
  18. package/dist/core/AbstractController.d.ts +20 -0
  19. package/dist/core/AbstractController.d.ts.map +1 -0
  20. package/dist/core/AbstractController.js +17 -0
  21. package/dist/core/AbstractController.js.map +1 -0
  22. package/dist/core/AbstractRepository.d.ts +8 -0
  23. package/dist/core/AbstractRepository.d.ts.map +1 -0
  24. package/dist/core/AbstractRepository.js +3 -0
  25. package/dist/core/AbstractRepository.js.map +1 -0
  26. package/dist/core/AbstractService.d.ts +12 -0
  27. package/dist/core/AbstractService.d.ts.map +1 -0
  28. package/dist/core/AbstractService.js +14 -0
  29. package/dist/core/AbstractService.js.map +1 -0
  30. package/dist/core/MongooseRepository.d.ts +19 -0
  31. package/dist/core/MongooseRepository.d.ts.map +1 -0
  32. package/dist/core/MongooseRepository.js +48 -0
  33. package/dist/core/MongooseRepository.js.map +1 -0
  34. package/dist/core/RequestEventBus.d.ts +18 -0
  35. package/dist/core/RequestEventBus.d.ts.map +1 -0
  36. package/dist/core/RequestEventBus.js +43 -0
  37. package/dist/core/RequestEventBus.js.map +1 -0
  38. package/dist/core/Sentinel.d.ts +19 -0
  39. package/dist/core/Sentinel.d.ts.map +1 -0
  40. package/dist/core/Sentinel.js +56 -0
  41. package/dist/core/Sentinel.js.map +1 -0
  42. package/dist/core/SequelizeRepository.d.ts +19 -0
  43. package/dist/core/SequelizeRepository.d.ts.map +1 -0
  44. package/dist/core/SequelizeRepository.js +48 -0
  45. package/dist/core/SequelizeRepository.js.map +1 -0
  46. package/dist/core/index.d.ts +11 -0
  47. package/dist/core/index.d.ts.map +1 -0
  48. package/dist/core/index.js +8 -0
  49. package/dist/core/index.js.map +1 -0
  50. package/dist/database/ConnectionManager.d.ts +26 -0
  51. package/dist/database/ConnectionManager.d.ts.map +1 -0
  52. package/dist/database/ConnectionManager.js +17 -0
  53. package/dist/database/ConnectionManager.js.map +1 -0
  54. package/dist/database/MongoConnectionManager.d.ts +8 -0
  55. package/dist/database/MongoConnectionManager.d.ts.map +1 -0
  56. package/dist/database/MongoConnectionManager.js +47 -0
  57. package/dist/database/MongoConnectionManager.js.map +1 -0
  58. package/dist/database/SequelizeConnectionManager.d.ts +13 -0
  59. package/dist/database/SequelizeConnectionManager.d.ts.map +1 -0
  60. package/dist/database/SequelizeConnectionManager.js +58 -0
  61. package/dist/database/SequelizeConnectionManager.js.map +1 -0
  62. package/dist/database/index.d.ts +6 -0
  63. package/dist/database/index.d.ts.map +1 -0
  64. package/dist/database/index.js +4 -0
  65. package/dist/database/index.js.map +1 -0
  66. package/dist/entity/EntityRegistry.d.ts +9 -0
  67. package/dist/entity/EntityRegistry.d.ts.map +1 -0
  68. package/dist/entity/EntityRegistry.js +114 -0
  69. package/dist/entity/EntityRegistry.js.map +1 -0
  70. package/dist/entity/decorators.d.ts +62 -0
  71. package/dist/entity/decorators.d.ts.map +1 -0
  72. package/dist/entity/decorators.js +103 -0
  73. package/dist/entity/decorators.js.map +1 -0
  74. package/dist/entity/index.d.ts +4 -0
  75. package/dist/entity/index.d.ts.map +1 -0
  76. package/dist/entity/index.js +3 -0
  77. package/dist/entity/index.js.map +1 -0
  78. package/dist/filters/FilterChain.d.ts +34 -0
  79. package/dist/filters/FilterChain.d.ts.map +1 -0
  80. package/dist/filters/FilterChain.js +42 -0
  81. package/dist/filters/FilterChain.js.map +1 -0
  82. package/dist/filters/builtins/CorsFilter.d.ts +22 -0
  83. package/dist/filters/builtins/CorsFilter.d.ts.map +1 -0
  84. package/dist/filters/builtins/CorsFilter.js +41 -0
  85. package/dist/filters/builtins/CorsFilter.js.map +1 -0
  86. package/dist/filters/builtins/JwtFilter.d.ts +27 -0
  87. package/dist/filters/builtins/JwtFilter.d.ts.map +1 -0
  88. package/dist/filters/builtins/JwtFilter.js +35 -0
  89. package/dist/filters/builtins/JwtFilter.js.map +1 -0
  90. package/dist/filters/builtins/RequestContextFilter.d.ts +12 -0
  91. package/dist/filters/builtins/RequestContextFilter.d.ts.map +1 -0
  92. package/dist/filters/builtins/RequestContextFilter.js +32 -0
  93. package/dist/filters/builtins/RequestContextFilter.js.map +1 -0
  94. package/dist/filters/builtins/RoleFilter.d.ts +27 -0
  95. package/dist/filters/builtins/RoleFilter.d.ts.map +1 -0
  96. package/dist/filters/builtins/RoleFilter.js +36 -0
  97. package/dist/filters/builtins/RoleFilter.js.map +1 -0
  98. package/dist/filters/builtins/TenantFilter.d.ts +26 -0
  99. package/dist/filters/builtins/TenantFilter.d.ts.map +1 -0
  100. package/dist/filters/builtins/TenantFilter.js +29 -0
  101. package/dist/filters/builtins/TenantFilter.js.map +1 -0
  102. package/dist/filters/builtins/index.d.ts +11 -0
  103. package/dist/filters/builtins/index.d.ts.map +1 -0
  104. package/dist/filters/builtins/index.js +6 -0
  105. package/dist/filters/builtins/index.js.map +1 -0
  106. package/dist/filters/index.d.ts +5 -0
  107. package/dist/filters/index.d.ts.map +1 -0
  108. package/dist/filters/index.js +4 -0
  109. package/dist/filters/index.js.map +1 -0
  110. package/dist/index.d.ts +27 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +31 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/logging/OnRoadLogger.d.ts +8 -0
  115. package/dist/logging/OnRoadLogger.d.ts.map +1 -0
  116. package/dist/logging/OnRoadLogger.js +2 -0
  117. package/dist/logging/OnRoadLogger.js.map +1 -0
  118. package/dist/logging/PinoLogger.d.ts +16 -0
  119. package/dist/logging/PinoLogger.d.ts.map +1 -0
  120. package/dist/logging/PinoLogger.js +33 -0
  121. package/dist/logging/PinoLogger.js.map +1 -0
  122. package/dist/logging/index.d.ts +4 -0
  123. package/dist/logging/index.d.ts.map +1 -0
  124. package/dist/logging/index.js +2 -0
  125. package/dist/logging/index.js.map +1 -0
  126. package/dist/messaging/MatchingObject.d.ts +9 -0
  127. package/dist/messaging/MatchingObject.d.ts.map +1 -0
  128. package/dist/messaging/MatchingObject.js +21 -0
  129. package/dist/messaging/MatchingObject.js.map +1 -0
  130. package/dist/messaging/index.d.ts +2 -0
  131. package/dist/messaging/index.d.ts.map +1 -0
  132. package/dist/messaging/index.js +2 -0
  133. package/dist/messaging/index.js.map +1 -0
  134. package/dist/plugins/OnRoadPlugin.d.ts +6 -0
  135. package/dist/plugins/OnRoadPlugin.d.ts.map +1 -0
  136. package/dist/plugins/OnRoadPlugin.js +2 -0
  137. package/dist/plugins/OnRoadPlugin.js.map +1 -0
  138. package/dist/plugins/index.d.ts +2 -0
  139. package/dist/plugins/index.d.ts.map +1 -0
  140. package/dist/plugins/index.js +2 -0
  141. package/dist/plugins/index.js.map +1 -0
  142. package/dist/providers/MessagingProvider.d.ts +17 -0
  143. package/dist/providers/MessagingProvider.d.ts.map +1 -0
  144. package/dist/providers/MessagingProvider.js +3 -0
  145. package/dist/providers/MessagingProvider.js.map +1 -0
  146. package/dist/providers/RealtimeProvider.d.ts +13 -0
  147. package/dist/providers/RealtimeProvider.d.ts.map +1 -0
  148. package/dist/providers/RealtimeProvider.js +3 -0
  149. package/dist/providers/RealtimeProvider.js.map +1 -0
  150. package/dist/providers/SocketProvider.d.ts +7 -0
  151. package/dist/providers/SocketProvider.d.ts.map +1 -0
  152. package/dist/providers/SocketProvider.js +3 -0
  153. package/dist/providers/SocketProvider.js.map +1 -0
  154. package/dist/providers/TaskSchedulerProvider.d.ts +19 -0
  155. package/dist/providers/TaskSchedulerProvider.d.ts.map +1 -0
  156. package/dist/providers/TaskSchedulerProvider.js +3 -0
  157. package/dist/providers/TaskSchedulerProvider.js.map +1 -0
  158. package/dist/providers/index.d.ts +8 -0
  159. package/dist/providers/index.d.ts.map +1 -0
  160. package/dist/providers/index.js +5 -0
  161. package/dist/providers/index.js.map +1 -0
  162. package/dist/security/decorators.d.ts +5 -0
  163. package/dist/security/decorators.d.ts.map +1 -0
  164. package/dist/security/decorators.js +26 -0
  165. package/dist/security/decorators.js.map +1 -0
  166. package/dist/security/index.d.ts +2 -0
  167. package/dist/security/index.d.ts.map +1 -0
  168. package/dist/security/index.js +2 -0
  169. package/dist/security/index.js.map +1 -0
  170. package/dist/storage/StorageProvider.d.ts +7 -0
  171. package/dist/storage/StorageProvider.d.ts.map +1 -0
  172. package/dist/storage/StorageProvider.js +3 -0
  173. package/dist/storage/StorageProvider.js.map +1 -0
  174. package/dist/storage/index.d.ts +2 -0
  175. package/dist/storage/index.d.ts.map +1 -0
  176. package/dist/storage/index.js +2 -0
  177. package/dist/storage/index.js.map +1 -0
  178. package/dist/transport/HttpTransport.d.ts +8 -0
  179. package/dist/transport/HttpTransport.d.ts.map +1 -0
  180. package/dist/transport/HttpTransport.js +26 -0
  181. package/dist/transport/HttpTransport.js.map +1 -0
  182. package/dist/transport/InterServiceTransport.d.ts +15 -0
  183. package/dist/transport/InterServiceTransport.d.ts.map +1 -0
  184. package/dist/transport/InterServiceTransport.js +20 -0
  185. package/dist/transport/InterServiceTransport.js.map +1 -0
  186. package/dist/transport/MessagingTransport.d.ts +9 -0
  187. package/dist/transport/MessagingTransport.d.ts.map +1 -0
  188. package/dist/transport/MessagingTransport.js +21 -0
  189. package/dist/transport/MessagingTransport.js.map +1 -0
  190. package/dist/transport/TransportFactory.d.ts +13 -0
  191. package/dist/transport/TransportFactory.d.ts.map +1 -0
  192. package/dist/transport/TransportFactory.js +35 -0
  193. package/dist/transport/TransportFactory.js.map +1 -0
  194. package/dist/transport/index.d.ts +6 -0
  195. package/dist/transport/index.d.ts.map +1 -0
  196. package/dist/transport/index.js +5 -0
  197. package/dist/transport/index.js.map +1 -0
  198. package/dist/types/express-augment.d.ts +27 -0
  199. package/dist/types/express-augment.d.ts.map +1 -0
  200. package/dist/types/express-augment.js +4 -0
  201. package/dist/types/express-augment.js.map +1 -0
  202. package/package.json +134 -0
@@ -0,0 +1,27 @@
1
+ import type { Request, Response } from "express";
2
+ import "../../types/express-augment.js";
3
+ import { OnRoadFilter } from "../FilterChain.js";
4
+ import type { FilterChain } from "../FilterChain.js";
5
+ export interface JwtFilterOptions {
6
+ /**
7
+ * Function that receives the raw token and returns the decoded payload.
8
+ * Throw any error to signal an invalid/expired token.
9
+ */
10
+ verify: (token: string) => Promise<unknown> | unknown;
11
+ /**
12
+ * Custom function to extract the token from the request.
13
+ * Default: reads "Authorization: Bearer <token>"
14
+ */
15
+ extractToken?: (req: Request) => string | undefined;
16
+ /**
17
+ * When true (default), requests without a token are rejected with 401.
18
+ * Set false to allow anonymous requests through (decoded will be undefined).
19
+ */
20
+ required?: boolean;
21
+ }
22
+ export declare class JwtFilter extends OnRoadFilter {
23
+ private readonly options;
24
+ constructor(options: JwtFilterOptions);
25
+ execute(req: Request, res: Response, chain: FilterChain): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=JwtFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JwtFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/builtins/JwtFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,gCAAgC,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IACrD;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAA;IACnD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;gBAE9B,OAAO,EAAE,gBAAgB;IAK/B,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAoB9E"}
@@ -0,0 +1,35 @@
1
+ import "../../types/express-augment.js";
2
+ import { OnRoadFilter } from "../FilterChain.js";
3
+ export class JwtFilter extends OnRoadFilter {
4
+ options;
5
+ constructor(options) {
6
+ super();
7
+ this.options = options;
8
+ }
9
+ async execute(req, res, chain) {
10
+ const extract = this.options.extractToken ?? extractBearerToken;
11
+ const token = extract(req);
12
+ if (!token) {
13
+ if (this.options.required !== false) {
14
+ res.status(401).json({ error: "Unauthorized", message: "Missing authentication token" });
15
+ return;
16
+ }
17
+ // Anonymous allowed — skip decode, proceed
18
+ return await chain.next(req, res);
19
+ }
20
+ try {
21
+ req.decoded = await this.options.verify(token);
22
+ await chain.next(req, res);
23
+ }
24
+ catch {
25
+ res.status(401).json({ error: "Unauthorized", message: "Invalid or expired token" });
26
+ }
27
+ }
28
+ }
29
+ function extractBearerToken(req) {
30
+ const auth = req.headers["authorization"];
31
+ if (!auth?.startsWith("Bearer "))
32
+ return undefined;
33
+ return auth.slice(7);
34
+ }
35
+ //# sourceMappingURL=JwtFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JwtFilter.js","sourceRoot":"","sources":["../../../src/filters/builtins/JwtFilter.ts"],"names":[],"mappings":"AACA,OAAO,gCAAgC,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAqBhD,MAAM,OAAO,SAAU,SAAQ,YAAY;IACxB,OAAO,CAAkB;IAE1C,YAAY,OAAyB;QACnC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,KAAkB;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,kBAAkB,CAAA;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QAE1B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAA;gBACxF,OAAM;YACR,CAAC;YACD,2CAA2C;YAC3C,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACnC,CAAC;QAED,IAAI,CAAC;YACH,GAAG,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC9C,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAA;QACtF,CAAC;IACH,CAAC;CACF;AAED,SAAS,kBAAkB,CAAC,GAAY;IACtC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IACzC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACtB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Request, Response } from "express";
2
+ import { OnRoadFilter, FilterChain } from "../FilterChain.js";
3
+ import type { OnRoadLogger } from "../../logging/OnRoadLogger.js";
4
+ export interface RequestContextFilterOptions {
5
+ logger: OnRoadLogger;
6
+ }
7
+ export declare class RequestContextFilter extends OnRoadFilter {
8
+ private readonly logger;
9
+ constructor(options: RequestContextFilterOptions);
10
+ execute(req: Request, _res: Response, chain: FilterChain): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=RequestContextFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestContextFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/builtins/RequestContextFilter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAU,MAAM,mBAAmB,CAAA;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAEjE,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,YAAY,CAAA;CACrB;AAED,qBACa,oBAAqB,SAAQ,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,OAAO,EAAE,2BAA2B;IAK1C,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ/E"}
@@ -0,0 +1,32 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { v4 as uuidv4 } from "uuid";
11
+ import { OnRoadFilter, Filter } from "../FilterChain.js";
12
+ let RequestContextFilter = class RequestContextFilter extends OnRoadFilter {
13
+ logger;
14
+ constructor(options) {
15
+ super();
16
+ this.logger = options.logger;
17
+ }
18
+ async execute(req, _res, chain) {
19
+ req.requestId = uuidv4();
20
+ req.logger = this.logger.child({
21
+ requestId: req.requestId,
22
+ ...(req.tenant !== undefined ? { tenant: req.tenant } : {}),
23
+ });
24
+ await chain.next(req, _res);
25
+ }
26
+ };
27
+ RequestContextFilter = __decorate([
28
+ Filter({ order: 1 }),
29
+ __metadata("design:paramtypes", [Object])
30
+ ], RequestContextFilter);
31
+ export { RequestContextFilter };
32
+ //# sourceMappingURL=RequestContextFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestContextFilter.js","sourceRoot":"","sources":["../../../src/filters/builtins/RequestContextFilter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,EAAE,YAAY,EAAe,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAQ9D,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,YAAY;IACnC,MAAM,CAAc;IAErC,YAAY,OAAoC;QAC9C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAY,EAAE,IAAc,EAAE,KAAkB;QAC5D,GAAG,CAAC,SAAS,GAAG,MAAM,EAAE,CAAA;QACxB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAA;QACF,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;CACF,CAAA;AAhBY,oBAAoB;IADhC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;GACR,oBAAoB,CAgBhC"}
@@ -0,0 +1,27 @@
1
+ import type { Request, Response } from "express";
2
+ import "../../types/express-augment.js";
3
+ import { OnRoadFilter } from "../FilterChain.js";
4
+ import type { FilterChain } from "../FilterChain.js";
5
+ export interface RoleFilterOptions {
6
+ /**
7
+ * Extract the current user's roles from the request.
8
+ * Default: reads req.user?.roles
9
+ */
10
+ getUserRoles?: (req: Request) => string[] | undefined;
11
+ /**
12
+ * Resolve which roles are required for the current request.
13
+ * Return undefined to allow all roles (no restriction for this route).
14
+ * Default: reads res.locals.requiredRoles (populated by route registration)
15
+ */
16
+ getRequiredRoles?: (req: Request, res: Response) => string[] | undefined;
17
+ /**
18
+ * Custom handler when access is denied. Default: 403 JSON response.
19
+ */
20
+ onForbidden?: (req: Request, res: Response) => void;
21
+ }
22
+ export declare class RoleFilter extends OnRoadFilter {
23
+ private readonly options;
24
+ constructor(options?: RoleFilterOptions);
25
+ execute(req: Request, res: Response, chain: FilterChain): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=RoleFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/builtins/RoleFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,gCAAgC,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,EAAE,GAAG,SAAS,CAAA;IACrD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,MAAM,EAAE,GAAG,SAAS,CAAA;IACxE;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpD;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;gBAE/B,OAAO,GAAE,iBAAsB;IAKrC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB9E"}
@@ -0,0 +1,36 @@
1
+ import "../../types/express-augment.js";
2
+ import { OnRoadFilter } from "../FilterChain.js";
3
+ export class RoleFilter extends OnRoadFilter {
4
+ options;
5
+ constructor(options = {}) {
6
+ super();
7
+ this.options = options;
8
+ }
9
+ async execute(req, res, chain) {
10
+ const getRequired = this.options.getRequiredRoles ?? defaultGetRequiredRoles;
11
+ const getUserRoles = this.options.getUserRoles ?? defaultGetUserRoles;
12
+ const onForbidden = this.options.onForbidden ?? defaultForbidden;
13
+ const requiredRoles = getRequired(req, res);
14
+ // No role restriction for this route
15
+ if (!requiredRoles || requiredRoles.length === 0) {
16
+ return await chain.next(req, res);
17
+ }
18
+ const userRoles = getUserRoles(req) ?? [];
19
+ const hasAccess = requiredRoles.some((role) => userRoles.includes(role));
20
+ if (!hasAccess) {
21
+ onForbidden(req, res);
22
+ return;
23
+ }
24
+ await chain.next(req, res);
25
+ }
26
+ }
27
+ function defaultGetRequiredRoles(_req, res) {
28
+ return res.locals["requiredRoles"];
29
+ }
30
+ function defaultGetUserRoles(req) {
31
+ return req.user?.roles;
32
+ }
33
+ function defaultForbidden(_req, res) {
34
+ res.status(403).json({ error: "Forbidden", message: "Insufficient permissions" });
35
+ }
36
+ //# sourceMappingURL=RoleFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleFilter.js","sourceRoot":"","sources":["../../../src/filters/builtins/RoleFilter.ts"],"names":[],"mappings":"AACA,OAAO,gCAAgC,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAqBhD,MAAM,OAAO,UAAW,SAAQ,YAAY;IACzB,OAAO,CAAmB;IAE3C,YAAY,UAA6B,EAAE;QACzC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,KAAkB;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,uBAAuB,CAAA;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,mBAAmB,CAAA;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,gBAAgB,CAAA;QAEhE,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAE3C,qCAAqC;QACrC,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACnC,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACzC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAExE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YACrB,OAAM;QACR,CAAC;QAED,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC;CACF;AAED,SAAS,uBAAuB,CAAC,IAAa,EAAE,GAAa;IAC3D,OAAO,GAAG,CAAC,MAAM,CAAC,eAAe,CAAyB,CAAA;AAC5D,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAY;IACvC,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,CAAA;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa,EAAE,GAAa;IACpD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAA;AACnF,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Request, Response } from "express";
2
+ import "../../types/express-augment.js";
3
+ import { OnRoadFilter } from "../FilterChain.js";
4
+ import type { FilterChain } from "../FilterChain.js";
5
+ export interface TenantFilterOptions {
6
+ /**
7
+ * Header name to extract the tenant from. Default: "x-tenant-id"
8
+ */
9
+ header?: string;
10
+ /**
11
+ * When true, requests without a tenant header are rejected with 400.
12
+ * Default: false (tenant is optional — falls back to defaultTenant)
13
+ */
14
+ required?: boolean;
15
+ /**
16
+ * Fallback tenant when header is not present and required is false.
17
+ * Default: "default"
18
+ */
19
+ defaultTenant?: string;
20
+ }
21
+ export declare class TenantFilter extends OnRoadFilter {
22
+ private readonly options;
23
+ constructor(options?: TenantFilterOptions);
24
+ execute(req: Request, res: Response, chain: FilterChain): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=TenantFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/builtins/TenantFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,gCAAgC,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;gBAE3C,OAAO,GAAE,mBAAwB;IASvC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB9E"}
@@ -0,0 +1,29 @@
1
+ import "../../types/express-augment.js";
2
+ import { OnRoadFilter } from "../FilterChain.js";
3
+ export class TenantFilter extends OnRoadFilter {
4
+ options;
5
+ constructor(options = {}) {
6
+ super();
7
+ this.options = {
8
+ header: options.header ?? "x-tenant-id",
9
+ required: options.required ?? false,
10
+ defaultTenant: options.defaultTenant ?? "default",
11
+ };
12
+ }
13
+ async execute(req, res, chain) {
14
+ const { header, required, defaultTenant } = this.options;
15
+ const tenant = req.headers[header];
16
+ if (!tenant) {
17
+ if (required) {
18
+ res.status(400).json({ error: "Bad Request", message: `Missing header: ${header}` });
19
+ return;
20
+ }
21
+ req.tenant = defaultTenant;
22
+ }
23
+ else {
24
+ req.tenant = tenant;
25
+ }
26
+ await chain.next(req, res);
27
+ }
28
+ }
29
+ //# sourceMappingURL=TenantFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantFilter.js","sourceRoot":"","sources":["../../../src/filters/builtins/TenantFilter.ts"],"names":[],"mappings":"AACA,OAAO,gCAAgC,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAoBhD,MAAM,OAAO,YAAa,SAAQ,YAAY;IAC3B,OAAO,CAA+B;IAEvD,YAAY,UAA+B,EAAE;QAC3C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG;YACb,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,aAAa;YACvC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;YACnC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,SAAS;SAClD,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,KAAkB;QAC3D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QACxD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAuB,CAAA;QAExD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,QAAQ,EAAE,CAAC;gBACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,MAAM,EAAE,EAAE,CAAC,CAAA;gBACpF,OAAM;YACR,CAAC;YACD,GAAG,CAAC,MAAM,GAAG,aAAa,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;QACrB,CAAC;QAED,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export { CorsFilter } from "./CorsFilter.js";
2
+ export type { CorsFilterOptions } from "./CorsFilter.js";
3
+ export { JwtFilter } from "./JwtFilter.js";
4
+ export type { JwtFilterOptions } from "./JwtFilter.js";
5
+ export { TenantFilter } from "./TenantFilter.js";
6
+ export type { TenantFilterOptions } from "./TenantFilter.js";
7
+ export { RoleFilter } from "./RoleFilter.js";
8
+ export type { RoleFilterOptions } from "./RoleFilter.js";
9
+ export { RequestContextFilter } from "./RequestContextFilter.js";
10
+ export type { RequestContextFilterOptions } from "./RequestContextFilter.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filters/builtins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,YAAY,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { CorsFilter } from "./CorsFilter.js";
2
+ export { JwtFilter } from "./JwtFilter.js";
3
+ export { TenantFilter } from "./TenantFilter.js";
4
+ export { RoleFilter } from "./RoleFilter.js";
5
+ export { RequestContextFilter } from "./RequestContextFilter.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/filters/builtins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { OnRoadFilter, FilterChain, Filter, getFilterConfig, isFilterInstance, getFilterConstructor, } from "./FilterChain.js";
2
+ export type { FilterConfig, FilterInput } from "./FilterChain.js";
3
+ export { CorsFilter, JwtFilter, TenantFilter, RoleFilter, RequestContextFilter } from "./builtins/index.js";
4
+ export type { CorsFilterOptions, JwtFilterOptions, TenantFilterOptions, RoleFilterOptions, RequestContextFilterOptions, } from "./builtins/index.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,kBAAkB,CAAA;AAEzB,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGjE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC3G,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { OnRoadFilter, FilterChain, Filter, getFilterConfig, isFilterInstance, getFilterConstructor, } from "./FilterChain.js";
2
+ // --- Built-in filters ---
3
+ export { CorsFilter, JwtFilter, TenantFilter, RoleFilter, RequestContextFilter } from "./builtins/index.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,kBAAkB,CAAA;AAIzB,2BAA2B;AAC3B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,27 @@
1
+ import "reflect-metadata";
2
+ import "./types/express-augment.js";
3
+ export { OnRoadExpress } from "./OnRoadExpress.js";
4
+ export type { OnRoadConfig, BuildServerConfig } from "./OnRoadExpress.js";
5
+ export { OnRoadContainer, Injectable, Controller, Service, Repository, Scope, METADATA_KEY, } from "./container/index.js";
6
+ export type { Constructor, ClassMetadata, RequestScope } from "./container/index.js";
7
+ export { AbstractController, AbstractService, AbstractRepository, SequelizeRepository, MongooseRepository, Sentinel, RequestEventBus, } from "./core/index.js";
8
+ export type { RouteConfig, ControllerConfig, ServiceConfig, AfterCommitPayload, AfterCommitHandler } from "./core/index.js";
9
+ export { Entity, Column, Field, HasMany, BelongsTo, HasOne, BelongsToMany, DataType, EntityRegistry, } from "./entity/index.js";
10
+ export type { ColumnOptions, FieldOptions, EntityOptions, AssociationMetadata } from "./entity/index.js";
11
+ export { OnRoadFilter, FilterChain, Filter, isFilterInstance, getFilterConstructor, CorsFilter, JwtFilter, TenantFilter, RoleFilter, RequestContextFilter, } from "./filters/index.js";
12
+ export type { FilterConfig, FilterInput, CorsFilterOptions, JwtFilterOptions, TenantFilterOptions, RoleFilterOptions, RequestContextFilterOptions, } from "./filters/index.js";
13
+ export { Roles, Public, getRoles } from "./security/index.js";
14
+ export { ConnectionManager, SequelizeConnectionManager, MongoConnectionManager } from "./database/index.js";
15
+ export type { DatabaseConfig, SequelizeConfig } from "./database/index.js";
16
+ export { InterServiceTransport, HttpTransport, MessagingTransport, TransportFactory, } from "./transport/index.js";
17
+ export type { SendOptions } from "./transport/index.js";
18
+ export { requestContext, getRequestContext } from "./context/RequestContext.js";
19
+ export type { RequestContextStore } from "./context/RequestContext.js";
20
+ export { MatchingObject } from "./messaging/index.js";
21
+ export { MessagingProvider, RealtimeProvider, TaskSchedulerProvider, SocketProvider, } from "./providers/index.js";
22
+ export type { MessagingMessage, MessageWorker, MatchingObjectData, TaskSchedulerConfig, } from "./providers/index.js";
23
+ export { PinoLogger } from "./logging/index.js";
24
+ export type { OnRoadLogger, PinoLoggerConfig } from "./logging/index.js";
25
+ export type { OnRoadPlugin } from "./plugins/index.js";
26
+ export { StorageProvider } from "./storage/index.js";
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAA;AACzB,OAAO,4BAA4B,CAAA;AAGnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAGzE,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,KAAK,EACL,YAAY,GACb,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGpF,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAG3H,OAAO,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,MAAM,EACN,aAAa,EACb,QAAQ,EACR,cAAc,GACf,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAGxG,OAAO,EACL,YAAY,EACZ,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAG7D,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC3G,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAG1E,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGvD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/E,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,GACf,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGxE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ // TypeRoad v4 — TypeScript Backend Framework
2
+ // Root public API
3
+ import "reflect-metadata";
4
+ import "./types/express-augment.js";
5
+ // --- Main ---
6
+ export { OnRoadExpress } from "./OnRoadExpress.js";
7
+ // --- Container & Decorators ---
8
+ export { OnRoadContainer, Injectable, Controller, Service, Repository, Scope, METADATA_KEY, } from "./container/index.js";
9
+ // --- Core ---
10
+ export { AbstractController, AbstractService, AbstractRepository, SequelizeRepository, MongooseRepository, Sentinel, RequestEventBus, } from "./core/index.js";
11
+ // --- Entity ---
12
+ export { Entity, Column, Field, HasMany, BelongsTo, HasOne, BelongsToMany, DataType, EntityRegistry, } from "./entity/index.js";
13
+ // --- Filters ---
14
+ export { OnRoadFilter, FilterChain, Filter, isFilterInstance, getFilterConstructor, CorsFilter, JwtFilter, TenantFilter, RoleFilter, RequestContextFilter, } from "./filters/index.js";
15
+ // --- Security ---
16
+ export { Roles, Public, getRoles } from "./security/index.js";
17
+ // --- Database ---
18
+ export { ConnectionManager, SequelizeConnectionManager, MongoConnectionManager } from "./database/index.js";
19
+ // --- Transport ---
20
+ export { InterServiceTransport, HttpTransport, MessagingTransport, TransportFactory, } from "./transport/index.js";
21
+ // --- Request Context ---
22
+ export { requestContext, getRequestContext } from "./context/RequestContext.js";
23
+ // --- Messaging ---
24
+ export { MatchingObject } from "./messaging/index.js";
25
+ // --- Providers ---
26
+ export { MessagingProvider, RealtimeProvider, TaskSchedulerProvider, SocketProvider, } from "./providers/index.js";
27
+ // --- Logging ---
28
+ export { PinoLogger } from "./logging/index.js";
29
+ // --- Storage ---
30
+ export { StorageProvider } from "./storage/index.js";
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,kBAAkB;AAElB,OAAO,kBAAkB,CAAA;AACzB,OAAO,4BAA4B,CAAA;AAEnC,eAAe;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,UAAU,EACV,UAAU,EACV,OAAO,EACP,UAAU,EACV,KAAK,EACL,YAAY,GACb,MAAM,sBAAsB,CAAA;AAG7B,eAAe;AACf,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,eAAe,GAChB,MAAM,iBAAiB,CAAA;AAGxB,iBAAiB;AACjB,OAAO,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,MAAM,EACN,aAAa,EACb,QAAQ,EACR,cAAc,GACf,MAAM,mBAAmB,CAAA;AAG1B,kBAAkB;AAClB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAW3B,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE7D,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAG3G,oBAAoB;AACpB,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAG7B,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAG/E,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,oBAAoB;AACpB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,GACf,MAAM,sBAAsB,CAAA;AAQ7B,kBAAkB;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAM/C,kBAAkB;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,8 @@
1
+ export interface OnRoadLogger {
2
+ debug(msg: string, meta?: Record<string, unknown>): void;
3
+ info(msg: string, meta?: Record<string, unknown>): void;
4
+ warn(msg: string, meta?: Record<string, unknown>): void;
5
+ error(msg: string, error?: Error, meta?: Record<string, unknown>): void;
6
+ child(bindings: Record<string, unknown>): OnRoadLogger;
7
+ }
8
+ //# sourceMappingURL=OnRoadLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnRoadLogger.d.ts","sourceRoot":"","sources":["../../src/logging/OnRoadLogger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACxD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAAA;CACvD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=OnRoadLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnRoadLogger.js","sourceRoot":"","sources":["../../src/logging/OnRoadLogger.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { OnRoadLogger } from "./OnRoadLogger.js";
2
+ export interface PinoLoggerConfig {
3
+ level: "debug" | "info" | "warn" | "error" | "fatal" | "silent";
4
+ prettyPrint?: boolean;
5
+ }
6
+ export declare class PinoLogger implements OnRoadLogger {
7
+ private logger;
8
+ constructor(config: PinoLoggerConfig);
9
+ private constructor_from_pino;
10
+ debug(msg: string, meta?: Record<string, unknown>): void;
11
+ info(msg: string, meta?: Record<string, unknown>): void;
12
+ warn(msg: string, meta?: Record<string, unknown>): void;
13
+ error(msg: string, error?: Error, meta?: Record<string, unknown>): void;
14
+ child(bindings: Record<string, unknown>): OnRoadLogger;
15
+ }
16
+ //# sourceMappingURL=PinoLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PinoLogger.d.ts","sourceRoot":"","sources":["../../src/logging/PinoLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,qBAAa,UAAW,YAAW,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,gBAAgB;IASpC,OAAO,CAAC,qBAAqB;IAM7B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIxD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIvD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIvD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIvE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;CAGvD"}
@@ -0,0 +1,33 @@
1
+ import pino from "pino";
2
+ export class PinoLogger {
3
+ logger;
4
+ constructor(config) {
5
+ this.logger = pino({
6
+ level: config.level,
7
+ transport: config.prettyPrint
8
+ ? { target: "pino-pretty", options: { colorize: true } }
9
+ : undefined,
10
+ });
11
+ }
12
+ constructor_from_pino(pinoInstance) {
13
+ const instance = Object.create(PinoLogger.prototype);
14
+ instance.logger = pinoInstance;
15
+ return instance;
16
+ }
17
+ debug(msg, meta) {
18
+ this.logger.debug(meta ?? {}, msg);
19
+ }
20
+ info(msg, meta) {
21
+ this.logger.info(meta ?? {}, msg);
22
+ }
23
+ warn(msg, meta) {
24
+ this.logger.warn(meta ?? {}, msg);
25
+ }
26
+ error(msg, error, meta) {
27
+ this.logger.error({ err: error, ...meta }, msg);
28
+ }
29
+ child(bindings) {
30
+ return this.constructor_from_pino(this.logger.child(bindings));
31
+ }
32
+ }
33
+ //# sourceMappingURL=PinoLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PinoLogger.js","sourceRoot":"","sources":["../../src/logging/PinoLogger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAQvB,MAAM,OAAO,UAAU;IACb,MAAM,CAAa;IAE3B,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,WAAW;gBAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBACxD,CAAC,CAAC,SAAS;SACd,CAAC,CAAA;IACJ,CAAC;IAEO,qBAAqB,CAAC,YAAyB;QACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAe,CAAA;QAClE,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAA;QAC9B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,IAA8B;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,IAA8B;QAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,IAA8B;QAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,KAAa,EAAE,IAA8B;QAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,QAAiC;QACrC,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChE,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export type { OnRoadLogger } from "./OnRoadLogger.js";
2
+ export { PinoLogger } from "./PinoLogger.js";
3
+ export type { PinoLoggerConfig } from "./PinoLogger.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { PinoLogger } from "./PinoLogger.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,9 @@
1
+ export declare class MatchingObject {
2
+ readonly model: string;
3
+ readonly target: string;
4
+ readonly data: unknown;
5
+ readonly action: string;
6
+ constructor(model: string, target: string, data: unknown, action?: string);
7
+ toJSON(): Record<string, unknown>;
8
+ }
9
+ //# sourceMappingURL=MatchingObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatchingObject.d.ts","sourceRoot":"","sources":["../../src/messaging/MatchingObject.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;gBAEX,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAE,MAAiB;IAOnF,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQlC"}
@@ -0,0 +1,21 @@
1
+ export class MatchingObject {
2
+ model;
3
+ target;
4
+ data;
5
+ action;
6
+ constructor(model, target, data, action = "update") {
7
+ this.model = model;
8
+ this.target = target;
9
+ this.data = data;
10
+ this.action = action;
11
+ }
12
+ toJSON() {
13
+ return {
14
+ model: this.model,
15
+ target: this.target,
16
+ data: this.data,
17
+ action: this.action,
18
+ };
19
+ }
20
+ }
21
+ //# sourceMappingURL=MatchingObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatchingObject.js","sourceRoot":"","sources":["../../src/messaging/MatchingObject.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAChB,KAAK,CAAQ;IACb,MAAM,CAAQ;IACd,IAAI,CAAS;IACb,MAAM,CAAQ;IAEvB,YAAY,KAAa,EAAE,MAAc,EAAE,IAAa,EAAE,SAAiB,QAAQ;QACjF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { MatchingObject } from "./MatchingObject.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { MatchingObject } from "./MatchingObject.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { OnRoadExpress } from "../OnRoadExpress.js";
2
+ export interface OnRoadPlugin {
3
+ name: string;
4
+ install(app: OnRoadExpress): void | Promise<void>;
5
+ }
6
+ //# sourceMappingURL=OnRoadPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnRoadPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/OnRoadPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=OnRoadPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnRoadPlugin.js","sourceRoot":"","sources":["../../src/plugins/OnRoadPlugin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type { OnRoadPlugin } from "./OnRoadPlugin.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ export interface MessagingMessage {
2
+ headers: Record<string, string>;
3
+ route: string;
4
+ body: unknown;
5
+ timestamp: number;
6
+ }
7
+ export type MessageWorker = (message: MessagingMessage) => Promise<void>;
8
+ export declare abstract class MessagingProvider {
9
+ abstract initialize(config: Record<string, unknown>): Promise<void>;
10
+ abstract publishGlobal(message: MessagingMessage): Promise<void>;
11
+ abstract publishToRoute(route: string, message: MessagingMessage): Promise<void>;
12
+ abstract subscribe(worker: MessageWorker): Promise<void>;
13
+ abstract publishToDLQ(message: MessagingMessage): Promise<void>;
14
+ abstract shutdown(): Promise<void>;
15
+ abstract isReady(): boolean;
16
+ }
17
+ //# sourceMappingURL=MessagingProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessagingProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MessagingProvider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAExE,8BAAsB,iBAAiB;IACrC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACnE,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAChE,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAChF,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IACxD,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/D,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,IAAI,OAAO;CAC5B"}