@expressots/adapter-express 3.0.0 → 4.0.0-preview.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 +39 -96
- package/lib/CHANGELOG.md +31 -5
- package/lib/README.md +39 -96
- package/lib/cjs/adapter-express/application-express.base.js +3 -1
- package/lib/cjs/adapter-express/application-express.js +1049 -85
- package/lib/cjs/adapter-express/express-utils/conditional-middleware.js +102 -0
- package/lib/cjs/adapter-express/express-utils/constants.js +17 -0
- package/lib/cjs/adapter-express/express-utils/content-negotiation-decorators.js +129 -0
- package/lib/cjs/adapter-express/express-utils/decorators.js +186 -49
- package/lib/cjs/adapter-express/express-utils/exception-filter-decorators.js +11 -0
- package/lib/cjs/adapter-express/express-utils/guard-context-factory.js +84 -0
- package/lib/cjs/adapter-express/express-utils/guard-middleware.js +115 -0
- package/lib/cjs/adapter-express/express-utils/guard-utils.js +18 -0
- package/lib/cjs/adapter-express/express-utils/http-context-store.js +15 -0
- package/lib/cjs/adapter-express/express-utils/http-status-middleware.js +37 -2
- package/lib/cjs/adapter-express/express-utils/index.js +67 -1
- package/lib/cjs/adapter-express/express-utils/interceptor-middleware.js +132 -0
- package/lib/cjs/adapter-express/express-utils/inversify-express-server.js +810 -63
- package/lib/cjs/adapter-express/express-utils/lazy-module-middleware.js +241 -0
- package/lib/cjs/adapter-express/express-utils/middleware-composition.js +95 -0
- package/lib/cjs/adapter-express/express-utils/permission-preloader.middleware.js +48 -0
- package/lib/cjs/adapter-express/express-utils/route-constraints.js +95 -0
- package/lib/cjs/adapter-express/express-utils/scope-extractor.interface.js +2 -0
- package/lib/cjs/adapter-express/express-utils/scope-extractor.js +66 -0
- package/lib/cjs/adapter-express/express-utils/setup-authorization.js +71 -0
- package/lib/cjs/adapter-express/express-utils/setup-event-system.js +113 -0
- package/lib/cjs/adapter-express/express-utils/setup-interceptors.js +103 -0
- package/lib/cjs/adapter-express/express-utils/setup-lazy-loading.js +228 -0
- package/lib/cjs/adapter-express/express-utils/utils.js +30 -12
- package/lib/cjs/adapter-express/express-utils/validation-decorators.js +205 -0
- package/lib/cjs/adapter-express/express-utils/validation-service.js +252 -0
- package/lib/cjs/adapter-express/index.js +7 -5
- package/lib/cjs/adapter-express/micro-api/application-express-micro-route.js +31 -1
- package/lib/cjs/adapter-express/micro-api/application-express-micro.js +11 -37
- package/lib/cjs/adapter-express/micro-api/gateway/circuit-breaker.js +174 -0
- package/lib/cjs/adapter-express/micro-api/gateway/index.js +11 -0
- package/lib/cjs/adapter-express/micro-api/gateway/service-proxy.js +214 -0
- package/lib/cjs/adapter-express/micro-api/index.js +27 -3
- package/lib/cjs/adapter-express/micro-api/micro.js +217 -0
- package/lib/cjs/adapter-express/micro-api/queue/index.js +8 -0
- package/lib/cjs/adapter-express/micro-api/queue/queue.interface.js +2 -0
- package/lib/cjs/adapter-express/micro-api/queue/rabbitmq-consumer.js +255 -0
- package/lib/cjs/adapter-express/micro-api/serverless/aws-lambda.adapter.js +183 -0
- package/lib/cjs/adapter-express/micro-api/serverless/cloudflare.adapter.js +158 -0
- package/lib/cjs/adapter-express/micro-api/serverless/index.js +12 -0
- package/lib/cjs/adapter-express/micro-api/serverless/vercel.adapter.js +102 -0
- package/lib/cjs/adapter-express/micro-api/service-mesh/index.js +10 -0
- package/lib/cjs/adapter-express/micro-api/service-mesh/service-client.js +194 -0
- package/lib/cjs/adapter-express/micro-api/service-mesh/service-discovery.js +261 -0
- package/lib/cjs/adapter-express/middleware/index.js +21 -0
- package/lib/cjs/adapter-express/middleware/request-logging.middleware.js +244 -0
- package/lib/cjs/adapter-express/render/engine.js +15 -15
- package/lib/cjs/adapter-express/render/index.js +5 -0
- package/lib/cjs/adapter-express/studio/index.js +9 -0
- package/lib/cjs/adapter-express/studio/studio-integration.js +214 -0
- package/lib/cjs/index.js +1 -1
- package/lib/cjs/types/adapter-express/application-express.base.d.ts +20 -7
- package/lib/cjs/types/adapter-express/application-express.d.ts +273 -32
- package/lib/cjs/types/adapter-express/express-utils/base-middleware.d.ts +2 -2
- package/lib/cjs/types/adapter-express/express-utils/conditional-middleware.d.ts +97 -0
- package/lib/cjs/types/adapter-express/express-utils/constants.d.ts +13 -0
- package/lib/cjs/types/adapter-express/express-utils/content-negotiation-decorators.d.ts +94 -0
- package/lib/cjs/types/adapter-express/express-utils/decorators.d.ts +54 -6
- package/lib/cjs/types/adapter-express/express-utils/exception-filter-decorators.d.ts +6 -0
- package/lib/cjs/types/adapter-express/express-utils/guard-context-factory.d.ts +17 -0
- package/lib/cjs/types/adapter-express/express-utils/guard-middleware.d.ts +22 -0
- package/lib/cjs/types/adapter-express/express-utils/guard-utils.d.ts +11 -0
- package/lib/cjs/types/adapter-express/express-utils/http-context-store.d.ts +20 -0
- package/lib/cjs/types/adapter-express/express-utils/httpResponseMessage.d.ts +1 -1
- package/lib/cjs/types/adapter-express/express-utils/index.d.ts +30 -2
- package/lib/cjs/types/adapter-express/express-utils/interceptor-middleware.d.ts +40 -0
- package/lib/cjs/types/adapter-express/express-utils/interfaces.d.ts +42 -5
- package/lib/cjs/types/adapter-express/express-utils/inversify-express-server.d.ts +114 -2
- package/lib/cjs/types/adapter-express/express-utils/lazy-module-middleware.d.ts +122 -0
- package/lib/cjs/types/adapter-express/express-utils/middleware-composition.d.ts +85 -0
- package/lib/cjs/types/adapter-express/express-utils/permission-preloader.middleware.d.ts +10 -0
- package/lib/cjs/types/adapter-express/express-utils/route-constraints.d.ts +89 -0
- package/lib/cjs/types/adapter-express/express-utils/scope-extractor.d.ts +21 -0
- package/lib/cjs/types/adapter-express/express-utils/scope-extractor.interface.d.ts +12 -0
- package/lib/cjs/types/adapter-express/express-utils/setup-authorization.d.ts +34 -0
- package/lib/cjs/types/adapter-express/express-utils/setup-event-system.d.ts +118 -0
- package/lib/cjs/types/adapter-express/express-utils/setup-interceptors.d.ts +115 -0
- package/lib/cjs/types/adapter-express/express-utils/setup-lazy-loading.d.ts +123 -0
- package/lib/cjs/types/adapter-express/express-utils/utils.d.ts +17 -2
- package/lib/cjs/types/adapter-express/express-utils/validation-decorators.d.ts +145 -0
- package/lib/cjs/types/adapter-express/express-utils/validation-service.d.ts +88 -0
- package/lib/cjs/types/adapter-express/index.d.ts +6 -4
- package/lib/cjs/types/adapter-express/micro-api/application-express-micro-route.d.ts +25 -14
- package/lib/cjs/types/adapter-express/micro-api/application-express-micro.d.ts +3 -10
- package/lib/cjs/types/adapter-express/micro-api/gateway/circuit-breaker.d.ts +111 -0
- package/lib/cjs/types/adapter-express/micro-api/gateway/index.d.ts +5 -0
- package/lib/cjs/types/adapter-express/micro-api/gateway/service-proxy.d.ts +83 -0
- package/lib/cjs/types/adapter-express/micro-api/index.d.ts +7 -1
- package/lib/cjs/types/adapter-express/micro-api/micro.d.ts +66 -0
- package/lib/cjs/types/adapter-express/micro-api/queue/index.d.ts +5 -0
- package/lib/cjs/types/adapter-express/micro-api/queue/queue.interface.d.ts +60 -0
- package/lib/cjs/types/adapter-express/micro-api/queue/rabbitmq-consumer.d.ts +86 -0
- package/lib/cjs/types/adapter-express/micro-api/serverless/aws-lambda.adapter.d.ts +77 -0
- package/lib/cjs/types/adapter-express/micro-api/serverless/cloudflare.adapter.d.ts +64 -0
- package/lib/cjs/types/adapter-express/micro-api/serverless/index.d.ts +6 -0
- package/lib/cjs/types/adapter-express/micro-api/serverless/vercel.adapter.d.ts +56 -0
- package/lib/cjs/types/adapter-express/micro-api/service-mesh/index.d.ts +5 -0
- package/lib/cjs/types/adapter-express/micro-api/service-mesh/service-client.d.ts +122 -0
- package/lib/cjs/types/adapter-express/micro-api/service-mesh/service-discovery.d.ts +150 -0
- package/lib/cjs/types/adapter-express/middleware/index.d.ts +5 -0
- package/lib/cjs/types/adapter-express/middleware/request-logging.middleware.d.ts +65 -0
- package/lib/cjs/types/adapter-express/render/index.d.ts +1 -0
- package/lib/cjs/types/adapter-express/studio/index.d.ts +1 -0
- package/lib/cjs/types/adapter-express/studio/studio-integration.d.ts +92 -0
- package/lib/cjs/types/index.d.ts +1 -1
- package/lib/esm/adapter-express/application-express.base.js +24 -0
- package/lib/esm/adapter-express/application-express.js +1300 -0
- package/lib/esm/adapter-express/application-express.types.js +1 -0
- package/lib/esm/adapter-express/express-utils/base-middleware.js +19 -0
- package/lib/esm/adapter-express/express-utils/conditional-middleware.js +96 -0
- package/lib/esm/adapter-express/express-utils/constants.js +63 -0
- package/lib/esm/adapter-express/express-utils/content/httpContent.js +6 -0
- package/lib/esm/adapter-express/express-utils/content-negotiation-decorators.js +120 -0
- package/lib/esm/adapter-express/express-utils/decorators.js +575 -0
- package/lib/esm/adapter-express/express-utils/exception-filter-decorators.js +6 -0
- package/lib/esm/adapter-express/express-utils/guard-context-factory.js +83 -0
- package/lib/esm/adapter-express/express-utils/guard-middleware.js +115 -0
- package/lib/esm/adapter-express/express-utils/guard-utils.js +14 -0
- package/lib/esm/adapter-express/express-utils/http-context-store.js +10 -0
- package/lib/esm/adapter-express/express-utils/http-status-middleware.js +116 -0
- package/lib/esm/adapter-express/express-utils/httpResponseMessage.js +29 -0
- package/lib/esm/adapter-express/express-utils/index.js +24 -0
- package/lib/esm/adapter-express/express-utils/interceptor-middleware.js +130 -0
- package/lib/esm/adapter-express/express-utils/interfaces.js +1 -0
- package/lib/esm/adapter-express/express-utils/inversify-express-server.js +1031 -0
- package/lib/esm/adapter-express/express-utils/lazy-module-middleware.js +236 -0
- package/lib/esm/adapter-express/express-utils/middleware-composition.js +89 -0
- package/lib/esm/adapter-express/express-utils/permission-preloader.middleware.js +45 -0
- package/lib/esm/adapter-express/express-utils/resolver-multer.js +30 -0
- package/lib/esm/adapter-express/express-utils/route-constraints.js +91 -0
- package/lib/esm/adapter-express/express-utils/scope-extractor.interface.js +1 -0
- package/lib/esm/adapter-express/express-utils/scope-extractor.js +63 -0
- package/lib/esm/adapter-express/express-utils/setup-authorization.js +68 -0
- package/lib/esm/adapter-express/express-utils/setup-event-system.js +110 -0
- package/lib/esm/adapter-express/express-utils/setup-interceptors.js +100 -0
- package/lib/esm/adapter-express/express-utils/setup-lazy-loading.js +225 -0
- package/lib/esm/adapter-express/express-utils/utils.js +68 -0
- package/lib/esm/adapter-express/express-utils/validation-decorators.js +199 -0
- package/lib/esm/adapter-express/express-utils/validation-service.js +251 -0
- package/lib/esm/adapter-express/index.js +7 -0
- package/lib/esm/adapter-express/micro-api/application-express-micro-container.js +48 -0
- package/lib/esm/adapter-express/micro-api/application-express-micro-route.js +128 -0
- package/lib/esm/adapter-express/micro-api/application-express-micro.js +161 -0
- package/lib/esm/adapter-express/micro-api/gateway/circuit-breaker.js +174 -0
- package/lib/esm/adapter-express/micro-api/gateway/index.js +5 -0
- package/lib/esm/adapter-express/micro-api/gateway/service-proxy.js +210 -0
- package/lib/esm/adapter-express/micro-api/index.js +10 -0
- package/lib/esm/adapter-express/micro-api/micro.js +211 -0
- package/lib/esm/adapter-express/micro-api/queue/index.js +4 -0
- package/lib/esm/adapter-express/micro-api/queue/queue.interface.js +1 -0
- package/lib/esm/adapter-express/micro-api/queue/rabbitmq-consumer.js +229 -0
- package/lib/esm/adapter-express/micro-api/serverless/aws-lambda.adapter.js +180 -0
- package/lib/esm/adapter-express/micro-api/serverless/cloudflare.adapter.js +155 -0
- package/lib/esm/adapter-express/micro-api/serverless/index.js +6 -0
- package/lib/esm/adapter-express/micro-api/serverless/vercel.adapter.js +99 -0
- package/lib/esm/adapter-express/micro-api/service-mesh/index.js +5 -0
- package/lib/esm/adapter-express/micro-api/service-mesh/service-client.js +191 -0
- package/lib/esm/adapter-express/micro-api/service-mesh/service-discovery.js +259 -0
- package/lib/esm/adapter-express/middleware/index.js +5 -0
- package/lib/esm/adapter-express/middleware/request-logging.middleware.js +239 -0
- package/lib/esm/adapter-express/render/constants.js +37 -0
- package/lib/esm/adapter-express/render/engine.js +51 -0
- package/lib/esm/adapter-express/render/index.js +1 -0
- package/lib/esm/adapter-express/render/resolve-render.js +30 -0
- package/lib/esm/adapter-express/studio/index.js +1 -0
- package/lib/esm/adapter-express/studio/studio-integration.js +184 -0
- package/lib/esm/index.mjs +1 -0
- package/lib/esm/package.json +3 -0
- package/lib/esm/types/adapter-express/application-express.base.d.ts +77 -0
- package/lib/esm/types/adapter-express/application-express.d.ts +411 -0
- package/lib/esm/types/adapter-express/application-express.types.d.ts +23 -0
- package/lib/esm/types/adapter-express/express-utils/base-middleware.d.ts +8 -0
- package/lib/esm/types/adapter-express/express-utils/conditional-middleware.d.ts +97 -0
- package/lib/esm/types/adapter-express/express-utils/constants.d.ts +57 -0
- package/lib/esm/types/adapter-express/express-utils/content/httpContent.d.ts +6 -0
- package/lib/esm/types/adapter-express/express-utils/content-negotiation-decorators.d.ts +94 -0
- package/lib/esm/types/adapter-express/express-utils/decorators.d.ts +257 -0
- package/lib/esm/types/adapter-express/express-utils/exception-filter-decorators.d.ts +6 -0
- package/lib/esm/types/adapter-express/express-utils/guard-context-factory.d.ts +17 -0
- package/lib/esm/types/adapter-express/express-utils/guard-middleware.d.ts +22 -0
- package/lib/esm/types/adapter-express/express-utils/guard-utils.d.ts +11 -0
- package/lib/esm/types/adapter-express/express-utils/http-context-store.d.ts +20 -0
- package/lib/esm/types/adapter-express/express-utils/http-status-middleware.d.ts +26 -0
- package/lib/esm/types/adapter-express/express-utils/httpResponseMessage.d.ts +14 -0
- package/lib/esm/types/adapter-express/express-utils/index.d.ts +30 -0
- package/lib/esm/types/adapter-express/express-utils/interceptor-middleware.d.ts +40 -0
- package/lib/esm/types/adapter-express/express-utils/interfaces.d.ts +115 -0
- package/lib/esm/types/adapter-express/express-utils/inversify-express-server.d.ts +172 -0
- package/lib/esm/types/adapter-express/express-utils/lazy-module-middleware.d.ts +122 -0
- package/lib/esm/types/adapter-express/express-utils/middleware-composition.d.ts +85 -0
- package/lib/esm/types/adapter-express/express-utils/permission-preloader.middleware.d.ts +10 -0
- package/lib/esm/types/adapter-express/express-utils/resolver-multer.d.ts +7 -0
- package/lib/esm/types/adapter-express/express-utils/route-constraints.d.ts +89 -0
- package/lib/esm/types/adapter-express/express-utils/scope-extractor.d.ts +21 -0
- package/lib/esm/types/adapter-express/express-utils/scope-extractor.interface.d.ts +12 -0
- package/lib/esm/types/adapter-express/express-utils/setup-authorization.d.ts +34 -0
- package/lib/esm/types/adapter-express/express-utils/setup-event-system.d.ts +118 -0
- package/lib/esm/types/adapter-express/express-utils/setup-interceptors.d.ts +115 -0
- package/lib/esm/types/adapter-express/express-utils/setup-lazy-loading.d.ts +123 -0
- package/lib/esm/types/adapter-express/express-utils/utils.d.ts +24 -0
- package/lib/esm/types/adapter-express/express-utils/validation-decorators.d.ts +145 -0
- package/lib/esm/types/adapter-express/express-utils/validation-service.d.ts +88 -0
- package/lib/esm/types/adapter-express/index.d.ts +7 -0
- package/lib/esm/types/adapter-express/micro-api/application-express-micro-container.d.ts +47 -0
- package/lib/esm/types/adapter-express/micro-api/application-express-micro-route.d.ts +104 -0
- package/lib/esm/types/adapter-express/micro-api/application-express-micro.d.ts +72 -0
- package/lib/esm/types/adapter-express/micro-api/gateway/circuit-breaker.d.ts +111 -0
- package/lib/esm/types/adapter-express/micro-api/gateway/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/micro-api/gateway/service-proxy.d.ts +83 -0
- package/lib/esm/types/adapter-express/micro-api/index.d.ts +7 -0
- package/lib/esm/types/adapter-express/micro-api/micro.d.ts +66 -0
- package/lib/esm/types/adapter-express/micro-api/queue/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/micro-api/queue/queue.interface.d.ts +60 -0
- package/lib/esm/types/adapter-express/micro-api/queue/rabbitmq-consumer.d.ts +86 -0
- package/lib/esm/types/adapter-express/micro-api/serverless/aws-lambda.adapter.d.ts +77 -0
- package/lib/esm/types/adapter-express/micro-api/serverless/cloudflare.adapter.d.ts +64 -0
- package/lib/esm/types/adapter-express/micro-api/serverless/index.d.ts +6 -0
- package/lib/esm/types/adapter-express/micro-api/serverless/vercel.adapter.d.ts +56 -0
- package/lib/esm/types/adapter-express/micro-api/service-mesh/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/micro-api/service-mesh/service-client.d.ts +122 -0
- package/lib/esm/types/adapter-express/micro-api/service-mesh/service-discovery.d.ts +150 -0
- package/lib/esm/types/adapter-express/middleware/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/middleware/request-logging.middleware.d.ts +65 -0
- package/lib/esm/types/adapter-express/render/constants.d.ts +26 -0
- package/lib/esm/types/adapter-express/render/engine.d.ts +20 -0
- package/lib/esm/types/adapter-express/render/index.d.ts +5 -0
- package/lib/esm/types/adapter-express/render/resolve-render.d.ts +7 -0
- package/lib/esm/types/adapter-express/studio/index.d.ts +1 -0
- package/lib/esm/types/adapter-express/studio/studio-integration.d.ts +92 -0
- package/lib/esm/types/index.d.ts +1 -0
- package/lib/package.json +156 -146
- package/package.json +156 -146
- package/lib/cjs/di/di.interfaces.js +0 -10
- package/lib/cjs/types/di/di.interfaces.d.ts +0 -289
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import express from "express";
|
|
2
|
+
/**
|
|
3
|
+
* ExpressHandler Type
|
|
4
|
+
*
|
|
5
|
+
* The ExpressHandler type is a union type that represents various types of Express middleware functions.
|
|
6
|
+
* It can be one of the following types:
|
|
7
|
+
* - express.ErrorRequestHandler: Handles errors in the middleware pipeline.
|
|
8
|
+
* - express.RequestParamHandler: Handles parameters in the middleware pipeline.
|
|
9
|
+
* - express.RequestHandler: General request handler.
|
|
10
|
+
* - undefined: Represents the absence of a handler.
|
|
11
|
+
*/
|
|
12
|
+
export type ExpressHandler = express.ErrorRequestHandler | express.RequestParamHandler | express.RequestHandler | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* MiddlewareConfig Interface
|
|
15
|
+
*
|
|
16
|
+
* The MiddlewareConfig interface specifies the structure for middleware configuration objects.
|
|
17
|
+
* - path: Optional. The route path for which the middleware is configured.
|
|
18
|
+
* - middlewares: An array of ExpressHandler types that make up the middleware pipeline for the route specified by 'path'.
|
|
19
|
+
*/
|
|
20
|
+
export type MiddlewareConfig = {
|
|
21
|
+
path?: string;
|
|
22
|
+
middlewares: Array<ExpressHandler>;
|
|
23
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { NextFunction, Request, Response } from "express";
|
|
2
|
+
import { interfaces as inversifyInterfaces } from "@expressots/core";
|
|
3
|
+
import type { HttpContext } from "./interfaces.js";
|
|
4
|
+
export declare abstract class BaseMiddleware implements BaseMiddleware {
|
|
5
|
+
httpContext: HttpContext;
|
|
6
|
+
protected bind<T>(serviceIdentifier: inversifyInterfaces.ServiceIdentifier<T>): inversifyInterfaces.BindingToSyntax<T>;
|
|
7
|
+
abstract handler(req: Request, res: Response, next: NextFunction): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
2
|
+
import type { Middleware, MiddlewareClass } from "./interfaces.js";
|
|
3
|
+
/**
|
|
4
|
+
* Type definition for middleware condition functions.
|
|
5
|
+
* Can be synchronous (returns boolean) or asynchronous (returns Promise<boolean>).
|
|
6
|
+
*/
|
|
7
|
+
export type MiddlewareCondition = (req: Request) => boolean | Promise<boolean>;
|
|
8
|
+
/**
|
|
9
|
+
* Configuration object for conditional middleware execution.
|
|
10
|
+
* When the condition evaluates to true, the middleware is executed.
|
|
11
|
+
* When false, the middleware is skipped and next() is called.
|
|
12
|
+
*/
|
|
13
|
+
export interface ConditionalMiddlewareConfig {
|
|
14
|
+
/**
|
|
15
|
+
* The condition function that determines whether the middleware should execute.
|
|
16
|
+
* Receives the Express Request object and returns a boolean or Promise<boolean>.
|
|
17
|
+
*/
|
|
18
|
+
condition: MiddlewareCondition;
|
|
19
|
+
/**
|
|
20
|
+
* The middleware to execute when the condition is true.
|
|
21
|
+
* Can be any valid ExpressoTS middleware type (function, class instance, or container-bound).
|
|
22
|
+
*/
|
|
23
|
+
middleware: Middleware;
|
|
24
|
+
/**
|
|
25
|
+
* Whether to skip middleware execution when condition is false.
|
|
26
|
+
* Default: true (skip if condition is false, execute if true)
|
|
27
|
+
* If false, the behavior is inverted (execute if condition is false).
|
|
28
|
+
*/
|
|
29
|
+
skipOnFalse?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Symbol to identify conditional middleware configuration objects.
|
|
33
|
+
* Used internally for type checking.
|
|
34
|
+
*/
|
|
35
|
+
export declare const CONDITIONAL_MIDDLEWARE_SYMBOL: unique symbol;
|
|
36
|
+
/**
|
|
37
|
+
* Type guard to check if an object is a ConditionalMiddlewareConfig.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isConditionalMiddleware(item: unknown): item is ConditionalMiddlewareConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a conditional middleware configuration that executes the middleware
|
|
42
|
+
* when the condition evaluates to true.
|
|
43
|
+
*
|
|
44
|
+
* @param condition - Function that receives the Request and returns boolean or Promise<boolean>
|
|
45
|
+
* @param middleware - The middleware to execute when condition is true
|
|
46
|
+
* @returns ConditionalMiddlewareConfig object
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* // Phase 2: Class reference support - no 'new' keyword needed
|
|
51
|
+
* @Get("/admin",
|
|
52
|
+
* when(req => req.hostname.startsWith("admin."), AdminMiddleware),
|
|
53
|
+
* AuthMiddleware
|
|
54
|
+
* )
|
|
55
|
+
* async adminHandler() {}
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* // Async condition with class reference (Phase 2)
|
|
61
|
+
* @Get("/api",
|
|
62
|
+
* when(async req => {
|
|
63
|
+
* const user = await getUser(req);
|
|
64
|
+
* return user.isAdmin;
|
|
65
|
+
* }, AdminMiddleware)
|
|
66
|
+
* )
|
|
67
|
+
* async apiHandler() {}
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function when(condition: MiddlewareCondition, middleware: Middleware | MiddlewareClass | any): ConditionalMiddlewareConfig;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a conditional middleware configuration that executes the middleware
|
|
73
|
+
* when the condition evaluates to false (inverse of `when`).
|
|
74
|
+
*
|
|
75
|
+
* @param condition - Function that receives the Request and returns boolean or Promise<boolean>
|
|
76
|
+
* @param middleware - The middleware to execute when condition is false
|
|
77
|
+
* @returns ConditionalMiddlewareConfig object
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* // Phase 2: Class reference support - no 'new' keyword needed
|
|
82
|
+
* @Get("/public",
|
|
83
|
+
* unless(req => req.headers.authorization, AuthMiddleware)
|
|
84
|
+
* )
|
|
85
|
+
* async publicHandler() {}
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* // Skip authentication for public routes (Phase 2: class reference)
|
|
91
|
+
* @Get("/health",
|
|
92
|
+
* unless(req => req.path.startsWith("/api"), AuthMiddleware)
|
|
93
|
+
* )
|
|
94
|
+
* async healthCheck() {}
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function unless(condition: MiddlewareCondition, middleware: Middleware | MiddlewareClass | any): ConditionalMiddlewareConfig;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export declare const TYPE: {
|
|
2
|
+
AuthProvider: symbol;
|
|
3
|
+
Controller: symbol;
|
|
4
|
+
HttpContext: symbol;
|
|
5
|
+
};
|
|
6
|
+
export declare const METADATA_KEY: {
|
|
7
|
+
controller: string;
|
|
8
|
+
controllerMethod: string;
|
|
9
|
+
controllerParameter: string;
|
|
10
|
+
httpContext: string;
|
|
11
|
+
version: string;
|
|
12
|
+
accept: string;
|
|
13
|
+
consumes: string;
|
|
14
|
+
produces: string;
|
|
15
|
+
csvOptions: string;
|
|
16
|
+
xmlOptions: string;
|
|
17
|
+
yamlOptions: string;
|
|
18
|
+
streamResponse: string;
|
|
19
|
+
validationSchema: string;
|
|
20
|
+
validationOptions: string;
|
|
21
|
+
exceptionFilter: string;
|
|
22
|
+
controllerExceptionFilters: string;
|
|
23
|
+
methodExceptionFilters: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const HTTP_CODE_METADATA: {
|
|
26
|
+
httpCode: string;
|
|
27
|
+
statusCode: string;
|
|
28
|
+
path: string;
|
|
29
|
+
};
|
|
30
|
+
export declare const RENDER_METADATA_KEY: unique symbol;
|
|
31
|
+
export declare enum PARAMETER_TYPE {
|
|
32
|
+
REQUEST = 0,
|
|
33
|
+
RESPONSE = 1,
|
|
34
|
+
PARAMS = 2,
|
|
35
|
+
QUERY = 3,
|
|
36
|
+
BODY = 4,
|
|
37
|
+
HEADERS = 5,
|
|
38
|
+
COOKIES = 6,
|
|
39
|
+
NEXT = 7,
|
|
40
|
+
PRINCIPAL = 8
|
|
41
|
+
}
|
|
42
|
+
export declare enum HTTP_VERBS_ENUM {
|
|
43
|
+
all = "ALL",
|
|
44
|
+
connect = "CONNECT",
|
|
45
|
+
delete = "DELETE",
|
|
46
|
+
get = "GET",
|
|
47
|
+
head = "HEAD",
|
|
48
|
+
options = "OPTIONS",
|
|
49
|
+
patch = "PATCH",
|
|
50
|
+
post = "POST",
|
|
51
|
+
propfind = "PROPFIND",
|
|
52
|
+
put = "PUT",
|
|
53
|
+
trace = "TRACE"
|
|
54
|
+
}
|
|
55
|
+
export declare const DUPLICATED_CONTROLLER_NAME: (name: string) => string;
|
|
56
|
+
export declare const NO_CONTROLLERS_FOUND = "No controller found! Please ensure that you have register at least one Controller.";
|
|
57
|
+
export declare const DEFAULT_ROUTING_ROOT_PATH = "/";
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import type { CsvFormatOptions, XmlFormatOptions, YamlFormatOptions } from "@expressots/core";
|
|
3
|
+
/**
|
|
4
|
+
* Accept decorator to specify which content types this route accepts for responses.
|
|
5
|
+
* Used for content negotiation based on Accept header.
|
|
6
|
+
* @param contentTypes - Array of accepted content types (e.g., ["application/json", "application/xml"])
|
|
7
|
+
* @returns MethodDecorator
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* @Accept("application/json", "application/xml")
|
|
11
|
+
* @Get("/users")
|
|
12
|
+
* getUsers() {
|
|
13
|
+
* return [{ id: 1, name: "John" }];
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
* @public API
|
|
17
|
+
*/
|
|
18
|
+
export declare function Accept(...contentTypes: Array<string>): MethodDecorator;
|
|
19
|
+
/**
|
|
20
|
+
* Consumes decorator to specify which content types this route consumes for requests.
|
|
21
|
+
* Used for content negotiation based on Content-Type header.
|
|
22
|
+
* @param contentTypes - Array of consumed content types (e.g., ["application/json", "application/xml"])
|
|
23
|
+
* @returns MethodDecorator
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* @Consumes("application/json", "application/xml")
|
|
27
|
+
* @Post("/users")
|
|
28
|
+
* createUser(@body() user: UserDto) {
|
|
29
|
+
* return this.userService.create(user);
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
* @public API
|
|
33
|
+
*/
|
|
34
|
+
export declare function Consumes(...contentTypes: Array<string>): MethodDecorator;
|
|
35
|
+
/**
|
|
36
|
+
* Produces decorator to specify which content types this route produces for responses.
|
|
37
|
+
* Alias for @Accept() decorator.
|
|
38
|
+
* @param contentTypes - Array of produced content types
|
|
39
|
+
* @returns MethodDecorator
|
|
40
|
+
* @public API
|
|
41
|
+
*/
|
|
42
|
+
export declare function Produces(...contentTypes: Array<string>): MethodDecorator;
|
|
43
|
+
/**
|
|
44
|
+
* CsvOptions decorator to configure CSV formatting options for a route.
|
|
45
|
+
* @param options - CSV formatting options
|
|
46
|
+
* @returns MethodDecorator
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* @CsvOptions({ fields: ["id", "name"], includeHeaders: true })
|
|
50
|
+
* @Get("/users")
|
|
51
|
+
* getUsers() {
|
|
52
|
+
* return [{ id: 1, name: "John", email: "john@example.com" }];
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
* @public API
|
|
56
|
+
*/
|
|
57
|
+
export declare function CsvOptions(options: CsvFormatOptions): MethodDecorator;
|
|
58
|
+
/**
|
|
59
|
+
* XmlOptions decorator to configure XML formatting options for a route.
|
|
60
|
+
* @param options - XML formatting options
|
|
61
|
+
* @returns MethodDecorator
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* @XmlOptions({ rootElement: "users", itemElement: "user", prettyPrint: true })
|
|
65
|
+
* @Get("/users")
|
|
66
|
+
* getUsers() {
|
|
67
|
+
* return [{ id: 1, name: "John" }];
|
|
68
|
+
* }
|
|
69
|
+
* ```
|
|
70
|
+
* @public API
|
|
71
|
+
*/
|
|
72
|
+
export declare function XmlOptions(options: XmlFormatOptions): MethodDecorator;
|
|
73
|
+
/**
|
|
74
|
+
* YamlOptions decorator to configure YAML formatting options for a route.
|
|
75
|
+
* @param options - YAML formatting options
|
|
76
|
+
* @returns MethodDecorator
|
|
77
|
+
* @public API
|
|
78
|
+
*/
|
|
79
|
+
export declare function YamlOptions(options: YamlFormatOptions): MethodDecorator;
|
|
80
|
+
/**
|
|
81
|
+
* StreamResponse decorator to indicate that the response should be streamed.
|
|
82
|
+
* Useful for large datasets.
|
|
83
|
+
* @returns MethodDecorator
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* @StreamResponse()
|
|
87
|
+
* @Get("/large-dataset")
|
|
88
|
+
* getLargeDataset() {
|
|
89
|
+
* return this.dataService.streamLargeDataset(); // Returns async iterator
|
|
90
|
+
* }
|
|
91
|
+
* ```
|
|
92
|
+
* @public API
|
|
93
|
+
*/
|
|
94
|
+
export declare function StreamResponse(): MethodDecorator;
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { PARAMETER_TYPE, HTTP_VERBS_ENUM } from "./constants.js";
|
|
3
|
+
import type { HandlerDecorator, Middleware, NewableFunction } from "./interfaces.js";
|
|
4
|
+
import { Request } from "express";
|
|
5
|
+
export declare const injectHttpContext: ParameterDecorator & PropertyDecorator;
|
|
6
|
+
/**
|
|
7
|
+
* Controller decorator to define a new controller
|
|
8
|
+
* @param path route path
|
|
9
|
+
* @param middleware array of middleware to be applied to all routes in the controller
|
|
10
|
+
* @public API
|
|
11
|
+
*/
|
|
12
|
+
export declare function controller(path: string, ...middleware: Array<Middleware>): (target: NewableFunction) => void;
|
|
13
|
+
/**
|
|
14
|
+
* Http decorator to define the status code for a route
|
|
15
|
+
* @param code
|
|
16
|
+
* @returns MethodDecorator
|
|
17
|
+
* @example ```typescript
|
|
18
|
+
* @Http(200)
|
|
19
|
+
* @Get("/")
|
|
20
|
+
* hello() {
|
|
21
|
+
* return "Hello World";
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
* @public API
|
|
25
|
+
*/
|
|
26
|
+
export declare function Http(code: number): (target: object, key: string | symbol, descriptor: TypedPropertyDescriptor<any>) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Version decorator to define the API version for a controller or route method
|
|
29
|
+
* @param version API version (e.g., "1", "1.0", "v1", or 1)
|
|
30
|
+
* @returns ClassDecorator | MethodDecorator
|
|
31
|
+
* @example ```typescript
|
|
32
|
+
* @Version("1")
|
|
33
|
+
* @controller("/users")
|
|
34
|
+
* class UserController {}
|
|
35
|
+
*
|
|
36
|
+
* // Or at method level:
|
|
37
|
+
* @Version("2")
|
|
38
|
+
* @Get("/")
|
|
39
|
+
* getUsers() {
|
|
40
|
+
* return "v2 users";
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
* @public API
|
|
44
|
+
*/
|
|
45
|
+
export declare function Version(version: string | number): (target: any, key?: string | symbol, descriptor?: any) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Decorator to allow accept all HTTP methods
|
|
48
|
+
* @param path route path, wildcard
|
|
49
|
+
* @param middleware array of middleware to be applied to all routes defined in path logic
|
|
50
|
+
* @public API
|
|
51
|
+
*/
|
|
52
|
+
export declare function All(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
|
|
53
|
+
/**
|
|
54
|
+
* Decorator to allow GET HTTP method
|
|
55
|
+
* @param path route path
|
|
56
|
+
* @param middleware array of middleware to be applied to the route
|
|
57
|
+
* @public API
|
|
58
|
+
*/
|
|
59
|
+
export declare function Get(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
|
|
60
|
+
/**
|
|
61
|
+
* Decorator to allow POST HTTP method
|
|
62
|
+
* @param path route path
|
|
63
|
+
* @param middleware array of middleware to be applied to the route
|
|
64
|
+
* @public API
|
|
65
|
+
*/
|
|
66
|
+
export declare function Post(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
|
|
67
|
+
/**
|
|
68
|
+
* Decorator to allow PUT HTTP method
|
|
69
|
+
* @param path route path
|
|
70
|
+
* @param middleware array of middleware to be applied to the route
|
|
71
|
+
* @public API
|
|
72
|
+
*/
|
|
73
|
+
export declare function Put(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
|
|
74
|
+
/**
|
|
75
|
+
* Decorator to allow PATCH HTTP method
|
|
76
|
+
* @param path route path
|
|
77
|
+
* @param middleware array of middleware to be applied to the route
|
|
78
|
+
* @public API
|
|
79
|
+
*/
|
|
80
|
+
export declare function Patch(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
|
|
81
|
+
/**
|
|
82
|
+
* Decorator to allow HEAD HTTP method
|
|
83
|
+
* @param path route path
|
|
84
|
+
* @param middleware array of middleware to be applied to the route
|
|
85
|
+
* @public API
|
|
86
|
+
*/
|
|
87
|
+
export declare function Head(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
|
|
88
|
+
/**
|
|
89
|
+
* Decorator to allow DELETE HTTP method
|
|
90
|
+
* @param path route path
|
|
91
|
+
* @param middleware array of middleware to be applied to the route
|
|
92
|
+
* @public API
|
|
93
|
+
*/
|
|
94
|
+
export declare function Delete(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
|
|
95
|
+
/**
|
|
96
|
+
* Decorator to allow custom HTTP method
|
|
97
|
+
* @param method custom HTTP method
|
|
98
|
+
* @param path route path
|
|
99
|
+
* @param middleware array of middleware to be applied to the route
|
|
100
|
+
* @public API
|
|
101
|
+
*/
|
|
102
|
+
export declare function Method(method: keyof typeof HTTP_VERBS_ENUM, path: string, ...middleware: Array<Middleware>): HandlerDecorator;
|
|
103
|
+
/**
|
|
104
|
+
* Parameter decorator to inject the request object
|
|
105
|
+
* @returns ParameterDecorator
|
|
106
|
+
*/
|
|
107
|
+
export declare const request: () => ParameterDecorator;
|
|
108
|
+
/**
|
|
109
|
+
* Parameter decorator to inject the response object
|
|
110
|
+
* @returns ParameterDecorator
|
|
111
|
+
*/
|
|
112
|
+
export declare const response: () => ParameterDecorator;
|
|
113
|
+
/**
|
|
114
|
+
* Parameter decorator to inject parameters from the route
|
|
115
|
+
* @returns ParameterDecorator
|
|
116
|
+
*/
|
|
117
|
+
export declare const param: (paramName?: string) => ParameterDecorator;
|
|
118
|
+
/**
|
|
119
|
+
* Parameter decorator to inject query parameters
|
|
120
|
+
* @returns ParameterDecorator
|
|
121
|
+
*/
|
|
122
|
+
export declare const query: (queryParamName?: string) => ParameterDecorator;
|
|
123
|
+
/**
|
|
124
|
+
* Parameter decorator to inject the request body
|
|
125
|
+
* @returns ParameterDecorator
|
|
126
|
+
*/
|
|
127
|
+
export declare const body: () => ParameterDecorator;
|
|
128
|
+
/**
|
|
129
|
+
* Parameter decorator to inject the request headers
|
|
130
|
+
* @returns ParameterDecorator
|
|
131
|
+
*/
|
|
132
|
+
export declare const headers: (headerName?: string) => ParameterDecorator;
|
|
133
|
+
/**
|
|
134
|
+
* Parameter decorator to inject the request cookies
|
|
135
|
+
* @returns ParameterDecorator
|
|
136
|
+
*/
|
|
137
|
+
export declare const cookies: (cookieName?: string) => ParameterDecorator;
|
|
138
|
+
/**
|
|
139
|
+
* Parameter decorator next function
|
|
140
|
+
* @returns ParameterDecorator
|
|
141
|
+
*/
|
|
142
|
+
export declare const next: () => ParameterDecorator;
|
|
143
|
+
/**
|
|
144
|
+
* Parameter decorator to inject the principal object obtained from AuthProvider
|
|
145
|
+
* @returns ParameterDecorator
|
|
146
|
+
*/
|
|
147
|
+
export declare const principal: () => ParameterDecorator;
|
|
148
|
+
/**
|
|
149
|
+
* Parameter decorator to inject the request object
|
|
150
|
+
* @returns ParameterDecorator
|
|
151
|
+
* @param type - The type of parameter to inject
|
|
152
|
+
* @param parameterName - The name of the parameter to inject
|
|
153
|
+
* @public API
|
|
154
|
+
*/
|
|
155
|
+
export declare function params(type: PARAMETER_TYPE, parameterName?: string): ParameterDecorator;
|
|
156
|
+
/**
|
|
157
|
+
* Render decorator to define the template and default data for a route
|
|
158
|
+
* @param template The template to render
|
|
159
|
+
* @param defaultData The default data to pass to the template
|
|
160
|
+
* @returns MethodDecorator
|
|
161
|
+
* @public API
|
|
162
|
+
*/
|
|
163
|
+
export declare function Render(template: string, defaultData?: Record<string, unknown>): MethodDecorator;
|
|
164
|
+
export declare function getRenderMetadata(target: object, propertyKey: string | symbol): {
|
|
165
|
+
template?: string;
|
|
166
|
+
defaultData?: Record<string, unknown>;
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Multer storage engine interface
|
|
170
|
+
*/
|
|
171
|
+
export interface StorageEngine {
|
|
172
|
+
_handleFile(req: Request, file: MulterFile, callback: (error?: Error | null, info?: Partial<MulterFile>) => void): void;
|
|
173
|
+
_removeFile(req: Request, file: MulterFile, callback: (error: Error | null) => void): void;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Multer file interface
|
|
177
|
+
*/
|
|
178
|
+
export interface MulterFile {
|
|
179
|
+
fieldname: string;
|
|
180
|
+
originalname: string;
|
|
181
|
+
encoding: string;
|
|
182
|
+
mimetype: string;
|
|
183
|
+
size: number;
|
|
184
|
+
destination?: string;
|
|
185
|
+
filename?: string;
|
|
186
|
+
path?: string;
|
|
187
|
+
buffer?: Buffer;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Multer limits interface
|
|
191
|
+
*/
|
|
192
|
+
export interface MulterLimits {
|
|
193
|
+
fieldNameSize?: number;
|
|
194
|
+
fieldSize?: number;
|
|
195
|
+
fields?: number;
|
|
196
|
+
fileSize?: number;
|
|
197
|
+
files?: number;
|
|
198
|
+
parts?: number;
|
|
199
|
+
headerPairs?: number;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Multer options interface
|
|
203
|
+
*/
|
|
204
|
+
export interface MulterOptions {
|
|
205
|
+
dest?: string;
|
|
206
|
+
storage?: StorageEngine;
|
|
207
|
+
limits?: MulterLimits;
|
|
208
|
+
fileFilter?: FileFilter;
|
|
209
|
+
}
|
|
210
|
+
export type FileFilterCallback = (error: Error | null, acceptFile: boolean) => void;
|
|
211
|
+
export type FileFilter = (req: Request, file: MulterFile, callback: FileFilterCallback) => void;
|
|
212
|
+
type FieldOptions = {
|
|
213
|
+
fieldName: string;
|
|
214
|
+
maxCount?: number;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* File upload decorator to handle file uploads.
|
|
218
|
+
*
|
|
219
|
+
* This decorator integrates with the global upload configuration
|
|
220
|
+
* set via `Middleware.upload()` in app.ts. If global config exists,
|
|
221
|
+
* it will be used as defaults, with local options taking precedence.
|
|
222
|
+
*
|
|
223
|
+
* @param options - Field configuration (fieldName, maxCount, none, any)
|
|
224
|
+
* @param multerOptions - Optional multer options (overrides global config)
|
|
225
|
+
* @default { none: true }
|
|
226
|
+
* @returns MethodDecorator
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
* ```typescript
|
|
230
|
+
* // In app.ts - configure globally (optional)
|
|
231
|
+
* this.Middleware.upload({
|
|
232
|
+
* destination: './uploads',
|
|
233
|
+
* limits: { fileSize: 10 * 1024 * 1024 }
|
|
234
|
+
* });
|
|
235
|
+
*
|
|
236
|
+
* // In controller - uses global config automatically
|
|
237
|
+
* @Post('avatar')
|
|
238
|
+
* @FileUpload({ fieldName: 'avatar' })
|
|
239
|
+
* uploadAvatar(req: Request) {
|
|
240
|
+
* return req.file;
|
|
241
|
+
* }
|
|
242
|
+
*
|
|
243
|
+
* // Override global config for specific endpoint
|
|
244
|
+
* @Post('document')
|
|
245
|
+
* @FileUpload({ fieldName: 'doc' }, { limits: { fileSize: 50 * 1024 * 1024 } })
|
|
246
|
+
* uploadDocument(req: Request) {
|
|
247
|
+
* return req.file;
|
|
248
|
+
* }
|
|
249
|
+
* ```
|
|
250
|
+
*
|
|
251
|
+
* @public API
|
|
252
|
+
*/
|
|
253
|
+
export declare function FileUpload(options?: FieldOptions | Array<FieldOptions> | {
|
|
254
|
+
none?: boolean;
|
|
255
|
+
any?: boolean;
|
|
256
|
+
}, multerOptions?: MulterOptions): MethodDecorator;
|
|
257
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { Request, Response } from "express";
|
|
3
|
+
import { interfaces } from "@expressots/core";
|
|
4
|
+
import type { GuardContext } from "@expressots/core";
|
|
5
|
+
import type { IScopeExtractor } from "./scope-extractor.interface.js";
|
|
6
|
+
/**
|
|
7
|
+
* Factory for creating GuardContext from Express request/response
|
|
8
|
+
*/
|
|
9
|
+
export declare class GuardContextFactory {
|
|
10
|
+
private container;
|
|
11
|
+
private scopeExtractor;
|
|
12
|
+
constructor(container: interfaces.Container, scopeExtractor: IScopeExtractor);
|
|
13
|
+
/**
|
|
14
|
+
* Create GuardContext from Express request/response
|
|
15
|
+
*/
|
|
16
|
+
create(req: Request, res: Response): Promise<GuardContext>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Request, Response, NextFunction } from "express";
|
|
2
|
+
import { Container } from "@expressots/core";
|
|
3
|
+
import { GuardExecutor } from "@expressots/core";
|
|
4
|
+
import { GuardContextFactory } from "./guard-context-factory.js";
|
|
5
|
+
/**
|
|
6
|
+
* Express middleware that executes guards before route handler
|
|
7
|
+
*/
|
|
8
|
+
export declare class GuardMiddleware {
|
|
9
|
+
private executor;
|
|
10
|
+
private contextFactory;
|
|
11
|
+
private container;
|
|
12
|
+
constructor(executor: GuardExecutor, contextFactory: GuardContextFactory, container: Container);
|
|
13
|
+
/**
|
|
14
|
+
* Express middleware function
|
|
15
|
+
*/
|
|
16
|
+
execute: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Extract guards from request metadata
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
private extractGuards;
|
|
22
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import type { GuardClass, IGuard } from "@expressots/core";
|
|
3
|
+
import type { NewableFunction } from "./interfaces.js";
|
|
4
|
+
/**
|
|
5
|
+
* Extract guards from controller metadata
|
|
6
|
+
*/
|
|
7
|
+
export declare function getControllerGuards(constructor: NewableFunction): Array<GuardClass | IGuard>;
|
|
8
|
+
/**
|
|
9
|
+
* Extract guards from method metadata
|
|
10
|
+
*/
|
|
11
|
+
export declare function getMethodGuards(constructor: NewableFunction, methodName: string | symbol): Array<GuardClass | IGuard>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-request HttpContext storage.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the previous `Reflect.defineMetadata(METADATA_KEY.httpContext, ctx, req)`
|
|
5
|
+
* call in `InversifyExpressServer.build()`, which paid the cost of
|
|
6
|
+
* `reflect-metadata` map allocation and key lookup on every single request.
|
|
7
|
+
*
|
|
8
|
+
* A `WeakMap<Request, HttpContext>` is functionally identical (lookup keyed
|
|
9
|
+
* by request reference, GC'd when the request goes out of scope) and is
|
|
10
|
+
* substantially cheaper on the hot path because it bypasses
|
|
11
|
+
* `reflect-metadata`'s string-keyed metadata store.
|
|
12
|
+
*
|
|
13
|
+
* Both `InversifyExpressServer` and `GuardContextFactory` use this module
|
|
14
|
+
* so they observe the same per-request value.
|
|
15
|
+
*/
|
|
16
|
+
import type { Request } from "express";
|
|
17
|
+
import type { HttpContext } from "./interfaces.js";
|
|
18
|
+
export declare function setHttpContext(req: Request, ctx: HttpContext): void;
|
|
19
|
+
export declare function getHttpContext(req: Request): HttpContext | undefined;
|
|
20
|
+
export declare function hasHttpContext(req: Request): boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { Request, Response, NextFunction } from "express";
|
|
3
|
+
import { ExpressoMiddleware } from "@expressots/core";
|
|
4
|
+
/**
|
|
5
|
+
* Middleware that applies the status code to the response.
|
|
6
|
+
* @returns express.RequestHandler
|
|
7
|
+
*/
|
|
8
|
+
export declare class HttpStatusCodeMiddleware extends ExpressoMiddleware {
|
|
9
|
+
private globalPrefix;
|
|
10
|
+
constructor(globalPrefix?: string);
|
|
11
|
+
use(req: Request, res: Response, next: NextFunction): void | Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Find the matching parameter path.
|
|
14
|
+
* @param path - The path to match.
|
|
15
|
+
* @param mapping - The mapping to check.
|
|
16
|
+
* @param method - The method to check.
|
|
17
|
+
* @returns The status code if found, otherwise null.
|
|
18
|
+
**/
|
|
19
|
+
private findMatchingParameterPath;
|
|
20
|
+
/**
|
|
21
|
+
* Set the default status code based on the request method.
|
|
22
|
+
* @param req - The request object.
|
|
23
|
+
* @param res - The response object.
|
|
24
|
+
**/
|
|
25
|
+
private setDefaultStatusCode;
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { OutgoingHttpHeaders } from "node:http";
|
|
2
|
+
import { HttpContent } from "./content/httpContent.js";
|
|
3
|
+
export declare class HttpResponseMessage {
|
|
4
|
+
private _content;
|
|
5
|
+
private _headers;
|
|
6
|
+
get headers(): OutgoingHttpHeaders;
|
|
7
|
+
set headers(headers: OutgoingHttpHeaders);
|
|
8
|
+
get content(): HttpContent;
|
|
9
|
+
set content(value: HttpContent);
|
|
10
|
+
private _statusCode;
|
|
11
|
+
get statusCode(): number;
|
|
12
|
+
set statusCode(code: number);
|
|
13
|
+
constructor(statusCode?: number);
|
|
14
|
+
}
|