yasui
Version:
Lightweight Express-based framework for REST and web APIs
31 lines • 3.12 kB
JavaScript
import { ReflectMetadata, getMetadata, defineMetadata } from '../utils/reflect.js';
import { HttpCode, RouteMethods } from '../enums/index.js';
function routeDecorator(method) {
return function (path, ...middlewares) {
return addRoute(method, path, ...middlewares);
};
}
function addRoute(method, path, ...middlewares) {
return function (target, propertyKey, descriptor) {
const methodName = String(propertyKey);
const defaultStatus = getMetadata(ReflectMetadata.HTTP_STATUS, target, propertyKey) || HttpCode.OK;
const params = getMetadata(ReflectMetadata.PARAMS, target, methodName) || [];
const route = {
method,
path,
middlewares,
descriptor,
methodName,
defaultStatus,
params,
};
const routes = getMetadata(ReflectMetadata.ROUTES, target) || [];
defineMetadata(ReflectMetadata.ROUTES, [...routes, route], target);
};
}
export const Get = routeDecorator(RouteMethods.GET);
export const Post = routeDecorator(RouteMethods.POST);
export const Put = routeDecorator(RouteMethods.PUT);
export const Delete = routeDecorator(RouteMethods.DELETE);
export const Patch = routeDecorator(RouteMethods.PATCH);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0aG9kcy5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy9tZXRob2RzLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBVTNELFNBQVMsY0FBYyxDQUFDLE1BQW9CO0lBQzFDLE9BQU8sVUFDTCxJQUFZLEVBQ1osR0FBRyxXQUEwQjtRQUU3QixPQUFPLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUdELFNBQVMsUUFBUSxDQUNmLE1BQW9CLEVBQ3BCLElBQVksRUFDWixHQUFHLFdBQTBCO0lBRTdCLE9BQU8sVUFDTCxNQUFjLEVBQ2QsV0FBNEIsRUFDNUIsVUFBOEI7UUFFOUIsTUFBTSxVQUFVLEdBQVcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ25HLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFN0UsTUFBTSxLQUFLLEdBQXFCO1lBQzlCLE1BQU07WUFDTixJQUFJO1lBQ0osV0FBVztZQUNYLFVBQVU7WUFDVixVQUFVO1lBQ1YsYUFBYTtZQUNiLE1BQU07U0FDUCxDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pFLGNBQWMsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUlELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBbUIsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQW1CLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFtQixjQUFjLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBbUIsY0FBYyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUUxRSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQW1CLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMifQ==