UNPKG

apiveritas

Version:

Lightweight CLI tool for consumer-driven API contract testing via JSON schema and payload comparisons.

36 lines (35 loc) 1.34 kB
"use strict"; /** * @file SchemaStrictifier.ts * @author Mario Galea * @description * Utility class for modifying JSON Schemas to strictly disallow additional properties * beyond those explicitly defined. Useful in contract testing to enforce tighter validation rules. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.SchemaStrictifier = void 0; class SchemaStrictifier { /** * Recursively modifies a JSON Schema to disallow additional properties in all object definitions. * * @param schema - The JSON Schema object (or array of schemas) to process. * * @remarks * - For every object-type schema found, sets `additionalProperties = false`. * - Traverses deeply into nested schemas and arrays of schemas. */ static enforceNoAdditionalProperties(schema) { if (Array.isArray(schema)) { schema.forEach(SchemaStrictifier.enforceNoAdditionalProperties); } else if (schema && typeof schema === 'object') { if (schema.type === 'object') { schema.additionalProperties = false; } for (const key of Object.keys(schema)) { SchemaStrictifier.enforceNoAdditionalProperties(schema[key]); } } } } exports.SchemaStrictifier = SchemaStrictifier;