@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.
- package/README.md +670 -0
- package/dist/OnRoadExpress.d.ts +59 -0
- package/dist/OnRoadExpress.d.ts.map +1 -0
- package/dist/OnRoadExpress.js +320 -0
- package/dist/OnRoadExpress.js.map +1 -0
- package/dist/container/Container.d.ts +53 -0
- package/dist/container/Container.d.ts.map +1 -0
- package/dist/container/Container.js +175 -0
- package/dist/container/Container.js.map +1 -0
- package/dist/container/index.d.ts +3 -0
- package/dist/container/index.d.ts.map +1 -0
- package/dist/container/index.js +2 -0
- package/dist/container/index.js.map +1 -0
- package/dist/context/RequestContext.d.ts +10 -0
- package/dist/context/RequestContext.d.ts.map +1 -0
- package/dist/context/RequestContext.js +11 -0
- package/dist/context/RequestContext.js.map +1 -0
- package/dist/core/AbstractController.d.ts +20 -0
- package/dist/core/AbstractController.d.ts.map +1 -0
- package/dist/core/AbstractController.js +17 -0
- package/dist/core/AbstractController.js.map +1 -0
- package/dist/core/AbstractRepository.d.ts +8 -0
- package/dist/core/AbstractRepository.d.ts.map +1 -0
- package/dist/core/AbstractRepository.js +3 -0
- package/dist/core/AbstractRepository.js.map +1 -0
- package/dist/core/AbstractService.d.ts +12 -0
- package/dist/core/AbstractService.d.ts.map +1 -0
- package/dist/core/AbstractService.js +14 -0
- package/dist/core/AbstractService.js.map +1 -0
- package/dist/core/MongooseRepository.d.ts +19 -0
- package/dist/core/MongooseRepository.d.ts.map +1 -0
- package/dist/core/MongooseRepository.js +48 -0
- package/dist/core/MongooseRepository.js.map +1 -0
- package/dist/core/RequestEventBus.d.ts +18 -0
- package/dist/core/RequestEventBus.d.ts.map +1 -0
- package/dist/core/RequestEventBus.js +43 -0
- package/dist/core/RequestEventBus.js.map +1 -0
- package/dist/core/Sentinel.d.ts +19 -0
- package/dist/core/Sentinel.d.ts.map +1 -0
- package/dist/core/Sentinel.js +56 -0
- package/dist/core/Sentinel.js.map +1 -0
- package/dist/core/SequelizeRepository.d.ts +19 -0
- package/dist/core/SequelizeRepository.d.ts.map +1 -0
- package/dist/core/SequelizeRepository.js +48 -0
- package/dist/core/SequelizeRepository.js.map +1 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/database/ConnectionManager.d.ts +26 -0
- package/dist/database/ConnectionManager.d.ts.map +1 -0
- package/dist/database/ConnectionManager.js +17 -0
- package/dist/database/ConnectionManager.js.map +1 -0
- package/dist/database/MongoConnectionManager.d.ts +8 -0
- package/dist/database/MongoConnectionManager.d.ts.map +1 -0
- package/dist/database/MongoConnectionManager.js +47 -0
- package/dist/database/MongoConnectionManager.js.map +1 -0
- package/dist/database/SequelizeConnectionManager.d.ts +13 -0
- package/dist/database/SequelizeConnectionManager.d.ts.map +1 -0
- package/dist/database/SequelizeConnectionManager.js +58 -0
- package/dist/database/SequelizeConnectionManager.js.map +1 -0
- package/dist/database/index.d.ts +6 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +4 -0
- package/dist/database/index.js.map +1 -0
- package/dist/entity/EntityRegistry.d.ts +9 -0
- package/dist/entity/EntityRegistry.d.ts.map +1 -0
- package/dist/entity/EntityRegistry.js +114 -0
- package/dist/entity/EntityRegistry.js.map +1 -0
- package/dist/entity/decorators.d.ts +62 -0
- package/dist/entity/decorators.d.ts.map +1 -0
- package/dist/entity/decorators.js +103 -0
- package/dist/entity/decorators.js.map +1 -0
- package/dist/entity/index.d.ts +4 -0
- package/dist/entity/index.d.ts.map +1 -0
- package/dist/entity/index.js +3 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/filters/FilterChain.d.ts +34 -0
- package/dist/filters/FilterChain.d.ts.map +1 -0
- package/dist/filters/FilterChain.js +42 -0
- package/dist/filters/FilterChain.js.map +1 -0
- package/dist/filters/builtins/CorsFilter.d.ts +22 -0
- package/dist/filters/builtins/CorsFilter.d.ts.map +1 -0
- package/dist/filters/builtins/CorsFilter.js +41 -0
- package/dist/filters/builtins/CorsFilter.js.map +1 -0
- package/dist/filters/builtins/JwtFilter.d.ts +27 -0
- package/dist/filters/builtins/JwtFilter.d.ts.map +1 -0
- package/dist/filters/builtins/JwtFilter.js +35 -0
- package/dist/filters/builtins/JwtFilter.js.map +1 -0
- package/dist/filters/builtins/RequestContextFilter.d.ts +12 -0
- package/dist/filters/builtins/RequestContextFilter.d.ts.map +1 -0
- package/dist/filters/builtins/RequestContextFilter.js +32 -0
- package/dist/filters/builtins/RequestContextFilter.js.map +1 -0
- package/dist/filters/builtins/RoleFilter.d.ts +27 -0
- package/dist/filters/builtins/RoleFilter.d.ts.map +1 -0
- package/dist/filters/builtins/RoleFilter.js +36 -0
- package/dist/filters/builtins/RoleFilter.js.map +1 -0
- package/dist/filters/builtins/TenantFilter.d.ts +26 -0
- package/dist/filters/builtins/TenantFilter.d.ts.map +1 -0
- package/dist/filters/builtins/TenantFilter.js +29 -0
- package/dist/filters/builtins/TenantFilter.js.map +1 -0
- package/dist/filters/builtins/index.d.ts +11 -0
- package/dist/filters/builtins/index.d.ts.map +1 -0
- package/dist/filters/builtins/index.js +6 -0
- package/dist/filters/builtins/index.js.map +1 -0
- package/dist/filters/index.d.ts +5 -0
- package/dist/filters/index.d.ts.map +1 -0
- package/dist/filters/index.js +4 -0
- package/dist/filters/index.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/OnRoadLogger.d.ts +8 -0
- package/dist/logging/OnRoadLogger.d.ts.map +1 -0
- package/dist/logging/OnRoadLogger.js +2 -0
- package/dist/logging/OnRoadLogger.js.map +1 -0
- package/dist/logging/PinoLogger.d.ts +16 -0
- package/dist/logging/PinoLogger.d.ts.map +1 -0
- package/dist/logging/PinoLogger.js +33 -0
- package/dist/logging/PinoLogger.js.map +1 -0
- package/dist/logging/index.d.ts +4 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +2 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/messaging/MatchingObject.d.ts +9 -0
- package/dist/messaging/MatchingObject.d.ts.map +1 -0
- package/dist/messaging/MatchingObject.js +21 -0
- package/dist/messaging/MatchingObject.js.map +1 -0
- package/dist/messaging/index.d.ts +2 -0
- package/dist/messaging/index.d.ts.map +1 -0
- package/dist/messaging/index.js +2 -0
- package/dist/messaging/index.js.map +1 -0
- package/dist/plugins/OnRoadPlugin.d.ts +6 -0
- package/dist/plugins/OnRoadPlugin.d.ts.map +1 -0
- package/dist/plugins/OnRoadPlugin.js +2 -0
- package/dist/plugins/OnRoadPlugin.js.map +1 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +2 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/providers/MessagingProvider.d.ts +17 -0
- package/dist/providers/MessagingProvider.d.ts.map +1 -0
- package/dist/providers/MessagingProvider.js +3 -0
- package/dist/providers/MessagingProvider.js.map +1 -0
- package/dist/providers/RealtimeProvider.d.ts +13 -0
- package/dist/providers/RealtimeProvider.d.ts.map +1 -0
- package/dist/providers/RealtimeProvider.js +3 -0
- package/dist/providers/RealtimeProvider.js.map +1 -0
- package/dist/providers/SocketProvider.d.ts +7 -0
- package/dist/providers/SocketProvider.d.ts.map +1 -0
- package/dist/providers/SocketProvider.js +3 -0
- package/dist/providers/SocketProvider.js.map +1 -0
- package/dist/providers/TaskSchedulerProvider.d.ts +19 -0
- package/dist/providers/TaskSchedulerProvider.d.ts.map +1 -0
- package/dist/providers/TaskSchedulerProvider.js +3 -0
- package/dist/providers/TaskSchedulerProvider.js.map +1 -0
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +5 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/security/decorators.d.ts +5 -0
- package/dist/security/decorators.d.ts.map +1 -0
- package/dist/security/decorators.js +26 -0
- package/dist/security/decorators.js.map +1 -0
- package/dist/security/index.d.ts +2 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +2 -0
- package/dist/security/index.js.map +1 -0
- package/dist/storage/StorageProvider.d.ts +7 -0
- package/dist/storage/StorageProvider.d.ts.map +1 -0
- package/dist/storage/StorageProvider.js +3 -0
- package/dist/storage/StorageProvider.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/transport/HttpTransport.d.ts +8 -0
- package/dist/transport/HttpTransport.d.ts.map +1 -0
- package/dist/transport/HttpTransport.js +26 -0
- package/dist/transport/HttpTransport.js.map +1 -0
- package/dist/transport/InterServiceTransport.d.ts +15 -0
- package/dist/transport/InterServiceTransport.d.ts.map +1 -0
- package/dist/transport/InterServiceTransport.js +20 -0
- package/dist/transport/InterServiceTransport.js.map +1 -0
- package/dist/transport/MessagingTransport.d.ts +9 -0
- package/dist/transport/MessagingTransport.d.ts.map +1 -0
- package/dist/transport/MessagingTransport.js +21 -0
- package/dist/transport/MessagingTransport.js.map +1 -0
- package/dist/transport/TransportFactory.d.ts +13 -0
- package/dist/transport/TransportFactory.d.ts.map +1 -0
- package/dist/transport/TransportFactory.js +35 -0
- package/dist/transport/TransportFactory.js.map +1 -0
- package/dist/transport/index.d.ts +6 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +5 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/types/express-augment.d.ts +27 -0
- package/dist/types/express-augment.d.ts.map +1 -0
- package/dist/types/express-augment.js +4 -0
- package/dist/types/express-augment.js.map +1 -0
- 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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"OnRoadPlugin.js","sourceRoot":"","sources":["../../src/plugins/OnRoadPlugin.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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"}
|