UNPKG

4.69 kBTypeScriptView Raw
1/**
2 * @license
3 * Copyright 2020 Google LLC
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17import { FirebaseApp } from '@firebase/app';
18/**
19 * Defines configuration options for the Performance Monitoring SDK.
20 *
21 * @public
22 */
23export interface PerformanceSettings {
24 /** Whether to collect custom events. */
25 dataCollectionEnabled?: boolean;
26 /** Whether to collect out of the box events. */
27 instrumentationEnabled?: boolean;
28}
29/**
30 * The Firebase Performance Monitoring service interface.
31 *
32 * @public
33 */
34export interface FirebasePerformance {
35 /**
36 * The {@link @firebase/app#FirebaseApp} this `FirebasePerformance` instance is associated with.
37 */
38 app: FirebaseApp;
39 /**
40 * Controls the logging of automatic traces and HTTP/S network monitoring.
41 */
42 instrumentationEnabled: boolean;
43 /**
44 * Controls the logging of custom traces.
45 */
46 dataCollectionEnabled: boolean;
47}
48/**
49 * The interface representing a `Trace`.
50 *
51 * @public
52 */
53export interface PerformanceTrace {
54 /**
55 * Starts the timing for the trace instance.
56 */
57 start(): void;
58 /**
59 * Stops the timing of the trace instance and logs the data of the instance.
60 */
61 stop(): void;
62 /**
63 * Records a trace from given parameters. This provides a direct way to use trace without a need to
64 * start/stop. This is useful for use cases in which the trace cannot directly be used
65 * (e.g. if the duration was captured before the Performance SDK was loaded).
66 *
67 * @param startTime - trace start time since epoch in millisec.
68 * @param duration - The duraction of the trace in millisec.
69 * @param options - An object which can optionally hold maps of custom metrics and
70 * custom attributes.
71 */
72 record(startTime: number, duration: number, options?: {
73 metrics?: {
74 [key: string]: number;
75 };
76 attributes?: {
77 [key: string]: string;
78 };
79 }): void;
80 /**
81 * Adds to the value of a custom metric. If a custom metric with the provided name does not
82 * exist, it creates one with that name and the value equal to the given number. The value will be floored down to an
83 * integer.
84 *
85 * @param metricName - The name of the custom metric.
86 * @param num - The number to be added to the value of the custom metric. If not provided, it
87 * uses a default value of one.
88 */
89 incrementMetric(metricName: string, num?: number): void;
90 /**
91 * Sets the value of the specified custom metric to the given number regardless of whether
92 * a metric with that name already exists on the trace instance or not. The value will be floored down to an
93 * integer.
94 *
95 * @param metricName - Name of the custom metric.
96 * @param num - Value to of the custom metric.
97 */
98 putMetric(metricName: string, num: number): void;
99 /**
100 * Returns the value of the custom metric by that name. If a custom metric with that name does
101 * not exist will return zero.
102 *
103 * @param metricName - Name of the custom metric.
104 */
105 getMetric(metricName: string): number;
106 /**
107 * Set a custom attribute of a trace to a certain value.
108 *
109 * @param attr - Name of the custom attribute.
110 * @param value - Value of the custom attribute.
111 */
112 putAttribute(attr: string, value: string): void;
113 /**
114 * Retrieves the value which a custom attribute is set to.
115 *
116 * @param attr - Name of the custom attribute.
117 */
118 getAttribute(attr: string): string | undefined;
119 /**
120 * Removes the specified custom attribute from a trace instance.
121 *
122 * @param attr - Name of the custom attribute.
123 */
124 removeAttribute(attr: string): void;
125 /**
126 * Returns a map of all custom attributes of a trace instance.
127 */
128 getAttributes(): {
129 [key: string]: string;
130 };
131}
132declare module '@firebase/component' {
133 interface NameServiceMapping {
134 'performance': FirebasePerformance;
135 }
136}