@dereekb/dbx-analytics 10.1.26 → 10.1.27

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.
@@ -1,7 +1,8 @@
1
- import { Subject, BehaviorSubject, of, first, shareReplay, switchMap } from 'rxjs';
1
+ import { Subject, BehaviorSubject, of, first, shareReplay, switchMap, distinctUntilChanged } from 'rxjs';
2
2
  import { Inject, Injectable, Optional } from '@angular/core';
3
3
  import { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';
4
4
  import { DbxAnalyticsStreamEventType } from './analytics.stream';
5
+ import { safeCompareEquality } from '@dereekb/util';
5
6
  import * as i0 from "@angular/core";
6
7
  export class DbxAnalyticsEventEmitterService {
7
8
  }
@@ -68,6 +69,7 @@ export class DbxAnalyticsService {
68
69
  this._userSource = new BehaviorSubject(undefined);
69
70
  this.user$ = this._userSource.pipe(switchMap((x) => (x ? x.analyticsUser$ : of(undefined))), shareReplay(1));
70
71
  this._userSourceSub = new SubscriptionObject();
72
+ this._userIdEventSub = new SubscriptionObject();
71
73
  this._loggerSub = new SubscriptionObject();
72
74
  this._init();
73
75
  userSource = userSource || _config.userSource;
@@ -77,7 +79,7 @@ export class DbxAnalyticsService {
77
79
  }
78
80
  // MARK: Source
79
81
  /**
80
- * Sets the user directly.
82
+ * Sets the user directly, overridding the UserSource.
81
83
  */
82
84
  setUser(user) {
83
85
  let source;
@@ -85,6 +87,9 @@ export class DbxAnalyticsService {
85
87
  source = { analyticsUser$: of(user) };
86
88
  }
87
89
  this._userSource.next(source);
90
+ if (this._userSource.value) {
91
+ console.warn('DbxAnalyticsService has a userSource that is set. Source is now overridden by setUser() value.');
92
+ }
88
93
  }
89
94
  setUserSource(source) {
90
95
  this._userSource.next(source);
@@ -139,9 +144,16 @@ export class DbxAnalyticsService {
139
144
  name: page
140
145
  }, DbxAnalyticsStreamEventType.PageView);
141
146
  }
147
+ /**
148
+ * Sends the next event.
149
+ *
150
+ * @param event
151
+ * @param type
152
+ * @param userOverride Uses this user if set as null or an override value. If undefined the current analytics user is used.
153
+ */
142
154
  sendNextEvent(event = {}, type, userOverride) {
143
155
  this.user$.pipe(first()).subscribe((analyticsUser) => {
144
- const user = userOverride != null ? userOverride : analyticsUser;
156
+ const user = userOverride !== undefined ? userOverride : analyticsUser;
145
157
  const analyticsEvent = { ...event, user };
146
158
  this.nextEvent(analyticsEvent, type);
147
159
  });
@@ -168,13 +180,18 @@ export class DbxAnalyticsService {
168
180
  console.log(`AnalyticsService: Analytics Event - ${DbxAnalyticsStreamEventType[x.type]} | User: ${x.userId} | Data: ${JSON.stringify(x.event)}.`);
169
181
  });
170
182
  }
171
- this._userSourceSub.subscription = this.user$.subscribe(() => {
172
- this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserChange);
183
+ this._userSourceSub.subscription = this.user$.subscribe((user) => {
184
+ this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserChange, user ?? null);
185
+ });
186
+ this._userIdEventSub.subscription = this.user$.pipe(distinctUntilChanged((a, b) => safeCompareEquality(a, b, (x, y) => x.user === y.user))).subscribe((user) => {
187
+ this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserIdChange, user ?? null);
173
188
  });
174
189
  }
175
190
  destroy() {
176
191
  this._subject.complete();
192
+ this._userSource.complete();
177
193
  this._userSourceSub.destroy();
194
+ this._userIdEventSub.destroy();
178
195
  this._loggerSub.destroy();
179
196
  }
180
197
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxAnalyticsService, deps: [{ token: DbxAnalyticsServiceConfiguration }, { token: DbxAnalyticsUserSource, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -188,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
188
205
  type: Inject,
189
206
  args: [DbxAnalyticsUserSource]
190
207
  }] }]; } });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYW5hbHl0aWNzL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBZ0IsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0csT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUEyQiwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUcxRixNQUFNLE9BQWdCLCtCQUErQjtDQVFwRDtBQUVELE1BQU0sT0FBZ0IsOEJBQThCO0NBRW5EO0FBRUQsTUFBTSxPQUFnQixzQkFBc0I7Q0FFM0M7QUFFRCxNQUFNLE9BQWdCLDJCQUEyQjtDQUVoRDtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixtQ0FBbUM7SUFBekQ7UUFDVSxTQUFJLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBNkIsU0FBUyxDQUFDLENBQUM7UUFFekUsZUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLHFCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUM5QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDM0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7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LENBQUM7SUFDNUIsQ0FBQzsrR0F6S1UsbUJBQW1CLCtEQW9CcUQsc0JBQXNCO21IQXBCOUYsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVOzswQkFxQnVELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBvZiwgU3Vic2NyaXB0aW9uLCBmaXJzdCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uT2JqZWN0LCBmaWx0ZXJNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4QW5hbHl0aWNzRXZlbnQsIERieEFuYWx5dGljc0V2ZW50RGF0YSwgRGJ4QW5hbHl0aWNzRXZlbnROYW1lLCBEYnhBbmFseXRpY3NVc2VyLCBOZXdVc2VyQW5hbHl0aWNzRXZlbnREYXRhLCBEYnhVc2VyQW5hbHl0aWNzRXZlbnQgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBEYnhBbmFseXRpY3NTdHJlYW1FdmVudCwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlIH0gZnJvbSAnLi9hbmFseXRpY3Muc3RyZWFtJztcbmltcG9ydCB7IE1heWJlLCBEZXN0cm95YWJsZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QW5hbHl0aWNzRXZlbnRFbWl0dGVyU2VydmljZSB7XG4gIGFic3RyYWN0IHNlbmROZXdVc2VyRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YTogTmV3VXNlckFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRVc2VyTG9naW5FdmVudCh1c2VyOiBEYnhBbmFseXRpY3NVc2VyLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFVzZXJMb2dvdXRFdmVudChkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFVzZXJQcm9wZXJ0aWVzRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YT86IERieEFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRFdmVudERhdGEobmFtZTogRGJ4QW5hbHl0aWNzRXZlbnROYW1lLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZEV2ZW50KGV2ZW50OiBEYnhBbmFseXRpY3NFdmVudCk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRQYWdlVmlldyhwYWdlPzogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEFuYWx5dGljc0V2ZW50U3RyZWFtU2VydmljZSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGV2ZW50cyQ6IE9ic2VydmFibGU8RGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQ+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QW5hbHl0aWNzVXNlclNvdXJjZSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGFuYWx5dGljc1VzZXIkOiBPYnNlcnZhYmxlPE1heWJlPERieEFuYWx5dGljc1VzZXI+Pjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lciB7XG4gIHB1YmxpYyBhYnN0cmFjdCBsaXN0ZW5Ub1NlcnZpY2Uoc2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSk6IHZvaWQ7XG59XG5cbi8qKlxuICogQWJzdHJhY3QgQW5hbHl0aWNzU2VydmljZUxpc3RlbmVyIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIgaW1wbGVtZW50cyBEYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIsIERlc3Ryb3lhYmxlIHtcbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcm90ZWN0ZWQgX2FuYWx5dGljcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RGJ4QW5hbHl0aWNzU2VydmljZT4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgYW5hbHl0aWNzJCA9IHRoaXMuX2FuYWx5dGljcy5waXBlKGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgYW5hbHl0aWNzRXZlbnRzJCA9IHRoaXMuYW5hbHl0aWNzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4geC5ldmVudHMkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8vIE1BUks6IEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lclxuICBsaXN0ZW5Ub1NlcnZpY2Uoc2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSk6IHZvaWQge1xuICAgIHRoaXMuX2FuYWx5dGljcy5uZXh0KHNlcnZpY2UpO1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuX2luaXRpYWxpemVTZXJ2aWNlU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBpZiAoc3ViICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHN1YjtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2luaXRpYWxpemVTZXJ2aWNlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IGZhbHNlO1xuXG4gIC8vIE1BUks6IERlc3Ryb3lcbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmFseXRpY3MuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdWIuZGVzdHJveSgpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYnhBbmFseXRpY3NTZXJ2aWNlQ29uZmlndXJhdGlvbiB7XG4gIGxpc3RlbmVyczogRGJ4QW5hbHl0aWNzU2VydmljZUxpc3RlbmVyW10gPSBbXTtcbiAgaXNQcm9kdWN0aW9uPzogYm9vbGVhbjtcbiAgbG9nRXZlbnRzPzogYm9vbGVhbjtcbiAgdXNlclNvdXJjZT86IERieEFuYWx5dGljc1VzZXJTb3VyY2U7XG59XG5cbmV4cG9ydCBjbGFzcyBEYnhBbmFseXRpY3NTdHJlYW1FdmVudEFuYWx5dGljc0V2ZW50V3JhcHBlciBpbXBsZW1lbnRzIERieEFuYWx5dGljc1N0cmVhbUV2ZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGV2ZW50OiBEYnhVc2VyQW5hbHl0aWNzRXZlbnQsIHB1YmxpYyByZWFkb25seSB0eXBlOiBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUgPSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuRXZlbnQpIHt9XG5cbiAgcHVibGljIGdldCB1c2VyKCk6IE1heWJlPERieEFuYWx5dGljc1VzZXI+IHtcbiAgICByZXR1cm4gdGhpcy5ldmVudC51c2VyO1xuICB9XG5cbiAgcHVibGljIGdldCB1c2VySWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy51c2VyID8gdGhpcy51c2VyLnVzZXIgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQcmltYXJ5IGFuYWx5dGljcyBzZXJ2aWNlIHRoYXQgZW1pdHMgYW5hbHl0aWNzIGV2ZW50cyB0aGF0IGNvbXBvbmVudHMgY2FuIGxpc3RlbiB0by5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieEFuYWx5dGljc1NlcnZpY2UgaW1wbGVtZW50cyBEYnhBbmFseXRpY3NFdmVudFN0cmVhbVNlcnZpY2UsIERieEFuYWx5dGljc0V2ZW50RW1pdHRlclNlcnZpY2UsIERlc3Ryb3lhYmxlIHtcbiAgLy8gVE9ETzogTWFrZSB0aGVzZSBjb25maWd1cmFibGUuXG5cbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfUkVHSVNUUkFUSU9OX0VWRU5UX05BTUUgPSAnVXNlciBSZWdpc3RlcmVkJztcbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfTE9HSU5fRVZFTlRfTkFNRSA9ICdVc2VyIExvZ2luJztcbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfTE9HT1VUX0VWRU5UX05BTUUgPSAnVXNlciBMb2dvdXQnO1xuICBzdGF0aWMgcmVhZG9ubHkgVVNFUl9QUk9QRVJUSUVTX0VWRU5UX05BTUUgPSAnVXNlciBQcm9wZXJ0aWVzJztcblxuICBwcml2YXRlIF9zdWJqZWN0ID0gbmV3IFN1YmplY3Q8RGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IGV2ZW50cyQgPSB0aGlzLl9zdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgX3VzZXJTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPERieEFuYWx5dGljc1VzZXJTb3VyY2U+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSB1c2VyJCA9IHRoaXMuX3VzZXJTb3VyY2UucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+ICh4ID8geC5hbmFseXRpY3NVc2VyJCA6IG9mKHVuZGVmaW5lZCkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHByaXZhdGUgX3VzZXJTb3VyY2VTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2xvZ2dlclN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb25maWc6IERieEFuYWx5dGljc1NlcnZpY2VDb25maWd1cmF0aW9uLCBAT3B0aW9uYWwoKSBASW5qZWN0KERieEFuYWx5dGljc1VzZXJTb3VyY2UpIHVzZXJTb3VyY2U/OiBNYXliZTxEYnhBbmFseXRpY3NVc2VyU291cmNlPikge1xuICAgIHRoaXMuX2luaXQoKTtcblxuICAgIHVzZXJTb3VyY2UgPSB1c2VyU291cmNlIHx8IF9jb25maWcudXNlclNvdXJjZTtcbiAgICBpZiAodXNlclNvdXJjZSkge1xuICAgICAgdGhpcy5zZXRVc2VyU291cmNlKHVzZXJTb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1BUks6IFNvdXJjZVxuICAvKipcbiAgICogU2V0cyB0aGUgdXNlciBkaXJlY3RseS5cbiAgICovXG4gIHB1YmxpYyBzZXRVc2VyKHVzZXI6IE1heWJlPERieEFuYWx5dGljc1VzZXI+KTogdm9pZCB7XG4gICAgbGV0IHNvdXJjZTogTWF5YmU8RGJ4QW5hbHl0aWNzVXNlclNvdXJjZT47XG5cbiAgICBpZiAodXNlcikge1xuICAgICAgc291cmNlID0geyBhbmFseXRpY3NVc2VyJDogb2YodXNlcikgfTtcbiAgICB9XG5cbiAgICB0aGlzLl91c2VyU291cmNlLm5leHQoc291cmNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVc2VyU291cmNlKHNvdXJjZTogRGJ4QW5hbHl0aWNzVXNlclNvdXJjZSk6IHZvaWQge1xuICAgIHRoaXMuX3VzZXJTb3VyY2UubmV4dChzb3VyY2UpO1xuICB9XG5cbiAgLy8gTUFSSzogQW5hbHl0aWNzRXZlbnRFbWl0dGVyU2VydmljZVxuICAvKipcbiAgICogU2VuZHMgYW4gZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgc2VuZE5ld1VzZXJFdmVudCh1c2VyOiBEYnhBbmFseXRpY3NVc2VyLCBkYXRhOiBOZXdVc2VyQW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KFxuICAgICAge1xuICAgICAgICBuYW1lOiBEYnhBbmFseXRpY3NTZXJ2aWNlLlVTRVJfUkVHSVNUUkFUSU9OX0VWRU5UX05BTUUsXG4gICAgICAgIGRhdGFcbiAgICAgIH0sXG4gICAgICBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuTmV3VXNlckV2ZW50LFxuICAgICAgdXNlclxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2VuZFVzZXJMb2dpbkV2ZW50KHVzZXI6IERieEFuYWx5dGljc1VzZXIsIGRhdGE/OiBEYnhBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoXG4gICAgICB7XG4gICAgICAgIG5hbWU6IERieEFuYWx5dGljc1NlcnZpY2UuVVNFUl9MT0dJTl9FVkVOVF9OQU1FLFxuICAgICAgICBkYXRhXG4gICAgICB9LFxuICAgICAgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlVzZXJMb2dpbkV2ZW50LFxuICAgICAgdXNlclxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2VuZFVzZXJMb2dvdXRFdmVudChkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhLCBjbGVhclVzZXIgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KFxuICAgICAge1xuICAgICAgICBuYW1lOiBEYnhBbmFseXRpY3NTZXJ2aWNlLlVTRVJfTE9HT1VUX0VWRU5UX05BTUUsXG4gICAgICAgIGRhdGFcbiAgICAgIH0sXG4gICAgICBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckxvZ291dEV2ZW50XG4gICAgKTtcblxuICAgIGlmIChjbGVhclVzZXIpIHtcbiAgICAgIHRoaXMuc2V0VXNlcih1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZW5kVXNlclByb3BlcnRpZXNFdmVudCh1c2VyOiBEYnhBbmFseXRpY3NVc2VyLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KFxuICAgICAge1xuICAgICAgICBuYW1lOiBEYnhBbmFseXRpY3NTZXJ2aWNlLlVTRVJfUFJPUEVSVElFU19FVkVOVF9OQU1FLFxuICAgICAgICBkYXRhXG4gICAgICB9LFxuICAgICAgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlVzZXJQcm9wZXJ0aWVzRXZlbnQsXG4gICAgICB1c2VyXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kRXZlbnREYXRhKG5hbWU6IERieEFuYWx5dGljc0V2ZW50TmFtZSwgZGF0YT86IERieEFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLnNlbmRFdmVudCh7XG4gICAgICBuYW1lLFxuICAgICAgZGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNlbmRFdmVudFR5cGUoZXZlbnRUeXBlOiBEYnhBbmFseXRpY3NFdmVudE5hbWUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGV2ZW50VHlwZVxuICAgICAgfSxcbiAgICAgIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5FdmVudFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2VuZEV2ZW50KGV2ZW50OiBEYnhBbmFseXRpY3NFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudChldmVudCwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLkV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kUGFnZVZpZXcocGFnZT86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogcGFnZVxuICAgICAgfSxcbiAgICAgIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5QYWdlVmlld1xuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VuZE5leHRFdmVudChldmVudDogRGJ4QW5hbHl0aWNzRXZlbnQgPSB7fSwgdHlwZTogRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLCB1c2VyT3ZlcnJpZGU/OiBEYnhBbmFseXRpY3NVc2VyKTogdm9pZCB7XG4gICAgdGhpcy51c2VyJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoYW5hbHl0aWNzVXNlcikgPT4ge1xuICAgICAgY29uc3QgdXNlcjogTWF5YmU8RGJ4QW5hbHl0aWNzVXNlcj4gPSB1c2VyT3ZlcnJpZGUgIT0gbnVsbCA/IHVzZXJPdmVycmlkZSA6IGFuYWx5dGljc1VzZXI7XG4gICAgICBjb25zdCBhbmFseXRpY3NFdmVudDogRGJ4VXNlckFuYWx5dGljc0V2ZW50ID0geyAuLi5ldmVudCwgdXNlciB9O1xuICAgICAgdGhpcy5uZXh0RXZlbnQoYW5hbHl0aWNzRXZlbnQsIHR5cGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5leHRFdmVudChldmVudDogRGJ4VXNlckFuYWx5dGljc0V2ZW50LCB0eXBlOiBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUpOiB2b2lkIHtcbiAgICBjb25zdCB3cmFwcGVyID0gbmV3IERieEFuYWx5dGljc1N0cmVhbUV2ZW50QW5hbHl0aWNzRXZlbnRXcmFwcGVyKGV2ZW50LCB0eXBlKTtcbiAgICB0aGlzLl9zdWJqZWN0Lm5leHQod3JhcHBlcik7XG4gIH1cblxuICAvLyBNQVJLOiBJbnRlcm5hbFxuICBwcml2YXRlIF9pbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb25maWcuaXNQcm9kdWN0aW9uKSB7XG4gICAgICAvLyBJbml0aWFsaXplIGxpc3RlbmVycy5cbiAgICAgIHRoaXMuX2NvbmZpZy5saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgICAgbGlzdGVuZXIubGlzdGVuVG9TZXJ2aWNlKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignQW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzIG5vdCBpbiBwcm9kdWN0aW9uIG1vZGUuIEFsbCBhbmFseXRpY3MgZXZlbnRzIGFyZSBpZ25vcmVkLicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25maWcubG9nRXZlbnRzIHx8ICF0aGlzLl9jb25maWcuaXNQcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmxvZygnQW5hbHl0aWNzU2VydmljZTogTG9nIGFuYWx5dGljcyBldmVudHMgZW5hYmxlZC4nKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IHN1YnNjcmlwdGlvblxuICAgICAgdGhpcy5fbG9nZ2VyU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBBbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3MgRXZlbnQgLSAke0RieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZVt4LnR5cGVdfSB8IFVzZXI6ICR7eC51c2VySWR9IHwgRGF0YTogJHtKU09OLnN0cmluZ2lmeSh4LmV2ZW50KX0uYCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl91c2VyU291cmNlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudXNlciQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2VuZE5leHRFdmVudCh7fSwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlVzZXJDaGFuZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdXNlclNvdXJjZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fbG9nZ2VyU3ViLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9saWIvYW5hbHl0aWNzL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBZ0IsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkksT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUEyQiwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFGLE9BQU8sRUFBc0IsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXhFLE1BQU0sT0FBZ0IsK0JBQStCO0NBUXBEO0FBRUQsTUFBTSxPQUFnQiw4QkFBOEI7Q0FFbkQ7QUFFRCxNQUFNLE9BQWdCLHNCQUFzQjtDQUUzQztBQUVELE1BQU0sT0FBZ0IsMkJBQTJCO0NBRWhEO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLG1DQUFtQztJQUF6RDtRQUNVLFNBQUksR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDOUIsZUFBVSxHQUFHLElBQUksZUFBZSxDQUE2QixTQUFTLENBQUMsQ0FBQztRQUV6RSxlQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUscUJBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMs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LENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzdKLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLDJCQUEyQixDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQTVMVSxtQkFBbUIsK0RBc0JxRCxzQkFBc0I7bUhBdEI5RixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQXVCdUQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIG9mLCBTdWJzY3JpcHRpb24sIGZpcnN0LCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uT2JqZWN0LCBmaWx0ZXJNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4QW5hbHl0aWNzRXZlbnQsIERieEFuYWx5dGljc0V2ZW50RGF0YSwgRGJ4QW5hbHl0aWNzRXZlbnROYW1lLCBEYnhBbmFseXRpY3NVc2VyLCBOZXdVc2VyQW5hbHl0aWNzRXZlbnREYXRhLCBEYnhVc2VyQW5hbHl0aWNzRXZlbnQgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBEYnhBbmFseXRpY3NTdHJlYW1FdmVudCwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlIH0gZnJvbSAnLi9hbmFseXRpY3Muc3RyZWFtJztcbmltcG9ydCB7IE1heWJlLCBEZXN0cm95YWJsZSwgc2FmZUNvbXBhcmVFcXVhbGl0eSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QW5hbHl0aWNzRXZlbnRFbWl0dGVyU2VydmljZSB7XG4gIGFic3RyYWN0IHNlbmROZXdVc2VyRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YTogTmV3VXNlckFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRVc2VyTG9naW5FdmVudCh1c2VyOiBEYnhBbmFseXRpY3NVc2VyLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFVzZXJMb2dvdXRFdmVudChkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZFVzZXJQcm9wZXJ0aWVzRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YT86IERieEFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRFdmVudERhdGEobmFtZTogRGJ4QW5hbHl0aWNzRXZlbnROYW1lLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VuZEV2ZW50KGV2ZW50OiBEYnhBbmFseXRpY3NFdmVudCk6IHZvaWQ7XG4gIGFic3RyYWN0IHNlbmRQYWdlVmlldyhwYWdlPzogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEFuYWx5dGljc0V2ZW50U3RyZWFtU2VydmljZSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGV2ZW50cyQ6IE9ic2VydmFibGU8RGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQ+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QW5hbHl0aWNzVXNlclNvdXJjZSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGFuYWx5dGljc1VzZXIkOiBPYnNlcnZhYmxlPE1heWJlPERieEFuYWx5dGljc1VzZXI+Pjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lciB7XG4gIHB1YmxpYyBhYnN0cmFjdCBsaXN0ZW5Ub1NlcnZpY2Uoc2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSk6IHZvaWQ7XG59XG5cbi8qKlxuICogQWJzdHJhY3QgQW5hbHl0aWNzU2VydmljZUxpc3RlbmVyIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIgaW1wbGVtZW50cyBEYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIsIERlc3Ryb3lhYmxlIHtcbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcm90ZWN0ZWQgX2FuYWx5dGljcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RGJ4QW5hbHl0aWNzU2VydmljZT4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgYW5hbHl0aWNzJCA9IHRoaXMuX2FuYWx5dGljcy5waXBlKGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgYW5hbHl0aWNzRXZlbnRzJCA9IHRoaXMuYW5hbHl0aWNzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4geC5ldmVudHMkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8vIE1BUks6IEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lclxuICBsaXN0ZW5Ub1NlcnZpY2Uoc2VydmljZTogRGJ4QW5hbHl0aWNzU2VydmljZSk6IHZvaWQge1xuICAgIHRoaXMuX2FuYWx5dGljcy5uZXh0KHNlcnZpY2UpO1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuX2luaXRpYWxpemVTZXJ2aWNlU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBpZiAoc3ViICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHN1YjtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2luaXRpYWxpemVTZXJ2aWNlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IGZhbHNlO1xuXG4gIC8vIE1BUks6IERlc3Ryb3lcbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmFseXRpY3MuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdWIuZGVzdHJveSgpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYnhBbmFseXRpY3NTZXJ2aWNlQ29uZmlndXJhdGlvbiB7XG4gIGxpc3RlbmVyczogRGJ4QW5hbHl0aWNzU2VydmljZUxpc3RlbmVyW10gPSBbXTtcbiAgaXNQcm9kdWN0aW9uPzogYm9vbGVhbjtcbiAgbG9nRXZlbnRzPzogYm9vbGVhbjtcbiAgdXNlclNvdXJjZT86IERieEFuYWx5dGljc1VzZXJTb3VyY2U7XG59XG5cbmV4cG9ydCBjbGFzcyBEYnhBbmFseXRpY3NTdHJlYW1FdmVudEFuYWx5dGljc0V2ZW50V3JhcHBlciBpbXBsZW1lbnRzIERieEFuYWx5dGljc1N0cmVhbUV2ZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGV2ZW50OiBEYnhVc2VyQW5hbHl0aWNzRXZlbnQsIHB1YmxpYyByZWFkb25seSB0eXBlOiBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUgPSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuRXZlbnQpIHt9XG5cbiAgcHVibGljIGdldCB1c2VyKCk6IE1heWJlPERieEFuYWx5dGljc1VzZXI+IHtcbiAgICByZXR1cm4gdGhpcy5ldmVudC51c2VyO1xuICB9XG5cbiAgcHVibGljIGdldCB1c2VySWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy51c2VyID8gdGhpcy51c2VyLnVzZXIgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQcmltYXJ5IGFuYWx5dGljcyBzZXJ2aWNlIHRoYXQgZW1pdHMgYW5hbHl0aWNzIGV2ZW50cyB0aGF0IGNvbXBvbmVudHMgY2FuIGxpc3RlbiB0by5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieEFuYWx5dGljc1NlcnZpY2UgaW1wbGVtZW50cyBEYnhBbmFseXRpY3NFdmVudFN0cmVhbVNlcnZpY2UsIERieEFuYWx5dGljc0V2ZW50RW1pdHRlclNlcnZpY2UsIERlc3Ryb3lhYmxlIHtcbiAgLy8gVE9ETzogTWFrZSB0aGVzZSBjb25maWd1cmFibGUuXG5cbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfUkVHSVNUUkFUSU9OX0VWRU5UX05BTUUgPSAnVXNlciBSZWdpc3RlcmVkJztcbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfTE9HSU5fRVZFTlRfTkFNRSA9ICdVc2VyIExvZ2luJztcbiAgc3RhdGljIHJlYWRvbmx5IFVTRVJfTE9HT1VUX0VWRU5UX05BTUUgPSAnVXNlciBMb2dvdXQnO1xuICBzdGF0aWMgcmVhZG9ubHkgVVNFUl9QUk9QRVJUSUVTX0VWRU5UX05BTUUgPSAnVXNlciBQcm9wZXJ0aWVzJztcblxuICBwcml2YXRlIF9zdWJqZWN0ID0gbmV3IFN1YmplY3Q8RGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IGV2ZW50cyQgPSB0aGlzLl9zdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgX3VzZXJTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPERieEFuYWx5dGljc1VzZXJTb3VyY2U+Pih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IHVzZXIkID0gdGhpcy5fdXNlclNvdXJjZS5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4gKHggPyB4LmFuYWx5dGljc1VzZXIkIDogb2YodW5kZWZpbmVkKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHJpdmF0ZSBfdXNlclNvdXJjZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfdXNlcklkRXZlbnRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2xvZ2dlclN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb25maWc6IERieEFuYWx5dGljc1NlcnZpY2VDb25maWd1cmF0aW9uLCBAT3B0aW9uYWwoKSBASW5qZWN0KERieEFuYWx5dGljc1VzZXJTb3VyY2UpIHVzZXJTb3VyY2U/OiBNYXliZTxEYnhBbmFseXRpY3NVc2VyU291cmNlPikge1xuICAgIHRoaXMuX2luaXQoKTtcblxuICAgIHVzZXJTb3VyY2UgPSB1c2VyU291cmNlIHx8IF9jb25maWcudXNlclNvdXJjZTtcbiAgICBpZiAodXNlclNvdXJjZSkge1xuICAgICAgdGhpcy5zZXRVc2VyU291cmNlKHVzZXJTb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1BUks6IFNvdXJjZVxuICAvKipcbiAgICogU2V0cyB0aGUgdXNlciBkaXJlY3RseSwgb3ZlcnJpZGRpbmcgdGhlIFVzZXJTb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgc2V0VXNlcih1c2VyOiBNYXliZTxEYnhBbmFseXRpY3NVc2VyPik6IHZvaWQge1xuICAgIGxldCBzb3VyY2U6IE1heWJlPERieEFuYWx5dGljc1VzZXJTb3VyY2U+O1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHNvdXJjZSA9IHsgYW5hbHl0aWNzVXNlciQ6IG9mKHVzZXIpIH07XG4gICAgfVxuXG4gICAgdGhpcy5fdXNlclNvdXJjZS5uZXh0KHNvdXJjZSk7XG5cbiAgICBpZiAodGhpcy5fdXNlclNvdXJjZS52YWx1ZSkge1xuICAgICAgY29uc29sZS53YXJuKCdEYnhBbmFseXRpY3NTZXJ2aWNlIGhhcyBhIHVzZXJTb3VyY2UgdGhhdCBpcyBzZXQuIFNvdXJjZSBpcyBub3cgb3ZlcnJpZGRlbiBieSBzZXRVc2VyKCkgdmFsdWUuJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFVzZXJTb3VyY2Uoc291cmNlOiBEYnhBbmFseXRpY3NVc2VyU291cmNlKTogdm9pZCB7XG4gICAgdGhpcy5fdXNlclNvdXJjZS5uZXh0KHNvdXJjZSk7XG4gIH1cblxuICAvLyBNQVJLOiBBbmFseXRpY3NFdmVudEVtaXR0ZXJTZXJ2aWNlXG4gIC8qKlxuICAgKiBTZW5kcyBhbiBldmVudC5cbiAgICovXG4gIHB1YmxpYyBzZW5kTmV3VXNlckV2ZW50KHVzZXI6IERieEFuYWx5dGljc1VzZXIsIGRhdGE6IE5ld1VzZXJBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoXG4gICAgICB7XG4gICAgICAgIG5hbWU6IERieEFuYWx5dGljc1NlcnZpY2UuVVNFUl9SRUdJU1RSQVRJT05fRVZFTlRfTkFNRSxcbiAgICAgICAgZGF0YVxuICAgICAgfSxcbiAgICAgIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5OZXdVc2VyRXZlbnQsXG4gICAgICB1c2VyXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kVXNlckxvZ2luRXZlbnQodXNlcjogRGJ4QW5hbHl0aWNzVXNlciwgZGF0YT86IERieEFuYWx5dGljc0V2ZW50RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogRGJ4QW5hbHl0aWNzU2VydmljZS5VU0VSX0xPR0lOX0VWRU5UX05BTUUsXG4gICAgICAgIGRhdGFcbiAgICAgIH0sXG4gICAgICBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckxvZ2luRXZlbnQsXG4gICAgICB1c2VyXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kVXNlckxvZ291dEV2ZW50KGRhdGE/OiBEYnhBbmFseXRpY3NFdmVudERhdGEsIGNsZWFyVXNlciA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoXG4gICAgICB7XG4gICAgICAgIG5hbWU6IERieEFuYWx5dGljc1NlcnZpY2UuVVNFUl9MT0dPVVRfRVZFTlRfTkFNRSxcbiAgICAgICAgZGF0YVxuICAgICAgfSxcbiAgICAgIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5Vc2VyTG9nb3V0RXZlbnRcbiAgICApO1xuXG4gICAgaWYgKGNsZWFyVXNlcikge1xuICAgICAgdGhpcy5zZXRVc2VyKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbmRVc2VyUHJvcGVydGllc0V2ZW50KHVzZXI6IERieEFuYWx5dGljc1VzZXIsIGRhdGE/OiBEYnhBbmFseXRpY3NFdmVudERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmROZXh0RXZlbnQoXG4gICAgICB7XG4gICAgICAgIG5hbWU6IERieEFuYWx5dGljc1NlcnZpY2UuVVNFUl9QUk9QRVJUSUVTX0VWRU5UX05BTUUsXG4gICAgICAgIGRhdGFcbiAgICAgIH0sXG4gICAgICBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlclByb3BlcnRpZXNFdmVudCxcbiAgICAgIHVzZXJcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNlbmRFdmVudERhdGEobmFtZTogRGJ4QW5hbHl0aWNzRXZlbnROYW1lLCBkYXRhPzogRGJ4QW5hbHl0aWNzRXZlbnREYXRhKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VuZEV2ZW50KHtcbiAgICAgIG5hbWUsXG4gICAgICBkYXRhXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VuZEV2ZW50VHlwZShldmVudFR5cGU6IERieEFuYWx5dGljc0V2ZW50TmFtZSk6IHZvaWQge1xuICAgIHRoaXMuc2VuZE5leHRFdmVudChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogZXZlbnRUeXBlXG4gICAgICB9LFxuICAgICAgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLkV2ZW50XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZW5kRXZlbnQoZXZlbnQ6IERieEFuYWx5dGljc0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KGV2ZW50LCBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuRXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHNlbmRQYWdlVmlldyhwYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTmV4dEV2ZW50KFxuICAgICAge1xuICAgICAgICBuYW1lOiBwYWdlXG4gICAgICB9LFxuICAgICAgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlBhZ2VWaWV3XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyB0aGUgbmV4dCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSB1c2VyT3ZlcnJpZGUgVXNlcyB0aGlzIHVzZXIgaWYgc2V0IGFzIG51bGwgb3IgYW4gb3ZlcnJpZGUgdmFsdWUuIElmIHVuZGVmaW5lZCB0aGUgY3VycmVudCBhbmFseXRpY3MgdXNlciBpcyB1c2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNlbmROZXh0RXZlbnQoZXZlbnQ6IERieEFuYWx5dGljc0V2ZW50ID0ge30sIHR5cGU6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZSwgdXNlck92ZXJyaWRlPzogTWF5YmU8RGJ4QW5hbHl0aWNzVXNlcj4pOiB2b2lkIHtcbiAgICB0aGlzLnVzZXIkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChhbmFseXRpY3NVc2VyKSA9PiB7XG4gICAgICBjb25zdCB1c2VyOiBNYXliZTxEYnhBbmFseXRpY3NVc2VyPiA9IHVzZXJPdmVycmlkZSAhPT0gdW5kZWZpbmVkID8gdXNlck92ZXJyaWRlIDogYW5hbHl0aWNzVXNlcjtcbiAgICAgIGNvbnN0IGFuYWx5dGljc0V2ZW50OiBEYnhVc2VyQW5hbHl0aWNzRXZlbnQgPSB7IC4uLmV2ZW50LCB1c2VyIH07XG4gICAgICB0aGlzLm5leHRFdmVudChhbmFseXRpY3NFdmVudCwgdHlwZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmV4dEV2ZW50KGV2ZW50OiBEYnhVc2VyQW5hbHl0aWNzRXZlbnQsIHR5cGU6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZSk6IHZvaWQge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBuZXcgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRBbmFseXRpY3NFdmVudFdyYXBwZXIoZXZlbnQsIHR5cGUpO1xuICAgIHRoaXMuX3N1YmplY3QubmV4dCh3cmFwcGVyKTtcbiAgfVxuXG4gIC8vIE1BUks6IEludGVybmFsXG4gIHByaXZhdGUgX2luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5pc1Byb2R1Y3Rpb24pIHtcbiAgICAgIC8vIEluaXRpYWxpemUgbGlzdGVuZXJzLlxuICAgICAgdGhpcy5fY29uZmlnLmxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4ge1xuICAgICAgICBsaXN0ZW5lci5saXN0ZW5Ub1NlcnZpY2UodGhpcyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdBbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3Mgbm90IGluIHByb2R1Y3Rpb24gbW9kZS4gQWxsIGFuYWx5dGljcyBldmVudHMgYXJlIGlnbm9yZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5sb2dFdmVudHMgfHwgIXRoaXMuX2NvbmZpZy5pc1Byb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdBbmFseXRpY3NTZXJ2aWNlOiBMb2cgYW5hbHl0aWNzIGV2ZW50cyBlbmFibGVkLicpO1xuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgc3Vic2NyaXB0aW9uXG4gICAgICB0aGlzLl9sb2dnZXJTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coYEFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljcyBFdmVudCAtICR7RGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlW3gudHlwZV19IHwgVXNlcjogJHt4LnVzZXJJZH0gfCBEYXRhOiAke0pTT04uc3RyaW5naWZ5KHguZXZlbnQpfS5gKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3VzZXJTb3VyY2VTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy51c2VyJC5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICAgIHRoaXMuc2VuZE5leHRFdmVudCh7fSwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlVzZXJDaGFuZ2UsIHVzZXIgPz8gbnVsbCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl91c2VySWRFdmVudFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnVzZXIkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IHNhZmVDb21wYXJlRXF1YWxpdHkoYSwgYiwgKHgsIHkpID0+IHgudXNlciA9PT0geS51c2VyKSkpLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgdGhpcy5zZW5kTmV4dEV2ZW50KHt9LCBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlcklkQ2hhbmdlLCB1c2VyID8/IG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdXNlclNvdXJjZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3VzZXJTb3VyY2VTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX3VzZXJJZEV2ZW50U3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9sb2dnZXJTdWIuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -1,13 +1,22 @@
