@angular/fire 7.1.0-rc.3 → 7.1.1

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.
Files changed (183) hide show
  1. package/analytics/analytics.module.d.ts +9 -6
  2. package/analytics/firebase.d.ts +2 -2
  3. package/analytics/overrides.d.ts +1 -0
  4. package/analytics/public_api.d.ts +2 -0
  5. package/analytics/screen-tracking.service.d.ts +40 -0
  6. package/analytics/user-tracking.service.d.ts +11 -0
  7. package/app/app.module.d.ts +3 -3
  8. package/app-check/app-check.module.d.ts +3 -3
  9. package/auth/auth.module.d.ts +3 -3
  10. package/auth-guard/angular-fire-auth-guard.d.ts +5 -0
  11. package/auth-guard/auth-guard.d.ts +29 -0
  12. package/auth-guard/auth-guard.module.d.ts +7 -0
  13. package/auth-guard/package.json +11 -0
  14. package/auth-guard/public_api.d.ts +2 -0
  15. package/bundles/angular-fire-analytics.umd.js +548 -41
  16. package/bundles/angular-fire-analytics.umd.js.map +1 -1
  17. package/bundles/angular-fire-app-check.umd.js +336 -18
  18. package/bundles/angular-fire-app-check.umd.js.map +1 -1
  19. package/bundles/angular-fire-app.umd.js +323 -3
  20. package/bundles/angular-fire-app.umd.js.map +1 -1
  21. package/bundles/angular-fire-auth-guard.umd.js +109 -0
  22. package/bundles/angular-fire-auth-guard.umd.js.map +1 -0
  23. package/bundles/angular-fire-auth.umd.js +324 -9
  24. package/bundles/angular-fire-auth.umd.js.map +1 -1
  25. package/bundles/angular-fire-compat-analytics.umd.js +16 -112
  26. package/bundles/angular-fire-compat-analytics.umd.js.map +1 -1
  27. package/bundles/angular-fire-compat-auth.umd.js +1 -1
  28. package/bundles/angular-fire-compat-auth.umd.js.map +1 -1
  29. package/bundles/angular-fire-compat-database.umd.js +1 -1
  30. package/bundles/angular-fire-compat-database.umd.js.map +1 -1
  31. package/bundles/angular-fire-compat-firestore.umd.js +1 -1
  32. package/bundles/angular-fire-compat-firestore.umd.js.map +1 -1
  33. package/bundles/angular-fire-compat-functions.umd.js +1 -1
  34. package/bundles/angular-fire-compat-functions.umd.js.map +1 -1
  35. package/bundles/angular-fire-compat-messaging.umd.js +5 -5
  36. package/bundles/angular-fire-compat-messaging.umd.js.map +1 -1
  37. package/bundles/angular-fire-compat-performance.umd.js +5 -5
  38. package/bundles/angular-fire-compat-performance.umd.js.map +1 -1
  39. package/bundles/angular-fire-compat-remote-config.umd.js +5 -5
  40. package/bundles/angular-fire-compat-remote-config.umd.js.map +1 -1
  41. package/bundles/angular-fire-compat-storage.umd.js +2 -1
  42. package/bundles/angular-fire-compat-storage.umd.js.map +1 -1
  43. package/bundles/angular-fire-compat.umd.js +38 -2
  44. package/bundles/angular-fire-compat.umd.js.map +1 -1
  45. package/bundles/angular-fire-database.umd.js +323 -6
  46. package/bundles/angular-fire-database.umd.js.map +1 -1
  47. package/bundles/angular-fire-firestore-lite.umd.js +327 -9
  48. package/bundles/angular-fire-firestore-lite.umd.js.map +1 -1
  49. package/bundles/angular-fire-firestore.umd.js +323 -8
  50. package/bundles/angular-fire-firestore.umd.js.map +1 -1
  51. package/bundles/angular-fire-functions.umd.js +323 -6
  52. package/bundles/angular-fire-functions.umd.js.map +1 -1
  53. package/bundles/angular-fire-messaging.umd.js +339 -24
  54. package/bundles/angular-fire-messaging.umd.js.map +1 -1
  55. package/bundles/angular-fire-performance.umd.js +339 -11
  56. package/bundles/angular-fire-performance.umd.js.map +1 -1
  57. package/bundles/angular-fire-remote-config.umd.js +342 -6
  58. package/bundles/angular-fire-remote-config.umd.js.map +1 -1
  59. package/bundles/angular-fire-storage.umd.js +324 -7
  60. package/bundles/angular-fire-storage.umd.js.map +1 -1
  61. package/bundles/angular-fire.umd.js +43 -371
  62. package/bundles/angular-fire.umd.js.map +1 -1
  63. package/compat/analytics/screen-tracking.service.d.ts +2 -2
  64. package/compat/cache.d.ts +1 -0
  65. package/compat/public_api.d.ts +1 -0
  66. package/compat/storage/interfaces.d.ts +1 -0
  67. package/compat/storage/ref.d.ts +2 -1
  68. package/core.d.ts +13 -3
  69. package/database/database.module.d.ts +3 -3
  70. package/docs/deploy/getting-started.md +62 -1
  71. package/docs/version-7-upgrade.md +1 -1
  72. package/esm2015/analytics/analytics.module.js +33 -27
  73. package/esm2015/analytics/firebase.js +3 -3
  74. package/esm2015/analytics/overrides.js +3 -0
  75. package/esm2015/analytics/public_api.js +3 -1
  76. package/esm2015/analytics/screen-tracking.service.js +139 -0
  77. package/esm2015/analytics/user-tracking.service.js +43 -0
  78. package/esm2015/app/app.module.js +12 -7
  79. package/esm2015/app-check/app-check.js +1 -2
  80. package/esm2015/app-check/app-check.module.js +19 -14
  81. package/esm2015/auth/auth.js +1 -2
  82. package/esm2015/auth/auth.module.js +10 -9
  83. package/esm2015/auth-guard/angular-fire-auth-guard.js +5 -0
  84. package/esm2015/auth-guard/auth-guard.js +49 -0
  85. package/esm2015/auth-guard/auth-guard.module.js +20 -0
  86. package/esm2015/auth-guard/public_api.js +3 -0
  87. package/esm2015/compat/analytics/analytics.js +2 -3
  88. package/esm2015/compat/analytics/screen-tracking.service.js +11 -100
  89. package/esm2015/compat/auth/auth.js +2 -3
  90. package/esm2015/compat/cache.js +32 -0
  91. package/esm2015/compat/database/database.js +2 -3
  92. package/esm2015/compat/firestore/firestore.js +2 -3
  93. package/esm2015/compat/functions/functions.js +2 -3
  94. package/esm2015/compat/messaging/messaging.js +3 -3
  95. package/esm2015/compat/performance/performance.js +2 -3
  96. package/esm2015/compat/public_api.js +2 -1
  97. package/esm2015/compat/remote-config/remote-config.js +4 -5
  98. package/esm2015/compat/storage/interfaces.js +1 -1
  99. package/esm2015/compat/storage/ref.js +2 -1
  100. package/esm2015/compat/storage/storage.js +3 -3
  101. package/esm2015/core.js +44 -52
  102. package/esm2015/database/database.module.js +9 -7
  103. package/esm2015/firestore/firestore.module.js +9 -9
  104. package/esm2015/firestore/lite/lite.module.js +11 -7
  105. package/esm2015/functions/functions.module.js +9 -7
  106. package/esm2015/messaging/firebase.js +3 -3
  107. package/esm2015/messaging/messaging.module.js +19 -21
  108. package/esm2015/messaging/overrides.js +3 -0
  109. package/esm2015/performance/performance.module.js +22 -8
  110. package/esm2015/remote-config/firebase.js +2 -1
  111. package/esm2015/remote-config/overrides.js +3 -0
  112. package/esm2015/remote-config/remote-config.module.js +25 -7
  113. package/esm2015/storage/storage.module.js +10 -8
  114. package/esm2015/zones.js +3 -2
  115. package/fesm2015/angular-fire-analytics.js +209 -40
  116. package/fesm2015/angular-fire-analytics.js.map +1 -1
  117. package/fesm2015/angular-fire-app-check.js +18 -14
  118. package/fesm2015/angular-fire-app-check.js.map +1 -1
  119. package/fesm2015/angular-fire-app.js +11 -6
  120. package/fesm2015/angular-fire-app.js.map +1 -1
  121. package/fesm2015/angular-fire-auth-guard.js +72 -0
  122. package/fesm2015/angular-fire-auth-guard.js.map +1 -0
  123. package/fesm2015/angular-fire-auth.js +9 -9
  124. package/fesm2015/angular-fire-auth.js.map +1 -1
  125. package/fesm2015/angular-fire-compat-analytics.js +10 -98
  126. package/fesm2015/angular-fire-compat-analytics.js.map +1 -1
  127. package/fesm2015/angular-fire-compat-auth.js +2 -2
  128. package/fesm2015/angular-fire-compat-auth.js.map +1 -1
  129. package/fesm2015/angular-fire-compat-database.js +2 -2
  130. package/fesm2015/angular-fire-compat-database.js.map +1 -1
  131. package/fesm2015/angular-fire-compat-firestore.js +2 -2
  132. package/fesm2015/angular-fire-compat-firestore.js.map +1 -1
  133. package/fesm2015/angular-fire-compat-functions.js +2 -2
  134. package/fesm2015/angular-fire-compat-functions.js.map +1 -1
  135. package/fesm2015/angular-fire-compat-messaging.js +2 -2
  136. package/fesm2015/angular-fire-compat-messaging.js.map +1 -1
  137. package/fesm2015/angular-fire-compat-performance.js +2 -2
  138. package/fesm2015/angular-fire-compat-performance.js.map +1 -1
  139. package/fesm2015/angular-fire-compat-remote-config.js +4 -4
  140. package/fesm2015/angular-fire-compat-remote-config.js.map +1 -1
  141. package/fesm2015/angular-fire-compat-storage.js +3 -2
  142. package/fesm2015/angular-fire-compat-storage.js.map +1 -1
  143. package/fesm2015/angular-fire-compat.js +34 -3
  144. package/fesm2015/angular-fire-compat.js.map +1 -1
  145. package/fesm2015/angular-fire-database.js +8 -6
  146. package/fesm2015/angular-fire-database.js.map +1 -1
  147. package/fesm2015/angular-fire-firestore-lite.js +10 -6
  148. package/fesm2015/angular-fire-firestore-lite.js.map +1 -1
  149. package/fesm2015/angular-fire-firestore.js +8 -8
  150. package/fesm2015/angular-fire-firestore.js.map +1 -1
  151. package/fesm2015/angular-fire-functions.js +8 -6
  152. package/fesm2015/angular-fire-functions.js.map +1 -1
  153. package/fesm2015/angular-fire-messaging.js +22 -22
  154. package/fesm2015/angular-fire-messaging.js.map +1 -1
  155. package/fesm2015/angular-fire-performance.js +21 -7
  156. package/fesm2015/angular-fire-performance.js.map +1 -1
  157. package/fesm2015/angular-fire-remote-config.js +27 -7
  158. package/fesm2015/angular-fire-remote-config.js.map +1 -1
  159. package/fesm2015/angular-fire-storage.js +9 -7
  160. package/fesm2015/angular-fire-storage.js.map +1 -1
  161. package/fesm2015/angular-fire.js +46 -53
  162. package/fesm2015/angular-fire.js.map +1 -1
  163. package/firestore/firestore.module.d.ts +3 -3
  164. package/firestore/lite/lite.module.d.ts +3 -3
  165. package/functions/functions.module.d.ts +3 -3
  166. package/messaging/firebase.d.ts +2 -2
  167. package/messaging/messaging.module.d.ts +4 -4
  168. package/messaging/overrides.d.ts +1 -0
  169. package/package.json +9 -3
  170. package/performance/performance.module.d.ts +4 -4
  171. package/remote-config/firebase.d.ts +1 -0
  172. package/remote-config/overrides.d.ts +1 -0
  173. package/remote-config/remote-config.module.d.ts +3 -3
  174. package/schematics/deploy/actions.js +40 -26
  175. package/schematics/deploy/schema.json +4 -0
  176. package/schematics/firebaseTools.js +22 -2
  177. package/schematics/setup/index.js +9 -2
  178. package/schematics/setup/prompts.js +1 -1
  179. package/schematics/setup/ssr.js +7 -1
  180. package/schematics/setup/static.js +9 -3
  181. package/schematics/utils.js +1 -1
  182. package/schematics/versions.json +1 -1
  183. package/storage/storage.module.d.ts +3 -3
