(a: any, b: any)
| 3239 | } |
| 3240 | |
| 3241 | function 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 | |
| 3287 | export class ZodIntersection<T extends ZodTypeAny, U extends ZodTypeAny> extends ZodType< |
| 3288 | T["_output"] & U["_output"], |
no test coverage detected