Socket
Socket
Sign inDemoInstall

class-validator-jsonschema

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

class-validator-jsonschema - npm Package Compare versions

Comparing version 3.0.2 to 3.1.0

66

__tests__/index.test.ts

@@ -18,3 +18,3 @@ // tslint:disable:no-submodule-imports

import { ValidationMetadata } from 'class-validator/types/metadata/ValidationMetadata'
import { validationMetadatasToSchemas } from '../src'
import { targetConstructorToSchema, validationMetadatasToSchemas } from '../src'

@@ -163,2 +163,66 @@ class User {

it('combines converted class-validator metadata for one object into JSON Schemas', () => {
const postSchema = targetConstructorToSchema(Post)
expect(postSchema).toEqual({
properties: {
published: {
type: 'boolean',
},
title: {
maxLength: 100,
minLength: 2,
type: 'string',
},
user: {
$ref: '#/definitions/User',
},
},
type: 'object',
})
const userSchema = targetConstructorToSchema(User)
expect(userSchema).toEqual({
properties: {
empty: {
anyOf: [
{ type: 'string', enum: [''] },
{
not: {
anyOf: [
{ type: 'string' },
{ type: 'number' },
{ type: 'boolean' },
{ type: 'integer' },
{ type: 'array' },
{ type: 'object' },
],
},
nullable: true,
},
],
},
firstName: { minLength: 5, type: 'string' },
id: { type: 'string' },
object: { type: 'object' },
nonEmptyObject: { type: 'object', minProperties: 1 },
any: {},
tags: {
items: {
maxLength: 20,
not: {
anyOf: [{ enum: ['admin'], type: 'string' }],
},
type: 'string',
},
maxItems: 5,
type: 'array',
},
},
required: ['id', 'firstName', 'object', 'any'],
type: 'object',
})
})
it('should use custom schema name field', () => {

@@ -165,0 +229,0 @@ const schemas = validationMetadatasToSchemas({

7

build/index.d.ts

@@ -0,6 +1,7 @@

import { ValidationMetadata } from 'class-validator/types/metadata/ValidationMetadata';
import { SchemaObject } from 'openapi3-ts';
import { IOptions } from './options';
export { JSONSchema } from './decorators';
export declare function validationMetadatasToSchemas(userOptions?: Partial<IOptions>): {
[key: string]: SchemaObject;
};
export declare function validationMetadatasToSchemas(userOptions?: Partial<IOptions>): Record<string, SchemaObject>;
export declare function validationMetadataArrayToSchemas(metadatas: ValidationMetadata[], userOptions?: Partial<IOptions>): Record<string, SchemaObject>;
export declare function targetConstructorToSchema(targetConstructor: Function, userOptions?: Partial<IOptions>): SchemaObject;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.validationMetadatasToSchemas = exports.JSONSchema = void 0;
exports.targetConstructorToSchema = exports.validationMetadataArrayToSchemas = exports.validationMetadatasToSchemas = exports.JSONSchema = void 0;
const tslib_1 = require("tslib");

@@ -16,2 +16,7 @@ const cv = tslib_1.__importStar(require("class-validator"));

const metadatas = getMetadatasFromStorage(options.classValidatorMetadataStorage);
return validationMetadataArrayToSchemas(metadatas, userOptions);
}
exports.validationMetadatasToSchemas = validationMetadatasToSchemas;
function validationMetadataArrayToSchemas(metadatas, userOptions) {
const options = Object.assign(Object.assign({}, options_1.defaultOptions), userOptions);
const schemas = {};

@@ -40,5 +45,17 @@ Object.entries(lodash_groupby_1.default(metadatas, ({ target }) => { var _a; return (_a = target[options.schemaNameField]) !== null && _a !== void 0 ? _a : target.name; })).forEach(([key, ownMetas]) => {

}
exports.validationMetadatasToSchemas = validationMetadatasToSchemas;
exports.validationMetadataArrayToSchemas = validationMetadataArrayToSchemas;
function targetConstructorToSchema(targetConstructor, userOptions) {
const options = Object.assign(Object.assign({}, options_1.defaultOptions), userOptions);
const storage = options.classValidatorMetadataStorage;
let metadatas = storage.getTargetValidationMetadatas(targetConstructor, '', true, false);
metadatas = populateMetadatasWithConstraints(storage, metadatas);
const schemas = validationMetadataArrayToSchemas(metadatas, userOptions);
return Object.values(schemas).length ? Object.values(schemas)[0] : {};
}
exports.targetConstructorToSchema = targetConstructorToSchema;
function getMetadatasFromStorage(storage) {
const metadatas = storage.validationMetadatas;
return populateMetadatasWithConstraints(storage, metadatas);
}
function populateMetadatasWithConstraints(storage, metadatas) {
const constraints = storage.constraintMetadatas;

@@ -110,2 +127,2 @@ return metadatas.map((meta) => {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDREQUFxQztBQUdyQyw0RUFBcUM7QUFDckMsd0VBQWlDO0FBR2pDLDZDQUFnRDtBQUNoRCwyREFBdUQ7QUFDdkQsdUNBQW9EO0FBRXBELDJDQUF5QztBQUFoQyx3R0FBQSxVQUFVLE9BQUE7QUFLbkIsU0FBZ0IsNEJBQTRCLENBQUMsV0FBK0I7SUFDMUUsTUFBTSxPQUFPLG1DQUNSLHdCQUFjLEdBQ2QsV0FBVyxDQUNmLENBQUE7SUFFRCxNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FDdkMsT0FBTyxDQUFDLDZCQUE2QixDQUN0QyxDQUFBO0lBRUQsTUFBTSxPQUFPLEdBQW9DLEVBQUUsQ0FBQTtJQUNuRCxNQUFNLENBQUMsT0FBTyxDQUNaLHdCQUFRLENBQ04sU0FBUyxFQUNULENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLHdCQUNiLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBc0MsQ0FBQyxtQ0FDckQsTUFBbUIsQ0FBQyxJQUFJLEdBQUEsQ0FDNUIsQ0FDRixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQWtCLENBQUE7UUFDN0MsTUFBTSxLQUFLLEdBQUcsUUFBUTthQUNuQixNQUFNLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ2hELE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFFdkQsTUFBTSxVQUFVLEdBQXFDLEVBQUUsQ0FBQTtRQUV2RCxNQUFNLENBQUMsT0FBTyxDQUFDLHdCQUFRLENBQUMsS0FBSyxFQUFFLGNBQWMs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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDREQUFxQztBQUdyQyw0RUFBcUM7QUFDckMsd0VBQWlDO0FBR2pDLDZDQUFnRDtBQUNoRCwyREFBdUQ7QUFDdkQsdUNBQW9EO0FBRXBELDJDQUF5QztBQUFoQyx3R0FBQSxVQUFVLE9BQUE7QUFLbkIsU0FBZ0IsNEJBQTRCLENBQzFDLFdBQStCO0lBRS9CLE1BQU0sT0FBTyxtQ0FDUix3QkFBYyxHQUNkLFdBQVcsQ0FDZixDQUFBO0lBRUQsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQ3ZDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FDdEMsQ0FBQTtJQUVELE9BQU8sZ0NBQWdDLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0FBQ2pFLENBQUM7QUFiRCxvRUFhQztBQUtELFNBQWdCLGdDQUFnQyxDQUM5QyxTQUErQixFQUMvQixXQUErQjtJQUUvQixNQUFNLE9BQU8sbUNBQ1Isd0JBQWMsR0FDZCxXQUFXLENBQ2YsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFvQyxFQUFFLENBQUE7SUFDbkQsTUFBTSxDQUFDLE9BQU8sQ0FDWix3QkFBUSxDQUNOLFNBQVMsRUFDVCxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSx3QkFDYixNQUFNLENBQUMsT0FBTyxDQUFDLGVBQXNDLENBQUMsbUNBQ3JELE1BQW1CLENBQUMsSUFBSSxHQUFBLENBQzVCLENBQ0YsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO1FBQzVCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFrQixDQUFBO1FBQzdDLE1BQU0sS0FBSyxHQUFHLFFBQVE7YUFDbkIsTUFBTSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQzthQUNoRCxNQUFN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
{
"name": "class-validator-jsonschema",
"version": "3.0.2",
"version": "3.1.0",
"description": "Convert class-validator-decorated classes into JSON schema",

@@ -5,0 +5,0 @@ "keywords": [

@@ -18,3 +18,5 @@ // tslint:disable:no-submodule-imports ban-types

*/
export function validationMetadatasToSchemas(userOptions?: Partial<IOptions>) {
export function validationMetadatasToSchemas(
userOptions?: Partial<IOptions>
): Record<string, SchemaObject> {
const options: IOptions = {

@@ -29,2 +31,17 @@ ...defaultOptions,

return validationMetadataArrayToSchemas(metadatas, userOptions)
}
/**
* Convert an array of class-validator metadata into JSON Schema definitions.
*/
export function validationMetadataArrayToSchemas(
metadatas: ValidationMetadata[],
userOptions?: Partial<IOptions>
): Record<string, SchemaObject> {
const options: IOptions = {
...defaultOptions,
...userOptions,
}
const schemas: { [key: string]: SchemaObject } = {}

@@ -80,2 +97,27 @@ Object.entries(

/**
* Generate JSON Schema definitions from the target object constructor.
*/
export function targetConstructorToSchema(
targetConstructor: Function,
userOptions?: Partial<IOptions>
): SchemaObject {
const options: IOptions = {
...defaultOptions,
...userOptions,
}
const storage = options.classValidatorMetadataStorage
let metadatas = storage.getTargetValidationMetadatas(
targetConstructor,
'',
true,
false
)
metadatas = populateMetadatasWithConstraints(storage, metadatas)
const schemas = validationMetadataArrayToSchemas(metadatas, userOptions)
return Object.values(schemas).length ? Object.values(schemas)[0] : {}
}
/**
* Return `storage.validationMetadatas` populated with `constraintMetadatas`.

@@ -87,2 +129,9 @@ */

const metadatas: ValidationMetadata[] = (storage as any).validationMetadatas
return populateMetadatasWithConstraints(storage, metadatas)
}
function populateMetadatasWithConstraints(
storage: cv.MetadataStorage,
metadatas: ValidationMetadata[]
): ValidationMetadata[] {
const constraints: ConstraintMetadata[] = (storage as any).constraintMetadatas

@@ -89,0 +138,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc