UNPKG

@sudoo/pattern

Version:
50 lines (49 loc) 1.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validatePatternSchema = void 0; const declare_1 = require("./declare"); const validatePatternSchema = (pattern) => { if (typeof pattern !== 'object') { return false; } if (!declare_1.availablePatternType.includes(pattern.type)) { return false; } switch (pattern.type) { case 'map': { const keys = Object.keys(pattern.map); for (const key of keys) { const schema = pattern.map[key]; if (!(0, exports.validatePatternSchema)(schema)) { return false; } } break; } case 'list': { if (!(0, exports.validatePatternSchema)(pattern.element)) { return false; } break; } case 'record': { if (!(0, exports.validatePatternSchema)(pattern.key)) { return false; } if (!(0, exports.validatePatternSchema)(pattern.value)) { return false; } break; } case 'tuple': { for (const schema of pattern.list) { if (!(0, exports.validatePatternSchema)(schema)) { return false; } } break; } } return true; }; exports.validatePatternSchema = validatePatternSchema;