(before?: TaskInfo, after?: TaskInfo)
| 3387 | } |
| 3388 | |
| 3389 | function buildTaskChanges(before?: TaskInfo, after?: TaskInfo): TaskNotesApiChanges { |
| 3390 | const changes: TaskNotesApiChanges = {}; |
| 3391 | const keys = new Set([...Object.keys(before ?? {}), ...Object.keys(after ?? {})]); |
| 3392 | |
| 3393 | for (const key of keys) { |
| 3394 | if (key === "basesData") { |
| 3395 | continue; |
| 3396 | } |
| 3397 | |
| 3398 | const beforeValue = before?.[key as keyof TaskInfo]; |
| 3399 | const afterValue = after?.[key as keyof TaskInfo]; |
| 3400 | if (!areValuesEqual(beforeValue, afterValue)) { |
| 3401 | changes[key] = { |
| 3402 | before: beforeValue, |
| 3403 | after: afterValue, |
| 3404 | }; |
| 3405 | } |
| 3406 | } |
| 3407 | |
| 3408 | return changes; |
| 3409 | } |
| 3410 | |
| 3411 | function areValuesEqual(before: unknown, after: unknown): boolean { |
| 3412 | if (Object.is(before, after)) { |
no test coverage detected