<

{{title}}

{{file.summary.functions.pct}}%

Functions
{{file.summary.functions.covered}}/{{file.summary.functions.total}}

{{file.summary.branches.pct}}%

Branches
{{file.summary.branches.covered}}/{{file.summary.branches.total}}

{{file.summary.lines.pct}}%

Lines
{{file.summary.lines.covered}}/{{file.summary.lines.total}}
          
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10x
10x
3x
 
10x
7x
3x
 
4x
 
 
 
 
 
8x
8x
2x
2x
 
8x
6x
6x
 
 
 
 
1x
1x
1x
 
 
 
 
                
import { PrewarmLevel } from '../../model/PrewarmLevel'; 
 
/** 
 * 单调去重状态(design.md Decision 4)。 
 * 
 * - `MINIMAL`:全局只做一次(`minimalDone`)。 
 * - `LIGHT` / `HEAVY`:每 bizType 记录已达最高档;低于等于已达档则不再执行。 
 * - 不允许降级重热;仅 manifest version 变化时 `reset()` 整体重置。 
 */ 
export class PrewarmDedup { 
  private reached: Map<string, PrewarmLevel> = new Map(); 
  private minimalDone: boolean = false; 
 
  /** 
   * 判断本次 `(level, bizType)` 是否应执行(未被去重)。 
   */ 
  public shouldRun(level: PrewarmLevel, bizType: string): boolean { 
    if (level === PrewarmLevel.MINIMAL) { 
      return !this.minimalDone; 
    } 
    const cur: PrewarmLevel | undefined = this.reached.get(bizType); 
    if (cur === undefined) { 
      return true; 
    } 
    return level > cur; 
  } 
 
  /** 
   * 标记 `(level, bizType)` 已完成,更新已达档(单调不降)。 
   */ 
  public markDone(level: PrewarmLevel, bizType: string): void { 
    if (level === PrewarmLevel.MINIMAL) { 
      this.minimalDone = true; 
      return; 
    } 
    const cur: PrewarmLevel | undefined = this.reached.get(bizType); 
    if (cur === undefined || level > cur) { 
      this.reached.set(bizType, level); 
    } 
  } 
 
  /** 整体重置(manifest version 变化时调用)。 */ 
  public reset(): void { 
    this.reached.clear(); 
    this.minimalDone = false; 
  } 
} 

              
Code coverage generated by bjc at {{date}}