(currentNode: AnyNode, data: Partial<AnyNode>)
| 479 | } |
| 480 | |
| 481 | function parseUpdatedNode(currentNode: AnyNode, data: Partial<AnyNode>): AnyNode { |
| 482 | const candidate = { ...currentNode, ...data } |
| 483 | const parsed = AnyNodeSchema.safeParse(candidate) |
| 484 | if (parsed.success) return parsed.data |
| 485 | |
| 486 | const schema = getNodeSchemaForType(candidate.type) |
| 487 | const sanitized = sanitizeNumericValue(schema, data, currentNode, []) |
| 488 | |
| 489 | if (sanitized.issues.length === 0) { |
| 490 | return candidate as AnyNode |
| 491 | } |
| 492 | |
| 493 | warnSanitizedNodeMutation('update', currentNode.id, sanitized.issues) |
| 494 | |
| 495 | return { ...currentNode, ...(sanitized.value as Partial<AnyNode>) } as AnyNode |
| 496 | } |
| 497 | |
| 498 | // Track pending RAF for updateNodesAction to prevent multiple queued callbacks |
| 499 | let pendingRafId: number | null = null |
no test coverage detected
searching dependent graphs…