@@ -6,3 +6,4 @@ export declare type SettableMetadata = firebase.storage.SettableMetadata;
6
6
  export declare type Reference = firebase.storage.Reference;
7
7
  export declare type StringFormat = firebase.storage.StringFormat;
8
8
  export declare type ListResult = firebase.storage.ListResult;
9
+ export declare type ListOptions = firebase.storage.ListOptions;
@@ -1,4 +1,4 @@
1
- import { ListResult, Reference, SettableMetadata, UploadMetadata } from './interfaces';
1
+ import { ListOptions, ListResult, Reference, SettableMetadata, UploadMetadata } from './interfaces';
2
2
  import { AngularFireUploadTask } from './task';
3
3
  import { Observable } from 'rxjs';
4
4
  export interface AngularFireStorageReference {
@@ -9,6 +9,7 @@ export interface AngularFireStorageReference {
9
9
  updateMetadata(meta: SettableMetadata): Observable<any>;
10
10
  put(data: any, metadata?: UploadMetadata | undefined): AngularFireUploadTask;
11
11
  putString(data: string, format?: string | undefined, metadata?: UploadMetadata | undefined): AngularFireUploadTask;
12
+ list(options?: ListOptions): Observable<ListResult>;
12
13
  listAll(): Observable<ListResult>;
13
14
  }
14
15
  /**
package/core.d.ts CHANGED
@@ -1,7 +1,17 @@
1
- import { NgZone, Version } from '@angular/core';
1
+ import { Version } from '@angular/core';
2
2
  import { FirebaseApp } from 'firebase/app';
3
3
  export declare const VERSION: Version;
4
- export declare function ɵcacheInstance<T>(cacheKey: any, moduleName: string, appName: string, fn: () => T, deps: any): T;
5
- export declare function ɵmemoizeInstance<T>(fn: () => T, zone: NgZone): T;
4
+ export declare const ɵisMessagingSupportedFactory: {
5
+ async: () => any;
6
+ sync: () => any;
7
+ };
8
+ export declare const ɵisRemoteConfigSupportedFactory: {
9
+ async: () => any;
10
+ sync: () => any;
11
+ };
12
+ export declare const ɵisAnalyticsSupportedFactory: {
13
+ async: () => any;
14
+ sync: () => any;
15
+ };
6
16
  export declare function ɵgetDefaultInstanceOf<T = unknown>(identifier: string, provided: T[] | undefined, defaultApp: FirebaseApp): T | undefined;
7
17
  export declare const ɵgetAllInstancesOf: <T = unknown>(identifier: string, app?: FirebaseApp) => T[];
@@ -1,15 +1,15 @@
1
- import { NgZone, InjectionToken, ModuleWithProviders } from '@angular/core';
1
+ import { NgZone, InjectionToken, ModuleWithProviders, Injector } from '@angular/core';
2
2
  import { Database as FirebaseDatabase } from 'firebase/database';
3
3
  import { Database } from './database';
4
4
  import { FirebaseApp } from '@angular/fire/app';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare const PROVIDED_DATABASE_INSTANCES: InjectionToken<Database[]>;
7
7
  export declare function defaultDatabaseInstanceFactory(provided: FirebaseDatabase[] | undefined, defaultApp: FirebaseApp): Database;
8
- export declare function databaseInstanceFactory(fn: () => FirebaseDatabase): (zone: NgZone) => Database;
8
+ export declare function databaseInstanceFactory(fn: (injector: Injector) => FirebaseDatabase): (zone: NgZone, injector: Injector) => Database;
9
9
  export declare class DatabaseModule {
10
10
  constructor();
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<DatabaseModule, never>;
12
12
  static ɵmod: i0.ɵɵNgModuleDeclaration<DatabaseModule, never, never, never>;
13
13
  static ɵinj: i0.ɵɵInjectorDeclaration<DatabaseModule>;
14
14
  }
15
- export declare function provideDatabase(fn: () => FirebaseDatabase): ModuleWithProviders<DatabaseModule>;
15
+ export declare function provideDatabase(fn: () => FirebaseDatabase, ...deps: any[]): ModuleWithProviders<DatabaseModule>;
@@ -140,4 +140,65 @@ The above configuration specifies the following:
140
140
  2. `ng deploy projectName` will deploy the specified project with default configuration.
141
141
  3. `ng deploy projectName --prod` or `ng deploy projectName --configuration='production'` will deploy `projectName` with production build settings to your production environment.
142
142
 
143
- All of the options are optional. If you do not specify a `buildTarget`, it defaults to a production build (`projectName:build:production`). If you do not specify a `firebaseProject`, it defaults to the first matching deploy target found in your `.firebaserc` (where your projectName is the same as your Firebase deploy target name). The `configurations` section is also optional.
143
+ All of the options are optional. If you do not specify a `buildTarget`, it defaults to a production build (`projectName:build:production`). If you do not specify a `firebaseProject`, it defaults to the first matching deploy target found in your `.firebaserc` (where your projectName is the same as your Firebase deploy target name). The `configurations` section is also optional.
144
+
145
+ ### Working with multiple project sites
146
+
147
+ For example, if you have muti sites config in firebase.json like this:
148
+ ```
149
+ {
150
+ "hosting": [
151
+ {
152
+ "target": "custom-site",
153
+ "public": "public/my-custom-site",
154
+ "ignore": [
155
+ "firebase.json",
156
+ "**/.*",
157
+ "**/node_modules/**"
158
+ ],
159
+ "rewrites": [
160
+ {
161
+ "source": "**",
162
+ "destination": "/index.html"
163
+ }
164
+ ]
165
+ }
166
+ ],
167
+ ```
168
+
169
+ If you have multiple build targets and deploy targets, it is possible to specify them in your `angular.json` or `workspace.json`.
170
+
171
+ It is possible to use either your project name or project alias in `siteTarget`.
172
+
173
+ You may specify a `siteTarget` in your `options` as follows:
174
+
175
+ ```json
176
+ "deploy": {
177
+ "builder": "@angular/fire:deploy",
178
+ "options": {
179
+ "buildTarget": "projectName:build",
180
+ "firebaseProject": "developmentProject",
181
+ "siteTarget": "yourDefaultSiteTarget"
182
+ },
183
+ "configurations": {
184
+ "production": {
185
+ "buildTarget": "projectName:build:production",
186
+ "firebaseProject": "productionProject",
187
+ "siteTarget": "yourProdSiteTarget"
188
+ },
189
+ "storybook": {
190
+ "buildTarget": "projectName:build-storybook",
191
+ "firebaseProject": "developmentProject",
192
+ "siteTarget": "yourStorybookSiteTarget"
193
+ }
194
+ }
195
+ }
196
+ ```
197
+
198
+ The above configuration specifies the following:
199
+
200
+ 1. `ng deploy` will deploy the default project with default configuration.
201
+ 2. `ng deploy projectName` will deploy the specified project with default configuration.
202
+ 3. `ng deploy projectName --configuration=storybook --siteTarget=mySiteTarget` will deploy `projectName` to `mySiteTarget` with configuration`storybook`.
203
+
204
+ All of the options are optional
@@ -103,7 +103,7 @@ In AngularFire v7 working with multiple instances was difficult, in the new SDK
103
103
 
104
104
  ```ts
105
105
  import { FirebaseApp, FirebaseApps } from '@angular/fire/app';
106
- import { Storage, StorageIsntances } from '@angular/fire/storage';
106
+ import { Storage, StorageInstances } from '@angular/fire/storage';
107
107
 
