@dereekb/dbx-analytics 4.1.0 → 5.1.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/esm2020/lib/action/analytics.action.directive.mjs +7 -6
- package/esm2020/lib/action/analytics.action.module.mjs +3 -7
- package/esm2020/lib/analytics/analytics.mjs +1 -1
- package/esm2020/lib/analytics/analytics.module.mjs +1 -1
- package/esm2020/lib/analytics/analytics.service.mjs +6 -7
- package/esm2020/lib/analytics/analytics.stream.mjs +1 -1
- package/esm2020/lib/providers/segment/segment.listener.service.mjs +6 -4
- package/esm2020/lib/providers/segment/segment.module.mjs +1 -1
- package/esm2020/lib/providers/segment/segment.service.mjs +2 -2
- package/fesm2015/dereekb-dbx-analytics.mjs +18 -19
- package/fesm2015/dereekb-dbx-analytics.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-analytics.mjs +18 -19
- package/fesm2020/dereekb-dbx-analytics.mjs.map +1 -1
- package/lib/action/analytics.action.directive.d.ts +10 -10
- package/lib/analytics/analytics.d.ts +1 -1
- package/lib/analytics/analytics.stream.d.ts +2 -2
- package/package.json +4 -4
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { filterMaybe } from '@dereekb/rxjs';
|
|
2
|
-
import { switchMap, tap, shareReplay } from 'rxjs
|
|
2
|
+
import { switchMap, tap, shareReplay, BehaviorSubject, merge, of } from 'rxjs';
|
|
3
3
|
import { Host, Directive, Input } from '@angular/core';
|
|
4
|
-
import { BehaviorSubject, merge, of } from 'rxjs';
|
|
5
4
|
import { DbxActionContextStoreSourceInstance, AbstractSubscriptionDirective } from '@dereekb/dbx-core';
|
|
6
5
|
import { DbxAnalyticsService } from '../analytics/analytics.service';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
@@ -32,7 +31,8 @@ export class DbxActionAnalyticsDirective extends AbstractSubscriptionDirective {
|
|
|
32
31
|
this._config.next(config);
|
|
33
32
|
}
|
|
34
33
|
ngOnInit() {
|
|
35
|
-
this.sub = this.config
|
|
34
|
+
this.sub = this.config$
|
|
35
|
+
.pipe(switchMap(({ onTriggered, onReady, onSuccess, onError }) => {
|
|
36
36
|
const triggerObs = [];
|
|
37
37
|
if (onTriggered) {
|
|
38
38
|
triggerObs.push(this.source.triggered$.pipe(tap(() => onTriggered(this.analyticsService))));
|
|
@@ -52,7 +52,8 @@ export class DbxActionAnalyticsDirective extends AbstractSubscriptionDirective {
|
|
|
52
52
|
else {
|
|
53
53
|
return of();
|
|
54
54
|
}
|
|
55
|
-
}))
|
|
55
|
+
}))
|
|
56
|
+
.subscribe();
|
|
56
57
|
}
|
|
57
58
|
ngOnDestroy() {
|
|
58
59
|
this.source.lockSet.onNextUnlock(() => {
|
|
@@ -66,7 +67,7 @@ DbxActionAnalyticsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.
|
|
|
66
67
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxActionAnalyticsDirective, decorators: [{
|
|
67
68
|
type: Directive,
|
|
68
69
|
args: [{
|
|
69
|
-
selector: '[dbxActionAnalytics]'
|
|
70
|
+
selector: '[dbxActionAnalytics]'
|
|
70
71
|
}]
|
|
71
72
|
}], ctorParameters: function () { return [{ type: i1.DbxActionContextStoreSourceInstance, decorators: [{
|
|
72
73
|
type: Host
|
|
@@ -74,4 +75,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
74
75
|
type: Input,
|
|
75
76
|
args: ['dbxActionAnalytics']
|
|
76
77
|
}] } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmFjdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYWN0aW9uL2FuYWx5dGljcy5hY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFHckUsTUFBTSxDQUFOLElBQVksNkJBS1g7QUFMRCxXQUFZLDZCQUE2QjtJQUN2Qyx1RkFBTyxDQUFBO0lBQ1AsbUZBQUssQ0FBQTtJQUNMLHVGQUFPLENBQUE7SUFDUCxtRkFBSyxDQUFBO0FBQ1AsQ0FBQyxFQUxXLDZCQUE2QixLQUE3Qiw2QkFBNkIsUUFLeEM7QUFTRDs7R0FFRztBQUlILE1BQU0sT0FBTywyQkFBa0MsU0FBUSw2QkFBNkI7SUFhbEYsWUFBNkIsTUFBaUQsRUFBVyxnQkFBcUM7UUFDNUgsS0FBSyxFQUFFLENBQUM7UUFEbUIsV0FBTSxHQUFOLE1BQU0sQ0FBMkM7UUFBVyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBWnRILFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBd0MsU0FBUyxDQUFDLENBQUM7UUFDL0UsWUFBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBYXBFLENBQUM7SUFYRCxJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUE2QztRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBTUQsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU87YUFDcEIsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUN6RCxNQUFNLFVBQVUsR0FBMEIsRUFBRSxDQUFDO1lBRTdDLElBQUksV0FBVyxFQUFFO2dCQUNmLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0Y7WUFFRCxJQUFJLE9BQU8sRUFBRTtnQkFDWCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEc7WUFFRCxJQUFJLFNBQVMsRUFBRTtnQkFDYixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkc7WUFFRCxJQUFJLE9BQU8sRUFBRTtnQkFDWCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakc7WUFFRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLE9BQU8sRUFBRSxFQUFFLENBQUM7YUFDYjtRQUNILENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3dIQXREVSwyQkFBMkI7NEdBQTNCLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzswQkFjYyxJQUFJOzhFQVJiLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXJNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAsIHNoYXJlUmVwbGF5LCBCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSG9zdCwgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlLCBBYnN0cmFjdFN1YnNjcmlwdGlvbkRpcmVjdGl2ZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IERieEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3MvYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF5YmUsIFJlYWRhYmxlRXJyb3IgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcblxuZXhwb3J0IGVudW0gRGJ4QWN0aW9uQW5hbHl0aWNzVHJpZ2dlclR5cGUge1xuICBUUklHR0VSLFxuICBSRUFEWSxcbiAgU1VDQ0VTUyxcbiAgRVJST1Jcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhBY3Rpb25BbmFseXRpY3NDb25maWc8VCA9IHVua25vd24sIE8gPSB1bmtub3duPiB7XG4gIG9uVHJpZ2dlcmVkOiAoc2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSkgPT4gdm9pZDtcbiAgb25SZWFkeTogKHNlcnZpY2U6IERieEFuYWx5dGljc1NlcnZpY2UsIHZhbHVlOiBUKSA9PiB2b2lkO1xuICBvblN1Y2Nlc3M6IChzZXJ2aWNlOiBEYnhBbmFseXRpY3NTZXJ2aWNlLCB2YWx1ZTogTWF5YmU8Tz4pID0+IHZvaWQ7XG4gIG9uRXJyb3I6IChzZXJ2aWNlOiBEYnhBbmFseXRpY3NTZXJ2aWNlLCBlcnJvcjogTWF5YmU8UmVhZGFibGVFcnJvcj4pID0+IHZvaWQ7XG59XG5cbi8qKlxuICogVXNlZCB0byBsaXN0ZW4gdG8gYW4gQWN0aW9uQ29udGV4dCBhbmQgc2VuZCBhbmFseXRpY2FsIGV2ZW50cyBiYXNlZCBvbiBhY3Rpb24gZXZlbnRzLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4QWN0aW9uQW5hbHl0aWNzXSdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4QWN0aW9uQW5hbHl0aWNzRGlyZWN0aXZlPFQsIE8+IGV4dGVuZHMgQWJzdHJhY3RTdWJzY3JpcHRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2NvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RGJ4QWN0aW9uQW5hbHl0aWNzQ29uZmlnPFQsIE8+Pj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY29uZmlnJCA9IHRoaXMuX2NvbmZpZy5waXBlKGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICBASW5wdXQoJ2RieEFjdGlvbkFuYWx5dGljcycpXG4gIGdldCBjb25maWcoKTogTWF5YmU8RGJ4QWN0aW9uQW5hbHl0aWNzQ29uZmlnPFQsIE8+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy52YWx1ZTtcbiAgfVxuXG4gIHNldCBjb25maWcoY29uZmlnOiBNYXliZTxEYnhBY3Rpb25BbmFseXRpY3NDb25maWc8VCwgTz4+KSB7XG4gICAgdGhpcy5fY29uZmlnLm5leHQoY29uZmlnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgcmVhZG9ubHkgc291cmNlOiBEYnhBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2VJbnN0YW5jZTxULCBPPiwgcmVhZG9ubHkgYW5hbHl0aWNzU2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YiA9IHRoaXMuY29uZmlnJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeyBvblRyaWdnZXJlZCwgb25SZWFkeSwgb25TdWNjZXNzLCBvbkVycm9yIH0pID0+IHtcbiAgICAgICAgICBjb25zdCB0cmlnZ2VyT2JzOiBPYnNlcnZhYmxlPHVua25vd24+W10gPSBbXTtcblxuICAgICAgICAgIGlmIChvblRyaWdnZXJlZCkge1xuICAgICAgICAgICAgdHJpZ2dlck9icy5wdXNoKHRoaXMuc291cmNlLnRyaWdnZXJlZCQucGlwZSh0YXAoKCkgPT4gb25UcmlnZ2VyZWQodGhpcy5hbmFseXRpY3NTZXJ2aWNlKSkpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob25SZWFkeSkge1xuICAgICAgICAgICAgdHJpZ2dlck9icy5wdXNoKHRoaXMuc291cmNlLnZhbHVlUmVhZHkkLnBpcGUodGFwKCh2YWx1ZSkgPT4gb25SZWFkeSh0aGlzLmFuYWx5dGljc1NlcnZpY2UsIHZhbHVlKSkpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob25TdWNjZXNzKSB7XG4gICAgICAgICAgICB0cmlnZ2VyT2JzLnB1c2godGhpcy5zb3VyY2Uuc3VjY2VzcyQucGlwZSh0YXAoKHJlc3VsdCkgPT4gb25TdWNjZXNzKHRoaXMuYW5hbHl0aWNzU2VydmljZSwgcmVzdWx0KSkpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgdHJpZ2dlck9icy5wdXNoKHRoaXMuc291cmNlLmVycm9yJC5waXBlKHRhcCgoZXJyb3IpID0+IG9uRXJyb3IodGhpcy5hbmFseXRpY3NTZXJ2aWNlLCBlcnJvcikpKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRyaWdnZXJPYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2UodHJpZ2dlck9icyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc291cmNlLmxvY2tTZXQub25OZXh0VW5sb2NrKCgpID0+IHtcbiAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICB0aGlzLl9jb25maWcuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -9,12 +9,8 @@ DbxAnalyticsActionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0"
|
|
|
9
9
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAnalyticsActionModule, decorators: [{
|
|
10
10
|
type: NgModule,
|
|
11
11
|
args: [{
|
|
12
|
-
declarations: [
|
|
13
|
-
|
|
14
|
-
],
|
|
15
|
-
exports: [
|
|
16
|
-
DbxActionAnalyticsDirective
|
|
17
|
-
]
|
|
12
|
+
declarations: [DbxActionAnalyticsDirective],
|
|
13
|
+
exports: [DbxActionAnalyticsDirective]
|
|
18
14
|
}]
|
|
19
15
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmFjdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYWN0aW9uL2FuYWx5dGljcy5hY3Rpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBTTNFLE1BQU0sT0FBTyx3QkFBd0I7O3FIQUF4Qix3QkFBd0I7c0hBQXhCLHdCQUF3QixpQkFIcEIsMkJBQTJCLGFBQ2hDLDJCQUEyQjtzSEFFMUIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBSnBDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQzNDLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhBY3Rpb25BbmFseXRpY3NEaXJlY3RpdmUgfSBmcm9tICcuL2FuYWx5dGljcy5hY3Rpb24uZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRGJ4QWN0aW9uQW5hbHl0aWNzRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0RieEFjdGlvbkFuYWx5dGljc0RpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4QW5hbHl0aWNzQWN0aW9uTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWFuYWx5dGljcy9zcmMvbGliL2FuYWx5dGljcy9hbmFseXRpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlLCBQcmltYXRpdmVLZXkgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcblxuZXhwb3J0IHR5cGUgRGJ4QW5hbHl0aWNzRXZlbnROYW1lID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgRGJ4QW5hbHl0aWNzVXNlcklkID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEFuYWx5dGljc1VzZXIge1xuICByZWFkb25seSB1c2VyOiBEYnhBbmFseXRpY3NVc2VySWQ7XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiB7XG4gICAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogUHJpbWF0aXZlS2V5IHwgYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhBbmFseXRpY3NFdmVudERhdGEge1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiBQcmltYXRpdmVLZXkgfCBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieEFuYWx5dGljc0V2ZW50IHtcbiAgcmVhZG9ubHkgbmFtZT86IERieEFuYWx5dGljc0V2ZW50TmFtZTtcbiAgcmVhZG9ubHkgdmFsdWU/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGRhdGE/OiBEYnhBbmFseXRpY3NFdmVudERhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4VXNlckFuYWx5dGljc0V2ZW50IGV4dGVuZHMgRGJ4QW5hbHl0aWNzRXZlbnQge1xuICByZWFkb25seSB1c2VyPzogTWF5YmU8RGJ4QW5hbHl0aWNzVXNlcj47XG59XG5cbi8vIE1BUks6IE5ldyBVc2VyXG5leHBvcnQgdHlwZSBOZXdVc2VyUmVnaXN0cmF0aW9uTWV0aG9kID0gJ2ZhY2Vib29rJyB8ICdnb29nbGUnIHwgJ2VtYWlsJyB8IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBOZXdVc2VyQW5hbHl0aWNzRXZlbnREYXRhIGV4dGVuZHMgRGJ4QW5hbHl0aWNzRXZlbnREYXRhIHtcbiAgbWV0aG9kOiBOZXdVc2VyUmVnaXN0cmF0aW9uTWV0aG9kO1xufVxuIl19
|
|
@@ -20,4 +20,4 @@ DbxAnalyticsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", vers
|
|
|
20
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAnalyticsModule, decorators: [{
|
|
21
21
|
type: NgModule
|
|
22
22
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1hbmFseXRpY3Mvc3JjL2xpYi9hbmFseXRpY3MvYW5hbHl0aWNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFVMUQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQWtDO1FBQy9DLE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRTtnQkFDVCxnQkFBZ0I7Z0JBQ2hCLE9BQU8sQ0FBQyw4QkFBOEI7Z0JBQ3RDLFVBQVU7Z0JBQ1YsbUJBQW1CO2FBQ3BCO1NBQ0YsQ0FBQztJQUNKLENBQUM7OytHQVhVLGtCQUFrQjtnSEFBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4QW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEFuYWx5dGljc01vZHVsZU9wdGlvbnMge1xuICAvKipcbiAgICogUHJvdmlkZXMgYSBBbmFseXRpY3NTZXJ2aWNlQ29uZmlndXJhdGlvbiB2YWx1ZS5cbiAgICovXG4gIGFuYWx5dGljc0NvbmZpZ3VyYXRpb25Qcm92aWRlcjogUHJvdmlkZXI7XG59XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgRGJ4QW5hbHl0aWNzTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3Qob3B0aW9uczogRGJ4QW5hbHl0aWNzTW9kdWxlT3B0aW9ucyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGJ4QW5hbHl0aWNzTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBEYnhBbmFseXRpY3NNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLy8gQ29uZmlndXJhdGlvblxuICAgICAgICBvcHRpb25zLmFuYWx5dGljc0NvbmZpZ3VyYXRpb25Qcm92aWRlcixcbiAgICAgICAgLy8gU2VydmljZVxuICAgICAgICBEYnhBbmFseXRpY3NTZXJ2aWNlXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Subject, BehaviorSubject, of } from 'rxjs';
|
|
2
|
-
import { first, shareReplay, switchMap } from 'rxjs/operators';
|
|
1
|
+
import { Subject, BehaviorSubject, of, first, shareReplay, switchMap } from 'rxjs';
|
|
3
2
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
4
3
|
import { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';
|
|
5
4
|
import { DbxAnalyticsStreamEventType } from './analytics.stream';
|
|
@@ -20,7 +19,7 @@ export class AbstractDbxAnalyticsServiceListener {
|
|
|
20
19
|
this._sub = new SubscriptionObject();
|
|
21
20
|
this._analytics = new BehaviorSubject(undefined);
|
|
22
21
|
this.analytics$ = this._analytics.pipe(filterMaybe(), shareReplay(1));
|
|
23
|
-
this.analyticsEvents$ = this.analytics$.pipe(switchMap(x => x.events$), shareReplay(1));
|
|
22
|
+
this.analyticsEvents$ = this.analytics$.pipe(switchMap((x) => x.events$), shareReplay(1));
|
|
24
23
|
}
|
|
25
24
|
// MARK: AnalyticsServiceListener
|
|
26
25
|
listenToService(service) {
|
|
@@ -50,7 +49,7 @@ export class DbxAnalyticsStreamEventAnalyticsEventWrapper {
|
|
|
50
49
|
return this.event.user;
|
|
51
50
|
}
|
|
52
51
|
get userId() {
|
|
53
|
-
return
|
|
52
|
+
return this.user ? this.user.user : undefined;
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
/**
|
|
@@ -62,7 +61,7 @@ export class DbxAnalyticsService {
|
|
|
62
61
|
this._subject = new Subject();
|
|
63
62
|
this.events$ = this._subject.asObservable();
|
|
64
63
|
this._userSource = new BehaviorSubject(undefined);
|
|
65
|
-
this.user$ = this._userSource.pipe(switchMap(x => (x
|
|
64
|
+
this.user$ = this._userSource.pipe(switchMap((x) => (x ? x.analyticsUser$ : of(undefined))), shareReplay(1));
|
|
66
65
|
this._userSourceSub = new SubscriptionObject();
|
|
67
66
|
this._loggerSub = new SubscriptionObject();
|
|
68
67
|
this._init();
|
|
@@ -136,7 +135,7 @@ export class DbxAnalyticsService {
|
|
|
136
135
|
}
|
|
137
136
|
sendNextEvent(event = {}, type, userOverride) {
|
|
138
137
|
this.user$.pipe(first()).subscribe((analyticsUser) => {
|
|
139
|
-
const user =
|
|
138
|
+
const user = userOverride != null ? userOverride : analyticsUser;
|
|
140
139
|
const analyticsEvent = { ...event, user };
|
|
141
140
|
this.nextEvent(analyticsEvent, type);
|
|
142
141
|
});
|
|
@@ -188,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
188
187
|
type: Inject,
|
|
189
188
|
args: [DbxAnalyticsUserSource]
|
|
190
189
|
}] }]; } });
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYW5hbHl0aWNzL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFVLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUEyQiwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUcxRixNQUFNLE9BQWdCLCtCQUErQjtDQVFwRDtBQUVELE1BQU0sT0FBZ0IsOEJBQThCO0NBRW5EO0FBRUQsTUFBTSxPQUFnQixzQkFBc0I7Q0FFM0M7QUFFRCxNQUFNLE9BQWdCLDJCQUEyQjtDQUVoRDtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixtQ0FBbUM7SUFBekQ7UUFFVSxTQUFJLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBNkIsU0FBUyxDQUFDLENBQUM7UUFFekUsZUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLHFCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQW9COUYsQ0FBQztJQWxCQyxpQ0FBaUM7SUFDakMsZUFBZSxDQUFDLE9BQTRCO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBRWxELElBQUksR0FBRyxLQUFLLEtBQUssRUFBRTtZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBSUQsZ0JBQWdCO0lBQ2hCLE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUVGO0FBRUQsTUFBTSxPQUFnQixnQ0FBZ0M7SUFBdEQ7UUFDRSxjQUFTLEdBQWtDLEVBQUUsQ0FBQztJQUloRCxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sNENBQTRDO0lBRXZELFlBQTRCLEtBQTRCLEVBQWtCLE9BQW9DLDJCQUEyQixDQUFDLEtBQUs7UUFBbkgsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFBa0IsU0FBSSxHQUFKLElBQUksQ0FBaUU7SUFBSSxDQUFDO0lBRXBKLElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEQsQ0FBQztDQUVGO0FBRUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBa0I5QixZQUNVLE9BQXlDLEVBQ0wsYUFBNEMsT0FBTyxDQUFDLFVBQVU7UUFEbEcsWUFBTyxHQUFQLE9BQU8sQ0FBa0M7UUFWM0MsYUFBUSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO1FBQ2pELFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhDLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQWdDLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLFVBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RyxtQkFBYyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUMxQyxlQUFVLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBTTVDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxlQUFlO0lBQ2Y7O09BRUc7SUFDSSxPQUFPLENBQUMsSUFBNkI7UUFDMUMsSUFBSSxNQUFxQyxDQUFDO1FBRTFDLElBQUksSUFBSSxFQUFFO1lBQ1IsTUFBTSxHQUFHLEVBQUUsY0FBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLGFBQWEsQ0FBQyxNQUE4QjtRQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsSUFBc0IsRUFBRSxJQUErQjtRQUM3RSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2pCLElBQUksRUFBRSxtQkFBbUIsQ0FBQyw0QkFBNEI7WUFDdEQsSUFBSTtTQUNMLEVBQUUsMkJBQTJCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxJQUFzQixFQUFFLElBQTRCO1FBQzVFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDakIsSUFBSSxFQUFFLG1CQUFtQixDQUFDLHFCQUFxQjtZQUMvQyxJQUFJO1NBQ0wsRUFBRSwyQkFBMkIsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLG1CQUFtQixDQUFDLElBQTRCLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDdkUsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNqQixJQUFJLEVBQUUsbUJBQW1CLENBQUMsc0JBQXNCO1lBQ2hELElBQUk7U0FDTCxFQUFFLDJCQUEyQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWhELElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxJQUFzQixFQUFFLElBQTRCO1FBQ2pGLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDakIsSUFBSSxFQUFFLG1CQUFtQixDQUFDLDBCQUEwQjtZQUNwRCxJQUFJO1NBQ0wsRUFBRSwyQkFBMkIsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQTJCLEVBQUUsSUFBNEI7UUFDNUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLElBQUk7WUFDSixJQUFJO1NBQ0wsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxTQUFnQztRQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2pCLElBQUksRUFBRSxTQUFTO1NBQ2hCLEVBQUUsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUF3QjtRQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSwyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQWE7UUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNqQixJQUFJLEVBQUUsSUFBSTtTQUNYLEVBQUUsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVTLGFBQWEsQ0FBQyxRQUEyQixFQUFFLEVBQUUsSUFBaUMsRUFBRSxZQUErQjtRQUN2SCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ25ELE1BQU0sSUFBSSxHQUE0QixDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDNUYsTUFBTSxjQUFjLEdBQTBCLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQTRCLEVBQUUsSUFBaUM7UUFDakYsTUFBTSxPQUFPLEdBQUcsSUFBSSw0Q0FBNEMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQjtJQUNULEtBQUs7UUFFWCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQzdCLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDMUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLHVGQUF1RixDQUFDLENBQUM7U0FDdkc7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBRS9ELDRCQUE0QjtZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEosQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7QUFuSkQsaUNBQWlDO0FBRWpCLGdEQUE0QixHQUFHLGlCQUFrQixDQUFBO0FBQ2pELHlDQUFxQixHQUFHLFlBQWEsQ0FBQTtBQUNyQywwQ0FBc0IsR0FBRyxhQUFjLENBQUE7QUFDdkMsOENBQTBCLEdBQUcsaUJBQWtCLENBQUE7Z0hBUHBELG1CQUFtQixrQkFtQlgsZ0NBQWdDLGFBQzdCLHNCQUFzQjtvSEFwQmpDLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVOzBEQW9CVSxnQ0FBZ0M7MEJBQ2hELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uT2JqZWN0LCBmaWx0ZXJNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4QW5hbHl0aWNzRXZlbnQsIERieEFuYWx5dGljc0V2ZW50RGF0YSwgRGJ4QW5hbHl0aWNzRXZlbnROYW1lLCBEYnhBbmFseXRpY3NVc2VyLCBOZXdVc2VyQW5hbHl0aWNzRXZlbnREYXRhLCBEYnhVc2VyQW5hbHl0aWNzRXZlbnQgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBEYnhBbmFseXRpY3NTdHJlYW1FdmVudCwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlIH0gZnJvbSAnLi9hbmFseXRpY3Muc3RyZWFtJztcbmltcG9ydCB7IE1heWJlLCBEZXN0cm95YWJsZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QW5hbHl0aWNzRXZlbnRFbWl0dGVyU2VydmljZSB7XG4gIGFic3RyYWN0IHNlbmROZXdVc2VyRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YTogTmV3VXNlckFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRVc2VyTG9naW5FdmVudCh1c2VyOiBEYnhBbmFseXRpY3NVc2VyLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFVzZXJMb2dvdXRFdmVudChkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFVzZXJQcm9wZXJ0aWVzRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YT86IERieEFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRFdmVudERhdGEobmFtZTogRGJ4QW5hbHl0aWNzRXZlbnROYW1lLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZEV2ZW50KGV2ZW50OiBEYnhBbmFseXRpY3NFdmVudCk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRQYWdlVmlldyhwYWdlPzogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEFuYWx5dGljc0V2ZW50U3RyZWFtU2VydmljZSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGV2ZW50cyQ6IE9ic2VydmFibGU8RGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQ+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QW5hbHl0aWNzVXNlclNvdXJjZSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGFuYWx5dGljc1VzZXIkOiBPYnNlcnZhYmxlPE1heWJlPERieEFuYWx5dGljc1VzZXI+Pjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lciB7XG4gIHB1YmxpYyBhYnN0cmFjdCBsaXN0ZW5Ub1NlcnZpY2Uoc2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSk6IHZvaWQ7XG59XG5cbi8qKlxuICogQWJzdHJhY3QgQW5hbHl0aWNzU2VydmljZUxpc3RlbmVyIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIgaW1wbGVtZW50cyBEYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIsIERlc3Ryb3lhYmxlIHtcblxuICBwcml2YXRlIF9zdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByb3RlY3RlZCBfYW5hbHl0aWNzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxEYnhBbmFseXRpY3NTZXJ2aWNlPj4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBhbmFseXRpY3MkID0gdGhpcy5fYW5hbHl0aWNzLnBpcGUoZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuICByZWFkb25seSBhbmFseXRpY3NFdmVudHMkID0gdGhpcy5hbmFseXRpY3MkLnBpcGUoc3dpdGNoTWFwKHggPT4geC5ldmVudHMkKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIC8vIE1BUks6IEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lclxuICBsaXN0ZW5Ub1NlcnZpY2Uoc2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSk6IHZvaWQge1xuICAgIHRoaXMuX2FuYWx5dGljcy5uZXh0KHNlcnZpY2UpO1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuX2luaXRpYWxpemVTZXJ2aWNlU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBpZiAoc3ViICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHN1YjtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2luaXRpYWxpemVTZXJ2aWNlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IGZhbHNlO1xuXG4gIC8vIE1BUks6IERlc3Ryb3lcbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmFseXRpY3MuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdWIuZGVzdHJveSgpO1xuICB9XG5cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEFuYWx5dGljc1NlcnZpY2VDb25maWd1cmF0aW9uIHtcbiAgbGlzdGVuZXJzOiBEYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXJbXSA9IFtdO1xuICBpc1Byb2R1Y3Rpb24/OiBib29sZWFuO1xuICBsb2dFdmVudHM/OiBib29sZWFuO1xuICB1c2VyU291cmNlPzogRGJ4QW5hbHl0aWNzVXNlclNvdXJjZTtcbn1cblxuZXhwb3J0IGNsYXNzIERieEFuYWx5dGljc1N0cmVhbUV2ZW50QW5hbHl0aWNzRXZlbnRXcmFwcGVyIGltcGxlbWVudHMgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQge1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBldmVudDogRGJ4VXNlckFuYWx5dGljc0V2ZW50LCBwdWJsaWMgcmVhZG9ubHkgdHlwZTogRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlID0gRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLkV2ZW50KSB7IH1cblxuICBwdWJsaWMgZ2V0IHVzZXIoKTogTWF5YmU8RGJ4QW5hbHl0aWNzVXNlcj4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50LnVzZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVzZXJJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAodGhpcy51c2VyKSA/IHRoaXMudXNlci51c2VyIDogdW5kZWZpbmVkO1xuICB9XG5cbn1cblxuLyoqXG4gKiBQcmltYXJ5IGFuYWx5dGljcyBzZXJ2aWNlIHRoYXQgZW1pdHMgYW5hbHl0aWNzIGV2ZW50cyB0aGF0IGNvbXBvbmVudHMgY2FuIGxpc3RlbiB0by5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieEFuYWx5dGljc1NlcnZpY2UgaW1wbGVtZW50cyBEYnhBbmFseXRpY3NFdmVudFN0cmVhbVNlcnZpY2UsIERieEFuYWx5dGljc0V2ZW50RW1pdHRlclNlcnZpY2UsIERlc3Ryb3lhYmxlIHtcblxuICAvLyBUT0RPOiBNYWtlIHRoZXNlIGNvbmZpZ3VyYWJsZS5cblxuICBzdGF0aWMgcmVhZG9ubHkgVVNFUl9SRUdJU1RSQVRJT05fRVZFTlRfTkFNRSA9ICdVc2VyIFJlZ2lzdGVyZWQnO1xuICBzdGF0aWMgcmVhZG9ubHkgVVNFUl9MT0dJTl9FVkVOVF9OQU1FID0gJ1VzZXIgTG9naW4nO1xuICBzdGF0aWMgcmVhZG9ubHkgVVNFUl9MT0dPVVRfRVZFTlRfTkFNRSA9ICdVc2VyIExvZ291dCc7XG4gIHN0YXRpYyByZWFkb25seSBVU0VSX1BST1BFUlRJRVNfRVZFTlRfTkFNRSA9ICdVc2VyIFByb3BlcnRpZXMnO1xuXG4gIHByaXZhdGUgX3N1YmplY3QgPSBuZXcgU3ViamVjdDxEYnhBbmFseXRpY3NTdHJlYW1FdmVudD4oKTtcbiAgcmVhZG9ubHkgZXZlbnRzJCA9IHRoaXMuX3N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBfdXNlclNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RGJ4QW5hbHl0aWNzVXNlclNvdXJjZT4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHVzZXIkID0gdGhpcy5fdXNlclNvdXJjZS5waXBlKHN3aXRjaE1hcCh4ID0+ICh4KSA/IHguYW5hbHl0aWNzVXNlciQgOiBvZih1bmRlZmluZWQpKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHByaXZhdGUgX3VzZXJTb3VyY2VTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2xvZ2dlclN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb25maWc6IERieEFuYWx5dGljc1NlcnZpY2VDb25maWd1cmF0aW9uLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRGJ4QW5hbHl0aWNzVXNlclNvdXJjZSkgdXNlclNvdXJjZTogTWF5YmU8RGJ4QW5hbHl0aWNzVXNlclNvdXJjZT4gPSBfY29uZmlnLnVzZXJTb3VyY2VcbiAgKSB7XG4gICAgdGhpcy5faW5pdCgpO1xuXG4gICAgaWYgKHVzZXJTb3VyY2UpIHtcbiAgICAgIHRoaXMuc2V0VXNlclNvdXJjZSh1c2VyU291cmNlKTtcbiAgICB9XG4gIH1cblxuICAvLyBNQVJLOiBTb3VyY2VcbiAgLyoqXG4gICAqIFNldHMgdGhlIHVzZXIgZGlyZWN0bHkuXG4gICAqL1xuICBwdWJsaWMgc2V0VXNlcih1c2VyOiBNYXliZTxEYnhBbmFseXRpY3NVc2VyPik6IHZvaWQge1xuICAgIGxldCBzb3VyY2U6IE1heWJlPERieEFuYWx5dGljc1VzZXJTb3VyY2U+O1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHNvdXJjZSA9IHsgYW5hbHl0aWNzVXNlciQ6IG9mKHVzZXIpIH07XG4gICAgfVxuXG4gICAgdGhpcy5fdXNlclNvdXJjZS5uZXh0KHNvdXJjZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0VXNlclNvdXJjZShzb3VyY2U6IERieEFuYWx5dGljc1VzZXJTb3VyY2UpOiB2b2lkIHtcbiAgICB0aGlzLl91c2VyU291cmNlLm5leHQoc291cmNlKTtcbiAgfVxuXG4gIC8vIE1BUks6IEFuYWx5dGljc0V2ZW50RW1pdHRlclNlcnZpY2VcbiAgLyoqXG4gICAqIFNlbmRzIGFuIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHNlbmROZXdVc2VyRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YTogTmV3VXNlckFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudCh7XG4gICAgICBuYW1lOiBEYnhBbmFseXRpY3NTZXJ2aWNlLlVTRVJfUkVHSVNUUkFUSU9OX0VWRU5UX05BTUUsXG4gICAgICBkYXRhXG4gICAgfSwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLk5ld1VzZXJFdmVudCwgdXNlcik7XG4gIH1cblxuICBwdWJsaWMgc2VuZFVzZXJMb2dpbkV2ZW50KHVzZXI6IERieEFuYWx5dGljc1VzZXIsIGRhdGE/OiBEYnhBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoe1xuICAgICAgbmFtZTogRGJ4QW5hbHl0aWNzU2VydmljZS5VU0VSX0xPR0lOX0VWRU5UX05BTUUsXG4gICAgICBkYXRhXG4gICAgfSwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlVzZXJMb2dpbkV2ZW50LCB1c2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kVXNlckxvZ291dEV2ZW50KGRhdGE/OiBEYnhBbmFseXRpY3NFdmVudERhdGEsIGNsZWFyVXNlciA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoe1xuICAgICAgbmFtZTogRGJ4QW5hbHl0aWNzU2VydmljZS5VU0VSX0xPR09VVF9FVkVOVF9OQU1FLFxuICAgICAgZGF0YVxuICAgIH0sIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5Vc2VyTG9nb3V0RXZlbnQpO1xuXG4gICAgaWYgKGNsZWFyVXNlcikge1xuICAgICAgdGhpcy5zZXRVc2VyKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbmRVc2VyUHJvcGVydGllc0V2ZW50KHVzZXI6IERieEFuYWx5dGljc1VzZXIsIGRhdGE/OiBEYnhBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoe1xuICAgICAgbmFtZTogRGJ4QW5hbHl0aWNzU2VydmljZS5VU0VSX1BST1BFUlRJRVNfRVZFTlRfTkFNRSxcbiAgICAgIGRhdGFcbiAgICB9LCBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlclByb3BlcnRpZXNFdmVudCwgdXNlcik7XG4gIH1cblxuICBwdWJsaWMgc2VuZEV2ZW50RGF0YShuYW1lOiBEYnhBbmFseXRpY3NFdmVudE5hbWUsIGRhdGE/OiBEYnhBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5zZW5kRXZlbnQoe1xuICAgICAgbmFtZSxcbiAgICAgIGRhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kRXZlbnRUeXBlKGV2ZW50VHlwZTogRGJ4QW5hbHl0aWNzRXZlbnROYW1lKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KHtcbiAgICAgIG5hbWU6IGV2ZW50VHlwZVxuICAgIH0sIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5FdmVudCk7XG4gIH1cblxuICBwdWJsaWMgc2VuZEV2ZW50KGV2ZW50OiBEYnhBbmFseXRpY3NFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudChldmVudCwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLkV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kUGFnZVZpZXcocGFnZT86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudCh7XG4gICAgICBuYW1lOiBwYWdlXG4gICAgfSwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlBhZ2VWaWV3KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZW5kTmV4dEV2ZW50KGV2ZW50OiBEYnhBbmFseXRpY3NFdmVudCA9IHt9LCB0eXBlOiBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUsIHVzZXJPdmVycmlkZT86IERieEFuYWx5dGljc1VzZXIpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXIkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChhbmFseXRpY3NVc2VyKSA9PiB7XG4gICAgICBjb25zdCB1c2VyOiBNYXliZTxEYnhBbmFseXRpY3NVc2VyPiA9ICh1c2VyT3ZlcnJpZGUgIT0gbnVsbCkgPyB1c2VyT3ZlcnJpZGUgOiBhbmFseXRpY3NVc2VyO1xuICAgICAgY29uc3QgYW5hbHl0aWNzRXZlbnQ6IERieFVzZXJBbmFseXRpY3NFdmVudCA9IHsgLi4uZXZlbnQsIHVzZXIgfTtcbiAgICAgIHRoaXMubmV4dEV2ZW50KGFuYWx5dGljc0V2ZW50LCB0eXBlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZXh0RXZlbnQoZXZlbnQ6IERieFVzZXJBbmFseXRpY3NFdmVudCwgdHlwZTogRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlKTogdm9pZCB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG5ldyBEYnhBbmFseXRpY3NTdHJlYW1FdmVudEFuYWx5dGljc0V2ZW50V3JhcHBlcihldmVudCwgdHlwZSk7XG4gICAgdGhpcy5fc3ViamVjdC5uZXh0KHdyYXBwZXIpO1xuICB9XG5cbiAgLy8gTUFSSzogSW50ZXJuYWxcbiAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLl9jb25maWcuaXNQcm9kdWN0aW9uKSB7XG4gICAgICAvLyBJbml0aWFsaXplIGxpc3RlbmVycy5cbiAgICAgIHRoaXMuX2NvbmZpZy5saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgICAgbGlzdGVuZXIubGlzdGVuVG9TZXJ2aWNlKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignQW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzIG5vdCBpbiBwcm9kdWN0aW9uIG1vZGUuIEFsbCBhbmFseXRpY3MgZXZlbnRzIGFyZSBpZ25vcmVkLicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25maWcubG9nRXZlbnRzIHx8ICF0aGlzLl9jb25maWcuaXNQcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmxvZygnQW5hbHl0aWNzU2VydmljZTogTG9nIGFuYWx5dGljcyBldmVudHMgZW5hYmxlZC4nKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IHN1YnNjcmlwdGlvblxuICAgICAgdGhpcy5fbG9nZ2VyU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBBbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3MgRXZlbnQgLSAke0RieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZVt4LnR5cGVdfSBVc2VyOiAke3gudXNlcklkfSBEYXRhOiAke0pTT04uc3RyaW5naWZ5KHguZXZlbnQpfS5gKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3VzZXJTb3VyY2VTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy51c2VyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZW5kTmV4dEV2ZW50KHt9LCBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckNoYW5nZSk7XG4gICAgfSk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YmplY3QuY29tcGxldGUoKTtcbiAgICB0aGlzLl91c2VyU291cmNlU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9sb2dnZXJTdWIuZGVzdHJveSgpO1xuICB9XG5cbn1cbiJdfQ==
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYW5hbHl0aWNzL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBZ0IsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0csT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUEyQiwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUcxRixNQUFNLE9BQWdCLCtCQUErQjtDQVFwRDtBQUVELE1BQU0sT0FBZ0IsOEJBQThCO0NBRW5EO0FBRUQsTUFBTSxPQUFnQixzQkFBc0I7Q0FFM0M7QUFFRCxNQUFNLE9BQWdCLDJCQUEyQjtDQUVoRDtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixtQ0FBbUM7SUFBekQ7UUFDVSxTQUFJLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBNkIsU0FBUyxDQUFDLENBQUM7UUFFekUsZUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLHFCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUM5QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDM0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFtQkosQ0FBQztJQWpCQyxpQ0FBaUM7SUFDakMsZUFBZSxDQUFDLE9BQTRCO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBRWxELElBQUksR0FBRyxLQUFLLEtBQUssRUFBRTtZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBSUQsZ0JBQWdCO0lBQ2hCLE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFnQixnQ0FBZ0M7SUFBdEQ7UUFDRSxjQUFTLEdBQWtDLEVBQUUsQ0FBQztJQUloRCxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sNENBQTRDO0lBQ3ZELFlBQTRCLEtBQTRCLEVBQWtCLE9BQW9DLDJCQUEyQixDQUFDLEtBQUs7UUFBbkgsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFBa0IsU0FBSSxHQUFKLElBQUksQ0FBaUU7SUFBRyxDQUFDO0lBRW5KLElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFvQjlCLFlBQW9CLE9BQXlDLEVBQThDLGFBQTRDLE9BQU8sQ0FBQyxVQUFVO1FBQXJKLFlBQU8sR0FBUCxPQUFPLENBQWtDO1FBWnJELGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztRQUNqRCxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4QyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFnQyxTQUFTLENBQUMsQ0FBQztRQUMzRSxVQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3BDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ3hELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU0sbUJBQWMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDMUMsZUFBVSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUc1QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsZUFBZTtJQUNmOztPQUVHO0lBQ0ksT0FBTyxDQUFDLElBQTZCO1FBQzFDLElBQUksTUFBcUMsQ0FBQztRQUUxQyxJQUFJLElBQUksRUFBRTtZQUNSLE1BQU0sR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUN2QztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxhQUFhLENBQUMsTUFBOEI7UUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELHFDQUFxQztJQUNyQzs7T0FFRztJQUNJLGdCQUFnQixDQUFDLElBQXNCLEVBQUUsSUFBK0I7UUFDN0UsSUFBSSxDQUFDLGFBQWEsQ0FDaEI7WUFDRSxJQUFJLEVBQUUsbUJBQW1CLENBQUMsNEJBQTRCO1lBQ3RELElBQUk7U0FDTCxFQUNELDJCQUEyQixDQUFDLFlBQVksRUFDeEMsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBc0IsRUFBRSxJQUE0QjtRQUM1RSxJQUFJLENBQUMsYUFBYSxDQUNoQjtZQUNFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxxQkFBcUI7WUFDL0MsSUFBSTtTQUNMLEVBQ0QsMkJBQTJCLENBQUMsY0FBYyxFQUMxQyxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxJQUE0QixFQUFFLFNBQVMsR0FBRyxJQUFJO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLENBQ2hCO1lBQ0UsSUFBSSxFQUFFLG1CQUFtQixDQUFDLHNCQUFzQjtZQUNoRCxJQUFJO1NBQ0wsRUFDRCwyQkFBMkIsQ0FBQyxlQUFlLENBQzVDLENBQUM7UUFFRixJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU0sdUJBQXVCLENBQUMsSUFBc0IsRUFBRSxJQUE0QjtRQUNqRixJQUFJLENBQUMsYUFBYSxDQUNoQjtZQUNFLElBQUksRUFBRSxtQkFBbUIsQ0FBQywwQkFBMEI7WUFDcEQsSUFBSTtTQUNMLEVBQ0QsMkJBQTJCLENBQUMsbUJBQW1CLEVBQy9DLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUEyQixFQUFFLElBQTRCO1FBQzVFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJO1lBQ0osSUFBSTtTQUNMLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxhQUFhLENBQUMsU0FBZ0M7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FDaEI7WUFDRSxJQUFJLEVBQUUsU0FBUztTQUNoQixFQUNELDJCQUEyQixDQUFDLEtBQUssQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBd0I7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFhO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQ2hCO1lBQ0UsSUFBSSxFQUFFLElBQUk7U0FDWCxFQUNELDJCQUEyQixDQUFDLFFBQVEsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFFUyxhQUFhLENBQUMsUUFBMkIsRUFBRSxFQUFFLElBQWlDLEVBQUUsWUFBK0I7UUFDdkgsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNuRCxNQUFNLElBQUksR0FBNEIsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDMUYsTUFBTSxjQUFjLEdBQTBCLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQTRCLEVBQUUsSUFBaUM7UUFDakYsTUFBTSxPQUFPLEdBQUcsSUFBSSw0Q0FBNEMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQjtJQUNULEtBQUs7UUFDWCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQzdCLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDMUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLHVGQUF1RixDQUFDLENBQUM7U0FDdkc7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBRS9ELDRCQUE0QjtZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEosQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7QUF2S0QsaUNBQWlDO0FBRWpCLGdEQUE0QixHQUFHLGlCQUFrQixDQUFBO0FBQ2pELHlDQUFxQixHQUFHLFlBQWEsQ0FBQTtBQUNyQywwQ0FBc0IsR0FBRyxhQUFjLENBQUE7QUFDdkMsOENBQTBCLEdBQUcsaUJBQWtCLENBQUE7Z0hBTnBELG1CQUFtQixrQkFvQkQsZ0NBQWdDLGFBQXNCLHNCQUFzQjtvSEFwQjlGLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVOzBEQXFCb0IsZ0NBQWdDOzBCQUFHLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBvZiwgU3Vic2NyaXB0aW9uLCBmaXJzdCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uT2JqZWN0LCBmaWx0ZXJNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4QW5hbHl0aWNzRXZlbnQsIERieEFuYWx5dGljc0V2ZW50RGF0YSwgRGJ4QW5hbHl0aWNzRXZlbnROYW1lLCBEYnhBbmFseXRpY3NVc2VyLCBOZXdVc2VyQW5hbHl0aWNzRXZlbnREYXRhLCBEYnhVc2VyQW5hbHl0aWNzRXZlbnQgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBEYnhBbmFseXRpY3NTdHJlYW1FdmVudCwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlIH0gZnJvbSAnLi9hbmFseXRpY3Muc3RyZWFtJztcbmltcG9ydCB7IE1heWJlLCBEZXN0cm95YWJsZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QW5hbHl0aWNzRXZlbnRFbWl0dGVyU2VydmljZSB7XG4gIGFic3RyYWN0IHNlbmROZXdVc2VyRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YTogTmV3VXNlckFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRVc2VyTG9naW5FdmVudCh1c2VyOiBEYnhBbmFseXRpY3NVc2VyLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFVzZXJMb2dvdXRFdmVudChkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFVzZXJQcm9wZXJ0aWVzRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YT86IERieEFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRFdmVudERhdGEobmFtZTogRGJ4QW5hbHl0aWNzRXZlbnROYW1lLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZEV2ZW50KGV2ZW50OiBEYnhBbmFseXRpY3NFdmVudCk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRQYWdlVmlldyhwYWdlPzogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEFuYWx5dGljc0V2ZW50U3RyZWFtU2VydmljZSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGV2ZW50cyQ6IE9ic2VydmFibGU8RGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQ+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QW5hbHl0aWNzVXNlclNvdXJjZSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGFuYWx5dGljc1VzZXIkOiBPYnNlcnZhYmxlPE1heWJlPERieEFuYWx5dGljc1VzZXI+Pjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lciB7XG4gIHB1YmxpYyBhYnN0cmFjdCBsaXN0ZW5Ub1NlcnZpY2Uoc2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSk6IHZvaWQ7XG59XG5cbi8qKlxuICogQWJzdHJhY3QgQW5hbHl0aWNzU2VydmljZUxpc3RlbmVyIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIgaW1wbGVtZW50cyBEYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIsIERlc3Ryb3lhYmxlIHtcbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcm90ZWN0ZWQgX2FuYWx5dGljcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RGJ4QW5hbHl0aWNzU2VydmljZT4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgYW5hbHl0aWNzJCA9IHRoaXMuX2FuYWx5dGljcy5waXBlKGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgYW5hbHl0aWNzRXZlbnRzJCA9IHRoaXMuYW5hbHl0aWNzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4geC5ldmVudHMkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8vIE1BUks6IEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lclxuICBsaXN0ZW5Ub1NlcnZpY2Uoc2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSk6IHZvaWQge1xuICAgIHRoaXMuX2FuYWx5dGljcy5uZXh0KHNlcnZpY2UpO1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuX2luaXRpYWxpemVTZXJ2aWNlU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBpZiAoc3ViICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHN1YjtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2luaXRpYWxpemVTZXJ2aWNlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IGZhbHNlO1xuXG4gIC8vIE1BUks6IERlc3Ryb3lcbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmFseXRpY3MuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdWIuZGVzdHJveSgpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYnhBbmFseXRpY3NTZXJ2aWNlQ29uZmlndXJhdGlvbiB7XG4gIGxpc3RlbmVyczogRGJ4QW5hbHl0aWNzU2VydmljZUxpc3RlbmVyW10gPSBbXTtcbiAgaXNQcm9kdWN0aW9uPzogYm9vbGVhbjtcbiAgbG9nRXZlbnRzPzogYm9vbGVhbjtcbiAgdXNlclNvdXJjZT86IERieEFuYWx5dGljc1VzZXJTb3VyY2U7XG59XG5cbmV4cG9ydCBjbGFzcyBEYnhBbmFseXRpY3NTdHJlYW1FdmVudEFuYWx5dGljc0V2ZW50V3JhcHBlciBpbXBsZW1lbnRzIERieEFuYWx5dGljc1N0cmVhbUV2ZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGV2ZW50OiBEYnhVc2VyQW5hbHl0aWNzRXZlbnQsIHB1YmxpYyByZWFkb25seSB0eXBlOiBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUgPSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuRXZlbnQpIHt9XG5cbiAgcHVibGljIGdldCB1c2VyKCk6IE1heWJlPERieEFuYWx5dGljc1VzZXI+IHtcbiAgICByZXR1cm4gdGhpcy5ldmVudC51c2VyO1xuICB9XG5cbiAgcHVibGljIGdldCB1c2VySWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy51c2VyID8gdGhpcy51c2VyLnVzZXIgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQcmltYXJ5IGFuYWx5dGljcyBzZXJ2aWNlIHRoYXQgZW1pdHMgYW5hbHl0aWNzIGV2ZW50cyB0aGF0IGNvbXBvbmVudHMgY2FuIGxpc3RlbiB0by5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieEFuYWx5dGljc1NlcnZpY2UgaW1wbGVtZW50cyBEYnhBbmFseXRpY3NFdmVudFN0cmVhbVNlcnZpY2UsIERieEFuYWx5dGljc0V2ZW50RW1pdHRlclNlcnZpY2UsIERlc3Ryb3lhYmxlIHtcbiAgLy8gVE9ETzogTWFrZSB0aGVzZSBjb25maWd1cmFibGUuXG5cbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfUkVHSVNUUkFUSU9OX0VWRU5UX05BTUUgPSAnVXNlciBSZWdpc3RlcmVkJztcbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfTE9HSU5fRVZFTlRfTkFNRSA9ICdVc2VyIExvZ2luJztcbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfTE9HT1VUX0VWRU5UX05BTUUgPSAnVXNlciBMb2dvdXQnO1xuICBzdGF0aWMgcmVhZG9ubHkgVVNFUl9QUk9QRVJUSUVTX0VWRU5UX05BTUUgPSAnVXNlciBQcm9wZXJ0aWVzJztcblxuICBwcml2YXRlIF9zdWJqZWN0ID0gbmV3IFN1YmplY3Q8RGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IGV2ZW50cyQgPSB0aGlzLl9zdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgX3VzZXJTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPERieEFuYWx5dGljc1VzZXJTb3VyY2U+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSB1c2VyJCA9IHRoaXMuX3VzZXJTb3VyY2UucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+ICh4ID8geC5hbmFseXRpY3NVc2VyJCA6IG9mKHVuZGVmaW5lZCkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHByaXZhdGUgX3VzZXJTb3VyY2VTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2xvZ2dlclN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb25maWc6IERieEFuYWx5dGljc1NlcnZpY2VDb25maWd1cmF0aW9uLCBAT3B0aW9uYWwoKSBASW5qZWN0KERieEFuYWx5dGljc1VzZXJTb3VyY2UpIHVzZXJTb3VyY2U6IE1heWJlPERieEFuYWx5dGljc1VzZXJTb3VyY2U+ID0gX2NvbmZpZy51c2VyU291cmNlKSB7XG4gICAgdGhpcy5faW5pdCgpO1xuXG4gICAgaWYgKHVzZXJTb3VyY2UpIHtcbiAgICAgIHRoaXMuc2V0VXNlclNvdXJjZSh1c2VyU291cmNlKTtcbiAgICB9XG4gIH1cblxuICAvLyBNQVJLOiBTb3VyY2VcbiAgLyoqXG4gICAqIFNldHMgdGhlIHVzZXIgZGlyZWN0bHkuXG4gICAqL1xuICBwdWJsaWMgc2V0VXNlcih1c2VyOiBNYXliZTxEYnhBbmFseXRpY3NVc2VyPik6IHZvaWQge1xuICAgIGxldCBzb3VyY2U6IE1heWJlPERieEFuYWx5dGljc1VzZXJTb3VyY2U+O1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHNvdXJjZSA9IHsgYW5hbHl0aWNzVXNlciQ6IG9mKHVzZXIpIH07XG4gICAgfVxuXG4gICAgdGhpcy5fdXNlclNvdXJjZS5uZXh0KHNvdXJjZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0VXNlclNvdXJjZShzb3VyY2U6IERieEFuYWx5dGljc1VzZXJTb3VyY2UpOiB2b2lkIHtcbiAgICB0aGlzLl91c2VyU291cmNlLm5leHQoc291cmNlKTtcbiAgfVxuXG4gIC8vIE1BUks6IEFuYWx5dGljc0V2ZW50RW1pdHRlclNlcnZpY2VcbiAgLyoqXG4gICAqIFNlbmRzIGFuIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHNlbmROZXdVc2VyRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YTogTmV3VXNlckFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogRGJ4QW5hbHl0aWNzU2VydmljZS5VU0VSX1JFR0lTVFJBVElPTl9FVkVOVF9OQU1FLFxuICAgICAgICBkYXRhXG4gICAgICB9LFxuICAgICAgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLk5ld1VzZXJFdmVudCxcbiAgICAgIHVzZXJcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNlbmRVc2VyTG9naW5FdmVudCh1c2VyOiBEYnhBbmFseXRpY3NVc2VyLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KFxuICAgICAge1xuICAgICAgICBuYW1lOiBEYnhBbmFseXRpY3NTZXJ2aWNlLlVTRVJfTE9HSU5fRVZFTlRfTkFNRSxcbiAgICAgICAgZGF0YVxuICAgICAgfSxcbiAgICAgIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5Vc2VyTG9naW5FdmVudCxcbiAgICAgIHVzZXJcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNlbmRVc2VyTG9nb3V0RXZlbnQoZGF0YT86IERieEFuYWx5dGljc0V2ZW50RGF0YSwgY2xlYXJVc2VyID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogRGJ4QW5hbHl0aWNzU2VydmljZS5VU0VSX0xPR09VVF9FVkVOVF9OQU1FLFxuICAgICAgICBkYXRhXG4gICAgICB9LFxuICAgICAgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlVzZXJMb2dvdXRFdmVudFxuICAgICk7XG5cbiAgICBpZiAoY2xlYXJVc2VyKSB7XG4gICAgICB0aGlzLnNldFVzZXIodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VuZFVzZXJQcm9wZXJ0aWVzRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YT86IERieEFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogRGJ4QW5hbHl0aWNzU2VydmljZS5VU0VSX1BST1BFUlRJRVNfRVZFTlRfTkFNRSxcbiAgICAgICAgZGF0YVxuICAgICAgfSxcbiAgICAgIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5Vc2VyUHJvcGVydGllc0V2ZW50LFxuICAgICAgdXNlclxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2VuZEV2ZW50RGF0YShuYW1lOiBEYnhBbmFseXRpY3NFdmVudE5hbWUsIGRhdGE/OiBEYnhBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5zZW5kRXZlbnQoe1xuICAgICAgbmFtZSxcbiAgICAgIGRhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kRXZlbnRUeXBlKGV2ZW50VHlwZTogRGJ4QW5hbHl0aWNzRXZlbnROYW1lKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KFxuICAgICAge1xuICAgICAgICBuYW1lOiBldmVudFR5cGVcbiAgICAgIH0sXG4gICAgICBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuRXZlbnRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNlbmRFdmVudChldmVudDogRGJ4QW5hbHl0aWNzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoZXZlbnQsIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5FdmVudCk7XG4gIH1cblxuICBwdWJsaWMgc2VuZFBhZ2VWaWV3KHBhZ2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHBhZ2VcbiAgICAgIH0sXG4gICAgICBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuUGFnZVZpZXdcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbmROZXh0RXZlbnQoZXZlbnQ6IERieEFuYWx5dGljc0V2ZW50ID0ge30sIHR5cGU6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZSwgdXNlck92ZXJyaWRlPzogRGJ4QW5hbHl0aWNzVXNlcik6IHZvaWQge1xuICAgIHRoaXMudXNlciQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGFuYWx5dGljc1VzZXIpID0+IHtcbiAgICAgIGNvbnN0IHVzZXI6IE1heWJlPERieEFuYWx5dGljc1VzZXI+ID0gdXNlck92ZXJyaWRlICE9IG51bGwgPyB1c2VyT3ZlcnJpZGUgOiBhbmFseXRpY3NVc2VyO1xuICAgICAgY29uc3QgYW5hbHl0aWNzRXZlbnQ6IERieFVzZXJBbmFseXRpY3NFdmVudCA9IHsgLi4uZXZlbnQsIHVzZXIgfTtcbiAgICAgIHRoaXMubmV4dEV2ZW50KGFuYWx5dGljc0V2ZW50LCB0eXBlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZXh0RXZlbnQoZXZlbnQ6IERieFVzZXJBbmFseXRpY3NFdmVudCwgdHlwZTogRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlKTogdm9pZCB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG5ldyBEYnhBbmFseXRpY3NTdHJlYW1FdmVudEFuYWx5dGljc0V2ZW50V3JhcHBlcihldmVudCwgdHlwZSk7XG4gICAgdGhpcy5fc3ViamVjdC5uZXh0KHdyYXBwZXIpO1xuICB9XG5cbiAgLy8gTUFSSzogSW50ZXJuYWxcbiAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29uZmlnLmlzUHJvZHVjdGlvbikge1xuICAgICAgLy8gSW5pdGlhbGl6ZSBsaXN0ZW5lcnMuXG4gICAgICB0aGlzLl9jb25maWcubGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiB7XG4gICAgICAgIGxpc3RlbmVyLmxpc3RlblRvU2VydmljZSh0aGlzKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0FuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljcyBub3QgaW4gcHJvZHVjdGlvbiBtb2RlLiBBbGwgYW5hbHl0aWNzIGV2ZW50cyBhcmUgaWdub3JlZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmxvZ0V2ZW50cyB8fCAhdGhpcy5fY29uZmlnLmlzUHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5sb2coJ0FuYWx5dGljc1NlcnZpY2U6IExvZyBhbmFseXRpY3MgZXZlbnRzIGVuYWJsZWQuJyk7XG5cbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBzdWJzY3JpcHRpb25cbiAgICAgIHRoaXMuX2xvZ2dlclN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhgQW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzIEV2ZW50IC0gJHtEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGVbeC50eXBlXX0gVXNlcjogJHt4LnVzZXJJZH0gRGF0YTogJHtKU09OLnN0cmluZ2lmeSh4LmV2ZW50KX0uYCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl91c2VyU291cmNlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudXNlciQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2VuZE5leHRFdmVudCh7fSwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlVzZXJDaGFuZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdXNlclNvdXJjZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fbG9nZ2VyU3ViLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
|
|
@@ -10,4 +10,4 @@ export var DbxAnalyticsStreamEventType;
|
|
|
10
10
|
// Events
|
|
11
11
|
DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["Event"] = 6] = "Event";
|
|
12
12
|
})(DbxAnalyticsStreamEventType || (DbxAnalyticsStreamEventType = {}));
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1hbmFseXRpY3Mvc3JjL2xpYi9hbmFseXRpY3MvYW5hbHl0aWNzLnN0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQU4sSUFBWSwyQkFZWDtBQVpELFdBQVksMkJBQTJCO0lBQ3JDLHFGQUFRLENBQUE7SUFDUix5RkFBVSxDQUFBO0lBRVYsY0FBYztJQUNkLDZGQUFZLENBQUE7SUFDWixpR0FBYyxDQUFBO0lBQ2QsbUdBQWUsQ0FBQTtJQUNmLDJHQUFtQixDQUFBO0lBRW5CLFNBQVM7SUFDVCwrRUFBSyxDQUFBO0FBQ1AsQ0FBQyxFQVpXLDJCQUEyQixLQUEzQiwyQkFBMkIsUUFZdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4QW5hbHl0aWNzVXNlciwgRGJ4VXNlckFuYWx5dGljc0V2ZW50LCBEYnhBbmFseXRpY3NVc2VySWQgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5cbmV4cG9ydCBlbnVtIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZSB7XG4gIFBhZ2VWaWV3LFxuICBVc2VyQ2hhbmdlLFxuXG4gIC8vIFVzZXIgRXZlbnRzXG4gIE5ld1VzZXJFdmVudCxcbiAgVXNlckxvZ2luRXZlbnQsXG4gIFVzZXJMb2dvdXRFdmVudCxcbiAgVXNlclByb3BlcnRpZXNFdmVudCxcblxuICAvLyBFdmVudHNcbiAgRXZlbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudCB7XG4gIHJlYWRvbmx5IHR5cGU6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZTtcbiAgcmVhZG9ubHkgdXNlcj86IE1heWJlPERieEFuYWx5dGljc1VzZXI+O1xuICByZWFkb25seSBldmVudD86IERieFVzZXJBbmFseXRpY3NFdmVudDtcbiAgcmVhZG9ubHkgdXNlcklkPzogRGJ4QW5hbHl0aWNzVXNlcklkO1xufVxuIl19
|
|
@@ -58,9 +58,11 @@ export class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServ
|
|
|
58
58
|
const value = event?.value;
|
|
59
59
|
const data = event?.data;
|
|
60
60
|
api.track(eventName, {
|
|
61
|
-
...(value != null
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
...(value != null
|
|
62
|
+
? {
|
|
63
|
+
value
|
|
64
|
+
}
|
|
65
|
+
: undefined),
|
|
64
66
|
...data
|
|
65
67
|
}, {}, () => {
|
|
66
68
|
if (this._segmentApi.config.logging) {
|
|
@@ -89,4 +91,4 @@ DbxAnalyticsSegmentServiceListener.ɵprov = i0.ɵɵngDeclareInjectable({ minVers
|
|
|
89
91
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAnalyticsSegmentServiceListener, decorators: [{
|
|
90
92
|
type: Injectable
|
|
91
93
|
}], ctorParameters: function () { return [{ type: i1.DbxAnalyticsSegmentApiService }]; } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC5saXN0ZW5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWFuYWx5dGljcy9zcmMvbGliL3Byb3ZpZGVycy9zZWdtZW50L3NlZ21lbnQubGlzdGVuZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLG1DQUFtQyxFQUEyQiwyQkFBMkIsRUFBb0IsTUFBTSxpQkFBaUIsQ0FBQztBQUM5SSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRWxFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLG1DQUFtQztJQUN6RixZQUFvQixXQUEwQztRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQURVLGdCQUFXLEdBQVgsV0FBVyxDQUErQjtRQUc1RCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7U0FDNUU7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlGQUF5RixDQUFDLENBQUM7U0FDeEc7SUFDSCxDQUFDO0lBRVMsOEJBQThCO1FBQ3RDLE9BQU8sYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQTBELEVBQUUsRUFBRTtZQUNySyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFD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RDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIsIERieEFuYWx5dGljc1N0cmVhbUV2ZW50LCBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUsIERieEFuYWx5dGljc1VzZXIgfSBmcm9tICcuLi8uLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgRGJ4QW5hbHl0aWNzU2VnbWVudEFwaVNlcnZpY2UgfSBmcm9tICcuL3NlZ21lbnQuc2VydmljZSc7XG5cbi8qKlxuICogRGJ4QW5hbHl0aWNzU2VydmljZUxpc3RlbmVyIGFkYXB0ZXIgZm9yIFNlZ21lbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYnhBbmFseXRpY3NTZWdtZW50U2VydmljZUxpc3RlbmVyIGV4dGVuZHMgQWJzdHJhY3REYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZWdtZW50QXBpOiBEYnhBbmFseXRpY3NTZWdtZW50QXBpU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAodGhpcy5fc2VnbWVudEFwaS5jb25maWcubG9nZ2luZykge1xuICAgICAgY29uc29sZS5sb2coJ1NlZ21lbnRBbmFseXRpY3NMaXN0ZW5lclNlcnZpY2U6IFNlZ21lbnQgaXMgbG9nZ2luZyBldmVudHMuJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3NlZ21lbnRBcGkuY29uZmlnLmFjdGl2ZSkge1xuICAgICAgY29uc29sZS5sb2coJ1NlZ21lbnRBbmFseXRpY3NMaXN0ZW5lclNlcnZpY2U6IFNlZ21lbnQgaXMgZGlzYWJsZWQgZnJvbSBzZW5kaW5nIGV2ZW50cyB0byB0aGUgc2VydmVyLicpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfaW5pdGlhbGl6ZVNlcnZpY2VTdWJzY3JpcHRpb24oKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3NlZ21lbnRBcGkuc2VydmljZSQsIHRoaXMuYW5hbHl0aWNzRXZlbnRzJF0pLnN1YnNjcmliZSgoW3NlZ21lbnQsIHN0cmVhbUV2ZW50XTogW1NlZ21lbnRBbmFseXRpY3MuQW5hbHl0aWNzSlMsIERieEFuYWx5dGljc1N0cmVhbUV2ZW50XSkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3NlZ21lbnRBcGkuY29uZmlnLmxvZ2dpbmcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1NlZ21lbnQgTGlzdGVuZXIgTG9nZ2luZyBFdmVudDogJywgc3RyZWFtRXZlbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fc2VnbWVudEFwaS5jb25maWcuYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RyZWFtRXZlbnQoc2VnbWVudCwgc3RyZWFtRXZlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVN0cmVhbUV2ZW50KGFwaTogU2VnbWVudEFuYWx5dGljcy5BbmFseXRpY3NKUywgc3RyZWFtRXZlbnQ6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50KTogdm9pZCB7XG4gICAgc3dpdGNoIChzdHJlYW1FdmVudC50eXBlKSB7XG4gICAgICBjYXNlIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5OZXdVc2VyRXZlbnQ6XG4gICAgICAgIHRoaXMudXBkYXRlV2l0aE5ld1VzZXJFdmVudChhcGksIHN0cmVhbUV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5Vc2VyTG9naW5FdmVudDpcbiAgICAgIGNhc2UgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLkV2ZW50OlxuICAgICAgICB0aGlzLnVwZGF0ZVdpdGhFdmVudChhcGksIHN0cmVhbUV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5Vc2VyTG9nb3V0RXZlbnQ6XG4gICAgICAgIHRoaXMuY2hhbmdlVXNlcihhcGksIHVuZGVmaW5lZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuUGFnZVZpZXc6XG4gICAgICAgIGFwaS5wYWdlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckNoYW5nZTpcbiAgICAgICAgdGhpcy5jaGFuZ2VVc2VyKGFwaSwgc3RyZWFtRXZlbnQudXNlcik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoTmV3VXNlckV2ZW50KGFwaTogU2VnbWVudEFuYWx5dGljcy5BbmFseXRpY3NKUywgc3RyZWFtRXZlbnQ6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VVc2VyKGFwaSwgc3RyZWFtRXZlbnQudXNlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aEV2ZW50KGFwaTogU2VnbWVudEFuYWx5dGljcy5BbmFseXRpY3NKUywgc3RyZWFtRXZlbnQ6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50LCBuYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnQgPSBzdHJlYW1FdmVudC5ldmVudDtcbiAgICBjb25zdCBldmVudE5hbWUgPSBuYW1lIHx8IGV2ZW50Py5uYW1lO1xuXG4gICAgaWYgKGV2ZW50TmFtZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBldmVudD8udmFsdWU7XG4gICAgICBjb25zdCBkYXRhID0gZXZlbnQ/LmRhdGE7XG5cbiAgICAgIGFwaS50cmFjayhcbiAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgLi4uKHZhbHVlICE9IG51bGxcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAuLi5kYXRhXG4gICAgICAgIH0sXG4gICAgICAgIHt9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3NlZ21lbnRBcGkuY29uZmlnLmxvZ2dpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZWdtZW50IHRyYWNrIHN1Y2Nlc3MuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlVXNlcihhcGk6IFNlZ21lbnRBbmFseXRpY3MuQW5hbHl0aWNzSlMsIHVzZXI6IE1heWJlPERieEFuYWx5dGljc1VzZXI+KTogdm9pZCB7XG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIGFwaS5pZGVudGlmeShcbiAgICAgICAgdXNlci51c2VyLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udXNlci5wcm9wZXJ0aWVzXG4gICAgICAgIH0sXG4gICAgICAgIHt9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3NlZ21lbnRBcGkuY29uZmlnLmxvZ2dpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZWdtZW50IGlkZW50aWZ5IHN1Y2Nlc3MuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVzZXQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
25
25
|
imports: []
|
|
26
26
|
}]
|
|
27
27
|
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvcHJvdmlkZXJzL3NlZ21lbnQvc2VnbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTXpGLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUF3QjtRQUNyQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLHlCQUF5QjtZQUNuQyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtvQkFDOUIsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCO2dCQUNELDZCQUE2QjthQUM5QjtTQUNGLENBQUM7SUFDSixDQUFDOztzSEFaVSx5QkFBeUI7dUhBQXpCLHlCQUF5Qjt1SEFBekIseUJBQXlCLFlBRjNCLEVBQUU7MkZBRUEseUJBQXlCO2tCQUpyQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQUkVMT0FEX1NFR01FTlRfVE9LRU4sIERieEFuYWx5dGljc1NlZ21lbnRBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZWdtZW50LnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhBbmFseXRpY3NTZWdtZW50TW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QocHJlbG9hZFNlcnZpY2U/OiBib29sZWFuKTogTW9kdWxlV2l0aFByb3ZpZGVyczxEYnhBbmFseXRpY3NTZWdtZW50TW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBEYnhBbmFseXRpY3NTZWdtZW50TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBQUkVMT0FEX1NFR01FTlRfVE9LRU4sXG4gICAgICAgICAgdXNlVmFsdWU6IHByZWxvYWRTZXJ2aWNlXG4gICAgICAgIH0sXG4gICAgICAgIERieEFuYWx5dGljc1NlZ21lbnRBcGlTZXJ2aWNlXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -26,7 +26,7 @@ export class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedServ
|
|
|
26
26
|
_prepareCompleteLoadingService() {
|
|
27
27
|
return poll({
|
|
28
28
|
// poll until analytics.invoked is true.
|
|
29
|
-
check: () => Boolean(window.analytics
|
|
29
|
+
check: () => Boolean(window.analytics.invoked),
|
|
30
30
|
timesToGiveup: 100
|
|
31
31
|
});
|
|
32
32
|
}
|
|
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
58
58
|
type: Inject,
|
|
59
59
|
args: [PRELOAD_SEGMENT_TOKEN]
|
|
60
60
|
}] }]; } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWFuYWx5dGljcy9zcmMvbGliL3Byb3ZpZGVycy9zZWdtZW50L3NlZ21lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFckMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQVMsc0NBQXNDLENBQUMsQ0FBQztBQUV4RyxNQUFNLE9BQU8sbUNBQW1DO0lBRzlDLFlBQW1CLFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFGbkMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLFdBQU0sR0FBRyxJQUFJLENBQUM7SUFDd0IsQ0FBQztDQUN4QztBQU9EOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsZ0NBQThEO0lBSS9HLFlBQW9CLE9BQTRDLEVBQWlDLFVBQW1CLElBQUk7UUFDdEgsS0FBSyxDQUFDLDZCQUE2QixDQUFDLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFEekUsWUFBTyxHQUFQLE9BQU8sQ0FBcUM7SUFFaEUsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRWtCLDhCQUE4QjtRQUMvQyxPQUFPLElBQUksQ0FBQztZQUNWLHdDQUF3QztZQUN4QyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFFLE1BQU0sQ0FBQyxTQUFxQyxDQUFDLE9BQU8sQ0FBQztZQUMzRSxhQUFhLEVBQUUsR0FBRztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRWtCLFlBQVksQ0FBQyxPQUFxQztRQUNuRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUk7Z0JBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMscUJBQXFCO2dCQUUxRCx3Q0FBd0M7Z0JBQ3hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO29CQUNqQixpR0FBaUc7b0JBQ2pHLE1BQU0sT0FBTyxHQUFpQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFDM0csT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQixDQUFDLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1g7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbkNlLG9EQUFzQixHQUFHLFdBQVksQ0FBQTtBQUNyQywrQ0FBaUIsR0FBRyxjQUFlLENBQUE7MEhBRnhDLDZCQUE2QixrQkFJWCxtQ0FBbUMsYUFBVSxxQkFBcUI7OEhBSnBGLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVOzBEQUtvQixtQ0FBbUM7MEJBQUcsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEFzeW5jV2luZG93TG9hZGVkU2VydmljZSB9IGZyb20gJ0BkZXJlZWtiL2Jyb3dzZXInO1xuaW1wb3J0IHsgcG9sbCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG5leHBvcnQgY29uc3QgUFJFTE9BRF9TRUdNRU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0RieEFuYWx5dGljc1NlZ21lbnRBcGlTZXJ2aWNlUHJlbG9hZCcpO1xuXG5leHBvcnQgY2xhc3MgRGJ4QW5hbHl0aWNzU2VnbWVudEFwaVNlcnZpY2VDb25maWcge1xuICBsb2dnaW5nID0gdHJ1ZTtcbiAgYWN0aXZlID0gdHJ1ZTtcbiAgY29uc3RydWN0b3IocHVibGljIHdyaXRlS2V5OiBzdHJpbmcpIHt9XG59XG5cbi8qKlxuICogV2hlbiB0aGUgU2VnbWVudCBsaWJyYXJ5IGZpbmlzaGVzIGxvYWRpbmcsIGl0IGlzIGludm9rZWQuXG4gKi9cbnR5cGUgU2VnbWVudEFuYWx5dGljc0ludm9rZWQgPSBTZWdtZW50QW5hbHl0aWNzLkFuYWx5dGljc0pTICYgeyBpbnZva2VkPzogYm9vbGVhbiB9O1xuXG4vKipcbiAqIFNlZ21lbnQgQVBJIFNlcnZpY2UgdXNlZCBmb3Igd2FpdGluZy9yZXRyaWV2aW5nIHRoZSBzZWdtZW50IEFQSSBmcm9tIHdpbmRvdyB3aGVuIGluaXRpYWxpemVkLlxuICpcbiAqIFRoaXMgcmVxdWlyZXMgc29tZSBzZXR1cCBpbiBpbmRleC5odG1sLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4QW5hbHl0aWNzU2VnbWVudEFwaVNlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdEFzeW5jV2luZG93TG9hZGVkU2VydmljZTxTZWdtZW50QW5hbHl0aWNzLkFuYWx5dGljc0pTPiB7XG4gIHN0YXRpYyByZWFkb25seSBTRUdNRU5UX0FQSV9XSU5ET1dfS0VZID0gJ2FuYWx5dGljcyc7XG4gIHN0YXRpYyByZWFkb25seSBTRUdNRU5UX1JFQURZX0tFWSA9ICdTZWdtZW50UmVhZHknO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbmZpZzogRGJ4QW5hbHl0aWNzU2VnbWVudEFwaVNlcnZpY2VDb25maWcsIEBJbmplY3QoUFJFTE9BRF9TRUdNRU5UX1RPS0VOKSBwcmVsb2FkOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHN1cGVyKERieEFuYWx5dGljc1NlZ21lbnRBcGlTZXJ2aWNlLlNFR01FTlRfQVBJX1dJTkRPV19LRVksIHVuZGVmaW5lZCwgJ1NlZ21lbnQnLCBwcmVsb2FkKTtcbiAgfVxuXG4gIGdldCBjb25maWcoKTogRGJ4QW5hbHl0aWNzU2VnbWVudEFwaVNlcnZpY2VDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3ByZXBhcmVDb21wbGV0ZUxvYWRpbmdTZXJ2aWNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBwb2xsKHtcbiAgICAgIC8vIHBvbGwgdW50aWwgYW5hbHl0aWNzLmludm9rZWQgaXMgdHJ1ZS5cbiAgICAgIGNoZWNrOiAoKSA9PiBCb29sZWFuKCh3aW5kb3cuYW5hbHl0aWNzIGFzIFNlZ21lbnRBbmFseXRpY3NJbnZva2VkKS5pbnZva2VkKSxcbiAgICAgIHRpbWVzVG9HaXZldXA6IDEwMFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIF9pbml0U2VydmljZShzZXJ2aWNlOiBTZWdtZW50QW5hbHl0aWNzLkFuYWx5dGljc0pTKTogUHJvbWlzZTxTZWdtZW50QW5hbHl0aWNzLkFuYWx5dGljc0pTPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNlcnZpY2UubG9hZCh0aGlzLl9jb25maWcud3JpdGVLZXkpOyAvLyBJbml0aWFsaXplIFNlZ21lbnRcblxuICAgICAgICAvLyBXYWl0IGZvciB0aGUgc2VydmljZSB0byByZWFkeSBpdHNlbGYuXG4gICAgICAgIHNlcnZpY2UucmVhZHkoKCkgPT4ge1xuICAgICAgICAgIC8vIFNlZ21lbnQgY2hhbmdlcyBpdHNlbGYgb3IgcmF0aGVyIHRoZSB0YXJnZXQsIGFuZCB0aGUgcHJldmlvdXMgaW5pdGlhbCB0YXJnZXQgaXMgaWdub3JlZCBhZnRlci5cbiAgICAgICAgICBjb25zdCBzZWdtZW50OiBTZWdtZW50QW5hbHl0aWNzLkFuYWx5dGljc0pTID0gd2luZG93W0RieEFuYWx5dGljc1NlZ21lbnRBcGlTZXJ2aWNlLlNFR01FTlRfQVBJX1dJTkRPV19LRVldO1xuICAgICAgICAgIHJlc29sdmUoc2VnbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZygnRmFpbGVkIHRvIGluaXQgc2VnbWVudDogJyArIGUpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, Optional, Inject, Directive, Host, Input, NgModule, InjectionToken } from '@angular/core';
|
|
3
3
|
import { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';
|
|
4
|
-
import { shareReplay, switchMap, first, tap } from 'rxjs
|
|
5
|
-
import { BehaviorSubject, Subject, of, merge, combineLatest } from 'rxjs';
|
|
4
|
+
import { BehaviorSubject, shareReplay, switchMap, Subject, of, first, tap, merge, combineLatest } from 'rxjs';
|
|
6
5
|
import * as i1 from '@dereekb/dbx-core';
|
|
7
6
|
import { AbstractSubscriptionDirective } from '@dereekb/dbx-core';
|
|
8
7
|
import { AbstractAsyncWindowLoadedService } from '@dereekb/browser';
|
|
@@ -37,7 +36,7 @@ class AbstractDbxAnalyticsServiceListener {
|
|
|
37
36
|
this._sub = new SubscriptionObject();
|
|
38
37
|
this._analytics = new BehaviorSubject(undefined);
|
|
39
38
|
this.analytics$ = this._analytics.pipe(filterMaybe(), shareReplay(1));
|
|
40
|
-
this.analyticsEvents$ = this.analytics$.pipe(switchMap(x => x.events$), shareReplay(1));
|
|
39
|
+
this.analyticsEvents$ = this.analytics$.pipe(switchMap((x) => x.events$), shareReplay(1));
|
|
41
40
|
}
|
|
42
41
|
// MARK: AnalyticsServiceListener
|
|
43
42
|
listenToService(service) {
|
|
@@ -67,7 +66,7 @@ class DbxAnalyticsStreamEventAnalyticsEventWrapper {
|
|
|
67
66
|
return this.event.user;
|
|
68
67
|
}
|
|
69
68
|
get userId() {
|
|
70
|
-
return
|
|
69
|
+
return this.user ? this.user.user : undefined;
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
72
|
/**
|
|
@@ -79,7 +78,7 @@ class DbxAnalyticsService {
|
|
|
79
78
|
this._subject = new Subject();
|
|
80
79
|
this.events$ = this._subject.asObservable();
|
|
81
80
|
this._userSource = new BehaviorSubject(undefined);
|
|
82
|
-
this.user$ = this._userSource.pipe(switchMap(x => (x
|
|
81
|
+
this.user$ = this._userSource.pipe(switchMap((x) => (x ? x.analyticsUser$ : of(undefined))), shareReplay(1));
|
|
83
82
|
this._userSourceSub = new SubscriptionObject();
|
|
84
83
|
this._loggerSub = new SubscriptionObject();
|
|
85
84
|
this._init();
|
|
@@ -153,7 +152,7 @@ class DbxAnalyticsService {
|
|
|
153
152
|
}
|
|
154
153
|
sendNextEvent(event = {}, type, userOverride) {
|
|
155
154
|
this.user$.pipe(first()).subscribe((analyticsUser) => {
|
|
156
|
-
const user =
|
|
155
|
+
const user = userOverride != null ? userOverride : analyticsUser;
|
|
157
156
|
const analyticsEvent = Object.assign(Object.assign({}, event), { user });
|
|
158
157
|
this.nextEvent(analyticsEvent, type);
|
|
159
158
|
});
|
|
@@ -233,7 +232,8 @@ class DbxActionAnalyticsDirective extends AbstractSubscriptionDirective {
|
|
|
233
232
|
this._config.next(config);
|
|
234
233
|
}
|
|
235
234
|
ngOnInit() {
|
|
236
|
-
this.sub = this.config
|
|
235
|
+
this.sub = this.config$
|
|
236
|
+
.pipe(switchMap(({ onTriggered, onReady, onSuccess, onError }) => {
|
|
237
237
|
const triggerObs = [];
|
|
238
238
|
if (onTriggered) {
|
|
239
239
|
triggerObs.push(this.source.triggered$.pipe(tap(() => onTriggered(this.analyticsService))));
|
|
@@ -253,7 +253,8 @@ class DbxActionAnalyticsDirective extends AbstractSubscriptionDirective {
|
|
|
253
253
|
else {
|
|
254
254
|
return of();
|
|
255
255
|
}
|
|
256
|
-
}))
|
|
256
|
+
}))
|
|
257
|
+
.subscribe();
|
|
257
258
|
}
|
|
258
259
|
ngOnDestroy() {
|
|
259
260
|
this.source.lockSet.onNextUnlock(() => {
|
|
@@ -267,7 +268,7 @@ DbxActionAnalyticsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.
|
|
|
267
268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxActionAnalyticsDirective, decorators: [{
|
|
268
269
|
type: Directive,
|
|
269
270
|
args: [{
|
|
270
|
-
selector: '[dbxActionAnalytics]'
|
|
271
|
+
selector: '[dbxActionAnalytics]'
|
|
271
272
|
}]
|
|
272
273
|
}], ctorParameters: function () {
|
|
273
274
|
return [{ type: i1.DbxActionContextStoreSourceInstance, decorators: [{
|
|
@@ -286,12 +287,8 @@ DbxAnalyticsActionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0"
|
|
|
286
287
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAnalyticsActionModule, decorators: [{
|
|
287
288
|
type: NgModule,
|
|
288
289
|
args: [{
|
|
289
|
-
declarations: [
|
|
290
|
-
|
|
291
|
-
],
|
|
292
|
-
exports: [
|
|
293
|
-
DbxActionAnalyticsDirective
|
|
294
|
-
]
|
|
290
|
+
declarations: [DbxActionAnalyticsDirective],
|
|
291
|
+
exports: [DbxActionAnalyticsDirective]
|
|
295
292
|
}]
|
|
296
293
|
}] });
|
|
297
294
|
|
|
@@ -339,7 +336,7 @@ class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedService {
|
|
|
339
336
|
_prepareCompleteLoadingService() {
|
|
340
337
|
return poll({
|
|
341
338
|
// poll until analytics.invoked is true.
|
|
342
|
-
check: () =>
|
|
339
|
+
check: () => Boolean(window.analytics.invoked),
|
|
343
340
|
timesToGiveup: 100
|
|
344
341
|
});
|
|
345
342
|
}
|
|
@@ -427,9 +424,11 @@ class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceList
|
|
|
427
424
|
if (eventName) {
|
|
428
425
|
const value = event === null || event === void 0 ? void 0 : event.value;
|
|
429
426
|
const data = event === null || event === void 0 ? void 0 : event.data;
|
|
430
|
-
api.track(eventName, Object.assign(Object.assign({}, (value != null
|
|
431
|
-
|
|
432
|
-
|
|
427
|
+
api.track(eventName, Object.assign(Object.assign({}, (value != null
|
|
428
|
+
? {
|
|
429
|
+
value
|
|
430
|
+
}
|
|
431
|
+
: undefined)), data), {}, () => {
|
|
433
432
|
if (this._segmentApi.config.logging) {
|
|
434
433
|
console.log('Segment track success.');
|
|
435
434
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dereekb-dbx-analytics.mjs","sources":["../../../../packages/dbx-analytics/src/lib/analytics/analytics.stream.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.service.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.action.directive.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.action.module.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.module.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.service.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.listener.service.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.module.ts","../../../../packages/dbx-analytics/src/dereekb-dbx-analytics.ts"],"sourcesContent":["import { Maybe } from \"@dereekb/util\";\nimport { DbxAnalyticsUser, DbxUserAnalyticsEvent, DbxAnalyticsUserId } from \"./analytics\";\n\nexport enum DbxAnalyticsStreamEventType {\n\n PageView,\n UserChange,\n\n // User Events\n NewUserEvent,\n UserLoginEvent,\n UserLogoutEvent,\n UserPropertiesEvent,\n\n // Events\n Event\n\n}\n\nexport interface DbxAnalyticsStreamEvent {\n readonly type: DbxAnalyticsStreamEventType;\n readonly user?: Maybe<DbxAnalyticsUser>;\n readonly event?: DbxUserAnalyticsEvent;\n readonly userId?: DbxAnalyticsUserId;\n}\n","import { Observable, Subject, BehaviorSubject, of, Subscription } from 'rxjs';\nimport { filter, first, shareReplay, switchMap } from 'rxjs/operators';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';\nimport { DbxAnalyticsEvent, DbxAnalyticsEventData, DbxAnalyticsEventName, DbxAnalyticsUser, NewUserAnalyticsEventData, DbxUserAnalyticsEvent } from './analytics';\nimport { DbxAnalyticsStreamEvent, DbxAnalyticsStreamEventType } from './analytics.stream';\nimport { Maybe, Destroyable } from '@dereekb/util';\n\nexport abstract class DbxAnalyticsEventEmitterService {\n abstract sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void;\n abstract sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;\n abstract sendUserLogoutEvent(data?: DbxAnalyticsEventData): void;\n abstract sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;\n abstract sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void;\n abstract sendEvent(event: DbxAnalyticsEvent): void;\n abstract sendPageView(page?: string): void;\n}\n\nexport abstract class DbxAnalyticsEventStreamService {\n abstract readonly events$: Observable<DbxAnalyticsStreamEvent>;\n}\n\nexport abstract class DbxAnalyticsUserSource {\n abstract readonly analyticsUser$: Observable<Maybe<DbxAnalyticsUser>>;\n}\n\nexport abstract class DbxAnalyticsServiceListener {\n public abstract listenToService(service: DbxAnalyticsService): void;\n}\n\n/**\n * Abstract AnalyticsServiceListener implementation.\n */\nexport abstract class AbstractDbxAnalyticsServiceListener implements DbxAnalyticsServiceListener, Destroyable {\n\n private _sub = new SubscriptionObject();\n protected _analytics = new BehaviorSubject<Maybe<DbxAnalyticsService>>(undefined);\n\n readonly analytics$ = this._analytics.pipe(filterMaybe(), shareReplay(1));\n readonly analyticsEvents$ = this.analytics$.pipe(switchMap(x => x.events$), shareReplay(1));\n\n // MARK: AnalyticsServiceListener\n listenToService(service: DbxAnalyticsService): void {\n this._analytics.next(service);\n const sub = this._initializeServiceSubscription();\n\n if (sub !== false) {\n this._sub.subscription = sub;\n }\n }\n\n protected abstract _initializeServiceSubscription(): Subscription | false;\n\n // MARK: Destroy\n destroy(): void {\n this._analytics.complete();\n this._sub.destroy();\n }\n\n}\n\nexport abstract class DbxAnalyticsServiceConfiguration {\n listeners: DbxAnalyticsServiceListener[] = [];\n isProduction?: boolean;\n logEvents?: boolean;\n userSource?: DbxAnalyticsUserSource;\n}\n\nexport class DbxAnalyticsStreamEventAnalyticsEventWrapper implements DbxAnalyticsStreamEvent {\n\n constructor(public readonly event: DbxUserAnalyticsEvent, public readonly type: DbxAnalyticsStreamEventType = DbxAnalyticsStreamEventType.Event) { }\n\n public get user(): Maybe<DbxAnalyticsUser> {\n return this.event.user;\n }\n\n public get userId(): string | undefined {\n return (this.user) ? this.user.user : undefined;\n }\n\n}\n\n/**\n * Primary analytics service that emits analytics events that components can listen to.\n */\n@Injectable()\nexport class DbxAnalyticsService implements DbxAnalyticsEventStreamService, DbxAnalyticsEventEmitterService, Destroyable {\n\n // TODO: Make these configurable.\n\n static readonly USER_REGISTRATION_EVENT_NAME = 'User Registered';\n static readonly USER_LOGIN_EVENT_NAME = 'User Login';\n static readonly USER_LOGOUT_EVENT_NAME = 'User Logout';\n static readonly USER_PROPERTIES_EVENT_NAME = 'User Properties';\n\n private _subject = new Subject<DbxAnalyticsStreamEvent>();\n readonly events$ = this._subject.asObservable();\n\n private _userSource = new BehaviorSubject<Maybe<DbxAnalyticsUserSource>>(undefined);\n readonly user$ = this._userSource.pipe(switchMap(x => (x) ? x.analyticsUser$ : of(undefined)), shareReplay(1));\n\n private _userSourceSub = new SubscriptionObject();\n private _loggerSub = new SubscriptionObject();\n\n constructor(\n private _config: DbxAnalyticsServiceConfiguration,\n @Optional() @Inject(DbxAnalyticsUserSource) userSource: Maybe<DbxAnalyticsUserSource> = _config.userSource\n ) {\n this._init();\n\n if (userSource) {\n this.setUserSource(userSource);\n }\n }\n\n // MARK: Source\n /**\n * Sets the user directly.\n */\n public setUser(user: Maybe<DbxAnalyticsUser>): void {\n let source: Maybe<DbxAnalyticsUserSource>;\n\n if (user) {\n source = { analyticsUser$: of(user) };\n }\n\n this._userSource.next(source);\n }\n\n public setUserSource(source: DbxAnalyticsUserSource): void {\n this._userSource.next(source);\n }\n\n // MARK: AnalyticsEventEmitterService\n /**\n * Sends an event.\n */\n public sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void {\n this.sendNextEvent({\n name: DbxAnalyticsService.USER_REGISTRATION_EVENT_NAME,\n data\n }, DbxAnalyticsStreamEventType.NewUserEvent, user);\n }\n\n public sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void {\n this.sendNextEvent({\n name: DbxAnalyticsService.USER_LOGIN_EVENT_NAME,\n data\n }, DbxAnalyticsStreamEventType.UserLoginEvent, user);\n }\n\n public sendUserLogoutEvent(data?: DbxAnalyticsEventData, clearUser = true): void {\n this.sendNextEvent({\n name: DbxAnalyticsService.USER_LOGOUT_EVENT_NAME,\n data\n }, DbxAnalyticsStreamEventType.UserLogoutEvent);\n\n if (clearUser) {\n this.setUser(undefined);\n }\n }\n\n public sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void {\n this.sendNextEvent({\n name: DbxAnalyticsService.USER_PROPERTIES_EVENT_NAME,\n data\n }, DbxAnalyticsStreamEventType.UserPropertiesEvent, user);\n }\n\n public sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void {\n return this.sendEvent({\n name,\n data\n });\n }\n\n public sendEventType(eventType: DbxAnalyticsEventName): void {\n this.sendNextEvent({\n name: eventType\n }, DbxAnalyticsStreamEventType.Event);\n }\n\n public sendEvent(event: DbxAnalyticsEvent): void {\n this.sendNextEvent(event, DbxAnalyticsStreamEventType.Event);\n }\n\n public sendPageView(page?: string): void {\n this.sendNextEvent({\n name: page\n }, DbxAnalyticsStreamEventType.PageView);\n }\n\n protected sendNextEvent(event: DbxAnalyticsEvent = {}, type: DbxAnalyticsStreamEventType, userOverride?: DbxAnalyticsUser): void {\n this.user$.pipe(first()).subscribe((analyticsUser) => {\n const user: Maybe<DbxAnalyticsUser> = (userOverride != null) ? userOverride : analyticsUser;\n const analyticsEvent: DbxUserAnalyticsEvent = { ...event, user };\n this.nextEvent(analyticsEvent, type);\n });\n }\n\n protected nextEvent(event: DbxUserAnalyticsEvent, type: DbxAnalyticsStreamEventType): void {\n const wrapper = new DbxAnalyticsStreamEventAnalyticsEventWrapper(event, type);\n this._subject.next(wrapper);\n }\n\n // MARK: Internal\n private _init(): void {\n\n if (this._config.isProduction) {\n // Initialize listeners.\n this._config.listeners.forEach((listener) => {\n listener.listenToService(this);\n });\n } else {\n console.warn('AnalyticsService: Analytics not in production mode. All analytics events are ignored.');\n }\n\n if (this._config.logEvents || !this._config.isProduction) {\n console.log('AnalyticsService: Log analytics events enabled.');\n\n // Create a new subscription\n this._loggerSub.subscription = this._subject.subscribe((x) => {\n console.log(`AnalyticsService: Analytics Event - ${DbxAnalyticsStreamEventType[x.type]} User: ${x.userId} Data: ${JSON.stringify(x.event)}.`);\n });\n }\n\n this._userSourceSub.subscription = this.user$.subscribe(() => {\n this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserChange);\n });\n }\n\n destroy() {\n this._subject.complete();\n this._userSourceSub.destroy();\n this._loggerSub.destroy();\n }\n\n}\n","import { filterMaybe } from '@dereekb/rxjs';\nimport { switchMap, tap, shareReplay } from 'rxjs/operators';\nimport { Host, Directive, Input, OnInit, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, merge, Observable, of } from 'rxjs';\nimport { DbxActionContextStoreSourceInstance, AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxAnalyticsService } from '../analytics/analytics.service';\nimport { Maybe, ReadableError } from '@dereekb/util';\n\nexport enum DbxActionAnalyticsTriggerType {\n TRIGGER,\n READY,\n SUCCESS,\n ERROR\n}\n\nexport interface DbxActionAnalyticsConfig<T = any, O = any> {\n onTriggered: (service: DbxAnalyticsService) => void;\n onReady: (service: DbxAnalyticsService, value: T) => void;\n onSuccess: (service: DbxAnalyticsService, value: Maybe<O>) => void;\n onError: (service: DbxAnalyticsService, error: Maybe<ReadableError>) => void;\n}\n\n/**\n * Used to listen to an ActionContext and send analytical events based on action events.\n */\n@Directive({\n selector: '[dbxActionAnalytics]',\n})\nexport class DbxActionAnalyticsDirective<T> extends AbstractSubscriptionDirective implements OnInit, OnDestroy {\n\n private _config = new BehaviorSubject<Maybe<DbxActionAnalyticsConfig>>(undefined);\n readonly config$ = this._config.pipe(filterMaybe(), shareReplay(1));\n\n @Input('dbxActionAnalytics')\n get config(): Maybe<DbxActionAnalyticsConfig> {\n return this._config.value;\n }\n\n set config(config: Maybe<DbxActionAnalyticsConfig>) {\n this._config.next(config);\n }\n\n constructor(\n @Host() readonly source: DbxActionContextStoreSourceInstance,\n readonly analyticsService: DbxAnalyticsService\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.sub = this.config$.pipe(\n switchMap(({ onTriggered, onReady, onSuccess, onError }) => {\n const triggerObs: Observable<any>[] = [];\n\n if (onTriggered) {\n triggerObs.push(this.source.triggered$.pipe(\n tap(() => onTriggered(this.analyticsService))\n ));\n }\n\n if (onReady) {\n triggerObs.push(this.source.valueReady$.pipe(\n tap((value) => onReady(this.analyticsService, value))\n ));\n }\n\n if (onSuccess) {\n triggerObs.push(this.source.success$.pipe(\n tap((result) => onSuccess(this.analyticsService, result))\n ));\n }\n\n if (onError) {\n triggerObs.push(this.source.error$.pipe(\n tap((error) => onError(this.analyticsService, error))\n ));\n }\n\n if (triggerObs.length) {\n return merge(triggerObs);\n } else {\n return of();\n }\n })\n ).subscribe();\n }\n\n override ngOnDestroy(): void {\n this.source.lockSet.onNextUnlock(() => {\n super.ngOnDestroy();\n this._config.complete();\n });\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { DbxActionAnalyticsDirective } from './analytics.action.directive';\n\n@NgModule({\n declarations: [\n DbxActionAnalyticsDirective\n ],\n exports: [\n DbxActionAnalyticsDirective\n ]\n})\nexport class DbxAnalyticsActionModule { }\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport { DbxAnalyticsService } from './analytics.service';\n\n\nexport interface DbxAnalyticsModuleOptions {\n\n /**\n * Provides a AnalyticsServiceConfiguration value.\n */\n analyticsConfigurationProvider: Provider;\n\n}\n\n@NgModule()\nexport class DbxAnalyticsModule {\n\n static forRoot(options: DbxAnalyticsModuleOptions): ModuleWithProviders<DbxAnalyticsModule> {\n return {\n ngModule: DbxAnalyticsModule,\n providers: [\n // Configuration\n options.analyticsConfigurationProvider,\n // Service\n DbxAnalyticsService\n ]\n };\n }\n\n}\n","import { Injectable, InjectionToken, Inject } from '@angular/core';\nimport { AbstractAsyncWindowLoadedService } from '@dereekb/browser';\nimport { poll } from '@dereekb/util';\n\nexport const PRELOAD_SEGMENT_TOKEN = new InjectionToken<string>('DbxAnalyticsSegmentApiServicePreload');\n\nexport class DbxAnalyticsSegmentApiServiceConfig {\n logging = true;\n active = true;\n constructor(public writeKey: string) { }\n}\n\n\n/**\n * Segment API Service used for waiting/retrieving the segment API from window when initialized.\n *\n * This requires some setup in index.html.\n */\n@Injectable()\nexport class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedService<SegmentAnalytics.AnalyticsJS> {\n\n static readonly SEGMENT_API_WINDOW_KEY = 'analytics';\n static readonly SEGMENT_READY_KEY = 'SegmentReady';\n\n constructor(private _config: DbxAnalyticsSegmentApiServiceConfig, @Inject(PRELOAD_SEGMENT_TOKEN) preload: boolean = true) {\n super(DbxAnalyticsSegmentApiService.SEGMENT_API_WINDOW_KEY, undefined, 'Segment', preload);\n }\n\n get config(): DbxAnalyticsSegmentApiServiceConfig {\n return this._config;\n }\n\n protected override _prepareCompleteLoadingService(): Promise<void> {\n return poll({\n // poll until analytics.invoked is true.\n check: () => Boolean((window.analytics as any)?.invoked),\n timesToGiveup: 100\n });\n }\n\n protected override _initService(service: SegmentAnalytics.AnalyticsJS): Promise<SegmentAnalytics.AnalyticsJS> {\n return new Promise((resolve, reject) => {\n try {\n service.load(this._config.writeKey); // Initialize Segment\n\n // Wait for the service to ready itself.\n service.ready(() => {\n // Segment changes itself or rather the target, and the previous initial target is ignored after.\n const segment: SegmentAnalytics.AnalyticsJS = window[DbxAnalyticsSegmentApiService.SEGMENT_API_WINDOW_KEY];\n resolve(segment);\n });\n } catch (e) {\n console.log('Failed to init segment: ' + e);\n reject(e);\n }\n });\n\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { combineLatest } from 'rxjs';\nimport { AbstractDbxAnalyticsServiceListener, DbxAnalyticsStreamEvent, DbxAnalyticsStreamEventType, DbxAnalyticsUser } from '../../analytics';\nimport { DbxAnalyticsSegmentApiService } from './segment.service';\n\n/**\n * DbxAnalyticsServiceListener adapter for Segment.\n */\n@Injectable()\nexport class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceListener {\n\n constructor(private _segmentApi: DbxAnalyticsSegmentApiService) {\n super();\n\n if (this._segmentApi.config.logging) {\n console.log('SegmentAnalyticsListenerService: Segment is logging events.');\n }\n\n if (this._segmentApi.config.active) {\n console.log('SegmentAnalyticsListenerService: Segment is disabled from sending events to the server.');\n }\n }\n\n protected _initializeServiceSubscription() {\n return combineLatest([this._segmentApi.service$, this.analyticsEvents$]).subscribe(\n ([segment, streamEvent]: [SegmentAnalytics.AnalyticsJS, DbxAnalyticsStreamEvent]) => {\n if (this._segmentApi.config.logging) {\n console.log('Segment Listener Logging Event: ', streamEvent);\n }\n\n if (this._segmentApi.config.active) {\n this.handleStreamEvent(segment, streamEvent);\n }\n });\n }\n\n protected handleStreamEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void {\n switch (streamEvent.type) {\n case DbxAnalyticsStreamEventType.NewUserEvent:\n this.updateWithNewUserEvent(api, streamEvent);\n break;\n case DbxAnalyticsStreamEventType.UserLoginEvent:\n case DbxAnalyticsStreamEventType.Event:\n this.updateWithEvent(api, streamEvent);\n break;\n case DbxAnalyticsStreamEventType.UserLogoutEvent:\n this.changeUser(api, undefined);\n break;\n case DbxAnalyticsStreamEventType.PageView:\n api.page();\n break;\n case DbxAnalyticsStreamEventType.UserChange:\n this.changeUser(api, streamEvent.user);\n break;\n }\n }\n\n protected updateWithNewUserEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void {\n this.changeUser(api, streamEvent.user);\n }\n\n protected updateWithEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent, name?: string): void {\n const event = streamEvent.event;\n const eventName = name || event?.name;\n\n if (eventName) {\n const value = event?.value\n const data = event?.data;\n\n api.track(eventName, {\n ...(value != null) ? {\n value\n } : undefined,\n ...data\n }, {}, () => {\n if (this._segmentApi.config.logging) {\n console.log('Segment track success.');\n }\n });\n }\n }\n\n private changeUser(api: SegmentAnalytics.AnalyticsJS, user: Maybe<DbxAnalyticsUser>): void {\n if (user) {\n api.identify(user.user, {\n ...user.properties\n }, {}, () => {\n if (this._segmentApi.config.logging) {\n console.log('Segment identify success.');\n }\n });\n } else {\n api.reset();\n }\n }\n\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { PRELOAD_SEGMENT_TOKEN, DbxAnalyticsSegmentApiService } from './segment.service';\n\n@NgModule({\n declarations: [],\n imports: []\n})\nexport class DbxAnalyticsSegmentModule {\n\n static forRoot(preloadService?: boolean): ModuleWithProviders<DbxAnalyticsSegmentModule> {\n return {\n ngModule: DbxAnalyticsSegmentModule,\n providers: [\n {\n provide: PRELOAD_SEGMENT_TOKEN,\n useValue: preloadService\n },\n DbxAnalyticsSegmentApiService\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dereekb-dbx-analytics.mjs","sources":["../../../../packages/dbx-analytics/src/lib/analytics/analytics.stream.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.service.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.action.directive.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.action.module.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.module.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.service.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.listener.service.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.module.ts","../../../../packages/dbx-analytics/src/dereekb-dbx-analytics.ts"],"sourcesContent":["import { Maybe } from '@dereekb/util';\nimport { DbxAnalyticsUser, DbxUserAnalyticsEvent, DbxAnalyticsUserId } from './analytics';\n\nexport enum DbxAnalyticsStreamEventType {\n PageView,\n UserChange,\n\n // User Events\n NewUserEvent,\n UserLoginEvent,\n UserLogoutEvent,\n UserPropertiesEvent,\n\n // Events\n Event\n}\n\nexport interface DbxAnalyticsStreamEvent {\n readonly type: DbxAnalyticsStreamEventType;\n readonly user?: Maybe<DbxAnalyticsUser>;\n readonly event?: DbxUserAnalyticsEvent;\n readonly userId?: DbxAnalyticsUserId;\n}\n","import { Observable, Subject, BehaviorSubject, of, Subscription, first, shareReplay, switchMap } from 'rxjs';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';\nimport { DbxAnalyticsEvent, DbxAnalyticsEventData, DbxAnalyticsEventName, DbxAnalyticsUser, NewUserAnalyticsEventData, DbxUserAnalyticsEvent } from './analytics';\nimport { DbxAnalyticsStreamEvent, DbxAnalyticsStreamEventType } from './analytics.stream';\nimport { Maybe, Destroyable } from '@dereekb/util';\n\nexport abstract class DbxAnalyticsEventEmitterService {\n abstract sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void;\n abstract sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;\n abstract sendUserLogoutEvent(data?: DbxAnalyticsEventData): void;\n abstract sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;\n abstract sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void;\n abstract sendEvent(event: DbxAnalyticsEvent): void;\n abstract sendPageView(page?: string): void;\n}\n\nexport abstract class DbxAnalyticsEventStreamService {\n abstract readonly events$: Observable<DbxAnalyticsStreamEvent>;\n}\n\nexport abstract class DbxAnalyticsUserSource {\n abstract readonly analyticsUser$: Observable<Maybe<DbxAnalyticsUser>>;\n}\n\nexport abstract class DbxAnalyticsServiceListener {\n public abstract listenToService(service: DbxAnalyticsService): void;\n}\n\n/**\n * Abstract AnalyticsServiceListener implementation.\n */\nexport abstract class AbstractDbxAnalyticsServiceListener implements DbxAnalyticsServiceListener, Destroyable {\n private _sub = new SubscriptionObject();\n protected _analytics = new BehaviorSubject<Maybe<DbxAnalyticsService>>(undefined);\n\n readonly analytics$ = this._analytics.pipe(filterMaybe(), shareReplay(1));\n readonly analyticsEvents$ = this.analytics$.pipe(\n switchMap((x) => x.events$),\n shareReplay(1)\n );\n\n // MARK: AnalyticsServiceListener\n listenToService(service: DbxAnalyticsService): void {\n this._analytics.next(service);\n const sub = this._initializeServiceSubscription();\n\n if (sub !== false) {\n this._sub.subscription = sub;\n }\n }\n\n protected abstract _initializeServiceSubscription(): Subscription | false;\n\n // MARK: Destroy\n destroy(): void {\n this._analytics.complete();\n this._sub.destroy();\n }\n}\n\nexport abstract class DbxAnalyticsServiceConfiguration {\n listeners: DbxAnalyticsServiceListener[] = [];\n isProduction?: boolean;\n logEvents?: boolean;\n userSource?: DbxAnalyticsUserSource;\n}\n\nexport class DbxAnalyticsStreamEventAnalyticsEventWrapper implements DbxAnalyticsStreamEvent {\n constructor(public readonly event: DbxUserAnalyticsEvent, public readonly type: DbxAnalyticsStreamEventType = DbxAnalyticsStreamEventType.Event) {}\n\n public get user(): Maybe<DbxAnalyticsUser> {\n return this.event.user;\n }\n\n public get userId(): string | undefined {\n return this.user ? this.user.user : undefined;\n }\n}\n\n/**\n * Primary analytics service that emits analytics events that components can listen to.\n */\n@Injectable()\nexport class DbxAnalyticsService implements DbxAnalyticsEventStreamService, DbxAnalyticsEventEmitterService, Destroyable {\n // TODO: Make these configurable.\n\n static readonly USER_REGISTRATION_EVENT_NAME = 'User Registered';\n static readonly USER_LOGIN_EVENT_NAME = 'User Login';\n static readonly USER_LOGOUT_EVENT_NAME = 'User Logout';\n static readonly USER_PROPERTIES_EVENT_NAME = 'User Properties';\n\n private _subject = new Subject<DbxAnalyticsStreamEvent>();\n readonly events$ = this._subject.asObservable();\n\n private _userSource = new BehaviorSubject<Maybe<DbxAnalyticsUserSource>>(undefined);\n readonly user$ = this._userSource.pipe(\n switchMap((x) => (x ? x.analyticsUser$ : of(undefined))),\n shareReplay(1)\n );\n\n private _userSourceSub = new SubscriptionObject();\n private _loggerSub = new SubscriptionObject();\n\n constructor(private _config: DbxAnalyticsServiceConfiguration, @Optional() @Inject(DbxAnalyticsUserSource) userSource: Maybe<DbxAnalyticsUserSource> = _config.userSource) {\n this._init();\n\n if (userSource) {\n this.setUserSource(userSource);\n }\n }\n\n // MARK: Source\n /**\n * Sets the user directly.\n */\n public setUser(user: Maybe<DbxAnalyticsUser>): void {\n let source: Maybe<DbxAnalyticsUserSource>;\n\n if (user) {\n source = { analyticsUser$: of(user) };\n }\n\n this._userSource.next(source);\n }\n\n public setUserSource(source: DbxAnalyticsUserSource): void {\n this._userSource.next(source);\n }\n\n // MARK: AnalyticsEventEmitterService\n /**\n * Sends an event.\n */\n public sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void {\n this.sendNextEvent(\n {\n name: DbxAnalyticsService.USER_REGISTRATION_EVENT_NAME,\n data\n },\n DbxAnalyticsStreamEventType.NewUserEvent,\n user\n );\n }\n\n public sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void {\n this.sendNextEvent(\n {\n name: DbxAnalyticsService.USER_LOGIN_EVENT_NAME,\n data\n },\n DbxAnalyticsStreamEventType.UserLoginEvent,\n user\n );\n }\n\n public sendUserLogoutEvent(data?: DbxAnalyticsEventData, clearUser = true): void {\n this.sendNextEvent(\n {\n name: DbxAnalyticsService.USER_LOGOUT_EVENT_NAME,\n data\n },\n DbxAnalyticsStreamEventType.UserLogoutEvent\n );\n\n if (clearUser) {\n this.setUser(undefined);\n }\n }\n\n public sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void {\n this.sendNextEvent(\n {\n name: DbxAnalyticsService.USER_PROPERTIES_EVENT_NAME,\n data\n },\n DbxAnalyticsStreamEventType.UserPropertiesEvent,\n user\n );\n }\n\n public sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void {\n return this.sendEvent({\n name,\n data\n });\n }\n\n public sendEventType(eventType: DbxAnalyticsEventName): void {\n this.sendNextEvent(\n {\n name: eventType\n },\n DbxAnalyticsStreamEventType.Event\n );\n }\n\n public sendEvent(event: DbxAnalyticsEvent): void {\n this.sendNextEvent(event, DbxAnalyticsStreamEventType.Event);\n }\n\n public sendPageView(page?: string): void {\n this.sendNextEvent(\n {\n name: page\n },\n DbxAnalyticsStreamEventType.PageView\n );\n }\n\n protected sendNextEvent(event: DbxAnalyticsEvent = {}, type: DbxAnalyticsStreamEventType, userOverride?: DbxAnalyticsUser): void {\n this.user$.pipe(first()).subscribe((analyticsUser) => {\n const user: Maybe<DbxAnalyticsUser> = userOverride != null ? userOverride : analyticsUser;\n const analyticsEvent: DbxUserAnalyticsEvent = { ...event, user };\n this.nextEvent(analyticsEvent, type);\n });\n }\n\n protected nextEvent(event: DbxUserAnalyticsEvent, type: DbxAnalyticsStreamEventType): void {\n const wrapper = new DbxAnalyticsStreamEventAnalyticsEventWrapper(event, type);\n this._subject.next(wrapper);\n }\n\n // MARK: Internal\n private _init(): void {\n if (this._config.isProduction) {\n // Initialize listeners.\n this._config.listeners.forEach((listener) => {\n listener.listenToService(this);\n });\n } else {\n console.warn('AnalyticsService: Analytics not in production mode. All analytics events are ignored.');\n }\n\n if (this._config.logEvents || !this._config.isProduction) {\n console.log('AnalyticsService: Log analytics events enabled.');\n\n // Create a new subscription\n this._loggerSub.subscription = this._subject.subscribe((x) => {\n console.log(`AnalyticsService: Analytics Event - ${DbxAnalyticsStreamEventType[x.type]} User: ${x.userId} Data: ${JSON.stringify(x.event)}.`);\n });\n }\n\n this._userSourceSub.subscription = this.user$.subscribe(() => {\n this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserChange);\n });\n }\n\n destroy() {\n this._subject.complete();\n this._userSourceSub.destroy();\n this._loggerSub.destroy();\n }\n}\n","import { filterMaybe } from '@dereekb/rxjs';\nimport { switchMap, tap, shareReplay, BehaviorSubject, merge, Observable, of } from 'rxjs';\nimport { Host, Directive, Input, OnInit, OnDestroy } from '@angular/core';\nimport { DbxActionContextStoreSourceInstance, AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxAnalyticsService } from '../analytics/analytics.service';\nimport { Maybe, ReadableError } from '@dereekb/util';\n\nexport enum DbxActionAnalyticsTriggerType {\n TRIGGER,\n READY,\n SUCCESS,\n ERROR\n}\n\nexport interface DbxActionAnalyticsConfig<T = unknown, O = unknown> {\n onTriggered: (service: DbxAnalyticsService) => void;\n onReady: (service: DbxAnalyticsService, value: T) => void;\n onSuccess: (service: DbxAnalyticsService, value: Maybe<O>) => void;\n onError: (service: DbxAnalyticsService, error: Maybe<ReadableError>) => void;\n}\n\n/**\n * Used to listen to an ActionContext and send analytical events based on action events.\n */\n@Directive({\n selector: '[dbxActionAnalytics]'\n})\nexport class DbxActionAnalyticsDirective<T, O> extends AbstractSubscriptionDirective implements OnInit, OnDestroy {\n private _config = new BehaviorSubject<Maybe<DbxActionAnalyticsConfig<T, O>>>(undefined);\n readonly config$ = this._config.pipe(filterMaybe(), shareReplay(1));\n\n @Input('dbxActionAnalytics')\n get config(): Maybe<DbxActionAnalyticsConfig<T, O>> {\n return this._config.value;\n }\n\n set config(config: Maybe<DbxActionAnalyticsConfig<T, O>>) {\n this._config.next(config);\n }\n\n constructor(@Host() readonly source: DbxActionContextStoreSourceInstance<T, O>, readonly analyticsService: DbxAnalyticsService) {\n super();\n }\n\n ngOnInit(): void {\n this.sub = this.config$\n .pipe(\n switchMap(({ onTriggered, onReady, onSuccess, onError }) => {\n const triggerObs: Observable<unknown>[] = [];\n\n if (onTriggered) {\n triggerObs.push(this.source.triggered$.pipe(tap(() => onTriggered(this.analyticsService))));\n }\n\n if (onReady) {\n triggerObs.push(this.source.valueReady$.pipe(tap((value) => onReady(this.analyticsService, value))));\n }\n\n if (onSuccess) {\n triggerObs.push(this.source.success$.pipe(tap((result) => onSuccess(this.analyticsService, result))));\n }\n\n if (onError) {\n triggerObs.push(this.source.error$.pipe(tap((error) => onError(this.analyticsService, error))));\n }\n\n if (triggerObs.length) {\n return merge(triggerObs);\n } else {\n return of();\n }\n })\n )\n .subscribe();\n }\n\n override ngOnDestroy(): void {\n this.source.lockSet.onNextUnlock(() => {\n super.ngOnDestroy();\n this._config.complete();\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxActionAnalyticsDirective } from './analytics.action.directive';\n\n@NgModule({\n declarations: [DbxActionAnalyticsDirective],\n exports: [DbxActionAnalyticsDirective]\n})\nexport class DbxAnalyticsActionModule {}\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport { DbxAnalyticsService } from './analytics.service';\n\nexport interface DbxAnalyticsModuleOptions {\n /**\n * Provides a AnalyticsServiceConfiguration value.\n */\n analyticsConfigurationProvider: Provider;\n}\n\n@NgModule()\nexport class DbxAnalyticsModule {\n static forRoot(options: DbxAnalyticsModuleOptions): ModuleWithProviders<DbxAnalyticsModule> {\n return {\n ngModule: DbxAnalyticsModule,\n providers: [\n // Configuration\n options.analyticsConfigurationProvider,\n // Service\n DbxAnalyticsService\n ]\n };\n }\n}\n","import { Injectable, InjectionToken, Inject } from '@angular/core';\nimport { AbstractAsyncWindowLoadedService } from '@dereekb/browser';\nimport { poll } from '@dereekb/util';\n\nexport const PRELOAD_SEGMENT_TOKEN = new InjectionToken<string>('DbxAnalyticsSegmentApiServicePreload');\n\nexport class DbxAnalyticsSegmentApiServiceConfig {\n logging = true;\n active = true;\n constructor(public writeKey: string) {}\n}\n\n/**\n * When the Segment library finishes loading, it is invoked.\n */\ntype SegmentAnalyticsInvoked = SegmentAnalytics.AnalyticsJS & { invoked?: boolean };\n\n/**\n * Segment API Service used for waiting/retrieving the segment API from window when initialized.\n *\n * This requires some setup in index.html.\n */\n@Injectable()\nexport class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedService<SegmentAnalytics.AnalyticsJS> {\n static readonly SEGMENT_API_WINDOW_KEY = 'analytics';\n static readonly SEGMENT_READY_KEY = 'SegmentReady';\n\n constructor(private _config: DbxAnalyticsSegmentApiServiceConfig, @Inject(PRELOAD_SEGMENT_TOKEN) preload: boolean = true) {\n super(DbxAnalyticsSegmentApiService.SEGMENT_API_WINDOW_KEY, undefined, 'Segment', preload);\n }\n\n get config(): DbxAnalyticsSegmentApiServiceConfig {\n return this._config;\n }\n\n protected override _prepareCompleteLoadingService(): Promise<void> {\n return poll({\n // poll until analytics.invoked is true.\n check: () => Boolean((window.analytics as SegmentAnalyticsInvoked).invoked),\n timesToGiveup: 100\n });\n }\n\n protected override _initService(service: SegmentAnalytics.AnalyticsJS): Promise<SegmentAnalytics.AnalyticsJS> {\n return new Promise((resolve, reject) => {\n try {\n service.load(this._config.writeKey); // Initialize Segment\n\n // Wait for the service to ready itself.\n service.ready(() => {\n // Segment changes itself or rather the target, and the previous initial target is ignored after.\n const segment: SegmentAnalytics.AnalyticsJS = window[DbxAnalyticsSegmentApiService.SEGMENT_API_WINDOW_KEY];\n resolve(segment);\n });\n } catch (e) {\n console.log('Failed to init segment: ' + e);\n reject(e);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { combineLatest } from 'rxjs';\nimport { AbstractDbxAnalyticsServiceListener, DbxAnalyticsStreamEvent, DbxAnalyticsStreamEventType, DbxAnalyticsUser } from '../../analytics';\nimport { DbxAnalyticsSegmentApiService } from './segment.service';\n\n/**\n * DbxAnalyticsServiceListener adapter for Segment.\n */\n@Injectable()\nexport class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceListener {\n constructor(private _segmentApi: DbxAnalyticsSegmentApiService) {\n super();\n\n if (this._segmentApi.config.logging) {\n console.log('SegmentAnalyticsListenerService: Segment is logging events.');\n }\n\n if (this._segmentApi.config.active) {\n console.log('SegmentAnalyticsListenerService: Segment is disabled from sending events to the server.');\n }\n }\n\n protected _initializeServiceSubscription() {\n return combineLatest([this._segmentApi.service$, this.analyticsEvents$]).subscribe(([segment, streamEvent]: [SegmentAnalytics.AnalyticsJS, DbxAnalyticsStreamEvent]) => {\n if (this._segmentApi.config.logging) {\n console.log('Segment Listener Logging Event: ', streamEvent);\n }\n\n if (this._segmentApi.config.active) {\n this.handleStreamEvent(segment, streamEvent);\n }\n });\n }\n\n protected handleStreamEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void {\n switch (streamEvent.type) {\n case DbxAnalyticsStreamEventType.NewUserEvent:\n this.updateWithNewUserEvent(api, streamEvent);\n break;\n case DbxAnalyticsStreamEventType.UserLoginEvent:\n case DbxAnalyticsStreamEventType.Event:\n this.updateWithEvent(api, streamEvent);\n break;\n case DbxAnalyticsStreamEventType.UserLogoutEvent:\n this.changeUser(api, undefined);\n break;\n case DbxAnalyticsStreamEventType.PageView:\n api.page();\n break;\n case DbxAnalyticsStreamEventType.UserChange:\n this.changeUser(api, streamEvent.user);\n break;\n }\n }\n\n protected updateWithNewUserEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void {\n this.changeUser(api, streamEvent.user);\n }\n\n protected updateWithEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent, name?: string): void {\n const event = streamEvent.event;\n const eventName = name || event?.name;\n\n if (eventName) {\n const value = event?.value;\n const data = event?.data;\n\n api.track(\n eventName,\n {\n ...(value != null\n ? {\n value\n }\n : undefined),\n ...data\n },\n {},\n () => {\n if (this._segmentApi.config.logging) {\n console.log('Segment track success.');\n }\n }\n );\n }\n }\n\n private changeUser(api: SegmentAnalytics.AnalyticsJS, user: Maybe<DbxAnalyticsUser>): void {\n if (user) {\n api.identify(\n user.user,\n {\n ...user.properties\n },\n {},\n () => {\n if (this._segmentApi.config.logging) {\n console.log('Segment identify success.');\n }\n }\n );\n } else {\n api.reset();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { PRELOAD_SEGMENT_TOKEN, DbxAnalyticsSegmentApiService } from './segment.service';\n\n@NgModule({\n declarations: [],\n imports: []\n})\nexport class DbxAnalyticsSegmentModule {\n static forRoot(preloadService?: boolean): ModuleWithProviders<DbxAnalyticsSegmentModule> {\n return {\n ngModule: DbxAnalyticsSegmentModule,\n providers: [\n {\n provide: PRELOAD_SEGMENT_TOKEN,\n useValue: preloadService\n },\n DbxAnalyticsSegmentApiService\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, Optional, Inject, Directive, Host, Input, NgModule, InjectionToken } from '@angular/core';
|
|
3
3
|
import { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';
|
|
4
|
-
import { shareReplay, switchMap, first, tap } from 'rxjs
|
|
5
|
-
import { BehaviorSubject, Subject, of, merge, combineLatest } from 'rxjs';
|
|
4
|
+
import { BehaviorSubject, shareReplay, switchMap, Subject, of, first, tap, merge, combineLatest } from 'rxjs';
|
|
6
5
|
import * as i1 from '@dereekb/dbx-core';
|
|
7
6
|
import { AbstractSubscriptionDirective } from '@dereekb/dbx-core';
|
|
8
7
|
import { AbstractAsyncWindowLoadedService } from '@dereekb/browser';
|
|
@@ -37,7 +36,7 @@ class AbstractDbxAnalyticsServiceListener {
|
|
|
37
36
|
this._sub = new SubscriptionObject();
|
|
38
37
|
this._analytics = new BehaviorSubject(undefined);
|
|
39
38
|
this.analytics$ = this._analytics.pipe(filterMaybe(), shareReplay(1));
|
|
40
|
-
this.analyticsEvents$ = this.analytics$.pipe(switchMap(x => x.events$), shareReplay(1));
|
|
39
|
+
this.analyticsEvents$ = this.analytics$.pipe(switchMap((x) => x.events$), shareReplay(1));
|
|
41
40
|
}
|
|
42
41
|
// MARK: AnalyticsServiceListener
|
|
43
42
|
listenToService(service) {
|
|
@@ -67,7 +66,7 @@ class DbxAnalyticsStreamEventAnalyticsEventWrapper {
|
|
|
67
66
|
return this.event.user;
|
|
68
67
|
}
|
|
69
68
|
get userId() {
|
|
70
|
-
return
|
|
69
|
+
return this.user ? this.user.user : undefined;
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
72
|
/**
|
|
@@ -79,7 +78,7 @@ class DbxAnalyticsService {
|
|
|
79
78
|
this._subject = new Subject();
|
|
80
79
|
this.events$ = this._subject.asObservable();
|
|
81
80
|
this._userSource = new BehaviorSubject(undefined);
|
|
82
|
-
this.user$ = this._userSource.pipe(switchMap(x => (x
|
|
81
|
+
this.user$ = this._userSource.pipe(switchMap((x) => (x ? x.analyticsUser$ : of(undefined))), shareReplay(1));
|
|
83
82
|
this._userSourceSub = new SubscriptionObject();
|
|
84
83
|
this._loggerSub = new SubscriptionObject();
|
|
85
84
|
this._init();
|
|
@@ -153,7 +152,7 @@ class DbxAnalyticsService {
|
|
|
153
152
|
}
|
|
154
153
|
sendNextEvent(event = {}, type, userOverride) {
|
|
155
154
|
this.user$.pipe(first()).subscribe((analyticsUser) => {
|
|
156
|
-
const user =
|
|
155
|
+
const user = userOverride != null ? userOverride : analyticsUser;
|
|
157
156
|
const analyticsEvent = { ...event, user };
|
|
158
157
|
this.nextEvent(analyticsEvent, type);
|
|
159
158
|
});
|
|
@@ -231,7 +230,8 @@ class DbxActionAnalyticsDirective extends AbstractSubscriptionDirective {
|
|
|
231
230
|
this._config.next(config);
|
|
232
231
|
}
|
|
233
232
|
ngOnInit() {
|
|
234
|
-
this.sub = this.config
|
|
233
|
+
this.sub = this.config$
|
|
234
|
+
.pipe(switchMap(({ onTriggered, onReady, onSuccess, onError }) => {
|
|
235
235
|
const triggerObs = [];
|
|
236
236
|
if (onTriggered) {
|
|
237
237
|
triggerObs.push(this.source.triggered$.pipe(tap(() => onTriggered(this.analyticsService))));
|
|
@@ -251,7 +251,8 @@ class DbxActionAnalyticsDirective extends AbstractSubscriptionDirective {
|
|
|
251
251
|
else {
|
|
252
252
|
return of();
|
|
253
253
|
}
|
|
254
|
-
}))
|
|
254
|
+
}))
|
|
255
|
+
.subscribe();
|
|
255
256
|
}
|
|
256
257
|
ngOnDestroy() {
|
|
257
258
|
this.source.lockSet.onNextUnlock(() => {
|
|
@@ -265,7 +266,7 @@ DbxActionAnalyticsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.
|
|
|
265
266
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxActionAnalyticsDirective, decorators: [{
|
|
266
267
|
type: Directive,
|
|
267
268
|
args: [{
|
|
268
|
-
selector: '[dbxActionAnalytics]'
|
|
269
|
+
selector: '[dbxActionAnalytics]'
|
|
269
270
|
}]
|
|
270
271
|
}], ctorParameters: function () { return [{ type: i1.DbxActionContextStoreSourceInstance, decorators: [{
|
|
271
272
|
type: Host
|
|
@@ -282,12 +283,8 @@ DbxAnalyticsActionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0"
|
|
|
282
283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DbxAnalyticsActionModule, decorators: [{
|
|
283
284
|
type: NgModule,
|
|
284
285
|
args: [{
|
|
285
|
-
declarations: [
|
|
286
|
-
|
|
287
|
-
],
|
|
288
|
-
exports: [
|
|
289
|
-
DbxActionAnalyticsDirective
|
|
290
|
-
]
|
|
286
|
+
declarations: [DbxActionAnalyticsDirective],
|
|
287
|
+
exports: [DbxActionAnalyticsDirective]
|
|
291
288
|
}]
|
|
292
289
|
}] });
|
|
293
290
|
|
|
@@ -335,7 +332,7 @@ class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedService {
|
|
|
335
332
|
_prepareCompleteLoadingService() {
|
|
336
333
|
return poll({
|
|
337
334
|
// poll until analytics.invoked is true.
|
|
338
|
-
check: () => Boolean(window.analytics
|
|
335
|
+
check: () => Boolean(window.analytics.invoked),
|
|
339
336
|
timesToGiveup: 100
|
|
340
337
|
});
|
|
341
338
|
}
|
|
@@ -422,9 +419,11 @@ class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceList
|
|
|
422
419
|
const value = event?.value;
|
|
423
420
|
const data = event?.data;
|
|
424
421
|
api.track(eventName, {
|
|
425
|
-
...(value != null
|
|
426
|
-
|
|
427
|
-
|
|
422
|
+
...(value != null
|
|
423
|
+
? {
|
|
424
|
+
value
|
|
425
|
+
}
|
|
426
|
+
: undefined),
|
|
428
427
|
...data
|
|
429
428
|
}, {}, () => {
|
|
430
429
|
if (this._segmentApi.config.logging) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dereekb-dbx-analytics.mjs","sources":["../../../../packages/dbx-analytics/src/lib/analytics/analytics.stream.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.service.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.action.directive.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.action.module.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.module.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.service.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.listener.service.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.module.ts","../../../../packages/dbx-analytics/src/dereekb-dbx-analytics.ts"],"sourcesContent":["import { Maybe } from \"@dereekb/util\";\nimport { DbxAnalyticsUser, DbxUserAnalyticsEvent, DbxAnalyticsUserId } from \"./analytics\";\n\nexport enum DbxAnalyticsStreamEventType {\n\n PageView,\n UserChange,\n\n // User Events\n NewUserEvent,\n UserLoginEvent,\n UserLogoutEvent,\n UserPropertiesEvent,\n\n // Events\n Event\n\n}\n\nexport interface DbxAnalyticsStreamEvent {\n readonly type: DbxAnalyticsStreamEventType;\n readonly user?: Maybe<DbxAnalyticsUser>;\n readonly event?: DbxUserAnalyticsEvent;\n readonly userId?: DbxAnalyticsUserId;\n}\n","import { Observable, Subject, BehaviorSubject, of, Subscription } from 'rxjs';\nimport { filter, first, shareReplay, switchMap } from 'rxjs/operators';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';\nimport { DbxAnalyticsEvent, DbxAnalyticsEventData, DbxAnalyticsEventName, DbxAnalyticsUser, NewUserAnalyticsEventData, DbxUserAnalyticsEvent } from './analytics';\nimport { DbxAnalyticsStreamEvent, DbxAnalyticsStreamEventType } from './analytics.stream';\nimport { Maybe, Destroyable } from '@dereekb/util';\n\nexport abstract class DbxAnalyticsEventEmitterService {\n abstract sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void;\n abstract sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;\n abstract sendUserLogoutEvent(data?: DbxAnalyticsEventData): void;\n abstract sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;\n abstract sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void;\n abstract sendEvent(event: DbxAnalyticsEvent): void;\n abstract sendPageView(page?: string): void;\n}\n\nexport abstract class DbxAnalyticsEventStreamService {\n abstract readonly events$: Observable<DbxAnalyticsStreamEvent>;\n}\n\nexport abstract class DbxAnalyticsUserSource {\n abstract readonly analyticsUser$: Observable<Maybe<DbxAnalyticsUser>>;\n}\n\nexport abstract class DbxAnalyticsServiceListener {\n public abstract listenToService(service: DbxAnalyticsService): void;\n}\n\n/**\n * Abstract AnalyticsServiceListener implementation.\n */\nexport abstract class AbstractDbxAnalyticsServiceListener implements DbxAnalyticsServiceListener, Destroyable {\n\n private _sub = new SubscriptionObject();\n protected _analytics = new BehaviorSubject<Maybe<DbxAnalyticsService>>(undefined);\n\n readonly analytics$ = this._analytics.pipe(filterMaybe(), shareReplay(1));\n readonly analyticsEvents$ = this.analytics$.pipe(switchMap(x => x.events$), shareReplay(1));\n\n // MARK: AnalyticsServiceListener\n listenToService(service: DbxAnalyticsService): void {\n this._analytics.next(service);\n const sub = this._initializeServiceSubscription();\n\n if (sub !== false) {\n this._sub.subscription = sub;\n }\n }\n\n protected abstract _initializeServiceSubscription(): Subscription | false;\n\n // MARK: Destroy\n destroy(): void {\n this._analytics.complete();\n this._sub.destroy();\n }\n\n}\n\nexport abstract class DbxAnalyticsServiceConfiguration {\n listeners: DbxAnalyticsServiceListener[] = [];\n isProduction?: boolean;\n logEvents?: boolean;\n userSource?: DbxAnalyticsUserSource;\n}\n\nexport class DbxAnalyticsStreamEventAnalyticsEventWrapper implements DbxAnalyticsStreamEvent {\n\n constructor(public readonly event: DbxUserAnalyticsEvent, public readonly type: DbxAnalyticsStreamEventType = DbxAnalyticsStreamEventType.Event) { }\n\n public get user(): Maybe<DbxAnalyticsUser> {\n return this.event.user;\n }\n\n public get userId(): string | undefined {\n return (this.user) ? this.user.user : undefined;\n }\n\n}\n\n/**\n * Primary analytics service that emits analytics events that components can listen to.\n */\n@Injectable()\nexport class DbxAnalyticsService implements DbxAnalyticsEventStreamService, DbxAnalyticsEventEmitterService, Destroyable {\n\n // TODO: Make these configurable.\n\n static readonly USER_REGISTRATION_EVENT_NAME = 'User Registered';\n static readonly USER_LOGIN_EVENT_NAME = 'User Login';\n static readonly USER_LOGOUT_EVENT_NAME = 'User Logout';\n static readonly USER_PROPERTIES_EVENT_NAME = 'User Properties';\n\n private _subject = new Subject<DbxAnalyticsStreamEvent>();\n readonly events$ = this._subject.asObservable();\n\n private _userSource = new BehaviorSubject<Maybe<DbxAnalyticsUserSource>>(undefined);\n readonly user$ = this._userSource.pipe(switchMap(x => (x) ? x.analyticsUser$ : of(undefined)), shareReplay(1));\n\n private _userSourceSub = new SubscriptionObject();\n private _loggerSub = new SubscriptionObject();\n\n constructor(\n private _config: DbxAnalyticsServiceConfiguration,\n @Optional() @Inject(DbxAnalyticsUserSource) userSource: Maybe<DbxAnalyticsUserSource> = _config.userSource\n ) {\n this._init();\n\n if (userSource) {\n this.setUserSource(userSource);\n }\n }\n\n // MARK: Source\n /**\n * Sets the user directly.\n */\n public setUser(user: Maybe<DbxAnalyticsUser>): void {\n let source: Maybe<DbxAnalyticsUserSource>;\n\n if (user) {\n source = { analyticsUser$: of(user) };\n }\n\n this._userSource.next(source);\n }\n\n public setUserSource(source: DbxAnalyticsUserSource): void {\n this._userSource.next(source);\n }\n\n // MARK: AnalyticsEventEmitterService\n /**\n * Sends an event.\n */\n public sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void {\n this.sendNextEvent({\n name: DbxAnalyticsService.USER_REGISTRATION_EVENT_NAME,\n data\n }, DbxAnalyticsStreamEventType.NewUserEvent, user);\n }\n\n public sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void {\n this.sendNextEvent({\n name: DbxAnalyticsService.USER_LOGIN_EVENT_NAME,\n data\n }, DbxAnalyticsStreamEventType.UserLoginEvent, user);\n }\n\n public sendUserLogoutEvent(data?: DbxAnalyticsEventData, clearUser = true): void {\n this.sendNextEvent({\n name: DbxAnalyticsService.USER_LOGOUT_EVENT_NAME,\n data\n }, DbxAnalyticsStreamEventType.UserLogoutEvent);\n\n if (clearUser) {\n this.setUser(undefined);\n }\n }\n\n public sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void {\n this.sendNextEvent({\n name: DbxAnalyticsService.USER_PROPERTIES_EVENT_NAME,\n data\n }, DbxAnalyticsStreamEventType.UserPropertiesEvent, user);\n }\n\n public sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void {\n return this.sendEvent({\n name,\n data\n });\n }\n\n public sendEventType(eventType: DbxAnalyticsEventName): void {\n this.sendNextEvent({\n name: eventType\n }, DbxAnalyticsStreamEventType.Event);\n }\n\n public sendEvent(event: DbxAnalyticsEvent): void {\n this.sendNextEvent(event, DbxAnalyticsStreamEventType.Event);\n }\n\n public sendPageView(page?: string): void {\n this.sendNextEvent({\n name: page\n }, DbxAnalyticsStreamEventType.PageView);\n }\n\n protected sendNextEvent(event: DbxAnalyticsEvent = {}, type: DbxAnalyticsStreamEventType, userOverride?: DbxAnalyticsUser): void {\n this.user$.pipe(first()).subscribe((analyticsUser) => {\n const user: Maybe<DbxAnalyticsUser> = (userOverride != null) ? userOverride : analyticsUser;\n const analyticsEvent: DbxUserAnalyticsEvent = { ...event, user };\n this.nextEvent(analyticsEvent, type);\n });\n }\n\n protected nextEvent(event: DbxUserAnalyticsEvent, type: DbxAnalyticsStreamEventType): void {\n const wrapper = new DbxAnalyticsStreamEventAnalyticsEventWrapper(event, type);\n this._subject.next(wrapper);\n }\n\n // MARK: Internal\n private _init(): void {\n\n if (this._config.isProduction) {\n // Initialize listeners.\n this._config.listeners.forEach((listener) => {\n listener.listenToService(this);\n });\n } else {\n console.warn('AnalyticsService: Analytics not in production mode. All analytics events are ignored.');\n }\n\n if (this._config.logEvents || !this._config.isProduction) {\n console.log('AnalyticsService: Log analytics events enabled.');\n\n // Create a new subscription\n this._loggerSub.subscription = this._subject.subscribe((x) => {\n console.log(`AnalyticsService: Analytics Event - ${DbxAnalyticsStreamEventType[x.type]} User: ${x.userId} Data: ${JSON.stringify(x.event)}.`);\n });\n }\n\n this._userSourceSub.subscription = this.user$.subscribe(() => {\n this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserChange);\n });\n }\n\n destroy() {\n this._subject.complete();\n this._userSourceSub.destroy();\n this._loggerSub.destroy();\n }\n\n}\n","import { filterMaybe } from '@dereekb/rxjs';\nimport { switchMap, tap, shareReplay } from 'rxjs/operators';\nimport { Host, Directive, Input, OnInit, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, merge, Observable, of } from 'rxjs';\nimport { DbxActionContextStoreSourceInstance, AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxAnalyticsService } from '../analytics/analytics.service';\nimport { Maybe, ReadableError } from '@dereekb/util';\n\nexport enum DbxActionAnalyticsTriggerType {\n TRIGGER,\n READY,\n SUCCESS,\n ERROR\n}\n\nexport interface DbxActionAnalyticsConfig<T = any, O = any> {\n onTriggered: (service: DbxAnalyticsService) => void;\n onReady: (service: DbxAnalyticsService, value: T) => void;\n onSuccess: (service: DbxAnalyticsService, value: Maybe<O>) => void;\n onError: (service: DbxAnalyticsService, error: Maybe<ReadableError>) => void;\n}\n\n/**\n * Used to listen to an ActionContext and send analytical events based on action events.\n */\n@Directive({\n selector: '[dbxActionAnalytics]',\n})\nexport class DbxActionAnalyticsDirective<T> extends AbstractSubscriptionDirective implements OnInit, OnDestroy {\n\n private _config = new BehaviorSubject<Maybe<DbxActionAnalyticsConfig>>(undefined);\n readonly config$ = this._config.pipe(filterMaybe(), shareReplay(1));\n\n @Input('dbxActionAnalytics')\n get config(): Maybe<DbxActionAnalyticsConfig> {\n return this._config.value;\n }\n\n set config(config: Maybe<DbxActionAnalyticsConfig>) {\n this._config.next(config);\n }\n\n constructor(\n @Host() readonly source: DbxActionContextStoreSourceInstance,\n readonly analyticsService: DbxAnalyticsService\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.sub = this.config$.pipe(\n switchMap(({ onTriggered, onReady, onSuccess, onError }) => {\n const triggerObs: Observable<any>[] = [];\n\n if (onTriggered) {\n triggerObs.push(this.source.triggered$.pipe(\n tap(() => onTriggered(this.analyticsService))\n ));\n }\n\n if (onReady) {\n triggerObs.push(this.source.valueReady$.pipe(\n tap((value) => onReady(this.analyticsService, value))\n ));\n }\n\n if (onSuccess) {\n triggerObs.push(this.source.success$.pipe(\n tap((result) => onSuccess(this.analyticsService, result))\n ));\n }\n\n if (onError) {\n triggerObs.push(this.source.error$.pipe(\n tap((error) => onError(this.analyticsService, error))\n ));\n }\n\n if (triggerObs.length) {\n return merge(triggerObs);\n } else {\n return of();\n }\n })\n ).subscribe();\n }\n\n override ngOnDestroy(): void {\n this.source.lockSet.onNextUnlock(() => {\n super.ngOnDestroy();\n this._config.complete();\n });\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { DbxActionAnalyticsDirective } from './analytics.action.directive';\n\n@NgModule({\n declarations: [\n DbxActionAnalyticsDirective\n ],\n exports: [\n DbxActionAnalyticsDirective\n ]\n})\nexport class DbxAnalyticsActionModule { }\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport { DbxAnalyticsService } from './analytics.service';\n\n\nexport interface DbxAnalyticsModuleOptions {\n\n /**\n * Provides a AnalyticsServiceConfiguration value.\n */\n analyticsConfigurationProvider: Provider;\n\n}\n\n@NgModule()\nexport class DbxAnalyticsModule {\n\n static forRoot(options: DbxAnalyticsModuleOptions): ModuleWithProviders<DbxAnalyticsModule> {\n return {\n ngModule: DbxAnalyticsModule,\n providers: [\n // Configuration\n options.analyticsConfigurationProvider,\n // Service\n DbxAnalyticsService\n ]\n };\n }\n\n}\n","import { Injectable, InjectionToken, Inject } from '@angular/core';\nimport { AbstractAsyncWindowLoadedService } from '@dereekb/browser';\nimport { poll } from '@dereekb/util';\n\nexport const PRELOAD_SEGMENT_TOKEN = new InjectionToken<string>('DbxAnalyticsSegmentApiServicePreload');\n\nexport class DbxAnalyticsSegmentApiServiceConfig {\n logging = true;\n active = true;\n constructor(public writeKey: string) { }\n}\n\n\n/**\n * Segment API Service used for waiting/retrieving the segment API from window when initialized.\n *\n * This requires some setup in index.html.\n */\n@Injectable()\nexport class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedService<SegmentAnalytics.AnalyticsJS> {\n\n static readonly SEGMENT_API_WINDOW_KEY = 'analytics';\n static readonly SEGMENT_READY_KEY = 'SegmentReady';\n\n constructor(private _config: DbxAnalyticsSegmentApiServiceConfig, @Inject(PRELOAD_SEGMENT_TOKEN) preload: boolean = true) {\n super(DbxAnalyticsSegmentApiService.SEGMENT_API_WINDOW_KEY, undefined, 'Segment', preload);\n }\n\n get config(): DbxAnalyticsSegmentApiServiceConfig {\n return this._config;\n }\n\n protected override _prepareCompleteLoadingService(): Promise<void> {\n return poll({\n // poll until analytics.invoked is true.\n check: () => Boolean((window.analytics as any)?.invoked),\n timesToGiveup: 100\n });\n }\n\n protected override _initService(service: SegmentAnalytics.AnalyticsJS): Promise<SegmentAnalytics.AnalyticsJS> {\n return new Promise((resolve, reject) => {\n try {\n service.load(this._config.writeKey); // Initialize Segment\n\n // Wait for the service to ready itself.\n service.ready(() => {\n // Segment changes itself or rather the target, and the previous initial target is ignored after.\n const segment: SegmentAnalytics.AnalyticsJS = window[DbxAnalyticsSegmentApiService.SEGMENT_API_WINDOW_KEY];\n resolve(segment);\n });\n } catch (e) {\n console.log('Failed to init segment: ' + e);\n reject(e);\n }\n });\n\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { combineLatest } from 'rxjs';\nimport { AbstractDbxAnalyticsServiceListener, DbxAnalyticsStreamEvent, DbxAnalyticsStreamEventType, DbxAnalyticsUser } from '../../analytics';\nimport { DbxAnalyticsSegmentApiService } from './segment.service';\n\n/**\n * DbxAnalyticsServiceListener adapter for Segment.\n */\n@Injectable()\nexport class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceListener {\n\n constructor(private _segmentApi: DbxAnalyticsSegmentApiService) {\n super();\n\n if (this._segmentApi.config.logging) {\n console.log('SegmentAnalyticsListenerService: Segment is logging events.');\n }\n\n if (this._segmentApi.config.active) {\n console.log('SegmentAnalyticsListenerService: Segment is disabled from sending events to the server.');\n }\n }\n\n protected _initializeServiceSubscription() {\n return combineLatest([this._segmentApi.service$, this.analyticsEvents$]).subscribe(\n ([segment, streamEvent]: [SegmentAnalytics.AnalyticsJS, DbxAnalyticsStreamEvent]) => {\n if (this._segmentApi.config.logging) {\n console.log('Segment Listener Logging Event: ', streamEvent);\n }\n\n if (this._segmentApi.config.active) {\n this.handleStreamEvent(segment, streamEvent);\n }\n });\n }\n\n protected handleStreamEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void {\n switch (streamEvent.type) {\n case DbxAnalyticsStreamEventType.NewUserEvent:\n this.updateWithNewUserEvent(api, streamEvent);\n break;\n case DbxAnalyticsStreamEventType.UserLoginEvent:\n case DbxAnalyticsStreamEventType.Event:\n this.updateWithEvent(api, streamEvent);\n break;\n case DbxAnalyticsStreamEventType.UserLogoutEvent:\n this.changeUser(api, undefined);\n break;\n case DbxAnalyticsStreamEventType.PageView:\n api.page();\n break;\n case DbxAnalyticsStreamEventType.UserChange:\n this.changeUser(api, streamEvent.user);\n break;\n }\n }\n\n protected updateWithNewUserEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void {\n this.changeUser(api, streamEvent.user);\n }\n\n protected updateWithEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent, name?: string): void {\n const event = streamEvent.event;\n const eventName = name || event?.name;\n\n if (eventName) {\n const value = event?.value\n const data = event?.data;\n\n api.track(eventName, {\n ...(value != null) ? {\n value\n } : undefined,\n ...data\n }, {}, () => {\n if (this._segmentApi.config.logging) {\n console.log('Segment track success.');\n }\n });\n }\n }\n\n private changeUser(api: SegmentAnalytics.AnalyticsJS, user: Maybe<DbxAnalyticsUser>): void {\n if (user) {\n api.identify(user.user, {\n ...user.properties\n }, {}, () => {\n if (this._segmentApi.config.logging) {\n console.log('Segment identify success.');\n }\n });\n } else {\n api.reset();\n }\n }\n\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { PRELOAD_SEGMENT_TOKEN, DbxAnalyticsSegmentApiService } from './segment.service';\n\n@NgModule({\n declarations: [],\n imports: []\n})\nexport class DbxAnalyticsSegmentModule {\n\n static forRoot(preloadService?: boolean): ModuleWithProviders<DbxAnalyticsSegmentModule> {\n return {\n ngModule: DbxAnalyticsSegmentModule,\n providers: [\n {\n provide: PRELOAD_SEGMENT_TOKEN,\n useValue: preloadService\n },\n DbxAnalyticsSegmentApiService\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dereekb-dbx-analytics.mjs","sources":["../../../../packages/dbx-analytics/src/lib/analytics/analytics.stream.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.service.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.action.directive.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.action.module.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.module.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.service.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.listener.service.ts","../../../../packages/dbx-analytics/src/lib/providers/segment/segment.module.ts","../../../../packages/dbx-analytics/src/dereekb-dbx-analytics.ts"],"sourcesContent":["import { Maybe } from '@dereekb/util';\nimport { DbxAnalyticsUser, DbxUserAnalyticsEvent, DbxAnalyticsUserId } from './analytics';\n\nexport enum DbxAnalyticsStreamEventType {\n PageView,\n UserChange,\n\n // User Events\n NewUserEvent,\n UserLoginEvent,\n UserLogoutEvent,\n UserPropertiesEvent,\n\n // Events\n Event\n}\n\nexport interface DbxAnalyticsStreamEvent {\n readonly type: DbxAnalyticsStreamEventType;\n readonly user?: Maybe<DbxAnalyticsUser>;\n readonly event?: DbxUserAnalyticsEvent;\n readonly userId?: DbxAnalyticsUserId;\n}\n","import { Observable, Subject, BehaviorSubject, of, Subscription, first, shareReplay, switchMap } from 'rxjs';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';\nimport { DbxAnalyticsEvent, DbxAnalyticsEventData, DbxAnalyticsEventName, DbxAnalyticsUser, NewUserAnalyticsEventData, DbxUserAnalyticsEvent } from './analytics';\nimport { DbxAnalyticsStreamEvent, DbxAnalyticsStreamEventType } from './analytics.stream';\nimport { Maybe, Destroyable } from '@dereekb/util';\n\nexport abstract class DbxAnalyticsEventEmitterService {\n abstract sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void;\n abstract sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;\n abstract sendUserLogoutEvent(data?: DbxAnalyticsEventData): void;\n abstract sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;\n abstract sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void;\n abstract sendEvent(event: DbxAnalyticsEvent): void;\n abstract sendPageView(page?: string): void;\n}\n\nexport abstract class DbxAnalyticsEventStreamService {\n abstract readonly events$: Observable<DbxAnalyticsStreamEvent>;\n}\n\nexport abstract class DbxAnalyticsUserSource {\n abstract readonly analyticsUser$: Observable<Maybe<DbxAnalyticsUser>>;\n}\n\nexport abstract class DbxAnalyticsServiceListener {\n public abstract listenToService(service: DbxAnalyticsService): void;\n}\n\n/**\n * Abstract AnalyticsServiceListener implementation.\n */\nexport abstract class AbstractDbxAnalyticsServiceListener implements DbxAnalyticsServiceListener, Destroyable {\n private _sub = new SubscriptionObject();\n protected _analytics = new BehaviorSubject<Maybe<DbxAnalyticsService>>(undefined);\n\n readonly analytics$ = this._analytics.pipe(filterMaybe(), shareReplay(1));\n readonly analyticsEvents$ = this.analytics$.pipe(\n switchMap((x) => x.events$),\n shareReplay(1)\n );\n\n // MARK: AnalyticsServiceListener\n listenToService(service: DbxAnalyticsService): void {\n this._analytics.next(service);\n const sub = this._initializeServiceSubscription();\n\n if (sub !== false) {\n this._sub.subscription = sub;\n }\n }\n\n protected abstract _initializeServiceSubscription(): Subscription | false;\n\n // MARK: Destroy\n destroy(): void {\n this._analytics.complete();\n this._sub.destroy();\n }\n}\n\nexport abstract class DbxAnalyticsServiceConfiguration {\n listeners: DbxAnalyticsServiceListener[] = [];\n isProduction?: boolean;\n logEvents?: boolean;\n userSource?: DbxAnalyticsUserSource;\n}\n\nexport class DbxAnalyticsStreamEventAnalyticsEventWrapper implements DbxAnalyticsStreamEvent {\n constructor(public readonly event: DbxUserAnalyticsEvent, public readonly type: DbxAnalyticsStreamEventType = DbxAnalyticsStreamEventType.Event) {}\n\n public get user(): Maybe<DbxAnalyticsUser> {\n return this.event.user;\n }\n\n public get userId(): string | undefined {\n return this.user ? this.user.user : undefined;\n }\n}\n\n/**\n * Primary analytics service that emits analytics events that components can listen to.\n */\n@Injectable()\nexport class DbxAnalyticsService implements DbxAnalyticsEventStreamService, DbxAnalyticsEventEmitterService, Destroyable {\n // TODO: Make these configurable.\n\n static readonly USER_REGISTRATION_EVENT_NAME = 'User Registered';\n static readonly USER_LOGIN_EVENT_NAME = 'User Login';\n static readonly USER_LOGOUT_EVENT_NAME = 'User Logout';\n static readonly USER_PROPERTIES_EVENT_NAME = 'User Properties';\n\n private _subject = new Subject<DbxAnalyticsStreamEvent>();\n readonly events$ = this._subject.asObservable();\n\n private _userSource = new BehaviorSubject<Maybe<DbxAnalyticsUserSource>>(undefined);\n readonly user$ = this._userSource.pipe(\n switchMap((x) => (x ? x.analyticsUser$ : of(undefined))),\n shareReplay(1)\n );\n\n private _userSourceSub = new SubscriptionObject();\n private _loggerSub = new SubscriptionObject();\n\n constructor(private _config: DbxAnalyticsServiceConfiguration, @Optional() @Inject(DbxAnalyticsUserSource) userSource: Maybe<DbxAnalyticsUserSource> = _config.userSource) {\n this._init();\n\n if (userSource) {\n this.setUserSource(userSource);\n }\n }\n\n // MARK: Source\n /**\n * Sets the user directly.\n */\n public setUser(user: Maybe<DbxAnalyticsUser>): void {\n let source: Maybe<DbxAnalyticsUserSource>;\n\n if (user) {\n source = { analyticsUser$: of(user) };\n }\n\n this._userSource.next(source);\n }\n\n public setUserSource(source: DbxAnalyticsUserSource): void {\n this._userSource.next(source);\n }\n\n // MARK: AnalyticsEventEmitterService\n /**\n * Sends an event.\n */\n public sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void {\n this.sendNextEvent(\n {\n name: DbxAnalyticsService.USER_REGISTRATION_EVENT_NAME,\n data\n },\n DbxAnalyticsStreamEventType.NewUserEvent,\n user\n );\n }\n\n public sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void {\n this.sendNextEvent(\n {\n name: DbxAnalyticsService.USER_LOGIN_EVENT_NAME,\n data\n },\n DbxAnalyticsStreamEventType.UserLoginEvent,\n user\n );\n }\n\n public sendUserLogoutEvent(data?: DbxAnalyticsEventData, clearUser = true): void {\n this.sendNextEvent(\n {\n name: DbxAnalyticsService.USER_LOGOUT_EVENT_NAME,\n data\n },\n DbxAnalyticsStreamEventType.UserLogoutEvent\n );\n\n if (clearUser) {\n this.setUser(undefined);\n }\n }\n\n public sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void {\n this.sendNextEvent(\n {\n name: DbxAnalyticsService.USER_PROPERTIES_EVENT_NAME,\n data\n },\n DbxAnalyticsStreamEventType.UserPropertiesEvent,\n user\n );\n }\n\n public sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void {\n return this.sendEvent({\n name,\n data\n });\n }\n\n public sendEventType(eventType: DbxAnalyticsEventName): void {\n this.sendNextEvent(\n {\n name: eventType\n },\n DbxAnalyticsStreamEventType.Event\n );\n }\n\n public sendEvent(event: DbxAnalyticsEvent): void {\n this.sendNextEvent(event, DbxAnalyticsStreamEventType.Event);\n }\n\n public sendPageView(page?: string): void {\n this.sendNextEvent(\n {\n name: page\n },\n DbxAnalyticsStreamEventType.PageView\n );\n }\n\n protected sendNextEvent(event: DbxAnalyticsEvent = {}, type: DbxAnalyticsStreamEventType, userOverride?: DbxAnalyticsUser): void {\n this.user$.pipe(first()).subscribe((analyticsUser) => {\n const user: Maybe<DbxAnalyticsUser> = userOverride != null ? userOverride : analyticsUser;\n const analyticsEvent: DbxUserAnalyticsEvent = { ...event, user };\n this.nextEvent(analyticsEvent, type);\n });\n }\n\n protected nextEvent(event: DbxUserAnalyticsEvent, type: DbxAnalyticsStreamEventType): void {\n const wrapper = new DbxAnalyticsStreamEventAnalyticsEventWrapper(event, type);\n this._subject.next(wrapper);\n }\n\n // MARK: Internal\n private _init(): void {\n if (this._config.isProduction) {\n // Initialize listeners.\n this._config.listeners.forEach((listener) => {\n listener.listenToService(this);\n });\n } else {\n console.warn('AnalyticsService: Analytics not in production mode. All analytics events are ignored.');\n }\n\n if (this._config.logEvents || !this._config.isProduction) {\n console.log('AnalyticsService: Log analytics events enabled.');\n\n // Create a new subscription\n this._loggerSub.subscription = this._subject.subscribe((x) => {\n console.log(`AnalyticsService: Analytics Event - ${DbxAnalyticsStreamEventType[x.type]} User: ${x.userId} Data: ${JSON.stringify(x.event)}.`);\n });\n }\n\n this._userSourceSub.subscription = this.user$.subscribe(() => {\n this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserChange);\n });\n }\n\n destroy() {\n this._subject.complete();\n this._userSourceSub.destroy();\n this._loggerSub.destroy();\n }\n}\n","import { filterMaybe } from '@dereekb/rxjs';\nimport { switchMap, tap, shareReplay, BehaviorSubject, merge, Observable, of } from 'rxjs';\nimport { Host, Directive, Input, OnInit, OnDestroy } from '@angular/core';\nimport { DbxActionContextStoreSourceInstance, AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxAnalyticsService } from '../analytics/analytics.service';\nimport { Maybe, ReadableError } from '@dereekb/util';\n\nexport enum DbxActionAnalyticsTriggerType {\n TRIGGER,\n READY,\n SUCCESS,\n ERROR\n}\n\nexport interface DbxActionAnalyticsConfig<T = unknown, O = unknown> {\n onTriggered: (service: DbxAnalyticsService) => void;\n onReady: (service: DbxAnalyticsService, value: T) => void;\n onSuccess: (service: DbxAnalyticsService, value: Maybe<O>) => void;\n onError: (service: DbxAnalyticsService, error: Maybe<ReadableError>) => void;\n}\n\n/**\n * Used to listen to an ActionContext and send analytical events based on action events.\n */\n@Directive({\n selector: '[dbxActionAnalytics]'\n})\nexport class DbxActionAnalyticsDirective<T, O> extends AbstractSubscriptionDirective implements OnInit, OnDestroy {\n private _config = new BehaviorSubject<Maybe<DbxActionAnalyticsConfig<T, O>>>(undefined);\n readonly config$ = this._config.pipe(filterMaybe(), shareReplay(1));\n\n @Input('dbxActionAnalytics')\n get config(): Maybe<DbxActionAnalyticsConfig<T, O>> {\n return this._config.value;\n }\n\n set config(config: Maybe<DbxActionAnalyticsConfig<T, O>>) {\n this._config.next(config);\n }\n\n constructor(@Host() readonly source: DbxActionContextStoreSourceInstance<T, O>, readonly analyticsService: DbxAnalyticsService) {\n super();\n }\n\n ngOnInit(): void {\n this.sub = this.config$\n .pipe(\n switchMap(({ onTriggered, onReady, onSuccess, onError }) => {\n const triggerObs: Observable<unknown>[] = [];\n\n if (onTriggered) {\n triggerObs.push(this.source.triggered$.pipe(tap(() => onTriggered(this.analyticsService))));\n }\n\n if (onReady) {\n triggerObs.push(this.source.valueReady$.pipe(tap((value) => onReady(this.analyticsService, value))));\n }\n\n if (onSuccess) {\n triggerObs.push(this.source.success$.pipe(tap((result) => onSuccess(this.analyticsService, result))));\n }\n\n if (onError) {\n triggerObs.push(this.source.error$.pipe(tap((error) => onError(this.analyticsService, error))));\n }\n\n if (triggerObs.length) {\n return merge(triggerObs);\n } else {\n return of();\n }\n })\n )\n .subscribe();\n }\n\n override ngOnDestroy(): void {\n this.source.lockSet.onNextUnlock(() => {\n super.ngOnDestroy();\n this._config.complete();\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxActionAnalyticsDirective } from './analytics.action.directive';\n\n@NgModule({\n declarations: [DbxActionAnalyticsDirective],\n exports: [DbxActionAnalyticsDirective]\n})\nexport class DbxAnalyticsActionModule {}\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport { DbxAnalyticsService } from './analytics.service';\n\nexport interface DbxAnalyticsModuleOptions {\n /**\n * Provides a AnalyticsServiceConfiguration value.\n */\n analyticsConfigurationProvider: Provider;\n}\n\n@NgModule()\nexport class DbxAnalyticsModule {\n static forRoot(options: DbxAnalyticsModuleOptions): ModuleWithProviders<DbxAnalyticsModule> {\n return {\n ngModule: DbxAnalyticsModule,\n providers: [\n // Configuration\n options.analyticsConfigurationProvider,\n // Service\n DbxAnalyticsService\n ]\n };\n }\n}\n","import { Injectable, InjectionToken, Inject } from '@angular/core';\nimport { AbstractAsyncWindowLoadedService } from '@dereekb/browser';\nimport { poll } from '@dereekb/util';\n\nexport const PRELOAD_SEGMENT_TOKEN = new InjectionToken<string>('DbxAnalyticsSegmentApiServicePreload');\n\nexport class DbxAnalyticsSegmentApiServiceConfig {\n logging = true;\n active = true;\n constructor(public writeKey: string) {}\n}\n\n/**\n * When the Segment library finishes loading, it is invoked.\n */\ntype SegmentAnalyticsInvoked = SegmentAnalytics.AnalyticsJS & { invoked?: boolean };\n\n/**\n * Segment API Service used for waiting/retrieving the segment API from window when initialized.\n *\n * This requires some setup in index.html.\n */\n@Injectable()\nexport class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedService<SegmentAnalytics.AnalyticsJS> {\n static readonly SEGMENT_API_WINDOW_KEY = 'analytics';\n static readonly SEGMENT_READY_KEY = 'SegmentReady';\n\n constructor(private _config: DbxAnalyticsSegmentApiServiceConfig, @Inject(PRELOAD_SEGMENT_TOKEN) preload: boolean = true) {\n super(DbxAnalyticsSegmentApiService.SEGMENT_API_WINDOW_KEY, undefined, 'Segment', preload);\n }\n\n get config(): DbxAnalyticsSegmentApiServiceConfig {\n return this._config;\n }\n\n protected override _prepareCompleteLoadingService(): Promise<void> {\n return poll({\n // poll until analytics.invoked is true.\n check: () => Boolean((window.analytics as SegmentAnalyticsInvoked).invoked),\n timesToGiveup: 100\n });\n }\n\n protected override _initService(service: SegmentAnalytics.AnalyticsJS): Promise<SegmentAnalytics.AnalyticsJS> {\n return new Promise((resolve, reject) => {\n try {\n service.load(this._config.writeKey); // Initialize Segment\n\n // Wait for the service to ready itself.\n service.ready(() => {\n // Segment changes itself or rather the target, and the previous initial target is ignored after.\n const segment: SegmentAnalytics.AnalyticsJS = window[DbxAnalyticsSegmentApiService.SEGMENT_API_WINDOW_KEY];\n resolve(segment);\n });\n } catch (e) {\n console.log('Failed to init segment: ' + e);\n reject(e);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { combineLatest } from 'rxjs';\nimport { AbstractDbxAnalyticsServiceListener, DbxAnalyticsStreamEvent, DbxAnalyticsStreamEventType, DbxAnalyticsUser } from '../../analytics';\nimport { DbxAnalyticsSegmentApiService } from './segment.service';\n\n/**\n * DbxAnalyticsServiceListener adapter for Segment.\n */\n@Injectable()\nexport class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceListener {\n constructor(private _segmentApi: DbxAnalyticsSegmentApiService) {\n super();\n\n if (this._segmentApi.config.logging) {\n console.log('SegmentAnalyticsListenerService: Segment is logging events.');\n }\n\n if (this._segmentApi.config.active) {\n console.log('SegmentAnalyticsListenerService: Segment is disabled from sending events to the server.');\n }\n }\n\n protected _initializeServiceSubscription() {\n return combineLatest([this._segmentApi.service$, this.analyticsEvents$]).subscribe(([segment, streamEvent]: [SegmentAnalytics.AnalyticsJS, DbxAnalyticsStreamEvent]) => {\n if (this._segmentApi.config.logging) {\n console.log('Segment Listener Logging Event: ', streamEvent);\n }\n\n if (this._segmentApi.config.active) {\n this.handleStreamEvent(segment, streamEvent);\n }\n });\n }\n\n protected handleStreamEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void {\n switch (streamEvent.type) {\n case DbxAnalyticsStreamEventType.NewUserEvent:\n this.updateWithNewUserEvent(api, streamEvent);\n break;\n case DbxAnalyticsStreamEventType.UserLoginEvent:\n case DbxAnalyticsStreamEventType.Event:\n this.updateWithEvent(api, streamEvent);\n break;\n case DbxAnalyticsStreamEventType.UserLogoutEvent:\n this.changeUser(api, undefined);\n break;\n case DbxAnalyticsStreamEventType.PageView:\n api.page();\n break;\n case DbxAnalyticsStreamEventType.UserChange:\n this.changeUser(api, streamEvent.user);\n break;\n }\n }\n\n protected updateWithNewUserEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void {\n this.changeUser(api, streamEvent.user);\n }\n\n protected updateWithEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent, name?: string): void {\n const event = streamEvent.event;\n const eventName = name || event?.name;\n\n if (eventName) {\n const value = event?.value;\n const data = event?.data;\n\n api.track(\n eventName,\n {\n ...(value != null\n ? {\n value\n }\n : undefined),\n ...data\n },\n {},\n () => {\n if (this._segmentApi.config.logging) {\n console.log('Segment track success.');\n }\n }\n );\n }\n }\n\n private changeUser(api: SegmentAnalytics.AnalyticsJS, user: Maybe<DbxAnalyticsUser>): void {\n if (user) {\n api.identify(\n user.user,\n {\n ...user.properties\n },\n {},\n () => {\n if (this._segmentApi.config.logging) {\n console.log('Segment identify success.');\n }\n }\n );\n } else {\n api.reset();\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { PRELOAD_SEGMENT_TOKEN, DbxAnalyticsSegmentApiService } from './segment.service';\n\n@NgModule({\n declarations: [],\n imports: []\n})\nexport class DbxAnalyticsSegmentModule {\n static forRoot(preloadService?: boolean): ModuleWithProviders<DbxAnalyticsSegmentModule> {\n return {\n ngModule: DbxAnalyticsSegmentModule,\n providers: [\n {\n provide: PRELOAD_SEGMENT_TOKEN,\n useValue: preloadService\n },\n DbxAnalyticsSegmentApiService\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { OnInit, OnDestroy } from '@angular/core';
|
|
2
1
|
import { Observable } from 'rxjs';
|
|
2
|
+
import { OnInit, OnDestroy } from '@angular/core';
|
|
3
3
|
import { DbxActionContextStoreSourceInstance, AbstractSubscriptionDirective } from '@dereekb/dbx-core';
|
|
4
4
|
import { DbxAnalyticsService } from '../analytics/analytics.service';
|
|
5
5
|
import { Maybe, ReadableError } from '@dereekb/util';
|
|
@@ -10,7 +10,7 @@ export declare enum DbxActionAnalyticsTriggerType {
|
|
|
10
10
|
SUCCESS = 2,
|
|
11
11
|
ERROR = 3
|
|
12
12
|
}
|
|
13
|
-
export interface DbxActionAnalyticsConfig<T =
|
|
13
|
+
export interface DbxActionAnalyticsConfig<T = unknown, O = unknown> {
|
|
14
14
|
onTriggered: (service: DbxAnalyticsService) => void;
|
|
15
15
|
onReady: (service: DbxAnalyticsService, value: T) => void;
|
|
16
16
|
onSuccess: (service: DbxAnalyticsService, value: Maybe<O>) => void;
|
|
@@ -19,16 +19,16 @@ export interface DbxActionAnalyticsConfig<T = any, O = any> {
|
|
|
19
19
|
/**
|
|
20
20
|
* Used to listen to an ActionContext and send analytical events based on action events.
|
|
21
21
|
*/
|
|
22
|
-
export declare class DbxActionAnalyticsDirective<T> extends AbstractSubscriptionDirective implements OnInit, OnDestroy {
|
|
23
|
-
readonly source: DbxActionContextStoreSourceInstance
|
|
22
|
+
export declare class DbxActionAnalyticsDirective<T, O> extends AbstractSubscriptionDirective implements OnInit, OnDestroy {
|
|
23
|
+
readonly source: DbxActionContextStoreSourceInstance<T, O>;
|
|
24
24
|
readonly analyticsService: DbxAnalyticsService;
|
|
25
25
|
private _config;
|
|
26
|
-
readonly config$: Observable<DbxActionAnalyticsConfig<
|
|
27
|
-
get config(): Maybe<DbxActionAnalyticsConfig
|
|
28
|
-
set config(config: Maybe<DbxActionAnalyticsConfig
|
|
29
|
-
constructor(source: DbxActionContextStoreSourceInstance, analyticsService: DbxAnalyticsService);
|
|
26
|
+
readonly config$: Observable<DbxActionAnalyticsConfig<T, O>>;
|
|
27
|
+
get config(): Maybe<DbxActionAnalyticsConfig<T, O>>;
|
|
28
|
+
set config(config: Maybe<DbxActionAnalyticsConfig<T, O>>);
|
|
29
|
+
constructor(source: DbxActionContextStoreSourceInstance<T, O>, analyticsService: DbxAnalyticsService);
|
|
30
30
|
ngOnInit(): void;
|
|
31
31
|
ngOnDestroy(): void;
|
|
32
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DbxActionAnalyticsDirective<any>, [{ host: true; }, null]>;
|
|
33
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<DbxActionAnalyticsDirective<any>, "[dbxActionAnalytics]", never, { "config": "dbxActionAnalytics"; }, {}, never>;
|
|
32
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DbxActionAnalyticsDirective<any, any>, [{ host: true; }, null]>;
|
|
33
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DbxActionAnalyticsDirective<any, any>, "[dbxActionAnalytics]", never, { "config": "dbxActionAnalytics"; }, {}, never>;
|
|
34
34
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Maybe } from
|
|
2
|
-
import { DbxAnalyticsUser, DbxUserAnalyticsEvent, DbxAnalyticsUserId } from
|
|
1
|
+
import { Maybe } from '@dereekb/util';
|
|
2
|
+
import { DbxAnalyticsUser, DbxUserAnalyticsEvent, DbxAnalyticsUserId } from './analytics';
|
|
3
3
|
export declare enum DbxAnalyticsStreamEventType {
|
|
4
4
|
PageView = 0,
|
|
5
5
|
UserChange = 1,
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/dbx-analytics",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^13.1.0",
|
|
6
6
|
"@angular/core": "^13.1.0",
|
|
7
|
-
"@dereekb/rxjs": "
|
|
8
|
-
"@dereekb/dbx-core": "
|
|
9
|
-
"@dereekb/browser": "
|
|
7
|
+
"@dereekb/rxjs": "5.1.0",
|
|
8
|
+
"@dereekb/dbx-core": "5.1.0",
|
|
9
|
+
"@dereekb/browser": "5.1.0"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"tslib": "^2.3.0"
|