UNPKG

@react-native-firebase/perf

Version:

React Native Firebase - React Native Firebase provides native integration with Performance Monitoring to gain insight into key performance characteristics within your React Native application.

100 lines (89 loc) 3.36 kB
/* * Copyright (c) 2016-present Invertase Limited & Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this library except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** * @typedef {import('@firebase/app').FirebaseApp} FirebaseApp * @typedef {import('..').FirebasePerformanceTypes.Module} Performance * @typedef {import('..').FirebasePerformanceTypes.Trace} Trace * @typedef {import('..').FirebasePerformanceTypes.ScreenTrace} ScreenTrace * @typedef {import('..').FirebasePerformanceTypes.HttpMetric} HttpMetric */ import { isBoolean } from '@react-native-firebase/app/lib/common'; import { getApp } from '@react-native-firebase/app'; /** * Returns a Performance instance for the given app. * @param app - FirebaseApp. Optional. * @returns {Performance} */ export function getPerformance(app) { if (app) { return getApp(app.name).perf(); } return getApp().perf(); } /** * Returns a Performance instance for the given app. * @param app - FirebaseApp. Required. * @param settings - Optional PerformanceSettings. Set "dataCollectionEnabled" which will enable/disable Performance collection. * @returns {Performance} */ export async function initializePerformance(app, settings) { const perf = getApp(app.name).perf(); if (settings && isBoolean(settings.dataCollectionEnabled)) { await perf.setPerformanceCollectionEnabled(settings.dataCollectionEnabled); } return perf; } /** * Returns a Trace instance. * @param perf - Performance instance * @param identifier - A String to identify the Trace instance * @returns {Trace} */ export function trace(perf, identifier) { return perf.newTrace(identifier); } /** * Returns a HttpMetric instance. * @param perf - Performance instance * @param identifier - A String to identify the HttpMetric instance * @returns {HttpMetric} */ export function httpMetric(perf, identifier, httpMethod) { return perf.newHttpMetric(identifier, httpMethod); } /** * Creates a ScreenTrace instance with the given identifier. * Throws if hardware acceleration is disabled or if Android is 9.0 or 9.1. * @platform android Android !== 9.0.0 && Android !== 9.1.0 * @param perf - Performance instance * @param identifier Name of the trace, no leading or trailing whitespace allowed, no leading underscore '_' character allowed, max length is 100. * @returns {ScreenTrace} */ export function newScreenTrace(perf, identifier) { return perf.newScreenTrace(identifier); } /** * Creates a ScreenTrace instance with the given identifier and immediately starts it. * Throws if hardware acceleration is disabled or if Android is 9.0 or 9.1. * @platform android Android !== 9.0.0 && Android !== 9.1.0 * @param perf - Performance instance * @param identifier Name of the screen * @returns {Promise<ScreenTrace>} */ export function startScreenTrace(perf, identifier) { return perf.startScreenTrace(identifier); }