108
108
  export class Foo {
109
109
  constructor(
@@ -1,22 +1,27 @@
1
- import { NgModule, Optional, NgZone, InjectionToken, APP_INITIALIZER } from '@angular/core';
2
- import { isSupported } from 'firebase/analytics';
3
- import { ɵgetDefaultInstanceOf, ɵmemoizeInstance, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
1
+ import { NgModule, Optional, NgZone, InjectionToken, APP_INITIALIZER, Injector } from '@angular/core';
2
+ import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION, ɵisAnalyticsSupportedFactory } from '@angular/fire';
4
3
  import { Analytics, ANALYTICS_PROVIDER_NAME, AnalyticsInstances } from './analytics';
5
4
  import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
6
5
  import { registerVersion } from 'firebase/app';
6
+ import { ScreenTrackingService } from './screen-tracking.service';
7
+ import { UserTrackingService } from './user-tracking.service';
7
8
  import * as i0 from "@angular/core";
8
- const PROVIDED_ANALYTICS_INSTANCES = new InjectionToken('angularfire2.analytics-instances');
9
- const IS_SUPPORTED = new InjectionToken('angularfire2.analytics.isSupported');
10
- const isSupportedSymbol = Symbol('angularfire2.analytics.isSupported');
11
- export function defaultAnalyticsInstanceFactory(isSupported, provided, defaultApp) {
12
- const defaultAnalytics = isSupported ?
13
- ɵgetDefaultInstanceOf(ANALYTICS_PROVIDER_NAME, provided, defaultApp) :
14
- undefined;
15
- return new Analytics(defaultAnalytics);
9
+ import * as i1 from "./screen-tracking.service";
10
+ import * as i2 from "./user-tracking.service";
11
+ export const PROVIDED_ANALYTICS_INSTANCES = new InjectionToken('angularfire2.analytics-instances');
12
+ export function defaultAnalyticsInstanceFactory(provided, defaultApp) {
13
+ if (!ɵisAnalyticsSupportedFactory.sync()) {
14
+ return null;
15
+ }
16
+ const defaultAnalytics = ɵgetDefaultInstanceOf(ANALYTICS_PROVIDER_NAME, provided, defaultApp);
17
+ return defaultAnalytics && new Analytics(defaultAnalytics);
16
18
  }
17
19
  export function analyticsInstanceFactory(fn) {
18
- return (zone, isSupported) => {
19
- const analytics = isSupported ? ɵmemoizeInstance(fn, zone) : undefined;
20
+ return (zone, injector) => {
21
+ if (!ɵisAnalyticsSupportedFactory.sync()) {
22
+ return null;
23
+ }
24
+ const analytics = zone.runOutsideAngular(() => fn(injector));
20
25
  return new Analytics(analytics);
21
26
  };
22
27
  }
@@ -30,26 +35,25 @@ const DEFAULT_ANALYTICS_INSTANCE_PROVIDER = {
30
35
  provide: Analytics,
31
36
  useFactory: defaultAnalyticsInstanceFactory,
32
37
  deps: [
33
- IS_SUPPORTED,
34
38
  [new Optional(), PROVIDED_ANALYTICS_INSTANCES],
35
39
  FirebaseApp,
36
40
  ]
37
41
  };
38
42
  export class AnalyticsModule {
39
- constructor() {
43
+ constructor(_screenTrackingService, _userTrackingService) {
40
44
  registerVersion('angularfire', VERSION.full, 'analytics');
41
45
  }
42
46
  }
43
- AnalyticsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
47
+ AnalyticsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, deps: [{ token: i1.ScreenTrackingService, optional: true }, { token: i2.UserTrackingService, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
44
48
  AnalyticsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule });
45
49
  AnalyticsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, providers: [
46
50
  DEFAULT_ANALYTICS_INSTANCE_PROVIDER,
47
51
  ANALYTICS_INSTANCES_PROVIDER,
48
52
  {
49
53
  provide: APP_INITIALIZER,
50
- useValue: () => isSupported().then(it => globalThis[isSupportedSymbol] = it),
54
+ useValue: ɵisAnalyticsSupportedFactory.async,
51
55
  multi: true,
52
- },
56
+ }
53
57
  ] });
54
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, decorators: [{
55
59
  type: NgModule,
@@ -59,29 +63,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
59
63
  ANALYTICS_INSTANCES_PROVIDER,
60
64
  {
61
65
  provide: APP_INITIALIZER,
62
- useValue: () => isSupported().then(it => globalThis[isSupportedSymbol] = it),
66
+ useValue: ɵisAnalyticsSupportedFactory.async,
63
67
  multi: true,
64
- },
68
+ }
65
69
  ]
66
70
  }]
