Additional decorators intended for use with NestJS framework.
npm install @eddaic/nestjs-decoratorsA 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 @eddaic/nestjs-decorators
- ApiPropertyBigIntApiPropertyBigIntOptional
- ApiPropertyDate
- ApiPropertyDateOptional
- ApiPropertyInt
- ApiPropertyIntOptional
- IsBigInt
- ParseBigIntPipe
- SplitString
- ToBoolean
- ToLower
- TransformBigInt
- TransformInt
- Trim
-
Pipe parameters as bigint values. A BadRequestException is thrown if unable to tranform.
`typescript
import { ParseBigIntPipe } from '@eddaic/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 '@eddaic/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 '@eddaic/nestjs-decorators';
import { IsNumber } from 'class-validator';
export class MyDto {
@IsNumber()
@TransformInt({ rounding: RoundingPolicy.FLOOR })
@ApiPropertyInt()
floor: number;
}
`
#### Transforming Arrays
`typescript
import {
ApiPropertyInt,
RoundingPolicy,
TransformInt,
} from '@eddaic/nestjs-decorators';
import { IsNumber } from 'class-validator';
export class MyDto {
@IsNumber({ each: true })
@TransformInt({ each: true, rounding: RoundingPolicy.FLOOR })
@ApiPropertyInt({ isArray: true })
floors: number[];
}
`
`typescript
import {
ApiPropertyDate,
ApiPropertyDateOptional,
} from '@eddaic/nestjs-decorators';
import { IsDate, IsOptional } from 'class-validator';
export class MyDto {
@IsDate()
@ApiPropertyDate()
date: date;
@IsDate()
@IsOptional()
@ApiPropertyDateOptional()
optional_date?: date;
}
`
Returns string array using specified separator (defaults to ,). Supporting RegExp also.
`typescript
import { SplitString } from '@eddaic/nestjs-decorators';
import { ApiProperty } from '@nestjs/swagger';
import { IsString, IsNotEmpty } from 'class-validator';
export class MyDto {
@IsString({ each: true })
@SplitString({ separator: '|' })
@ApiProperty({ isArray: true, type: 'string' })
strings: string[];
}
`
#### Combined with TransformInt
`typescript
import { SplitString, TransformInt } from '@eddaic/nestjs-decorators';
import { ApiProperty } from '@nestjs/swagger';
import { IsNumber } from 'class-validator';
export class MyDto {
@IsNumber({ each: true })
@SplitString({ separator: ',' })
@TransformInt({ each: true })
@ApiPropertyInt({ isArray: true })
integers: number[];
}
`
`typescript
import { Trim } from '@eddaic/nestjs-decorators';
import { ApiProperty } from '@nestjs/swagger';
import { IsString, IsNotEmpty } from 'class-validator';
export class MyDto {
@IsString()
@IsNotEmpty()
@Trim()
@ApiProperty()
nonEmptyString: string;
}
``