1
1
  export var DbxAnalyticsStreamEventType;
2
2
  (function (DbxAnalyticsStreamEventType) {
3
3
  DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["PageView"] = 0] = "PageView";
4
+ /**
5
+ * Emitted any time the user value changes.
6
+ *
7
+ * Can emit when the user goes from defined to undefined.
8
+ */
4
9
  DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserChange"] = 1] = "UserChange";
10
+ /**
11
+ * Emitted any time the user id changes.
12
+ */
13
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserIdChange"] = 2] = "UserIdChange";
5
14
  // User Events
6
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["NewUserEvent"] = 2] = "NewUserEvent";
7
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserLoginEvent"] = 3] = "UserLoginEvent";
8
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserLogoutEvent"] = 4] = "UserLogoutEvent";
9
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserPropertiesEvent"] = 5] = "UserPropertiesEvent";
15
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["NewUserEvent"] = 3] = "NewUserEvent";
16
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserLoginEvent"] = 4] = "UserLoginEvent";
17
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserLogoutEvent"] = 5] = "UserLogoutEvent";
18
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserPropertiesEvent"] = 6] = "UserPropertiesEvent";
10
19
  // Events
11
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["Event"] = 6] = "Event";
20
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["Event"] = 7] = "Event";
12
21
  })(DbxAnalyticsStreamEventType || (DbxAnalyticsStreamEventType = {}));
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1hbmFseXRpY3Mvc3JjL2xpYi9hbmFseXRpY3MvYW5hbHl0aWNzLnN0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQU4sSUFBWSwyQkFZWDtBQVpELFdBQVksMkJBQTJCO0lBQ3JDLHFGQUFRLENBQUE7SUFDUix5RkFBVSxDQUFBO0lBRVYsY0FBYztJQUNkLDZGQUFZLENBQUE7SUFDWixpR0FBYyxDQUFBO0lBQ2QsbUdBQWUsQ0FBQTtJQUNmLDJHQUFtQixDQUFBO0lBRW5CLFNBQVM7SUFDVCwrRUFBSyxDQUFBO0FBQ1AsQ0FBQyxFQVpXLDJCQUEyQixLQUEzQiwyQkFBMkIsUUFZdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4QW5hbHl0aWNzVXNlciwgRGJ4VXNlckFuYWx5dGljc0V2ZW50LCBEYnhBbmFseXRpY3NVc2VySWQgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5cbmV4cG9ydCBlbnVtIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZSB7XG4gIFBhZ2VWaWV3LFxuICBVc2VyQ2hhbmdlLFxuXG4gIC8vIFVzZXIgRXZlbnRzXG4gIE5ld1VzZXJFdmVudCxcbiAgVXNlckxvZ2luRXZlbnQsXG4gIFVzZXJMb2dvdXRFdmVudCxcbiAgVXNlclByb3BlcnRpZXNFdmVudCxcblxuICAvLyBFdmVudHNcbiAgRXZlbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudCB7XG4gIHJlYWRvbmx5IHR5cGU6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZTtcbiAgcmVhZG9ubHkgdXNlcj86IE1heWJlPERieEFuYWx5dGljc1VzZXI+O1xuICByZWFkb25seSBldmVudD86IERieFVzZXJBbmFseXRpY3NFdmVudDtcbiAgcmVhZG9ubHkgdXNlcklkPzogRGJ4QW5hbHl0aWNzVXNlcklkO1xufVxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1hbmFseXRpY3Mvc3JjL2xpYi9hbmFseXRpY3MvYW5hbHl0aWNzLnN0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQU4sSUFBWSwyQkFxQlg7QUFyQkQsV0FBWSwyQkFBMkI7SUFDckMscUZBQVEsQ0FBQTtJQUNSOzs7O09BSUc7SUFDSCx5RkFBVSxDQUFBO0lBQ1Y7O09BRUc7SUFDSCw2RkFBWSxDQUFBO0lBRVosY0FBYztJQUNkLDZGQUFZLENBQUE7SUFDWixpR0FBYyxDQUFBO0lBQ2QsbUdBQWUsQ0FBQTtJQUNmLDJHQUFtQixDQUFBO0lBRW5CLFNBQVM7SUFDVCwrRUFBSyxDQUFBO0FBQ1AsQ0FBQyxFQXJCVywyQkFBMkIsS0FBM0IsMkJBQTJCLFFBcUJ0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhBbmFseXRpY3NVc2VyLCBEYnhVc2VyQW5hbHl0aWNzRXZlbnQsIERieEFuYWx5dGljc1VzZXJJZCB9IGZyb20gJy4vYW5hbHl0aWNzJztcblxuZXhwb3J0IGVudW0gRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlIHtcbiAgUGFnZVZpZXcsXG4gIC8qKlxuICAgKiBFbWl0dGVkIGFueSB0aW1lIHRoZSB1c2VyIHZhbHVlIGNoYW5nZXMuXG4gICAqXG4gICAqIENhbiBlbWl0IHdoZW4gdGhlIHVzZXIgZ29lcyBmcm9tIGRlZmluZWQgdG8gdW5kZWZpbmVkLlxuICAgKi9cbiAgVXNlckNoYW5nZSxcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYW55IHRpbWUgdGhlIHVzZXIgaWQgY2hhbmdlcy5cbiAgICovXG4gIFVzZXJJZENoYW5nZSxcblxuICAvLyBVc2VyIEV2ZW50c1xuICBOZXdVc2VyRXZlbnQsXG4gIFVzZXJMb2dpbkV2ZW50LFxuICBVc2VyTG9nb3V0RXZlbnQsXG4gIFVzZXJQcm9wZXJ0aWVzRXZlbnQsXG5cbiAgLy8gRXZlbnRzXG4gIEV2ZW50XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQge1xuICByZWFkb25seSB0eXBlOiBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGU7XG4gIHJlYWRvbmx5IHVzZXI/OiBNYXliZTxEYnhBbmFseXRpY3NVc2VyPjtcbiAgcmVhZG9ubHkgZXZlbnQ/OiBEYnhVc2VyQW5hbHl0aWNzRXZlbnQ7XG4gIHJlYWRvbmx5IHVzZXJJZD86IERieEFuYWx5dGljc1VzZXJJZDtcbn1cbiJdfQ==
@@ -34,6 +34,9 @@ export class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServ
34
34
  this.updateWithNewUserEvent(api, streamEvent);
