{"version":3,"sources":["../../../../src/utils/type-guards/validator.ts"],"names":["wrapValidatorAsTypeGuard","validator","schema","data","validationOptions"],"mappings":"AAOA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMA,wBAA0C,GACrD,SADWA,wBACX,CAIEC,SAJF;AAAA,SAMA,UACEC,MADF,EAEEC,IAFF;AAAA,sCAGKC,iBAHL;AAGKA,MAAAA,iBAHL;AAAA;;AAAA,WAKEH,SAAS,MAAT,UAAUC,MAAV,EAAkBC,IAAlB,SAA2BC,iBAA3B,EALF;AAAA,GANA;AAAA,CADK","sourcesContent":["import type {\n  FromSchema,\n  FromSchemaDefaultOptions,\n  FromSchemaOptions,\n  JSONSchema,\n} from \"~/index\";\n\n/**\n * Any validator function type (non type-guarding)\n */\nexport type $Validator<V extends unknown[] = []> = (\n  schema: JSONSchema,\n  data: unknown,\n  ...validationOptions: V\n) => boolean;\n\n/**\n * Adds type guarding to a validator function\n *\n * ```ts\n * const validate: Validator = <S extends JSONSchema, T = FromSchema<S>>(\n *   schema: S,\n *   data: unknown\n * ): data is T => {\n *   const isDataValid: boolean = ... // Implement validation here\n *   return isDataValid;\n * };\n * ```\n */\nexport type Validator<\n  O extends FromSchemaOptions = FromSchemaDefaultOptions,\n  V extends unknown[] = [],\n> = <S extends JSONSchema, T = FromSchema<S, O>>(\n  schema: S,\n  data: unknown,\n  ...validationOptions: V\n) => data is T;\n\n/**\n * Type definition for wrapValidatorAsTypeGuard\n */\ntype ValidatorWrapper = <\n  O extends FromSchemaOptions = FromSchemaDefaultOptions,\n  V extends unknown[] = [],\n>(\n  validator: $Validator<V>,\n) => Validator<O, V>;\n\n/**\n * Adds type guarding to any validator function (doesn't modify it)\n * @param validator Validator function\n * @returns Validator function with type guarding\n */\nexport const wrapValidatorAsTypeGuard: ValidatorWrapper =\n  <\n    O extends FromSchemaOptions = FromSchemaDefaultOptions,\n    V extends unknown[] = [],\n  >(\n    validator: $Validator<V>,\n  ) =>\n  <S extends JSONSchema, T = FromSchema<S, O>>(\n    schema: S,\n    data: unknown,\n    ...validationOptions: V\n  ): data is T =>\n    validator(schema, data, ...validationOptions);\n"],"file":"validator.js"}