@angular/fire 16.0.0-canary.e04cd7f → 16.0.0
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/README.md +200 -0
- package/analytics/analytics.module.d.ts +2 -2
- package/analytics/firebase.d.ts +4 -1
- package/analytics/screen-tracking.service.d.ts +3 -3
- package/app-check/app-check.d.ts +0 -6
- package/app-check/app-check.module.d.ts +3 -4
- package/app-check/firebase.d.ts +2 -1
- package/app-check/public_api.d.ts +2 -1
- package/auth/auth.module.d.ts +2 -2
- package/auth/firebase.d.ts +3 -1
- package/auth-guard/auth-guard.d.ts +2 -2
- package/compat/analytics/analytics.d.ts +1 -3
- package/compat/analytics/analytics.module.d.ts +1 -1
- package/compat/analytics/screen-tracking.service.d.ts +1 -1
- package/compat/analytics/user-tracking.service.d.ts +1 -1
- package/compat/auth/auth.d.ts +3 -3
- package/compat/auth-guard/auth-guard.d.ts +2 -2
- package/compat/database/database.d.ts +4 -4
- package/compat/database/interfaces.d.ts +2 -2
- package/compat/database/list/audit-trail.d.ts +1 -1
- package/compat/database/list/create-reference.d.ts +1 -1
- package/compat/database/list/data-operation.d.ts +1 -1
- package/compat/database/list/state-changes.d.ts +1 -1
- package/compat/database/object/create-reference.d.ts +1 -1
- package/compat/database/observable/fromRef.d.ts +1 -1
- package/compat/database/utils.d.ts +1 -1
- package/compat/firebase.app.module.d.ts +1 -1
- package/compat/firestore/collection/collection.d.ts +2 -2
- package/compat/firestore/collection-group/collection-group.d.ts +2 -2
- package/compat/firestore/document/document.d.ts +4 -4
- package/compat/firestore/firestore.d.ts +7 -7
- package/compat/firestore/interfaces.d.ts +2 -2
- package/compat/functions/functions.d.ts +3 -3
- package/compat/messaging/messaging.d.ts +2 -2
- package/compat/performance/performance.d.ts +2 -2
- package/compat/remote-config/remote-config.d.ts +15 -49
- package/compat/storage/observable/fromTask.d.ts +1 -2
- package/compat/storage/ref.d.ts +1 -1
- package/compat/storage/storage.d.ts +3 -3
- package/compat/storage/task.d.ts +1 -1
- package/core.d.ts +7 -0
- package/database/database.module.d.ts +2 -2
- package/docs/analytics.md +67 -0
- package/docs/app-check.md +53 -0
- package/docs/auth.md +165 -0
- package/docs/compat/analytics/getting-started.md +137 -0
- package/docs/compat/auth/getting-started.md +162 -0
- package/docs/compat/auth/router-guards.md +104 -0
- package/docs/compat/emulators/emulators.md +134 -0
- package/docs/compat/firestore/collections.md +326 -0
- package/docs/compat/firestore/documents.md +115 -0
- package/docs/compat/firestore/offline-data.md +39 -0
- package/docs/compat/firestore/querying-collections.md +204 -0
- package/docs/compat/functions/functions.md +166 -0
- package/docs/compat/messaging/messaging.md +232 -0
- package/docs/compat/performance/getting-started.md +132 -0
- package/docs/compat/remote-config/getting-started.md +134 -0
- package/docs/compat/rtdb/lists.md +257 -0
- package/docs/compat/rtdb/objects.md +182 -0
- package/docs/compat/rtdb/querying-lists.md +155 -0
- package/docs/compat/storage/storage.md +257 -0
- package/docs/compat.md +70 -0
- package/docs/database.md +175 -0
- package/docs/deploy/getting-started.md +204 -0
- package/docs/firebase.json +16 -0
- package/docs/firestore.md +148 -0
- package/docs/functions.md +52 -0
- package/docs/images/analytics-illo_1x.png +0 -0
- package/docs/images/auth-illo_1x.png +0 -0
- package/docs/images/cloud-messaging-illo_1x.png +0 -0
- package/docs/images/database-illo_1x.png +0 -0
- package/docs/images/firestore-illo_1x.png +0 -0
- package/docs/images/functions-illo_1x.png +0 -0
- package/docs/images/hosting-illo_1x.png +0 -0
- package/docs/images/performance-illo_1x.png +0 -0
- package/docs/images/reCAPTCHA-logo@1x.png +0 -0
- package/docs/images/remote-config-illo_1x.png +0 -0
- package/docs/images/storage-illo_1x.png +0 -0
- package/docs/install-and-setup.md +114 -0
- package/docs/install-angular-cli-windows10.md +82 -0
- package/docs/install-firebase-tools.md +78 -0
- package/docs/messaging.md +25 -0
- package/docs/performance.md +57 -0
- package/docs/remote-config.md +53 -0
- package/docs/storage.md +90 -0
- package/docs/universal/cloud-functions.md +96 -0
- package/docs/universal/getting-started.md +28 -0
- package/docs/universal/prerendering.md +72 -0
- package/docs/version-4-upgrade.md +119 -0
- package/docs/version-5-upgrade.md +82 -0
- package/docs/version-6-upgrade.md +16 -0
- package/docs/version-7-upgrade.md +298 -0
- package/esm2022/analytics/analytics.mjs +1 -1
- package/esm2022/analytics/analytics.module.mjs +10 -10
- package/esm2022/analytics/firebase.mjs +5 -2
- package/esm2022/analytics/screen-tracking.service.mjs +11 -10
- package/esm2022/analytics/user-tracking.service.mjs +5 -5
- package/esm2022/app/app.mjs +1 -1
- package/esm2022/app/app.module.mjs +9 -8
- package/esm2022/app-check/app-check.mjs +3 -9
- package/esm2022/app-check/app-check.module.mjs +12 -14
- package/esm2022/app-check/firebase.mjs +3 -2
- package/esm2022/app-check/public_api.mjs +3 -2
- package/esm2022/auth/auth.mjs +1 -1
- package/esm2022/auth/auth.module.mjs +11 -11
- package/esm2022/auth/firebase.mjs +4 -2
- package/esm2022/auth-guard/auth-guard.mjs +8 -6
- package/esm2022/auth-guard/auth-guard.module.mjs +7 -7
- package/esm2022/compat/analytics/analytics.mjs +12 -13
- package/esm2022/compat/analytics/analytics.module.mjs +14 -11
- package/esm2022/compat/analytics/screen-tracking.service.mjs +9 -9
- package/esm2022/compat/analytics/user-tracking.service.mjs +7 -7
- package/esm2022/compat/auth/auth.mjs +13 -13
- package/esm2022/compat/auth/auth.module.mjs +7 -7
- package/esm2022/compat/auth-guard/auth-guard.mjs +8 -6
- package/esm2022/compat/auth-guard/auth-guard.module.mjs +7 -7
- package/esm2022/compat/cache.mjs +2 -1
- package/esm2022/compat/database/database.mjs +10 -10
- package/esm2022/compat/database/database.module.mjs +7 -7
- package/esm2022/compat/database/interfaces.mjs +1 -1
- package/esm2022/compat/database/list/audit-trail.mjs +3 -3
- package/esm2022/compat/database/list/changes.mjs +5 -5
- package/esm2022/compat/database/list/create-reference.mjs +5 -5
- package/esm2022/compat/database/list/data-operation.mjs +1 -1
- package/esm2022/compat/database/list/snapshot-changes.mjs +1 -1
- package/esm2022/compat/database/list/state-changes.mjs +2 -2
- package/esm2022/compat/database/object/create-reference.mjs +2 -2
- package/esm2022/compat/database/object/snapshot-changes.mjs +1 -1
- package/esm2022/compat/database/observable/fromRef.mjs +3 -2
- package/esm2022/compat/database/utils.mjs +1 -1
- package/esm2022/compat/firebase.app.mjs +1 -1
- package/esm2022/compat/firebase.app.module.mjs +11 -9
- package/esm2022/compat/firestore/collection/changes.mjs +2 -2
- package/esm2022/compat/firestore/collection/collection.mjs +4 -4
- package/esm2022/compat/firestore/collection-group/collection-group.mjs +4 -4
- package/esm2022/compat/firestore/document/document.mjs +4 -4
- package/esm2022/compat/firestore/firestore.mjs +11 -11
- package/esm2022/compat/firestore/firestore.module.mjs +7 -7
- package/esm2022/compat/firestore/interfaces.mjs +1 -1
- package/esm2022/compat/firestore/observable/fromRef.mjs +2 -2
- package/esm2022/compat/functions/functions.mjs +8 -8
- package/esm2022/compat/functions/functions.module.mjs +7 -7
- package/esm2022/compat/messaging/messaging.mjs +13 -12
- package/esm2022/compat/messaging/messaging.module.mjs +7 -7
- package/esm2022/compat/performance/performance.mjs +14 -20
- package/esm2022/compat/performance/performance.module.mjs +8 -9
- package/esm2022/compat/performance/performance.service.mjs +5 -4
- package/esm2022/compat/proxy.mjs +6 -7
- package/esm2022/compat/remote-config/remote-config.mjs +10 -11
- package/esm2022/compat/remote-config/remote-config.module.mjs +7 -7
- package/esm2022/compat/storage/observable/fromTask.mjs +3 -1
- package/esm2022/compat/storage/pipes/storageUrl.pipe.mjs +9 -9
- package/esm2022/compat/storage/ref.mjs +3 -3
- package/esm2022/compat/storage/storage.mjs +8 -8
- package/esm2022/compat/storage/storage.module.mjs +7 -7
- package/esm2022/compat/storage/task.mjs +2 -2
- package/esm2022/core.mjs +7 -1
- package/esm2022/database/database.mjs +1 -1
- package/esm2022/database/database.module.mjs +11 -11
- package/esm2022/firestore/firebase.mjs +22 -2
- package/esm2022/firestore/firestore.mjs +1 -1
- package/esm2022/firestore/firestore.module.mjs +11 -11
- package/esm2022/firestore/lite/firebase.mjs +11 -2
- package/esm2022/firestore/lite/lite.mjs +1 -1
- package/esm2022/firestore/lite/lite.module.mjs +10 -11
- package/esm2022/firestore/lite/rxfire.mjs +4 -2
- package/esm2022/firestore/rxfire.mjs +4 -4
- package/esm2022/functions/functions.mjs +1 -1
- package/esm2022/functions/functions.module.mjs +11 -11
- package/esm2022/messaging/messaging.mjs +1 -1
- package/esm2022/messaging/messaging.module.mjs +9 -9
- package/esm2022/performance/performance.mjs +1 -1
- package/esm2022/performance/performance.module.mjs +12 -12
- package/esm2022/remote-config/is-remote-config-supported-factory.mjs +2 -2
- package/esm2022/remote-config/remote-config.mjs +1 -1
- package/esm2022/remote-config/remote-config.module.mjs +9 -9
- package/esm2022/storage/storage.mjs +1 -1
- package/esm2022/storage/storage.module.mjs +11 -11
- package/esm2022/zones.mjs +9 -11
- package/fesm2022/angular-fire-analytics.mjs +18 -14
- package/fesm2022/angular-fire-analytics.mjs.map +1 -1
- package/fesm2022/angular-fire-app-check.mjs +13 -19
- package/fesm2022/angular-fire-app-check.mjs.map +1 -1
- package/fesm2022/angular-fire-app.mjs +6 -5
- package/fesm2022/angular-fire-app.mjs.map +1 -1
- package/fesm2022/angular-fire-auth-guard.mjs +13 -11
- package/fesm2022/angular-fire-auth-guard.mjs.map +1 -1
- package/fesm2022/angular-fire-auth.mjs +10 -9
- package/fesm2022/angular-fire-auth.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-analytics.mjs +29 -27
- package/fesm2022/angular-fire-compat-analytics.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-auth-guard.mjs +12 -10
- package/fesm2022/angular-fire-compat-auth-guard.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-auth.mjs +13 -13
- package/fesm2022/angular-fire-compat-auth.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-database.mjs +129 -128
- package/fesm2022/angular-fire-compat-database.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-firestore.mjs +96 -96
- package/fesm2022/angular-fire-compat-firestore.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-functions.mjs +10 -10
- package/fesm2022/angular-fire-compat-functions.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-messaging.mjs +13 -12
- package/fesm2022/angular-fire-compat-messaging.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-performance.mjs +23 -29
- package/fesm2022/angular-fire-compat-performance.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-remote-config.mjs +10 -11
- package/fesm2022/angular-fire-compat-remote-config.mjs.map +1 -1
- package/fesm2022/angular-fire-compat-storage.mjs +21 -19
- package/fesm2022/angular-fire-compat-storage.mjs.map +1 -1
- package/fesm2022/angular-fire-compat.mjs +15 -13
- package/fesm2022/angular-fire-compat.mjs.map +1 -1
- package/fesm2022/angular-fire-database.mjs +7 -8
- package/fesm2022/angular-fire-database.mjs.map +1 -1
- package/fesm2022/angular-fire-firestore-lite.mjs +21 -11
- package/fesm2022/angular-fire-firestore-lite.mjs.map +1 -1
- package/fesm2022/angular-fire-firestore.mjs +32 -13
- package/fesm2022/angular-fire-firestore.mjs.map +1 -1
- package/fesm2022/angular-fire-functions.mjs +8 -9
- package/fesm2022/angular-fire-functions.mjs.map +1 -1
- package/fesm2022/angular-fire-messaging.mjs +4 -4
- package/fesm2022/angular-fire-messaging.mjs.map +1 -1
- package/fesm2022/angular-fire-performance.mjs +7 -7
- package/fesm2022/angular-fire-performance.mjs.map +1 -1
- package/fesm2022/angular-fire-remote-config.mjs +4 -4
- package/fesm2022/angular-fire-remote-config.mjs.map +1 -1
- package/fesm2022/angular-fire-storage.mjs +6 -7
- package/fesm2022/angular-fire-storage.mjs.map +1 -1
- package/fesm2022/angular-fire.mjs +14 -10
- package/fesm2022/angular-fire.mjs.map +1 -1
- package/firestore/firebase.d.ts +21 -1
- package/firestore/firestore.module.d.ts +2 -2
- package/firestore/lite/firebase.d.ts +10 -1
- package/firestore/lite/lite.module.d.ts +2 -2
- package/firestore/lite/rxfire.d.ts +3 -1
- package/firestore/rxfire.d.ts +3 -3
- package/functions/functions.module.d.ts +2 -2
- package/messaging/messaging.module.d.ts +2 -2
- package/package.json +18 -18
- package/performance/performance.module.d.ts +2 -2
- package/remote-config/remote-config.module.d.ts +2 -2
- package/schematics/add/index.js +1 -1
- package/schematics/add/schema.json +16 -0
- package/schematics/builders.json +10 -0
- package/schematics/collection.json +15 -0
- package/schematics/common.js +1 -1
- package/schematics/deploy/actions.js +11 -11
- package/schematics/deploy/builder.js +2 -2
- package/schematics/deploy/schema.json +119 -0
- package/schematics/interfaces.js +9 -8
- package/schematics/migration.json +15 -0
- package/schematics/setup/index.js +33 -50
- package/schematics/setup/prompts.js +5 -6
- package/schematics/setup/schema.json +16 -0
- package/schematics/update/index.js +1 -1
- package/schematics/update/v7/index.js +2 -2
- package/schematics/utils.js +79 -63
- package/storage/storage.module.d.ts +2 -2
- package/publish.sh +0 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Upgrading to AngularFire 5.0
|
|
2
|
+
|
|
3
|
+
AngularFire 5.0 is a refactor of the `AngularFireDatabase` module. It removes the `FirebaseListObservable` and `FirebaseObjectObservable` in favor of a generic based service API.
|
|
4
|
+
|
|
5
|
+
## Updating `FirebaseListObservable` to `AngularFireList<T>`
|
|
6
|
+
|
|
7
|
+
Rather than `.list()` returning a `FirebaseListObservable`, it now returns an `AngularFireList<T>`. This service contains methods that allow you to manipulate and stream data.
|
|
8
|
+
|
|
9
|
+
In the case of streaming back data, you now call one of the observable methods on `AngularFireList`.
|
|
10
|
+
|
|
11
|
+
### 4.0
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
constructor(afDb: AngularFireDatabase) {
|
|
15
|
+
afDb.list('items').subscribe(console.log);
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 5.0
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
constructor(afDb: AngularFireDatabase) {
|
|
23
|
+
afDb.list<Item>('items').valueChanges().subscribe(console.log);
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The same concepts apply to `FirebaseObjectObservable` to `AngularFireObject`.
|
|
28
|
+
|
|
29
|
+
## Moving away from `$key` and `$value`
|
|
30
|
+
|
|
31
|
+
In AngularFireDatabase 4.0 the snapshot was automatically unwrapped for you and metadata was placed in `$` property. The Firebase Database rejects any keys with `$` in them so this mechanism allowed us to provide you with important metadata alongside your actual data. However, persisting the object could be a pain in some cases as the SDK would reject any `$` based properties. In 5.0 we have moved away from `$` properties and we provide multiple observable methods for receiving the data.
|
|
32
|
+
|
|
33
|
+
Calling `.valueChanges()` returns an Observable without any metadata. If you are already persisting the key as a property then you are fine. However, if you are relying on `$key`, then you need to use `.snapshotChanges()` and transform the data with an observable `.map()`.
|
|
34
|
+
|
|
35
|
+
### 4.0
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
constructor(afDb: AngularFireDatabase) {
|
|
39
|
+
afDb.list('items').subscribe(items => {
|
|
40
|
+
const allKeys = items.map(item => item.$key);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 5.0
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
constructor(afDb: AngularFireDatabase) {
|
|
49
|
+
afDb.list('items').snapshotChanges().pipe(
|
|
50
|
+
map(actions =>
|
|
51
|
+
actions.map(a => ({ key: a.key, ...a.payload.val() }))
|
|
52
|
+
)
|
|
53
|
+
).subscribe(items => {
|
|
54
|
+
return items.map(item => item.key);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Data manipulation methods
|
|
60
|
+
|
|
61
|
+
AngularFire 5.0 removes all custom observables which means their custom operators are gone as well. Instead of using custom operators on either a `FirebaseListObservable` or a `FirebaseObjectObservable`, use the methods on the service based APIs: `AngularFireList` and `AngularFireObject`. There is no resulting code change, but it worth pointing out.
|
|
62
|
+
|
|
63
|
+
### 4.0
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
constructor(afDb: AngularFireDatabase) {
|
|
67
|
+
const listObservable = afDb.list('items');
|
|
68
|
+
listObservable.push({ name: 'item' });
|
|
69
|
+
listObservable.subscribe();
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 5.0
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
constructor(afDb: AngularFireDatabase) {
|
|
77
|
+
const afList = afDb.list('items');
|
|
78
|
+
afList.push({ name: 'item' });
|
|
79
|
+
const listObservable = afList.snapshotChanges();
|
|
80
|
+
listObservable.subscribe();
|
|
81
|
+
}
|
|
82
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Upgrading to AngularFire 6.0
|
|
2
|
+
|
|
3
|
+
Intended to be run with Angular 9; version 6 of AngularFire drops support for Angular version 8 and below, older versions of typescript, Firebase, drops `firebase-node`, `database-deprecated`, and more.
|
|
4
|
+
|
|
5
|
+
## Breaking changes:
|
|
6
|
+
|
|
7
|
+
* Support for Angular versions less than 9 has been dropped
|
|
8
|
+
* Support for Firebase JS SDK versions less than 7.13.1 has been dropped
|
|
9
|
+
* Support for `firebase-tools` less than 8.0 has been dropped
|
|
10
|
+
* The `angularfire2` NPM library will no longer be updated
|
|
11
|
+
* Dropped `@angular/fire/firebase-node` and `@angular/fire/database-depreciated`
|
|
12
|
+
* We make use of Proxy in more modules, you'll need to polyfill if you want to support IE 11
|
|
13
|
+
* We've standardized our DI Token naming conventions across all modules
|
|
14
|
+
* `AngularFireAuth` has dropped the `auth` property and instead Promise Proxies the underlying Firebase `auth.Auth` instance; allowing your development experience to more closely mirror the JS SDK. Similar changes have been made to `AngularFireFunctions`, `AngularFireMessaging`, and `AngularFirePerformance`.
|
|
15
|
+
* `AngularFireAuthGuard` and `canActivate` have dropped support for raw pipes, this was never working correctly in AOT
|
|
16
|
+
* `AngularFirePerformance` has been simplified, the RXJS pipes are now exported as pure-functions outside the class. Automatic tracking of `isStable` timing has now been moved into `PerformanceMonitoringService` and we've dropped the `AUTOMATICALLY_TRACE_CORE_NG_METRICS` DI token.
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
# Upgrading to AngularFire 7.0
|
|
2
|
+
|
|
3
|
+
Intended to be run with Angular 12, AngularFire 7.0 allows you to take full advantage of the new tree-shakable Firebase JS SDK (v9) while also providing a compatible experience with the prior API.
|
|
4
|
+
|
|
5
|
+
`ng update @angular/fire`
|
|
6
|
+
|
|
7
|
+
## Breaking changes
|
|
8
|
+
|
|
9
|
+
* Angular 12 is required
|
|
10
|
+
* AngularFire now only works in Ivy applications
|
|
11
|
+
* Firebase JS SDK v9 is required
|
|
12
|
+
* The existing AngularFire v6 API surface has moved from `@angular/fire/*` to `@angular/fire/compat/*` (see compatibility mode)
|
|
13
|
+
* **compat/auth:** `USE_EMULATOR` DI token is now in the form of `['http://localhost:9099']`
|
|
14
|
+
|
|
15
|
+
## Compatibility mode
|
|
16
|
+
|
|
17
|
+
AngularFire v7.0 has a compatibility layer that supports the AngularFire v6.0 API. Just change your imports from `@angular/fire/*` to `@angular/fire/compat/*` and `firebase/*` to `firebase/compat/*`.
|
|
18
|
+
|
|
19
|
+
While not as tree-shakable as the new modular SDK, this allows you to upgrade and take advantage of the benefits of the new SDK ASAP.
|
|
20
|
+
|
|
21
|
+
**Most developers can stop here for now as the new API isn't feature complete.**
|
|
22
|
+
|
|
23
|
+
## **NEW** Modular SDK
|
|
24
|
+
|
|
25
|
+
### Initialization
|
|
26
|
+
|
|
27
|
+
In order to better support the tree-shakability introduced in Firebase v9 & to reduce the maintence required when the JS SDK adds new configuration flags, AngularFire providers now take a factory for a fully instantiated instance of the SDK you'd like to inject.
|
|
28
|
+
|
|
29
|
+
**Before:**
|
|
30
|
+
```ts
|
|
31
|
+
@NgModule({
|
|
32
|
+
imports: [
|
|
33
|
+
AngularFireModule.initializeApp(config),
|
|
34
|
+
AngularFirestoreModule.enablePersistence(),
|
|
35
|
+
AngularFireStorageModule,
|
|
36
|
+
],
|
|
37
|
+
providers: [
|
|
38
|
+
{ provide: USE_EMULATOR, useValue: ['localhost', 8080] },
|
|
39
|
+
],
|
|
40
|
+
})
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Modular SDK:**
|
|
44
|
+
```ts
|
|
45
|
+
@NgModule({
|
|
46
|
+
imports: [
|
|
47
|
+
provideFirebaseApp(() => initializeApp(config)),
|
|
48
|
+
provideFirestore(() => {
|
|
49
|
+
const firestore = getFirestore();
|
|
50
|
+
connectFirestoreEmulator(firestore, 'localhost', 8080);
|
|
51
|
+
enableIndexedDbPersistence(firestore);
|
|
52
|
+
return firestore;
|
|
53
|
+
}),
|
|
54
|
+
provideStorage(() => getStorage()),
|
|
55
|
+
],
|
|
56
|
+
})
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Injecting services
|
|
60
|
+
|
|
61
|
+
Before when you injected Firebase JS SDK services into AngularFire they would be lazy-loaded and a promise-proxy would be returned to you. In AngularFire v7 you get the intiated service directly. We no longer lazy load for you.
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import { Firestore, doc, onSnapshot, DocumentReference, docSnapshots } from '@angular/fire/firestore';
|
|
65
|
+
|
|
66
|
+
@Component({})
|
|
67
|
+
export class Foo {
|
|
68
|
+
doc: DocumentReference;
|
|
69
|
+
constructor(
|
|
70
|
+
firestore: Firestore, // Injects the instantiated Firestore instance
|
|
71
|
+
) {
|
|
72
|
+
// You can directly operate on the instance with JS SDK methods which we've
|
|
73
|
+
// reexported in AngularFire
|
|
74
|
+
this.doc = doc(firestore, 'foo/1');
|
|
75
|
+
onSnapshot(doc, snap => {
|
|
76
|
+
// ...
|
|
77
|
+
});
|
|
78
|
+
// or use the convenience observables
|
|
79
|
+
docSnapshots(doc).subscribe(...);
|
|
80
|
+
}
|
|
81
|
+
async update() {
|
|
82
|
+
await updateDoc(this.doc, { ... });
|
|
83
|
+
...
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Working with multiple apps / instances
|
|
89
|
+
|
|
90
|
+
In AngularFire v7 working with multiple instances was difficult, in the new SDK we have new DI tokens that make working with them much more straight forward.
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
@NgModule({
|
|
94
|
+
imports: [
|
|
95
|
+
provideFirebaseApp(() => initializeApp(config)),
|
|
96
|
+
provideFirebaseApp(() => initializeApp(config2, 'anotherApp')),
|
|
97
|
+
provideStorage(() => getStorage()),
|
|
98
|
+
provideStorage(() => getStorage(getApp(), 'anotherBucket')),
|
|
99
|
+
provideStorage(() => getStorage(getApp('anotherApp'))),
|
|
100
|
+
],
|
|
101
|
+
})
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
import { FirebaseApp, FirebaseApps } from '@angular/fire/app';
|
|
106
|
+
import { Storage, StorageInstances } from '@angular/fire/storage';
|
|
107
|
+
|
|
108
|
+
export class Foo {
|
|
109
|
+
constructor(
|
|
110
|
+
defaultApp: FirebaseApp, // Injects the default FirebaseApp
|
|
111
|
+
allFirebaseApps: FirebaseApps, // Injects an array of all initialized Firebase Apps
|
|
112
|
+
storage: Storage, // Injects the default storage instance
|
|
113
|
+
allStorageInstances: StorageInstances, // Injects an array of all the intialized storage instances
|
|
114
|
+
) { }
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
How the main injection tokens (i.e, `FirebaseApp`, `Storage`) function have changed from v7 but it should provide a much more powerful and intuitive API.
|
|
118
|
+
|
|
119
|
+
### API
|
|
120
|
+
|
|
121
|
+
Beyond Depdency Injection AngularFire is sporting an entirely new API:
|
|
122
|
+
|
|
123
|
+
1) We no longer handle lazy-loading the Firebase JS SDK modules for you
|
|
124
|
+
1) We no longer provide classes beyond Depedency Injection
|
|
125
|
+
1) No more Proxy / Promise-Proxy
|
|
126
|
+
1) We reexport and Zone-wrap all Firebase and RxFire APIs
|
|
127
|
+
|
|
128
|
+
So developing with the new AngularFire is easy, you can use it just like the vanilla Firebase JS SDK. Just change all your `firebase/app` imports to `@angular/fire/app`, `firebase/firestore` to `@angular/fire/firestore`, `firebase/database` to `@angular/fire/database`, etc. Then if you're feeling comfortable with RXJS and would like to use some of our convenience operators you can just dip into that toolbox.
|
|
129
|
+
|
|
130
|
+
#### Alternatives to v6 APIs
|
|
131
|
+
|
|
132
|
+
<table>
|
|
133
|
+
<thead>
|
|
134
|
+
<tr>
|
|
135
|
+
<th colspan="2">v6 / Compat</th>
|
|
136
|
+
<th>v7 Modular</th>
|
|
137
|
+
</tr>
|
|
138
|
+
</thead>
|
|
139
|
+
<tbody>
|
|
140
|
+
<tr>
|
|
141
|
+
<th rowspan="3">AngularFirestore</th>
|
|
142
|
+
<td>doc</td>
|
|
143
|
+
<td>
|
|
144
|
+
|
|
145
|
+
```ts
|
|
146
|
+
import { doc } from '@angular/fire/firestore';
|
|
147
|
+
doc<T>(firestore, 'foo/bar') // DocumentReference<T>
|
|
148
|
+
```
|
|
149
|
+
</td>
|
|
150
|
+
</tr>
|
|
151
|
+
<tr>
|
|
152
|
+
<td>collection</td>
|
|
153
|
+
<td>
|
|
154
|
+
|
|
155
|
+
```ts
|
|
156
|
+
import { collection } from '@angular/fire/firestore';
|
|
157
|
+
collection<T>(firestore, 'foo') // CollectionReference<T>
|
|
158
|
+
```
|
|
159
|
+
</td>
|
|
160
|
+
</tr>
|
|
161
|
+
<tr>
|
|
162
|
+
<td>collectionGroup</td>
|
|
163
|
+
<td>
|
|
164
|
+
|
|
165
|
+
```ts
|
|
166
|
+
import { collectionGroup } from '@angular/fire/firestore';
|
|
167
|
+
collectionGroup<T>(firestore, 'foo') // Query<T>
|
|
168
|
+
```
|
|
169
|
+
</td>
|
|
170
|
+
</tr>
|
|
171
|
+
<tr>
|
|
172
|
+
<th rowspan="7">AngularFirestoreDocument</th>
|
|
173
|
+
<td>set</td>
|
|
174
|
+
<td>
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
import { setDoc } from '@angular/fire/firestore';
|
|
178
|
+
setDoc(docRef, { ... }) // Promise<void>
|
|
179
|
+
```
|
|
180
|
+
</td>
|
|
181
|
+
|
|
182
|
+
</td>
|
|
183
|
+
</tr>
|
|
184
|
+
<tr>
|
|
185
|
+
<td>update</td>
|
|
186
|
+
<td>
|
|
187
|
+
|
|
188
|
+
```ts
|
|
189
|
+
import { updateDoc } from '@angular/fire/firestore';
|
|
190
|
+
updateDoc(docRef, { ... }) // Promise<void>
|
|
191
|
+
```
|
|
192
|
+
</td>
|
|
193
|
+
</tr>
|
|
194
|
+
<tr>
|
|
195
|
+
<td>delete</td>
|
|
196
|
+
<td>
|
|
197
|
+
|
|
198
|
+
```ts
|
|
199
|
+
import { deleteDoc } from '@angular/fire/firestore';
|
|
200
|
+
deleteDoc(docRef) // Promise<void>
|
|
201
|
+
```
|
|
202
|
+
</td>
|
|
203
|
+
</tr>
|
|
204
|
+
<tr>
|
|
205
|
+
<td>collection</td>
|
|
206
|
+
<td>
|
|
207
|
+
|
|
208
|
+
```ts
|
|
209
|
+
import { collection } from '@angular/fire/firestore';
|
|
210
|
+
collection<T>(docRef, 'bar') // CollectionReference<T>
|
|
211
|
+
```
|
|
212
|
+
</td>
|
|
213
|
+
</tr>
|
|
214
|
+
<tr>
|
|
215
|
+
<td>snapshotChanges</td>
|
|
216
|
+
<td>
|
|
217
|
+
|
|
218
|
+
```ts
|
|
219
|
+
import { docSnapshots } from '@angular/fire/firestore';
|
|
220
|
+
docSnapshots<T>(docRef) // Observable<DocumentSnapshot<T>>
|
|
221
|
+
```
|
|
222
|
+
</td>
|
|
223
|
+
|
|
224
|
+
</td>
|
|
225
|
+
</tr>
|
|
226
|
+
<tr>
|
|
227
|
+
<td>valueChanges</td>
|
|
228
|
+
<td>
|
|
229
|
+
|
|
230
|
+
```ts
|
|
231
|
+
import { docData } from '@angular/fire/firestore';
|
|
232
|
+
docData<T>(docRef) // Observable<T>
|
|
233
|
+
```
|
|
234
|
+
</td>
|
|
235
|
+
</tr>
|
|
236
|
+
<tr>
|
|
237
|
+
<td>get</td>
|
|
238
|
+
<td>
|
|
239
|
+
|
|
240
|
+
```ts
|
|
241
|
+
import { getDoc } from '@angular/fire/firestore';
|
|
242
|
+
getDoc<T>(docRef) // Promise<DocumentSnapshot<T>>
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
</td>
|
|
246
|
+
</tr>
|
|
247
|
+
</tbody>
|
|
248
|
+
</table>
|
|
249
|
+
|
|
250
|
+
### Code splitting and lazy-loading
|
|
251
|
+
|
|
252
|
+
AngularFire does not lazy-load services any longer. We have provided a helper observable for detecting when a new service instance is instantiated. In this example we'll code split out of all the Firestore related code and lazy-load
|
|
253
|
+
|
|
254
|
+
```ts
|
|
255
|
+
// firestore_operations.ts
|
|
256
|
+
import {
|
|
257
|
+
collectionData,
|
|
258
|
+
firestoreInstance$,
|
|
259
|
+
collection,
|
|
260
|
+
getFirestore
|
|
261
|
+
} from '@angular/fire/firestore';
|
|
262
|
+
import { first } from 'rxjs/operators';
|
|
263
|
+
import { IFoo } from '../interfaces';
|
|
264
|
+
|
|
265
|
+
export { getFirestore };
|
|
266
|
+
|
|
267
|
+
export const fooData = firestoreInstance$.pipe(
|
|
268
|
+
first(),
|
|
269
|
+
concatMap(firestore => collectionData<IFoo>(collection(firestore, 'foo'))),
|
|
270
|
+
);
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
```ts
|
|
274
|
+
export class AuthService {
|
|
275
|
+
constructor() {
|
|
276
|
+
getRedirectResult().then(result => {
|
|
277
|
+
// Initialize Firestore only after a user logs in
|
|
278
|
+
if (result.user) {
|
|
279
|
+
const { getFirestore } = await import('./firestore_operations');
|
|
280
|
+
getFirestore();
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
```ts
|
|
288
|
+
@Component({})
|
|
289
|
+
export class Foo {
|
|
290
|
+
data: Observable<IFoo[]>;
|
|
291
|
+
constructor() {
|
|
292
|
+
this.data = of(undefined).pipe(
|
|
293
|
+
concatMap(() => import('./firestore_operations')),
|
|
294
|
+
concatMap(it => it.fooData)
|
|
295
|
+
);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
```
|
|
@@ -13,4 +13,4 @@ export class AnalyticsInstances {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
export const analyticInstance$ = timer(0, 300).pipe(concatMap(() => from(ɵgetAllInstancesOf(ANALYTICS_PROVIDER_NAME))), distinct());
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuYWx5dGljcy9hbmFseXRpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNckQsTUFBTSxPQUFPLFNBQVM7SUFDcEIsWUFBWSxTQUE0QjtRQUN0QyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxXQUFXLENBQUM7QUFLbkQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QjtRQUNFLE9BQU8sa0JBQWtCLENBQW9CLHVCQUF1QixDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2pELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQW9CLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUNyRixRQUFRLEVBQUUsQ0FDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgybVnZXRBbGxJbnN0YW5jZXNPZiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNzIGFzIEZpcmViYXNlQW5hbHl0aWNzIH0gZnJvbSAnZmlyZWJhc2UvYW5hbHl0aWNzJztcbmltcG9ydCB7IGZyb20sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGRpc3RpbmN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBzZWUgbm90ZXMgaW4gY29yZS9maXJlYmFzZS5hcHAubW9kdWxlLnRzIGZvciB3aHkgd2UncmUgYnVpbGRpbmcgdGhlIGNsYXNzIGxpa2UgdGhpc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl0aWNzIGV4dGVuZHMgRmlyZWJhc2VBbmFseXRpY3Mge31cblxuZXhwb3J0IGNsYXNzIEFuYWx5dGljcyB7XG4gIGNvbnN0cnVjdG9yKGFuYWx5dGljczogRmlyZWJhc2VBbmFseXRpY3MpIHtcbiAgICByZXR1cm4gYW5hbHl0aWNzO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSA9ICdhbmFseXRpY3MnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBBbmFseXRpY3NJbnN0YW5jZXMgZXh0ZW5kcyBBcnJheTxGaXJlYmFzZUFuYWx5dGljcz4ge31cblxuZXhwb3J0IGNsYXNzIEFuYWx5dGljc0luc3RhbmNlcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiDJtWdldEFsbEluc3RhbmNlc09mPEZpcmViYXNlQW5hbHl0aWNzPihBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGFuYWx5dGljSW5zdGFuY2UkID0gdGltZXIoMCwgMzAwKS5waXBlKFxuICBjb25jYXRNYXAoKCkgPT4gZnJvbSjJtWdldEFsbEluc3RhbmNlc09mPEZpcmViYXNlQW5hbHl0aWNzPihBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSkpKSxcbiAgZGlzdGluY3QoKSxcbik7XG4iXX0=
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
|
|
1
|
+
import { APP_INITIALIZER, InjectionToken, Injector, NgModule, NgZone, Optional } from '@angular/core';
|
|
2
|
+
import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire';
|
|
3
|
+
import { FirebaseApp, FirebaseApps } from '@angular/fire/app';
|
|
5
4
|
import { registerVersion } from 'firebase/app';
|
|
5
|
+
import { ANALYTICS_PROVIDER_NAME, Analytics, AnalyticsInstances } from './analytics';
|
|
6
|
+
import { isAnalyticsSupportedFactory } from './is-analytics-supported-factory';
|
|
6
7
|
import { ScreenTrackingService } from './screen-tracking.service';
|
|
7
8
|
import { UserTrackingService } from './user-tracking.service';
|
|
8
|
-
import { isAnalyticsSupportedFactory } from './is-analytics-supported-factory';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "./screen-tracking.service";
|
|
11
11
|
import * as i2 from "./user-tracking.service";
|
|
@@ -44,9 +44,9 @@ export class AnalyticsModule {
|
|
|
44
44
|
constructor(_screenTrackingService, _userTrackingService) {
|
|
45
45
|
registerVersion('angularfire', VERSION.full, 'analytics');
|
|
46
46
|
}
|
|
47
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
48
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.
|
|
49
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AnalyticsModule, deps: [{ token: i1.ScreenTrackingService, optional: true }, { token: i2.UserTrackingService, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
48
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.10", ngImport: i0, type: AnalyticsModule });
|
|
49
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AnalyticsModule, providers: [
|
|
50
50
|
DEFAULT_ANALYTICS_INSTANCE_PROVIDER,
|
|
51
51
|
ANALYTICS_INSTANCES_PROVIDER,
|
|
52
52
|
{
|
|
@@ -56,7 +56,7 @@ export class AnalyticsModule {
|
|
|
56
56
|
}
|
|
57
57
|
] });
|
|
58
58
|
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AnalyticsModule, decorators: [{
|
|
60
60
|
type: NgModule,
|
|
61
61
|
args: [{
|
|
62
62
|
providers: [
|
|
@@ -91,4 +91,4 @@ export function provideAnalytics(fn, ...deps) {
|
|
|
91
91
|
}]
|
|
92
92
|
};
|
|
93
93
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvYW5hbHl0aWNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQXVCLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFOUQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQWMsa0NBQWtDLENBQUMsQ0FBQztBQUVoSCxNQUFNLFVBQVUsK0JBQStCLENBQUMsUUFBdUMsRUFBRSxVQUF1QjtJQUM5RyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFBRSxPQUFPLElBQUksQ0FBQztLQUFFO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQW9CLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqSCxPQUFPLGdCQUFnQixJQUFJLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxFQUE2QztJQUNwRixPQUFPLENBQUMsSUFBWSxFQUFFLFFBQWtCLEVBQUUsRUFBRTtRQUMxQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztTQUFFO1FBQ3pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLDRCQUE0QixHQUFHO0lBQ25DLE9BQU8sRUFBRSxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDRCQUE0QixDQUFFO0tBQ2hEO0NBQ0YsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQUc7SUFDMUMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsNEJBQTRCLENBQUU7UUFDL0MsV0FBVztLQUNaO0NBQ0YsQ0FBQztBQWFGLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ2Msc0JBQTZDLEVBQzdDLG9CQUF5QztRQUVyRCxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQzt3R0FOVSxlQUFlO3lHQUFmLGVBQWU7eUdBQWYsZUFBZSxhQVZmO1lBQ1QsbUNBQW1DO1lBQ25DLDRCQUE0QjtZQUM1QjtnQkFDRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsUUFBUSxFQUFFLDJCQUEyQixDQUFDLEtBQUs7Z0JBQzNDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjs7NEZBRVUsZUFBZTtrQkFYM0IsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsbUNBQW1DO3dCQUNuQyw0QkFBNEI7d0JBQzVCOzRCQUNFLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixRQUFRLEVBQUUsMkJBQTJCLENBQUMsS0FBSzs0QkFDM0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OzBCQUdJLFFBQVE7OzBCQUNSLFFBQVE7O0FBTWIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQTZDLEVBQUUsR0FBRyxJQUFXO0lBQzVGLE9BQU87UUFDTCxRQUFRLEVBQUUsZUFBZTtRQUN6QixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxVQUFVLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixRQUFRO29CQUNSLHNCQUFzQjtvQkFDdEIsWUFBWTtvQkFDWixHQUFHLElBQUk7aUJBQ1I7YUFDRixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE5nWm9uZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZFUlNJT04sIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLCDJtWdldERlZmF1bHRJbnN0YW5jZU9mIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBGaXJlYmFzZUFwcCwgRmlyZWJhc2VBcHBzIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hcHAnO1xuaW1wb3J0IHsgQW5hbHl0aWNzIGFzIEZpcmViYXNlQW5hbHl0aWNzIH0gZnJvbSAnZmlyZWJhc2UvYW5hbHl0aWNzJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgeyBBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSwgQW5hbHl0aWNzLCBBbmFseXRpY3NJbnN0YW5jZXMgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBpc0FuYWx5dGljc1N1cHBvcnRlZEZhY3RvcnkgfSBmcm9tICcuL2lzLWFuYWx5dGljcy1zdXBwb3J0ZWQtZmFjdG9yeSc7XG5pbXBvcnQgeyBTY3JlZW5UcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJUcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3VzZXItdHJhY2tpbmcuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VTID0gbmV3IEluamVjdGlvblRva2VuPEFuYWx5dGljc1tdPignYW5ndWxhcmZpcmUyLmFuYWx5dGljcy1pbnN0YW5jZXMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkocHJvdmlkZWQ6IEZpcmViYXNlQW5hbHl0aWNzW118dW5kZWZpbmVkLCBkZWZhdWx0QXBwOiBGaXJlYmFzZUFwcCkge1xuICBpZiAoIWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgY29uc3QgZGVmYXVsdEFuYWx5dGljcyA9IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2Y8RmlyZWJhc2VBbmFseXRpY3M+KEFOQUxZVElDU19QUk9WSURFUl9OQU1FLCBwcm92aWRlZCwgZGVmYXVsdEFwcCk7XG4gIHJldHVybiBkZWZhdWx0QW5hbHl0aWNzICYmIG5ldyBBbmFseXRpY3MoZGVmYXVsdEFuYWx5dGljcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkoZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlQW5hbHl0aWNzKSB7XG4gIHJldHVybiAoem9uZTogTmdab25lLCBpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICBpZiAoIWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgICBjb25zdCBhbmFseXRpY3MgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKGluamVjdG9yKSk7XG4gICAgcmV0dXJuIG5ldyBBbmFseXRpY3MoYW5hbHl0aWNzKTtcbiAgfTtcbn1cblxuY29uc3QgQU5BTFlUSUNTX0lOU1RBTkNFU19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQW5hbHl0aWNzSW5zdGFuY2VzLFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VTIF0sXG4gIF1cbn07XG5cbmNvbnN0IERFRkFVTFRfQU5BTFlUSUNTX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBBbmFseXRpY3MsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnksXG4gIGRlcHM6IFtcbiAgICBbbmV3IE9wdGlvbmFsKCksIFBST1ZJREVEX0FOQUxZVElDU19JTlNUQU5DRVMgXSxcbiAgICBGaXJlYmFzZUFwcCxcbiAgXVxufTtcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgREVGQVVMVF9BTkFMWVRJQ1NfSU5TVEFOQ0VfUFJPVklERVIsXG4gICAgQU5BTFlUSUNTX0lOU1RBTkNFU19QUk9WSURFUixcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VWYWx1ZTogaXNBbmFseXRpY3NTdXBwb3J0ZWRGYWN0b3J5LmFzeW5jLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFuYWx5dGljc01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIF9zY3JlZW5UcmFja2luZ1NlcnZpY2U6IFNjcmVlblRyYWNraW5nU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBfdXNlclRyYWNraW5nU2VydmljZTogVXNlclRyYWNraW5nU2VydmljZSxcbiAgKSB7XG4gICAgcmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ2FuYWx5dGljcycpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQW5hbHl0aWNzKGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZUFuYWx5dGljcywgLi4uZGVwczogYW55W10pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuYWx5dGljc01vZHVsZT4ge1xuICByZXR1cm4ge1xuICAgIG5nTW9kdWxlOiBBbmFseXRpY3NNb2R1bGUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyxcbiAgICAgIHVzZUZhY3Rvcnk6IGFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShmbiksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgTmdab25lLFxuICAgICAgICBJbmplY3RvcixcbiAgICAgICAgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsXG4gICAgICAgIEZpcmViYXNlQXBwcyxcbiAgICAgICAgLi4uZGVwcyxcbiAgICAgIF1cbiAgICB9XVxuICB9O1xufVxuIl19
|
|
@@ -1,14 +1,17 @@
|
|
|
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, 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, getGoogleAnalyticsClientId as _getGoogleAnalyticsClientId, initializeAnalytics as _initializeAnalytics, logEvent as _logEvent, setAnalyticsCollectionEnabled as _setAnalyticsCollectionEnabled, setConsent as _setConsent, setCurrentScreen as _setCurrentScreen, setDefaultEventParameters as _setDefaultEventParameters, settings as _settings, setUserId as _setUserId, setUserProperties as _setUserProperties } from 'firebase/analytics';
|
|
5
5
|
export { isSupported } from './overrides';
|
|
6
6
|
export const getAnalytics = ɵzoneWrap(_getAnalytics, true);
|
|
7
|
+
export const getGoogleAnalyticsClientId = ɵzoneWrap(_getGoogleAnalyticsClientId, true);
|
|
7
8
|
export const initializeAnalytics = ɵzoneWrap(_initializeAnalytics, true);
|
|
8
9
|
export const logEvent = ɵzoneWrap(_logEvent, true);
|
|
9
10
|
export const setAnalyticsCollectionEnabled = ɵzoneWrap(_setAnalyticsCollectionEnabled, true);
|
|
11
|
+
export const setConsent = ɵzoneWrap(_setConsent, true);
|
|
10
12
|
export const setCurrentScreen = ɵzoneWrap(_setCurrentScreen, true);
|
|
13
|
+
export const setDefaultEventParameters = ɵzoneWrap(_setDefaultEventParameters, true);
|
|
11
14
|
export const settings = ɵzoneWrap(_settings, true);
|
|
12
15
|
export const setUserId = ɵzoneWrap(_setUserId, true);
|
|
13
16
|
export const setUserProperties = ɵzoneWrap(_setUserProperties, true);
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5hbHl0aWNzL2ZpcmViYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhEQUE4RDtBQUM5RCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUNMLFlBQVksSUFBSSxhQUFhLEVBQzdCLDBCQUEwQixJQUFJLDJCQUEyQixFQUN6RCxtQkFBbUIsSUFBSSxvQkFBb0IsRUFDM0MsUUFBUSxJQUFJLFNBQVMsRUFDckIsNkJBQTZCLElBQUksOEJBQThCLEVBQy9ELFVBQVUsSUFBSSxXQUFXLEVBQ3pCLGdCQUFnQixJQUFJLGlCQUFpQixFQUNyQyx5QkFBeUIsSUFBSSwwQkFBMEIsRUFDdkQsUUFBUSxJQUFJLFNBQVMsRUFDckIsU0FBUyxJQUFJLFVBQVUsRUFDdkIsaUJBQWlCLElBQUksa0JBQWtCLEVBQ3hDLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUNMLFdBQVcsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUVyQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxTQUFTLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLFNBQVMsQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3RixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsU0FBUyxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIERPIE5PVCBNT0RJRlksIHRoaXMgZmlsZSBpcyBhdXRvZ2VuZXJhdGVkIGJ5IHRvb2xzL2J1aWxkLnRzXG5leHBvcnQgKiBmcm9tICdmaXJlYmFzZS9hbmFseXRpY3MnO1xuaW1wb3J0IHsgybV6b25lV3JhcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHtcbiAgZ2V0QW5hbHl0aWNzIGFzIF9nZXRBbmFseXRpY3MsXG4gIGdldEdvb2dsZUFuYWx5dGljc0NsaWVudElkIGFzIF9nZXRHb29nbGVBbmFseXRpY3NDbGllbnRJZCxcbiAgaW5pdGlhbGl6ZUFuYWx5dGljcyBhcyBfaW5pdGlhbGl6ZUFuYWx5dGljcyxcbiAgbG9nRXZlbnQgYXMgX2xvZ0V2ZW50LFxuICBzZXRBbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZCBhcyBfc2V0QW5hbHl0aWNzQ29sbGVjdGlvbkVuYWJsZWQsXG4gIHNldENvbnNlbnQgYXMgX3NldENvbnNlbnQsXG4gIHNldEN1cnJlbnRTY3JlZW4gYXMgX3NldEN1cnJlbnRTY3JlZW4sXG4gIHNldERlZmF1bHRFdmVudFBhcmFtZXRlcnMgYXMgX3NldERlZmF1bHRFdmVudFBhcmFtZXRlcnMsXG4gIHNldHRpbmdzIGFzIF9zZXR0aW5ncyxcbiAgc2V0VXNlcklkIGFzIF9zZXRVc2VySWQsXG4gIHNldFVzZXJQcm9wZXJ0aWVzIGFzIF9zZXRVc2VyUHJvcGVydGllc1xufSBmcm9tICdmaXJlYmFzZS9hbmFseXRpY3MnO1xuXG5leHBvcnQge1xuICBpc1N1cHBvcnRlZFxufSBmcm9tICcuL292ZXJyaWRlcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRBbmFseXRpY3MgPSDJtXpvbmVXcmFwKF9nZXRBbmFseXRpY3MsIHRydWUpO1xuZXhwb3J0IGNvbnN0IGdldEdvb2dsZUFuYWx5dGljc0NsaWVudElkID0gybV6b25lV3JhcChfZ2V0R29vZ2xlQW5hbHl0aWNzQ2xpZW50SWQsIHRydWUpO1xuZXhwb3J0IGNvbnN0IGluaXRpYWxpemVBbmFseXRpY3MgPSDJtXpvbmVXcmFwKF9pbml0aWFsaXplQW5hbHl0aWNzLCB0cnVlKTtcbmV4cG9ydCBjb25zdCBsb2dFdmVudCA9IMm1em9uZVdyYXAoX2xvZ0V2ZW50LCB0cnVlKTtcbmV4cG9ydCBjb25zdCBzZXRBbmFseXRpY3NDb2xsZWN0aW9uRW5hYmxlZCA9IMm1em9uZVdyYXAoX3NldEFuYWx5dGljc0NvbGxlY3Rpb25FbmFibGVkLCB0cnVlKTtcbmV4cG9ydCBjb25zdCBzZXRDb25zZW50ID0gybV6b25lV3JhcChfc2V0Q29uc2VudCwgdHJ1ZSk7XG5leHBvcnQgY29uc3Qgc2V0Q3VycmVudFNjcmVlbiA9IMm1em9uZVdyYXAoX3NldEN1cnJlbnRTY3JlZW4sIHRydWUpO1xuZXhwb3J0IGNvbnN0IHNldERlZmF1bHRFdmVudFBhcmFtZXRlcnMgPSDJtXpvbmVXcmFwKF9zZXREZWZhdWx0RXZlbnRQYXJhbWV0ZXJzLCB0cnVlKTtcbmV4cG9ydCBjb25zdCBzZXR0aW5ncyA9IMm1em9uZVdyYXAoX3NldHRpbmdzLCB0cnVlKTtcbmV4cG9ydCBjb25zdCBzZXRVc2VySWQgPSDJtXpvbmVXcmFwKF9zZXRVc2VySWQsIHRydWUpO1xuZXhwb3J0IGNvbnN0IHNldFVzZXJQcm9wZXJ0aWVzID0gybV6b25lV3JhcChfc2V0VXNlclByb3BlcnRpZXMsIHRydWUpO1xuIl19
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ComponentFactoryResolver, Injectable, NgZone, Optional
|
|
2
|
-
import { of } from 'rxjs';
|
|
3
|
-
import { distinctUntilChanged, filter, groupBy, map, mergeMap, pairwise, startWith, switchMap } from 'rxjs/operators';
|
|
4
|
-
import { ActivationEnd, Router, ɵEmptyOutletComponent } from '@angular/router';
|
|
5
|
-
import { Title } from '@angular/platform-browser';
|
|
1
|
+
import { ComponentFactoryResolver, Injectable, Injector, NgZone, Optional } from '@angular/core';
|
|
6
2
|
import { VERSION } from '@angular/fire';
|
|
3
|
+
import { Title } from '@angular/platform-browser';
|
|
4
|
+
import { ActivationEnd, Router, ɵEmptyOutletComponent } from '@angular/router';
|
|
7
5
|
import { registerVersion } from 'firebase/app';
|
|
6
|
+
import { of } from 'rxjs';
|
|
7
|
+
import { distinctUntilChanged, filter, groupBy, map, mergeMap, pairwise, startWith, switchMap } from 'rxjs/operators';
|
|
8
8
|
import { Analytics } from './analytics';
|
|
9
|
-
import {
|
|
9
|
+
import { isSupported, logEvent } from './firebase';
|
|
10
10
|
import { UserTrackingService } from './user-tracking.service';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "@angular/router";
|
|
@@ -36,6 +36,7 @@ const getScreenInstanceID = (params) => {
|
|
|
36
36
|
params[SCREEN_CLASS_KEY],
|
|
37
37
|
params[OUTLET_KEY]
|
|
38
38
|
].join(SCREEN_INSTANCE_DELIMITER);
|
|
39
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
39
40
|
if (knownScreenInstanceIDs.hasOwnProperty(screenInstanceKey)) {
|
|
40
41
|
return knownScreenInstanceIDs[screenInstanceKey];
|
|
41
42
|
}
|
|
@@ -132,10 +133,10 @@ export class ScreenTrackingService {
|
|
|
132
133
|
this.disposable.unsubscribe();
|
|
133
134
|
}
|
|
134
135
|
}
|
|
135
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
136
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
136
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", 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 });
|
|
137
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ScreenTrackingService });
|
|
137
138
|
}
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ScreenTrackingService, decorators: [{
|
|
139
140
|
type: Injectable
|
|
140
141
|
}], ctorParameters: function () { return [{ type: i1.Router, decorators: [{
|
|
141
142
|
type: Optional
|
|
@@ -144,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImpor
|
|
|
144
145
|
}] }, { type: i0.ComponentFactoryResolver }, { type: i0.NgZone }, { type: i3.UserTrackingService, decorators: [{
|
|
145
146
|
type: Optional
|
|
146
147
|
}] }, { type: i0.Injector }]; } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXRyYWNraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5hbHl0aWNzL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLEVBQUUsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQUU5RCxNQUFNLHlCQUF5QixHQUFHLHVCQUF1QixDQUFDO0FBQzFELE1BQU0sa0NBQWtDLEdBQUcseUJBQXlCLENBQUM7QUFDckUsTUFBTSx3Q0FBd0MsR0FBRyxzQkFBc0IsQ0FBQztBQUN4RSxNQUFNLGlDQUFpQyxHQUFHLDBCQUEwQixDQUFDO0FBQ3JFLE1BQU0seUJBQXlCLEdBQUcsdUJBQXVCLENBQUM7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O1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzt1R0FsQ1UscUJBQXFCOzJHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQU1OLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUdSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEluamVjdGFibGUsIE5nWm9uZSwgT25EZXN0cm95LCBPcHRpb25hbCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGdyb3VwQnksIG1hcCwgbWVyZ2VNYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGl2YXRpb25FbmQsIFJvdXRlciwgybVFbXB0eU91dGxldENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgcmVnaXN0ZXJWZXJzaW9uIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcblxuaW1wb3J0IHsgQW5hbHl0aWNzIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgbG9nRXZlbnQsIGlzU3VwcG9ydGVkIH0gZnJvbSAnLi9maXJlYmFzZSc7XG5pbXBvcnQgeyBVc2VyVHJhY2tpbmdTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXRyYWNraW5nLnNlcnZpY2UnO1xuXG5jb25zdCBGSVJFQkFTRV9FVkVOVF9PUklHSU5fS0VZID0gJ2ZpcmViYXNlX2V2ZW50X29yaWdpbic7XG5jb25zdCBGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fQ0xBU1NfS0VZID0gJ2ZpcmViYXNlX3ByZXZpb3VzX2NsYXNzJztcbmNvbnN0IEZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfaWQnO1xuY29uc3QgRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX05BTUVfS0VZID0gJ2ZpcmViYXNlX3ByZXZpb3VzX3NjcmVlbic7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fQ0xBU1NfS0VZID0gJ2ZpcmViYXNlX3NjcmVlbl9jbGFzcyc7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZID0gJ2ZpcmViYXNlX3NjcmVlbl9pZCc7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fTkFNRV9LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuJztcbmNvbnN0IE9VVExFVF9LRVkgPSAnb3V0bGV0JztcbmNvbnN0IFBBR0VfUEFUSF9LRVkgPSAncGFnZV9wYXRoJztcbmNvbnN0IFBBR0VfVElUTEVfS0VZID0gJ3BhZ2VfdGl0bGUnO1xuY29uc3QgU0NSRUVOX0NMQVNTX0tFWSA9ICdzY3JlZW5fY2xhc3MnO1xuY29uc3QgU0NSRUVOX05BTUVfS0VZID0gJ3NjcmVlbl9uYW1lJztcbmNvbnN0IFNDUkVFTl9WSUVXX0VWRU5UID0gJ3NjcmVlbl92aWV3JztcbmNvbnN0IEVWRU5UX09SSUdJTl9BVVRPID0gJ2F1dG8nO1xuY29uc3QgU0NSRUVOX0lOU1RBTkNFX0RFTElNSVRFUiA9ICcjJztcblxuLy8gdGhpcyBpcyBhbiBJTlQ2NCBpbiBpT1MvQW5kcm9pZCBidXQgdXNlIElOVDMyIGNhdXNlIGphdmFzY3JpcHRcbmxldCBuZXh0U2NyZWVuSW5zdGFuY2VJRCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgyICoqIDMyIC0gMSkpIC0gMiAqKiAzMTtcblxuY29uc3Qga25vd25TY3JlZW5JbnN0YW5jZUlEczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG5jb25zdCBnZXRTY3JlZW5JbnN0YW5jZUlEID0gKHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4ge1xuICAvLyB1bmlxdWUgdGhlIHNjcmVlbiBjbGFzcyBhZ2FpbnN0IHRoZSBvdXRsZXQgbmFtZVxuICBjb25zdCBzY3JlZW5JbnN0YW5jZUtleSA9IFtcbiAgICBwYXJhbXNbU0NSRUVOX0NMQVNTX0tFWV0sXG4gICAgcGFyYW1zW09VVExFVF9LRVldXG4gIF0uam9pbihTQ1JFRU5fSU5TVEFOQ0VfREVMSU1JVEVSKTtcbiAgaWYgKGtub3duU2NyZWVuSW5zdGFuY2VJRHMuaGFzT3duUHJvcGVydHkoc2NyZWVuSW5zdGFuY2VLZXkpKSB7XG4gICAgcmV0dXJuIGtub3duU2NyZWVuSW5zdGFuY2VJRHNbc2NyZWVuSW5zdGFuY2VLZXldO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJldCA9IG5leHRTY3JlZW5JbnN0YW5jZUlEKys7XG4gICAga25vd25TY3JlZW5JbnN0YW5jZUlEc1tzY3JlZW5JbnN0YW5jZUtleV0gPSByZXQ7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IMm1c2NyZWVuVmlld0V2ZW50ID0gKFxuICByb3V0ZXI6IFJvdXRlcixcbiAgdGl0bGU6IFRpdGxlfG51bGwsXG4gIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuKTogT2JzZXJ2YWJsZTx7XG4gIFtTQ1JFRU5fTkFNRV9LRVldOiBzdHJpbmcsXG4gIFtQQUdFX1BBVEhfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfRVZFTlRfT1JJR0lOX0tFWV06ICdhdXRvJyxcbiAgW0ZJUkVCQVNFX1NDUkVFTl9OQU1FX0tFWV06IHN0cmluZyxcbiAgW09VVExFVF9LRVldOiBzdHJpbmcsXG4gIFtQQUdFX1RJVExFX0tFWV0/OiBzdHJpbmcsXG4gIFtTQ1JFRU5fQ0xBU1NfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfU0NSRUVOX0NMQVNTX0tFWV06IHN0cmluZyxcbiAgW0ZJUkVCQVNFX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVldOiBudW1iZXIsXG4gIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fQ0xBU1NfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX05BTUVfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV06IG51bWJlcixcbn0+ID0+IHtcbiAgY29uc3QgYWN0aXZhdGlvbkVuZEV2ZW50cyA9IHJvdXRlci5ldmVudHMucGlwZShmaWx0ZXI8QWN0aXZhdGlvbkVuZD4oZSA9PiBlIGluc3RhbmNlb2YgQWN0aXZhdGlvbkVuZCkpO1xuICByZXR1cm4gYWN0aXZhdGlvbkVuZEV2ZW50cy5waXBlKFxuICAgIHN3aXRjaE1hcDxBY3RpdmF0aW9uRW5kLCBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIGFueT58bnVsbD4+KGFjdGl2YXRpb25FbmQgPT4ge1xuICAgICAgLy8gcm91dGVyIHBhcnNlVXJsIGlzIGhhdmluZyB0cm91YmxlIHdpdGggb3V0bGV0cyB3aGVuIHRoZXkncmUgZW1wdHlcbiAgICAgIC8vIGUuZywgL2FzZGYvMShib2I6Ly9zYWxseTphc2RmKSwgc28gcHV0IGFub3RoZXIgc2xhc2ggaW4gd2hlbiBlbXB0eVxuICAgICAgY29uc3QgdXJsVHJlZSA9IHJvdXRlci5wYXJzZVVybChyb3V0ZXIudXJsLnJlcGxhY2UoLyg/OlxcKCkuKyg/OlxcKSkvZywgYSA9PiBhLnJlcGxhY2UoJzovLycsICc6Ly8vJykpKTtcbiAgICAgIGNvbnN0IHBhZ2VQYXRoID0gdXJsVHJlZS5yb290LmNoaWxkcmVuW2FjdGl2YXRpb25FbmQuc25hcHNob3Qub3V0bGV0XT8udG9TdHJpbmcoKSB8fCAnJztcbiAgICAgIGNvbnN0IGFjdHVhbFNuYXBzaG90ID0gcm91dGVyLnJvdXRlclN0YXRlLnJvb3QuY2hpbGRyZW4ubWFwKGl0ID0+IGl0KS5maW5kKGl0ID0+IGl0Lm91dGxldCA9PT0gYWN0aXZhdGlvbkVuZC5zbmFwc2hvdC5vdXRsZXQpO1xuXG4gICAgICBpZiAoIWFjdHVhbFNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGFjdHVhbERlZXAgPSBhY3R1YWxTbmFwc2hvdDtcbiAgICAgIHdoaWxlIChhY3R1YWxEZWVwLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgYWN0dWFsRGVlcCA9IGFjdHVhbERlZXAuZmlyc3RDaGlsZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcmVlbk5hbWUgPSBhY3R1YWxEZWVwLnBhdGhGcm9tUm9vdC5tYXAocyA9PiBzLnJvdXRlQ29uZmlnPy5wYXRoKS5maWx0ZXIoaXQgPT4gaXQpLmpvaW4oJy8nKSB8fCAnLyc7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgW1NDUkVFTl9OQU1FX0tFWV06IHNjcmVlbk5hbWUsXG4gICAgICAgIFtQQUdFX1BBVEhfS0VZXTogYC8ke3BhZ2VQYXRofWAsXG4gICAgICAgIFtGSVJFQkFTRV9FVkVOVF9PUklHSU5fS0VZXTogRVZFTlRfT1JJR0lOX0FVVE8sXG4gICAgICAgIFtGSVJFQkFTRV9TQ1JFRU5fTkFNRV9LRVldOiBzY3JlZW5OYW1lLFxuICAgICAgICBbT1VUTEVUX0tFWV06IGFjdGl2YXRpb25FbmQuc25hcHNob3Qub3V0bGV0XG4gICAgICB9O1xuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgIHBhcmFtc1tQQUdFX1RJVExFX0tFWV0gPSB0aXRsZS5nZXRUaXRsZSgpO1xuICAgICAgfVxuXG4gICAgICBsZXQgY29tcG9uZW50ID0gYWN0dWFsU25hcHNob3QuY29tcG9uZW50O1xuICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICBpZiAoY29tcG9uZW50ID09PSDJtUVtcHR5T3V0bGV0Q29tcG9uZW50KSB7XG4gICAgICAgICAgbGV0IGRlZXBTbmFwc2hvdCA9IGFjdGl2YXRpb25FbmQuc25hcHNob3Q7XG4gICAgICAgICAgLy8gVE9ETyB3aGVuIG1pZ2h0IHRoZXJlIGJlIG11dHBsZSBjaGlsZHJlbiwgZGlmZmVyZW50IG91dGxldHM/IGV4cGxvcmVcbiAgICAgICAgICB3aGlsZSAoZGVlcFNuYXBzaG90LmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIGRlZXBTbmFwc2hvdCA9IGRlZXBTbmFwc2hvdC5maXJzdENoaWxkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb21wb25lbnQgPSBkZWVwU25hcHNob3QuY29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnQgPSBhY3RpdmF0aW9uRW5kLnNuYXBzaG90LmNvbXBvbmVudDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBjb21wb25lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBvZih7IC4uLnBhcmFtcywgW1NDUkVFTl9DTEFTU19LRVldOiBjb21wb25lbnQgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiBvZih7IC4uLnBhcmFtcywgW1NDUkVFTl9DTEFTU19LRVldOiBjb21wb25lbnRGYWN0b3J5LnNlbGVjdG9yIH0pO1xuICAgICAgfVxuICAgICAgLy8gbGF6eSBsb2FkcyBjYXVzZSBleHRyYSBhY3RpdmF0aW9ucywgaWdub3JlXG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfSksXG4gICAgZmlsdGVyKGl0ID0+ICEhaXQpLFxuICAgIG1hcChwYXJhbXMgPT4gKHtcbiAgICAgIFtGSVJFQkFTRV9TQ1JFRU5fQ0xBU1NfS0VZXTogcGFyYW1zW1NDUkVFTl9DTEFTU19LRVldLFxuICAgICAgW0ZJUkVCQVNFX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVldOiBnZXRTY3JlZW5JbnN0YW5jZUlEKHBhcmFtcyksXG4gICAgICAuLi5wYXJhbXNcbiAgICB9KSksXG4gICAgZ3JvdXBCeShpdCA9PiBpdFtPVVRMRVRfS0VZXSksXG4gICAgbWVyZ2VNYXAoaXQgPT4gaXQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYikpLFxuICAgICAgc3RhcnRXaXRoPGFueSwgYW55Pih1bmRlZmluZWQpLFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIG1hcCgoW3ByaW9yLCBjdXJyZW50XSkgPT5cbiAgICAgICAgcHJpb3IgPyB7XG4gICAgICAgICAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9DTEFTU19LRVldOiBwcmlvcltTQ1JFRU5fQ0xBU1NfS0VZXSxcbiAgICAgICAgICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX05BTUVfS0VZXTogcHJpb3JbU0NSRUVOX05BTUVfS0VZXSxcbiAgICAgICAgICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV06IHByaW9yW0ZJUkVCQVNFX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVldLFxuICAgICAgICAgIC4uLmN1cnJlbnRcbiAgICAgICAgfSA6IGN1cnJlbnRcbiAgICAgICksXG4gICAgKSlcbiAgKTtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY3JlZW5UcmFja2luZ1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgZGlzcG9zYWJsZTogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHJvdXRlcjogUm91dGVyLFxuICAgIEBPcHRpb25hbCgpIHRpdGxlOiBUaXRsZSxcbiAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgdXNlclRyYWNraW5nU2VydmljZTogVXNlclRyYWNraW5nU2VydmljZSxcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICkge1xuICAgIHJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdzY3JlZW4tdHJhY2tpbmcnKTtcbiAgICAvLyBUaGUgQVBQX0lOSVRJQUxJWkVSIHRoYXQgaXMgbWFraW5nIGlzU3VwcG9ydGVkKCkgc3luYyBmb3IgdGhlIHNha2Ugb2YgY29udmVuaWVudCBESVxuICAgIC8vIG1heSBub3QgYmUgZG9uZSB3aGVuIHNlcnZpY2VzIGFyZSBpbml0aWFsaXplZC4gR3VhcmQgdGhlIGZ1bmN0aW9uYWxpdHkgYnkgZmlyc3QgZW5zdXJpbmdcbiAgICAvLyB0aGF0IHRoZSAoZ2xvYmFsKSBwcm9taXNlIGhhcyByZXNvbHZlZCwgdGhlbiBnZXQgQW5hbHl0aWNzIGZyb20gdGhlIGluamVjdG9yLlxuICAgIGlzU3VwcG9ydGVkKCkudGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBhbmFseXRpY3MgPSBpbmplY3Rvci5nZXQoQW5hbHl0aWNzKTtcbiAgICAgIGlmICghcm91dGVyIHx8ICFhbmFseXRpY3MpIHsgcmV0dXJuOyB9XG4gICAgICB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwb3NhYmxlID0gybVzY3JlZW5WaWV3RXZlbnQocm91dGVyLCB0aXRsZSwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChhc3luYyBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXJUcmFja2luZ1NlcnZpY2UpIHsgYXdhaXQgdXNlclRyYWNraW5nU2VydmljZS5pbml0aWFsaXplZDsgfVxuICAgICAgICAgICAgcmV0dXJuIGxvZ0V2ZW50KGFuYWx5dGljcywgU0NSRUVOX1ZJRVdfRVZFTlQsIHBhcmFtcyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZGlzcG9zYWJsZSkge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXRyYWNraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5hbHl0aWNzL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQUU5RCxNQUFNLHlCQUF5QixHQUFHLHVCQUF1QixDQUFDO0FBQzFELE1BQU0sa0NBQWtDLEdBQUcseUJBQXlCLENBQUM7QUFDckUsTUFBTSx3Q0FBd0MsR0FBRyxzQkFBc0IsQ0FBQztBQUN4RSxNQUFNLGlDQUFpQyxHQUFHLDBCQUEwQixDQUFDO0FBQ3JFLE1BQU0seUJBQXlCLEdBQUcsdUJBQXVCLENBQUM7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QUFTLEVBQUUsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7d0dBbENVLHFCQUFxQjs0R0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzswQkFNTixRQUFROzswQkFDUixRQUFROzswQkFHUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQWN0aXZhdGlvbkVuZCwgUm91dGVyLCDJtUVtcHR5T3V0bGV0Q29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBncm91cEJ5LCBtYXAsIG1lcmdlTWFwLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBbmFseXRpY3MgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBpc1N1cHBvcnRlZCwgbG9nRXZlbnQgfSBmcm9tICcuL2ZpcmViYXNlJztcbmltcG9ydCB7IFVzZXJUcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3VzZXItdHJhY2tpbmcuc2VydmljZSc7XG5cbmNvbnN0IEZJUkVCQVNFX0VWRU5UX09SSUdJTl9LRVkgPSAnZmlyZWJhc2VfZXZlbnRfb3JpZ2luJztcbmNvbnN0IEZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9DTEFTU19LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfY2xhc3MnO1xuY29uc3QgRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWSA9ICdmaXJlYmFzZV9wcmV2aW91c19pZCc7XG5jb25zdCBGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fTkFNRV9LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfc2NyZWVuJztcbmNvbnN0IEZJUkVCQVNFX1NDUkVFTl9DTEFTU19LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuX2NsYXNzJztcbmNvbnN0IEZJUkVCQVNFX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuX2lkJztcbmNvbnN0IEZJUkVCQVNFX1NDUkVFTl9OQU1FX0tFWSA9ICdmaXJlYmFzZV9zY3JlZW4nO1xuY29uc3QgT1VUTEVUX0tFWSA9ICdvdXRsZXQnO1xuY29uc3QgUEFHRV9QQVRIX0tFWSA9ICdwYWdlX3BhdGgnO1xuY29uc3QgUEFHRV9USVRMRV9LRVkgPSAncGFnZV90aXRsZSc7XG5jb25zdCBTQ1JFRU5fQ0xBU1NfS0VZID0gJ3NjcmVlbl9jbGFzcyc7XG5jb25zdCBTQ1JFRU5fTkFNRV9LRVkgPSAnc2NyZWVuX25hbWUnO1xuY29uc3QgU0NSRUVOX1ZJRVdfRVZFTlQgPSAnc2NyZWVuX3ZpZXcnO1xuY29uc3QgRVZFTlRfT1JJR0lOX0FVVE8gPSAnYXV0byc7XG5jb25zdCBTQ1JFRU5fSU5TVEFOQ0VfREVMSU1JVEVSID0gJyMnO1xuXG4vLyB0aGlzIGlzIGFuIElOVDY0IGluIGlPUy9BbmRyb2lkIGJ1dCB1c2UgSU5UMzIgY2F1c2UgamF2YXNjcmlwdFxubGV0IG5leHRTY3JlZW5JbnN0YW5jZUlEID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDIgKiogMzIgLSAxKSkgLSAyICoqIDMxO1xuXG5jb25zdCBrbm93blNjcmVlbkluc3RhbmNlSURzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG5cbmNvbnN0IGdldFNjcmVlbkluc3RhbmNlSUQgPSAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gIC8vIHVuaXF1ZSB0aGUgc2NyZWVuIGNsYXNzIGFnYWluc3QgdGhlIG91dGxldCBuYW1lXG4gIGNvbnN0IHNjcmVlbkluc3RhbmNlS2V5ID0gW1xuICAgIHBhcmFtc1tTQ1JFRU5fQ0xBU1NfS0VZXSxcbiAgICBwYXJhbXNbT1VUTEVUX0tFWV1cbiAgXS5qb2luKFNDUkVFTl9JTlNUQU5DRV9ERUxJTUlURVIpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChrbm93blNjcmVlbkluc3RhbmNlSURzLmhhc093blByb3BlcnR5KHNjcmVlbkluc3RhbmNlS2V5KSkge1xuICAgIHJldHVybiBrbm93blNjcmVlbkluc3RhbmNlSURzW3NjcmVlbkluc3RhbmNlS2V5XTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByZXQgPSBuZXh0U2NyZWVuSW5zdGFuY2VJRCsrO1xuICAgIGtub3duU2NyZWVuSW5zdGFuY2VJRHNbc2NyZWVuSW5zdGFuY2VLZXldID0gcmV0O1xuICAgIHJldHVybiByZXQ7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCDJtXNjcmVlblZpZXdFdmVudCA9IChcbiAgcm91dGVyOiBSb3V0ZXIsXG4gIHRpdGxlOiBUaXRsZXxudWxsLFxuICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbik6IE9ic2VydmFibGU8e1xuICBbU0NSRUVOX05BTUVfS0VZXTogc3RyaW5nLFxuICBbUEFHRV9QQVRIX0tFWV06IHN0cmluZyxcbiAgW0ZJUkVCQVNFX0VWRU5UX09SSUdJTl9LRVldOiAnYXV0bycsXG4gIFtGSVJFQkFTRV9TQ1JFRU5fTkFNRV9LRVldOiBzdHJpbmcsXG4gIFtPVVRMRVRfS0VZXTogc3RyaW5nLFxuICBbUEFHRV9USVRMRV9LRVldPzogc3RyaW5nLFxuICBbU0NSRUVOX0NMQVNTX0tFWV06IHN0cmluZyxcbiAgW0ZJUkVCQVNFX1NDUkVFTl9DTEFTU19LRVldOiBzdHJpbmcsXG4gIFtGSVJFQkFTRV9TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZXTogbnVtYmVyLFxuICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0NMQVNTX0tFWV06IHN0cmluZyxcbiAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9OQU1FX0tFWV06IHN0cmluZyxcbiAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVldOiBudW1iZXIsXG59PiA9PiB7XG4gIGNvbnN0IGFjdGl2YXRpb25FbmRFdmVudHMgPSByb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyPEFjdGl2YXRpb25FbmQ+KGUgPT4gZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmQpKTtcbiAgcmV0dXJuIGFjdGl2YXRpb25FbmRFdmVudHMucGlwZShcbiAgICBzd2l0Y2hNYXA8QWN0aXZhdGlvbkVuZCwgT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+fG51bGw+PihhY3RpdmF0aW9uRW5kID0+IHtcbiAgICAgIC8vIHJvdXRlciBwYXJzZVVybCBpcyBoYXZpbmcgdHJvdWJsZSB3aXRoIG91dGxldHMgd2hlbiB0aGV5J3JlIGVtcHR5XG4gICAgICAvLyBlLmcsIC9hc2RmLzEoYm9iOi8vc2FsbHk6YXNkZiksIHNvIHB1dCBhbm90aGVyIHNsYXNoIGluIHdoZW4gZW1wdHlcbiAgICAgIGNvbnN0IHVybFRyZWUgPSByb3V0ZXIucGFyc2VVcmwocm91dGVyLnVybC5yZXBsYWNlKC8oPzpcXCgpLisoPzpcXCkpL2csIGEgPT4gYS5yZXBsYWNlKCc6Ly8nLCAnOi8vLycpKSk7XG4gICAgICBjb25zdCBwYWdlUGF0aCA9IHVybFRyZWUucm9vdC5jaGlsZHJlblthY3RpdmF0aW9uRW5kLnNuYXBzaG90Lm91dGxldF0/LnRvU3RyaW5nKCkgfHwgJyc7XG4gICAgICBjb25zdCBhY3R1YWxTbmFwc2hvdCA9IHJvdXRlci5yb3V0ZXJTdGF0ZS5yb290LmNoaWxkcmVuLm1hcChpdCA9PiBpdCkuZmluZChpdCA9PiBpdC5vdXRsZXQgPT09IGFjdGl2YXRpb25FbmQuc25hcHNob3Qub3V0bGV0KTtcblxuICAgICAgaWYgKCFhY3R1YWxTbmFwc2hvdCkge1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBhY3R1YWxEZWVwID0gYWN0dWFsU25hcHNob3Q7XG4gICAgICB3aGlsZSAoYWN0dWFsRGVlcC5maXJzdENoaWxkKSB7XG4gICAgICAgIGFjdHVhbERlZXAgPSBhY3R1YWxEZWVwLmZpcnN0Q2hpbGQ7XG4gICAgICB9XG4gICAgICBjb25zdCBzY3JlZW5OYW1lID0gYWN0dWFsRGVlcC5wYXRoRnJvbVJvb3QubWFwKHMgPT4gcy5yb3V0ZUNvbmZpZz8ucGF0aCkuZmlsdGVyKGl0ID0+IGl0KS5qb2luKCcvJykgfHwgJy8nO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIFtTQ1JFRU5fTkFNRV9LRVldOiBzY3JlZW5OYW1lLFxuICAgICAgICBbUEFHRV9QQVRIX0tFWV06IGAvJHtwYWdlUGF0aH1gLFxuICAgICAgICBbRklSRUJBU0VfRVZFTlRfT1JJR0lOX0tFWV06IEVWRU5UX09SSUdJTl9BVVRPLFxuICAgICAgICBbRklSRUJBU0VfU0NSRUVOX05BTUVfS0VZXTogc2NyZWVuTmFtZSxcbiAgICAgICAgW09VVExFVF9LRVldOiBhY3RpdmF0aW9uRW5kLnNuYXBzaG90Lm91dGxldFxuICAgICAgfTtcbiAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICBwYXJhbXNbUEFHRV9USVRMRV9LRVldID0gdGl0bGUuZ2V0VGl0bGUoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNvbXBvbmVudCA9IGFjdHVhbFNuYXBzaG90LmNvbXBvbmVudDtcbiAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgaWYgKGNvbXBvbmVudCA9PT0gybVFbXB0eU91dGxldENvbXBvbmVudCkge1xuICAgICAgICAgIGxldCBkZWVwU25hcHNob3QgPSBhY3RpdmF0aW9uRW5kLnNuYXBzaG90O1xuICAgICAgICAgIC8vIFRPRE8gd2hlbiBtaWdodCB0aGVyZSBiZSBtdXRwbGUgY2hpbGRyZW4sIGRpZmZlcmVudCBvdXRsZXRzPyBleHBsb3JlXG4gICAgICAgICAgd2hpbGUgKGRlZXBTbmFwc2hvdC5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBkZWVwU25hcHNob3QgPSBkZWVwU25hcHNob3QuZmlyc3RDaGlsZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29tcG9uZW50ID0gZGVlcFNuYXBzaG90LmNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50ID0gYWN0aXZhdGlvbkVuZC5zbmFwc2hvdC5jb21wb25lbnQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgY29tcG9uZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gb2YoeyAuLi5wYXJhbXMsIFtTQ1JFRU5fQ0xBU1NfS0VZXTogY29tcG9uZW50IH0pO1xuICAgICAgfSBlbHNlIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xuICAgICAgICByZXR1cm4gb2YoeyAuLi5wYXJhbXMsIFtTQ1JFRU5fQ0xBU1NfS0VZXTogY29tcG9uZW50RmFjdG9yeS5zZWxlY3RvciB9KTtcbiAgICAgIH1cbiAgICAgIC8vIGxhenkgbG9hZHMgY2F1c2UgZXh0cmEgYWN0aXZhdGlvbnMsIGlnbm9yZVxuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH0pLFxuICAgIGZpbHRlcihpdCA9PiAhIWl0KSxcbiAgICBtYXAocGFyYW1zID0+ICh7XG4gICAgICBbRklSRUJBU0VfU0NSRUVOX0NMQVNTX0tFWV06IHBhcmFtc1tTQ1JFRU5fQ0xBU1NfS0VZXSxcbiAgICAgIFtGSVJFQkFTRV9TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZXTogZ2V0U2NyZWVuSW5zdGFuY2VJRChwYXJhbXMpLFxuICAgICAgLi4ucGFyYW1zXG4gICAgfSkpLFxuICAgIGdyb3VwQnkoaXQgPT4gaXRbT1VUTEVUX0tFWV0pLFxuICAgIG1lcmdlTWFwKGl0ID0+IGl0LnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpKSxcbiAgICAgIHN0YXJ0V2l0aDxhbnksIGFueT4odW5kZWZpbmVkKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKFtwcmlvciwgY3VycmVudF0pID0+XG4gICAgICAgIHByaW9yID8ge1xuICAgICAgICAgIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fQ0xBU1NfS0VZXTogcHJpb3JbU0NSRUVOX0NMQVNTX0tFWV0sXG4gICAgICAgICAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9OQU1FX0tFWV06IHByaW9yW1NDUkVFTl9OQU1FX0tFWV0sXG4gICAgICAgICAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVldOiBwcmlvcltGSVJFQkFTRV9TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZXSxcbiAgICAgICAgICAuLi5jdXJyZW50XG4gICAgICAgIH0gOiBjdXJyZW50XG4gICAgICApLFxuICAgICkpXG4gICk7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2NyZWVuVHJhY2tpbmdTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIGRpc3Bvc2FibGU6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSB0aXRsZTogVGl0bGUsXG4gICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgem9uZTogTmdab25lLFxuICAgIEBPcHRpb25hbCgpIHVzZXJUcmFja2luZ1NlcnZpY2U6IFVzZXJUcmFja2luZ1NlcnZpY2UsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICApIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnc2NyZWVuLXRyYWNraW5nJyk7XG4gICAgLy8gVGhlIEFQUF9JTklUSUFMSVpFUiB0aGF0IGlzIG1ha2luZyBpc1N1cHBvcnRlZCgpIHN5bmMgZm9yIHRoZSBzYWtlIG9mIGNvbnZlbmllbnQgRElcbiAgICAvLyBtYXkgbm90IGJlIGRvbmUgd2hlbiBzZXJ2aWNlcyBhcmUgaW5pdGlhbGl6ZWQuIEd1YXJkIHRoZSBmdW5jdGlvbmFsaXR5IGJ5IGZpcnN0IGVuc3VyaW5nXG4gICAgLy8gdGhhdCB0aGUgKGdsb2JhbCkgcHJvbWlzZSBoYXMgcmVzb2x2ZWQsIHRoZW4gZ2V0IEFuYWx5dGljcyBmcm9tIHRoZSBpbmplY3Rvci5cbiAgICBpc1N1cHBvcnRlZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgYW5hbHl0aWNzID0gaW5qZWN0b3IuZ2V0KEFuYWx5dGljcyk7XG4gICAgICBpZiAoIXJvdXRlciB8fCAhYW5hbHl0aWNzKSB7IHJldHVybjsgfVxuICAgICAgem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcG9zYWJsZSA9IMm1c2NyZWVuVmlld0V2ZW50KHJvdXRlciwgdGl0bGUsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcGFyYW1zID0+IHtcbiAgICAgICAgICAgIGlmICh1c2VyVHJhY2tpbmdTZXJ2aWNlKSB7IGF3YWl0IHVzZXJUcmFja2luZ1NlcnZpY2UuaW5pdGlhbGl6ZWQ7IH1cbiAgICAgICAgICAgIHJldHVybiBsb2dFdmVudChhbmFseXRpY3MsIFNDUkVFTl9WSUVXX0VWRU5ULCBwYXJhbXMpO1xuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmRpc3Bvc2FibGUpIHtcbiAgICAgIHRoaXMuZGlzcG9zYWJsZS51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|