35
35
  break;
36
36
  case DbxAnalyticsStreamEventType.UserLoginEvent:
37
+ this.changeUser(api, streamEvent.user);
38
+ this.updateWithEvent(api, streamEvent);
39
+ break;
37
40
  case DbxAnalyticsStreamEventType.Event:
38
41
  this.updateWithEvent(api, streamEvent);
39
42
  break;
@@ -72,7 +75,7 @@ export class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServ
72
75
  }
73
76
  }
74
77
  changeUser(api, user) {
75
- if (user) {
78
+ if (user?.user) {
76
79
  api.identify(user.user, {
77
80
  ...user.properties
78
81
  }, {}, () => {
@@ -91,4 +94,4 @@ export class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServ
91
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxAnalyticsSegmentServiceListener, decorators: [{
92
95
  type: Injectable
93
96
  }], ctorParameters: function () { return [{ type: i1.DbxAnalyticsSegmentApiService }]; } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC5saXN0ZW5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWFuYWx5dGljcy9zcmMvbGliL3Byb3ZpZGVycy9zZWdtZW50L3NlZ21lbnQubGlzdGVuZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLG1DQUFtQyxFQUEyQiwyQkFBMkIsRUFBb0IsTUFBTSxpQkFBaUIsQ0FBQztBQUM5SSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRWxFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLG1DQUFtQztJQUN6RixZQUFvQixXQUEwQztRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQURVLGdCQUFXLEdBQVgsV0FBVyxDQUErQjtRQUc1RCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7U0FDNUU7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMseUZBQXlGLENBQUMsQ0FBQztTQUN4RztJQUNILENBQUM7SUFFUyw4QkFBOEI7UUFDdEMsT0FBTyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBMEQsRUFBRSxFQUFFO1lBQ3JLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFN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QztrQkFEOUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBYnN0cmFjdERieEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lciwgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnQsIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZSwgRGJ4QW5hbHl0aWNzVXNlciB9IGZyb20gJy4uLy4uL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBEYnhBbmFseXRpY3NTZWdtZW50QXBpU2VydmljZSB9IGZyb20gJy4vc2VnbWVudC5zZXJ2aWNlJztcblxuLyoqXG4gKiBEYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIgYWRhcHRlciBmb3IgU2VnbWVudC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieEFuYWx5dGljc1NlZ21lbnRTZXJ2aWNlTGlzdGVuZXIgZXh0ZW5kcyBBYnN0cmFjdERieEFuYWx5dGljc1NlcnZpY2VMaXN0ZW5lciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlZ21lbnRBcGk6IERieEFuYWx5dGljc1NlZ21lbnRBcGlTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh0aGlzLl9zZWdtZW50QXBpLmNvbmZpZy5sb2dnaW5nKSB7XG4gICAgICBjb25zb2xlLmxvZygnU2VnbWVudEFuYWx5dGljc0xpc3RlbmVyU2VydmljZTogU2VnbWVudCBpcyBsb2dnaW5nIGV2ZW50cy4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3NlZ21lbnRBcGkuY29uZmlnLmFjdGl2ZSkge1xuICAgICAgY29uc29sZS5sb2coJ1NlZ21lbnRBbmFseXRpY3NMaXN0ZW5lclNlcnZpY2U6IFNlZ21lbnQgaXMgZGlzYWJsZWQgZnJvbSBzZW5kaW5nIGV2ZW50cyB0byB0aGUgc2VydmVyLicpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfaW5pdGlhbGl6ZVNlcnZpY2VTdWJzY3JpcHRpb24oKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3NlZ21lbnRBcGkuc2VydmljZSQsIHRoaXMuYW5hbHl0aWNzRXZlbnRzJF0pLnN1YnNjcmliZSgoW3NlZ21lbnQsIHN0cmVhbUV2ZW50XTogW1NlZ21lbnRBbmFseXRpY3MuQW5hbHl0aWNzSlMsIERieEFuYWx5dGljc1N0cmVhbUV2ZW50XSkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3NlZ21lbnRBcGkuY29uZmlnLmxvZ2dpbmcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1NlZ21lbnQgTGlzdGVuZXIgTG9nZ2luZyBFdmVudDogJywgc3RyZWFtRXZlbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fc2VnbWVudEFwaS5jb25maWcuYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RyZWFtRXZlbnQoc2VnbWVudCwgc3RyZWFtRXZlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVN0cmVhbUV2ZW50KGFwaTogU2VnbWVudEFuYWx5dGljcy5BbmFseXRpY3NKUywgc3RyZWFtRXZlbnQ6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50KTogdm9pZCB7XG4gICAgc3dpdGNoIChzdHJlYW1FdmVudC50eXBlKSB7XG4gICAgICBjYXNlIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5OZXdVc2VyRXZlbnQ6XG4gICAgICAgIHRoaXMudXBkYXRlV2l0aE5ld1VzZXJFdmVudChhcGksIHN0cmVhbUV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5Vc2VyTG9naW5FdmVudDpcbiAgICAgIGNhc2UgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLkV2ZW50OlxuICAgICAgICB0aGlzLnVwZGF0ZVdpdGhFdmVudChhcGksIHN0cmVhbUV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5Vc2VyTG9nb3V0RXZlbnQ6XG4gICAgICAgIHRoaXMuY2hhbmdlVXNlcihhcGksIHVuZGVmaW5lZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuUGFnZVZpZXc6XG4gICAgICAgIGFwaS5wYWdlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckNoYW5nZTpcbiAgICAgICAgdGhpcy5jaGFuZ2VVc2VyKGFwaSwgc3RyZWFtRXZlbnQudXNlcik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoTmV3VXNlckV2ZW50KGFwaTogU2VnbWVudEFuYWx5dGljcy5BbmFseXRpY3NKUywgc3RyZWFtRXZlbnQ6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VVc2VyKGFwaSwgc3RyZWFtRXZlbnQudXNlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aEV2ZW50KGFwaTogU2VnbWVudEFuYWx5dGljcy5BbmFseXRpY3NKUywgc3RyZWFtRXZlbnQ6IERieEFuYWx5dGljc1N0cmVhbUV2ZW50LCBuYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnQgPSBzdHJlYW1FdmVudC5ldmVudDtcbiAgICBjb25zdCBldmVudE5hbWUgPSBuYW1lIHx8IGV2ZW50Py5uYW1lO1xuXG4gICAgaWYgKGV2ZW50TmFtZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBldmVudD8udmFsdWU7XG4gICAgICBjb25zdCBkYXRhID0gZXZlbnQ/LmRhdGE7XG5cbiAgICAgIGFwaS50cmFjayhcbiAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgLi4uKHZhbHVlICE9IG51bGxcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAuLi5kYXRhXG4gICAgICAgIH0sXG4gICAgICAgIHt9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3NlZ21lbnRBcGkuY29uZmlnLmxvZ2dpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZWdtZW50IHRyYWNrIHN1Y2Nlc3MuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlVXNlcihhcGk6IFNlZ21lbnRBbmFseXRpY3MuQW5hbHl0aWNzSlMsIHVzZXI6IE1heWJlPERieEFuYWx5dGljc1VzZXI+KTogdm9pZCB7XG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIGFwaS5pZGVudGlmeShcbiAgICAgICAgdXNlci51c2VyLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udXNlci5wcm9wZXJ0aWVzXG4gICAgICAgIH0sXG4gICAgICAgIHt9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3NlZ21lbnRBcGkuY29uZmlnLmxvZ2dpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZWdtZW50IGlkZW50aWZ5IHN1Y2Nlc3MuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVzZXQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC5saXN0ZW5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWFuYWx5dGljcy9zcmMvbGliL3Byb3ZpZGVycy9zZWdtZW50L3NlZ21lbnQubGlzdGVuZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLG1DQUFtQyxFQUEyQiwyQkFBMkIsRUFBb0IsTUFBTSxpQkFBaUIsQ0FBQztBQUM5SSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRWxFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLG1DQUFtQztJQUN6RixZQUFvQixXQUEwQztRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQURVLGdCQUFXLEdBQVgsV0FBVyxDQUErQjtRQUc1RCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7U0FDNUU7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMseUZBQXlGLENBQUMsQ0FBQztTQUN4RztJQUNILENBQUM7SUFFUyw4QkFBOEI7UUFDdEMsT0FBTyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBMEQsRUFBRSxFQUFFO1lBQ3JLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQzlEO1lBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDOUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxHQUFpQyxFQUFFLFdBQW9DO1FBQ2pHLFFBQVEsV0FBVyxDQUFDLElBQUksRUFBRTtZQUN4QixLQUFLLDJCQUEyQixDQUFDLFlBQVk7Z0JBQzNDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQzlDLE1BQU07WUFDUixLQUFLLDJCQUEyQixDQUFDLGNBQWM7Z0JBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixLQUFLLDJCQUEyQixDQUFDLEtBQUs7Z0JBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUN2QyxNQUFNO1lBQ1IsS0FBSywyQkFBMkIsQ0FBQyxlQUFlO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssMkJBQTJCLENBQUMsUUFBUTtnQkFDdkMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNYLE1BQU07WUFDUixLQUFLLDJCQUEyQixDQUFDLFVBQVU7Z0JBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkMsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVTLHNCQUFzQixDQUFDLEdBQWlDLEVBQUUsV0FBb0M7UUFDdEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFUyxlQUFlLENBQUMsR0FBaUMsRUFBRSxXQUFvQyxFQUFFLElBQWE7UUFDOUcsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksS0FBSyxFQUFFLElBQUksQ0FBQztRQUV0QyxJQUFJLFNBQVMsRUFBRTtZQUNiLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDM0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQztZQUV6QixHQUFHLENBQUMsS0FBSyxDQUNQLFNBQVMsRUFDVDtnQkFDRSxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUk7b0JBQ2YsQ0FBQyxDQUFDO3dCQUNFLEtBQUs7cUJBQ047b0JBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDZCxHQUFHLElBQUk7YUFDUixFQUNELEVBQUUsRUFDRixHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7b0JBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztpQkFDdkM7WUFDSCxDQUFDLENBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFpQyxFQUFFLElBQTZCO1FBQ2pGLElBQUksSUFBSSxFQUFFLElBQUksRUFBRTtZQUNkLEdBQUcsQ0FBQyxRQUFRLENBQ1YsSUFBSSxDQUFDLElBQUksRUFDVDtnQkFDRSxHQUFHLElBQUksQ0FBQyxVQUFVO2FBQ25CLEVBQ0QsRUFBRSxFQUNGLEdBQUcsRUFBRTtnQkFDSCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtvQkFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2lCQUMxQztZQUNILENBQUMsQ0FDRixDQUFDO1NBQ0g7YUFBTTtZQUNMLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQzsrR0FsR1Usa0NBQWtDO21IQUFsQyxrQ0FBa0M7OzRGQUFsQyxrQ0FBa0M7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIsIERieEFuYWx5dGljc1N0cmVhbUV2ZW50LCBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUsIERieEFuYWx5dGljc1VzZXIgfSBmcm9tICcuLi8uLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgRGJ4QW5hbHl0aWNzU2VnbWVudEFwaVNlcnZpY2UgfSBmcm9tICcuL3NlZ21lbnQuc2VydmljZSc7XG5cbi8qKlxuICogRGJ4QW5hbHl0aWNzU2VydmljZUxpc3RlbmVyIGFkYXB0ZXIgZm9yIFNlZ21lbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYnhBbmFseXRpY3NTZWdtZW50U2VydmljZUxpc3RlbmVyIGV4dGVuZHMgQWJzdHJhY3REYnhBbmFseXRpY3NTZXJ2aWNlTGlzdGVuZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZWdtZW50QXBpOiBEYnhBbmFseXRpY3NTZWdtZW50QXBpU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAodGhpcy5fc2VnbWVudEFwaS5jb25maWcubG9nZ2luZykge1xuICAgICAgY29uc29sZS5sb2coJ1NlZ21lbnRBbmFseXRpY3NMaXN0ZW5lclNlcnZpY2U6IFNlZ21lbnQgaXMgbG9nZ2luZyBldmVudHMuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9zZWdtZW50QXBpLmNvbmZpZy5hY3RpdmUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdTZWdtZW50QW5hbHl0aWNzTGlzdGVuZXJTZXJ2aWNlOiBTZWdtZW50IGlzIGRpc2FibGVkIGZyb20gc2VuZGluZyBldmVudHMgdG8gdGhlIHNlcnZlci4nKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2luaXRpYWxpemVTZXJ2aWNlU3Vic2NyaXB0aW9uKCkge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zZWdtZW50QXBpLnNlcnZpY2UkLCB0aGlzLmFuYWx5dGljc0V2ZW50cyRdKS5zdWJzY3JpYmUoKFtzZWdtZW50LCBzdHJlYW1FdmVudF06IFtTZWdtZW50QW5hbHl0aWNzLkFuYWx5dGljc0pTLCBEYnhBbmFseXRpY3NTdHJlYW1FdmVudF0pID0+IHtcbiAgICAgIGlmICh0aGlzLl9zZWdtZW50QXBpLmNvbmZpZy5sb2dnaW5nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTZWdtZW50IExpc3RlbmVyIExvZ2dpbmcgRXZlbnQ6ICcsIHN0cmVhbUV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3NlZ21lbnRBcGkuY29uZmlnLmFjdGl2ZSkge1xuICAgICAgICB0aGlzLmhhbmRsZVN0cmVhbUV2ZW50KHNlZ21lbnQsIHN0cmVhbUV2ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVTdHJlYW1FdmVudChhcGk6IFNlZ21lbnRBbmFseXRpY3MuQW5hbHl0aWNzSlMsIHN0cmVhbUV2ZW50OiBEYnhBbmFseXRpY3NTdHJlYW1FdmVudCk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RyZWFtRXZlbnQudHlwZSkge1xuICAgICAgY2FzZSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuTmV3VXNlckV2ZW50OlxuICAgICAgICB0aGlzLnVwZGF0ZVdpdGhOZXdVc2VyRXZlbnQoYXBpLCBzdHJlYW1FdmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckxvZ2luRXZlbnQ6XG4gICAgICAgIHRoaXMuY2hhbmdlVXNlcihhcGksIHN0cmVhbUV2ZW50LnVzZXIpO1xuICAgICAgICB0aGlzLnVwZGF0ZVdpdGhFdmVudChhcGksIHN0cmVhbUV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERieEFuYWx5dGljc1N0cmVhbUV2ZW50VHlwZS5FdmVudDpcbiAgICAgICAgdGhpcy51cGRhdGVXaXRoRXZlbnQoYXBpLCBzdHJlYW1FdmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYnhBbmFseXRpY3NTdHJlYW1FdmVudFR5cGUuVXNlckxvZ291dEV2ZW50OlxuICAgICAgICB0aGlzLmNoYW5nZVVzZXIoYXBpLCB1bmRlZmluZWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlBhZ2VWaWV3OlxuICAgICAgICBhcGkucGFnZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGJ4QW5hbHl0aWNzU3RyZWFtRXZlbnRUeXBlLlVzZXJDaGFuZ2U6XG4gICAgICAgIHRoaXMuY2hhbmdlVXNlcihhcGksIHN0cmVhbUV2ZW50LnVzZXIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aE5ld1VzZXJFdmVudChhcGk6IFNlZ21lbnRBbmFseXRpY3MuQW5hbHl0aWNzSlMsIHN0cmVhbUV2ZW50OiBEYnhBbmFseXRpY3NTdHJlYW1FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlVXNlcihhcGksIHN0cmVhbUV2ZW50LnVzZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGhFdmVudChhcGk6IFNlZ21lbnRBbmFseXRpY3MuQW5hbHl0aWNzSlMsIHN0cmVhbUV2ZW50OiBEYnhBbmFseXRpY3NTdHJlYW1FdmVudCwgbmFtZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50ID0gc3RyZWFtRXZlbnQuZXZlbnQ7XG4gICAgY29uc3QgZXZlbnROYW1lID0gbmFtZSB8fCBldmVudD8ubmFtZTtcblxuICAgIGlmIChldmVudE5hbWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQ/LnZhbHVlO1xuICAgICAgY29uc3QgZGF0YSA9IGV2ZW50Py5kYXRhO1xuXG4gICAgICBhcGkudHJhY2soXG4gICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIC4uLih2YWx1ZSAhPSBudWxsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgLi4uZGF0YVxuICAgICAgICB9LFxuICAgICAgICB7fSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9zZWdtZW50QXBpLmNvbmZpZy5sb2dnaW5nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnU2VnbWVudCB0cmFjayBzdWNjZXNzLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZVVzZXIoYXBpOiBTZWdtZW50QW5hbHl0aWNzLkFuYWx5dGljc0pTLCB1c2VyOiBNYXliZTxEYnhBbmFseXRpY3NVc2VyPik6IHZvaWQge1xuICAgIGlmICh1c2VyPy51c2VyKSB7XG4gICAgICBhcGkuaWRlbnRpZnkoXG4gICAgICAgIHVzZXIudXNlcixcbiAgICAgICAge1xuICAgICAgICAgIC4uLnVzZXIucHJvcGVydGllc1xuICAgICAgICB9LFxuICAgICAgICB7fSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9zZWdtZW50QXBpLmNvbmZpZy5sb2dnaW5nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnU2VnbWVudCBpZGVudGlmeSBzdWNjZXNzLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlc2V0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,23 +1,32 @@
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 { BehaviorSubject, shareReplay, switchMap, Subject, of, first, tap, merge, combineLatest } from 'rxjs';
4
+ import { BehaviorSubject, shareReplay, switchMap, Subject, of, first, distinctUntilChanged, tap, merge, combineLatest } from 'rxjs';
5
5
  import * as i1 from '@dereekb/dbx-core';
6
6
  import { AbstractSubscriptionDirective } from '@dereekb/dbx-core';
7
+ import { safeCompareEquality, poll } from '@dereekb/util';
7
8
  import { AbstractAsyncWindowLoadedService } from '@dereekb/browser';
8
- import { poll } from '@dereekb/util';
9
9
 
10
10
  var DbxAnalyticsStreamEventType;
11
11
  (function (DbxAnalyticsStreamEventType) {
12
12
  DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["PageView"] = 0] = "PageView";
13
+ /**
14
+ * Emitted any time the user value changes.
15
+ *
16
+ * Can emit when the user goes from defined to undefined.
17
+ */
13
18
  DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserChange"] = 1] = "UserChange";
19
+ /**
20
+ * Emitted any time the user id changes.
21
+ */
22
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserIdChange"] = 2] = "UserIdChange";
14
23
  // User Events
15
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["NewUserEvent"] = 2] = "NewUserEvent";
16
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserLoginEvent"] = 3] = "UserLoginEvent";
17
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserLogoutEvent"] = 4] = "UserLogoutEvent";
18
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserPropertiesEvent"] = 5] = "UserPropertiesEvent";
24
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["NewUserEvent"] = 3] = "NewUserEvent";
25
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserLoginEvent"] = 4] = "UserLoginEvent";
26
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserLogoutEvent"] = 5] = "UserLogoutEvent";
27
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["UserPropertiesEvent"] = 6] = "UserPropertiesEvent";
19
28
  // Events
20
- DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["Event"] = 6] = "Event";
29
+ DbxAnalyticsStreamEventType[DbxAnalyticsStreamEventType["Event"] = 7] = "Event";
21
30
  })(DbxAnalyticsStreamEventType || (DbxAnalyticsStreamEventType = {}));
