{"version":3,"file":"map.cjs","names":["BaseSchema"],"sources":["../../src/schemas/map.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { BaseSchema } from \"../core/base\";\nimport type { CombinedStandardProps, Schema } from \"../core/types\";\n\nexport class MapSchema<K, V> extends BaseSchema<unknown, Map<K, V>> {\n  private readonly keySchema: Schema<unknown, K>;\n  private readonly valueSchema: Schema<unknown, V>;\n\n  constructor(keySchema: Schema<unknown, K>, valueSchema: Schema<unknown, V>) {\n    super();\n    this.keySchema = keySchema;\n    this.valueSchema = valueSchema;\n    this.jsonSchema = {\n      type: \"object\",\n      format: \"map\",\n      additionalProperties: valueSchema.jsonSchema,\n    };\n  }\n\n  get [\"~standard\"](): CombinedStandardProps<unknown, Map<K, V>> {\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        if (!(value instanceof Map)) {\n          return { issues: [{ message: \"Expected Map\" }] };\n        }\n        const issues: StandardSchemaV1.Issue[] = [];\n        const out = new Map<K, V>();\n        let i = 0;\n        for (const [k, v] of value.entries()) {\n          const kr = this.keySchema[\"~standard\"].validate(k) as StandardSchemaV1.Result<K>;\n          const vr = this.valueSchema[\"~standard\"].validate(v) as StandardSchemaV1.Result<V>;\n          if (\"issues\" in kr) {\n            if (kr.issues) {\n              issues.push(\n                ...kr.issues.map((iss) => ({\n                  ...iss,\n                  path: iss.path ? [i, \"key\", ...iss.path] : [i, \"key\"],\n                })),\n              );\n            }\n          }\n          if (\"issues\" in vr) {\n            if (vr.issues) {\n              issues.push(\n                ...vr.issues.map((iss) => ({\n                  ...iss,\n                  path: iss.path ? [i, \"value\", ...iss.path] : [i, \"value\"],\n                })),\n              );\n            }\n          }\n          if (!(\"issues\" in kr) && !(\"issues\" in vr)) {\n            out.set(kr.value, vr.value);\n          }\n          i++;\n        }\n        if (issues.length > 0) {\n          return { issues };\n        }\n        return { value: out };\n      },\n      types: {\n        input: {} as unknown,\n        output: new Map() as Map<K, V>,\n      },\n    };\n  }\n}\n"],"mappings":";;AAIA,IAAa,YAAb,cAAqCA,aAAAA,WAA+B;CAClE;CACA;CAEA,YAAY,WAA+B,aAAiC;EAC1E,MAAM;EACN,KAAK,YAAY;EACjB,KAAK,cAAc;EACnB,KAAK,aAAa;GAChB,MAAM;GACN,QAAQ;GACR,sBAAsB,YAAY;EACpC;CACF;CAEA,KAAK,eAA0D;EAC7D,OAAO;GACL,SAAS;GACT,QAAQ;GACR,YAAY;IACV,aAAa,KAAK;IAClB,cAAc,KAAK;GACrB;GACA,WAAW,UAAmB;IAC5B,IAAI,EAAE,iBAAiB,MACrB,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,eAAe,CAAC,EAAE;IAEjD,MAAM,SAAmC,CAAC;IAC1C,MAAM,sBAAM,IAAI,IAAU;IAC1B,IAAI,IAAI;IACR,KAAK,MAAM,CAAC,GAAG,MAAM,MAAM,QAAQ,GAAG;KACpC,MAAM,KAAK,KAAK,UAAU,YAAY,CAAC,SAAS,CAAC;KACjD,MAAM,KAAK,KAAK,YAAY,YAAY,CAAC,SAAS,CAAC;KACnD,IAAI,YAAY,IACV;UAAA,GAAG,QACL,OAAO,KACL,GAAG,GAAG,OAAO,KAAK,SAAS;OACzB,GAAG;OACH,MAAM,IAAI,OAAO;QAAC;QAAG;QAAO,GAAG,IAAI;OAAI,IAAI,CAAC,GAAG,KAAK;MACtD,EAAE,CACJ;KAAA;KAGJ,IAAI,YAAY,IACV;UAAA,GAAG,QACL,OAAO,KACL,GAAG,GAAG,OAAO,KAAK,SAAS;OACzB,GAAG;OACH,MAAM,IAAI,OAAO;QAAC;QAAG;QAAS,GAAG,IAAI;OAAI,IAAI,CAAC,GAAG,OAAO;MAC1D,EAAE,CACJ;KAAA;KAGJ,IAAI,EAAE,YAAY,OAAO,EAAE,YAAY,KACrC,IAAI,IAAI,GAAG,OAAO,GAAG,KAAK;KAE5B;IACF;IACA,IAAI,OAAO,SAAS,GAClB,OAAO,EAAE,OAAO;IAElB,OAAO,EAAE,OAAO,IAAI;GACtB;GACA,OAAO;IACL,OAAO,CAAC;IACR,wBAAQ,IAAI,IAAI;GAClB;EACF;CACF;AACF"}