{"version":3,"file":"registry.cjs","sources":["../../src/registry.ts"],"sourcesContent":["import { $ZodRegistry, type $ZodType } from 'zod/v4/core'\n\nexport type SchemaRegistryMeta = {\n  id?: string | undefined\n  [key: string]: unknown\n}\n\nconst getSchemaId = (id: string, io: 'input' | 'output'): string => {\n  return io === 'input' ? `${id}Input` : id\n}\n\n// A WeakMap that falls back to another WeakMap when a key is not found, this is to ensure nested metadata is properly resolved\nclass WeakMapWithFallback extends WeakMap<$ZodType, SchemaRegistryMeta> {\n  constructor(private fallback: WeakMap<$ZodType, SchemaRegistryMeta>) {\n    super()\n  }\n\n  get(key: $ZodType): SchemaRegistryMeta | undefined {\n    return super.get(key) ?? this.fallback.get(key)\n  }\n\n  has(key: $ZodType): boolean {\n    return super.has(key) || this.fallback.has(key)\n  }\n}\n\nconst copyRegistry = (\n  inputRegistry: $ZodRegistry<SchemaRegistryMeta>,\n  idReplaceFn: (id: string) => string,\n): $ZodRegistry<SchemaRegistryMeta> => {\n  const outputRegistry = new $ZodRegistry<SchemaRegistryMeta>()\n\n  outputRegistry._map = new WeakMapWithFallback(inputRegistry._map)\n\n  inputRegistry._idmap.forEach((schema, id) => {\n    outputRegistry.add(schema, {\n      ...inputRegistry._map.get(schema),\n      id: idReplaceFn(id),\n    })\n  })\n\n  return outputRegistry\n}\n\nexport const generateIORegistries = (\n  baseRegistry: $ZodRegistry<SchemaRegistryMeta>,\n): {\n  inputRegistry: $ZodRegistry<SchemaRegistryMeta>\n  outputRegistry: $ZodRegistry<SchemaRegistryMeta>\n} => {\n  const inputRegistry = copyRegistry(baseRegistry, (id) => getSchemaId(id, 'input'))\n  const outputRegistry = copyRegistry(baseRegistry, (id) => getSchemaId(id, 'output'))\n\n  // Detect colliding schemas\n  inputRegistry._idmap.forEach((_, id) => {\n    if (outputRegistry._idmap.has(id)) {\n      throw new Error(\n        `Collision detected for schema \"${id}\". There is already an input schema with the same name.`,\n      )\n    }\n  })\n\n  return { inputRegistry, outputRegistry }\n}\n"],"names":["$ZodRegistry"],"mappings":";;;AAOA,MAAM,cAAc,CAAC,IAAY,OAAmC;AAClE,SAAO,OAAO,UAAU,GAAG,EAAE,UAAU;AACzC;AAGA,MAAM,4BAA4B,QAAsC;AAAA,EACtE,YAAoB,UAAiD;AACnE,UAAA;AADkB,SAAA,WAAA;AAAA,EAEpB;AAAA,EAFoB;AAAA,EAIpB,IAAI,KAA+C;AACjD,WAAO,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,EAChD;AAAA,EAEA,IAAI,KAAwB;AAC1B,WAAO,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,IAAI,GAAG;AAAA,EAChD;AACF;AAEA,MAAM,eAAe,CACnB,eACA,gBACqC;AACrC,QAAM,iBAAiB,IAAIA,kBAAA;AAE3B,iBAAe,OAAO,IAAI,oBAAoB,cAAc,IAAI;AAEhE,gBAAc,OAAO,QAAQ,CAAC,QAAQ,OAAO;AAC3C,mBAAe,IAAI,QAAQ;AAAA,MACzB,GAAG,cAAc,KAAK,IAAI,MAAM;AAAA,MAChC,IAAI,YAAY,EAAE;AAAA,IAAA,CACnB;AAAA,EACH,CAAC;AAED,SAAO;AACT;AAEO,MAAM,uBAAuB,CAClC,iBAIG;AACH,QAAM,gBAAgB,aAAa,cAAc,CAAC,OAAO,YAAY,IAAI,OAAO,CAAC;AACjF,QAAM,iBAAiB,aAAa,cAAc,CAAC,OAAO,YAAY,IAAI,QAAQ,CAAC;AAGnF,gBAAc,OAAO,QAAQ,CAAC,GAAG,OAAO;AACtC,QAAI,eAAe,OAAO,IAAI,EAAE,GAAG;AACjC,YAAM,IAAI;AAAA,QACR,kCAAkC,EAAE;AAAA,MAAA;AAAA,IAExC;AAAA,EACF,CAAC;AAED,SAAO,EAAE,eAAe,eAAA;AAC1B;;"}