{"_id":"@code-net/json-schema-class-nestjs-validation-pipe","_rev":"2-ef024d494e7caee43531ce6601c53d7b","name":"@code-net/json-schema-class-nestjs-validation-pipe","dist-tags":{"latest":"1.0.1"},"versions":{"1.1.2":{"name":"@code-net/json-schema-class-nestjs-validation-pipe","version":"1.1.2","author":{"url":"https://dev.pasi.pl","name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com"},"_id":"@code-net/json-schema-class-nestjs-validation-pipe@1.1.2","maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"dist":{"shasum":"e836678cc7173c029705eeb883a576f9e4352c21","tarball":"https://registry.npmjs.org/@code-net/json-schema-class-nestjs-validation-pipe/-/json-schema-class-nestjs-validation-pipe-1.1.2.tgz","fileCount":8,"integrity":"sha512-wQn1K/IiHj7SjuUxFnMtfsE04usgYybsEgempAkye69G5DfHFrzjT1jV1rL/cxNZLGO1PqsKfPUODSk60o4AiQ==","signatures":[{"sig":"MEYCIQC3yuTyLeb2QIRyim31fdHGjhk789n4Ngx0sUBusUtT1AIhAPWhkP5puwSk2WeeH1Tfn6IEFIIjMV/Po2cqqrCoaBZv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5773},"main":"./src/index.js","type":"commonjs","_from":"file:code-net-json-schema-class-nestjs-validation-pipe-1.1.2.tgz","types":"./src/index.d.ts","_npmUser":{"name":"pasi","email":"bartosz.pasinski@gmail.com"},"_resolved":"/tmp/4399c814f64f11736a87b812da891711/code-net-json-schema-class-nestjs-validation-pipe-1.1.2.tgz","_integrity":"sha512-wQn1K/IiHj7SjuUxFnMtfsE04usgYybsEgempAkye69G5DfHFrzjT1jV1rL/cxNZLGO1PqsKfPUODSk60o4AiQ==","repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"_npmVersion":"10.8.2","description":"This library provides a NestJS validation pipe that uses classes transformed to JSON Schema for validation.","directories":{},"_nodeVersion":"20.18.1","_hasShrinkwrap":false,"devDependencies":{"ajv":">=6.12.6","supertest":"^7.1.1","@nestjs/common":">=9.0.0","@nestjs/testing":">=9.0.0","@types/supertest":"^6.0.3","@nestjs/platform-express":">=9.0.0"},"peerDependencies":{"ajv":">=6.12.6","@nestjs/common":">=9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/json-schema-class-nestjs-validation-pipe_1.1.2_1749888240034_0.7492655734240814","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@code-net/json-schema-class-nestjs-validation-pipe","version":"1.0.1","type":"commonjs","main":"./src/index.js","types":"./src/index.d.ts","author":{"name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com","url":"https://dev.pasi.pl"},"repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"devDependencies":{"@nestjs/common":">=9.0.0","@nestjs/testing":">=9.0.0","@nestjs/platform-express":">=9.0.0","ajv":">=6.12.6","supertest":"^7.1.1","@types/supertest":"^6.0.3"},"peerDependencies":{"@code-net/json-schema-class":"^1.0.1","@nestjs/common":">=9.0.0","@nestjs/core":"11.1.3","ajv":">=6.12.6","tslib":"^2.3.0","@nestjs/testing":"11.1.3","supertest":"7.1.1"},"_id":"@code-net/json-schema-class-nestjs-validation-pipe@1.0.1","gitHead":"06be2b5614d0d34a30e07c12fd378a0e9a667191","description":"This library provides a NestJS validation pipe that uses classes transformed to JSON Schema for validation.","bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","_nodeVersion":"20.18.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-9vkd2fWpITdMTJCrAIR51SpChVPGzhrFvu3F/JYnktInRibePmAG7mSIfWyHgOdp5hiZypNqV9U9O1WdK/65jQ==","shasum":"63745fd968b2df42e52b89f2357862fb16258c40","tarball":"https://registry.npmjs.org/@code-net/json-schema-class-nestjs-validation-pipe/-/json-schema-class-nestjs-validation-pipe-1.0.1.tgz","fileCount":8,"unpackedSize":7538,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEjfIu+8LDPk9hQVd1I72MvLxGSy3SWaIzkWfLmji1hfAiEA8Qu9SJ6yD/vf9q46hnx4wT9CLrwXrcCT+4GoXLh0lAM="}]},"_npmUser":{"name":"pasi","email":"bartosz.pasinski@gmail.com","actor":{"name":"pasi","email":"bartosz.pasinski@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-schema-class-nestjs-validation-pipe_1.0.1_1750140826135_0.49946443581170974"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-14T08:03:59.975Z","modified":"2025-06-17T06:13:46.570Z","1.1.2":"2025-06-14T08:04:00.197Z","1.0.1":"2025-06-17T06:13:46.378Z"},"bugs":{"url":"https://github.com/CodeNet-pl/NodeJS/issues"},"author":{"name":"Bartosz Pasinski","email":"bartosz.pasinski@gmail.com","url":"https://dev.pasi.pl"},"homepage":"https://github.com/CodeNet-pl/NodeJS#readme","repository":{"url":"git+https://github.com/CodeNet-pl/NodeJS.git"},"description":"This library provides a NestJS validation pipe that uses classes transformed to JSON Schema for validation.","maintainers":[{"name":"pasi","email":"bartosz.pasinski@gmail.com"}],"readme":"# json-schema-class-nestjs-validation-pipe\n\nThis library provides a NestJS validation pipe that uses classes transformed to JSON Schema for validation.\n\n## Installation\n\n```bash\nnpm install json-schema-class json-schema-class-nestjs-validation-pipe ajv ajv-formats\n```\n\n## Usage globally\n\nIn your app module:\n\n```typescript\nimport { Module } from '@nestjs/common';\nimport { APP_PIPE } from '@nestjs/core';\nimport { JsonSchemaValidationPipe } from '@code-net/json-schema-class-nestjs-validation-pipe';\nimport { Enum, Items, JsonSchema, JsonSchemaResolver, Optional, Required, Type } from '@code-net/json-schema-class';\n\n@JsonSchema()\nclass UserIdentityDto {\n  @Required()\n  id: string;\n\n  @Optional()\n  @Enum(['google', 'github', 'email'])\n  provider: string;\n}\n\n@JsonSchema({\n  title: 'User',\n  description: 'Just a user example',\n})\nclass RegisterUserDto {\n  @Required()\n  @Type('number')\n  id: number;\n\n  @Optional()\n  name: string;\n\n  @Required()\n  @Items(UserIdentityDto)\n  identities: UserIdentityDto[];\n}\n\n@Module({\n  providers: [\n    {\n      provide: APP_PIPE,\n      useClass: JsonSchemaValidationPipe,\n    },\n  ],\n})\nexport class AppModule {}\n```\n\nThen you can use the `RegisterUserDto` class in your controllers:\n\n```typescript\nclass UserController {\n  @Post('register')\n  async register(@Body() user: RegisterUserDto) {\n    // user was validated against the JSON Schema\n  }\n}\n```\n\n## Usage in a specific controller\n\nYou can also use the `JsonSchemaValidationPipe` in a specific controller or route handler:\n\n```typescript\nimport { Controller, Post, Body, UsePipes } from '@nestjs/common';\nimport { JsonSchemaValidationPipe } from '@code-net/json-schema-class-nestjs-validation-pipe';\nimport { RegisterUserDto } from './register-user.dto';\n\n@Controller('user')\nexport class UserController {\n  @Post('register')\n  @UsePipes(new JsonSchemaValidationPipe())\n  async register(@Body() user: RegisterUserDto) {\n    // user was validated with AJV against the JSON Schema\n  }\n}\n```\n\n## Customizing the Pipe\n\nYou can customize the `JsonSchemaValidationPipe` by passing options to its constructor:\n\n```typescript\nimport { JsonSchemaResolver } from '@code-net/json-schema-class';\nimport { JsonSchemaValidationPipe } from '@code-net/json-schema-class-nestjs-validation-pipe';\nimport Ajv from 'ajv';\n\nconst resolver = new JsonSchemaResolver(\n  (name) => `/definitions/${name}.json#`\n)\n\nconst ajv = new Ajv({\n  // Custom AJV options \n  allErrors: true,\n  coerceTypes: true,\n  // Pass all the JSON schemas (mandatory)\n  schemas: resolver.all(),\n});\n\nnew JsonSchemaValidationPipe({\n  ajv, // Custom AJV instance\n  resolver, // Custom resolver\n  createError: ({ errors }) => {\n    // Custom error handling\n    return new BadRequestException(ajv.errorsText(errors));\n  },\n});\n```\n","readmeFilename":"README.md"}