UNPKG

2.68 kBTypeScriptView Raw
1/**
2 * @license
3 * Copyright Google LLC All Rights Reserved.
4 *
5 * Use of this source code is governed by an MIT-style license that can be
6 * found in the LICENSE file at https://angular.io/license
7 */
8import { JsonObject } from '../json';
9import { Analytics, EventOptions, PageviewOptions, ScreenviewOptions, TimingOptions } from './api';
10export declare enum AnalyticsReportKind {
11 Event = "event",
12 Screenview = "screenview",
13 Pageview = "pageview",
14 Timing = "timing"
15}
16export interface AnalyticsReportBase extends JsonObject {
17 kind: AnalyticsReportKind;
18}
19export interface AnalyticsReportEvent extends AnalyticsReportBase {
20 kind: AnalyticsReportKind.Event;
21 options: JsonObject & EventOptions;
22 category: string;
23 action: string;
24}
25export interface AnalyticsReportScreenview extends AnalyticsReportBase {
26 kind: AnalyticsReportKind.Screenview;
27 options: JsonObject & ScreenviewOptions;
28 screenName: string;
29 appName: string;
30}
31export interface AnalyticsReportPageview extends AnalyticsReportBase {
32 kind: AnalyticsReportKind.Pageview;
33 options: JsonObject & PageviewOptions;
34 path: string;
35}
36export interface AnalyticsReportTiming extends AnalyticsReportBase {
37 kind: AnalyticsReportKind.Timing;
38 options: JsonObject & TimingOptions;
39 category: string;
40 variable: string;
41 time: string | number;
42}
43export declare type AnalyticsReport = AnalyticsReportEvent | AnalyticsReportScreenview | AnalyticsReportPageview | AnalyticsReportTiming;
44/**
45 * A function that can forward analytics along some stream. AnalyticsReport is already a
46 * JsonObject descendant, but we force it here so the user knows it's safe to serialize.
47 */
48export declare type AnalyticsForwarderFn = (report: JsonObject & AnalyticsReport) => void;
49/**
50 * A class that follows the Analytics interface and forwards analytic reports (JavaScript objects).
51 * AnalyticsReporter is the counterpart which takes analytic reports and report them to another
52 * Analytics interface.
53 */
54export declare class ForwardingAnalytics implements Analytics {
55 protected _fn: AnalyticsForwarderFn;
56 constructor(_fn: AnalyticsForwarderFn);
57 event(category: string, action: string, options?: EventOptions): void;
58 screenview(screenName: string, appName: string, options?: ScreenviewOptions): void;
59 pageview(path: string, options?: PageviewOptions): void;
60 timing(category: string, variable: string, time: string | number, options?: TimingOptions): void;
61 flush(): Promise<void>;
62}
63export declare class AnalyticsReporter {
64 protected _analytics: Analytics;
65 constructor(_analytics: Analytics);
66 report(report: AnalyticsReport): void;
67}