22
31
 
23
32
  class DbxAnalyticsEventEmitterService {
@@ -85,6 +94,7 @@ class DbxAnalyticsService {
85
94
  this._userSource = new BehaviorSubject(undefined);
86
95
  this.user$ = this._userSource.pipe(switchMap((x) => (x ? x.analyticsUser$ : of(undefined))), shareReplay(1));
87
96
  this._userSourceSub = new SubscriptionObject();
97
+ this._userIdEventSub = new SubscriptionObject();
88
98
  this._loggerSub = new SubscriptionObject();
89
99
  this._init();
90
100
  userSource = userSource || _config.userSource;
@@ -94,7 +104,7 @@ class DbxAnalyticsService {
94
104
  }
95
105
  // MARK: Source
96
106
  /**
97
- * Sets the user directly.
107
+ * Sets the user directly, overridding the UserSource.
98
108
  */
99
109
  setUser(user) {
100
110
  let source;
@@ -102,6 +112,9 @@ class DbxAnalyticsService {
102
112
  source = { analyticsUser$: of(user) };
103
113
  }
104
114
  this._userSource.next(source);
115
+ if (this._userSource.value) {
116
+ console.warn('DbxAnalyticsService has a userSource that is set. Source is now overridden by setUser() value.');
117
+ }
105
118
  }
106
119
  setUserSource(source) {
107
120
  this._userSource.next(source);
@@ -156,9 +169,16 @@ class DbxAnalyticsService {
156
169
  name: page
157
170
  }, DbxAnalyticsStreamEventType.PageView);
158
171
  }
172
+ /**
173
+ * Sends the next event.
174
+ *
175
+ * @param event
176
+ * @param type
177
+ * @param userOverride Uses this user if set as null or an override value. If undefined the current analytics user is used.
178
+ */
159
179
  sendNextEvent(event = {}, type, userOverride) {
160
180
  this.user$.pipe(first()).subscribe((analyticsUser) => {
161
- const user = userOverride != null ? userOverride : analyticsUser;
181
+ const user = userOverride !== undefined ? userOverride : analyticsUser;
162
182
  const analyticsEvent = { ...event, user };
163
183
  this.nextEvent(analyticsEvent, type);
164
184
  });
@@ -185,13 +205,18 @@ class DbxAnalyticsService {
185
205
  console.log(`AnalyticsService: Analytics Event - ${DbxAnalyticsStreamEventType[x.type]} | User: ${x.userId} | Data: ${JSON.stringify(x.event)}.`);
186
206
  });
187
207
  }
