/
githubmirror
/
nest
Обзор
Документация
Войти
/
githubmirror
/
nest
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
packages/websockets/utils/param.utils.ts
44 строки
2 KB
Kamil Myśliwiec
build: use strict null checks part 1
26 ноя 2024, 14:46
Не верифицирован
26 ноя 2024, 14:46
10fdf16
Код
Авторство
О чём код?
import { PipeTransform, Type } from '@nestjs/common'; import { assignMetadata } from '@nestjs/common/decorators/http/route-params.decorator'; import { isNil, isString } from '@nestjs/common/utils/shared.utils'; import 'reflect-metadata'; import { PARAM_ARGS_METADATA } from '../constants'; import { WsParamtype } from '../enums/ws-paramtype.enum'; export function createWsParamDecorator( paramtype: WsParamtype, ): (...pipes: (Type<PipeTransform> | PipeTransform)[]) => ParameterDecorator { return (...pipes: (Type<PipeTransform> | PipeTransform)[]) => (target, key, index) => { const args = Reflect.getMetadata(PARAM_ARGS_METADATA, target.constructor, key!) || {}; Reflect.defineMetadata( PARAM_ARGS_METADATA, assignMetadata(args, paramtype, index, undefined, ...pipes), target.constructor, key!, ); }; } export const createPipesWsParamDecorator = (paramtype: WsParamtype) => ( data?: any, ...pipes: (Type<PipeTransform> | PipeTransform)[] ): ParameterDecorator => (target, key, index) => { const args = Reflect.getMetadata(PARAM_ARGS_METADATA, target.constructor, key!) || {}; const hasParamData = isNil(data) || isString(data); const paramData = hasParamData ? data : undefined; const paramPipes = hasParamData ? pipes : [data, ...pipes]; Reflect.defineMetadata( PARAM_ARGS_METADATA, assignMetadata(args, paramtype, index, paramData!, ...paramPipes), target.constructor, key!, ); };