diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2023-11-27 12:48:14 -0500 | 
|---|---|---|
| committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2023-11-27 12:48:14 -0500 | 
| commit | 4da4827bcbcdd1ef163f635d9b29416ff272b0bb (patch) | |
| tree | a8a0f1a8befdb78a554e1be91f2c6059ca3ad5f9 /ext/js/debug | |
| parent | fd6bba8a2a869eaf2b2c1fa49001f933fce3c618 (diff) | |
Add JSDoc type annotations to project (rebased)
Diffstat (limited to 'ext/js/debug')
| -rw-r--r-- | ext/js/debug/timer.js | 31 | 
1 files changed, 29 insertions, 2 deletions
| diff --git a/ext/js/debug/timer.js b/ext/js/debug/timer.js index acf3621b..7381dab5 100644 --- a/ext/js/debug/timer.js +++ b/ext/js/debug/timer.js @@ -17,8 +17,13 @@   */  export class Timer { +    /** +     * @param {string} name +     */      constructor(name) { +        /** @type {{name: string, time: number, children: Timer[]}[]} */          this.samples = []; +        /** @type {?Timer} */          this.parent = null;          this.sample(name); @@ -30,6 +35,9 @@ export class Timer {          Timer.current = this;      } +    /** +     * @param {string} name +     */      sample(name) {          const time = performance.now();          this.samples.push({ @@ -39,6 +47,9 @@ export class Timer {          });      } +    /** +     * @param {boolean} skip +     */      complete(skip) {          this.sample('complete'); @@ -55,13 +66,20 @@ export class Timer {          }      } +    /** +     * @param {number} sampleIndex +     * @returns {number} +     */      duration(sampleIndex) {          const sampleIndexIsValid = (typeof sampleIndex === 'number');          const startIndex = (sampleIndexIsValid ? sampleIndex : 0); -        const endIndex = (sampleIndexIsValid ? sampleIndex + 1 : this.times.length - 1); -        return (this.times[endIndex].time - this.times[startIndex].time); +        const endIndex = (sampleIndexIsValid ? sampleIndex + 1 : this.samples.length - 1); +        return (this.samples[endIndex].time - this.samples[startIndex].time);      } +    /** +     * @returns {string} +     */      toString() {          const indent = '  ';          const name = this.samples[0].name; @@ -70,6 +88,9 @@ export class Timer {          return `${name} took ${duration.toFixed(8)}ms  [${extensionName}]` + this._indentString(this.getSampleString(), indent);      } +    /** +     * @returns {string} +     */      getSampleString() {          const indent = '  ';          const duration = this.samples[this.samples.length - 1].time - this.samples[0].time; @@ -87,9 +108,15 @@ export class Timer {          return message;      } +    /** +     * @param {string} message +     * @param {string} indent +     * @returns {string} +     */      _indentString(message, indent) {          return message.replace(/\n/g, `\n${indent}`);      }  } +/** @type {?Timer} */  Timer.current = null; |