0.6.5 • Published 4 years ago

@wssz/modeler-nestjs v0.6.5

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

@wssz/modeler-nestjs

Plugin for @wssz/modeler and NestJS, introduce support for @nestjs/swagger and ModelerPipe with validation and object casting.

Usage

class AnyDto {
    @Prop() id: string;

    @Prop() date: Date;

    @Nullable()
    @Prop() otherDto: OtherDto;
}
  • ModelerPipe(errorHandler: (errors: ModelerPipeError) => any, customTransforms, modelerParserOptions, ajvOptions)
    • custom handler with ModelerPipeError and optional or throw BadRequestException if not specified >.
    • customTransforms - [any, TypeTransform][]
    • modelerParserOptions = null - to disable parser
    • ajvOptions = null - to disable ajv based validation
@Post()
@UsePipes(new ModelerPipe())
async create(@Body() anyDto: AnyDto) { ... }

Extend Swagger models

// inside nestjs bootstrap
const document = ModelerNestjs.extend(SwaggerModule.createDocument(app, options));
SwaggerModule.setup('docs', app, document);

Definitions

  • ModelerPipeError - default validation error input
interface ModelerPipeError {
	metatype: string;
	message: string;
	ajvErrors?: ajv.ErrorObject[];
}

see more about Ajv.ValidateError

  • TypeTransform - custom type transformer definition (for String, Number, Boolean, Date already defined)
export interface TypeTransform {
	validator: (value: any) => string | false;
	parser: (value: any) => any;
}

// EXAMPLE
const customTransforms = [
    [String, {
        validator() {
            return !!v ? false : 'Validation error message';
        },
        parser(v) {
            return String(v);
        }
    }],
    // ...
];
new ModelerPipe(null, customTransforms);
0.6.5

4 years ago

0.6.4

4 years ago

0.6.3

4 years ago

0.6.2

4 years ago

0.6.1

4 years ago

0.6.0

4 years ago

0.5.2

4 years ago

0.5.1

4 years ago

0.3.6

4 years ago

0.3.4

4 years ago

0.3.2

4 years ago

0.3.3

4 years ago

0.3.1

5 years ago

0.2.6

5 years ago

0.2.5

5 years ago

0.2.3

5 years ago