@asenajs/asena 0.6.3 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/lib/adapter/AsenaAdapter.d.ts +19 -0
- package/dist/lib/adapter/AsenaAdapter.js +6 -0
- package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
- package/dist/lib/adapter/AsenaContext.d.ts +87 -8
- package/dist/lib/adapter/AsenaWebsocketAdapter.d.ts +41 -2
- package/dist/lib/adapter/AsenaWebsocketAdapter.js +74 -0
- package/dist/lib/adapter/AsenaWebsocketAdapter.js.map +1 -1
- package/dist/lib/adapter/types/ApiParams.d.ts +6 -0
- package/dist/lib/adapter/types/Streaming.d.ts +42 -0
- package/dist/lib/adapter/types/Streaming.js +2 -0
- package/dist/lib/adapter/types/Streaming.js.map +1 -0
- package/dist/lib/adapter/types/index.d.ts +1 -0
- package/dist/lib/adapter/types/index.js +1 -0
- package/dist/lib/adapter/types/index.js.map +1 -1
- package/dist/lib/ioc/Container.d.ts +8 -1
- package/dist/lib/ioc/Container.js +16 -2
- package/dist/lib/ioc/Container.js.map +1 -1
- package/dist/lib/ioc/CoreContainer.js +10 -3
- package/dist/lib/ioc/CoreContainer.js.map +1 -1
- package/dist/lib/ioc/IocEngine.d.ts +7 -0
- package/dist/lib/ioc/IocEngine.js +82 -3
- package/dist/lib/ioc/IocEngine.js.map +1 -1
- package/dist/lib/ioc/component/componentUtils.js +3 -1
- package/dist/lib/ioc/component/componentUtils.js.map +1 -1
- package/dist/lib/ioc/constants/ComponentConstants.d.ts +2 -0
- package/dist/lib/ioc/constants/ComponentConstants.js +3 -0
- package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
- package/dist/lib/ioc/helper/cronParser.d.ts +3 -0
- package/dist/lib/ioc/helper/cronParser.js +3 -1
- package/dist/lib/ioc/helper/cronParser.js.map +1 -1
- package/dist/lib/ioc/types/ComponentPostProcessor.d.ts +30 -0
- package/dist/lib/ioc/types/ComponentPostProcessor.js +2 -0
- package/dist/lib/ioc/types/ComponentPostProcessor.js.map +1 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.d.ts +3 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js +4 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js.map +1 -1
- package/dist/lib/ioc/types/decorators/ComponentType.d.ts +3 -1
- package/dist/lib/ioc/types/decorators/ComponentType.js +2 -0
- package/dist/lib/ioc/types/decorators/ComponentType.js.map +1 -1
- package/dist/lib/ioc/types/decorators/ControllerParams.d.ts +1 -0
- package/dist/lib/ioc/types/index.d.ts +1 -0
- package/dist/lib/ioc/types/index.js +1 -0
- package/dist/lib/ioc/types/index.js.map +1 -1
- package/dist/lib/server/AsenaServer.d.ts +18 -0
- package/dist/lib/server/AsenaServer.js +85 -1
- package/dist/lib/server/AsenaServer.js.map +1 -1
- package/dist/lib/server/config/AsenaConfig.d.ts +16 -1
- package/dist/lib/server/decorators/components/Controller.js +3 -0
- package/dist/lib/server/decorators/components/Controller.js.map +1 -1
- package/dist/lib/server/decorators/components/FrontendController.d.ts +15 -0
- package/dist/lib/server/decorators/components/FrontendController.js +20 -0
- package/dist/lib/server/decorators/components/FrontendController.js.map +1 -0
- package/dist/lib/server/decorators/components/PostProcessor.d.ts +25 -0
- package/dist/lib/server/decorators/components/PostProcessor.js +29 -0
- package/dist/lib/server/decorators/components/PostProcessor.js.map +1 -0
- package/dist/lib/server/decorators/components/Schedule.d.ts +15 -3
- package/dist/lib/server/decorators/components/Schedule.js +24 -6
- package/dist/lib/server/decorators/components/Schedule.js.map +1 -1
- package/dist/lib/server/decorators/components/index.d.ts +2 -0
- package/dist/lib/server/decorators/components/index.js +2 -0
- package/dist/lib/server/decorators/components/index.js.map +1 -1
- package/dist/lib/server/decorators/index.d.ts +0 -3
- package/dist/lib/server/decorators/index.js +0 -3
- package/dist/lib/server/decorators/index.js.map +1 -1
- package/dist/lib/server/messaging/Ulak.js +8 -5
- package/dist/lib/server/messaging/Ulak.js.map +1 -1
- package/dist/lib/server/schedule/AsenaSchedule.d.ts +21 -0
- package/dist/lib/server/schedule/AsenaSchedule.js +2 -0
- package/dist/lib/server/schedule/AsenaSchedule.js.map +1 -0
- package/dist/lib/server/schedule/CronRunner.d.ts +54 -0
- package/dist/lib/server/schedule/CronRunner.js +130 -0
- package/dist/lib/server/schedule/CronRunner.js.map +1 -0
- package/dist/lib/server/schedule/index.d.ts +2 -0
- package/dist/lib/server/schedule/index.js +2 -0
- package/dist/lib/server/schedule/index.js.map +1 -0
- package/dist/lib/server/src/services/PrepareFrontendControllerService.d.ts +18 -0
- package/dist/lib/server/src/services/PrepareFrontendControllerService.js +63 -0
- package/dist/lib/server/src/services/PrepareFrontendControllerService.js.map +1 -0
- package/dist/lib/server/src/services/PrepareScheduleService.d.ts +21 -0
- package/dist/lib/server/src/services/PrepareScheduleService.js +69 -0
- package/dist/lib/server/src/services/PrepareScheduleService.js.map +1 -0
- package/dist/lib/server/web/decorators/Page.d.ts +13 -0
- package/dist/lib/server/web/decorators/Page.js +17 -0
- package/dist/lib/server/web/decorators/Page.js.map +1 -0
- package/dist/lib/server/web/decorators/http.base.d.ts +1 -1
- package/dist/lib/server/web/decorators/http.base.js +3 -2
- package/dist/lib/server/web/decorators/http.base.js.map +1 -1
- package/dist/lib/server/web/decorators/index.d.ts +1 -0
- package/dist/lib/server/web/decorators/index.js +1 -0
- package/dist/lib/server/web/decorators/index.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/All.d.ts +7 -0
- package/dist/lib/server/web/decorators/methods/All.js +12 -0
- package/dist/lib/server/web/decorators/methods/All.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Connect.js +10 -2
- package/dist/lib/server/web/decorators/methods/Connect.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/Delete.js +2 -2
- package/dist/lib/server/web/decorators/methods/Delete.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/Get.js +2 -2
- package/dist/lib/server/web/decorators/methods/Get.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/Head.js +2 -2
- package/dist/lib/server/web/decorators/methods/Head.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/Options.js +10 -2
- package/dist/lib/server/web/decorators/methods/Options.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/Patch.js +2 -2
- package/dist/lib/server/web/decorators/methods/Patch.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/Post.js +2 -2
- package/dist/lib/server/web/decorators/methods/Post.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/Put.js +2 -2
- package/dist/lib/server/web/decorators/methods/Put.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/Route.d.ts +21 -0
- package/dist/lib/server/web/decorators/methods/Route.js +33 -0
- package/dist/lib/server/web/decorators/methods/Route.js.map +1 -0
- package/dist/lib/server/web/decorators/methods/Trace.js +2 -2
- package/dist/lib/server/web/decorators/methods/Trace.js.map +1 -1
- package/dist/lib/server/web/decorators/methods/index.d.ts +2 -0
- package/dist/lib/server/web/decorators/methods/index.js +2 -0
- package/dist/lib/server/web/decorators/methods/index.js.map +1 -1
- package/dist/lib/server/web/middleware/AsenaValidationService.d.ts +32 -0
- package/dist/lib/server/web/types/HttpMethod.d.ts +2 -1
- package/dist/lib/server/web/types/HttpMethod.js +1 -0
- package/dist/lib/server/web/types/HttpMethod.js.map +1 -1
- package/dist/lib/server/web/websocket/AsenaSocket.d.ts +16 -8
- package/dist/lib/server/web/websocket/AsenaSocket.js +30 -7
- package/dist/lib/server/web/websocket/AsenaSocket.js.map +1 -1
- package/dist/lib/server/web/websocket/AsenaWebSocketServer.d.ts +6 -7
- package/dist/lib/server/web/websocket/AsenaWebSocketServer.js +10 -11
- package/dist/lib/server/web/websocket/AsenaWebSocketServer.js.map +1 -1
- package/dist/lib/server/web/websocket/BunLocalTransport.d.ts +16 -0
- package/dist/lib/server/web/websocket/BunLocalTransport.js +18 -0
- package/dist/lib/server/web/websocket/BunLocalTransport.js.map +1 -0
- package/dist/lib/server/web/websocket/WebSocketTransport.d.ts +76 -0
- package/dist/lib/server/web/websocket/WebSocketTransport.js +2 -0
- package/dist/lib/server/web/websocket/WebSocketTransport.js.map +1 -0
- package/dist/lib/server/web/websocket/index.d.ts +2 -0
- package/dist/lib/server/web/websocket/index.js +2 -0
- package/dist/lib/server/web/websocket/index.js.map +1 -1
- package/dist/lib/server/web/websocket/types.d.ts +24 -0
- package/dist/lib/utils/index.d.ts +2 -0
- package/dist/lib/utils/index.js +1 -0
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/metadataExtractor.d.ts +88 -0
- package/dist/lib/utils/metadataExtractor.js +105 -0
- package/dist/lib/utils/metadataExtractor.js.map +1 -0
- package/dist/lib/utils/patternMatcher.js +5 -2
- package/dist/lib/utils/patternMatcher.js.map +1 -1
- package/package.json +23 -15
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ICoreService } from '../../../ioc';
|
|
2
|
+
export interface PreparedHTMLRoute {
|
|
3
|
+
path: string;
|
|
4
|
+
htmlBundle: unknown;
|
|
5
|
+
controllerName: string;
|
|
6
|
+
controllerBasePath: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @description Core service for preparing FrontendController components.
|
|
10
|
+
* Resolves FrontendControllers from the container, reads @Page metadata,
|
|
11
|
+
* and collects HTML routes. Adapter registration is handled by AsenaServer.
|
|
12
|
+
*/
|
|
13
|
+
export declare class PrepareFrontendControllerService implements ICoreService {
|
|
14
|
+
serviceName: string;
|
|
15
|
+
private container;
|
|
16
|
+
prepare(): Promise<PreparedHTMLRoute[]>;
|
|
17
|
+
private extractHTMLRoutes;
|
|
18
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
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 { ComponentConstants, ComponentType, CoreService, ICoreServiceNames } from '../../../ioc';
|
|
11
|
+
import { Inject } from '../../../ioc/component';
|
|
12
|
+
import { getOwnTypedMetadata, getTypedMetadata } from '../../../utils';
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
/**
|
|
15
|
+
* @description Core service for preparing FrontendController components.
|
|
16
|
+
* Resolves FrontendControllers from the container, reads @Page metadata,
|
|
17
|
+
* and collects HTML routes. Adapter registration is handled by AsenaServer.
|
|
18
|
+
*/
|
|
19
|
+
let PrepareFrontendControllerService = class PrepareFrontendControllerService {
|
|
20
|
+
serviceName = 'PrepareFrontendControllerService';
|
|
21
|
+
container;
|
|
22
|
+
async prepare() {
|
|
23
|
+
const frontendControllers = await this.container.resolveAll(ComponentType.FRONTEND_CONTROLLER);
|
|
24
|
+
if (!frontendControllers || frontendControllers.length === 0) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const htmlRoutes = [];
|
|
28
|
+
for (const controller of frontendControllers.flat()) {
|
|
29
|
+
const routes = await this.extractHTMLRoutes(controller);
|
|
30
|
+
htmlRoutes.push(...routes);
|
|
31
|
+
}
|
|
32
|
+
return htmlRoutes;
|
|
33
|
+
}
|
|
34
|
+
async extractHTMLRoutes(controller) {
|
|
35
|
+
const pageRoutes = getOwnTypedMetadata(ComponentConstants.PageRoutesKey, controller.constructor) || {};
|
|
36
|
+
const controllerName = getTypedMetadata(ComponentConstants.NameKey, controller.constructor) || controller.constructor.name;
|
|
37
|
+
if (Object.keys(pageRoutes).length === 0) {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
const basePath = getOwnTypedMetadata(ComponentConstants.PathKey, controller.constructor) || '/';
|
|
41
|
+
const routes = [];
|
|
42
|
+
for (const [methodName, pageRoute] of Object.entries(pageRoutes)) {
|
|
43
|
+
const fullPath = path.join(basePath, pageRoute.path).replace(/\\/g, '/');
|
|
44
|
+
const result = await controller[methodName]();
|
|
45
|
+
// Dynamic import() returns { default: HTMLBundle }, direct return gives HTMLBundle
|
|
46
|
+
const htmlBundle = result?.default ?? result;
|
|
47
|
+
if (!htmlBundle) {
|
|
48
|
+
throw new Error(`@Page method ${controllerName}.${methodName}() returned null/undefined. Must return a Bun HTMLBundle.`);
|
|
49
|
+
}
|
|
50
|
+
routes.push({ path: fullPath, htmlBundle, controllerName, controllerBasePath: basePath });
|
|
51
|
+
}
|
|
52
|
+
return routes;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
__decorate([
|
|
56
|
+
Inject(ICoreServiceNames.CONTAINER),
|
|
57
|
+
__metadata("design:type", Function)
|
|
58
|
+
], PrepareFrontendControllerService.prototype, "container", void 0);
|
|
59
|
+
PrepareFrontendControllerService = __decorate([
|
|
60
|
+
CoreService(ICoreServiceNames.PREPARE_FRONTEND_CONTROLLER_SERVICE)
|
|
61
|
+
], PrepareFrontendControllerService);
|
|
62
|
+
export { PrepareFrontendControllerService };
|
|
63
|
+
//# sourceMappingURL=PrepareFrontendControllerService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrepareFrontendControllerService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareFrontendControllerService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AASlC;;;;GAIG;AAEI,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IACpC,WAAW,GAAG,kCAAkC,CAAC;IAGhD,SAAS,CAAa;IAEvB,KAAK,CAAC,OAAO;QAClB,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAQ,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAEtG,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAwB,EAAE,CAAC;QAE3C,KAAK,MAAM,UAAU,IAAI,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,UAAiB;QAC/C,MAAM,UAAU,GAAG,mBAAmB,CAAY,kBAAkB,CAAC,aAAa,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAElH,MAAM,cAAc,GAClB,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;QAE9G,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAW,mBAAmB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;QAEhH,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAE9C,mFAAmF;YACnF,MAAM,UAAU,GAAG,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC;YAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,gBAAgB,cAAc,IAAI,UAAU,2DAA2D,CACxG,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AApDS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;mEACN;AAJnB,gCAAgC;IAD5C,WAAW,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;GACtD,gCAAgC,CAwD5C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ICoreService } from '../../../ioc';
|
|
2
|
+
/**
|
|
3
|
+
* @description PrepareScheduleService - Discovers and registers scheduled components
|
|
4
|
+
*
|
|
5
|
+
* Scan Process:
|
|
6
|
+
* 1. Resolve all ComponentType.SCHEDULE from container
|
|
7
|
+
* 2. Extract cron metadata from class
|
|
8
|
+
* 3. Validate execute() method exists (AsenaSchedule contract)
|
|
9
|
+
* 4. Register job with CronRunner
|
|
10
|
+
*/
|
|
11
|
+
export declare class PrepareScheduleService implements ICoreService {
|
|
12
|
+
readonly serviceName = "PrepareScheduleService";
|
|
13
|
+
private container;
|
|
14
|
+
private logger;
|
|
15
|
+
private cronRunner;
|
|
16
|
+
/**
|
|
17
|
+
* Discover and register all scheduled components with CronRunner
|
|
18
|
+
*/
|
|
19
|
+
prepare(): Promise<void>;
|
|
20
|
+
private registerSchedule;
|
|
21
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
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 { ComponentConstants, ComponentType, CoreService, ICoreServiceNames } from '../../../ioc';
|
|
11
|
+
import { Inject } from '../../../ioc/component';
|
|
12
|
+
import { getTypedMetadata } from '../../../utils';
|
|
13
|
+
/**
|
|
14
|
+
* @description PrepareScheduleService - Discovers and registers scheduled components
|
|
15
|
+
*
|
|
16
|
+
* Scan Process:
|
|
17
|
+
* 1. Resolve all ComponentType.SCHEDULE from container
|
|
18
|
+
* 2. Extract cron metadata from class
|
|
19
|
+
* 3. Validate execute() method exists (AsenaSchedule contract)
|
|
20
|
+
* 4. Register job with CronRunner
|
|
21
|
+
*/
|
|
22
|
+
let PrepareScheduleService = class PrepareScheduleService {
|
|
23
|
+
serviceName = 'PrepareScheduleService';
|
|
24
|
+
container;
|
|
25
|
+
logger;
|
|
26
|
+
cronRunner;
|
|
27
|
+
/**
|
|
28
|
+
* Discover and register all scheduled components with CronRunner
|
|
29
|
+
*/
|
|
30
|
+
async prepare() {
|
|
31
|
+
const schedules = await this.container.resolveAll(ComponentType.SCHEDULE);
|
|
32
|
+
if (!schedules || schedules.length === 0) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
for (const schedule of schedules) {
|
|
36
|
+
this.registerSchedule(schedule);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
registerSchedule(instance) {
|
|
40
|
+
const cronExpression = getTypedMetadata(ComponentConstants.CronKey, instance.constructor);
|
|
41
|
+
const name = getTypedMetadata(ComponentConstants.NameKey, instance.constructor) || instance.constructor.name;
|
|
42
|
+
if (!cronExpression) {
|
|
43
|
+
this.logger.warn(`[Schedule] No cron expression for "${name}", skipping`);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Validate AsenaSchedule contract
|
|
47
|
+
if (typeof instance.execute !== 'function') {
|
|
48
|
+
throw new Error(`@Schedule class "${name}" must implement AsenaSchedule interface (missing execute() method)`);
|
|
49
|
+
}
|
|
50
|
+
this.cronRunner.registerJob(name, cronExpression, instance.execute.bind(instance));
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
__decorate([
|
|
54
|
+
Inject(ICoreServiceNames.CONTAINER),
|
|
55
|
+
__metadata("design:type", Function)
|
|
56
|
+
], PrepareScheduleService.prototype, "container", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
Inject(ICoreServiceNames.SERVER_LOGGER),
|
|
59
|
+
__metadata("design:type", Object)
|
|
60
|
+
], PrepareScheduleService.prototype, "logger", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
Inject(ICoreServiceNames.CRON_RUNNER),
|
|
63
|
+
__metadata("design:type", Function)
|
|
64
|
+
], PrepareScheduleService.prototype, "cronRunner", void 0);
|
|
65
|
+
PrepareScheduleService = __decorate([
|
|
66
|
+
CoreService(ICoreServiceNames.PREPARE_SCHEDULE_SERVICE)
|
|
67
|
+
], PrepareScheduleService);
|
|
68
|
+
export { PrepareScheduleService };
|
|
69
|
+
//# sourceMappingURL=PrepareScheduleService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrepareScheduleService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareScheduleService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD;;;;;;;;GAQG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjB,WAAW,GAAG,wBAAwB,CAAC;IAG/C,SAAS,CAAa;IAGtB,MAAM,CAAgB;IAGtB,UAAU,CAAc;IAEhC;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE/E,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,QAAa;QACpC,MAAM,cAAc,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QAElG,MAAM,IAAI,GACR,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAE1G,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,aAAa,CAAC,CAAC;YAE1E,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,qEAAqE,CAAC,CAAC;QACjH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrF,CAAC;CACF,CAAA;AA1CS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;yDACN;AAGtB;IADP,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;;sDACV;AAGtB;IADP,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC;;0DACN;AAVrB,sBAAsB;IADlC,WAAW,CAAC,iBAAiB,CAAC,wBAAwB,CAAC;GAC3C,sBAAsB,CA8ClC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface PageRoute {
|
|
2
|
+
[key: string]: {
|
|
3
|
+
path: string;
|
|
4
|
+
};
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Method decorator for defining a page route in a FrontendController.
|
|
8
|
+
* The decorated method should return a Bun HTMLBundle (imported from .html file).
|
|
9
|
+
*
|
|
10
|
+
* @param {string} path - The sub-path for this page (relative to FrontendController base path)
|
|
11
|
+
* @returns {MethodDecorator}
|
|
12
|
+
*/
|
|
13
|
+
export declare function Page(path: string): (target: object, propertyKey: string, _descriptor: PropertyDescriptor) => void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ComponentConstants } from '../../../ioc';
|
|
2
|
+
import { defineTypedMetadata, getOwnTypedMetadata } from '../../../utils/typedMetadata';
|
|
3
|
+
/**
|
|
4
|
+
* Method decorator for defining a page route in a FrontendController.
|
|
5
|
+
* The decorated method should return a Bun HTMLBundle (imported from .html file).
|
|
6
|
+
*
|
|
7
|
+
* @param {string} path - The sub-path for this page (relative to FrontendController base path)
|
|
8
|
+
* @returns {MethodDecorator}
|
|
9
|
+
*/
|
|
10
|
+
export function Page(path) {
|
|
11
|
+
return function (target, propertyKey, _descriptor) {
|
|
12
|
+
const routes = getOwnTypedMetadata(ComponentConstants.PageRoutesKey, target.constructor) || {};
|
|
13
|
+
routes[propertyKey] = { path: path.replace(/^\/+/, '') };
|
|
14
|
+
defineTypedMetadata(ComponentConstants.PageRoutesKey, routes, target.constructor);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=Page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../../../lib/server/web/decorators/Page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAMxF;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAE,WAA+B;QACnF,MAAM,MAAM,GAAG,mBAAmB,CAAY,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAE1G,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAEzD,mBAAmB,CAAY,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/F,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ApiParams, ControllerDecoratorParams, ControllerHandler } from '../../../adapter';
|
|
2
|
-
export declare function genericHandler({ method, path, description, middlewares, staticServe, validator }: ApiParams): (route: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<ControllerHandler>) => void;
|
|
2
|
+
export declare function genericHandler({ method, path, summary, description, middlewares, staticServe, validator }: ApiParams): (route: object, propertyKey: string, _descriptor: TypedPropertyDescriptor<ControllerHandler>) => void;
|
|
3
3
|
export declare const DEFAULT_PARAMS: ControllerDecoratorParams;
|
|
4
4
|
export declare const generateHandlerParams: (params: ControllerDecoratorParams | string) => ControllerDecoratorParams;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ComponentConstants } from '../../../ioc';
|
|
2
2
|
import { defineMiddleware } from '../helper';
|
|
3
3
|
import { defineTypedMetadata, getOwnTypedMetadata } from '../../../utils/typedMetadata';
|
|
4
|
-
export function genericHandler({ method, path, description, middlewares, staticServe, validator }) {
|
|
4
|
+
export function genericHandler({ method, path, summary, description, middlewares, staticServe, validator }) {
|
|
5
5
|
return function (route, propertyKey, _descriptor) {
|
|
6
6
|
const routes = getOwnTypedMetadata(ComponentConstants.RouteKey, route.constructor) || {};
|
|
7
7
|
if (!routes[propertyKey]) {
|
|
8
|
-
routes[propertyKey] = { path, method, description, middlewares, staticServe, validator };
|
|
8
|
+
routes[propertyKey] = { path, method, summary, description, middlewares, staticServe, validator };
|
|
9
9
|
}
|
|
10
10
|
defineTypedMetadata(ComponentConstants.RouteKey, routes, route.constructor);
|
|
11
11
|
defineMiddleware(route.constructor, middlewares);
|
|
@@ -14,6 +14,7 @@ export function genericHandler({ method, path, description, middlewares, staticS
|
|
|
14
14
|
export const DEFAULT_PARAMS = {
|
|
15
15
|
path: '',
|
|
16
16
|
middlewares: [],
|
|
17
|
+
summary: '',
|
|
17
18
|
description: '',
|
|
18
19
|
staticServe: undefined,
|
|
19
20
|
validator: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.base.js","sourceRoot":"","sources":["../../../../../lib/server/web/decorators/http.base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGxF,MAAM,UAAU,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAa;
|
|
1
|
+
{"version":3,"file":"http.base.js","sourceRoot":"","sources":["../../../../../lib/server/web/decorators/http.base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGxF,MAAM,UAAU,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAa;IACnH,OAAO,UAAU,KAAa,EAAE,WAAmB,EAAE,WAAuD;QAC1G,MAAM,MAAM,GAAG,mBAAmB,CAAQ,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEhG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACpG,CAAC;QAED,mBAAmB,CAAQ,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAEnF,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAA8B;IACvD,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAA0C,EAA6B,EAAE;IAC7G,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO;YACL,GAAG,cAAc;YACjB,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,cAAc;QACjB,GAAG,MAAM;QACT,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC;KACvC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/server/web/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/server/web/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ControllerDecoratorParams } from '../../../../adapter';
|
|
2
|
+
/**
|
|
3
|
+
* Decorator for handling all HTTP methods on a route.
|
|
4
|
+
* @param {ControllerDecoratorParams | string} params - The parameters for the route.
|
|
5
|
+
* @returns {Function} The generic handler for all HTTP methods.
|
|
6
|
+
*/
|
|
7
|
+
export declare function All(params: ControllerDecoratorParams | string): Function;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { generateHandlerParams, genericHandler } from '../http.base';
|
|
2
|
+
import { HttpMethod } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Decorator for handling all HTTP methods on a route.
|
|
5
|
+
* @param {ControllerDecoratorParams | string} params - The parameters for the route.
|
|
6
|
+
* @returns {Function} The generic handler for all HTTP methods.
|
|
7
|
+
*/
|
|
8
|
+
export function All(params) {
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({ method: HttpMethod.ALL, path, summary, middlewares, description, staticServe, validator });
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=All.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"All.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/All.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,MAA0C;IAC5D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACrH,CAAC"}
|
|
@@ -6,7 +6,15 @@ import { HttpMethod } from '../../types';
|
|
|
6
6
|
* @returns {Function} The generic handler for the CONNECT request.
|
|
7
7
|
*/
|
|
8
8
|
export function Connect(params) {
|
|
9
|
-
const { path, middlewares, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
-
return genericHandler({
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({
|
|
11
|
+
method: HttpMethod.CONNECT,
|
|
12
|
+
path,
|
|
13
|
+
summary,
|
|
14
|
+
middlewares,
|
|
15
|
+
description,
|
|
16
|
+
staticServe,
|
|
17
|
+
validator,
|
|
18
|
+
});
|
|
11
19
|
}
|
|
12
20
|
//# sourceMappingURL=Connect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connect.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAA0C;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Connect.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAA0C;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC;QACpB,MAAM,EAAE,UAAU,CAAC,OAAO;QAC1B,IAAI;QACJ,OAAO;QACP,WAAW;QACX,WAAW;QACX,WAAW;QACX,SAAS;KACV,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { HttpMethod } from '../../types';
|
|
|
6
6
|
* @returns {Function} The generic handler for the DELETE request.
|
|
7
7
|
*/
|
|
8
8
|
export function Delete(params) {
|
|
9
|
-
const { path, middlewares, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
-
return genericHandler({ method: HttpMethod.DELETE, path, middlewares, description, staticServe, validator });
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({ method: HttpMethod.DELETE, path, summary, middlewares, description, staticServe, validator });
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=Delete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Delete.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,MAA0C;IAC/D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Delete.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,MAA0C;IAC/D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACxH,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { HttpMethod } from '../../types';
|
|
|
6
6
|
* @returns {Function} The generic handler for the GET request.
|
|
7
7
|
*/
|
|
8
8
|
export function Get(params) {
|
|
9
|
-
const { path, middlewares, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
-
return genericHandler({ method: HttpMethod.GET, path, middlewares, description, staticServe, validator });
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({ method: HttpMethod.GET, path, summary, middlewares, description, staticServe, validator });
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=Get.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Get.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,MAA0C;IAC5D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Get.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,MAA0C;IAC5D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACrH,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { HttpMethod } from '../../types';
|
|
|
6
6
|
* @returns {Function} The generic handler for the HEAD request.
|
|
7
7
|
*/
|
|
8
8
|
export function Head(params) {
|
|
9
|
-
const { path, middlewares, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
-
return genericHandler({ method: HttpMethod.HEAD, path, middlewares, description, staticServe, validator });
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({ method: HttpMethod.HEAD, path, summary, middlewares, description, staticServe, validator });
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=Head.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Head.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Head.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,MAA0C;IAC7D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Head.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Head.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,MAA0C;IAC7D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACtH,CAAC"}
|
|
@@ -6,7 +6,15 @@ import { HttpMethod } from '../../types';
|
|
|
6
6
|
* @returns {Function} The generic handler for the OPTIONS request.
|
|
7
7
|
*/
|
|
8
8
|
export function Options(params) {
|
|
9
|
-
const { path, middlewares, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
-
return genericHandler({
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({
|
|
11
|
+
method: HttpMethod.OPTIONS,
|
|
12
|
+
path,
|
|
13
|
+
summary,
|
|
14
|
+
middlewares,
|
|
15
|
+
description,
|
|
16
|
+
staticServe,
|
|
17
|
+
validator,
|
|
18
|
+
});
|
|
11
19
|
}
|
|
12
20
|
//# sourceMappingURL=Options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Options.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAA0C;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Options.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAA0C;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC;QACpB,MAAM,EAAE,UAAU,CAAC,OAAO;QAC1B,IAAI;QACJ,OAAO;QACP,WAAW;QACX,WAAW;QACX,WAAW;QACX,SAAS;KACV,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { HttpMethod } from '../../types';
|
|
|
6
6
|
* @returns {Function} The generic handler for the PATCH request.
|
|
7
7
|
*/
|
|
8
8
|
export function Patch(params) {
|
|
9
|
-
const { path, middlewares, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
-
return genericHandler({ method: HttpMethod.PATCH, path, middlewares, description, staticServe, validator });
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({ method: HttpMethod.PATCH, path, summary, middlewares, description, staticServe, validator });
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=Patch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Patch.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,MAA0C;IAC9D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Patch.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,MAA0C;IAC9D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACvH,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { HttpMethod } from '../../types';
|
|
|
6
6
|
* @returns {Function} The generic handler for the POST request.
|
|
7
7
|
*/
|
|
8
8
|
export function Post(params) {
|
|
9
|
-
const { path, middlewares, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
-
return genericHandler({ method: HttpMethod.POST, path, middlewares, description, staticServe, validator });
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({ method: HttpMethod.POST, path, summary, middlewares, description, staticServe, validator });
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=Post.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Post.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Post.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,MAA0C;IAC7D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Post.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Post.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,MAA0C;IAC7D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACtH,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { HttpMethod } from '../../types';
|
|
|
6
6
|
* @returns {Function} The generic handler for the PUT request.
|
|
7
7
|
*/
|
|
8
8
|
export function Put(params) {
|
|
9
|
-
const { path, middlewares, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
-
return genericHandler({ method: HttpMethod.PUT, path, middlewares, description, staticServe, validator });
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({ method: HttpMethod.PUT, path, summary, middlewares, description, staticServe, validator });
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=Put.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Put.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Put.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,MAA0C;IAC5D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Put.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Put.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,MAA0C;IAC5D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACrH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ControllerDecoratorParams } from '../../../../adapter';
|
|
2
|
+
/**
|
|
3
|
+
* Decorator for handling custom HTTP methods.
|
|
4
|
+
* Use this when standard decorators (@Get, @Post, etc.) don't cover your HTTP method.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} method - The HTTP method (e.g., 'MYVERB', 'PURGE', 'LINK')
|
|
7
|
+
* @param {ControllerDecoratorParams | string} params - Route path or full params object
|
|
8
|
+
* @returns {Function} The generic handler for the custom method
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* @Controller('/api')
|
|
13
|
+
* export class ApiController {
|
|
14
|
+
* @Route('PURGE', '/cache')
|
|
15
|
+
* async purgeCache(context: Context) {
|
|
16
|
+
* // Handle PURGE /api/cache
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function Route(method: string, params?: ControllerDecoratorParams | string): Function;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { generateHandlerParams, genericHandler } from '../http.base';
|
|
2
|
+
/**
|
|
3
|
+
* Decorator for handling custom HTTP methods.
|
|
4
|
+
* Use this when standard decorators (@Get, @Post, etc.) don't cover your HTTP method.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} method - The HTTP method (e.g., 'MYVERB', 'PURGE', 'LINK')
|
|
7
|
+
* @param {ControllerDecoratorParams | string} params - Route path or full params object
|
|
8
|
+
* @returns {Function} The generic handler for the custom method
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* @Controller('/api')
|
|
13
|
+
* export class ApiController {
|
|
14
|
+
* @Route('PURGE', '/cache')
|
|
15
|
+
* async purgeCache(context: Context) {
|
|
16
|
+
* // Handle PURGE /api/cache
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function Route(method, params = '/') {
|
|
22
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
23
|
+
return genericHandler({
|
|
24
|
+
method: method.toLowerCase(),
|
|
25
|
+
path,
|
|
26
|
+
summary,
|
|
27
|
+
middlewares,
|
|
28
|
+
description,
|
|
29
|
+
staticServe,
|
|
30
|
+
validator,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=Route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Route.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAIrE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,KAAK,CAAC,MAAc,EAAE,SAA6C,GAAG;IACpF,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC,WAAW,EAAgB;QAC1C,IAAI;QACJ,OAAO;QACP,WAAW;QACX,WAAW;QACX,WAAW;QACX,SAAS;KACV,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { HttpMethod } from '../../types';
|
|
|
6
6
|
* @returns {Function} The generic handler for the TRACE request.
|
|
7
7
|
*/
|
|
8
8
|
export function Trace(params) {
|
|
9
|
-
const { path, middlewares, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
-
return genericHandler({ method: HttpMethod.TRACE, path, middlewares, description, staticServe, validator });
|
|
9
|
+
const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
|
|
10
|
+
return genericHandler({ method: HttpMethod.TRACE, path, summary, middlewares, description, staticServe, validator });
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=Trace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trace.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,MAA0C;IAC9D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Trace.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,MAA0C;IAC9D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACvH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
import type { Class } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Defines the shape of a single response entry with optional schema and description.
|
|
4
|
+
* Used in status-code-mapped response definitions.
|
|
5
|
+
*
|
|
6
|
+
* @template S - Schema type
|
|
7
|
+
*/
|
|
8
|
+
export interface ResponseSchemaDefinition<S> {
|
|
9
|
+
schema?: S;
|
|
10
|
+
description?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Flexible response schema type for OpenAPI documentation.
|
|
14
|
+
* Supports three formats:
|
|
15
|
+
* - Single schema: treated as the 200 response
|
|
16
|
+
* - Status code map with raw schemas: `{ 201: schema, 400: schema }`
|
|
17
|
+
* - Status code map with definitions: `{ 201: { schema, description } }`
|
|
18
|
+
*
|
|
19
|
+
* @template S - Schema type
|
|
20
|
+
*/
|
|
21
|
+
export type ResponseSchema<S> = S | Record<number, S | ResponseSchemaDefinition<S>>;
|
|
2
22
|
/**
|
|
3
23
|
* Interface representing a validation service.
|
|
4
24
|
* @template S - Schema type.
|
|
@@ -29,5 +49,17 @@ export interface AsenaValidationService<S> {
|
|
|
29
49
|
* @returns {Promise<S> | S} The handler for header validation.
|
|
30
50
|
*/
|
|
31
51
|
header?(): Promise<S> | S;
|
|
52
|
+
/**
|
|
53
|
+
* Defines the response schema for OpenAPI documentation.
|
|
54
|
+
* Not used at runtime validation — only consumed by documentation generators.
|
|
55
|
+
*
|
|
56
|
+
* Supports three formats:
|
|
57
|
+
* - Single schema: `response() { return z.object({...}); }` → 200 response
|
|
58
|
+
* - Status code map: `response() { return { 201: schema, 400: schema }; }`
|
|
59
|
+
* - Full definitions: `response() { return { 201: { schema, description: '...' } }; }`
|
|
60
|
+
*
|
|
61
|
+
* @returns {Promise<ResponseSchema<S>> | ResponseSchema<S>} The response schema definition.
|
|
62
|
+
*/
|
|
63
|
+
response?(): Promise<ResponseSchema<S>> | ResponseSchema<S>;
|
|
32
64
|
}
|
|
33
65
|
export type ValidatorClass<S = unknown> = Class<AsenaValidationService<S>>;
|