class-validator-jsonschema
Advanced tools
Comparing version 5.0.0 to 5.0.1
@@ -16,3 +16,7 @@ // tslint:disable:no-submodule-imports | ||
import { JSONSchema, validationMetadatasToSchemas } from '../src' | ||
import { | ||
JSONSchema, | ||
targetConstructorToSchema, | ||
validationMetadatasToSchemas, | ||
} from '../src' | ||
@@ -47,3 +51,2 @@ @JSONSchema({ | ||
}) | ||
// @ts-ignore: not referenced | ||
class User extends BaseContent { | ||
@@ -70,2 +73,5 @@ @MinLength(10) | ||
// @ts-ignore: not referenced | ||
class Admin extends User {} | ||
const metadatas = _get(getFromContainer(MetadataStorage), 'validationMetadatas') | ||
@@ -146,2 +152,41 @@ | ||
}) | ||
it('inherits and merges validation decorators from multiple parent classes and empty child class', () => { | ||
const schema = targetConstructorToSchema(Admin) | ||
expect(schema).toEqual({ | ||
properties: { | ||
email: { | ||
default: 'some@email.com', | ||
format: 'email', | ||
type: 'string', | ||
not: { type: 'null' }, | ||
}, | ||
name: { | ||
maxLength: 20, | ||
minLength: 10, | ||
type: 'string', | ||
}, | ||
password: { | ||
description: 'Password field - required!', | ||
minLength: 20, | ||
type: 'string', | ||
not: { type: 'null' }, | ||
}, | ||
phone: { | ||
format: 'mobile-phone', | ||
title: 'Mobile phone number', | ||
type: 'string', | ||
not: { type: 'null' }, | ||
}, | ||
welcome: { | ||
pattern: 'hello', | ||
type: 'string', | ||
}, | ||
}, | ||
required: ['name', 'welcome', 'email'], | ||
title: 'User object', | ||
type: 'object', | ||
}) | ||
}) | ||
}) |
@@ -49,2 +49,13 @@ "use strict"; | ||
exports.validationMetadataArrayToSchemas = validationMetadataArrayToSchemas; | ||
function getTargetConstructorSchema(schemas, targetConstructor) { | ||
if (!targetConstructor.name) { | ||
return {}; | ||
} | ||
else if (schemas[targetConstructor.name]) { | ||
return schemas[targetConstructor.name]; | ||
} | ||
else { | ||
return getTargetConstructorSchema(schemas, Object.getPrototypeOf(targetConstructor)); | ||
} | ||
} | ||
function targetConstructorToSchema(targetConstructor, userOptions) { | ||
@@ -56,3 +67,3 @@ const options = Object.assign(Object.assign({}, options_1.defaultOptions), userOptions); | ||
const schemas = validationMetadataArrayToSchemas(metadatas, userOptions); | ||
return Object.values(schemas).length ? Object.values(schemas)[0] : {}; | ||
return getTargetConstructorSchema(schemas, targetConstructor); | ||
} | ||
@@ -133,2 +144,2 @@ exports.targetConstructorToSchema = targetConstructorToSchema; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDREQUFxQztBQUVyQyw0RUFBcUM7QUFDckMsd0VBQWlDO0FBR2pDLDZDQUFnRDtBQUNoRCwyREFBdUQ7QUFDdkQsdUNBQW9EO0FBRXBELDJDQUF5QztBQUFoQyx3R0FBQSxVQUFVLE9BQUE7QUFTbkIsU0FBZ0IsNEJBQTRCLENBQzFDLFdBQStCO0lBRS9CLE1BQU0sT0FBTyxtQ0FDUix3QkFBYyxHQUNkLFdBQVcsQ0FDZixDQUFBO0lBRUQsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQ3ZDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FDdEMsQ0FBQTtJQUVELE9BQU8sZ0NBQWdDLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0FBQ2pFLENBQUM7QUFiRCxvRUFhQztBQUtELFNBQWdCLGdDQUFnQyxDQUM5QyxTQUErQixFQUMvQixXQUErQjtJQUUvQixNQUFNLE9BQU8sbUNBQ1Isd0JBQWMsR0FDZCxXQUFXLENBQ2YsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFvQyxFQUFFLENBQUE7SUFDbkQsTUFBTSxDQUFDLE9BQU8sQ0FDWixJQUFBLHdCQUFRLEVBQ04sU0FBUyxFQUNULENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFOztRQUNiLE9BQUEsTUFBQSxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQXNDLENBQUMsbUNBQ3JELE1BQW1CLENBQUMsSUFBSSxDQUFBO0tBQUEsQ0FDNUIsQ0FDRixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQWtCLENBQUE7UUFDN0MsTUFBTSxLQUFLLEdBQUcsUUFBUTthQUNuQixNQUFNLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFNBQVMs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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDREQUFxQztBQUVyQyw0RUFBcUM7QUFDckMsd0VBQWlDO0FBR2pDLDZDQUFnRDtBQUNoRCwyREFBdUQ7QUFDdkQsdUNBQW9EO0FBRXBELDJDQUF5QztBQUFoQyx3R0FBQSxVQUFVLE9BQUE7QUFTbkIsU0FBZ0IsNEJBQTRCLENBQzFDLFdBQStCO0lBRS9CLE1BQU0sT0FBTyxtQ0FDUix3QkFBYyxHQUNkLFdBQVcsQ0FDZixDQUFBO0lBRUQsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQ3ZDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FDdEMsQ0FBQTtJQUVELE9BQU8sZ0NBQWdDLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0FBQ2pFLENBQUM7QUFiRCxvRUFhQztBQUtELFNBQWdCLGdDQUFnQyxDQUM5QyxTQUErQixFQUMvQixXQUErQjtJQUUvQixNQUFNLE9BQU8sbUNBQ1Isd0JBQWMsR0FDZCxXQUFXLENBQ2YsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFvQyxFQUFFLENBQUE7SUFDbkQsTUFBTSxDQUFDLE9BQU8sQ0FDWixJQUFBLHdCQUFRLEVBQ04sU0FBUyxFQUNULENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFOztRQUNiLE9BQUEsTUFBQSxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQXNDLENBQUMsbUNBQ3JELE1BQW1CLENBQUMsSUFBSSxDQUFBO0tBQUEsQ0FDNUIsQ0FDRixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQWtCLENBQUE7UUFDN0MsTUFBTSxLQUFLLEdBQUcsUUFBUTthQUNuQixNQUFNLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFNBQVMs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LENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFBO1FBQ3BELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUE7UUFDMUQsT0FBTyxPQUFPLENBQUMscUJBQXFCO1lBQ2xDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDakQsQ0FBQyxDQUFDO1NBQ0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDMUIsQ0FBQyJ9 |
{ | ||
"name": "class-validator-jsonschema", | ||
"version": "5.0.0", | ||
"version": "5.0.1", | ||
"description": "Convert class-validator-decorated classes into JSON schema", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -104,2 +104,22 @@ // tslint:disable:no-submodule-imports ban-types | ||
/** | ||
* Search for the JSON Schema definition from child class up to the | ||
* top parent class until empty function name is found. | ||
*/ | ||
function getTargetConstructorSchema( | ||
schemas: Record<string, SchemaObject>, | ||
targetConstructor: Function | ||
): SchemaObject { | ||
if (!targetConstructor.name) { | ||
return {} | ||
} else if (schemas[targetConstructor.name]) { | ||
return schemas[targetConstructor.name] | ||
} else { | ||
return getTargetConstructorSchema( | ||
schemas, | ||
Object.getPrototypeOf(targetConstructor) | ||
) | ||
} | ||
} | ||
/** | ||
* Generate JSON Schema definitions from the target object constructor. | ||
@@ -126,3 +146,3 @@ */ | ||
const schemas = validationMetadataArrayToSchemas(metadatas, userOptions) | ||
return Object.values(schemas).length ? Object.values(schemas)[0] : {} | ||
return getTargetConstructorSchema(schemas, targetConstructor) | ||
} | ||
@@ -129,0 +149,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
119320
2605