UNPKG

@ai-sdk/provider-utils

Version:
48 lines (44 loc) 1.14 kB
import type { ZodMapDef } from 'zod/v3'; import { parseDef } from '../parse-def'; import type { JsonSchema7Type } from '../parse-types'; import type { Refs } from '../refs'; import { parseAnyDef } from './any'; import { parseRecordDef, type JsonSchema7RecordType } from './record'; export type JsonSchema7MapType = { type: 'array'; maxItems: 125; items: { type: 'array'; items: [JsonSchema7Type, JsonSchema7Type]; minItems: 2; maxItems: 2; }; }; export function parseMapDef( def: ZodMapDef, refs: Refs, ): JsonSchema7MapType | JsonSchema7RecordType { if (refs.mapStrategy === 'record') { return parseRecordDef(def, refs); } const keys = parseDef(def.keyType._def, { ...refs, currentPath: [...refs.currentPath, 'items', 'items', '0'], }) || parseAnyDef(); const values = parseDef(def.valueType._def, { ...refs, currentPath: [...refs.currentPath, 'items', 'items', '1'], }) || parseAnyDef(); return { type: 'array', maxItems: 125, items: { type: 'array', items: [keys, values], minItems: 2, maxItems: 2, }, }; }