UNPKG

yasui

Version:

Lightweight Express-based framework for REST and web APIs

45 lines 4.63 kB
import { RouteRequestParamTypes, RouteParamTypes } from '../enums/index.js'; import { ReflectMetadata, getMetadata, defineMetadata } from '../utils/reflect.js'; function routeParamDecorator(source) { return function () { return extractParam(source); }; } export function routeRequestParamDecorator(reqProperty) { return function (varName, items) { return extractParam(RouteParamTypes.REQ, reqProperty, varName, items ? items[0] : undefined); }; } function extractParam(source, reqProperty, varName, itemsType) { return function (target, propertyKey, parameterIndex) { if (!propertyKey) { return; } const path = [source]; for (const node of [reqProperty, varName]) { if (node) { path.push(node); } } const paramTypes = getMetadata(ReflectMetadata.DESIGN_PARAM_TYPES, target, propertyKey) || []; const paramType = paramTypes[parameterIndex]; const methodName = String(propertyKey); const routeParam = { index: parameterIndex, type: paramType, itemsType, path, }; const routeParams = getMetadata(ReflectMetadata.PARAMS, target, methodName) || []; defineMetadata(ReflectMetadata.PARAMS, [...routeParams, routeParam], target, methodName); }; } export const Req = routeParamDecorator(RouteParamTypes.REQ); export const Res = routeParamDecorator(RouteParamTypes.RES); export const Next = routeParamDecorator(RouteParamTypes.NEXT); export const Header = routeRequestParamDecorator(RouteRequestParamTypes.HEADER); export const Param = routeRequestParamDecorator(RouteRequestParamTypes.PARAM); export const Query = routeRequestParamDecorator(RouteRequestParamTypes.QUERY); export const Body = routeRequestParamDecorator(RouteRequestParamTypes.BODY); export const Logger = routeRequestParamDecorator(RouteRequestParamTypes.LOGGER); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL3BhcmFtcy5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVW5GLFNBQVMsbUJBQW1CLENBQUMsTUFBdUI7SUFDbEQsT0FBTztRQUNMLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFTRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsV0FBbUI7SUFDNUQsT0FBTyxVQUNMLE9BQWdCLEVBQ2hCLEtBQW1CO1FBRW5CLE9BQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0YsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUlELFNBQVMsWUFBWSxDQUNuQixNQUF1QixFQUN2QixXQUFvQixFQUNwQixPQUFnQixFQUNoQixTQUFxQjtJQUVyQixPQUFPLFVBQ0wsTUFBYyxFQUNkLFdBQXdDLEVBQ3hDLGNBQXNCO1FBRXRCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUdELE1BQU0sSUFBSSxHQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5RixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sVUFBVSxHQUFnQjtZQUM5QixLQUFLLEVBQUUsY0FBYztZQUNyQixJQUFJLEVBQUUsU0FBUztZQUNmLFNBQVM7WUFDVCxJQUFJO1NBQ0wsQ0FBQztRQUdGLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEYsY0FBYyxDQUNaLGVBQWUsQ0FBQyxNQUFNLEVBQ3RCLENBQUMsR0FBRyxXQUFXLEVBQUUsVUFBVSxDQUFDLEVBQzVCLE1BQU0sRUFDTixVQUFVLENBQ1gsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFHRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQXdCLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVqRixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQXdCLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVqRixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQXdCLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUluRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTJCLDBCQUEwQixDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBR3hHLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBMkIsMEJBQTBCLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFHdEcsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUEyQiwwQkFBMEIsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV0RyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQTJCLDBCQUEwQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXBHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBMkIsMEJBQTBCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMifQ==