@angular/fire 7.1.0-canary.dd414b2 → 7.1.0-canary.f0b932a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analytics/analytics.module.d.ts +10 -5
- package/analytics/public_api.d.ts +2 -0
- package/analytics/screen-tracking.service.d.ts +42 -0
- package/analytics/user-tracking.service.d.ts +13 -0
- package/app/app.module.d.ts +3 -3
- package/app-check/app-check.module.d.ts +3 -3
- package/auth/auth.module.d.ts +3 -3
- package/bundles/angular-fire-analytics.umd.js +563 -35
- package/bundles/angular-fire-analytics.umd.js.map +1 -1
- package/bundles/angular-fire-app-check.umd.js +336 -18
- package/bundles/angular-fire-app-check.umd.js.map +1 -1
- package/bundles/angular-fire-app.umd.js +323 -3
- package/bundles/angular-fire-app.umd.js.map +1 -1
- package/bundles/angular-fire-auth.umd.js +324 -9
- package/bundles/angular-fire-auth.umd.js.map +1 -1
- package/bundles/angular-fire-compat-analytics.umd.js +16 -112
- package/bundles/angular-fire-compat-analytics.umd.js.map +1 -1
- package/bundles/angular-fire-compat-auth.umd.js +1 -1
- package/bundles/angular-fire-compat-auth.umd.js.map +1 -1
- package/bundles/angular-fire-compat-database.umd.js +1 -1
- package/bundles/angular-fire-compat-database.umd.js.map +1 -1
- package/bundles/angular-fire-compat-firestore.umd.js +1 -1
- package/bundles/angular-fire-compat-firestore.umd.js.map +1 -1
- package/bundles/angular-fire-compat-functions.umd.js +1 -1
- package/bundles/angular-fire-compat-functions.umd.js.map +1 -1
- package/bundles/angular-fire-compat-messaging.umd.js +5 -5
- package/bundles/angular-fire-compat-messaging.umd.js.map +1 -1
- package/bundles/angular-fire-compat-performance.umd.js +5 -5
- package/bundles/angular-fire-compat-performance.umd.js.map +1 -1
- package/bundles/angular-fire-compat-remote-config.umd.js +5 -5
- package/bundles/angular-fire-compat-remote-config.umd.js.map +1 -1
- package/bundles/angular-fire-compat-storage.umd.js +1 -1
- package/bundles/angular-fire-compat-storage.umd.js.map +1 -1
- package/bundles/angular-fire-compat.umd.js +38 -2
- package/bundles/angular-fire-compat.umd.js.map +1 -1
- package/bundles/angular-fire-database.umd.js +323 -6
- package/bundles/angular-fire-database.umd.js.map +1 -1
- package/bundles/angular-fire-firestore-lite.umd.js +4 -3
- package/bundles/angular-fire-firestore-lite.umd.js.map +1 -1
- package/bundles/angular-fire-firestore.umd.js +323 -8
- package/bundles/angular-fire-firestore.umd.js.map +1 -1
- package/bundles/angular-fire-functions.umd.js +323 -6
- package/bundles/angular-fire-functions.umd.js.map +1 -1
- package/bundles/angular-fire-messaging.umd.js +330 -9
- package/bundles/angular-fire-messaging.umd.js.map +1 -1
- package/bundles/angular-fire-performance.umd.js +339 -11
- package/bundles/angular-fire-performance.umd.js.map +1 -1
- package/bundles/angular-fire-remote-config.umd.js +353 -11
- package/bundles/angular-fire-remote-config.umd.js.map +1 -1
- package/bundles/angular-fire-storage.umd.js +324 -7
- package/bundles/angular-fire-storage.umd.js.map +1 -1
- package/bundles/angular-fire.umd.js +2 -371
- package/bundles/angular-fire.umd.js.map +1 -1
- package/compat/analytics/screen-tracking.service.d.ts +2 -2
- package/compat/cache.d.ts +1 -0
- package/compat/public_api.d.ts +1 -0
- package/core.d.ts +1 -3
- package/database/database.module.d.ts +3 -3
- package/docs/version-7-upgrade.md +1 -1
- package/esm2015/analytics/analytics.module.js +41 -20
- package/esm2015/analytics/public_api.js +3 -1
- package/esm2015/analytics/screen-tracking.service.js +147 -0
- package/esm2015/analytics/user-tracking.service.js +42 -0
- package/esm2015/app/app.module.js +12 -7
- package/esm2015/app-check/app-check.js +1 -2
- package/esm2015/app-check/app-check.module.js +19 -14
- package/esm2015/auth/auth.js +1 -2
- package/esm2015/auth/auth.module.js +10 -9
- package/esm2015/compat/analytics/analytics.js +2 -3
- package/esm2015/compat/analytics/screen-tracking.service.js +11 -100
- package/esm2015/compat/auth/auth.js +2 -3
- package/esm2015/compat/cache.js +32 -0
- package/esm2015/compat/database/database.js +2 -3
- package/esm2015/compat/firestore/firestore.js +2 -3
- package/esm2015/compat/functions/functions.js +2 -3
- package/esm2015/compat/messaging/messaging.js +3 -3
- package/esm2015/compat/performance/performance.js +2 -3
- package/esm2015/compat/public_api.js +2 -1
- package/esm2015/compat/remote-config/remote-config.js +4 -5
- package/esm2015/compat/storage/storage.js +3 -3
- package/esm2015/core.js +4 -55
- package/esm2015/database/database.module.js +9 -7
- package/esm2015/firestore/firestore.module.js +9 -9
- package/esm2015/firestore/lite/lite.module.js +7 -6
- package/esm2015/functions/functions.module.js +9 -7
- package/esm2015/messaging/messaging.module.js +16 -10
- package/esm2015/performance/performance.module.js +22 -8
- package/esm2015/remote-config/firebase.js +3 -2
- package/esm2015/remote-config/remote-config.module.js +34 -8
- package/esm2015/storage/storage.module.js +10 -8
- package/fesm2015/angular-fire-analytics.js +219 -33
- package/fesm2015/angular-fire-analytics.js.map +1 -1
- package/fesm2015/angular-fire-app-check.js +18 -14
- package/fesm2015/angular-fire-app-check.js.map +1 -1
- package/fesm2015/angular-fire-app.js +11 -6
- package/fesm2015/angular-fire-app.js.map +1 -1
- package/fesm2015/angular-fire-auth.js +9 -9
- package/fesm2015/angular-fire-auth.js.map +1 -1
- package/fesm2015/angular-fire-compat-analytics.js +10 -98
- package/fesm2015/angular-fire-compat-analytics.js.map +1 -1
- package/fesm2015/angular-fire-compat-auth.js +2 -2
- package/fesm2015/angular-fire-compat-auth.js.map +1 -1
- package/fesm2015/angular-fire-compat-database.js +2 -2
- package/fesm2015/angular-fire-compat-database.js.map +1 -1
- package/fesm2015/angular-fire-compat-firestore.js +2 -2
- package/fesm2015/angular-fire-compat-firestore.js.map +1 -1
- package/fesm2015/angular-fire-compat-functions.js +2 -2
- package/fesm2015/angular-fire-compat-functions.js.map +1 -1
- package/fesm2015/angular-fire-compat-messaging.js +2 -2
- package/fesm2015/angular-fire-compat-messaging.js.map +1 -1
- package/fesm2015/angular-fire-compat-performance.js +2 -2
- package/fesm2015/angular-fire-compat-performance.js.map +1 -1
- package/fesm2015/angular-fire-compat-remote-config.js +4 -4
- package/fesm2015/angular-fire-compat-remote-config.js.map +1 -1
- package/fesm2015/angular-fire-compat-storage.js +2 -2
- package/fesm2015/angular-fire-compat-storage.js.map +1 -1
- package/fesm2015/angular-fire-compat.js +34 -3
- package/fesm2015/angular-fire-compat.js.map +1 -1
- package/fesm2015/angular-fire-database.js +8 -6
- package/fesm2015/angular-fire-database.js.map +1 -1
- package/fesm2015/angular-fire-firestore-lite.js +6 -5
- package/fesm2015/angular-fire-firestore-lite.js.map +1 -1
- package/fesm2015/angular-fire-firestore.js +8 -8
- package/fesm2015/angular-fire-firestore.js.map +1 -1
- package/fesm2015/angular-fire-functions.js +8 -6
- package/fesm2015/angular-fire-functions.js.map +1 -1
- package/fesm2015/angular-fire-messaging.js +15 -9
- package/fesm2015/angular-fire-messaging.js.map +1 -1
- package/fesm2015/angular-fire-performance.js +21 -7
- package/fesm2015/angular-fire-performance.js.map +1 -1
- package/fesm2015/angular-fire-remote-config.js +36 -10
- package/fesm2015/angular-fire-remote-config.js.map +1 -1
- package/fesm2015/angular-fire-storage.js +9 -7
- package/fesm2015/angular-fire-storage.js.map +1 -1
- package/fesm2015/angular-fire.js +4 -55
- package/fesm2015/angular-fire.js.map +1 -1
- package/firestore/firestore.module.d.ts +3 -3
- package/firestore/lite/lite.module.d.ts +2 -2
- package/functions/functions.module.d.ts +3 -3
- package/messaging/messaging.module.d.ts +3 -3
- package/package.json +8 -2
- package/performance/performance.module.d.ts +4 -4
- package/remote-config/firebase.d.ts +2 -1
- package/remote-config/remote-config.module.d.ts +4 -4
- package/schematics/firebaseTools.js +2 -2
- package/schematics/utils.js +1 -1
- package/schematics/versions.json +1 -1
- package/storage/storage.module.d.ts +3 -3
|
@@ -1,17 +1,26 @@
|
|
|
1
|
-
import { NgModule, Optional, NgZone, InjectionToken } from '@angular/core';
|
|
2
|
-
import {
|
|
1
|
+
import { NgModule, Optional, NgZone, InjectionToken, Injector, APP_INITIALIZER } from '@angular/core';
|
|
2
|
+
import { isSupported } from 'firebase/remote-config';
|
|
3
|
+
import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
|
|
3
4
|
import { RemoteConfig, RemoteConfigInstances, REMOTE_CONFIG_PROVIDER_NAME } from './remote-config';
|
|
4
5
|
import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
|
|
5
6
|
import { registerVersion } from 'firebase/app';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export const PROVIDED_REMOTE_CONFIG_INSTANCES = new InjectionToken('angularfire2.remote-config-instances');
|
|
8
|
-
|
|
9
|
+
const IS_SUPPORTED = new InjectionToken('angularfire2.remote-config.isSupported');
|
|
10
|
+
const isSupportedSymbol = Symbol('angularfire2.remote-config.isSupported');
|
|
11
|
+
export function defaultRemoteConfigInstanceFactory(isSupported, provided, defaultApp) {
|
|
12
|
+
if (!isSupported) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
9
15
|
const defaultRemoteConfig = ɵgetDefaultInstanceOf(REMOTE_CONFIG_PROVIDER_NAME, provided, defaultApp);
|
|
10
|
-
return new RemoteConfig(defaultRemoteConfig);
|
|
16
|
+
return defaultRemoteConfig && new RemoteConfig(defaultRemoteConfig);
|
|
11
17
|
}
|
|
12
18
|
export function remoteConfigInstanceFactory(fn) {
|
|
13
|
-
return (zone) => {
|
|
14
|
-
|
|
19
|
+
return (zone, isSupported, injector) => {
|
|
20
|
+
if (!isSupported) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const remoteConfig = zone.runOutsideAngular(() => fn(injector));
|
|
15
24
|
return new RemoteConfig(remoteConfig);
|
|
16
25
|
};
|
|
17
26
|
}
|
|
@@ -25,6 +34,7 @@ const DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER = {
|
|
|
25
34
|
provide: RemoteConfig,
|
|
26
35
|
useFactory: defaultRemoteConfigInstanceFactory,
|
|
27
36
|
deps: [
|
|
37
|
+
IS_SUPPORTED,
|
|
28
38
|
[new Optional(), PROVIDED_REMOTE_CONFIG_INSTANCES],
|
|
29
39
|
FirebaseApp,
|
|
30
40
|
]
|
|
@@ -39,6 +49,11 @@ RemoteConfigModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", vers
|
|
|
39
49
|
RemoteConfigModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: RemoteConfigModule, providers: [
|
|
40
50
|
DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER,
|
|
41
51
|
REMOTE_CONFIG_INSTANCES_PROVIDER,
|
|
52
|
+
{
|
|
53
|
+
provide: APP_INITIALIZER,
|
|
54
|
+
useValue: () => isSupported().then(it => globalThis[isSupportedSymbol] = it),
|
|
55
|
+
multi: true,
|
|
56
|
+
},
|
|
42
57
|
] });
|
|
43
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: RemoteConfigModule, decorators: [{
|
|
44
59
|
type: NgModule,
|
|
@@ -46,22 +61,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
|
|
|
46
61
|
providers: [
|
|
47
62
|
DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER,
|
|
48
63
|
REMOTE_CONFIG_INSTANCES_PROVIDER,
|
|
64
|
+
{
|
|
65
|
+
provide: APP_INITIALIZER,
|
|
66
|
+
useValue: () => isSupported().then(it => globalThis[isSupportedSymbol] = it),
|
|
67
|
+
multi: true,
|
|
68
|
+
},
|
|
49
69
|
]
|
|
50
70
|
}]
|
|
51
71
|
}], ctorParameters: function () { return []; } });
|
|
52
|
-
export function provideRemoteConfig(fn) {
|
|
72
|
+
export function provideRemoteConfig(fn, ...deps) {
|
|
53
73
|
return {
|
|
54
74
|
ngModule: RemoteConfigModule,
|
|
55
75
|
providers: [{
|
|
76
|
+
provide: IS_SUPPORTED,
|
|
77
|
+
useFactory: () => globalThis[isSupportedSymbol],
|
|
78
|
+
}, {
|
|
56
79
|
provide: PROVIDED_REMOTE_CONFIG_INSTANCES,
|
|
57
80
|
useFactory: remoteConfigInstanceFactory(fn),
|
|
58
81
|
multi: true,
|
|
59
82
|
deps: [
|
|
60
83
|
NgZone,
|
|
84
|
+
IS_SUPPORTED,
|
|
85
|
+
Injector,
|
|
61
86
|
ɵAngularFireSchedulers,
|
|
62
87
|
FirebaseApps,
|
|
88
|
+
...deps,
|
|
63
89
|
]
|
|
64
90
|
}]
|
|
65
91
|
};
|
|
66
92
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNvbmZpZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmVtb3RlLWNvbmZpZy9yZW1vdGUtY29uZmlnLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBd0MsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLDJCQUEyQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUUvQyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsc0NBQXNDLENBQUMsQ0FBQztBQUMzSCxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBVSx3Q0FBd0MsQ0FBQyxDQUFDO0FBRTNGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7QUFFM0UsTUFBTSxVQUFVLGtDQUFrQyxDQUNoRCxXQUFvQixFQUNwQixRQUEwQyxFQUMxQyxVQUF1QjtJQUV2QixJQUFJLENBQUMsV0FBVyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7S0FBRTtJQUNsQyxNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUF1QiwyQkFBMkIsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0gsT0FBTyxtQkFBbUIsSUFBSSxJQUFJLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsRUFBZ0Q7SUFDMUYsT0FBTyxDQUFDLElBQVksRUFBRSxXQUFvQixFQUFFLFFBQWtCLEVBQUUsRUFBRTtRQUNoRSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7U0FBRTtRQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxnQ0FBZ0MsR0FBRztJQUN2QyxPQUFPLEVBQUUscUJBQXFCO0lBQzlCLElBQUksRUFBRTtRQUNKLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQ0FBZ0MsQ0FBRTtLQUNwRDtDQUNGLENBQUM7QUFFRixNQUFNLHVDQUF1QyxHQUFHO0lBQzlDLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFVBQVUsRUFBRSxrQ0FBa0M7SUFDOUMsSUFBSSxFQUFFO1FBQ0osWUFBWTtRQUNaLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQ0FBZ0MsQ0FBRTtRQUNuRCxXQUFXO0tBQ1o7Q0FDRixDQUFDO0FBYUYsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QjtRQUNFLGVBQWUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDOzsrR0FIVSxrQkFBa0I7Z0hBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGFBVmxCO1FBQ1QsdUNBQXVDO1FBQ3ZDLGdDQUFnQztRQUNoQztZQUNFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDNUUsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGOzJGQUVVLGtCQUFrQjtrQkFYOUIsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsdUNBQXVDO3dCQUN2QyxnQ0FBZ0M7d0JBQ2hDOzRCQUNFLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDOzRCQUM1RSxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs7QUFPRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsRUFBOEIsRUFBRSxHQUFHLElBQVc7SUFDaEYsT0FBTztRQUNMLFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7YUFDaEQsRUFBRTtnQkFDRCxPQUFPLEVBQUUsZ0NBQWdDO2dCQUN6QyxVQUFVLEVBQUUsMkJBQTJCLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixZQUFZO29CQUNaLFFBQVE7b0JBQ1Isc0JBQXNCO29CQUN0QixZQUFZO29CQUNaLEdBQUcsSUFBSTtpQkFDUjthQUNGLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBPcHRpb25hbCwgTmdab25lLCBJbmplY3Rpb25Ub2tlbiwgTW9kdWxlV2l0aFByb3ZpZGVycywgSW5qZWN0b3IsIEFQUF9JTklUSUFMSVpFUiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVtb3RlQ29uZmlnIGFzIEZpcmViYXNlUmVtb3RlQ29uZmlnLCBpc1N1cHBvcnRlZCB9IGZyb20gJ2ZpcmViYXNlL3JlbW90ZS1jb25maWcnO1xuaW1wb3J0IHsgybVnZXREZWZhdWx0SW5zdGFuY2VPZiwgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsIFZFUlNJT04gfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IFJlbW90ZUNvbmZpZywgUmVtb3RlQ29uZmlnSW5zdGFuY2VzLCBSRU1PVEVfQ09ORklHX1BST1ZJREVSX05BTUUgfSBmcm9tICcuL3JlbW90ZS1jb25maWcnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBzLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5cbmV4cG9ydCBjb25zdCBQUk9WSURFRF9SRU1PVEVfQ09ORklHX0lOU1RBTkNFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZW1vdGVDb25maWdbXT4oJ2FuZ3VsYXJmaXJlMi5yZW1vdGUtY29uZmlnLWluc3RhbmNlcycpO1xuY29uc3QgSVNfU1VQUE9SVEVEID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdhbmd1bGFyZmlyZTIucmVtb3RlLWNvbmZpZy5pc1N1cHBvcnRlZCcpO1xuXG5jb25zdCBpc1N1cHBvcnRlZFN5bWJvbCA9IFN5bWJvbCgnYW5ndWxhcmZpcmUyLnJlbW90ZS1jb25maWcuaXNTdXBwb3J0ZWQnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRSZW1vdGVDb25maWdJbnN0YW5jZUZhY3RvcnkoXG4gIGlzU3VwcG9ydGVkOiBib29sZWFuLFxuICBwcm92aWRlZDogRmlyZWJhc2VSZW1vdGVDb25maWdbXXx1bmRlZmluZWQsXG4gIGRlZmF1bHRBcHA6IEZpcmViYXNlQXBwLFxuKSB7XG4gIGlmICghaXNTdXBwb3J0ZWQpIHsgcmV0dXJuIG51bGw7IH1cbiAgY29uc3QgZGVmYXVsdFJlbW90ZUNvbmZpZyA9IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2Y8RmlyZWJhc2VSZW1vdGVDb25maWc+KFJFTU9URV9DT05GSUdfUFJPVklERVJfTkFNRSwgcHJvdmlkZWQsIGRlZmF1bHRBcHApO1xuICByZXR1cm4gZGVmYXVsdFJlbW90ZUNvbmZpZyAmJiBuZXcgUmVtb3RlQ29uZmlnKGRlZmF1bHRSZW1vdGVDb25maWcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3RlQ29uZmlnSW5zdGFuY2VGYWN0b3J5KGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZVJlbW90ZUNvbmZpZykge1xuICByZXR1cm4gKHpvbmU6IE5nWm9uZSwgaXNTdXBwb3J0ZWQ6IGJvb2xlYW4sIGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpIHsgcmV0dXJuIG51bGw7IH1cbiAgICBjb25zdCByZW1vdGVDb25maWcgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKGluamVjdG9yKSk7XG4gICAgcmV0dXJuIG5ldyBSZW1vdGVDb25maWcocmVtb3RlQ29uZmlnKTtcbiAgfTtcbn1cblxuY29uc3QgUkVNT1RFX0NPTkZJR19JTlNUQU5DRVNfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IFJlbW90ZUNvbmZpZ0luc3RhbmNlcyxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfUkVNT1RFX0NPTkZJR19JTlNUQU5DRVMgXSxcbiAgXVxufTtcblxuY29uc3QgREVGQVVMVF9SRU1PVEVfQ09ORklHX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBSZW1vdGVDb25maWcsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRSZW1vdGVDb25maWdJbnN0YW5jZUZhY3RvcnksXG4gIGRlcHM6IFtcbiAgICBJU19TVVBQT1JURUQsXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9SRU1PVEVfQ09ORklHX0lOU1RBTkNFUyBdLFxuICAgIEZpcmViYXNlQXBwLFxuICBdXG59O1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX1JFTU9URV9DT05GSUdfSU5TVEFOQ0VfUFJPVklERVIsXG4gICAgUkVNT1RFX0NPTkZJR19JTlNUQU5DRVNfUFJPVklERVIsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlVmFsdWU6ICgpID0+IGlzU3VwcG9ydGVkKCkudGhlbihpdCA9PiBnbG9iYWxUaGlzW2lzU3VwcG9ydGVkU3ltYm9sXSA9IGl0KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUmVtb3RlQ29uZmlnTW9kdWxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgcmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ3JjJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVSZW1vdGVDb25maWcoZm46ICgpID0+IEZpcmViYXNlUmVtb3RlQ29uZmlnLCAuLi5kZXBzOiBhbnlbXSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8UmVtb3RlQ29uZmlnTW9kdWxlPiB7XG4gIHJldHVybiB7XG4gICAgbmdNb2R1bGU6IFJlbW90ZUNvbmZpZ01vZHVsZSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICBwcm92aWRlOiBJU19TVVBQT1JURUQsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBnbG9iYWxUaGlzW2lzU3VwcG9ydGVkU3ltYm9sXSxcbiAgICB9LCB7XG4gICAgICBwcm92aWRlOiBQUk9WSURFRF9SRU1PVEVfQ09ORklHX0lOU1RBTkNFUyxcbiAgICAgIHVzZUZhY3Rvcnk6IHJlbW90ZUNvbmZpZ0luc3RhbmNlRmFjdG9yeShmbiksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgTmdab25lLFxuICAgICAgICBJU19TVVBQT1JURUQsXG4gICAgICAgIEluamVjdG9yLFxuICAgICAgICDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICAgICAgRmlyZWJhc2VBcHBzLFxuICAgICAgICAuLi5kZXBzLFxuICAgICAgXVxuICAgIH1dXG4gIH07XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NgModule, Optional, NgZone, InjectionToken } from '@angular/core';
|
|
2
|
-
import { ɵgetDefaultInstanceOf,
|
|
1
|
+
import { NgModule, Optional, NgZone, InjectionToken, Injector } from '@angular/core';
|
|
2
|
+
import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
|
|
3
3
|
import { Storage, StorageInstances, STORAGE_PROVIDER_NAME } from './storage';
|
|
4
4
|
import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
|
|
5
5
|
import { AuthInstances } from '@angular/fire/auth';
|
|
@@ -8,12 +8,12 @@ import { AppCheckInstances } from '@angular/fire/app-check';
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export const PROVIDED_STORAGE_INSTANCES = new InjectionToken('angularfire2.storage-instances');
|
|
10
10
|
export function defaultStorageInstanceFactory(provided, defaultApp) {
|
|
11
|
-
const
|
|
12
|
-
return new Storage(
|
|
11
|
+
const defaultStorage = ɵgetDefaultInstanceOf(STORAGE_PROVIDER_NAME, provided, defaultApp);
|
|
12
|
+
return defaultStorage && new Storage(defaultStorage);
|
|
13
13
|
}
|
|
14
14
|
export function storageInstanceFactory(fn) {
|
|
15
|
-
return (zone) => {
|
|
16
|
-
const storage =
|
|
15
|
+
return (zone, injector) => {
|
|
16
|
+
const storage = zone.runOutsideAngular(() => fn(injector));
|
|
17
17
|
return new Storage(storage);
|
|
18
18
|
};
|
|
19
19
|
}
|
|
@@ -51,7 +51,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
|
|
|
51
51
|
]
|
|
52
52
|
}]
|
|
53
53
|
}], ctorParameters: function () { return []; } });
|
|
54
|
-
export function provideStorage(fn) {
|
|
54
|
+
export function provideStorage(fn, ...deps) {
|
|
55
55
|
return {
|
|
56
56
|
ngModule: StorageModule,
|
|
57
57
|
providers: [{
|
|
@@ -60,13 +60,15 @@ export function provideStorage(fn) {
|
|
|
60
60
|
multi: true,
|
|
61
61
|
deps: [
|
|
62
62
|
NgZone,
|
|
63
|
+
Injector,
|
|
63
64
|
ɵAngularFireSchedulers,
|
|
64
65
|
FirebaseApps,
|
|
65
66
|
// Defensively load Auth first, if provided
|
|
66
67
|
[new Optional(), AuthInstances],
|
|
67
68
|
[new Optional(), AppCheckInstances],
|
|
69
|
+
...deps,
|
|
68
70
|
]
|
|
69
71
|
}]
|
|
70
72
|
};
|
|
71
73
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3RvcmFnZS9zdG9yYWdlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRTVELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUFZLGdDQUFnQyxDQUFDLENBQUM7QUFFMUcsTUFBTSxVQUFVLDZCQUE2QixDQUFDLFFBQXFDLEVBQUUsVUFBdUI7SUFDMUcsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQWtCLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzRyxPQUFPLGNBQWMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEVBQTJDO0lBQ2hGLE9BQU8sQ0FBQyxJQUFZLEVBQUUsUUFBa0IsRUFBRSxFQUFFO1FBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMzRCxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLDBCQUEwQixHQUFHO0lBQ2pDLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDBCQUEwQixDQUFFO0tBQzlDO0NBQ0YsQ0FBQztBQUVGLE1BQU0saUNBQWlDLEdBQUc7SUFDeEMsT0FBTyxFQUFFLE9BQU87SUFDaEIsVUFBVSxFQUFFLDZCQUE2QjtJQUN6QyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsMEJBQTBCLENBQUU7UUFDN0MsV0FBVztLQUNaO0NBQ0YsQ0FBQztBQVFGLE1BQU0sT0FBTyxhQUFhO0lBQ3hCO1FBQ0UsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7OzBHQUhVLGFBQWE7MkdBQWIsYUFBYTsyR0FBYixhQUFhLGFBTGI7UUFDVCxpQ0FBaUM7UUFDakMsMEJBQTBCO0tBQzNCOzJGQUVVLGFBQWE7a0JBTnpCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFO3dCQUNULGlDQUFpQzt3QkFDakMsMEJBQTBCO3FCQUMzQjtpQkFDRjs7QUFPRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQXlCLEVBQUUsR0FBRyxJQUFXO0lBQ3RFLE9BQU87UUFDTCxRQUFRLEVBQUUsYUFBYTtRQUN2QixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxVQUFVLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixRQUFRO29CQUNSLHNCQUFzQjtvQkFDdEIsWUFBWTtvQkFDWiwyQ0FBMkM7b0JBQzNDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxhQUFhLENBQUU7b0JBQ2hDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxpQkFBaUIsQ0FBRTtvQkFDcEMsR0FBRyxJQUFJO2lCQUNSO2FBQ0YsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE9wdGlvbmFsLCBOZ1pvbmUsIEluamVjdGlvblRva2VuLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlyZWJhc2VTdG9yYWdlIH0gZnJvbSAnZmlyZWJhc2Uvc3RvcmFnZSc7XG5pbXBvcnQgeyDJtWdldERlZmF1bHRJbnN0YW5jZU9mLCDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycywgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgU3RvcmFnZSwgU3RvcmFnZUluc3RhbmNlcywgU1RPUkFHRV9QUk9WSURFUl9OQU1FIH0gZnJvbSAnLi9zdG9yYWdlJztcbmltcG9ydCB7IEZpcmViYXNlQXBwcywgRmlyZWJhc2VBcHAgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcCc7XG5pbXBvcnQgeyBBdXRoSW5zdGFuY2VzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hdXRoJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgeyBBcHBDaGVja0luc3RhbmNlcyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwLWNoZWNrJztcblxuZXhwb3J0IGNvbnN0IFBST1ZJREVEX1NUT1JBR0VfSU5TVEFOQ0VTID0gbmV3IEluamVjdGlvblRva2VuPFN0b3JhZ2VbXT4oJ2FuZ3VsYXJmaXJlMi5zdG9yYWdlLWluc3RhbmNlcycpO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFN0b3JhZ2VJbnN0YW5jZUZhY3RvcnkocHJvdmlkZWQ6IEZpcmViYXNlU3RvcmFnZVtdfHVuZGVmaW5lZCwgZGVmYXVsdEFwcDogRmlyZWJhc2VBcHApIHtcbiAgY29uc3QgZGVmYXVsdFN0b3JhZ2UgPSDJtWdldERlZmF1bHRJbnN0YW5jZU9mPEZpcmViYXNlU3RvcmFnZT4oU1RPUkFHRV9QUk9WSURFUl9OQU1FLCBwcm92aWRlZCwgZGVmYXVsdEFwcCk7XG4gIHJldHVybiBkZWZhdWx0U3RvcmFnZSAmJiBuZXcgU3RvcmFnZShkZWZhdWx0U3RvcmFnZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9yYWdlSW5zdGFuY2VGYWN0b3J5KGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZVN0b3JhZ2UpIHtcbiAgcmV0dXJuICh6b25lOiBOZ1pvbmUsIGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgIGNvbnN0IHN0b3JhZ2UgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKGluamVjdG9yKSk7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlKHN0b3JhZ2UpO1xuICB9O1xufVxuXG5jb25zdCBTVE9SQUdFX0lOU1RBTkNFU19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogU3RvcmFnZUluc3RhbmNlcyxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfU1RPUkFHRV9JTlNUQU5DRVMgXSxcbiAgXVxufTtcblxuY29uc3QgREVGQVVMVF9TVE9SQUdFX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBTdG9yYWdlLFxuICB1c2VGYWN0b3J5OiBkZWZhdWx0U3RvcmFnZUluc3RhbmNlRmFjdG9yeSxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfU1RPUkFHRV9JTlNUQU5DRVMgXSxcbiAgICBGaXJlYmFzZUFwcCxcbiAgXVxufTtcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgREVGQVVMVF9TVE9SQUdFX0lOU1RBTkNFX1BST1ZJREVSLFxuICAgIFNUT1JBR0VfSU5TVEFOQ0VTX1BST1ZJREVSLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnZ2NzJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTdG9yYWdlKGZuOiAoKSA9PiBGaXJlYmFzZVN0b3JhZ2UsIC4uLmRlcHM6IGFueVtdKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTdG9yYWdlTW9kdWxlPiB7XG4gIHJldHVybiB7XG4gICAgbmdNb2R1bGU6IFN0b3JhZ2VNb2R1bGUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogUFJPVklERURfU1RPUkFHRV9JTlNUQU5DRVMsXG4gICAgICB1c2VGYWN0b3J5OiBzdG9yYWdlSW5zdGFuY2VGYWN0b3J5KGZuKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgZGVwczogW1xuICAgICAgICBOZ1pvbmUsXG4gICAgICAgIEluamVjdG9yLFxuICAgICAgICDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICAgICAgRmlyZWJhc2VBcHBzLFxuICAgICAgICAvLyBEZWZlbnNpdmVseSBsb2FkIEF1dGggZmlyc3QsIGlmIHByb3ZpZGVkXG4gICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgQXV0aEluc3RhbmNlcyBdLFxuICAgICAgICBbbmV3IE9wdGlvbmFsKCksIEFwcENoZWNrSW5zdGFuY2VzIF0sXG4gICAgICAgIC4uLmRlcHMsXG4gICAgICBdXG4gICAgfV1cbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import { ɵgetAllInstancesOf,
|
|
2
|
-
import { timer, from } from 'rxjs';
|
|
3
|
-
import { concatMap, distinct } from 'rxjs/operators';
|
|
1
|
+
import { ɵgetAllInstancesOf, ɵzoneWrap, VERSION, ɵgetDefaultInstanceOf, ɵAngularFireSchedulers } from '@angular/fire';
|
|
2
|
+
import { timer, from, of } from 'rxjs';
|
|
3
|
+
import { concatMap, distinct, filter, switchMap, map, groupBy, mergeMap, distinctUntilChanged, startWith, pairwise } from 'rxjs/operators';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { Injectable, Inject, Optional, InjectionToken, APP_INITIALIZER, NgModule, NgZone, Injector } from '@angular/core';
|
|
6
|
+
import { getAnalytics as getAnalytics$1, initializeAnalytics as initializeAnalytics$1, isSupported as isSupported$1, logEvent as logEvent$1, setAnalyticsCollectionEnabled as setAnalyticsCollectionEnabled$1, setCurrentScreen as setCurrentScreen$1, settings as settings$1, setUserId as setUserId$1, setUserProperties as setUserProperties$1 } from 'firebase/analytics';
|
|
7
7
|
export * from 'firebase/analytics';
|
|
8
|
+
import * as i2 from '@angular/fire/app';
|
|
8
9
|
import { FirebaseApp, FirebaseApps } from '@angular/fire/app';
|
|
9
10
|
import { registerVersion } from 'firebase/app';
|
|
11
|
+
import { __awaiter } from 'tslib';
|
|
12
|
+
import * as i1$1 from '@angular/router';
|
|
13
|
+
import { ActivationEnd, ɵEmptyOutletComponent } from '@angular/router';
|
|
14
|
+
import * as i2$1 from '@angular/platform-browser';
|
|
15
|
+
import * as i1 from '@angular/fire/auth';
|
|
16
|
+
import { authState } from '@angular/fire/auth';
|
|
10
17
|
|
|
11
18
|
class Analytics {
|
|
12
19
|
constructor(analytics) {
|
|
@@ -21,18 +28,198 @@ class AnalyticsInstances {
|
|
|
21
28
|
}
|
|
22
29
|
const analyticInstance$ = timer(0, 300).pipe(concatMap(() => from(ɵgetAllInstancesOf(ANALYTICS_PROVIDER_NAME))), distinct());
|
|
23
30
|
|
|
31
|
+
// DO NOT MODIFY, this file is autogenerated by tools/build.ts
|
|
32
|
+
const getAnalytics = ɵzoneWrap(getAnalytics$1, true);
|
|
33
|
+
const initializeAnalytics = ɵzoneWrap(initializeAnalytics$1, true);
|
|
34
|
+
const isSupported = ɵzoneWrap(isSupported$1, true);
|
|
35
|
+
const logEvent = ɵzoneWrap(logEvent$1, true);
|
|
36
|
+
const setAnalyticsCollectionEnabled = ɵzoneWrap(setAnalyticsCollectionEnabled$1, true);
|
|
37
|
+
const setCurrentScreen = ɵzoneWrap(setCurrentScreen$1, true);
|
|
38
|
+
const settings = ɵzoneWrap(settings$1, true);
|
|
39
|
+
const setUserId = ɵzoneWrap(setUserId$1, true);
|
|
40
|
+
const setUserProperties = ɵzoneWrap(setUserProperties$1, true);
|
|
41
|
+
|
|
42
|
+
class UserTrackingService {
|
|
43
|
+
constructor(auth, zone, analyticsInstanceFactories, injector, firebaseApp) {
|
|
44
|
+
this.disposables = [];
|
|
45
|
+
registerVersion('angularfire', VERSION.full, 'user-tracking');
|
|
46
|
+
// Analytics is not ready to be injected yet, as the APP_INITIALIZER hasn't evulated yet, do this the hard way
|
|
47
|
+
const analyticsInstance = globalThis[isSupportedPromiseSymbol].then((isSupported) => {
|
|
48
|
+
const analyticsInstances = analyticsInstanceFactories.map(fn => analyticsInstanceFactory(fn)(zone, isSupported, injector));
|
|
49
|
+
return defaultAnalyticsInstanceFactory(isSupported, analyticsInstances, firebaseApp);
|
|
50
|
+
});
|
|
51
|
+
let resolveInitialized;
|
|
52
|
+
this.initialized = zone.runOutsideAngular(() => new Promise(resolve => { resolveInitialized = resolve; }));
|
|
53
|
+
this.disposables = [
|
|
54
|
+
// TODO add credential tracking back in
|
|
55
|
+
authState(auth).subscribe(user => {
|
|
56
|
+
analyticsInstance.then(analytics => analytics && setUserId(analytics, user === null || user === void 0 ? void 0 : user.uid));
|
|
57
|
+
resolveInitialized();
|
|
58
|
+
}),
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
ngOnDestroy() {
|
|
62
|
+
this.disposables.forEach(it => it.unsubscribe());
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
UserTrackingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: UserTrackingService, deps: [{ token: i1.Auth }, { token: i0.NgZone }, { token: PROVIDED_ANALYTICS_INSTANCE_FACTORIES }, { token: i0.Injector }, { token: i2.FirebaseApp }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
66
|
+
UserTrackingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: UserTrackingService });
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: UserTrackingService, decorators: [{
|
|
68
|
+
type: Injectable
|
|
69
|
+
}], ctorParameters: function () { return [{ type: i1.Auth }, { type: i0.NgZone }, { type: Array, decorators: [{
|
|
70
|
+
type: Inject,
|
|
71
|
+
args: [PROVIDED_ANALYTICS_INSTANCE_FACTORIES]
|
|
72
|
+
}] }, { type: i0.Injector }, { type: i2.FirebaseApp }]; } });
|
|
73
|
+
|
|
74
|
+
const FIREBASE_EVENT_ORIGIN_KEY = 'firebase_event_origin';
|
|
75
|
+
const FIREBASE_PREVIOUS_SCREEN_CLASS_KEY = 'firebase_previous_class';
|
|
76
|
+
const FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY = 'firebase_previous_id';
|
|
77
|
+
const FIREBASE_PREVIOUS_SCREEN_NAME_KEY = 'firebase_previous_screen';
|
|
78
|
+
const FIREBASE_SCREEN_CLASS_KEY = 'firebase_screen_class';
|
|
79
|
+
const FIREBASE_SCREEN_INSTANCE_ID_KEY = 'firebase_screen_id';
|
|
80
|
+
const FIREBASE_SCREEN_NAME_KEY = 'firebase_screen';
|
|
81
|
+
const OUTLET_KEY = 'outlet';
|
|
82
|
+
const PAGE_PATH_KEY = 'page_path';
|
|
83
|
+
const PAGE_TITLE_KEY = 'page_title';
|
|
84
|
+
const SCREEN_CLASS_KEY = 'screen_class';
|
|
85
|
+
const SCREEN_NAME_KEY = 'screen_name';
|
|
86
|
+
const SCREEN_VIEW_EVENT = 'screen_view';
|
|
87
|
+
const EVENT_ORIGIN_AUTO = 'auto';
|
|
88
|
+
const SCREEN_INSTANCE_DELIMITER = '#';
|
|
89
|
+
// this is an INT64 in iOS/Android but use INT32 cause javascript
|
|
90
|
+
let nextScreenInstanceID = Math.floor(Math.random() * (Math.pow(2, 32) - 1)) - Math.pow(2, 31);
|
|
91
|
+
const knownScreenInstanceIDs = {};
|
|
92
|
+
const getScreenInstanceID = (params) => {
|
|
93
|
+
// unique the screen class against the outlet name
|
|
94
|
+
const screenInstanceKey = [
|
|
95
|
+
params[SCREEN_CLASS_KEY],
|
|
96
|
+
params[OUTLET_KEY]
|
|
97
|
+
].join(SCREEN_INSTANCE_DELIMITER);
|
|
98
|
+
if (knownScreenInstanceIDs.hasOwnProperty(screenInstanceKey)) {
|
|
99
|
+
return knownScreenInstanceIDs[screenInstanceKey];
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const ret = nextScreenInstanceID++;
|
|
103
|
+
knownScreenInstanceIDs[screenInstanceKey] = ret;
|
|
104
|
+
return ret;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const ɵscreenViewEvent = (router, title, componentFactoryResolver) => {
|
|
108
|
+
const activationEndEvents = router.events.pipe(filter(e => e instanceof ActivationEnd));
|
|
109
|
+
return activationEndEvents.pipe(switchMap(activationEnd => {
|
|
110
|
+
var _a;
|
|
111
|
+
// router parseUrl is having trouble with outlets when they're empty
|
|
112
|
+
// e.g, /asdf/1(bob://sally:asdf), so put another slash in when empty
|
|
113
|
+
const urlTree = router.parseUrl(router.url.replace(/(?:\().+(?:\))/g, a => a.replace('://', ':///')));
|
|
114
|
+
const pagePath = ((_a = urlTree.root.children[activationEnd.snapshot.outlet]) === null || _a === void 0 ? void 0 : _a.toString()) || '';
|
|
115
|
+
const actualSnapshot = router.routerState.root.children.map(it => it).find(it => it.outlet === activationEnd.snapshot.outlet);
|
|
116
|
+
if (!actualSnapshot) {
|
|
117
|
+
return of(null);
|
|
118
|
+
}
|
|
119
|
+
let actualDeep = actualSnapshot;
|
|
120
|
+
while (actualDeep.firstChild) {
|
|
121
|
+
actualDeep = actualDeep.firstChild;
|
|
122
|
+
}
|
|
123
|
+
const screenName = actualDeep.pathFromRoot.map(s => { var _a; return (_a = s.routeConfig) === null || _a === void 0 ? void 0 : _a.path; }).filter(it => it).join('/') || '/';
|
|
124
|
+
const params = {
|
|
125
|
+
[SCREEN_NAME_KEY]: screenName,
|
|
126
|
+
[PAGE_PATH_KEY]: `/${pagePath}`,
|
|
127
|
+
[FIREBASE_EVENT_ORIGIN_KEY]: EVENT_ORIGIN_AUTO,
|
|
128
|
+
[FIREBASE_SCREEN_NAME_KEY]: screenName,
|
|
129
|
+
[OUTLET_KEY]: activationEnd.snapshot.outlet
|
|
130
|
+
};
|
|
131
|
+
if (title) {
|
|
132
|
+
params[PAGE_TITLE_KEY] = title.getTitle();
|
|
133
|
+
}
|
|
134
|
+
let component = actualSnapshot.component;
|
|
135
|
+
if (component) {
|
|
136
|
+
if (component === ɵEmptyOutletComponent) {
|
|
137
|
+
let deepSnapshot = activationEnd.snapshot;
|
|
138
|
+
// TODO when might there be mutple children, different outlets? explore
|
|
139
|
+
while (deepSnapshot.firstChild) {
|
|
140
|
+
deepSnapshot = deepSnapshot.firstChild;
|
|
141
|
+
}
|
|
142
|
+
component = deepSnapshot.component;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
component = activationEnd.snapshot.component;
|
|
147
|
+
}
|
|
148
|
+
if (typeof component === 'string') {
|
|
149
|
+
return of(Object.assign(Object.assign({}, params), { [SCREEN_CLASS_KEY]: component }));
|
|
150
|
+
}
|
|
151
|
+
else if (component) {
|
|
152
|
+
const componentFactory = componentFactoryResolver.resolveComponentFactory(component);
|
|
153
|
+
return of(Object.assign(Object.assign({}, params), { [SCREEN_CLASS_KEY]: componentFactory.selector }));
|
|
154
|
+
}
|
|
155
|
+
// lazy loads cause extra activations, ignore
|
|
156
|
+
return of(null);
|
|
157
|
+
}), filter(it => !!it), map(params => (Object.assign({ [FIREBASE_SCREEN_CLASS_KEY]: params[SCREEN_CLASS_KEY], [FIREBASE_SCREEN_INSTANCE_ID_KEY]: getScreenInstanceID(params) }, params))), groupBy(it => it[OUTLET_KEY]), mergeMap(it => it.pipe(distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), startWith(undefined), pairwise(), map(([prior, current]) => prior ? Object.assign({ [FIREBASE_PREVIOUS_SCREEN_CLASS_KEY]: prior[SCREEN_CLASS_KEY], [FIREBASE_PREVIOUS_SCREEN_NAME_KEY]: prior[SCREEN_NAME_KEY], [FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY]: prior[FIREBASE_SCREEN_INSTANCE_ID_KEY] }, current) : current))));
|
|
158
|
+
};
|
|
159
|
+
class ScreenTrackingService {
|
|
160
|
+
constructor(router, title, componentFactoryResolver, zone, userTrackingService, firebaseApp, analyticsInstanceFactories, injector) {
|
|
161
|
+
registerVersion('angularfire', VERSION.full, 'screen-tracking');
|
|
162
|
+
if (!router) {
|
|
163
|
+
return this;
|
|
164
|
+
}
|
|
165
|
+
// Analytics is not ready to be injected yet, as the APP_INITIALIZER hasn't evulated yet, do this the hard way
|
|
166
|
+
const analyticsInstance = globalThis[isSupportedPromiseSymbol].then((isSupported) => {
|
|
167
|
+
const analyticsInstances = analyticsInstanceFactories.map(fn => analyticsInstanceFactory(fn)(zone, isSupported, injector));
|
|
168
|
+
return defaultAnalyticsInstanceFactory(isSupported, analyticsInstances, firebaseApp);
|
|
169
|
+
});
|
|
170
|
+
zone.runOutsideAngular(() => {
|
|
171
|
+
this.disposable = ɵscreenViewEvent(router, title, componentFactoryResolver).pipe(switchMap((params) => __awaiter(this, void 0, void 0, function* () {
|
|
172
|
+
if (userTrackingService) {
|
|
173
|
+
yield userTrackingService.initialized;
|
|
174
|
+
}
|
|
175
|
+
const analytics = yield analyticsInstance;
|
|
176
|
+
if (!analytics) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
return logEvent(analytics, SCREEN_VIEW_EVENT, params);
|
|
180
|
+
}))).subscribe();
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
ngOnDestroy() {
|
|
184
|
+
if (this.disposable) {
|
|
185
|
+
this.disposable.unsubscribe();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
ScreenTrackingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService, deps: [{ token: i1$1.Router, optional: true }, { token: i2$1.Title, optional: true }, { token: i0.ComponentFactoryResolver }, { token: i0.NgZone }, { token: UserTrackingService, optional: true }, { token: i2.FirebaseApp }, { token: PROVIDED_ANALYTICS_INSTANCE_FACTORIES }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
190
|
+
ScreenTrackingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService });
|
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService, decorators: [{
|
|
192
|
+
type: Injectable
|
|
193
|
+
}], ctorParameters: function () { return [{ type: i1$1.Router, decorators: [{
|
|
194
|
+
type: Optional
|
|
195
|
+
}] }, { type: i2$1.Title, decorators: [{
|
|
196
|
+
type: Optional
|
|
197
|
+
}] }, { type: i0.ComponentFactoryResolver }, { type: i0.NgZone }, { type: UserTrackingService, decorators: [{
|
|
198
|
+
type: Optional
|
|
199
|
+
}] }, { type: i2.FirebaseApp }, { type: Array, decorators: [{
|
|
200
|
+
type: Inject,
|
|
201
|
+
args: [PROVIDED_ANALYTICS_INSTANCE_FACTORIES]
|
|
202
|
+
}] }, { type: i0.Injector }]; } });
|
|
203
|
+
|
|
204
|
+
const PROVIDED_ANALYTICS_INSTANCE_FACTORIES = new InjectionToken('angularfire2.analytics-instances.factory');
|
|
24
205
|
const PROVIDED_ANALYTICS_INSTANCES = new InjectionToken('angularfire2.analytics-instances');
|
|
25
206
|
const IS_SUPPORTED = new InjectionToken('angularfire2.analytics.isSupported');
|
|
26
|
-
const
|
|
207
|
+
const isSupportedValueSymbol = Symbol('angularfire2.analytics.isSupported.value');
|
|
208
|
+
const isSupportedPromiseSymbol = Symbol('angularfire2.analytics.isSupported');
|
|
209
|
+
globalThis[isSupportedPromiseSymbol] || (globalThis[isSupportedPromiseSymbol] = isSupported$1().then(it => globalThis[isSupportedValueSymbol] = it));
|
|
27
210
|
function defaultAnalyticsInstanceFactory(isSupported, provided, defaultApp) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
211
|
+
if (!isSupported) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
const defaultAnalytics = ɵgetDefaultInstanceOf(ANALYTICS_PROVIDER_NAME, provided, defaultApp);
|
|
215
|
+
return defaultAnalytics && new Analytics(defaultAnalytics);
|
|
32
216
|
}
|
|
33
217
|
function analyticsInstanceFactory(fn) {
|
|
34
|
-
return (zone, isSupported) => {
|
|
35
|
-
|
|
218
|
+
return (zone, isSupported, injector) => {
|
|
219
|
+
if (!isSupported) {
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
const analytics = zone.runOutsideAngular(() => fn(injector));
|
|
36
223
|
return new Analytics(analytics);
|
|
37
224
|
};
|
|
38
225
|
}
|
|
@@ -52,20 +239,20 @@ const DEFAULT_ANALYTICS_INSTANCE_PROVIDER = {
|
|
|
52
239
|
]
|
|
53
240
|
};
|
|
54
241
|
class AnalyticsModule {
|
|
55
|
-
constructor() {
|
|
242
|
+
constructor(_screenTracking, _userTracking) {
|
|
56
243
|
registerVersion('angularfire', VERSION.full, 'analytics');
|
|
57
244
|
}
|
|
58
245
|
}
|
|
59
|
-
AnalyticsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
246
|
+
AnalyticsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, deps: [{ token: ScreenTrackingService, optional: true }, { token: UserTrackingService, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
60
247
|
AnalyticsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule });
|
|
61
248
|
AnalyticsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, providers: [
|
|
62
249
|
DEFAULT_ANALYTICS_INSTANCE_PROVIDER,
|
|
63
250
|
ANALYTICS_INSTANCES_PROVIDER,
|
|
64
251
|
{
|
|
65
252
|
provide: APP_INITIALIZER,
|
|
66
|
-
useValue: () =>
|
|
253
|
+
useValue: () => globalThis[isSupportedPromiseSymbol],
|
|
67
254
|
multi: true,
|
|
68
|
-
}
|
|
255
|
+
}
|
|
69
256
|
] });
|
|
70
257
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, decorators: [{
|
|
71
258
|
type: NgModule,
|
|
@@ -75,18 +262,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
|
|
|
75
262
|
ANALYTICS_INSTANCES_PROVIDER,
|
|
76
263
|
{
|
|
77
264
|
provide: APP_INITIALIZER,
|
|
78
|
-
useValue: () =>
|
|
265
|
+
useValue: () => globalThis[isSupportedPromiseSymbol],
|
|
79
266
|
multi: true,
|
|
80
|
-
}
|
|
267
|
+
}
|
|
81
268
|
]
|
|
82
269
|
}]
|
|
83
|
-
}], ctorParameters: function () { return [
|
|
84
|
-
|
|
270
|
+
}], ctorParameters: function () { return [{ type: ScreenTrackingService, decorators: [{
|
|
271
|
+
type: Optional
|
|
272
|
+
}] }, { type: UserTrackingService, decorators: [{
|
|
273
|
+
type: Optional
|
|
274
|
+
}] }]; } });
|
|
275
|
+
function provideAnalytics(fn, ...deps) {
|
|
85
276
|
return {
|
|
86
277
|
ngModule: AnalyticsModule,
|
|
87
278
|
providers: [{
|
|
88
279
|
provide: IS_SUPPORTED,
|
|
89
|
-
useFactory: () => globalThis[
|
|
280
|
+
useFactory: () => globalThis[isSupportedValueSymbol],
|
|
281
|
+
}, {
|
|
282
|
+
provide: PROVIDED_ANALYTICS_INSTANCE_FACTORIES,
|
|
283
|
+
useValue: fn,
|
|
284
|
+
multi: true,
|
|
90
285
|
}, {
|
|
91
286
|
provide: PROVIDED_ANALYTICS_INSTANCES,
|
|
92
287
|
useFactory: analyticsInstanceFactory(fn),
|
|
@@ -94,27 +289,18 @@ function provideAnalytics(fn) {
|
|
|
94
289
|
deps: [
|
|
95
290
|
NgZone,
|
|
96
291
|
IS_SUPPORTED,
|
|
292
|
+
Injector,
|
|
97
293
|
ɵAngularFireSchedulers,
|
|
98
294
|
FirebaseApps,
|
|
295
|
+
...deps,
|
|
99
296
|
]
|
|
100
297
|
}]
|
|
101
298
|
};
|
|
102
299
|
}
|
|
103
300
|
|
|
104
|
-
// DO NOT MODIFY, this file is autogenerated by tools/build.ts
|
|
105
|
-
const getAnalytics = ɵzoneWrap(getAnalytics$1, true);
|
|
106
|
-
const initializeAnalytics = ɵzoneWrap(initializeAnalytics$1, true);
|
|
107
|
-
const isSupported = ɵzoneWrap(isSupported$1, true);
|
|
108
|
-
const logEvent = ɵzoneWrap(logEvent$1, true);
|
|
109
|
-
const setAnalyticsCollectionEnabled = ɵzoneWrap(setAnalyticsCollectionEnabled$1, true);
|
|
110
|
-
const setCurrentScreen = ɵzoneWrap(setCurrentScreen$1, true);
|
|
111
|
-
const settings = ɵzoneWrap(settings$1, true);
|
|
112
|
-
const setUserId = ɵzoneWrap(setUserId$1, true);
|
|
113
|
-
const setUserProperties = ɵzoneWrap(setUserProperties$1, true);
|
|
114
|
-
|
|
115
301
|
/**
|
|
116
302
|
* Generated bundle index. Do not edit.
|
|
117
303
|
*/
|
|
118
304
|
|
|
119
|
-
export { Analytics, AnalyticsInstances, AnalyticsModule, analyticInstance$, getAnalytics, initializeAnalytics, isSupported, logEvent, provideAnalytics, setAnalyticsCollectionEnabled, setCurrentScreen, setUserId, setUserProperties, settings };
|
|
305
|
+
export { Analytics, AnalyticsInstances, AnalyticsModule, ScreenTrackingService, UserTrackingService, analyticInstance$, getAnalytics, initializeAnalytics, isSupported, logEvent, provideAnalytics, setAnalyticsCollectionEnabled, setCurrentScreen, setUserId, setUserProperties, settings, ɵscreenViewEvent };
|
|
120
306
|
//# sourceMappingURL=angular-fire-analytics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-fire-analytics.js","sources":["../../../src/analytics/analytics.ts","../../../src/analytics/analytics.module.ts","../../../src/analytics/firebase.ts","../../../src/analytics/angular-fire-analytics.ts"],"sourcesContent":["import { Analytics as FirebaseAnalytics } from 'firebase/analytics';\nimport { ɵgetAllInstancesOf } from '@angular/fire';\nimport { from, timer } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\n\n// see notes in core/firebase.app.module.ts for why we're building the class like this\n// tslint:disable-next-line:no-empty-interface\nexport interface Analytics extends FirebaseAnalytics {}\n\nexport class Analytics {\n constructor(analytics: FirebaseAnalytics) {\n return analytics;\n }\n}\n\nexport const ANALYTICS_PROVIDER_NAME = 'analytics';\n\n// tslint:disable-next-line:no-empty-interface\nexport interface AnalyticsInstances extends Array<FirebaseAnalytics> {}\n\nexport class AnalyticsInstances {\n constructor() {\n return ɵgetAllInstancesOf<FirebaseAnalytics>(ANALYTICS_PROVIDER_NAME);\n }\n}\n\nexport const analyticInstance$ = timer(0, 300).pipe(\n concatMap(() => from(ɵgetAllInstancesOf<FirebaseAnalytics>(ANALYTICS_PROVIDER_NAME))),\n distinct(),\n);\n","import { NgModule, Optional, NgZone, InjectionToken, ModuleWithProviders, APP_INITIALIZER } from '@angular/core';\nimport { Analytics as FirebaseAnalytics, isSupported } from 'firebase/analytics';\nimport { ɵgetDefaultInstanceOf, ɵmemoizeInstance, ɵAngularFireSchedulers, VERSION } from '@angular/fire';\nimport { Analytics, ANALYTICS_PROVIDER_NAME, AnalyticsInstances } from './analytics';\nimport { FirebaseApps, FirebaseApp } from '@angular/fire/app';\nimport { registerVersion } from 'firebase/app';\n\nconst PROVIDED_ANALYTICS_INSTANCES = new InjectionToken<Analytics[]>('angularfire2.analytics-instances');\nconst IS_SUPPORTED = new InjectionToken<boolean>('angularfire2.analytics.isSupported');\n\nconst isSupportedSymbol = Symbol('angularfire2.analytics.isSupported');\n\nexport function defaultAnalyticsInstanceFactory(isSupported: boolean, provided: FirebaseAnalytics[]|undefined, defaultApp: FirebaseApp) {\n const defaultAnalytics = isSupported ?\n ɵgetDefaultInstanceOf<FirebaseAnalytics>(ANALYTICS_PROVIDER_NAME, provided, defaultApp) :\n undefined;\n return new Analytics(defaultAnalytics);\n}\n\nexport function analyticsInstanceFactory(fn: () => FirebaseAnalytics) {\n return (zone: NgZone, isSupported: boolean) => {\n const analytics = isSupported ? ɵmemoizeInstance<FirebaseAnalytics>(fn, zone) : undefined;\n return new Analytics(analytics);\n };\n}\n\nconst ANALYTICS_INSTANCES_PROVIDER = {\n provide: AnalyticsInstances,\n deps: [\n [new Optional(), PROVIDED_ANALYTICS_INSTANCES ],\n ]\n};\n\nconst DEFAULT_ANALYTICS_INSTANCE_PROVIDER = {\n provide: Analytics,\n useFactory: defaultAnalyticsInstanceFactory,\n deps: [\n IS_SUPPORTED,\n [new Optional(), PROVIDED_ANALYTICS_INSTANCES ],\n FirebaseApp,\n ]\n};\n\n@NgModule({\n providers: [\n DEFAULT_ANALYTICS_INSTANCE_PROVIDER,\n ANALYTICS_INSTANCES_PROVIDER,\n {\n provide: APP_INITIALIZER,\n useValue: () => isSupported().then(it => globalThis[isSupportedSymbol] = it),\n multi: true,\n },\n ]\n})\nexport class AnalyticsModule {\n constructor() {\n registerVersion('angularfire', VERSION.full, 'analytics');\n }\n}\n\nexport function provideAnalytics(fn: () => FirebaseAnalytics): ModuleWithProviders<AnalyticsModule> {\n return {\n ngModule: AnalyticsModule,\n providers: [{\n provide: IS_SUPPORTED,\n useFactory: () => globalThis[isSupportedSymbol],\n }, {\n provide: PROVIDED_ANALYTICS_INSTANCES,\n useFactory: analyticsInstanceFactory(fn),\n multi: true,\n deps: [\n NgZone,\n IS_SUPPORTED,\n ɵAngularFireSchedulers,\n FirebaseApps,\n ]\n }]\n };\n}\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nexport * from 'firebase/analytics';\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n getAnalytics as _getAnalytics,\n initializeAnalytics as _initializeAnalytics,\n isSupported as _isSupported,\n logEvent as _logEvent,\n setAnalyticsCollectionEnabled as _setAnalyticsCollectionEnabled,\n setCurrentScreen as _setCurrentScreen,\n settings as _settings,\n setUserId as _setUserId,\n setUserProperties as _setUserProperties\n} from 'firebase/analytics';\n\nexport const getAnalytics = ɵzoneWrap(_getAnalytics, true);\nexport const initializeAnalytics = ɵzoneWrap(_initializeAnalytics, true);\nexport const isSupported = ɵzoneWrap(_isSupported, true);\nexport const logEvent = ɵzoneWrap(_logEvent, true);\nexport const setAnalyticsCollectionEnabled = ɵzoneWrap(_setAnalyticsCollectionEnabled, true);\nexport const setCurrentScreen = ɵzoneWrap(_setCurrentScreen, true);\nexport const settings = ɵzoneWrap(_settings, true);\nexport const setUserId = ɵzoneWrap(_setUserId, true);\nexport const setUserProperties = ɵzoneWrap(_setUserProperties, true);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["isSupported","_getAnalytics","_initializeAnalytics","_isSupported","_logEvent","_setAnalyticsCollectionEnabled","_setCurrentScreen","_settings","_setUserId","_setUserProperties"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-fire-analytics.js","sources":["../../../src/analytics/analytics.ts","../../../src/analytics/firebase.ts","../../../src/analytics/user-tracking.service.ts","../../../src/analytics/screen-tracking.service.ts","../../../src/analytics/analytics.module.ts","../../../src/analytics/angular-fire-analytics.ts"],"sourcesContent":["import { Analytics as FirebaseAnalytics } from 'firebase/analytics';\nimport { ɵgetAllInstancesOf } from '@angular/fire';\nimport { from, timer } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\n\n// see notes in core/firebase.app.module.ts for why we're building the class like this\n// tslint:disable-next-line:no-empty-interface\nexport interface Analytics extends FirebaseAnalytics {}\n\nexport class Analytics {\n constructor(analytics: FirebaseAnalytics) {\n return analytics;\n }\n}\n\nexport const ANALYTICS_PROVIDER_NAME = 'analytics';\n\n// tslint:disable-next-line:no-empty-interface\nexport interface AnalyticsInstances extends Array<FirebaseAnalytics> {}\n\nexport class AnalyticsInstances {\n constructor() {\n return ɵgetAllInstancesOf<FirebaseAnalytics>(ANALYTICS_PROVIDER_NAME);\n }\n}\n\nexport const analyticInstance$ = timer(0, 300).pipe(\n concatMap(() => from(ɵgetAllInstancesOf<FirebaseAnalytics>(ANALYTICS_PROVIDER_NAME))),\n distinct(),\n);\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nexport * from 'firebase/analytics';\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n getAnalytics as _getAnalytics,\n initializeAnalytics as _initializeAnalytics,\n isSupported as _isSupported,\n logEvent as _logEvent,\n setAnalyticsCollectionEnabled as _setAnalyticsCollectionEnabled,\n setCurrentScreen as _setCurrentScreen,\n settings as _settings,\n setUserId as _setUserId,\n setUserProperties as _setUserProperties\n} from 'firebase/analytics';\n\nexport const getAnalytics = ɵzoneWrap(_getAnalytics, true);\nexport const initializeAnalytics = ɵzoneWrap(_initializeAnalytics, true);\nexport const isSupported = ɵzoneWrap(_isSupported, true);\nexport const logEvent = ɵzoneWrap(_logEvent, true);\nexport const setAnalyticsCollectionEnabled = ɵzoneWrap(_setAnalyticsCollectionEnabled, true);\nexport const setCurrentScreen = ɵzoneWrap(_setCurrentScreen, true);\nexport const settings = ɵzoneWrap(_settings, true);\nexport const setUserId = ɵzoneWrap(_setUserId, true);\nexport const setUserProperties = ɵzoneWrap(_setUserProperties, true);\n","import { Inject, Injectable, Injector, NgZone, OnDestroy } from '@angular/core';\nimport { Analytics } from './analytics';\nimport { Subscription } from 'rxjs';\nimport { VERSION } from '@angular/fire';\nimport { Auth, authState } from '@angular/fire/auth';\nimport { registerVersion } from 'firebase/app';\nimport { setUserId } from './firebase';\nimport { analyticsInstanceFactory, defaultAnalyticsInstanceFactory, isSupportedPromiseSymbol, PROVIDED_ANALYTICS_INSTANCE_FACTORIES } from './analytics.module';\nimport { FirebaseApp } from '@angular/fire/app';\n\n@Injectable()\nexport class UserTrackingService implements OnDestroy {\n\n public readonly initialized: Promise<void>;\n private readonly disposables: Array<Subscription> = [];\n\n constructor(\n auth: Auth,\n zone: NgZone,\n @Inject(PROVIDED_ANALYTICS_INSTANCE_FACTORIES) analyticsInstanceFactories: Array<(injector: Injector) => Analytics>,\n injector: Injector,\n firebaseApp: FirebaseApp,\n ) {\n registerVersion('angularfire', VERSION.full, 'user-tracking');\n // Analytics is not ready to be injected yet, as the APP_INITIALIZER hasn't evulated yet, do this the hard way\n const analyticsInstance: Promise<Analytics|null> = globalThis[isSupportedPromiseSymbol].then((isSupported: boolean) => {\n const analyticsInstances = analyticsInstanceFactories.map(fn => analyticsInstanceFactory(fn)(zone, isSupported, injector));\n return defaultAnalyticsInstanceFactory(isSupported, analyticsInstances, firebaseApp);\n });\n let resolveInitialized: () => void;\n this.initialized = zone.runOutsideAngular(() => new Promise(resolve => { resolveInitialized = resolve; }));\n this.disposables = [\n // TODO add credential tracking back in\n authState(auth).subscribe(user => {\n analyticsInstance.then(analytics => analytics && setUserId(analytics, user?.uid));\n resolveInitialized();\n }),\n ];\n }\n\n ngOnDestroy() {\n this.disposables.forEach(it => it.unsubscribe());\n }\n}\n","import { Inject, ComponentFactoryResolver, Injectable, NgZone, OnDestroy, Optional, Injector } from '@angular/core';\nimport { of, Subscription, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, groupBy, map, mergeMap, pairwise, startWith, switchMap } from 'rxjs/operators';\nimport { ActivationEnd, Router, ɵEmptyOutletComponent } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport { VERSION } from '@angular/fire';\nimport { FirebaseApp } from '@angular/fire/app';\nimport { registerVersion } from 'firebase/app';\n\nimport { Analytics } from './analytics';\nimport { logEvent } from './firebase';\nimport { UserTrackingService } from './user-tracking.service';\nimport { analyticsInstanceFactory, defaultAnalyticsInstanceFactory, isSupportedPromiseSymbol, PROVIDED_ANALYTICS_INSTANCE_FACTORIES } from './analytics.module';\n\nconst FIREBASE_EVENT_ORIGIN_KEY = 'firebase_event_origin';\nconst FIREBASE_PREVIOUS_SCREEN_CLASS_KEY = 'firebase_previous_class';\nconst FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY = 'firebase_previous_id';\nconst FIREBASE_PREVIOUS_SCREEN_NAME_KEY = 'firebase_previous_screen';\nconst FIREBASE_SCREEN_CLASS_KEY = 'firebase_screen_class';\nconst FIREBASE_SCREEN_INSTANCE_ID_KEY = 'firebase_screen_id';\nconst FIREBASE_SCREEN_NAME_KEY = 'firebase_screen';\nconst OUTLET_KEY = 'outlet';\nconst PAGE_PATH_KEY = 'page_path';\nconst PAGE_TITLE_KEY = 'page_title';\nconst SCREEN_CLASS_KEY = 'screen_class';\nconst SCREEN_NAME_KEY = 'screen_name';\nconst SCREEN_VIEW_EVENT = 'screen_view';\nconst EVENT_ORIGIN_AUTO = 'auto';\nconst SCREEN_INSTANCE_DELIMITER = '#';\n\n// this is an INT64 in iOS/Android but use INT32 cause javascript\nlet nextScreenInstanceID = Math.floor(Math.random() * (2 ** 32 - 1)) - 2 ** 31;\n\nconst knownScreenInstanceIDs: { [key: string]: number } = {};\n\nconst getScreenInstanceID = (params: { [key: string]: any }) => {\n // unique the screen class against the outlet name\n const screenInstanceKey = [\n params[SCREEN_CLASS_KEY],\n params[OUTLET_KEY]\n ].join(SCREEN_INSTANCE_DELIMITER);\n if (knownScreenInstanceIDs.hasOwnProperty(screenInstanceKey)) {\n return knownScreenInstanceIDs[screenInstanceKey];\n } else {\n const ret = nextScreenInstanceID++;\n knownScreenInstanceIDs[screenInstanceKey] = ret;\n return ret;\n }\n};\n\nexport const ɵscreenViewEvent = (\n router: Router,\n title: Title|null,\n componentFactoryResolver: ComponentFactoryResolver,\n): Observable<{\n [SCREEN_NAME_KEY]: string,\n [PAGE_PATH_KEY]: string,\n [FIREBASE_EVENT_ORIGIN_KEY]: 'auto',\n [FIREBASE_SCREEN_NAME_KEY]: string,\n [OUTLET_KEY]: string,\n [PAGE_TITLE_KEY]?: string,\n [SCREEN_CLASS_KEY]: string,\n [FIREBASE_SCREEN_CLASS_KEY]: string,\n [FIREBASE_SCREEN_INSTANCE_ID_KEY]: number,\n [FIREBASE_PREVIOUS_SCREEN_CLASS_KEY]: string,\n [FIREBASE_PREVIOUS_SCREEN_NAME_KEY]: string,\n [FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY]: number,\n}> => {\n const activationEndEvents = router.events.pipe(filter<ActivationEnd>(e => e instanceof ActivationEnd));\n return activationEndEvents.pipe(\n switchMap<ActivationEnd, Observable<Record<string, any>|null>>(activationEnd => {\n // router parseUrl is having trouble with outlets when they're empty\n // e.g, /asdf/1(bob://sally:asdf), so put another slash in when empty\n const urlTree = router.parseUrl(router.url.replace(/(?:\\().+(?:\\))/g, a => a.replace('://', ':///')));\n const pagePath = urlTree.root.children[activationEnd.snapshot.outlet]?.toString() || '';\n const actualSnapshot = router.routerState.root.children.map(it => it).find(it => it.outlet === activationEnd.snapshot.outlet);\n\n if (!actualSnapshot) {\n return of(null);\n }\n\n let actualDeep = actualSnapshot;\n while (actualDeep.firstChild) {\n actualDeep = actualDeep.firstChild;\n }\n const screenName = actualDeep.pathFromRoot.map(s => s.routeConfig?.path).filter(it => it).join('/') || '/';\n\n const params = {\n [SCREEN_NAME_KEY]: screenName,\n [PAGE_PATH_KEY]: `/${pagePath}`,\n [FIREBASE_EVENT_ORIGIN_KEY]: EVENT_ORIGIN_AUTO,\n [FIREBASE_SCREEN_NAME_KEY]: screenName,\n [OUTLET_KEY]: activationEnd.snapshot.outlet\n };\n if (title) {\n params[PAGE_TITLE_KEY] = title.getTitle();\n }\n\n let component = actualSnapshot.component;\n if (component) {\n if (component === ɵEmptyOutletComponent) {\n let deepSnapshot = activationEnd.snapshot;\n // TODO when might there be mutple children, different outlets? explore\n while (deepSnapshot.firstChild) {\n deepSnapshot = deepSnapshot.firstChild;\n }\n component = deepSnapshot.component;\n }\n } else {\n component = activationEnd.snapshot.component;\n }\n\n if (typeof component === 'string') {\n return of({ ...params, [SCREEN_CLASS_KEY]: component });\n } else if (component) {\n const componentFactory = componentFactoryResolver.resolveComponentFactory(component);\n return of({ ...params, [SCREEN_CLASS_KEY]: componentFactory.selector });\n }\n // lazy loads cause extra activations, ignore\n return of(null);\n }),\n filter(it => !!it),\n map(params => ({\n [FIREBASE_SCREEN_CLASS_KEY]: params[SCREEN_CLASS_KEY],\n [FIREBASE_SCREEN_INSTANCE_ID_KEY]: getScreenInstanceID(params),\n ...params\n })),\n groupBy(it => it[OUTLET_KEY]),\n mergeMap(it => it.pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n startWith<any, any>(undefined),\n pairwise(),\n map(([prior, current]) =>\n prior ? {\n [FIREBASE_PREVIOUS_SCREEN_CLASS_KEY]: prior[SCREEN_CLASS_KEY],\n [FIREBASE_PREVIOUS_SCREEN_NAME_KEY]: prior[SCREEN_NAME_KEY],\n [FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY]: prior[FIREBASE_SCREEN_INSTANCE_ID_KEY],\n ...current\n } : current\n ),\n ))\n );\n};\n\n@Injectable()\nexport class ScreenTrackingService implements OnDestroy {\n\n private disposable: Subscription | undefined;\n\n constructor(\n @Optional() router: Router,\n @Optional() title: Title,\n componentFactoryResolver: ComponentFactoryResolver,\n zone: NgZone,\n @Optional() userTrackingService: UserTrackingService,\n firebaseApp: FirebaseApp,\n @Inject(PROVIDED_ANALYTICS_INSTANCE_FACTORIES) analyticsInstanceFactories: Array<(injector: Injector) => Analytics>,\n injector: Injector,\n ) {\n registerVersion('angularfire', VERSION.full, 'screen-tracking');\n if (!router) { return this; }\n // Analytics is not ready to be injected yet, as the APP_INITIALIZER hasn't evulated yet, do this the hard way\n const analyticsInstance: Promise<Analytics|null> = globalThis[isSupportedPromiseSymbol].then((isSupported: boolean) => {\n const analyticsInstances = analyticsInstanceFactories.map(fn => analyticsInstanceFactory(fn)(zone, isSupported, injector));\n return defaultAnalyticsInstanceFactory(isSupported, analyticsInstances, firebaseApp);\n });\n zone.runOutsideAngular(() => {\n this.disposable = ɵscreenViewEvent(router, title, componentFactoryResolver).pipe(\n switchMap(async params => {\n if (userTrackingService) {\n await userTrackingService.initialized;\n }\n const analytics = await analyticsInstance;\n if (!analytics) { return; }\n return logEvent(analytics, SCREEN_VIEW_EVENT, params);\n })\n ).subscribe();\n });\n }\n\n ngOnDestroy() {\n if (this.disposable) {\n this.disposable.unsubscribe();\n }\n }\n\n}\n","import { NgModule, Optional, NgZone, InjectionToken, ModuleWithProviders, APP_INITIALIZER, Injector } from '@angular/core';\nimport { Analytics as FirebaseAnalytics, isSupported } from 'firebase/analytics';\nimport { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';\nimport { Analytics, ANALYTICS_PROVIDER_NAME, AnalyticsInstances } from './analytics';\nimport { FirebaseApps, FirebaseApp } from '@angular/fire/app';\nimport { registerVersion } from 'firebase/app';\nimport { ScreenTrackingService } from './screen-tracking.service';\nimport { UserTrackingService } from './user-tracking.service';\n\nexport const PROVIDED_ANALYTICS_INSTANCE_FACTORIES = new InjectionToken<Array<(injector: Injector) => Analytics>>('angularfire2.analytics-instances.factory');\nexport const PROVIDED_ANALYTICS_INSTANCES = new InjectionToken<Analytics[]>('angularfire2.analytics-instances');\nconst IS_SUPPORTED = new InjectionToken<boolean>('angularfire2.analytics.isSupported');\n\nconst isSupportedValueSymbol = Symbol('angularfire2.analytics.isSupported.value');\nexport const isSupportedPromiseSymbol = Symbol('angularfire2.analytics.isSupported');\n\nglobalThis[isSupportedPromiseSymbol] ||= isSupported().then(it => globalThis[isSupportedValueSymbol] = it);\n\nexport function defaultAnalyticsInstanceFactory(isSupported: boolean, provided: FirebaseAnalytics[]|undefined, defaultApp: FirebaseApp) {\n if (!isSupported) { return null; }\n const defaultAnalytics = ɵgetDefaultInstanceOf<FirebaseAnalytics>(ANALYTICS_PROVIDER_NAME, provided, defaultApp);\n return defaultAnalytics && new Analytics(defaultAnalytics);\n}\n\nexport function analyticsInstanceFactory(fn: (injector: Injector) => FirebaseAnalytics) {\n return (zone: NgZone, isSupported: boolean, injector: Injector) => {\n if (!isSupported) { return null; }\n const analytics = zone.runOutsideAngular(() => fn(injector));\n return new Analytics(analytics);\n };\n}\n\nconst ANALYTICS_INSTANCES_PROVIDER = {\n provide: AnalyticsInstances,\n deps: [\n [new Optional(), PROVIDED_ANALYTICS_INSTANCES ],\n ]\n};\n\nconst DEFAULT_ANALYTICS_INSTANCE_PROVIDER = {\n provide: Analytics,\n useFactory: defaultAnalyticsInstanceFactory,\n deps: [\n IS_SUPPORTED,\n [new Optional(), PROVIDED_ANALYTICS_INSTANCES ],\n FirebaseApp,\n ]\n};\n\n@NgModule({\n providers: [\n DEFAULT_ANALYTICS_INSTANCE_PROVIDER,\n ANALYTICS_INSTANCES_PROVIDER,\n {\n provide: APP_INITIALIZER,\n useValue: () => globalThis[isSupportedPromiseSymbol],\n multi: true,\n }\n ]\n})\nexport class AnalyticsModule {\n constructor(\n @Optional() _screenTracking: ScreenTrackingService,\n @Optional() _userTracking: UserTrackingService,\n ) {\n registerVersion('angularfire', VERSION.full, 'analytics');\n }\n}\n\nexport function provideAnalytics(fn: (injector: Injector) => FirebaseAnalytics, ...deps: any[]): ModuleWithProviders<AnalyticsModule> {\n return {\n ngModule: AnalyticsModule,\n providers: [{\n provide: IS_SUPPORTED,\n useFactory: () => globalThis[isSupportedValueSymbol],\n }, {\n provide: PROVIDED_ANALYTICS_INSTANCE_FACTORIES,\n useValue: fn,\n multi: true,\n }, {\n provide: PROVIDED_ANALYTICS_INSTANCES,\n useFactory: analyticsInstanceFactory(fn),\n multi: true,\n deps: [\n NgZone,\n IS_SUPPORTED,\n Injector,\n ɵAngularFireSchedulers,\n FirebaseApps,\n ...deps,\n ]\n }]\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_getAnalytics","_initializeAnalytics","_isSupported","_logEvent","_setAnalyticsCollectionEnabled","_setCurrentScreen","_settings","_setUserId","_setUserProperties","isSupported"],"mappings":"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"}
|