67
- }], ctorParameters: function () { return []; } });
68
- export function provideAnalytics(fn) {
71
+ }], ctorParameters: function () { return [{ type: i1.ScreenTrackingService, decorators: [{
72
+ type: Optional
73
+ }] }, { type: i2.UserTrackingService, decorators: [{
74
+ type: Optional
75
+ }] }]; } });
76
+ export function provideAnalytics(fn, ...deps) {
69
77
  return {
70
78
  ngModule: AnalyticsModule,
71
79
  providers: [{
72
- provide: IS_SUPPORTED,
73
- useFactory: () => globalThis[isSupportedSymbol],
74
- }, {
75
80
  provide: PROVIDED_ANALYTICS_INSTANCES,
76
81
  useFactory: analyticsInstanceFactory(fn),
77
82
  multi: true,
78
83
  deps: [
79
84
  NgZone,
80
- IS_SUPPORTED,
85
+ Injector,
81
86
  ɵAngularFireSchedulers,
82
87
  FirebaseApps,
88
+ ...deps,
83
89
  ]
84
90
  }]
85
91
  };
86
92
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvYW5hbHl0aWNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFrQyxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUUvQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFjLGtDQUFrQyxDQUFDLENBQUM7QUFDekcsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVUsb0NBQW9DLENBQUMsQ0FBQztBQUV2RixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0FBRXZFLE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxXQUFvQixFQUFFLFFBQXVDLEVBQUUsVUFBdUI7SUFDcEksTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsQ0FBQztRQUNwQyxxQkFBcUIsQ0FBb0IsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDekYsU0FBUyxDQUFDO0lBQ1osT0FBTyxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsRUFBMkI7SUFDbEUsT0FBTyxDQUFDLElBQVksRUFBRSxXQUFvQixFQUFFLEVBQUU7UUFDNUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBb0IsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDMUYsT0FBTyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSw0QkFBNEIsR0FBRztJQUNuQyxPQUFPLEVBQUUsa0JBQWtCO0lBQzNCLElBQUksRUFBRTtRQUNKLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSw0QkFBNEIsQ0FBRTtLQUNoRDtDQUNGLENBQUM7QUFFRixNQUFNLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFVBQVUsRUFBRSwrQkFBK0I7SUFDM0MsSUFBSSxFQUFFO1FBQ0osWUFBWTtRQUNaLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSw0QkFBNEIsQ0FBRTtRQUMvQyxXQUFXO0tBQ1o7Q0FDRixDQUFDO0FBYUYsTUFBTSxPQUFPLGVBQWU7SUFDMUI7UUFDRSxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7NEdBSFUsZUFBZTs2R0FBZixlQUFlOzZHQUFmLGVBQWUsYUFWZjtRQUNULG1DQUFtQztRQUNuQyw0QkFBNEI7UUFDNUI7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVFLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRjsyRkFFVSxlQUFlO2tCQVgzQixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVCxtQ0FBbUM7d0JBQ25DLDRCQUE0Qjt3QkFDNUI7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7NEJBQzVFLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOztBQU9ELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUEyQjtJQUMxRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLGVBQWU7UUFDekIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7YUFDaEQsRUFBRTtnQkFDRCxPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxVQUFVLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixZQUFZO29CQUNaLHNCQUFzQjtvQkFDdEIsWUFBWTtpQkFDYjthQUNGLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBPcHRpb25hbCwgTmdab25lLCBJbmplY3Rpb25Ub2tlbiwgTW9kdWxlV2l0aFByb3ZpZGVycywgQVBQX0lOSVRJQUxJWkVSIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmFseXRpY3MgYXMgRmlyZWJhc2VBbmFseXRpY3MsIGlzU3VwcG9ydGVkIH0gZnJvbSAnZmlyZWJhc2UvYW5hbHl0aWNzJztcbmltcG9ydCB7IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2YsIMm1bWVtb2l6ZUluc3RhbmNlLCDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycywgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNzLCBBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSwgQW5hbHl0aWNzSW5zdGFuY2VzIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBzLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5cbmNvbnN0IFBST1ZJREVEX0FOQUxZVElDU19JTlNUQU5DRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QW5hbHl0aWNzW10+KCdhbmd1bGFyZmlyZTIuYW5hbHl0aWNzLWluc3RhbmNlcycpO1xuY29uc3QgSVNfU1VQUE9SVEVEID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdhbmd1bGFyZmlyZTIuYW5hbHl0aWNzLmlzU3VwcG9ydGVkJyk7XG5cbmNvbnN0IGlzU3VwcG9ydGVkU3ltYm9sID0gU3ltYm9sKCdhbmd1bGFyZmlyZTIuYW5hbHl0aWNzLmlzU3VwcG9ydGVkJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0QW5hbHl0aWNzSW5zdGFuY2VGYWN0b3J5KGlzU3VwcG9ydGVkOiBib29sZWFuLCBwcm92aWRlZDogRmlyZWJhc2VBbmFseXRpY3NbXXx1bmRlZmluZWQsIGRlZmF1bHRBcHA6IEZpcmViYXNlQXBwKSB7XG4gIGNvbnN0IGRlZmF1bHRBbmFseXRpY3MgPSBpc1N1cHBvcnRlZCA/XG4gICAgybVnZXREZWZhdWx0SW5zdGFuY2VPZjxGaXJlYmFzZUFuYWx5dGljcz4oQU5BTFlUSUNTX1BST1ZJREVSX05BTUUsIHByb3ZpZGVkLCBkZWZhdWx0QXBwKSA6XG4gICAgdW5kZWZpbmVkO1xuICByZXR1cm4gbmV3IEFuYWx5dGljcyhkZWZhdWx0QW5hbHl0aWNzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShmbjogKCkgPT4gRmlyZWJhc2VBbmFseXRpY3MpIHtcbiAgcmV0dXJuICh6b25lOiBOZ1pvbmUsIGlzU3VwcG9ydGVkOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgYW5hbHl0aWNzID0gaXNTdXBwb3J0ZWQgPyDJtW1lbW9pemVJbnN0YW5jZTxGaXJlYmFzZUFuYWx5dGljcz4oZm4sIHpvbmUpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBuZXcgQW5hbHl0aWNzKGFuYWx5dGljcyk7XG4gIH07XG59XG5cbmNvbnN0IEFOQUxZVElDU19JTlNUQU5DRVNfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IEFuYWx5dGljc0luc3RhbmNlcyxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyBdLFxuICBdXG59O1xuXG5jb25zdCBERUZBVUxUX0FOQUxZVElDU19JTlNUQU5DRV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQW5hbHl0aWNzLFxuICB1c2VGYWN0b3J5OiBkZWZhdWx0QW5hbHl0aWNzSW5zdGFuY2VGYWN0b3J5LFxuICBkZXBzOiBbXG4gICAgSVNfU1VQUE9SVEVELFxuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyBdLFxuICAgIEZpcmViYXNlQXBwLFxuICBdXG59O1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX0FOQUxZVElDU19JTlNUQU5DRV9QUk9WSURFUixcbiAgICBBTkFMWVRJQ1NfSU5TVEFOQ0VTX1BST1ZJREVSLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZVZhbHVlOiAoKSA9PiBpc1N1cHBvcnRlZCgpLnRoZW4oaXQgPT4gZ2xvYmFsVGhpc1tpc1N1cHBvcnRlZFN5bWJvbF0gPSBpdCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFuYWx5dGljc01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdhbmFseXRpY3MnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFuYWx5dGljcyhmbjogKCkgPT4gRmlyZWJhc2VBbmFseXRpY3MpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuYWx5dGljc01vZHVsZT4ge1xuICByZXR1cm4ge1xuICAgIG5nTW9kdWxlOiBBbmFseXRpY3NNb2R1bGUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogSVNfU1VQUE9SVEVELFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gZ2xvYmFsVGhpc1tpc1N1cHBvcnRlZFN5bWJvbF0sXG4gICAgfSwge1xuICAgICAgcHJvdmlkZTogUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyxcbiAgICAgIHVzZUZhY3Rvcnk6IGFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShmbiksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgTmdab25lLFxuICAgICAgICBJU19TVVBQT1JURUQsXG4gICAgICAgIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLFxuICAgICAgICBGaXJlYmFzZUFwcHMsXG4gICAgICBdXG4gICAgfV1cbiAgfTtcbn1cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvYW5hbHl0aWNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFOUQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQWMsa0NBQWtDLENBQUMsQ0FBQztBQUVoSCxNQUFNLFVBQVUsK0JBQStCLENBQUMsUUFBdUMsRUFBRSxVQUF1QjtJQUM5RyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFBRSxPQUFPLElBQUksQ0FBQztLQUFFO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQW9CLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqSCxPQUFPLGdCQUFnQixJQUFJLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxFQUE2QztJQUNwRixPQUFPLENBQUMsSUFBWSxFQUFFLFFBQWtCLEVBQUUsRUFBRTtRQUMxQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztTQUFFO1FBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLDRCQUE0QixHQUFHO0lBQ25DLE9BQU8sRUFBRSxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDRCQUE0QixDQUFFO0tBQ2hEO0NBQ0YsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQUc7SUFDMUMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsNEJBQTRCLENBQUU7UUFDL0MsV0FBVztLQUNaO0NBQ0YsQ0FBQztBQWFGLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ2Msc0JBQTZDLEVBQzdDLG9CQUF5QztRQUVyRCxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7NEdBTlUsZUFBZTs2R0FBZixlQUFlOzZHQUFmLGVBQWUsYUFWZjtRQUNULG1DQUFtQztRQUNuQyw0QkFBNEI7UUFDNUI7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixRQUFRLEVBQUUsNEJBQTRCLENBQUMsS0FBSztZQUM1QyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Y7MkZBRVUsZUFBZTtrQkFYM0IsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsbUNBQW1DO3dCQUNuQyw0QkFBNEI7d0JBQzVCOzRCQUNFLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixRQUFRLEVBQUUsNEJBQTRCLENBQUMsS0FBSzs0QkFDNUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OzBCQUdJLFFBQVE7OzBCQUNSLFFBQVE7O0FBTWIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQTZDLEVBQUUsR0FBRyxJQUFXO0lBQzVGLE9BQU87UUFDTCxRQUFRLEVBQUUsZUFBZTtRQUN6QixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxVQUFVLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixRQUFRO29CQUNSLHNCQUFzQjtvQkFDdEIsWUFBWTtvQkFDWixHQUFHLElBQUk7aUJBQ1I7YUFDRixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgT3B0aW9uYWwsIE5nWm9uZSwgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIEFQUF9JTklUSUFMSVpFUiwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuYWx5dGljcyBhcyBGaXJlYmFzZUFuYWx5dGljcyB9IGZyb20gJ2ZpcmViYXNlL2FuYWx5dGljcyc7XG5pbXBvcnQgeyDJtWdldERlZmF1bHRJbnN0YW5jZU9mLCDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycywgVkVSU0lPTiwgybVpc0FuYWx5dGljc1N1cHBvcnRlZEZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IEFuYWx5dGljcywgQU5BTFlUSUNTX1BST1ZJREVSX05BTUUsIEFuYWx5dGljc0luc3RhbmNlcyB9IGZyb20gJy4vYW5hbHl0aWNzJztcbmltcG9ydCB7IEZpcmViYXNlQXBwcywgRmlyZWJhc2VBcHAgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcCc7XG5pbXBvcnQgeyByZWdpc3RlclZlcnNpb24gfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgU2NyZWVuVHJhY2tpbmdTZXJ2aWNlIH0gZnJvbSAnLi9zY3JlZW4tdHJhY2tpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyVHJhY2tpbmdTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXRyYWNraW5nLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBbmFseXRpY3NbXT4oJ2FuZ3VsYXJmaXJlMi5hbmFseXRpY3MtaW5zdGFuY2VzJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0QW5hbHl0aWNzSW5zdGFuY2VGYWN0b3J5KHByb3ZpZGVkOiBGaXJlYmFzZUFuYWx5dGljc1tdfHVuZGVmaW5lZCwgZGVmYXVsdEFwcDogRmlyZWJhc2VBcHApIHtcbiAgaWYgKCHJtWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgY29uc3QgZGVmYXVsdEFuYWx5dGljcyA9IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2Y8RmlyZWJhc2VBbmFseXRpY3M+KEFOQUxZVElDU19QUk9WSURFUl9OQU1FLCBwcm92aWRlZCwgZGVmYXVsdEFwcCk7XG4gIHJldHVybiBkZWZhdWx0QW5hbHl0aWNzICYmIG5ldyBBbmFseXRpY3MoZGVmYXVsdEFuYWx5dGljcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkoZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlQW5hbHl0aWNzKSB7XG4gIHJldHVybiAoem9uZTogTmdab25lLCBpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICBpZiAoIcm1aXNBbmFseXRpY3NTdXBwb3J0ZWRGYWN0b3J5LnN5bmMoKSkgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IGFuYWx5dGljcyA9IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gZm4oaW5qZWN0b3IpKTtcbiAgICByZXR1cm4gbmV3IEFuYWx5dGljcyhhbmFseXRpY3MpO1xuICB9O1xufVxuXG5jb25zdCBBTkFMWVRJQ1NfSU5TVEFOQ0VTX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBBbmFseXRpY3NJbnN0YW5jZXMsXG4gIGRlcHM6IFtcbiAgICBbbmV3IE9wdGlvbmFsKCksIFBST1ZJREVEX0FOQUxZVElDU19JTlNUQU5DRVMgXSxcbiAgXVxufTtcblxuY29uc3QgREVGQVVMVF9BTkFMWVRJQ1NfSU5TVEFOQ0VfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IEFuYWx5dGljcyxcbiAgdXNlRmFjdG9yeTogZGVmYXVsdEFuYWx5dGljc0luc3RhbmNlRmFjdG9yeSxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyBdLFxuICAgIEZpcmViYXNlQXBwLFxuICBdXG59O1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX0FOQUxZVElDU19JTlNUQU5DRV9QUk9WSURFUixcbiAgICBBTkFMWVRJQ1NfSU5TVEFOQ0VTX1BST1ZJREVSLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZVZhbHVlOiDJtWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeS5hc3luYyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBfc2NyZWVuVHJhY2tpbmdTZXJ2aWNlOiBTY3JlZW5UcmFja2luZ1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgX3VzZXJUcmFja2luZ1NlcnZpY2U6IFVzZXJUcmFja2luZ1NlcnZpY2UsXG4gICkge1xuICAgIHJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdhbmFseXRpY3MnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFuYWx5dGljcyhmbjogKGluamVjdG9yOiBJbmplY3RvcikgPT4gRmlyZWJhc2VBbmFseXRpY3MsIC4uLmRlcHM6IGFueVtdKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBbmFseXRpY3NNb2R1bGU+IHtcbiAgcmV0dXJuIHtcbiAgICBuZ01vZHVsZTogQW5hbHl0aWNzTW9kdWxlLFxuICAgIHByb3ZpZGVyczogW3tcbiAgICAgIHByb3ZpZGU6IFBST1ZJREVEX0FOQUxZVElDU19JTlNUQU5DRVMsXG4gICAgICB1c2VGYWN0b3J5OiBhbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkoZm4pLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICBkZXBzOiBbXG4gICAgICAgIE5nWm9uZSxcbiAgICAgICAgSW5qZWN0b3IsXG4gICAgICAgIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLFxuICAgICAgICBGaXJlYmFzZUFwcHMsXG4gICAgICAgIC4uLmRlcHMsXG4gICAgICBdXG4gICAgfV1cbiAgfTtcbn1cbiJdfQ==
@@ -1,14 +1,14 @@
1
1
  // DO NOT MODIFY, this file is autogenerated by tools/build.ts
2
2
  export * from 'firebase/analytics';
3
3
  import { ɵzoneWrap } from '@angular/fire';
4
- import { getAnalytics as _getAnalytics, initializeAnalytics as _initializeAnalytics, isSupported as _isSupported, logEvent as _logEvent, setAnalyticsCollectionEnabled as _setAnalyticsCollectionEnabled, setCurrentScreen as _setCurrentScreen, settings as _settings, setUserId as _setUserId, setUserProperties as _setUserProperties } from 'firebase/analytics';
4
+ import { getAnalytics as _getAnalytics, initializeAnalytics as _initializeAnalytics, logEvent as _logEvent, setAnalyticsCollectionEnabled as _setAnalyticsCollectionEnabled, setCurrentScreen as _setCurrentScreen, settings as _settings, setUserId as _setUserId, setUserProperties as _setUserProperties } from 'firebase/analytics';
5
+ export { isSupported } from './overrides';
5
6
  export const getAnalytics = ɵzoneWrap(_getAnalytics, true);
6
7
  export const initializeAnalytics = ɵzoneWrap(_initializeAnalytics, true);
7
- export const isSupported = ɵzoneWrap(_isSupported, true);
8
8
  export const logEvent = ɵzoneWrap(_logEvent, true);
9
9
  export const setAnalyticsCollectionEnabled = ɵzoneWrap(_setAnalyticsCollectionEnabled, true);
10
10
  export const setCurrentScreen = ɵzoneWrap(_setCurrentScreen, true);
11
11
  export const settings = ɵzoneWrap(_settings, true);
12
12
  export const setUserId = ɵzoneWrap(_setUserId, true);
13
13
  export const setUserProperties = ɵzoneWrap(_setUserProperties, true);
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5hbHl0aWNzL2ZpcmViYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhEQUE4RDtBQUM5RCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUNMLFlBQVksSUFBSSxhQUFhLEVBQzdCLG1CQUFtQixJQUFJLG9CQUFvQixFQUMzQyxXQUFXLElBQUksWUFBWSxFQUMzQixRQUFRLElBQUksU0FBUyxFQUNyQiw2QkFBNkIsSUFBSSw4QkFBOEIsRUFDL0QsZ0JBQWdCLElBQUksaUJBQWlCLEVBQ3JDLFFBQVEsSUFBSSxTQUFTLEVBQ3JCLFNBQVMsSUFBSSxVQUFVLEVBQ3ZCLGlCQUFpQixJQUFJLGtCQUFrQixFQUN4QyxNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxTQUFTLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0YsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIERPIE5PVCBNT0RJRlksIHRoaXMgZmlsZSBpcyBhdXRvZ2VuZXJhdGVkIGJ5IHRvb2xzL2J1aWxkLnRzXG5leHBvcnQgKiBmcm9tICdmaXJlYmFzZS9hbmFseXRpY3MnO1xuaW1wb3J0IHsgybV6b25lV3JhcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHtcbiAgZ2V0QW5hbHl0aWNzIGFzIF9nZXRBbmFseXRpY3MsXG4gIGluaXRpYWxpemVBbmFseXRpY3MgYXMgX2luaXRpYWxpemVBbmFseXRpY3MsXG4gIGlzU3VwcG9ydGVkIGFzIF9pc1N1cHBvcnRlZCxcbiAgbG9nRXZlbnQgYXMgX2xvZ0V2ZW50LFxuICBzZXRBbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZCBhcyBfc2V0QW5hbHl0aWNzQ29sbGVjdGlvbkVuYWJsZWQsXG4gIHNldEN1cnJlbnRTY3JlZW4gYXMgX3NldEN1cnJlbnRTY3JlZW4sXG4gIHNldHRpbmdzIGFzIF9zZXR0aW5ncyxcbiAgc2V0VXNlcklkIGFzIF9zZXRVc2VySWQsXG4gIHNldFVzZXJQcm9wZXJ0aWVzIGFzIF9zZXRVc2VyUHJvcGVydGllc1xufSBmcm9tICdmaXJlYmFzZS9hbmFseXRpY3MnO1xuXG5leHBvcnQgY29uc3QgZ2V0QW5hbHl0aWNzID0gybV6b25lV3JhcChfZ2V0QW5hbHl0aWNzLCB0cnVlKTtcbmV4cG9ydCBjb25zdCBpbml0aWFsaXplQW5hbHl0aWNzID0gybV6b25lV3JhcChfaW5pdGlhbGl6ZUFuYWx5dGljcywgdHJ1ZSk7XG5leHBvcnQgY29uc3QgaXNTdXBwb3J0ZWQgPSDJtXpvbmVXcmFwKF9pc1N1cHBvcnRlZCwgdHJ1ZSk7XG5leHBvcnQgY29uc3QgbG9nRXZlbnQgPSDJtXpvbmVXcmFwKF9sb2dFdmVudCwgdHJ1ZSk7XG5leHBvcnQgY29uc3Qgc2V0QW5hbHl0aWNzQ29sbGVjdGlvbkVuYWJsZWQgPSDJtXpvbmVXcmFwKF9zZXRBbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZCwgdHJ1ZSk7XG5leHBvcnQgY29uc3Qgc2V0Q3VycmVudFNjcmVlbiA9IMm1em9uZVdyYXAoX3NldEN1cnJlbnRTY3JlZW4sIHRydWUpO1xuZXhwb3J0IGNvbnN0IHNldHRpbmdzID0gybV6b25lV3JhcChfc2V0dGluZ3MsIHRydWUpO1xuZXhwb3J0IGNvbnN0IHNldFVzZXJJZCA9IMm1em9uZVdyYXAoX3NldFVzZXJJZCwgdHJ1ZSk7XG5leHBvcnQgY29uc3Qgc2V0VXNlclByb3BlcnRpZXMgPSDJtXpvbmVXcmFwKF9zZXRVc2VyUHJvcGVydGllcywgdHJ1ZSk7XG4iXX0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5hbHl0aWNzL2ZpcmViYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhEQUE4RDtBQUM5RCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUNMLFlBQVksSUFBSSxhQUFhLEVBQzdCLG1CQUFtQixJQUFJLG9CQUFvQixFQUMzQyxRQUFRLElBQUksU0FBUyxFQUNyQiw2QkFBNkIsSUFBSSw4QkFBOEIsRUFDL0QsZ0JBQWdCLElBQUksaUJBQWlCLEVBQ3JDLFFBQVEsSUFBSSxTQUFTLEVBQ3JCLFNBQVMsSUFBSSxVQUFVLEVBQ3ZCLGlCQUFpQixJQUFJLGtCQUFrQixFQUN4QyxNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFDTCxXQUFXLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFFckIsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0QsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLFNBQVMsQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3RixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRE8gTk9UIE1PRElGWSwgdGhpcyBmaWxlIGlzIGF1dG9nZW5lcmF0ZWQgYnkgdG9vbHMvYnVpbGQudHNcbmV4cG9ydCAqIGZyb20gJ2ZpcmViYXNlL2FuYWx5dGljcyc7XG5pbXBvcnQgeyDJtXpvbmVXcmFwIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQge1xuICBnZXRBbmFseXRpY3MgYXMgX2dldEFuYWx5dGljcyxcbiAgaW5pdGlhbGl6ZUFuYWx5dGljcyBhcyBfaW5pdGlhbGl6ZUFuYWx5dGljcyxcbiAgbG9nRXZlbnQgYXMgX2xvZ0V2ZW50LFxuICBzZXRBbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZCBhcyBfc2V0QW5hbHl0aWNzQ29sbGVjdGlvbkVuYWJsZWQsXG4gIHNldEN1cnJlbnRTY3JlZW4gYXMgX3NldEN1cnJlbnRTY3JlZW4sXG4gIHNldHRpbmdzIGFzIF9zZXR0aW5ncyxcbiAgc2V0VXNlcklkIGFzIF9zZXRVc2VySWQsXG4gIHNldFVzZXJQcm9wZXJ0aWVzIGFzIF9zZXRVc2VyUHJvcGVydGllc1xufSBmcm9tICdmaXJlYmFzZS9hbmFseXRpY3MnO1xuXG5leHBvcnQge1xuICBpc1N1cHBvcnRlZFxufSBmcm9tICcuL292ZXJyaWRlcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRBbmFseXRpY3MgPSDJtXpvbmVXcmFwKF9nZXRBbmFseXRpY3MsIHRydWUpO1xuZXhwb3J0IGNvbnN0IGluaXRpYWxpemVBbmFseXRpY3MgPSDJtXpvbmVXcmFwKF9pbml0aWFsaXplQW5hbHl0aWNzLCB0cnVlKTtcbmV4cG9ydCBjb25zdCBsb2dFdmVudCA9IMm1em9uZVdyYXAoX2xvZ0V2ZW50LCB0cnVlKTtcbmV4cG9ydCBjb25zdCBzZXRBbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZCA9IMm1em9uZVdyYXAoX3NldEFuYWx5dGljc0NvbGxlY3Rpb25FbmFibGVkLCB0cnVlKTtcbmV4cG9ydCBjb25zdCBzZXRDdXJyZW50U2NyZWVuID0gybV6b25lV3JhcChfc2V0Q3VycmVudFNjcmVlbiwgdHJ1ZSk7XG5leHBvcnQgY29uc3Qgc2V0dGluZ3MgPSDJtXpvbmVXcmFwKF9zZXR0aW5ncywgdHJ1ZSk7XG5leHBvcnQgY29uc3Qgc2V0VXNlcklkID0gybV6b25lV3JhcChfc2V0VXNlcklkLCB0cnVlKTtcbmV4cG9ydCBjb25zdCBzZXRVc2VyUHJvcGVydGllcyA9IMm1em9uZVdyYXAoX3NldFVzZXJQcm9wZXJ0aWVzLCB0cnVlKTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { ɵisAnalyticsSupportedFactory } from '@angular/fire';
2
+ export const isSupported = ɵisAnalyticsSupportedFactory.async;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuYWx5dGljcy9vdmVycmlkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyDJtWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuXG5leHBvcnQgY29uc3QgaXNTdXBwb3J0ZWQgPSDJtWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeS5hc3luYztcbiJdfQ==
@@ -1,4 +1,6 @@
1
1
  export { Analytics, AnalyticsInstances, analyticInstance$ } from './analytics';
2
2
  export { provideAnalytics, AnalyticsModule } from './analytics.module';
3
3
  export * from './firebase';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFuYWx5dGljcywgQW5hbHl0aWNzSW5zdGFuY2VzLCBhbmFseXRpY0luc3RhbmNlJCB9IGZyb20gJy4vYW5hbHl0aWNzJztcbmV4cG9ydCB7IHByb3ZpZGVBbmFseXRpY3MsIEFuYWx5dGljc01vZHVsZSB9IGZyb20gJy4vYW5hbHl0aWNzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpcmViYXNlJztcbiJdfQ==
4
+ export * from './screen-tracking.service';
5
+ export * from './user-tracking.service';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBbmFseXRpY3MsIEFuYWx5dGljc0luc3RhbmNlcywgYW5hbHl0aWNJbnN0YW5jZSQgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5leHBvcnQgeyBwcm92aWRlQW5hbHl0aWNzLCBBbmFseXRpY3NNb2R1bGUgfSBmcm9tICcuL2FuYWx5dGljcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9maXJlYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci10cmFja2luZy5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,139 @@
1
+ import { __awaiter } from "tslib";
2
+ import { ComponentFactoryResolver, Injectable, NgZone, Optional, Injector } from '@angular/core';
3
+ import { of } from 'rxjs';
4
+ import { distinctUntilChanged, filter, groupBy, map, mergeMap, pairwise, startWith, switchMap } from 'rxjs/operators';
5
+ import { ActivationEnd, Router, ɵEmptyOutletComponent } from '@angular/router';
6
+ import { Title } from '@angular/platform-browser';
7
+ import { VERSION } from '@angular/fire';
8
+ import { registerVersion } from 'firebase/app';
9
+ import { Analytics } from './analytics';
10
+ import { logEvent, isSupported } from './firebase';
11
+ import { UserTrackingService } from './user-tracking.service';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/router";
14
+ import * as i2 from "@angular/platform-browser";
15
+ import * as i3 from "./user-tracking.service";
16
+ const FIREBASE_EVENT_ORIGIN_KEY = 'firebase_event_origin';
17
+ const FIREBASE_PREVIOUS_SCREEN_CLASS_KEY = 'firebase_previous_class';
18
+ const FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY = 'firebase_previous_id';
19
+ const FIREBASE_PREVIOUS_SCREEN_NAME_KEY = 'firebase_previous_screen';
20
+ const FIREBASE_SCREEN_CLASS_KEY = 'firebase_screen_class';
21
+ const FIREBASE_SCREEN_INSTANCE_ID_KEY = 'firebase_screen_id';
22
+ const FIREBASE_SCREEN_NAME_KEY = 'firebase_screen';
23
+ const OUTLET_KEY = 'outlet';
24
+ const PAGE_PATH_KEY = 'page_path';
25
+ const PAGE_TITLE_KEY = 'page_title';
26
+ const SCREEN_CLASS_KEY = 'screen_class';
27
+ const SCREEN_NAME_KEY = 'screen_name';
28
+ const SCREEN_VIEW_EVENT = 'screen_view';
29
+ const EVENT_ORIGIN_AUTO = 'auto';
30
+ const SCREEN_INSTANCE_DELIMITER = '#';
31
+ // this is an INT64 in iOS/Android but use INT32 cause javascript
32
+ let nextScreenInstanceID = Math.floor(Math.random() * (Math.pow(2, 32) - 1)) - Math.pow(2, 31);
33
+ const knownScreenInstanceIDs = {};
34
+ const getScreenInstanceID = (params) => {
35
+ // unique the screen class against the outlet name
36
+ const screenInstanceKey = [
37
+ params[SCREEN_CLASS_KEY],
38
+ params[OUTLET_KEY]
39
+ ].join(SCREEN_INSTANCE_DELIMITER);
40
+ if (knownScreenInstanceIDs.hasOwnProperty(screenInstanceKey)) {
41
+ return knownScreenInstanceIDs[screenInstanceKey];
42
+ }
43
+ else {
44
+ const ret = nextScreenInstanceID++;
45
+ knownScreenInstanceIDs[screenInstanceKey] = ret;
46
+ return ret;
47
+ }
48
+ };
49
+ export const ɵscreenViewEvent = (router, title, componentFactoryResolver) => {
50
+ const activationEndEvents = router.events.pipe(filter(e => e instanceof ActivationEnd));
51
+ return activationEndEvents.pipe(switchMap(activationEnd => {
52
+ var _a;
53
+ // router parseUrl is having trouble with outlets when they're empty
54
+ // e.g, /asdf/1(bob://sally:asdf), so put another slash in when empty
55
+ const urlTree = router.parseUrl(router.url.replace(/(?:\().+(?:\))/g, a => a.replace('://', ':///')));
56
+ const pagePath = ((_a = urlTree.root.children[activationEnd.snapshot.outlet]) === null || _a === void 0 ? void 0 : _a.toString()) || '';
57
+ const actualSnapshot = router.routerState.root.children.map(it => it).find(it => it.outlet === activationEnd.snapshot.outlet);
58
+ if (!actualSnapshot) {
59
+ return of(null);
60
+ }
61
+ let actualDeep = actualSnapshot;
62
+ while (actualDeep.firstChild) {
63
+ actualDeep = actualDeep.firstChild;
64
+ }
65
+ const screenName = actualDeep.pathFromRoot.map(s => { var _a; return (_a = s.routeConfig) === null || _a === void 0 ? void 0 : _a.path; }).filter(it => it).join('/') || '/';
66
+ const params = {
67
+ [SCREEN_NAME_KEY]: screenName,
68
+ [PAGE_PATH_KEY]: `/${pagePath}`,
69
+ [FIREBASE_EVENT_ORIGIN_KEY]: EVENT_ORIGIN_AUTO,
70
+ [FIREBASE_SCREEN_NAME_KEY]: screenName,
71
+ [OUTLET_KEY]: activationEnd.snapshot.outlet
72
+ };
73
+ if (title) {
74
+ params[PAGE_TITLE_KEY] = title.getTitle();
75
+ }
76
+ let component = actualSnapshot.component;
77
+ if (component) {
78
+ if (component === ɵEmptyOutletComponent) {
79
+ let deepSnapshot = activationEnd.snapshot;
80
+ // TODO when might there be mutple children, different outlets? explore
81
+ while (deepSnapshot.firstChild) {
82
+ deepSnapshot = deepSnapshot.firstChild;
83
+ }
84
+ component = deepSnapshot.component;
85
+ }
86
+ }
87
+ else {
88
+ component = activationEnd.snapshot.component;
89
+ }
90
+ if (typeof component === 'string') {
91
+ return of(Object.assign(Object.assign({}, params), { [SCREEN_CLASS_KEY]: component }));
92
+ }
93
+ else if (component) {
94
+ const componentFactory = componentFactoryResolver.resolveComponentFactory(component);
95
+ return of(Object.assign(Object.assign({}, params), { [SCREEN_CLASS_KEY]: componentFactory.selector }));
96
+ }
97
+ // lazy loads cause extra activations, ignore
98
+ return of(null);
99
+ }), 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))));
100
+ };
101
+ export class ScreenTrackingService {
102
+ constructor(router, title, componentFactoryResolver, zone, userTrackingService, injector) {
103
+ registerVersion('angularfire', VERSION.full, 'screen-tracking');
104
+ // The APP_INITIALIZER that is making isSupported() sync for the sake of convenient DI
105
+ // may not be done when services are initialized. Guard the functionality by first ensuring
106
+ // that the (global) promise has resolved, then get Analytics from the injector.
107
+ isSupported().then(() => {
108
+ const analytics = injector.get(Analytics);
109
+ if (!router || !analytics) {
110
+ return;
111
+ }
112
+ zone.runOutsideAngular(() => {
113
+ this.disposable = ɵscreenViewEvent(router, title, componentFactoryResolver).pipe(switchMap((params) => __awaiter(this, void 0, void 0, function* () {
114
+ if (userTrackingService) {
115
+ yield userTrackingService.initialized;
116
+ }
117
+ return logEvent(analytics, SCREEN_VIEW_EVENT, params);
118
+ }))).subscribe();
119
+ });
120
+ });
121
+ }
122
+ ngOnDestroy() {
123
+ if (this.disposable) {
124
+ this.disposable.unsubscribe();
125
+ }
126
+ }
127
+ }
128
+ ScreenTrackingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService, deps: [{ token: i1.Router, optional: true }, { token: i2.Title, optional: true }, { token: i0.ComponentFactoryResolver }, { token: i0.NgZone }, { token: i3.UserTrackingService, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
129
+ ScreenTrackingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService });
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService, decorators: [{
131
+ type: Injectable
132
+ }], ctorParameters: function () { return [{ type: i1.Router, decorators: [{
133
+ type: Optional
134
+ }] }, { type: i2.Title, decorators: [{
135
+ type: Optional
136
+ }] }, { type: i0.ComponentFactoryResolver }, { type: i0.NgZone }, { type: i3.UserTrackingService, decorators: [{
137
+ type: Optional
138
+ }] }, { type: i0.Injector }]; } });
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXRyYWNraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5hbHl0aWNzL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxFQUFFLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFFOUQsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQztBQUMxRCxNQUFNLGtDQUFrQyxHQUFHLHlCQUF5QixDQUFDO0FBQ3JFLE1BQU0sd0NBQXdDLEdBQUcsc0JBQXNCLENBQUM7QUFDeEUsTUFBTSxpQ0FBaUMsR0FBRywwQkFBMEIsQ0FBQztBQUNyRSxNQUFNLHlCQUF5QixHQUFHLHVCQUF1QixDQUFD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QUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDOztrSEFsQ1UscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVTs7MEJBTU4sUUFBUTs7MEJBQ1IsUUFBUTs7MEJBR1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgSW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb2YsIFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZU1hcCwgcGFpcndpc2UsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aXZhdGlvbkVuZCwgUm91dGVyLCDJtUVtcHR5T3V0bGV0Q29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyByZWdpc3RlclZlcnNpb24gfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuXG5pbXBvcnQgeyBBbmFseXRpY3MgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBsb2dFdmVudCwgaXNTdXBwb3J0ZWQgfSBmcm9tICcuL2ZpcmViYXNlJztcbmltcG9ydCB7IFVzZXJUcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3VzZXItdHJhY2tpbmcuc2VydmljZSc7XG5cbmNvbnN0IEZJUkVCQVNFX0VWRU5UX09SSUdJTl9LRVkgPSAnZmlyZWJhc2VfZXZlbnRfb3JpZ2luJztcbmNvbnN0IEZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9DTEFTU19LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfY2xhc3MnO1xuY29uc3QgRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWSA9ICdmaXJlYmFzZV9wcmV2aW91c19pZCc7XG5jb25zdCBGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fTkFNRV9LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfc2NyZWVuJztcbmNvbnN0IEZJUkVCQVNFX1NDUkVFTl9DTEFTU19LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuX2NsYXNzJztcbmNvbnN0IEZJUkVCQVNFX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuX2lkJztcbmNvbnN0IEZJUkVCQVNFX1NDUkVFTl9OQU1FX0tFWSA9ICdmaXJlYmFzZV9zY3JlZW4nO1xuY29uc3QgT1VUTEVUX0tFWSA9ICdvdXRsZXQnO1xuY29uc3QgUEFHRV9QQVRIX0tFWSA9ICdwYWdlX3BhdGgnO1xuY29uc3QgUEFHRV9USVRMRV9LRVkgPSAncGFnZV90aXRsZSc7XG5jb25zdCBTQ1JFRU5fQ0xBU1NfS0VZID0gJ3NjcmVlbl9jbGFzcyc7XG5jb25zdCBTQ1JFRU5fTkFNRV9LRVkgPSAnc2NyZWVuX25hbWUnO1xuY29uc3QgU0NSRUVOX1ZJRVdfRVZFTlQgPSAnc2NyZWVuX3ZpZXcnO1xuY29uc3QgRVZFTlRfT1JJR0lOX0FVVE8gPSAnYXV0byc7XG5jb25zdCBTQ1JFRU5fSU5TVEFOQ0VfREVMSU1JVEVSID0gJyMnO1xuXG4vLyB0aGlzIGlzIGFuIElOVDY0IGluIGlPUy9BbmRyb2lkIGJ1dCB1c2UgSU5UMzIgY2F1c2UgamF2YXNjcmlwdFxubGV0IG5leHRTY3JlZW5JbnN0YW5jZUlEID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDIgKiogMzIgLSAxKSkgLSAyICoqIDMxO1xuXG5jb25zdCBrbm93blNjcmVlbkluc3RhbmNlSURzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cbmNvbnN0IGdldFNjcmVlbkluc3RhbmNlSUQgPSAocGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PiB7XG4gIC8vIHVuaXF1ZSB0aGUgc2NyZWVuIGNsYXNzIGFnYWluc3QgdGhlIG91dGxldCBuYW1lXG4gIGNvbnN0IHNjcmVlbkluc3RhbmNlS2V5ID0gW1xuICAgIHBhcmFtc1tTQ1JFRU5fQ0xBU1NfS0VZXSxcbiAgICBwYXJhbXNbT1VUTEVUX0tFWV1cbiAgXS5qb2luKFNDUkVFTl9JTlNUQU5DRV9ERUxJTUlURVIpO1xuICBpZiAoa25vd25TY3JlZW5JbnN0YW5jZUlEcy5oYXNPd25Qcm9wZXJ0eShzY3JlZW5JbnN0YW5jZUtleSkpIHtcbiAgICByZXR1cm4ga25vd25TY3JlZW5JbnN0YW5jZUlEc1tzY3JlZW5JbnN0YW5jZUtleV07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmV0ID0gbmV4dFNjcmVlbkluc3RhbmNlSUQrKztcbiAgICBrbm93blNjcmVlbkluc3RhbmNlSURzW3NjcmVlbkluc3RhbmNlS2V5XSA9IHJldDtcbiAgICByZXR1cm4gcmV0O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgybVzY3JlZW5WaWV3RXZlbnQgPSAoXG4gIHJvdXRlcjogUm91dGVyLFxuICB0aXRsZTogVGl0bGV8bnVsbCxcbiAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4pOiBPYnNlcnZhYmxlPHtcbiAgW1NDUkVFTl9OQU1FX0tFWV06IHN0cmluZyxcbiAgW1BBR0VfUEFUSF9LRVldOiBzdHJpbmcsXG4gIFtGSVJFQkFTRV9FVkVOVF9PUklHSU5fS0VZXTogJ2F1dG8nLFxuICBbRklSRUJBU0VfU0NSRUVOX05BTUVfS0VZXTogc3RyaW5nLFxuICBbT1VUTEVUX0tFWV06IHN0cmluZyxcbiAgW1BBR0VfVElUTEVfS0VZXT86IHN0cmluZyxcbiAgW1NDUkVFTl9DTEFTU19LRVldOiBzdHJpbmcsXG4gIFtGSVJFQkFTRV9TQ1JFRU5fQ0xBU1NfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV06IG51bWJlcixcbiAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9DTEFTU19LRVldOiBzdHJpbmcsXG4gIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fTkFNRV9LRVldOiBzdHJpbmcsXG4gIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZXTogbnVtYmVyLFxufT4gPT4ge1xuICBjb25zdCBhY3RpdmF0aW9uRW5kRXZlbnRzID0gcm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcjxBY3RpdmF0aW9uRW5kPihlID0+IGUgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSk7XG4gIHJldHVybiBhY3RpdmF0aW9uRW5kRXZlbnRzLnBpcGUoXG4gICAgc3dpdGNoTWFwPEFjdGl2YXRpb25FbmQsIE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgYW55PnxudWxsPj4oYWN0aXZhdGlvbkVuZCA9PiB7XG4gICAgICAvLyByb3V0ZXIgcGFyc2VVcmwgaXMgaGF2aW5nIHRyb3VibGUgd2l0aCBvdXRsZXRzIHdoZW4gdGhleSdyZSBlbXB0eVxuICAgICAgLy8gZS5nLCAvYXNkZi8xKGJvYjovL3NhbGx5OmFzZGYpLCBzbyBwdXQgYW5vdGhlciBzbGFzaCBpbiB3aGVuIGVtcHR5XG4gICAgICBjb25zdCB1cmxUcmVlID0gcm91dGVyLnBhcnNlVXJsKHJvdXRlci51cmwucmVwbGFjZSgvKD86XFwoKS4rKD86XFwpKS9nLCBhID0+IGEucmVwbGFjZSgnOi8vJywgJzovLy8nKSkpO1xuICAgICAgY29uc3QgcGFnZVBhdGggPSB1cmxUcmVlLnJvb3QuY2hpbGRyZW5bYWN0aXZhdGlvbkVuZC5zbmFwc2hvdC5vdXRsZXRdPy50b1N0cmluZygpIHx8ICcnO1xuICAgICAgY29uc3QgYWN0dWFsU25hcHNob3QgPSByb3V0ZXIucm91dGVyU3RhdGUucm9vdC5jaGlsZHJlbi5tYXAoaXQgPT4gaXQpLmZpbmQoaXQgPT4gaXQub3V0bGV0ID09PSBhY3RpdmF0aW9uRW5kLnNuYXBzaG90Lm91dGxldCk7XG5cbiAgICAgIGlmICghYWN0dWFsU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfVxuXG4gICAgICBsZXQgYWN0dWFsRGVlcCA9IGFjdHVhbFNuYXBzaG90O1xuICAgICAgd2hpbGUgKGFjdHVhbERlZXAuZmlyc3RDaGlsZCkge1xuICAgICAgICBhY3R1YWxEZWVwID0gYWN0dWFsRGVlcC5maXJzdENoaWxkO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2NyZWVuTmFtZSA9IGFjdHVhbERlZXAucGF0aEZyb21Sb290Lm1hcChzID0+IHMucm91dGVDb25maWc/LnBhdGgpLmZpbHRlcihpdCA9PiBpdCkuam9pbignLycpIHx8ICcvJztcblxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBbU0NSRUVOX05BTUVfS0VZXTogc2NyZWVuTmFtZSxcbiAgICAgICAgW1BBR0VfUEFUSF9LRVldOiBgLyR7cGFnZVBhdGh9YCxcbiAgICAgICAgW0ZJUkVCQVNFX0VWRU5UX09SSUdJTl9LRVldOiBFVkVOVF9PUklHSU5fQVVUTyxcbiAgICAgICAgW0ZJUkVCQVNFX1NDUkVFTl9OQU1FX0tFWV06IHNjcmVlbk5hbWUsXG4gICAgICAgIFtPVVRMRVRfS0VZXTogYWN0aXZhdGlvbkVuZC5zbmFwc2hvdC5vdXRsZXRcbiAgICAgIH07XG4gICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgcGFyYW1zW1BBR0VfVElUTEVfS0VZXSA9IHRpdGxlLmdldFRpdGxlKCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBjb21wb25lbnQgPSBhY3R1YWxTbmFwc2hvdC5jb21wb25lbnQ7XG4gICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgIGlmIChjb21wb25lbnQgPT09IMm1RW1wdHlPdXRsZXRDb21wb25lbnQpIHtcbiAgICAgICAgICBsZXQgZGVlcFNuYXBzaG90ID0gYWN0aXZhdGlvbkVuZC5zbmFwc2hvdDtcbiAgICAgICAgICAvLyBUT0RPIHdoZW4gbWlnaHQgdGhlcmUgYmUgbXV0cGxlIGNoaWxkcmVuLCBkaWZmZXJlbnQgb3V0bGV0cz8gZXhwbG9yZVxuICAgICAgICAgIHdoaWxlIChkZWVwU25hcHNob3QuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgZGVlcFNuYXBzaG90ID0gZGVlcFNuYXBzaG90LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbXBvbmVudCA9IGRlZXBTbmFwc2hvdC5jb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudCA9IGFjdGl2YXRpb25FbmQuc25hcHNob3QuY29tcG9uZW50O1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGNvbXBvbmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG9mKHsgLi4ucGFyYW1zLCBbU0NSRUVOX0NMQVNTX0tFWV06IGNvbXBvbmVudCB9KTtcbiAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KTtcbiAgICAgICAgcmV0dXJuIG9mKHsgLi4ucGFyYW1zLCBbU0NSRUVOX0NMQVNTX0tFWV06IGNvbXBvbmVudEZhY3Rvcnkuc2VsZWN0b3IgfSk7XG4gICAgICB9XG4gICAgICAvLyBsYXp5IGxvYWRzIGNhdXNlIGV4dHJhIGFjdGl2YXRpb25zLCBpZ25vcmVcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9KSxcbiAgICBmaWx0ZXIoaXQgPT4gISFpdCksXG4gICAgbWFwKHBhcmFtcyA9PiAoe1xuICAgICAgW0ZJUkVCQVNFX1NDUkVFTl9DTEFTU19LRVldOiBwYXJhbXNbU0NSRUVOX0NMQVNTX0tFWV0sXG4gICAgICBbRklSRUJBU0VfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV06IGdldFNjcmVlbkluc3RhbmNlSUQocGFyYW1zKSxcbiAgICAgIC4uLnBhcmFtc1xuICAgIH0pKSxcbiAgICBncm91cEJ5KGl0ID0+IGl0W09VVExFVF9LRVldKSxcbiAgICBtZXJnZU1hcChpdCA9PiBpdC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKSksXG4gICAgICBzdGFydFdpdGg8YW55LCBhbnk+KHVuZGVmaW5lZCksXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKChbcHJpb3IsIGN1cnJlbnRdKSA9PlxuICAgICAgICBwcmlvciA/IHtcbiAgICAgICAgICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0NMQVNTX0tFWV06IHByaW9yW1NDUkVFTl9DTEFTU19LRVldLFxuICAgICAgICAgIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fTkFNRV9LRVldOiBwcmlvcltTQ1JFRU5fTkFNRV9LRVldLFxuICAgICAgICAgIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZXTogcHJpb3JbRklSRUJBU0VfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV0sXG4gICAgICAgICAgLi4uY3VycmVudFxuICAgICAgICB9IDogY3VycmVudFxuICAgICAgKSxcbiAgICApKVxuICApO1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjcmVlblRyYWNraW5nU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBkaXNwb3NhYmxlOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcm91dGVyOiBSb3V0ZXIsXG4gICAgQE9wdGlvbmFsKCkgdGl0bGU6IFRpdGxlLFxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSB1c2VyVHJhY2tpbmdTZXJ2aWNlOiBVc2VyVHJhY2tpbmdTZXJ2aWNlLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7XG4gICAgcmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ3NjcmVlbi10cmFja2luZycpO1xuICAgIC8vIFRoZSBBUFBfSU5JVElBTElaRVIgdGhhdCBpcyBtYWtpbmcgaXNTdXBwb3J0ZWQoKSBzeW5jIGZvciB0aGUgc2FrZSBvZiBjb252ZW5pZW50IERJXG4gICAgLy8gbWF5IG5vdCBiZSBkb25lIHdoZW4gc2VydmljZXMgYXJlIGluaXRpYWxpemVkLiBHdWFyZCB0aGUgZnVuY3Rpb25hbGl0eSBieSBmaXJzdCBlbnN1cmluZ1xuICAgIC8vIHRoYXQgdGhlIChnbG9iYWwpIHByb21pc2UgaGFzIHJlc29sdmVkLCB0aGVuIGdldCBBbmFseXRpY3MgZnJvbSB0aGUgaW5qZWN0b3IuXG4gICAgaXNTdXBwb3J0ZWQoKS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGFuYWx5dGljcyA9IGluamVjdG9yLmdldChBbmFseXRpY3MpO1xuICAgICAgaWYgKCFyb3V0ZXIgfHwgIWFuYWx5dGljcykgeyByZXR1cm47IH1cbiAgICAgIHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmRpc3Bvc2FibGUgPSDJtXNjcmVlblZpZXdFdmVudChyb3V0ZXIsIHRpdGxlLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKGFzeW5jIHBhcmFtcyA9PiB7XG4gICAgICAgICAgICBpZiAodXNlclRyYWNraW5nU2VydmljZSkgeyBhd2FpdCB1c2VyVHJhY2tpbmdTZXJ2aWNlLmluaXRpYWxpemVkOyB9XG4gICAgICAgICAgICByZXR1cm4gbG9nRXZlbnQoYW5hbHl0aWNzLCBTQ1JFRU5fVklFV19FVkVOVCwgcGFyYW1zKTtcbiAgICAgICAgICB9KVxuICAgICAgICApLnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5kaXNwb3NhYmxlKSB7XG4gICAgICB0aGlzLmRpc3Bvc2FibGUudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxufVxuIl19
@@ -0,0 +1,43 @@
1
+ import { Injectable, Injector, NgZone } from '@angular/core';
2
+ import { VERSION } from '@angular/fire';
3
+ import { Auth, authState } from '@angular/fire/auth';
4
+ import { registerVersion } from 'firebase/app';
5
+ import { Analytics } from './analytics';
6
+ import { setUserId, isSupported } from './firebase';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/fire/auth";
9
+ export class UserTrackingService {
10
+ constructor(auth, zone, injector) {
11
+ this.disposables = [];
12
+ registerVersion('angularfire', VERSION.full, 'user-tracking');
13
+ let resolveInitialized;
14
+ this.initialized = zone.runOutsideAngular(() => new Promise(resolve => { resolveInitialized = resolve; }));
15
+ // The APP_INITIALIZER that is making isSupported() sync for the sake of convenient DI
16
+ // may not be done when services are initialized. Guard the functionality by first ensuring
17
+ // that the (global) promise has resolved, then get Analytics from the injector.
18
+ isSupported().then(() => {
19
+ const analytics = injector.get(Analytics);
20
+ if (analytics) {
21
+ this.disposables = [
22
+ // TODO add credential tracking back in
23
+ authState(auth).subscribe(user => {
24
+ setUserId(analytics, user === null || user === void 0 ? void 0 : user.uid);
25
+ resolveInitialized();
26
+ }),
27
+ ];
28
+ }
29
+ else {
30
+ resolveInitialized();
31
+ }
32
+ });
33
+ }
34
+ ngOnDestroy() {
35
+ this.disposables.forEach(it => it.unsubscribe());
36
+ }
37
+ }
38
+ UserTrackingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: UserTrackingService, deps: [{ token: i1.Auth }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
39
+ UserTrackingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: UserTrackingService });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: UserTrackingService, decorators: [{
41
+ type: Injectable
42
+ }], ctorParameters: function () { return [{ type: i1.Auth }, { type: i0.NgZone }, { type: i0.Injector }]; } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci10cmFja2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuYWx5dGljcy91c2VyLXRyYWNraW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQUdwRCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQ0UsSUFBVSxFQUNWLElBQVksRUFDWixRQUFrQjtRQUxaLGdCQUFXLEdBQXdCLEVBQUUsQ0FBQztRQU81QyxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDOUQsSUFBSSxrQkFBOEIsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csc0ZBQXNGO1FBQ3RGLDJGQUEyRjtRQUMzRixnRkFBZ0Y7UUFDaEYsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxXQUFXLEdBQUc7b0JBQ2pCLHVDQUF1QztvQkFDdkMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDL0IsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ2hDLGtCQUFrQixFQUFFLENBQUM7b0JBQ3ZCLENBQUMsQ0FBQztpQkFDSCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsa0JBQWtCLEVBQUUsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O2dIQWxDVSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IEF1dGgsIGF1dGhTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXV0aCc7XG5pbXBvcnQgeyByZWdpc3RlclZlcnNpb24gfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuXG5pbXBvcnQgeyBBbmFseXRpY3MgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBzZXRVc2VySWQsIGlzU3VwcG9ydGVkIH0gZnJvbSAnLi9maXJlYmFzZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyVHJhY2tpbmdTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgaW5pdGlhbGl6ZWQ6IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgZGlzcG9zYWJsZXM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhdXRoOiBBdXRoLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICkge1xuICAgIHJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICd1c2VyLXRyYWNraW5nJyk7XG4gICAgbGV0IHJlc29sdmVJbml0aWFsaXplZDogKCkgPT4gdm9pZDtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsgcmVzb2x2ZUluaXRpYWxpemVkID0gcmVzb2x2ZTsgfSkpO1xuICAgIC8vIFRoZSBBUFBfSU5JVElBTElaRVIgdGhhdCBpcyBtYWtpbmcgaXNTdXBwb3J0ZWQoKSBzeW5jIGZvciB0aGUgc2FrZSBvZiBjb252ZW5pZW50IERJXG4gICAgLy8gbWF5IG5vdCBiZSBkb25lIHdoZW4gc2VydmljZXMgYXJlIGluaXRpYWxpemVkLiBHdWFyZCB0aGUgZnVuY3Rpb25hbGl0eSBieSBmaXJzdCBlbnN1cmluZ1xuICAgIC8vIHRoYXQgdGhlIChnbG9iYWwpIHByb21pc2UgaGFzIHJlc29sdmVkLCB0aGVuIGdldCBBbmFseXRpY3MgZnJvbSB0aGUgaW5qZWN0b3IuXG4gICAgaXNTdXBwb3J0ZWQoKS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGFuYWx5dGljcyA9IGluamVjdG9yLmdldChBbmFseXRpY3MpO1xuICAgICAgaWYgKGFuYWx5dGljcykge1xuICAgICAgICB0aGlzLmRpc3Bvc2FibGVzID0gW1xuICAgICAgICAgIC8vIFRPRE8gYWRkIGNyZWRlbnRpYWwgdHJhY2tpbmcgYmFjayBpblxuICAgICAgICAgIGF1dGhTdGF0ZShhdXRoKS5zdWJzY3JpYmUodXNlciA9PiB7XG4gICAgICAgICAgICBzZXRVc2VySWQoYW5hbHl0aWNzLCB1c2VyPy51aWQpO1xuICAgICAgICAgICAgcmVzb2x2ZUluaXRpYWxpemVkKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlSW5pdGlhbGl6ZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMuZm9yRWFjaChpdCA9PiBpdC51bnN1YnNjcmliZSgpKTtcbiAgfVxufVxuIl19