File size: 787 Bytes
2c1d035
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
export function createReaderDiagnostics(readerContext) {
  function pdfStage(stage, page = 0) {
    const started = performance.now();
    return (outcome = "ready") => {
      if (readerContext.readerAbortController.signal.aborted) return;
      readerContext.pdfPageTimings.push({at:started, stage, page, outcome, ms:performance.now()-started});
      if (readerContext.pdfPageTimings.length > 64) readerContext.pdfPageTimings.shift();
    };
  }

  function measurePdf(promise, stage, page = 0) {
    const finish = readerContext.pdfStage(stage,page);
    return Promise.resolve(promise).then(value => { finish(); return value; }, error => {
      finish(error?.name === "AbortError" ? "cancelled" : "failed"); throw error;
    });
  }

  return {
    pdfStage,
    measurePdf
  };
}