( before: T, after: T, )
| 161 | * Note: This is a shallow diff - nested objects are compared by reference. |
| 162 | */ |
| 163 | export function diffState<T extends object>( |
| 164 | before: T, |
| 165 | after: T, |
| 166 | ): Array<{ field: string; before: unknown; after: unknown }> { |
| 167 | const changes: Array<{ field: string; before: unknown; after: unknown }> = []; |
| 168 | const allKeys = new Set([...Object.keys(before), ...Object.keys(after)]); |
| 169 | |
| 170 | for (const key of allKeys) { |
| 171 | const beforeVal = (before as Record<string, unknown>)[key]; |
| 172 | const afterVal = (after as Record<string, unknown>)[key]; |
| 173 | |
| 174 | if (beforeVal !== afterVal) { |
| 175 | changes.push({ |
| 176 | field: key, |
| 177 | before: beforeVal, |
| 178 | after: afterVal, |
| 179 | }); |
| 180 | } |
| 181 | } |
| 182 | |
| 183 | return changes; |
| 184 | } |
no test coverage detected