UNPKG

@nestjs/graphql

Version:

Nest - modern, fast, powerful node.js web framework (@graphql)

30 lines (29 loc) 1.37 kB
import { isNil, isString } from '@nestjs/common/utils/shared.utils.js'; import 'reflect-metadata'; import { PARAM_ARGS_METADATA } from '../graphql.constants.js'; function assignMetadata(args, paramtype, index, data, ...pipes) { return { ...args, [`${paramtype}:${index}`]: { index, data, pipes, }, }; } export const createGqlParamDecorator = (paramtype) => { return (data) => (target, key, index) => { const args = Reflect.getMetadata(PARAM_ARGS_METADATA, target.constructor, key) || {}; Reflect.defineMetadata(PARAM_ARGS_METADATA, assignMetadata(args, paramtype, index, data), target.constructor, key); }; }; export const addPipesMetadata = (paramtype, data, pipes, 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); }; export const createGqlPipesParamDecorator = (paramtype) => (data, ...pipes) => (target, key, index) => { addPipesMetadata(paramtype, data, pipes, target, key, index); };