Additional decorators intended for use with NestJS framework.
npm install @emackie/nestjs-decoratorsDEPRECATED: Moved to @eddiac/nestjs-decorators
A variety of decorators, pipes and transformers intended for use with NestJS framework.
Included with each decorator are Swagger ApiProperty definitions to reduce boiler plate in DTOs.
``sh`
npm install @emackie/nestjs-decorators
- ApiPropertyBigIntApiPropertyBigIntOptional
- ApiPropertyDate
- ApiPropertyDateOptional
- ApiPropertyInt
- ApiPropertyIntOptional
- IsBigInt
- ParseBigIntPipe
- TransformBigInt
- TransformInt
- Trim
-
Pipe parameters as bigint values, raising BadRequestException if unable to tranform.
`typescript
import { ParseBigIntPipe } from '@emackie/nestjs-decorators';
import { Controller, Get, Param } from '@nestjs/common';
@Controller()
export class AppController {
@Get(':id')
async getId(@Param('id', ParseBigIntPipe) id: bigint): bigint {
return id;
}
}
`
Validate bigint values or transform decimal values to bigint through a rounding policy.
`typescript
import {
ApiPropertyBigInt,
ApiPropertyBigIntOptional,
IsBigInt,
RoundingPolicy,
TransformBigInt,
} from '@emackie/nestjs-decorators';
import { IsNumber, IsOptional } from 'class-validator';
export class MyDto {
@IsBigInt()
@ApiPropertyBigInt()
id: bigint;
@IsBigInt()
@IsOptional()
@ApiPropertyBigIntOptional()
limit?: bigint;
@IsNumber()
@TransformBigInt({ rounding: RoundingPolicy.CEIL })
@ApiPropertyBigInt()
ceil: bigint;
}
`
Transform decimal values to integer number values through a rounding policy.
`typescript
import {
ApiPropertyInt,
RoundingPolicy,
TransformInt,
} from '@emackie/nestjs-decorators';
import { IsNumber } from 'class-validator';
export class MyDto {
@IsNumber()
@TransformInt({ rounding: RoundingPolicy.FLOOR })
@ApiPropertyInt()
floor: number;
}
`
`typescript
import {
ApiPropertyDate,
ApiPropertyDateOptional,
} from '@emackie/nestjs-decorators';
import { IsDate, IsOptional } from 'class-validator';
export class MyDto {
@IsDate()
@ApiPropertyDate()
date: date;
@IsDate()
@IsOptional()
@ApiPropertyDateOptional()
optional_date?: date;
}
`
`typescript
import { Trim } from '@emackie/nestjs-decorators';
import { ApiProperty } from '@nestjs/swagger';
import { IsString, IsNotEmpty } from 'class-validator';
export class MyDto {
@IsString()
@IsNotEmpty()
@Trim()
@ApiProperty()
nonEmptyString: string;
}
``