(data: Record<string, unknown>)
| 240 | } |
| 241 | |
| 242 | function readPayloadSnapshotVisibility(data: Record<string, unknown>): SnapshotVisibility | null { |
| 243 | const candidate = data.visibility; |
| 244 | if (!candidate || typeof candidate !== 'object') return null; |
| 245 | const visibility = candidate as Partial<SnapshotVisibility>; |
| 246 | if ( |
| 247 | typeof visibility.partial !== 'boolean' || |
| 248 | typeof visibility.visibleNodeCount !== 'number' || |
| 249 | typeof visibility.totalNodeCount !== 'number' || |
| 250 | !Array.isArray(visibility.reasons) |
| 251 | ) { |
| 252 | return null; |
| 253 | } |
| 254 | return { |
| 255 | partial: visibility.partial, |
| 256 | visibleNodeCount: visibility.visibleNodeCount, |
| 257 | totalNodeCount: visibility.totalNodeCount, |
| 258 | reasons: visibility.reasons.filter( |
| 259 | (reason): reason is SnapshotVisibility['reasons'][number] => typeof reason === 'string', |
| 260 | ), |
| 261 | }; |
| 262 | } |
| 263 | |
| 264 | function uniqueSnapshotVisibilityReasons( |
| 265 | reasons: SnapshotVisibility['reasons'], |
no outgoing calls
no test coverage detected
searching dependent graphs…