UNPKG

@anglr/rest

Version:

Angular module representing rest services

51 lines 2.2 kB
import { isPresent } from '@jscrpt/common'; import { BodyParameterMiddleware, PathParameterMiddleware, QueryParameterMiddleware, QueryObjectParameterMiddleware, HeaderParameterMiddleware } from '../middlewares'; // eslint-disable-next-line @typescript-eslint/no-explicit-any function paramBuilder(paramName, middleware) { return function (key) { return function (target, propertyKey, parameterIndex) { const paramObj = { key: key, parameterIndex: parameterIndex }; //params metadata missing target.parameters = target.parameters ?? {}; //params metadata for method missing target.parameters[propertyKey] = target.parameters[propertyKey] ?? {}; //parameter transforms object missing target.parameters[propertyKey][paramName] = target.parameters[propertyKey][paramName] ?? []; //adds params target.parameters[propertyKey][paramName]?.push(paramObj); //sets middleware if (isPresent(middleware)) { target.parameters[propertyKey].middlewareTypes = target.parameters[propertyKey].middlewareTypes ?? []; target.parameters[propertyKey].middlewareTypes?.push(middleware); } }; }; } /** * Path variable of a method's url, type: string * @param key - path key to bind value */ export const Path = paramBuilder('path', PathParameterMiddleware); /** * Query value of a method's url, type: string * @param key - query key to bind value */ export const Query = paramBuilder('query', QueryParameterMiddleware); /** * Query object serialized with dot notation separating hierarchies */ export const QueryObject = paramBuilder('queryObject', QueryObjectParameterMiddleware)('queryObject'); /** * Body of a REST method, json stringify applied * Only one body per method! */ export const Body = paramBuilder('body', BodyParameterMiddleware)('body'); /** * Custom header of a REST method, type: string * @param key - header key to bind value */ export const Header = paramBuilder('header', HeaderParameterMiddleware); //# sourceMappingURL=parameters.decorator.js.map