@langchain/core
Version:
Core LangChain.js abstractions and schemas
1 lines • 4.53 kB
Source Map (JSON)
{"version":3,"file":"record.cjs","names":["def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef","refs: Refs","ZodFirstPartyTypeKind","acc: Record<string, JsonSchema7Type>","key: string","parseDef","parseAnyDef","schema: JsonSchema7RecordType","parseStringDef","parseBrandedDef"],"sources":["../../../../src/utils/zod-to-json-schema/parsers/record.ts"],"sourcesContent":["import {\n ZodFirstPartyTypeKind,\n ZodMapDef,\n ZodRecordDef,\n ZodTypeAny,\n} from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\nimport { JsonSchema7EnumType } from \"./enum.js\";\nimport { JsonSchema7ObjectType } from \"./object.js\";\nimport { JsonSchema7StringType, parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nimport { parseAnyDef } from \"./any.js\";\n\ntype JsonSchema7RecordPropertyNamesType =\n | Omit<JsonSchema7StringType, \"type\">\n | Omit<JsonSchema7EnumType, \"type\">;\n\nexport type JsonSchema7RecordType = {\n type: \"object\";\n additionalProperties?: JsonSchema7Type | true;\n propertyNames?: JsonSchema7RecordPropertyNamesType;\n};\n\nexport function parseRecordDef(\n def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef,\n refs: Refs\n): JsonSchema7RecordType {\n if (refs.target === \"openAi\") {\n console.warn(\n \"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\"\n );\n }\n\n if (\n refs.target === \"openApi3\" &&\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum\n ) {\n return {\n type: \"object\",\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce(\n (acc: Record<string, JsonSchema7Type>, key: string) => ({\n ...acc,\n [key]:\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", key],\n }) ?? parseAnyDef(refs),\n }),\n {}\n ),\n additionalProperties: refs.rejectedAdditionalProperties,\n } satisfies JsonSchema7ObjectType as any;\n }\n\n const schema: JsonSchema7RecordType = {\n type: \"object\",\n additionalProperties:\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n }) ?? refs.allowedAdditionalProperties,\n };\n\n if (refs.target === \"openApi3\") {\n return schema;\n }\n\n if (\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length\n ) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n\n return {\n ...schema,\n propertyNames: keyType,\n };\n } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n } else if (\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length\n ) {\n const { type, ...keyType } = parseBrandedDef(\n def.keyType._def,\n refs\n ) as JsonSchema7StringType;\n\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n\n return schema;\n}\n"],"mappings":";;;;;;;;AAyBA,SAAgB,eACdA,KACAC,MACuB;AACvB,KAAI,KAAK,WAAW,UAClB,QAAQ,KACN,+FACD;AAGH,KACE,KAAK,WAAW,cAChB,IAAI,SAAS,KAAK,aAAaC,6BAAsB,QAErD,QAAO;EACL,MAAM;EACN,UAAU,IAAI,QAAQ,KAAK;EAC3B,YAAY,IAAI,QAAQ,KAAK,OAAO,OAClC,CAACC,KAAsCC,SAAiB;GACtD,GAAG;IACF,MACCC,0BAAS,IAAI,UAAU,MAAM;IAC3B,GAAG;IACH,aAAa;KAAC,GAAG,KAAK;KAAa;KAAc;IAAI;GACtD,EAAC,IAAIC,wBAAY,KAAK;EAC1B,IACD,CAAE,EACH;EACD,sBAAsB,KAAK;CAC5B;CAGH,MAAMC,SAAgC;EACpC,MAAM;EACN,sBACEF,0BAAS,IAAI,UAAU,MAAM;GAC3B,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,sBAAuB;EAC3D,EAAC,IAAI,KAAK;CACd;AAED,KAAI,KAAK,WAAW,WAClB,QAAO;AAGT,KACE,IAAI,SAAS,KAAK,aAAaH,6BAAsB,aACrD,IAAI,QAAQ,KAAK,QAAQ,QACzB;EACA,MAAM,EAAE,KAAM,GAAG,SAAS,GAAGM,8BAAe,IAAI,QAAQ,MAAM,KAAK;AAEnE,SAAO;GACL,GAAG;GACH,eAAe;EAChB;CACF,WAAU,IAAI,SAAS,KAAK,aAAaN,6BAAsB,QAC9D,QAAO;EACL,GAAG;EACH,eAAe,EACb,MAAM,IAAI,QAAQ,KAAK,OACxB;CACF;UAED,IAAI,SAAS,KAAK,aAAaA,6BAAsB,cACrD,IAAI,QAAQ,KAAK,KAAK,KAAK,aAAaA,6BAAsB,aAC9D,IAAI,QAAQ,KAAK,KAAK,KAAK,QAAQ,QACnC;EACA,MAAM,EAAE,KAAM,GAAG,SAAS,GAAGO,gCAC3B,IAAI,QAAQ,MACZ,KACD;AAED,SAAO;GACL,GAAG;GACH,eAAe;EAChB;CACF;AAED,QAAO;AACR"}