188
- this._userSourceSub.subscription = this.user$.subscribe(() => {
189
- this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserChange);
208
+ this._userSourceSub.subscription = this.user$.subscribe((user) => {
209
+ this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserChange, user ?? null);
210
+ });
211
+ this._userIdEventSub.subscription = this.user$.pipe(distinctUntilChanged((a, b) => safeCompareEquality(a, b, (x, y) => x.user === y.user))).subscribe((user) => {
212
+ this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserIdChange, user ?? null);
190
213
  });
191
214
  }
192
215
  destroy() {
193
216
  this._subject.complete();
217
+ this._userSource.complete();
194
218
  this._userSourceSub.destroy();
219
+ this._userIdEventSub.destroy();
195
220
  this._loggerSub.destroy();
196
221
  }
197
222
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxAnalyticsService, deps: [{ token: DbxAnalyticsServiceConfiguration }, { token: DbxAnalyticsUserSource, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -389,6 +414,9 @@ class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceList
389
414
  this.updateWithNewUserEvent(api, streamEvent);
390
415
  break;
391
416
  case DbxAnalyticsStreamEventType.UserLoginEvent:
417
+ this.changeUser(api, streamEvent.user);
418
+ this.updateWithEvent(api, streamEvent);
419
+ break;
392
420
  case DbxAnalyticsStreamEventType.Event:
393
421
  this.updateWithEvent(api, streamEvent);
394
422
  break;
@@ -427,7 +455,7 @@ class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceList
427
455
  }
428
456
  }
