@sudoo/pattern
Version:
Pattern Structure for TypeScript
50 lines (49 loc) • 1.48 kB
JavaScript
;
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;