json-schema-library
Version:
Customizable and hackable json-validator and json-schema utilities for traversal, data generation and validation
27 lines (24 loc) • 854 B
text/typescript
import { isObject } from "../utils/isObject";
import { Keyword, JsonSchemaValidatorParams } from "../Keyword";
export const maxPropertiesKeyword: Keyword = {
id: "maxProperties",
keyword: "maxProperties",
addValidate: ({ schema }) => !isNaN(schema.maxProperties),
validate: validateMaxProperties
};
function validateMaxProperties({ node, data, pointer = "#" }: JsonSchemaValidatorParams) {
if (!isObject(data)) {
return;
}
const { schema } = node;
const propertyCount = Object.keys(data).length;
if (isNaN(schema.maxProperties) === false && schema.maxProperties < propertyCount) {
return node.createError("max-properties-error", {
maxProperties: schema.maxProperties,
length: propertyCount,
pointer,
schema,
value: data
});
}
}