UNPKG

validlyjs

Version:

ValidlyJS is a lightweight, type-safe validation library inspired by Laravel's validation syntax

58 lines 1.98 kB
import { parseStringRules } from "./StringParser.js"; import { parseFluentRules } from "./FluentParser.js"; export function parseArrayRules(ruleDefinitions) { const rules = []; for (const definition of ruleDefinitions) { if (typeof definition === "string") { const [ruleName, ...params] = definition.split(":"); rules.push({ name: ruleName, params: params, custom: ruleName === "custom", }); } else if (Array.isArray(definition)) { if (definition.length === 0) continue; const [name, ...params] = definition; rules.push({ name: name.toString(), params: params.map((p) => p.toString()), }); } else if (typeof definition === "object" && "build" in definition) { rules.push(...parseFluentRules(definition)); } else if (isRule(definition)) { rules.push(definition); } else { throw new Error(`Invalid rule definition: ${JSON.stringify(definition)}`); } } return rules; } export function parseNestedArrayRules(ruleDefinitions) { if (typeof ruleDefinitions === "string") { return parseStringRules(ruleDefinitions); } if (Array.isArray(ruleDefinitions)) { return parseArrayRules(ruleDefinitions); } if (typeof ruleDefinitions === "object" && "build" in ruleDefinitions) { return parseFluentRules(ruleDefinitions); } if (isRule(ruleDefinitions)) { return [ruleDefinitions]; } throw new Error(`Invalid rule definition format: ${typeof ruleDefinitions}`); } function isRule(obj) { return (typeof obj === "object" && obj !== null && "name" in obj && "params" in obj && typeof obj.name === "string" && Array.isArray(obj.params)); } //# sourceMappingURL=ArrayParser.js.map