{"version":3,"file":"refine.mjs","names":[],"sources":["../../src/schemas/refine.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { BaseSchema } from \"../core/base\";\nimport type { CombinedStandardProps, Schema } from \"../core/types\";\n\nexport type RefineCheck<O> = (value: O) => boolean | string | StandardSchemaV1.Issue[];\n\nexport class RefineSchema<I, O> extends BaseSchema<I, O> {\n  private readonly innerSchema: Schema<I, O>;\n  private readonly check: RefineCheck<O>;\n  private readonly defaultMessage: string;\n\n  constructor(innerSchema: Schema<I, O>, check: RefineCheck<O>, message = \"Refinement failed\") {\n    super();\n    this.innerSchema = innerSchema;\n    this.check = check;\n    this.defaultMessage = message;\n    this.jsonSchema = { ...innerSchema.jsonSchema };\n  }\n\n  get [\"~standard\"](): CombinedStandardProps<I, O> {\n    return {\n      version: 1,\n      vendor: \"h-schema\",\n      jsonSchema: {\n        input: () => this.jsonSchema,\n        output: () => this.jsonSchema,\n      },\n      validate: (value: unknown) => {\n        const r = this.innerSchema[\"~standard\"].validate(value) as StandardSchemaV1.Result<O>;\n        if (\"issues\" in r) {\n          return r;\n        }\n        const out = this.check(r.value);\n        if (out === true) {\n          return { value: r.value };\n        }\n        if (out === false) {\n          return { issues: [{ message: this.defaultMessage }] };\n        }\n        if (typeof out === \"string\") {\n          return { issues: [{ message: out }] };\n        }\n        if (Array.isArray(out)) {\n          return { issues: out };\n        }\n        return { value: r.value };\n      },\n      types: {\n        input: {} as I,\n        output: {} as O,\n      },\n    };\n  }\n}\n"],"mappings":";;AAMA,IAAa,eAAb,cAAwC,WAAiB;CACvD;CACA;CACA;CAEA,YAAY,aAA2B,OAAuB,UAAU,qBAAqB;EAC3F,MAAM;EACN,KAAK,cAAc;EACnB,KAAK,QAAQ;EACb,KAAK,iBAAiB;EACtB,KAAK,aAAa,EAAE,GAAG,YAAY,WAAW;CAChD;CAEA,KAAK,eAA4C;EAC/C,OAAO;GACL,SAAS;GACT,QAAQ;GACR,YAAY;IACV,aAAa,KAAK;IAClB,cAAc,KAAK;GACrB;GACA,WAAW,UAAmB;IAC5B,MAAM,IAAI,KAAK,YAAY,YAAY,CAAC,SAAS,KAAK;IACtD,IAAI,YAAY,GACd,OAAO;IAET,MAAM,MAAM,KAAK,MAAM,EAAE,KAAK;IAC9B,IAAI,QAAQ,MACV,OAAO,EAAE,OAAO,EAAE,MAAM;IAE1B,IAAI,QAAQ,OACV,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,eAAe,CAAC,EAAE;IAEtD,IAAI,OAAO,QAAQ,UACjB,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,IAAI,CAAC,EAAE;IAEtC,IAAI,MAAM,QAAQ,GAAG,GACnB,OAAO,EAAE,QAAQ,IAAI;IAEvB,OAAO,EAAE,OAAO,EAAE,MAAM;GAC1B;GACA,OAAO;IACL,OAAO,CAAC;IACR,QAAQ,CAAC;GACX;EACF;CACF;AACF"}