@ai-sdk/provider-utils
Version:
45 lines (40 loc) • 987 B
text/typescript
import type { ZodNumberDef } from 'zod/v3';
export type JsonSchema7NumberType = {
type: 'number' | 'integer';
minimum?: number;
exclusiveMinimum?: number;
maximum?: number;
exclusiveMaximum?: number;
multipleOf?: number;
};
export function parseNumberDef(def: ZodNumberDef): JsonSchema7NumberType {
const res: JsonSchema7NumberType = {
type: 'number',
};
if (!def.checks) return res;
for (const check of def.checks) {
switch (check.kind) {
case 'int':
res.type = 'integer';
break;
case 'min':
if (check.inclusive) {
res.minimum = check.value;
} else {
res.exclusiveMinimum = check.value;
}
break;
case 'max':
if (check.inclusive) {
res.maximum = check.value;
} else {
res.exclusiveMaximum = check.value;
}
break;
case 'multipleOf':
res.multipleOf = check.value;
break;
}
}
return res;
}