429
457
  changeUser(api, user) {
430
- if (user) {
458
+ if (user?.user) {
431
459
  api.identify(user.user, {
432
460
  ...user.properties
433
461
  }, {}, () => {
@@ -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 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>) {\n this._init();\n\n userSource = userSource || _config.userSource;\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\n/**\n * DbxActionAnalyticsDirective config\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(\n this.source.error$.pipe(\n filterMaybe(),\n tap((error) => onError(this.analyticsService, error))\n )\n );\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":["i2.DbxAnalyticsService","i1.DbxAnalyticsSegmentApiService"],"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 /**\n * Emitted any time the user value changes.\n *\n * Can emit when the user goes from defined to undefined.\n */\n UserChange,\n /**\n * Emitted any time the user id changes.\n */\n UserIdChange,\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, distinctUntilChanged } 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, safeCompareEquality } 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\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 _userIdEventSub = new SubscriptionObject();\n private _loggerSub = new SubscriptionObject();\n\n constructor(private _config: DbxAnalyticsServiceConfiguration, @Optional() @Inject(DbxAnalyticsUserSource) userSource?: Maybe<DbxAnalyticsUserSource>) {\n this._init();\n\n userSource = userSource || _config.userSource;\n if (userSource) {\n this.setUserSource(userSource);\n }\n }\n\n // MARK: Source\n /**\n * Sets the user directly, overridding the UserSource.\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 if (this._userSource.value) {\n console.warn('DbxAnalyticsService has a userSource that is set. Source is now overridden by setUser() value.');\n }\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 /**\n * Sends the next event.\n *\n * @param event\n * @param type\n * @param userOverride Uses this user if set as null or an override value. If undefined the current analytics user is used.\n */\n protected sendNextEvent(event: DbxAnalyticsEvent = {}, type: DbxAnalyticsStreamEventType, userOverride?: Maybe<DbxAnalyticsUser>): void {\n this.user$.pipe(first()).subscribe((analyticsUser) => {\n const user: Maybe<DbxAnalyticsUser> = userOverride !== undefined ? 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((user) => {\n this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserChange, user ?? null);\n });\n\n this._userIdEventSub.subscription = this.user$.pipe(distinctUntilChanged((a, b) => safeCompareEquality(a, b, (x, y) => x.user === y.user))).subscribe((user) => {\n this.sendNextEvent({}, DbxAnalyticsStreamEventType.UserIdChange, user ?? null);\n });\n }\n\n destroy() {\n this._subject.complete();\n this._userSource.complete();\n this._userSourceSub.destroy();\n this._userIdEventSub.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\n/**\n * DbxActionAnalyticsDirective config\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(\n this.source.error$.pipe(\n filterMaybe(),\n tap((error) => onError(this.analyticsService, error))\n )\n );\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 this.changeUser(api, streamEvent.user);\n this.updateWithEvent(api, streamEvent);\n break;\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?.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":["i2.DbxAnalyticsService","i1.DbxAnalyticsSegmentApiService"],"mappings":"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"}
@@ -60,10 +60,11 @@ export declare class DbxAnalyticsService implements DbxAnalyticsEventStreamServi
60
60
  private _userSource;
61
61
  readonly user$: Observable<Maybe<DbxAnalyticsUser>>;
62
62
  private _userSourceSub;
63
+ private _userIdEventSub;
63
64
  private _loggerSub;
64
65
  constructor(_config: DbxAnalyticsServiceConfiguration, userSource?: Maybe<DbxAnalyticsUserSource>);
65
66
  /**
66
- * Sets the user directly.
67
+ * Sets the user directly, overridding the UserSource.
67
68
  */
68
69
  setUser(user: Maybe<DbxAnalyticsUser>): void;
69
70
  setUserSource(source: DbxAnalyticsUserSource): void;
@@ -78,7 +79,14 @@ export declare class DbxAnalyticsService implements DbxAnalyticsEventStreamServi
78
79
  sendEventType(eventType: DbxAnalyticsEventName): void;
79
80
  sendEvent(event: DbxAnalyticsEvent): void;
80
81
  sendPageView(page?: string): void;
81
- protected sendNextEvent(event: DbxAnalyticsEvent | undefined, type: DbxAnalyticsStreamEventType, userOverride?: DbxAnalyticsUser): void;
82
+ /**
83
+ * Sends the next event.
84
+ *
85
+ * @param event
86
+ * @param type
87
+ * @param userOverride Uses this user if set as null or an override value. If undefined the current analytics user is used.
88
+ */
89
+ protected sendNextEvent(event: DbxAnalyticsEvent | undefined, type: DbxAnalyticsStreamEventType, userOverride?: Maybe<DbxAnalyticsUser>): void;
82
90
  protected nextEvent(event: DbxUserAnalyticsEvent, type: DbxAnalyticsStreamEventType): void;
83
91
  private _init;
84
92
  destroy(): void;
@@ -2,12 +2,21 @@ import { Maybe } from '@dereekb/util';
2
2
  import { DbxAnalyticsUser, DbxUserAnalyticsEvent, DbxAnalyticsUserId } from './analytics';
3
3
  export declare enum DbxAnalyticsStreamEventType {
4
4
  PageView = 0,
5
+ /**
6
+ * Emitted any time the user value changes.
7
+ *
8
+ * Can emit when the user goes from defined to undefined.
9
+ */
5
10
  UserChange = 1,
6
- NewUserEvent = 2,
7
- UserLoginEvent = 3,
8
- UserLogoutEvent = 4,
9
- UserPropertiesEvent = 5,
10
- Event = 6
11
+ /**
12
+ * Emitted any time the user id changes.
13
+ */
14
+ UserIdChange = 2,
15
+ NewUserEvent = 3,
16
+ UserLoginEvent = 4,
17
+ UserLogoutEvent = 5,
18
+ UserPropertiesEvent = 6,
19
+ Event = 7
11
20
  }
12
21
  export interface DbxAnalyticsStreamEvent {
13
22
  readonly type: DbxAnalyticsStreamEventType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-analytics",
3
- "version": "10.1.26",
3
+ "version": "10.1.27",
4
4
  "peerDependencies": {
5
5
  "@dereekb/rxjs": "*",
6
6
  "rxjs": "^7.5.0",