react-native
Version: 
A framework for building native apps using React
73 lines (57 loc) • 1.6 kB
JavaScript
/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow strict
 */
// flowlint unsafe-getters-setters:off
import type {DOMHighResTimeStamp} from './PerformanceEntry';
import {PerformanceEntry} from './PerformanceEntry';
export type DetailType = mixed;
export type PerformanceMarkOptions = {
  detail?: DetailType,
  startTime?: DOMHighResTimeStamp,
};
export type TimeStampOrName = DOMHighResTimeStamp | string;
export type PerformanceMeasureInit = {
  detail?: DetailType,
  startTime: DOMHighResTimeStamp,
  duration: DOMHighResTimeStamp,
};
export class PerformanceMark extends PerformanceEntry {
  #detail: DetailType;
  constructor(markName: string, markOptions?: PerformanceMarkOptions) {
    super({
      name: markName,
      entryType: 'mark',
      startTime: markOptions?.startTime ?? performance.now(),
      duration: 0,
    });
    if (markOptions) {
      this.#detail = markOptions.detail;
    }
  }
  get detail(): DetailType {
    return this.#detail;
  }
}
export class PerformanceMeasure extends PerformanceEntry {
  #detail: DetailType;
  constructor(measureName: string, measureOptions: PerformanceMeasureInit) {
    super({
      name: measureName,
      entryType: 'measure',
      startTime: measureOptions.startTime,
      duration: measureOptions.duration,
    });
    if (measureOptions) {
      this.#detail = measureOptions.detail;
    }
  }
  get detail(): DetailType {
    return this.#detail;
  }
}