{"version":3,"file":"primitive-validator.mjs","names":[],"sources":["../../../../../../../@warlock.js/seal/src/validators/primitive-validator.ts"],"sourcesContent":["import { allowedValuesRule, enumRule, inRule, notAllowedValuesRule } from \"../rules\";\nimport { BaseValidator } from \"./base-validator\";\n\n/**\n * Abstract base validator for primitive-typed fields (string, number, boolean).\n *\n * Provides value-membership rules that are meaningful for any single primitive value\n * but not for complex structures (object, array).\n *\n * Do NOT expose this on the `v` factory — it is an inheritance-only base class.\n *\n * Hierarchy:\n *   BaseValidator\n *     └── PrimitiveValidator    ← enum, in, oneOf, allowsOnly, forbids, notIn\n *           ├── StringValidator\n *           ├── NumberValidator\n *           │     └── FloatValidator\n *           ├── BooleanValidator\n *           └── ScalarValidator  (extends PrimitiveValidator, adds asNumber/asString/accepted/declined)\n *\n * @example\n * class MyValidator extends PrimitiveValidator {\n *   // inherits: in(), forbids(), enum(), oneOf(), allowsOnly(), notIn()\n * }\n */\nexport abstract class PrimitiveValidator extends BaseValidator {\n  /**\n   * Value must be one of the enum's values\n   *\n   * @example\n   * v.string().enum(Direction) // Direction is a TS enum\n   */\n  public enum(values: any, errorMessage?: string) {\n    return this.addRule(enumRule, errorMessage, { enum: Object.values(values) });\n  }\n\n  /**\n   * Value must be one of the given values\n   *\n   * @example\n   * v.string().in([\"admin\", \"user\", \"guest\"])\n   * v.number().in([1, 2, 3])\n   */\n  public in(values: any[], errorMessage?: string) {\n    return this.addRule(inRule, errorMessage, { values });\n  }\n\n  /**\n   * Alias for `in()`\n   *\n   * @example\n   * v.string().oneOf([\"active\", \"inactive\"])\n   */\n  public oneOf(values: any[], errorMessage?: string) {\n    return this.in(values, errorMessage);\n  }\n\n  /**\n   * Value must be one of the allowed values (stricter variant)\n   *\n   * @example\n   * v.string().allowsOnly([\"yes\", \"no\"])\n   */\n  public allowsOnly(values: any[], errorMessage?: string) {\n    return this.addRule(allowedValuesRule, errorMessage, { allowedValues: values });\n  }\n\n  /**\n   * Value must NOT be one of the given values\n   *\n   * @example\n   * v.string().forbids([\"banned\", \"blacklisted\"])\n   * v.number().forbids([0, -1])\n   */\n  public forbids(values: any[], errorMessage?: string) {\n    return this.addRule(notAllowedValuesRule, errorMessage, { notAllowedValues: values });\n  }\n\n  /**\n   * Alias for `forbids()`\n   *\n   * @example\n   * v.string().notIn([\"OK\", \"NOT OK\"])\n   */\n  public notIn(values: any[], errorMessage?: string) {\n    return this.forbids(values, errorMessage);\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,IAAsB,qBAAtB,cAAiD,cAAc;;;;;;;CAO7D,AAAO,KAAK,QAAa,cAAuB;EAC9C,OAAO,KAAK,QAAQ,UAAU,cAAc,EAAE,MAAM,OAAO,OAAO,MAAM,EAAE,CAAC;CAC7E;;;;;;;;CASA,AAAO,GAAG,QAAe,cAAuB;EAC9C,OAAO,KAAK,QAAQ,QAAQ,cAAc,EAAE,OAAO,CAAC;CACtD;;;;;;;CAQA,AAAO,MAAM,QAAe,cAAuB;EACjD,OAAO,KAAK,GAAG,QAAQ,YAAY;CACrC;;;;;;;CAQA,AAAO,WAAW,QAAe,cAAuB;EACtD,OAAO,KAAK,QAAQ,mBAAmB,cAAc,EAAE,eAAe,OAAO,CAAC;CAChF;;;;;;;;CASA,AAAO,QAAQ,QAAe,cAAuB;EACnD,OAAO,KAAK,QAAQ,sBAAsB,cAAc,EAAE,kBAAkB,OAAO,CAAC;CACtF;;;;;;;CAQA,AAAO,MAAM,QAAe,cAAuB;EACjD,OAAO,KAAK,QAAQ,QAAQ,YAAY;CAC1C;AACF"}