@tunnel-cast/nestjs
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

Tunnel Cast - NestJS

About

This is a Tunnel-Cast - NestJS integration package, wrap the cast application into the NestJS building blocks.



Install

npm i @tunnel-cast/nestjs

Note:
This package required the peerDependencies of a nest project.



Example

The first step is to define a model for the object intend to be cast.
Then apply it in the nest controller using a parameter decorator or an interceptor.


Define models using tunnel-cast decorators :


// file: cats/cast-models/index.ts

import { String, Number, Required, Default, Parsing } from '@tunnel-cast/common';

export class GetAllCats_Query {
    
    @Number.Min(1)          // - validation : 1 <= value 
    @Number.Max(15)         // - validation : value < 15
    @Parsing(global.Number) // - parsing (pre-validation action) : apply Number constructor
    @Required(false)        // - optional
    @Default(10)            // - default : 10  
    @Number()               // - type : number
    limit: number;

    @Required(false)        // - optional
    @Default(0)             // - default : 0  
    @Number.Min(0)          // - validation : 0 <= value
    @Parsing(global.Number) // - parsing (pre-validation action) : apply Number constructor
    @Number()               // - type : number
    skip: number;        
}


export class GetCatsByType_Params {

    @Required(true)     // - required 
    @String.Enums([     // - validation : value in  { 'house_cat', 'bobcat', 'tiger' }
        'house_cat', 
        'bobcat', 
        'tiger'
    ])  
    @String()           // - type : string
    type: string;
}

Use the cast parameter-decorators with the defined models :


// file: cats/cats.controller.ts

import { Controller, Get } from '@nestjs/common';
import { CastQuery, CastParam } from '@tunnel-cast/nestjs/parameter-decorators';
import { GetAllCats, GetCatsByType} from './cast-models'

@Controller('cats')
export class CatsController {
    @Get()
    getCats(@CastQuery() query: GetAllCats_Query) {
        // "cast" process passed successfully
        // ...
    }
    
    @Get(':type')
    getCatsByType(@CastParam() params: GetCatsByType_Params) {
        // "cast" process passed successfully
        // ...
    }
}

Package Sidebar

Install

npm i @tunnel-cast/nestjs

Weekly Downloads

1

Version

0.0.4

License

MIT

Unpacked Size

278 kB

Total Files

72

Last publish

Collaborators

  • ofir_gen