@dereekb/dbx-analytics 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # dbx-analytics
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test dbx-analytics` to execute the unit tests.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@dereekb/dbx-analytics" />
5
+ export * from './index';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyZWVrYi1kYngtYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWFuYWx5dGljcy9zcmMvZGVyZWVrYi1kYngtYW5hbHl0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './lib';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliJztcbiJdfQ==
@@ -0,0 +1,77 @@
1
+ import { filterMaybe } from '@dereekb/rxjs';
2
+ import { switchMap, tap, shareReplay } from 'rxjs/operators';
3
+ import { Host, Directive, Input } from '@angular/core';
4
+ import { BehaviorSubject, merge, of } from 'rxjs';
5
+ import { ActionContextStoreSourceInstance, AbstractSubscriptionDirective } from '@dereekb/dbx-core';
6
+ import { DbNgxAnalyticsService } from '../analytics.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@dereekb/dbx-core";
9
+ import * as i2 from "../analytics.service";
10
+ export var DbNgxActionAnalyticsTriggerType;
11
+ (function (DbNgxActionAnalyticsTriggerType) {
12
+ DbNgxActionAnalyticsTriggerType[DbNgxActionAnalyticsTriggerType["TRIGGER"] = 0] = "TRIGGER";
13
+ DbNgxActionAnalyticsTriggerType[DbNgxActionAnalyticsTriggerType["READY"] = 1] = "READY";
14
+ DbNgxActionAnalyticsTriggerType[DbNgxActionAnalyticsTriggerType["SUCCESS"] = 2] = "SUCCESS";
15
+ DbNgxActionAnalyticsTriggerType[DbNgxActionAnalyticsTriggerType["ERROR"] = 3] = "ERROR";
16
+ })(DbNgxActionAnalyticsTriggerType || (DbNgxActionAnalyticsTriggerType = {}));
17
+ /**
18
+ * Used to listen to an ActionContext and send analytical events based on action events.
19
+ */
20
+ export class DbNgxActionAnalyticsDirective extends AbstractSubscriptionDirective {
21
+ constructor(source, analyticsService) {
22
+ super();
23
+ this.source = source;
24
+ this.analyticsService = analyticsService;
25
+ this._config = new BehaviorSubject(undefined);
26
+ this.config$ = this._config.pipe(filterMaybe(), shareReplay(1));
27
+ }
28
+ get config() {
29
+ return this._config.value;
30
+ }
31
+ set config(config) {
32
+ this._config.next(config);
33
+ }
34
+ ngOnInit() {
35
+ this.sub = this.config$.pipe(switchMap(({ onTriggered, onReady, onSuccess, onError }) => {
36
+ const triggerObs = [];
37
+ if (onTriggered) {
38
+ triggerObs.push(this.source.triggered$.pipe(tap(() => onTriggered(this.analyticsService))));
39
+ }
40
+ if (onReady) {
41
+ triggerObs.push(this.source.valueReady$.pipe(tap((value) => onReady(this.analyticsService, value))));
42
+ }
43
+ if (onSuccess) {
44
+ triggerObs.push(this.source.success$.pipe(tap((result) => onSuccess(this.analyticsService, result))));
45
+ }
46
+ if (onError) {
47
+ triggerObs.push(this.source.error$.pipe(tap((error) => onError(this.analyticsService, error))));
48
+ }
49
+ if (triggerObs.length) {
50
+ return merge(triggerObs);
51
+ }
52
+ else {
53
+ return of();
54
+ }
55
+ })).subscribe();
56
+ }
57
+ ngOnDestroy() {
58
+ this.source.lockSet.onNextUnlock(() => {
59
+ super.ngOnDestroy();
60
+ this._config.complete();
61
+ });
62
+ }
63
+ }
64
+ DbNgxActionAnalyticsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxActionAnalyticsDirective, deps: [{ token: i1.ActionContextStoreSourceInstance, host: true }, { token: i2.DbNgxAnalyticsService }], target: i0.ɵɵFactoryTarget.Directive });
65
+ DbNgxActionAnalyticsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: DbNgxActionAnalyticsDirective, selector: "[dbxActionAnalytics]", inputs: { config: ["dbxActionAnalytics", "config"] }, usesInheritance: true, ngImport: i0 });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxActionAnalyticsDirective, decorators: [{
67
+ type: Directive,
68
+ args: [{
69
+ selector: '[dbxActionAnalytics]',
70
+ }]
71
+ }], ctorParameters: function () { return [{ type: i1.ActionContextStoreSourceInstance, decorators: [{
72
+ type: Host
73
+ }] }, { type: i2.DbNgxAnalyticsService }]; }, propDecorators: { config: [{
74
+ type: Input,
75
+ args: ['dbxActionAnalytics']
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmFjdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYWN0aW9uL2FuYWx5dGljcy5hY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFHN0QsTUFBTSxDQUFOLElBQVksK0JBS1g7QUFMRCxXQUFZLCtCQUErQjtJQUN6QywyRkFBTyxDQUFBO0lBQ1AsdUZBQUssQ0FBQTtJQUNMLDJGQUFPLENBQUE7SUFDUCx1RkFBSyxDQUFBO0FBQ1AsQ0FBQyxFQUxXLCtCQUErQixLQUEvQiwrQkFBK0IsUUFLMUM7QUFTRDs7R0FFRztBQUlILE1BQU0sT0FBTyw2QkFBaUMsU0FBUSw2QkFBNkI7SUFjakYsWUFDbUIsTUFBd0MsRUFDaEQsZ0JBQXVDO1FBRWhELEtBQUssRUFBRSxDQUFDO1FBSFMsV0FBTSxHQUFOLE1BQU0sQ0FBa0M7UUFDaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF1QjtRQWQxQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQW9DLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLFlBQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQWdCcEUsQ0FBQztJQWRELElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLE1BQXlDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFTRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDMUIsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQ3pELE1BQU0sVUFBVSxHQUFzQixFQUFFLENBQUM7WUFFekMsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FDOUMsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLE9BQU8sRUFBRTtnQkFDWCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDMUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQ3RELENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUMxRCxDQUFDLENBQUM7YUFDSjtZQUVELElBQUksT0FBTyxFQUFFO2dCQUNYLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDdEQsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLE9BQU8sRUFBRSxFQUFFLENBQUM7YUFDYjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzBIQWhFVSw2QkFBNkI7OEdBQTdCLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQUh6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzswQkFnQkksSUFBSTtnRkFUSCxNQUFNO3NCQURULEtBQUs7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyTWF5YmUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEhvc3QsIERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWN0aW9uQ29udGV4dFN0b3JlU291cmNlSW5zdGFuY2UsIEFic3RyYWN0U3Vic2NyaXB0aW9uRGlyZWN0aXZlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgRGJOZ3hBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF5YmUsIFJlYWRhYmxlRXJyb3IgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcblxuZXhwb3J0IGVudW0gRGJOZ3hBY3Rpb25BbmFseXRpY3NUcmlnZ2VyVHlwZSB7XG4gIFRSSUdHRVIsXG4gIFJFQURZLFxuICBTVUNDRVNTLFxuICBFUlJPUlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERiTmd4QWN0aW9uQW5hbHl0aWNzQ29uZmlnPFQgPSBhbnksIE8gPSBhbnk+IHtcbiAgb25UcmlnZ2VyZWQ6IChzZXJ2aWNlOiBEYk5neEFuYWx5dGljc1NlcnZpY2UpID0+IHZvaWQ7XG4gIG9uUmVhZHk6IChzZXJ2aWNlOiBEYk5neEFuYWx5dGljc1NlcnZpY2UsIHZhbHVlOiBUKSA9PiB2b2lkO1xuICBvblN1Y2Nlc3M6IChzZXJ2aWNlOiBEYk5neEFuYWx5dGljc1NlcnZpY2UsIHZhbHVlOiBNYXliZTxPPikgPT4gdm9pZDtcbiAgb25FcnJvcjogKHNlcnZpY2U6IERiTmd4QW5hbHl0aWNzU2VydmljZSwgZXJyb3I6IE1heWJlPFJlYWRhYmxlRXJyb3I+KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFVzZWQgdG8gbGlzdGVuIHRvIGFuIEFjdGlvbkNvbnRleHQgYW5kIHNlbmQgYW5hbHl0aWNhbCBldmVudHMgYmFzZWQgb24gYWN0aW9uIGV2ZW50cy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RieEFjdGlvbkFuYWx5dGljc10nLFxufSlcbmV4cG9ydCBjbGFzcyBEYk5neEFjdGlvbkFuYWx5dGljc0RpcmVjdGl2ZTxUPiBleHRlbmRzIEFic3RyYWN0U3Vic2NyaXB0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX2NvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RGJOZ3hBY3Rpb25BbmFseXRpY3NDb25maWc+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBjb25maWckID0gdGhpcy5fY29uZmlnLnBpcGUoZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIEBJbnB1dCgnZGJ4QWN0aW9uQW5hbHl0aWNzJylcbiAgZ2V0IGNvbmZpZygpOiBNYXliZTxEYk5neEFjdGlvbkFuYWx5dGljc0NvbmZpZz4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcudmFsdWU7XG4gIH1cblxuICBzZXQgY29uZmlnKGNvbmZpZzogTWF5YmU8RGJOZ3hBY3Rpb25BbmFseXRpY3NDb25maWc+KSB7XG4gICAgdGhpcy5fY29uZmlnLm5leHQoY29uZmlnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBIb3N0KCkgcmVhZG9ubHkgc291cmNlOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2VJbnN0YW5jZSxcbiAgICByZWFkb25seSBhbmFseXRpY3NTZXJ2aWNlOiBEYk5neEFuYWx5dGljc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViID0gdGhpcy5jb25maWckLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHsgb25UcmlnZ2VyZWQsIG9uUmVhZHksIG9uU3VjY2Vzcywgb25FcnJvciB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXJPYnM6IE9ic2VydmFibGU8YW55PltdID0gW107XG5cbiAgICAgICAgaWYgKG9uVHJpZ2dlcmVkKSB7XG4gICAgICAgICAgdHJpZ2dlck9icy5wdXNoKHRoaXMuc291cmNlLnRyaWdnZXJlZCQucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiBvblRyaWdnZXJlZCh0aGlzLmFuYWx5dGljc1NlcnZpY2UpKVxuICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9uUmVhZHkpIHtcbiAgICAgICAgICB0cmlnZ2VyT2JzLnB1c2godGhpcy5zb3VyY2UudmFsdWVSZWFkeSQucGlwZShcbiAgICAgICAgICAgIHRhcCgodmFsdWUpID0+IG9uUmVhZHkodGhpcy5hbmFseXRpY3NTZXJ2aWNlLCB2YWx1ZSkpXG4gICAgICAgICAgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob25TdWNjZXNzKSB7XG4gICAgICAgICAgdHJpZ2dlck9icy5wdXNoKHRoaXMuc291cmNlLnN1Y2Nlc3MkLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHJlc3VsdCkgPT4gb25TdWNjZXNzKHRoaXMuYW5hbHl0aWNzU2VydmljZSwgcmVzdWx0KSlcbiAgICAgICAgICApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbkVycm9yKSB7XG4gICAgICAgICAgdHJpZ2dlck9icy5wdXNoKHRoaXMuc291cmNlLmVycm9yJC5waXBlKFxuICAgICAgICAgICAgdGFwKChlcnJvcikgPT4gb25FcnJvcih0aGlzLmFuYWx5dGljc1NlcnZpY2UsIGVycm9yKSlcbiAgICAgICAgICApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0cmlnZ2VyT2JzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBtZXJnZSh0cmlnZ2VyT2JzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zb3VyY2UubG9ja1NldC5vbk5leHRVbmxvY2soKCkgPT4ge1xuICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgIHRoaXMuX2NvbmZpZy5jb21wbGV0ZSgpO1xuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DbNgxActionAnalyticsDirective } from './analytics.action.directive';
3
+ import * as i0 from "@angular/core";
4
+ export class DbNgxAnalyticsActionModule {
5
+ }
6
+ DbNgxAnalyticsActionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ DbNgxAnalyticsActionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsActionModule, declarations: [DbNgxActionAnalyticsDirective], exports: [DbNgxActionAnalyticsDirective] });
8
+ DbNgxAnalyticsActionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsActionModule });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsActionModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [
13
+ DbNgxActionAnalyticsDirective
14
+ ],
15
+ exports: [
16
+ DbNgxActionAnalyticsDirective
17
+ ]
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmFjdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYWN0aW9uL2FuYWx5dGljcy5hY3Rpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBVTdFLE1BQU0sT0FBTywwQkFBMEI7O3VIQUExQiwwQkFBMEI7d0hBQTFCLDBCQUEwQixpQkFObkMsNkJBQTZCLGFBRzdCLDZCQUE2Qjt3SEFHcEIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBUnRDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDZCQUE2QjtxQkFDOUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDZCQUE2QjtxQkFDOUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJOZ3hBY3Rpb25BbmFseXRpY3NEaXJlY3RpdmUgfSBmcm9tICcuL2FuYWx5dGljcy5hY3Rpb24uZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRGJOZ3hBY3Rpb25BbmFseXRpY3NEaXJlY3RpdmVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIERiTmd4QWN0aW9uQW5hbHl0aWNzRGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGJOZ3hBbmFseXRpY3NBY3Rpb25Nb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './analytics.action.module';
2
+ export * from './analytics.action.directive';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5hbHl0aWNzLmFjdGlvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hbmFseXRpY3MuYWN0aW9uLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWFuYWx5dGljcy9zcmMvbGliL2FuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmUsIFByaW1hdGl2ZUtleSB9IGZyb20gXCJAZGVyZWVrYi91dGlsXCI7XG5cbmV4cG9ydCB0eXBlIEFuYWx5dGljc0V2ZW50TmFtZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIEFuYWx5dGljc1VzZXJJZCA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBBbmFseXRpY3NVc2VyIHtcbiAgcmVhZG9ubHkgdXNlcjogQW5hbHl0aWNzVXNlcklkO1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzoge1xuICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IFByaW1hdGl2ZUtleSB8IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl0aWNzRXZlbnREYXRhIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogUHJpbWF0aXZlS2V5IHwgYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgTmV3VXNlclJlZ2lzdHJhdGlvbk1ldGhvZCA9ICdmYWNlYm9vaycgfCAnZ29vZ2xlJyB8ICdlbWFpbCcgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV3VXNlckFuYWx5dGljc0V2ZW50RGF0YSBleHRlbmRzIEFuYWx5dGljc0V2ZW50RGF0YSB7XG4gIG1ldGhvZDogTmV3VXNlclJlZ2lzdHJhdGlvbk1ldGhvZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmFseXRpY3NFdmVudCB7XG4gIHJlYWRvbmx5IG5hbWU/OiBBbmFseXRpY3NFdmVudE5hbWU7XG4gIHJlYWRvbmx5IHZhbHVlPzogbnVtYmVyO1xuICByZWFkb25seSBkYXRhPzogQW5hbHl0aWNzRXZlbnREYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJBbmFseXRpY3NFdmVudCBleHRlbmRzIEFuYWx5dGljc0V2ZW50IHtcbiAgcmVhZG9ubHkgdXNlcj86IE1heWJlPEFuYWx5dGljc1VzZXI+O1xufVxuIl19
@@ -0,0 +1,23 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DbNgxAnalyticsService } from './analytics.service';
3
+ import * as i0 from "@angular/core";
4
+ export class DbNgxAnalyticsModule {
5
+ static forRoot(options) {
6
+ return {
7
+ ngModule: DbNgxAnalyticsModule,
8
+ providers: [
9
+ // Configuration
10
+ options.analyticsConfigurationProvider,
11
+ // Service
12
+ DbNgxAnalyticsService
13
+ ]
14
+ };
15
+ }
16
+ }
17
+ DbNgxAnalyticsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
+ DbNgxAnalyticsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsModule });
19
+ DbNgxAnalyticsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsModule });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsModule, decorators: [{
21
+ type: NgModule
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1hbmFseXRpY3Mvc3JjL2xpYi9hbmFseXRpY3MubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQWE1RCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBb0M7UUFDakQsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNULGdCQUFnQjtnQkFDaEIsT0FBTyxDQUFDLDhCQUE4QjtnQkFDdEMsVUFBVTtnQkFDVixxQkFBcUI7YUFDdEI7U0FDRixDQUFDO0lBQ0osQ0FBQzs7aUhBWlUsb0JBQW9CO2tIQUFwQixvQkFBb0I7a0hBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYk5neEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIERiTmd4QW5hbHl0aWNzTW9kdWxlT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgQW5hbHl0aWNzU2VydmljZUNvbmZpZ3VyYXRpb24gdmFsdWUuXG4gICAqL1xuICBhbmFseXRpY3NDb25maWd1cmF0aW9uUHJvdmlkZXI6IFByb3ZpZGVyO1xuXG59XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgRGJOZ3hBbmFseXRpY3NNb2R1bGUge1xuXG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM6IERiTmd4QW5hbHl0aWNzTW9kdWxlT3B0aW9ucyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGJOZ3hBbmFseXRpY3NNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IERiTmd4QW5hbHl0aWNzTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIC8vIENvbmZpZ3VyYXRpb25cbiAgICAgICAgb3B0aW9ucy5hbmFseXRpY3NDb25maWd1cmF0aW9uUHJvdmlkZXIsXG4gICAgICAgIC8vIFNlcnZpY2VcbiAgICAgICAgRGJOZ3hBbmFseXRpY3NTZXJ2aWNlXG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,179 @@
1
+ import { Subject, BehaviorSubject, of } from 'rxjs';
2
+ import { filter, first, shareReplay, switchMap } from 'rxjs/operators';
3
+ import { Inject, Injectable, Optional } from '@angular/core';
4
+ import { SubscriptionObject } from '@dereekb/rxjs';
5
+ import { AnalyticsStreamEventType } from './analytics.stream';
6
+ import * as i0 from "@angular/core";
7
+ export class DbNgxAnalyticsEventEmitterService {
8
+ }
9
+ export class DbNgxAnalyticsEventStreamService {
10
+ }
11
+ export class DbNgxAnalyticsUserSource {
12
+ }
13
+ export class DbNgxAnalyticsServiceListener {
14
+ }
15
+ export class AbstractAnalyticsServiceListener {
16
+ constructor() {
17
+ this._sub = new SubscriptionObject();
18
+ }
19
+ listenToService(service) {
20
+ this._service = service;
21
+ this._sub.subscription = service.events$.pipe(filter((e) => this.filterEvent(e)))
22
+ .subscribe((event) => this.updateOnStreamEvent(event));
23
+ }
24
+ filterEvent(streamEvent) {
25
+ return true;
26
+ }
27
+ }
28
+ export class DbNgxAnalyticsServiceConfiguration {
29
+ constructor() {
30
+ this.listeners = [];
31
+ }
32
+ }
33
+ export class AnalyticsStreamEventAnalyticsEventWrapper {
34
+ constructor(event, type = AnalyticsStreamEventType.Event) {
35
+ this.event = event;
36
+ this.type = type;
37
+ }
38
+ get user() {
39
+ return this.event.user;
40
+ }
41
+ get userId() {
42
+ return (this.user) ? this.user.user : undefined;
43
+ }
44
+ }
45
+ /**
46
+ * Primary analytics service that emits analytics events that components can listen to.
47
+ */
48
+ export class DbNgxAnalyticsService {
49
+ constructor(_config, userSource = _config.userSource) {
50
+ this._config = _config;
51
+ this._subject = new Subject();
52
+ this.events$ = this._subject.asObservable();
53
+ this._userSource = new BehaviorSubject(undefined);
54
+ this.user$ = this._userSource.pipe(switchMap(x => (x) ? x.analyticsUser$ : of(undefined)), shareReplay(1));
55
+ this._userSourceSub = new SubscriptionObject();
56
+ this._loggerSub = new SubscriptionObject();
57
+ this._init();
58
+ if (userSource) {
59
+ this.setUserSource(userSource);
60
+ }
61
+ }
62
+ // MARK: Source
63
+ /**
64
+ * Sets the user directly.
65
+ */
66
+ setUser(user) {
67
+ let source;
68
+ if (user) {
69
+ source = { analyticsUser$: of(user) };
70
+ }
71
+ this._userSource.next(source);
72
+ }
73
+ setUserSource(source) {
74
+ this._userSource.next(source);
75
+ }
76
+ // MARK: DbNgxAnalyticsEventEmitterService
77
+ /**
78
+ * Sends an event.
79
+ */
80
+ sendNewUserEvent(user, data) {
81
+ this.sendNextEvent({
82
+ name: DbNgxAnalyticsService.USER_REGISTRATION_EVENT_NAME,
83
+ data
84
+ }, AnalyticsStreamEventType.NewUserEvent, user);
85
+ }
86
+ sendUserLoginEvent(user, data) {
87
+ this.sendNextEvent({
88
+ name: DbNgxAnalyticsService.USER_LOGIN_EVENT_NAME,
89
+ data
90
+ }, AnalyticsStreamEventType.UserLoginEvent, user);
91
+ }
92
+ sendUserLogoutEvent(data, clearUser = true) {
93
+ this.sendNextEvent({
94
+ name: DbNgxAnalyticsService.USER_LOGOUT_EVENT_NAME,
95
+ data
96
+ }, AnalyticsStreamEventType.UserLogoutEvent);
97
+ if (clearUser) {
98
+ this.setUser(undefined);
99
+ }
100
+ }
101
+ sendUserPropertiesEvent(user, data) {
102
+ this.sendNextEvent({
103
+ name: DbNgxAnalyticsService.USER_PROPERTIES_EVENT_NAME,
104
+ data
105
+ }, AnalyticsStreamEventType.UserPropertiesEvent, user);
106
+ }
107
+ sendEventData(name, data) {
108
+ return this.sendEvent({
109
+ name,
110
+ data
111
+ });
112
+ }
113
+ sendEventType(eventType) {
114
+ this.sendNextEvent({
115
+ name: eventType
116
+ }, AnalyticsStreamEventType.Event);
117
+ }
118
+ sendEvent(event) {
119
+ this.sendNextEvent(event, AnalyticsStreamEventType.Event);
120
+ }
121
+ sendPageView(page) {
122
+ this.sendNextEvent({
123
+ name: page
124
+ }, AnalyticsStreamEventType.PageView);
125
+ }
126
+ sendNextEvent(event = {}, type, userOverride) {
127
+ this.user$.pipe(first()).subscribe((analyticsUser) => {
128
+ const user = (userOverride != null) ? userOverride : analyticsUser;
129
+ const analyticsEvent = { ...event, user };
130
+ this.nextEvent(analyticsEvent, type);
131
+ });
132
+ }
133
+ nextEvent(event, type) {
134
+ const wrapper = new AnalyticsStreamEventAnalyticsEventWrapper(event, type);
135
+ this._subject.next(wrapper);
136
+ }
137
+ // MARK: Internal
138
+ _init() {
139
+ if (this._config.isProduction) {
140
+ // Initialize listeners.
141
+ this._config.listeners.forEach((listener) => {
142
+ listener.listenToService(this);
143
+ });
144
+ }
145
+ else {
146
+ console.warn('DbNgxAnalyticsService: Analytics not in production mode. All analytics events are ignored.');
147
+ }
148
+ if (this._config.logEvents || !this._config.isProduction) {
149
+ console.log('DbNgxAnalyticsService: Log analytics events enabled.');
150
+ // Create a new subscription
151
+ this._loggerSub.subscription = this._subject.subscribe((x) => {
152
+ console.log(`DbNgxAnalyticsService: Analytics Event - ${AnalyticsStreamEventType[x.type]} User: ${x.userId} Data: ${JSON.stringify(x.event)}.`);
153
+ });
154
+ }
155
+ this._userSourceSub.subscription = this.user$.subscribe(() => {
156
+ this.sendNextEvent({}, AnalyticsStreamEventType.UserChange);
157
+ });
158
+ }
159
+ destroy() {
160
+ this._userSourceSub.destroy();
161
+ this._loggerSub.destroy();
162
+ }
163
+ }
164
+ // TODO: Make these configurable.
165
+ DbNgxAnalyticsService.USER_REGISTRATION_EVENT_NAME = 'User Registered';
166
+ DbNgxAnalyticsService.USER_LOGIN_EVENT_NAME = 'User Login';
167
+ DbNgxAnalyticsService.USER_LOGOUT_EVENT_NAME = 'User Logout';
168
+ DbNgxAnalyticsService.USER_PROPERTIES_EVENT_NAME = 'User Properties';
169
+ DbNgxAnalyticsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsService, deps: [{ token: DbNgxAnalyticsServiceConfiguration }, { token: DbNgxAnalyticsUserSource, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
170
+ DbNgxAnalyticsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsService });
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbNgxAnalyticsService, decorators: [{
172
+ type: Injectable
173
+ }], ctorParameters: function () { return [{ type: DbNgxAnalyticsServiceConfiguration }, { type: undefined, decorators: [{
174
+ type: Optional
175
+ }, {
176
+ type: Inject,
177
+ args: [DbNgxAnalyticsUserSource]
178
+ }] }]; } });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYW5hbHl0aWNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBd0Isd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHcEYsTUFBTSxPQUFnQixpQ0FBaUM7Q0FRdEQ7QUFFRCxNQUFNLE9BQWdCLGdDQUFnQztDQUVyRDtBQUVELE1BQU0sT0FBZ0Isd0JBQXdCO0NBRTdDO0FBRUQsTUFBTSxPQUFnQiw2QkFBNkI7Q0FFbEQ7QUFFRCxNQUFNLE9BQWdCLGdDQUFnQztJQUF0RDtRQUdZLFNBQUksR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFjNUMsQ0FBQztJQVpRLGVBQWUsQ0FBQyxPQUE4QjtRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5RSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FB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QU8sQ0FBQyxHQUFHLENBQUMsNENBQTRDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsSixDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7QUFsSkQsaUNBQWlDO0FBRWpCLGtEQUE0QixHQUFHLGlCQUFrQixDQUFBO0FBQ2pELDJDQUFxQixHQUFHLFlBQWEsQ0FBQTtBQUNyQyw0Q0FBc0IsR0FBRyxhQUFjLENBQUE7QUFDdkMsZ0RBQTBCLEdBQUcsaUJBQWtCLENBQUE7a0hBUHBELHFCQUFxQixrQkFtQmIsa0NBQWtDLGFBQy9CLHdCQUF3QjtzSEFwQm5DLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzBEQW9CVSxrQ0FBa0M7MEJBQ2xELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzRXZlbnQsIEFuYWx5dGljc0V2ZW50RGF0YSwgQW5hbHl0aWNzRXZlbnROYW1lLCBBbmFseXRpY3NVc2VyLCBOZXdVc2VyQW5hbHl0aWNzRXZlbnREYXRhLCBVc2VyQW5hbHl0aWNzRXZlbnQgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTdHJlYW1FdmVudCwgQW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlIH0gZnJvbSAnLi9hbmFseXRpY3Muc3RyZWFtJztcbmltcG9ydCB7IE1heWJlLCBEZXN0cm95YWJsZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJOZ3hBbmFseXRpY3NFdmVudEVtaXR0ZXJTZXJ2aWNlIHtcbiAgYWJzdHJhY3Qgc2VuZE5ld1VzZXJFdmVudCh1c2VyOiBBbmFseXRpY3NVc2VyLCBkYXRhOiBOZXdVc2VyQW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFVzZXJMb2dpbkV2ZW50KHVzZXI6IEFuYWx5dGljc1VzZXIsIGRhdGE/OiBBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkO1xuICBhYnN0cmFjdCBzZW5kVXNlckxvZ291dEV2ZW50KGRhdGE/OiBBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkO1xuICBhYnN0cmFjdCBzZW5kVXNlclByb3BlcnRpZXNFdmVudCh1c2VyOiBBbmFseXRpY3NVc2VyLCBkYXRhPzogQW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZEV2ZW50RGF0YShuYW1lOiBBbmFseXRpY3NFdmVudE5hbWUsIGRhdGE/OiBBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkO1xuICBhYnN0cmFjdCBzZW5kRXZlbnQoZXZlbnQ6IEFuYWx5dGljc0V2ZW50KTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFBhZ2VWaWV3KHBhZ2U/OiBzdHJpbmcpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJOZ3hBbmFseXRpY3NFdmVudFN0cmVhbVNlcnZpY2Uge1xuICBhYnN0cmFjdCByZWFkb25seSBldmVudHMkOiBPYnNlcnZhYmxlPEFuYWx5dGljc1N0cmVhbUV2ZW50Pjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERiTmd4QW5hbHl0aWNzVXNlclNvdXJjZSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGFuYWx5dGljc1VzZXIkOiBPYnNlcnZhYmxlPE1heWJlPEFuYWx5dGljc1VzZXI+Pjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERiTmd4QW5hbHl0aWNzU2VydmljZUxpc3RlbmVyIHtcbiAgcHVibGljIGFic3RyYWN0IGxpc3RlblRvU2VydmljZShzZXJ2aWNlOiBEYk5neEFuYWx5dGljc1NlcnZpY2UpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIgaW1wbGVtZW50cyBEYk5neEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lciB7XG5cbiAgcHJvdGVjdGVkIF9zZXJ2aWNlPzogRGJOZ3hBbmFseXRpY3NTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgX3N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwdWJsaWMgbGlzdGVuVG9TZXJ2aWNlKHNlcnZpY2U6IERiTmd4QW5hbHl0aWNzU2VydmljZSk6IHZvaWQge1xuICAgIHRoaXMuX3NlcnZpY2UgPSBzZXJ2aWNlO1xuICAgIHRoaXMuX3N1Yi5zdWJzY3JpcHRpb24gPSBzZXJ2aWNlLmV2ZW50cyQucGlwZShmaWx0ZXIoKGUpID0+IHRoaXMuZmlsdGVyRXZlbnQoZSkpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMudXBkYXRlT25TdHJlYW1FdmVudChldmVudCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbHRlckV2ZW50KHN0cmVhbUV2ZW50OiBBbmFseXRpY3NTdHJlYW1FdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHVwZGF0ZU9uU3RyZWFtRXZlbnQoZXZlbnQ6IEFuYWx5dGljc1N0cmVhbUV2ZW50KTogdm9pZDtcblxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJOZ3hBbmFseXRpY3NTZXJ2aWNlQ29uZmlndXJhdGlvbiB7XG4gIGxpc3RlbmVyczogRGJOZ3hBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXJbXSA9IFtdO1xuICBpc1Byb2R1Y3Rpb24/OiBib29sZWFuO1xuICBsb2dFdmVudHM/OiBib29sZWFuO1xuICB1c2VyU291cmNlPzogRGJOZ3hBbmFseXRpY3NVc2VyU291cmNlO1xufVxuXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU3RyZWFtRXZlbnRBbmFseXRpY3NFdmVudFdyYXBwZXIgaW1wbGVtZW50cyBBbmFseXRpY3NTdHJlYW1FdmVudCB7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGV2ZW50OiBVc2VyQW5hbHl0aWNzRXZlbnQsIHB1YmxpYyByZWFkb25seSB0eXBlOiBBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUgPSBBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuRXZlbnQpIHsgfVxuXG4gIHB1YmxpYyBnZXQgdXNlcigpOiBNYXliZTxBbmFseXRpY3NVc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnQudXNlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdXNlcklkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuICh0aGlzLnVzZXIpID8gdGhpcy51c2VyLnVzZXIgOiB1bmRlZmluZWQ7XG4gIH1cblxufVxuXG4vKipcbiAqIFByaW1hcnkgYW5hbHl0aWNzIHNlcnZpY2UgdGhhdCBlbWl0cyBhbmFseXRpY3MgZXZlbnRzIHRoYXQgY29tcG9uZW50cyBjYW4gbGlzdGVuIHRvLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJOZ3hBbmFseXRpY3NTZXJ2aWNlIGltcGxlbWVudHMgRGJOZ3hBbmFseXRpY3NFdmVudFN0cmVhbVNlcnZpY2UsIERiTmd4QW5hbHl0aWNzRXZlbnRFbWl0dGVyU2VydmljZSwgRGVzdHJveWFibGUge1xuXG4gIC8vIFRPRE86IE1ha2UgdGhlc2UgY29uZmlndXJhYmxlLlxuXG4gIHN0YXRpYyByZWFkb25seSBVU0VSX1JFR0lTVFJBVElPTl9FVkVOVF9OQU1FID0gJ1VzZXIgUmVnaXN0ZXJlZCc7XG4gIHN0YXRpYyByZWFkb25seSBVU0VSX0xPR0lOX0VWRU5UX05BTUUgPSAnVXNlciBMb2dpbic7XG4gIHN0YXRpYyByZWFkb25seSBVU0VSX0xPR09VVF9FVkVOVF9OQU1FID0gJ1VzZXIgTG9nb3V0JztcbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfUFJPUEVSVElFU19FVkVOVF9OQU1FID0gJ1VzZXIgUHJvcGVydGllcyc7XG5cbiAgcHJpdmF0ZSBfc3ViamVjdCA9IG5ldyBTdWJqZWN0PEFuYWx5dGljc1N0cmVhbUV2ZW50PigpO1xuICByZWFkb25seSBldmVudHMkID0gdGhpcy5fc3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIF91c2VyU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxEYk5neEFuYWx5dGljc1VzZXJTb3VyY2U+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSB1c2VyJCA9IHRoaXMuX3VzZXJTb3VyY2UucGlwZShzd2l0Y2hNYXAoeCA9PiAoeCkgPyB4LmFuYWx5dGljc1VzZXIkIDogb2YodW5kZWZpbmVkKSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICBwcml2YXRlIF91c2VyU291cmNlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9sb2dnZXJTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY29uZmlnOiBEYk5neEFuYWx5dGljc1NlcnZpY2VDb25maWd1cmF0aW9uLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRGJOZ3hBbmFseXRpY3NVc2VyU291cmNlKSB1c2VyU291cmNlOiBNYXliZTxEYk5neEFuYWx5dGljc1VzZXJTb3VyY2U+ID0gX2NvbmZpZy51c2VyU291cmNlXG4gICkge1xuICAgIHRoaXMuX2luaXQoKTtcblxuICAgIGlmICh1c2VyU291cmNlKSB7XG4gICAgICB0aGlzLnNldFVzZXJTb3VyY2UodXNlclNvdXJjZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gTUFSSzogU291cmNlXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB1c2VyIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIHNldFVzZXIodXNlcjogTWF5YmU8QW5hbHl0aWNzVXNlcj4pOiB2b2lkIHtcbiAgICBsZXQgc291cmNlOiBNYXliZTxEYk5neEFuYWx5dGljc1VzZXJTb3VyY2U+O1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHNvdXJjZSA9IHsgYW5hbHl0aWNzVXNlciQ6IG9mKHVzZXIpIH07XG4gICAgfVxuXG4gICAgdGhpcy5fdXNlclNvdXJjZS5uZXh0KHNvdXJjZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0VXNlclNvdXJjZShzb3VyY2U6IERiTmd4QW5hbHl0aWNzVXNlclNvdXJjZSk6IHZvaWQge1xuICAgIHRoaXMuX3VzZXJTb3VyY2UubmV4dChzb3VyY2UpO1xuICB9XG5cbiAgLy8gTUFSSzogRGJOZ3hBbmFseXRpY3NFdmVudEVtaXR0ZXJTZXJ2aWNlXG4gIC8qKlxuICAgKiBTZW5kcyBhbiBldmVudC5cbiAgICovXG4gIHB1YmxpYyBzZW5kTmV3VXNlckV2ZW50KHVzZXI6IEFuYWx5dGljc1VzZXIsIGRhdGE6IE5ld1VzZXJBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoe1xuICAgICAgbmFtZTogRGJOZ3hBbmFseXRpY3NTZXJ2aWNlLlVTRVJfUkVHSVNUUkFUSU9OX0VWRU5UX05BTUUsXG4gICAgICBkYXRhXG4gICAgfSwgQW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLk5ld1VzZXJFdmVudCwgdXNlcik7XG4gIH1cblxuICBwdWJsaWMgc2VuZFVzZXJMb2dpbkV2ZW50KHVzZXI6IEFuYWx5dGljc1VzZXIsIGRhdGE/OiBBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoe1xuICAgICAgbmFtZTogRGJOZ3hBbmFseXRpY3NTZXJ2aWNlLlVTRVJfTE9HSU5fRVZFTlRfTkFNRSxcbiAgICAgIGRhdGFcbiAgICB9LCBBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckxvZ2luRXZlbnQsIHVzZXIpO1xuICB9XG5cbiAgcHVibGljIHNlbmRVc2VyTG9nb3V0RXZlbnQoZGF0YT86IEFuYWx5dGljc0V2ZW50RGF0YSwgY2xlYXJVc2VyID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudCh7XG4gICAgICBuYW1lOiBEYk5neEFuYWx5dGljc1NlcnZpY2UuVVNFUl9MT0dPVVRfRVZFTlRfTkFNRSxcbiAgICAgIGRhdGFcbiAgICB9LCBBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckxvZ291dEV2ZW50KTtcblxuICAgIGlmIChjbGVhclVzZXIpIHtcbiAgICAgIHRoaXMuc2V0VXNlcih1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZW5kVXNlclByb3BlcnRpZXNFdmVudCh1c2VyOiBBbmFseXRpY3NVc2VyLCBkYXRhPzogQW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KHtcbiAgICAgIG5hbWU6IERiTmd4QW5hbHl0aWNzU2VydmljZS5VU0VSX1BST1BFUlRJRVNfRVZFTlRfTkFNRSxcbiAgICAgIGRhdGFcbiAgICB9LCBBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlclByb3BlcnRpZXNFdmVudCwgdXNlcik7XG4gIH1cblxuICBwdWJsaWMgc2VuZEV2ZW50RGF0YShuYW1lOiBBbmFseXRpY3NFdmVudE5hbWUsIGRhdGE/OiBBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5zZW5kRXZlbnQoe1xuICAgICAgbmFtZSxcbiAgICAgIGRhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kRXZlbnRUeXBlKGV2ZW50VHlwZTogQW5hbHl0aWNzRXZlbnROYW1lKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KHtcbiAgICAgIG5hbWU6IGV2ZW50VHlwZVxuICAgIH0sIEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5FdmVudCk7XG4gIH1cblxuICBwdWJsaWMgc2VuZEV2ZW50KGV2ZW50OiBBbmFseXRpY3NFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudChldmVudCwgQW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLkV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kUGFnZVZpZXcocGFnZT86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudCh7XG4gICAgICBuYW1lOiBwYWdlXG4gICAgfSwgQW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlBhZ2VWaWV3KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZW5kTmV4dEV2ZW50KGV2ZW50OiBBbmFseXRpY3NFdmVudCA9IHt9LCB0eXBlOiBBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUsIHVzZXJPdmVycmlkZT86IEFuYWx5dGljc1VzZXIpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXIkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChhbmFseXRpY3NVc2VyKSA9PiB7XG4gICAgICBjb25zdCB1c2VyOiBNYXliZTxBbmFseXRpY3NVc2VyPiA9ICh1c2VyT3ZlcnJpZGUgIT0gbnVsbCkgPyB1c2VyT3ZlcnJpZGUgOiBhbmFseXRpY3NVc2VyO1xuICAgICAgY29uc3QgYW5hbHl0aWNzRXZlbnQ6IFVzZXJBbmFseXRpY3NFdmVudCA9IHsgLi4uZXZlbnQsIHVzZXIgfTtcbiAgICAgIHRoaXMubmV4dEV2ZW50KGFuYWx5dGljc0V2ZW50LCB0eXBlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZXh0RXZlbnQoZXZlbnQ6IFVzZXJBbmFseXRpY3NFdmVudCwgdHlwZTogQW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlKTogdm9pZCB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG5ldyBBbmFseXRpY3NTdHJlYW1FdmVudEFuYWx5dGljc0V2ZW50V3JhcHBlcihldmVudCwgdHlwZSk7XG4gICAgdGhpcy5fc3ViamVjdC5uZXh0KHdyYXBwZXIpO1xuICB9XG5cbiAgLy8gTUFSSzogSW50ZXJuYWxcbiAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLl9jb25maWcuaXNQcm9kdWN0aW9uKSB7XG4gICAgICAvLyBJbml0aWFsaXplIGxpc3RlbmVycy5cbiAgICAgIHRoaXMuX2NvbmZpZy5saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgICAgbGlzdGVuZXIubGlzdGVuVG9TZXJ2aWNlKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignRGJOZ3hBbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3Mgbm90IGluIHByb2R1Y3Rpb24gbW9kZS4gQWxsIGFuYWx5dGljcyBldmVudHMgYXJlIGlnbm9yZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5sb2dFdmVudHMgfHwgIXRoaXMuX2NvbmZpZy5pc1Byb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdEYk5neEFuYWx5dGljc1NlcnZpY2U6IExvZyBhbmFseXRpY3MgZXZlbnRzIGVuYWJsZWQuJyk7XG5cbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBzdWJzY3JpcHRpb25cbiAgICAgIHRoaXMuX2xvZ2dlclN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhgRGJOZ3hBbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3MgRXZlbnQgLSAke0FuYWx5dGljc1N0cmVhbUV2ZW50VHlwZVt4LnR5cGVdfSBVc2VyOiAke3gudXNlcklkfSBEYXRhOiAke0pTT04uc3RyaW5naWZ5KHguZXZlbnQpfS5gKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3VzZXJTb3VyY2VTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy51c2VyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZW5kTmV4dEV2ZW50KHt9LCBBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckNoYW5nZSk7XG4gICAgfSk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuX3VzZXJTb3VyY2VTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2xvZ2dlclN1Yi5kZXN0cm95KCk7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,13 @@
1
+ export var AnalyticsStreamEventType;
2
+ (function (AnalyticsStreamEventType) {
3
+ AnalyticsStreamEventType[AnalyticsStreamEventType["PageView"] = 0] = "PageView";
4
+ AnalyticsStreamEventType[AnalyticsStreamEventType["UserChange"] = 1] = "UserChange";
5
+ // User Events
6
+ AnalyticsStreamEventType[AnalyticsStreamEventType["NewUserEvent"] = 2] = "NewUserEvent";
7
+ AnalyticsStreamEventType[AnalyticsStreamEventType["UserLoginEvent"] = 3] = "UserLoginEvent";
8
+ AnalyticsStreamEventType[AnalyticsStreamEventType["UserLogoutEvent"] = 4] = "UserLogoutEvent";
9
+ AnalyticsStreamEventType[AnalyticsStreamEventType["UserPropertiesEvent"] = 5] = "UserPropertiesEvent";
10
+ // Events
11
+ AnalyticsStreamEventType[AnalyticsStreamEventType["Event"] = 6] = "Event";
12
+ })(AnalyticsStreamEventType || (AnalyticsStreamEventType = {}));
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1hbmFseXRpY3Mvc3JjL2xpYi9hbmFseXRpY3Muc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBTixJQUFZLHdCQWNYO0FBZEQsV0FBWSx3QkFBd0I7SUFFbEMsK0VBQVEsQ0FBQTtJQUNSLG1GQUFVLENBQUE7SUFFVixjQUFjO0lBQ2QsdUZBQVksQ0FBQTtJQUNaLDJGQUFjLENBQUE7SUFDZCw2RkFBZSxDQUFBO0lBQ2YscUdBQW1CLENBQUE7SUFFbkIsU0FBUztJQUNULHlFQUFLLENBQUE7QUFFUCxDQUFDLEVBZFcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQWNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlIH0gZnJvbSBcIkBkZXJlZWtiL3V0aWxcIjtcbmltcG9ydCB7IEFuYWx5dGljc1VzZXIsIFVzZXJBbmFseXRpY3NFdmVudCwgQW5hbHl0aWNzVXNlcklkIH0gZnJvbSBcIi4vYW5hbHl0aWNzXCI7XG5cbmV4cG9ydCBlbnVtIEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZSB7XG5cbiAgUGFnZVZpZXcsXG4gIFVzZXJDaGFuZ2UsXG5cbiAgLy8gVXNlciBFdmVudHNcbiAgTmV3VXNlckV2ZW50LFxuICBVc2VyTG9naW5FdmVudCxcbiAgVXNlckxvZ291dEV2ZW50LFxuICBVc2VyUHJvcGVydGllc0V2ZW50LFxuXG4gIC8vIEV2ZW50c1xuICBFdmVudFxuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl0aWNzU3RyZWFtRXZlbnQge1xuICByZWFkb25seSB0eXBlOiBBbmFseXRpY3NTdHJlYW1FdmVudFR5cGU7XG4gIHJlYWRvbmx5IHVzZXI/OiBNYXliZTxBbmFseXRpY3NVc2VyPjtcbiAgcmVhZG9ubHkgZXZlbnQ/OiBVc2VyQW5hbHl0aWNzRXZlbnQ7XG4gIHJlYWRvbmx5IHVzZXJJZD86IEFuYWx5dGljc1VzZXJJZDtcbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './action';
2
+ export * from './analytics.module';
3
+ export * from './analytics.service';
4
+ export * from './analytics.stream';
5
+ export * from './analytics';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2FuYWx5dGljcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hbmFseXRpY3Muc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FuYWx5dGljcy5zdHJlYW0nO1xuZXhwb3J0ICogZnJvbSAnLi9hbmFseXRpY3MnO1xuIl19