All files / src/helpers/invalidateCache invalidateCache.ts

90% Statements 9/10
50% Branches 1/2
100% Functions 1/1
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20      7x     7x 17x 17x   17x   17x 25x 18x 18x        
import { type Cache } from '../../Cache'
import { type Observer } from '../../types'
 
const invalidateStack: Observer[] = []
let currentObserver: Observer
 
export function invalidateCache (cache: Observer) {
  const skipLoop = Boolean(invalidateStack.length)
  invalidateStack.push(cache)
 
  Iif (skipLoop) return
 
  while ((currentObserver = invalidateStack.shift())) {
    if (currentObserver.isCache) {
      invalidateStack.push(...(currentObserver as Cache).observers)
      ;(currentObserver as Cache).invalid = true
    }
  }
}