MCPcopy
hub / github.com/colinhacks/zod / mergeValues

Function mergeValues

packages/zod/src/v3/types.ts:3241–3285  ·  view source on GitHub ↗
(a: any, b: any)

Source from the content-addressed store, hash-verified

3239}
3240
3241function mergeValues(a: any, b: any): { valid: true; data: any } | { valid: false } {
3242 const aType = getParsedType(a);
3243 const bType = getParsedType(b);
3244
3245 if (a === b) {
3246 return { valid: true, data: a };
3247 } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {
3248 const bKeys = util.objectKeys(b);
3249 const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);
3250
3251 const newObj: any = { ...a, ...b };
3252 for (const key of sharedKeys) {
3253 const sharedValue = mergeValues(a[key], b[key]);
3254 if (!sharedValue.valid) {
3255 return { valid: false };
3256 }
3257 newObj[key] = sharedValue.data;
3258 }
3259
3260 return { valid: true, data: newObj };
3261 } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {
3262 if (a.length !== b.length) {
3263 return { valid: false };
3264 }
3265
3266 const newArray: unknown[] = [];
3267 for (let index = 0; index < a.length; index++) {
3268 const itemA = a[index];
3269 const itemB = b[index];
3270 const sharedValue = mergeValues(itemA, itemB);
3271
3272 if (!sharedValue.valid) {
3273 return { valid: false };
3274 }
3275
3276 newArray.push(sharedValue.data);
3277 }
3278
3279 return { valid: true, data: newArray };
3280 } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {
3281 return { valid: true, data: a };
3282 } else {
3283 return { valid: false };
3284 }
3285}
3286
3287export class ZodIntersection<T extends ZodTypeAny, U extends ZodTypeAny> extends ZodType<
3288 T["_output"] & U["_output"],

Callers 1

handleParsedMethod · 0.70

Calls 1

getParsedTypeFunction · 0.50

Tested by

no test coverage detected