* chore: fix lint * fix: constants check:lint command * chore(lint): permit unused vars which begin w/ _ * chore: rm dead code * fix(lint): more lint fixes to constants pkg * fix(lint): lint the live server - fix lint issues * chore: improve clean script * fix(lint): more lint * chore: set live server process title * chore(deps): update to turbo@2.5.5 * chore(live): target node22 * fix(dev): add missing ui pkg dependency * fix(dev): lint decorators * fix(dev): lint space app * fix(dev): address lint issues in types pkg * fix(dev): lint editor pkg * chore(dev): moar lint * fix(dev): live server exit code * chore: address PR feedback * fix(lint): better TPageExtended type * chore: refactor * chore: revert most live server changes * fix: few more lint issues * chore: enable ci checks Ensure we can build + confirm that lint is not getting worse. * chore: address PR feedback * fix: web lint warning added to package.json * fix: ci:lint command --------- Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import "reflect-metadata";
|
|
import { RequestHandler } from "express";
|
|
|
|
// Define valid HTTP methods
|
|
type RestMethod = "get" | "post" | "put" | "patch" | "delete";
|
|
|
|
/**
|
|
* Controller decorator
|
|
* @param baseRoute
|
|
* @returns
|
|
*/
|
|
export function Controller(baseRoute: string = ""): ClassDecorator {
|
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
return function (target: Function) {
|
|
Reflect.defineMetadata("baseRoute", baseRoute, target);
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Factory function to create HTTP method decorators
|
|
* @param method HTTP method to handle
|
|
* @returns Method decorator
|
|
*/
|
|
function createHttpMethodDecorator(
|
|
method: RestMethod,
|
|
): (route: string) => MethodDecorator {
|
|
return function (route: string): MethodDecorator {
|
|
return function (target: object, propertyKey: string | symbol) {
|
|
Reflect.defineMetadata("method", method, target, propertyKey);
|
|
Reflect.defineMetadata("route", route, target, propertyKey);
|
|
};
|
|
};
|
|
}
|
|
|
|
// Export HTTP method decorators using the factory
|
|
export const Get = createHttpMethodDecorator("get");
|
|
export const Post = createHttpMethodDecorator("post");
|
|
export const Put = createHttpMethodDecorator("put");
|
|
export const Patch = createHttpMethodDecorator("patch");
|
|
export const Delete = createHttpMethodDecorator("delete");
|
|
|
|
/**
|
|
* Middleware decorator
|
|
* @param middleware
|
|
* @returns
|
|
*/
|
|
export function Middleware(middleware: RequestHandler): MethodDecorator {
|
|
return function (target: object, propertyKey: string | symbol) {
|
|
const middlewares =
|
|
Reflect.getMetadata("middlewares", target, propertyKey) || [];
|
|
middlewares.push(middleware);
|
|
Reflect.defineMetadata("middlewares", middlewares, target, propertyKey);
|
|
};
|
|
}
|