@dereekb/dbx-analytics 12.7.0 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/dereekb-dbx-analytics.mjs +25 -33
- package/fesm2022/dereekb-dbx-analytics.mjs.map +1 -1
- package/package.json +9 -11
- package/types/dereekb-dbx-analytics.d.ts +257 -0
- package/esm2022/dereekb-dbx-analytics.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/lib/action/analytics.action.directive.mjs +0 -54
- package/esm2022/lib/action/analytics.module.mjs +0 -19
- package/esm2022/lib/action/index.mjs +0 -3
- package/esm2022/lib/analytics/analytics.mjs +0 -2
- package/esm2022/lib/analytics/analytics.providers.mjs +0 -23
- package/esm2022/lib/analytics/analytics.service.mjs +0 -205
- package/esm2022/lib/analytics/analytics.stream.mjs +0 -22
- package/esm2022/lib/analytics/index.mjs +0 -5
- package/esm2022/lib/index.mjs +0 -4
- package/esm2022/lib/providers/index.mjs +0 -2
- package/esm2022/lib/providers/segment/index.mjs +0 -4
- package/esm2022/lib/providers/segment/segment.listener.service.mjs +0 -99
- package/esm2022/lib/providers/segment/segment.providers.mjs +0 -29
- package/esm2022/lib/providers/segment/segment.service.mjs +0 -64
- package/index.d.ts +0 -1
- package/lib/action/analytics.action.directive.d.ts +0 -26
- package/lib/action/analytics.module.d.ts +0 -10
- package/lib/action/index.d.ts +0 -2
- package/lib/analytics/analytics.d.ts +0 -25
- package/lib/analytics/analytics.providers.d.ts +0 -16
- package/lib/analytics/analytics.service.d.ts +0 -100
- package/lib/analytics/analytics.stream.d.ts +0 -26
- package/lib/analytics/index.d.ts +0 -4
- package/lib/index.d.ts +0 -3
- package/lib/providers/index.d.ts +0 -1
- package/lib/providers/segment/index.d.ts +0 -3
- package/lib/providers/segment/segment.listener.service.d.ts +0 -16
- package/lib/providers/segment/segment.providers.d.ts +0 -17
- package/lib/providers/segment/segment.service.d.ts +0 -27
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';
|
|
2
2
|
import { BehaviorSubject, shareReplay, switchMap, Subject, of, first, distinctUntilChanged, tap, merge, combineLatest } from 'rxjs';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { inject, Injectable,
|
|
4
|
+
import { inject, Injectable, input, Directive, NgModule, Injector, makeEnvironmentProviders, InjectionToken } from '@angular/core';
|
|
5
5
|
import { DbxActionContextStoreSourceInstance, cleanSubscriptionWithLockSet } from '@dereekb/dbx-core';
|
|
6
6
|
import { safeCompareEquality, poll } from '@dereekb/util';
|
|
7
7
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
@@ -92,8 +92,9 @@ class DbxAnalyticsService {
|
|
|
92
92
|
_userSourceSub = new SubscriptionObject();
|
|
93
93
|
_userIdEventSub = new SubscriptionObject();
|
|
94
94
|
_loggerSub = new SubscriptionObject();
|
|
95
|
-
constructor(
|
|
95
|
+
constructor() {
|
|
96
96
|
this._init();
|
|
97
|
+
let userSource = inject(DbxAnalyticsUserSource, { optional: true });
|
|
97
98
|
userSource = userSource || this._config.userSource;
|
|
98
99
|
if (userSource) {
|
|
99
100
|
this.setUserSource(userSource);
|
|
@@ -216,17 +217,12 @@ class DbxAnalyticsService {
|
|
|
216
217
|
this._userIdEventSub.destroy();
|
|
217
218
|
this._loggerSub.destroy();
|
|
218
219
|
}
|
|
219
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
220
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
220
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
221
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsService });
|
|
221
222
|
}
|
|
222
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsService, decorators: [{
|
|
223
224
|
type: Injectable
|
|
224
|
-
}], ctorParameters: () => [
|
|
225
|
-
type: Optional
|
|
226
|
-
}, {
|
|
227
|
-
type: Inject,
|
|
228
|
-
args: [DbxAnalyticsUserSource]
|
|
229
|
-
}] }] });
|
|
225
|
+
}], ctorParameters: () => [] });
|
|
230
226
|
|
|
231
227
|
/**
|
|
232
228
|
* Used to listen to an ActionContext and send analytical events based on action events.
|
|
@@ -234,7 +230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
234
230
|
class DbxActionAnalyticsDirective {
|
|
235
231
|
source = inject((DbxActionContextStoreSourceInstance), { host: true });
|
|
236
232
|
analyticsService = inject(DbxAnalyticsService);
|
|
237
|
-
config = input(undefined, { alias: 'dbxActionAnalytics' });
|
|
233
|
+
config = input(undefined, { ...(ngDevMode ? { debugName: "config" } : {}), alias: 'dbxActionAnalytics' });
|
|
238
234
|
config$ = toObservable(this.config).pipe(filterMaybe(), shareReplay(1));
|
|
239
235
|
constructor() {
|
|
240
236
|
cleanSubscriptionWithLockSet({
|
|
@@ -264,26 +260,26 @@ class DbxActionAnalyticsDirective {
|
|
|
264
260
|
.subscribe()
|
|
265
261
|
});
|
|
266
262
|
}
|
|
267
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
268
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
263
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxActionAnalyticsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
264
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: DbxActionAnalyticsDirective, isStandalone: true, selector: "[dbxActionAnalytics]", inputs: { config: { classPropertyName: "config", publicName: "dbxActionAnalytics", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
269
265
|
}
|
|
270
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
266
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxActionAnalyticsDirective, decorators: [{
|
|
271
267
|
type: Directive,
|
|
272
268
|
args: [{
|
|
273
269
|
selector: '[dbxActionAnalytics]',
|
|
274
270
|
standalone: true
|
|
275
271
|
}]
|
|
276
|
-
}], ctorParameters: () => [] });
|
|
272
|
+
}], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxActionAnalytics", required: false }] }] } });
|
|
277
273
|
|
|
278
274
|
/**
|
|
279
275
|
* @deprecated The exported DbxActionAnalyticsDirective is now a standalone component. Import that instead.
|
|
280
276
|
*/
|
|
281
277
|
class DbxAnalyticsActionModule {
|
|
282
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
283
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
284
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
278
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
279
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsActionModule, imports: [DbxActionAnalyticsDirective], exports: [DbxActionAnalyticsDirective] });
|
|
280
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsActionModule });
|
|
285
281
|
}
|
|
286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsActionModule, decorators: [{
|
|
287
283
|
type: NgModule,
|
|
288
284
|
args: [{
|
|
289
285
|
imports: [DbxActionAnalyticsDirective],
|
|
@@ -330,7 +326,8 @@ class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedService {
|
|
|
330
326
|
_config = inject(DbxAnalyticsSegmentApiServiceConfig);
|
|
331
327
|
static SEGMENT_API_WINDOW_KEY = 'analytics';
|
|
332
328
|
static SEGMENT_READY_KEY = 'SegmentReady';
|
|
333
|
-
constructor(
|
|
329
|
+
constructor() {
|
|
330
|
+
const preload = inject(PRELOAD_SEGMENT_TOKEN, { optional: true });
|
|
334
331
|
super(DbxAnalyticsSegmentApiService.SEGMENT_API_WINDOW_KEY, undefined, 'Segment', preload);
|
|
335
332
|
}
|
|
336
333
|
get config() {
|
|
@@ -360,17 +357,12 @@ class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedService {
|
|
|
360
357
|
}
|
|
361
358
|
});
|
|
362
359
|
}
|
|
363
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
364
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
360
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsSegmentApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
361
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsSegmentApiService });
|
|
365
362
|
}
|
|
366
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
363
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsSegmentApiService, decorators: [{
|
|
367
364
|
type: Injectable
|
|
368
|
-
}], ctorParameters: () => [
|
|
369
|
-
type: Optional
|
|
370
|
-
}, {
|
|
371
|
-
type: Inject,
|
|
372
|
-
args: [PRELOAD_SEGMENT_TOKEN]
|
|
373
|
-
}] }] });
|
|
365
|
+
}], ctorParameters: () => [] });
|
|
374
366
|
|
|
375
367
|
/**
|
|
376
368
|
* DbxAnalyticsServiceListener adapter for Segment.
|
|
@@ -456,10 +448,10 @@ class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceList
|
|
|
456
448
|
api.reset();
|
|
457
449
|
}
|
|
458
450
|
}
|
|
459
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
460
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
451
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsSegmentServiceListener, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
452
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsSegmentServiceListener, providedIn: 'root' });
|
|
461
453
|
}
|
|
462
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxAnalyticsSegmentServiceListener, decorators: [{
|
|
463
455
|
type: Injectable,
|
|
464
456
|
args: [{
|
|
465
457
|
providedIn: 'root'
|
|
@@ -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.module.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.providers.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.providers.ts","../../../../packages/dbx-analytics/src/dereekb-dbx-analytics.ts"],"sourcesContent":["import { type Maybe } from '@dereekb/util';\nimport { type DbxAnalyticsUser, type DbxUserAnalyticsEvent, type 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, inject } 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 readonly listeners: DbxAnalyticsServiceListener[] = [];\n readonly isProduction?: boolean;\n readonly logEvents?: boolean;\n readonly userSource?: DbxAnalyticsUserSource;\n}\n\nexport interface DbxAnalyticsStreamEventAnalyticsEventWrapper extends DbxAnalyticsStreamEvent {\n readonly event: DbxUserAnalyticsEvent;\n readonly type: DbxAnalyticsStreamEventType;\n readonly user: Maybe<DbxAnalyticsUser>;\n readonly userId: string | undefined;\n}\n\nexport function dbxAnalyticsStreamEventAnalyticsEventWrapper(event: DbxUserAnalyticsEvent, type: DbxAnalyticsStreamEventType = DbxAnalyticsStreamEventType.Event) {\n const { user } = event;\n const userId = user ? user.user : undefined;\n\n return {\n event,\n type,\n user,\n userId\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 private readonly _config = inject(DbxAnalyticsServiceConfiguration);\n\n // TODO: Make these configurable.\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(@Optional() @Inject(DbxAnalyticsUserSource) userSource?: Maybe<DbxAnalyticsUserSource>) {\n this._init();\n\n userSource = userSource || this._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 = 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, merge, Observable, of } from 'rxjs';\nimport { Directive, inject, input } from '@angular/core';\nimport { DbxActionContextStoreSourceInstance, cleanSubscriptionWithLockSet } from '@dereekb/dbx-core';\nimport { DbxAnalyticsService } from '../analytics/analytics.service';\nimport { Maybe, ReadableError } from '@dereekb/util';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n/**\n * DbxActionAnalyticsDirective config\n */\nexport interface DbxActionAnalyticsConfig<T = unknown, O = unknown> {\n readonly onTriggered?: (service: DbxAnalyticsService) => void;\n readonly onReady?: (service: DbxAnalyticsService, value: T) => void;\n readonly onSuccess?: (service: DbxAnalyticsService, result: Maybe<O>, value: T) => void;\n readonly 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 standalone: true\n})\nexport class DbxActionAnalyticsDirective<T, O> {\n readonly source = inject(DbxActionContextStoreSourceInstance<T, O>, { host: true });\n readonly analyticsService = inject(DbxAnalyticsService);\n\n readonly config = input<Maybe<DbxActionAnalyticsConfig<T, O>>>(undefined, { alias: 'dbxActionAnalytics' });\n readonly config$ = toObservable(this.config).pipe(filterMaybe(), shareReplay(1));\n\n constructor() {\n cleanSubscriptionWithLockSet({\n lockSet: this.source.lockSet,\n 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.successPair$.pipe(tap(({ result, value }) => onSuccess(this.analyticsService, result, value))));\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}\n","import { NgModule } from '@angular/core';\nimport { DbxActionAnalyticsDirective } from './analytics.action.directive';\n\n/**\n * @deprecated The exported DbxActionAnalyticsDirective is now a standalone component. Import that instead.\n */\n@NgModule({\n imports: [DbxActionAnalyticsDirective],\n exports: [DbxActionAnalyticsDirective]\n})\nexport class DbxAnalyticsActionModule {}\n","import { type EnvironmentProviders, Injector, type Provider, makeEnvironmentProviders } from '@angular/core';\nimport { DbxAnalyticsServiceConfiguration, DbxAnalyticsService } from './analytics.service';\n\nexport type DbxAnalyticsServiceConfigurationFactory = (injector: Injector) => DbxAnalyticsServiceConfiguration;\n\n/**\n * Configuration for provideDbxAnalyticsService()\n */\nexport interface ProvideDbxAnalyticsConfig {\n readonly dbxAnalyticsServiceConfigurationFactory: DbxAnalyticsServiceConfigurationFactory;\n}\n\n/**\n * Creates a EnvironmentProviders that provides a DbxAnalyticsService.\n *\n * @param config Configuration\n * @returns EnvironmentProviders\n */\nexport function provideDbxAnalyticsService(config: ProvideDbxAnalyticsConfig): EnvironmentProviders {\n const { dbxAnalyticsServiceConfigurationFactory } = config;\n\n const providers: Provider[] = [\n // configuration\n {\n provide: DbxAnalyticsServiceConfiguration,\n useFactory: dbxAnalyticsServiceConfigurationFactory,\n deps: [Injector]\n },\n // service\n DbxAnalyticsService\n ];\n\n return makeEnvironmentProviders(providers);\n}\n","import { Injectable, InjectionToken, Inject, inject, Optional } from '@angular/core';\nimport { AbstractAsyncWindowLoadedService } from '@dereekb/browser';\nimport { Maybe, poll } from '@dereekb/util';\n\nexport const PRELOAD_SEGMENT_TOKEN = new InjectionToken<string>('DbxAnalyticsSegmentApiServicePreload');\n\nexport class DbxAnalyticsSegmentApiServiceConfig {\n writeKey: string;\n logging = true;\n active = true;\n constructor(writeKey: string) {\n this.writeKey = writeKey;\n }\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 private readonly _config = inject(DbxAnalyticsSegmentApiServiceConfig);\n\n static readonly SEGMENT_API_WINDOW_KEY = 'analytics';\n static readonly SEGMENT_READY_KEY = 'SegmentReady';\n\n constructor(@Optional() @Inject(PRELOAD_SEGMENT_TOKEN) preload?: Maybe<boolean>) {\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, inject } from '@angular/core';\nimport { type 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({\n providedIn: 'root'\n})\nexport class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceListener {\n private readonly _segmentApi = inject(DbxAnalyticsSegmentApiService);\n\n constructor() {\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 { type EnvironmentProviders, Injector, makeEnvironmentProviders, type Provider } from '@angular/core';\nimport { DbxAnalyticsSegmentApiService, DbxAnalyticsSegmentApiServiceConfig, PRELOAD_SEGMENT_TOKEN } from './segment.service';\n\nexport type DbxAnalyticsSegmentApiServiceConfigFactory = (injector: Injector) => DbxAnalyticsSegmentApiServiceConfig;\n\n/**\n * Configuration for provideDbxAnalyticsSegmentApiService()\n */\nexport interface ProvideDbxAnalyticsSegmentModuleConfig {\n readonly preloadSegmentToken?: boolean;\n readonly dbxAnalyticsSegmentApiServiceConfigFactory: DbxAnalyticsSegmentApiServiceConfigFactory;\n}\n\n/**\n * Creates a EnvironmentProviders that provides a DbxAnalyticsSegmentApiService.\n *\n * @param config Configuration\n * @returns EnvironmentProviders\n */\nexport function provideDbxAnalyticsSegmentApiService(config: ProvideDbxAnalyticsSegmentModuleConfig): EnvironmentProviders {\n const { preloadSegmentToken, dbxAnalyticsSegmentApiServiceConfigFactory } = config;\n\n const providers: Provider[] = [\n // configuration\n {\n provide: DbxAnalyticsSegmentApiServiceConfig,\n useFactory: dbxAnalyticsSegmentApiServiceConfigFactory,\n deps: [Injector]\n },\n // service\n DbxAnalyticsSegmentApiService\n ];\n\n if (preloadSegmentToken) {\n providers.push({\n provide: PRELOAD_SEGMENT_TOKEN,\n useValue: preloadSegmentToken\n });\n }\n\n return makeEnvironmentProviders(providers);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dereekb-dbx-analytics.mjs","sources":["../../../../packages/dbx-analytics/src/lib/analytics/analytics.stream.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.service.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.action.directive.ts","../../../../packages/dbx-analytics/src/lib/action/analytics.module.ts","../../../../packages/dbx-analytics/src/lib/analytics/analytics.providers.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.providers.ts","../../../../packages/dbx-analytics/src/dereekb-dbx-analytics.ts"],"sourcesContent":["import { type Maybe } from '@dereekb/util';\nimport { type DbxAnalyticsUser, type DbxUserAnalyticsEvent, type 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 { Injectable, inject } 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 readonly listeners: DbxAnalyticsServiceListener[] = [];\n readonly isProduction?: boolean;\n readonly logEvents?: boolean;\n readonly userSource?: DbxAnalyticsUserSource;\n}\n\nexport interface DbxAnalyticsStreamEventAnalyticsEventWrapper extends DbxAnalyticsStreamEvent {\n readonly event: DbxUserAnalyticsEvent;\n readonly type: DbxAnalyticsStreamEventType;\n readonly user: Maybe<DbxAnalyticsUser>;\n readonly userId: string | undefined;\n}\n\nexport function dbxAnalyticsStreamEventAnalyticsEventWrapper(event: DbxUserAnalyticsEvent, type: DbxAnalyticsStreamEventType = DbxAnalyticsStreamEventType.Event) {\n const { user } = event;\n const userId = user ? user.user : undefined;\n\n return {\n event,\n type,\n user,\n userId\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 private readonly _config = inject(DbxAnalyticsServiceConfiguration);\n\n // TODO: Make these configurable.\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() {\n this._init();\n let userSource: Maybe<DbxAnalyticsUserSource> = inject(DbxAnalyticsUserSource, { optional: true });\n userSource = userSource || this._config.userSource;\n\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 = 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, merge, Observable, of } from 'rxjs';\nimport { Directive, inject, input } from '@angular/core';\nimport { DbxActionContextStoreSourceInstance, cleanSubscriptionWithLockSet } from '@dereekb/dbx-core';\nimport { DbxAnalyticsService } from '../analytics/analytics.service';\nimport { Maybe, ReadableError } from '@dereekb/util';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n/**\n * DbxActionAnalyticsDirective config\n */\nexport interface DbxActionAnalyticsConfig<T = unknown, O = unknown> {\n readonly onTriggered?: (service: DbxAnalyticsService) => void;\n readonly onReady?: (service: DbxAnalyticsService, value: T) => void;\n readonly onSuccess?: (service: DbxAnalyticsService, result: Maybe<O>, value: T) => void;\n readonly 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 standalone: true\n})\nexport class DbxActionAnalyticsDirective<T, O> {\n readonly source = inject(DbxActionContextStoreSourceInstance<T, O>, { host: true });\n readonly analyticsService = inject(DbxAnalyticsService);\n\n readonly config = input<Maybe<DbxActionAnalyticsConfig<T, O>>>(undefined, { alias: 'dbxActionAnalytics' });\n readonly config$ = toObservable(this.config).pipe(filterMaybe(), shareReplay(1));\n\n constructor() {\n cleanSubscriptionWithLockSet({\n lockSet: this.source.lockSet,\n 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.successPair$.pipe(tap(({ result, value }) => onSuccess(this.analyticsService, result, value))));\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}\n","import { NgModule } from '@angular/core';\nimport { DbxActionAnalyticsDirective } from './analytics.action.directive';\n\n/**\n * @deprecated The exported DbxActionAnalyticsDirective is now a standalone component. Import that instead.\n */\n@NgModule({\n imports: [DbxActionAnalyticsDirective],\n exports: [DbxActionAnalyticsDirective]\n})\nexport class DbxAnalyticsActionModule {}\n","import { type EnvironmentProviders, Injector, type Provider, makeEnvironmentProviders } from '@angular/core';\nimport { DbxAnalyticsServiceConfiguration, DbxAnalyticsService } from './analytics.service';\n\nexport type DbxAnalyticsServiceConfigurationFactory = (injector: Injector) => DbxAnalyticsServiceConfiguration;\n\n/**\n * Configuration for provideDbxAnalyticsService()\n */\nexport interface ProvideDbxAnalyticsConfig {\n readonly dbxAnalyticsServiceConfigurationFactory: DbxAnalyticsServiceConfigurationFactory;\n}\n\n/**\n * Creates a EnvironmentProviders that provides a DbxAnalyticsService.\n *\n * @param config Configuration\n * @returns EnvironmentProviders\n */\nexport function provideDbxAnalyticsService(config: ProvideDbxAnalyticsConfig): EnvironmentProviders {\n const { dbxAnalyticsServiceConfigurationFactory } = config;\n\n const providers: Provider[] = [\n // configuration\n {\n provide: DbxAnalyticsServiceConfiguration,\n useFactory: dbxAnalyticsServiceConfigurationFactory,\n deps: [Injector]\n },\n // service\n DbxAnalyticsService\n ];\n\n return makeEnvironmentProviders(providers);\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 writeKey: string;\n logging = true;\n active = true;\n constructor(writeKey: string) {\n this.writeKey = writeKey;\n }\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 private readonly _config = inject(DbxAnalyticsSegmentApiServiceConfig);\n\n static readonly SEGMENT_API_WINDOW_KEY = 'analytics';\n static readonly SEGMENT_READY_KEY = 'SegmentReady';\n\n constructor() {\n const preload = inject(PRELOAD_SEGMENT_TOKEN, { optional: 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, inject } from '@angular/core';\nimport { type 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({\n providedIn: 'root'\n})\nexport class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceListener {\n private readonly _segmentApi = inject(DbxAnalyticsSegmentApiService);\n\n constructor() {\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 { type EnvironmentProviders, Injector, makeEnvironmentProviders, type Provider } from '@angular/core';\nimport { DbxAnalyticsSegmentApiService, DbxAnalyticsSegmentApiServiceConfig, PRELOAD_SEGMENT_TOKEN } from './segment.service';\n\nexport type DbxAnalyticsSegmentApiServiceConfigFactory = (injector: Injector) => DbxAnalyticsSegmentApiServiceConfig;\n\n/**\n * Configuration for provideDbxAnalyticsSegmentApiService()\n */\nexport interface ProvideDbxAnalyticsSegmentModuleConfig {\n readonly preloadSegmentToken?: boolean;\n readonly dbxAnalyticsSegmentApiServiceConfigFactory: DbxAnalyticsSegmentApiServiceConfigFactory;\n}\n\n/**\n * Creates a EnvironmentProviders that provides a DbxAnalyticsSegmentApiService.\n *\n * @param config Configuration\n * @returns EnvironmentProviders\n */\nexport function provideDbxAnalyticsSegmentApiService(config: ProvideDbxAnalyticsSegmentModuleConfig): EnvironmentProviders {\n const { preloadSegmentToken, dbxAnalyticsSegmentApiServiceConfigFactory } = config;\n\n const providers: Provider[] = [\n // configuration\n {\n provide: DbxAnalyticsSegmentApiServiceConfig,\n useFactory: dbxAnalyticsSegmentApiServiceConfigFactory,\n deps: [Injector]\n },\n // service\n DbxAnalyticsSegmentApiService\n ];\n\n if (preloadSegmentToken) {\n providers.push({\n provide: PRELOAD_SEGMENT_TOKEN,\n useValue: preloadSegmentToken\n });\n }\n\n return makeEnvironmentProviders(providers);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/dbx-analytics",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "13.0.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/rxjs": "
|
|
6
|
-
"rxjs": "^7.
|
|
7
|
-
"@angular/core": "^
|
|
8
|
-
"@dereekb/dbx-core": "
|
|
9
|
-
"@dereekb/util": "
|
|
10
|
-
"@dereekb/browser": "
|
|
5
|
+
"@dereekb/rxjs": "13.0.0",
|
|
6
|
+
"rxjs": "^7.8.0",
|
|
7
|
+
"@angular/core": "^21.0.0",
|
|
8
|
+
"@dereekb/dbx-core": "13.0.0",
|
|
9
|
+
"@dereekb/util": "13.0.0",
|
|
10
|
+
"@dereekb/browser": "13.0.0"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"tslib": "^2.3.0"
|
|
14
14
|
},
|
|
15
15
|
"module": "fesm2022/dereekb-dbx-analytics.mjs",
|
|
16
|
-
"typings": "
|
|
16
|
+
"typings": "types/dereekb-dbx-analytics.d.ts",
|
|
17
17
|
"exports": {
|
|
18
18
|
"./package.json": {
|
|
19
19
|
"default": "./package.json"
|
|
20
20
|
},
|
|
21
21
|
".": {
|
|
22
|
-
"types": "./
|
|
23
|
-
"esm2022": "./esm2022/dereekb-dbx-analytics.mjs",
|
|
24
|
-
"esm": "./esm2022/dereekb-dbx-analytics.mjs",
|
|
22
|
+
"types": "./types/dereekb-dbx-analytics.d.ts",
|
|
25
23
|
"default": "./fesm2022/dereekb-dbx-analytics.mjs"
|
|
26
24
|
}
|
|
27
25
|
},
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injector, EnvironmentProviders, InjectionToken } from '@angular/core';
|
|
3
|
+
import * as rxjs from 'rxjs';
|
|
4
|
+
import { Observable, BehaviorSubject, Subscription } from 'rxjs';
|
|
5
|
+
import { DbxActionContextStoreSourceInstance } from '@dereekb/dbx-core';
|
|
6
|
+
import { PrimativeKey, Maybe, Destroyable, ReadableError } from '@dereekb/util';
|
|
7
|
+
import { AbstractAsyncWindowLoadedService } from '@dereekb/browser';
|
|
8
|
+
|
|
9
|
+
type DbxAnalyticsEventName = string;
|
|
10
|
+
type DbxAnalyticsUserId = string;
|
|
11
|
+
interface DbxAnalyticsUserProperties {
|
|
12
|
+
readonly [key: string]: PrimativeKey | boolean;
|
|
13
|
+
}
|
|
14
|
+
interface DbxAnalyticsUser {
|
|
15
|
+
readonly user: DbxAnalyticsUserId;
|
|
16
|
+
readonly properties?: DbxAnalyticsUserProperties;
|
|
17
|
+
}
|
|
18
|
+
interface DbxAnalyticsEventData {
|
|
19
|
+
readonly [key: string]: PrimativeKey | boolean;
|
|
20
|
+
}
|
|
21
|
+
interface DbxAnalyticsEvent {
|
|
22
|
+
readonly name?: DbxAnalyticsEventName;
|
|
23
|
+
readonly value?: number;
|
|
24
|
+
readonly data?: DbxAnalyticsEventData;
|
|
25
|
+
}
|
|
26
|
+
interface DbxUserAnalyticsEvent extends DbxAnalyticsEvent {
|
|
27
|
+
readonly user?: Maybe<DbxAnalyticsUser>;
|
|
28
|
+
}
|
|
29
|
+
type NewUserRegistrationMethod = 'facebook' | 'google' | 'email' | string;
|
|
30
|
+
interface NewUserAnalyticsEventData extends DbxAnalyticsEventData {
|
|
31
|
+
method: NewUserRegistrationMethod;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
declare enum DbxAnalyticsStreamEventType {
|
|
35
|
+
PageView = 0,
|
|
36
|
+
/**
|
|
37
|
+
* Emitted any time the user value changes.
|
|
38
|
+
*
|
|
39
|
+
* Can emit when the user goes from defined to undefined.
|
|
40
|
+
*/
|
|
41
|
+
UserChange = 1,
|
|
42
|
+
/**
|
|
43
|
+
* Emitted any time the user id changes.
|
|
44
|
+
*/
|
|
45
|
+
UserIdChange = 2,
|
|
46
|
+
NewUserEvent = 3,
|
|
47
|
+
UserLoginEvent = 4,
|
|
48
|
+
UserLogoutEvent = 5,
|
|
49
|
+
UserPropertiesEvent = 6,
|
|
50
|
+
Event = 7
|
|
51
|
+
}
|
|
52
|
+
interface DbxAnalyticsStreamEvent {
|
|
53
|
+
readonly type: DbxAnalyticsStreamEventType;
|
|
54
|
+
readonly user?: Maybe<DbxAnalyticsUser>;
|
|
55
|
+
readonly event?: DbxUserAnalyticsEvent;
|
|
56
|
+
readonly userId?: DbxAnalyticsUserId;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
declare abstract class DbxAnalyticsEventEmitterService {
|
|
60
|
+
abstract sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void;
|
|
61
|
+
abstract sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;
|
|
62
|
+
abstract sendUserLogoutEvent(data?: DbxAnalyticsEventData): void;
|
|
63
|
+
abstract sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;
|
|
64
|
+
abstract sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void;
|
|
65
|
+
abstract sendEvent(event: DbxAnalyticsEvent): void;
|
|
66
|
+
abstract sendPageView(page?: string): void;
|
|
67
|
+
}
|
|
68
|
+
declare abstract class DbxAnalyticsEventStreamService {
|
|
69
|
+
abstract readonly events$: Observable<DbxAnalyticsStreamEvent>;
|
|
70
|
+
}
|
|
71
|
+
declare abstract class DbxAnalyticsUserSource {
|
|
72
|
+
abstract readonly analyticsUser$: Observable<Maybe<DbxAnalyticsUser>>;
|
|
73
|
+
}
|
|
74
|
+
declare abstract class DbxAnalyticsServiceListener {
|
|
75
|
+
abstract listenToService(service: DbxAnalyticsService): void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Abstract AnalyticsServiceListener implementation.
|
|
79
|
+
*/
|
|
80
|
+
declare abstract class AbstractDbxAnalyticsServiceListener implements DbxAnalyticsServiceListener, Destroyable {
|
|
81
|
+
private _sub;
|
|
82
|
+
protected _analytics: BehaviorSubject<Maybe<DbxAnalyticsService>>;
|
|
83
|
+
readonly analytics$: Observable<DbxAnalyticsService>;
|
|
84
|
+
readonly analyticsEvents$: Observable<DbxAnalyticsStreamEvent>;
|
|
85
|
+
listenToService(service: DbxAnalyticsService): void;
|
|
86
|
+
protected abstract _initializeServiceSubscription(): Subscription | false;
|
|
87
|
+
destroy(): void;
|
|
88
|
+
}
|
|
89
|
+
declare abstract class DbxAnalyticsServiceConfiguration {
|
|
90
|
+
readonly listeners: DbxAnalyticsServiceListener[];
|
|
91
|
+
readonly isProduction?: boolean;
|
|
92
|
+
readonly logEvents?: boolean;
|
|
93
|
+
readonly userSource?: DbxAnalyticsUserSource;
|
|
94
|
+
}
|
|
95
|
+
interface DbxAnalyticsStreamEventAnalyticsEventWrapper extends DbxAnalyticsStreamEvent {
|
|
96
|
+
readonly event: DbxUserAnalyticsEvent;
|
|
97
|
+
readonly type: DbxAnalyticsStreamEventType;
|
|
98
|
+
readonly user: Maybe<DbxAnalyticsUser>;
|
|
99
|
+
readonly userId: string | undefined;
|
|
100
|
+
}
|
|
101
|
+
declare function dbxAnalyticsStreamEventAnalyticsEventWrapper(event: DbxUserAnalyticsEvent, type?: DbxAnalyticsStreamEventType): {
|
|
102
|
+
event: DbxUserAnalyticsEvent;
|
|
103
|
+
type: DbxAnalyticsStreamEventType;
|
|
104
|
+
user: Maybe<DbxAnalyticsUser>;
|
|
105
|
+
userId: string | undefined;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Primary analytics service that emits analytics events that components can listen to.
|
|
109
|
+
*/
|
|
110
|
+
declare class DbxAnalyticsService implements DbxAnalyticsEventStreamService, DbxAnalyticsEventEmitterService, Destroyable {
|
|
111
|
+
private readonly _config;
|
|
112
|
+
static readonly USER_REGISTRATION_EVENT_NAME = "User Registered";
|
|
113
|
+
static readonly USER_LOGIN_EVENT_NAME = "User Login";
|
|
114
|
+
static readonly USER_LOGOUT_EVENT_NAME = "User Logout";
|
|
115
|
+
static readonly USER_PROPERTIES_EVENT_NAME = "User Properties";
|
|
116
|
+
private _subject;
|
|
117
|
+
readonly events$: Observable<DbxAnalyticsStreamEvent>;
|
|
118
|
+
private _userSource;
|
|
119
|
+
readonly user$: Observable<Maybe<DbxAnalyticsUser>>;
|
|
120
|
+
private _userSourceSub;
|
|
121
|
+
private _userIdEventSub;
|
|
122
|
+
private _loggerSub;
|
|
123
|
+
constructor();
|
|
124
|
+
/**
|
|
125
|
+
* Sets the user directly, overridding the UserSource.
|
|
126
|
+
*/
|
|
127
|
+
setUser(user: Maybe<DbxAnalyticsUser>): void;
|
|
128
|
+
setUserSource(source: DbxAnalyticsUserSource): void;
|
|
129
|
+
/**
|
|
130
|
+
* Sends an event.
|
|
131
|
+
*/
|
|
132
|
+
sendNewUserEvent(user: DbxAnalyticsUser, data: NewUserAnalyticsEventData): void;
|
|
133
|
+
sendUserLoginEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;
|
|
134
|
+
sendUserLogoutEvent(data?: DbxAnalyticsEventData, clearUser?: boolean): void;
|
|
135
|
+
sendUserPropertiesEvent(user: DbxAnalyticsUser, data?: DbxAnalyticsEventData): void;
|
|
136
|
+
sendEventData(name: DbxAnalyticsEventName, data?: DbxAnalyticsEventData): void;
|
|
137
|
+
sendEventType(eventType: DbxAnalyticsEventName): void;
|
|
138
|
+
sendEvent(event: DbxAnalyticsEvent): void;
|
|
139
|
+
sendPageView(page?: string): void;
|
|
140
|
+
/**
|
|
141
|
+
* Sends the next event.
|
|
142
|
+
*
|
|
143
|
+
* @param event
|
|
144
|
+
* @param type
|
|
145
|
+
* @param userOverride Uses this user if set as null or an override value. If undefined the current analytics user is used.
|
|
146
|
+
*/
|
|
147
|
+
protected sendNextEvent(event: DbxAnalyticsEvent | undefined, type: DbxAnalyticsStreamEventType, userOverride?: Maybe<DbxAnalyticsUser>): void;
|
|
148
|
+
protected nextEvent(event: DbxUserAnalyticsEvent, type: DbxAnalyticsStreamEventType): void;
|
|
149
|
+
private _init;
|
|
150
|
+
destroy(): void;
|
|
151
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DbxAnalyticsService, never>;
|
|
152
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DbxAnalyticsService>;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* DbxActionAnalyticsDirective config
|
|
157
|
+
*/
|
|
158
|
+
interface DbxActionAnalyticsConfig<T = unknown, O = unknown> {
|
|
159
|
+
readonly onTriggered?: (service: DbxAnalyticsService) => void;
|
|
160
|
+
readonly onReady?: (service: DbxAnalyticsService, value: T) => void;
|
|
161
|
+
readonly onSuccess?: (service: DbxAnalyticsService, result: Maybe<O>, value: T) => void;
|
|
162
|
+
readonly onError?: (service: DbxAnalyticsService, error: Maybe<ReadableError>) => void;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Used to listen to an ActionContext and send analytical events based on action events.
|
|
166
|
+
*/
|
|
167
|
+
declare class DbxActionAnalyticsDirective<T, O> {
|
|
168
|
+
readonly source: DbxActionContextStoreSourceInstance<T, O>;
|
|
169
|
+
readonly analyticsService: DbxAnalyticsService;
|
|
170
|
+
readonly config: i0.InputSignal<Maybe<DbxActionAnalyticsConfig<T, O>>>;
|
|
171
|
+
readonly config$: Observable<DbxActionAnalyticsConfig<T, O>>;
|
|
172
|
+
constructor();
|
|
173
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DbxActionAnalyticsDirective<any, any>, never>;
|
|
174
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DbxActionAnalyticsDirective<any, any>, "[dbxActionAnalytics]", never, { "config": { "alias": "dbxActionAnalytics"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @deprecated The exported DbxActionAnalyticsDirective is now a standalone component. Import that instead.
|
|
179
|
+
*/
|
|
180
|
+
declare class DbxAnalyticsActionModule {
|
|
181
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DbxAnalyticsActionModule, never>;
|
|
182
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DbxAnalyticsActionModule, never, [typeof DbxActionAnalyticsDirective], [typeof DbxActionAnalyticsDirective]>;
|
|
183
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<DbxAnalyticsActionModule>;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
type DbxAnalyticsServiceConfigurationFactory = (injector: Injector) => DbxAnalyticsServiceConfiguration;
|
|
187
|
+
/**
|
|
188
|
+
* Configuration for provideDbxAnalyticsService()
|
|
189
|
+
*/
|
|
190
|
+
interface ProvideDbxAnalyticsConfig {
|
|
191
|
+
readonly dbxAnalyticsServiceConfigurationFactory: DbxAnalyticsServiceConfigurationFactory;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Creates a EnvironmentProviders that provides a DbxAnalyticsService.
|
|
195
|
+
*
|
|
196
|
+
* @param config Configuration
|
|
197
|
+
* @returns EnvironmentProviders
|
|
198
|
+
*/
|
|
199
|
+
declare function provideDbxAnalyticsService(config: ProvideDbxAnalyticsConfig): EnvironmentProviders;
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* DbxAnalyticsServiceListener adapter for Segment.
|
|
203
|
+
*/
|
|
204
|
+
declare class DbxAnalyticsSegmentServiceListener extends AbstractDbxAnalyticsServiceListener {
|
|
205
|
+
private readonly _segmentApi;
|
|
206
|
+
constructor();
|
|
207
|
+
protected _initializeServiceSubscription(): rxjs.Subscription;
|
|
208
|
+
protected handleStreamEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void;
|
|
209
|
+
protected updateWithNewUserEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent): void;
|
|
210
|
+
protected updateWithEvent(api: SegmentAnalytics.AnalyticsJS, streamEvent: DbxAnalyticsStreamEvent, name?: string): void;
|
|
211
|
+
private changeUser;
|
|
212
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DbxAnalyticsSegmentServiceListener, never>;
|
|
213
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DbxAnalyticsSegmentServiceListener>;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
declare const PRELOAD_SEGMENT_TOKEN: InjectionToken<string>;
|
|
217
|
+
declare class DbxAnalyticsSegmentApiServiceConfig {
|
|
218
|
+
writeKey: string;
|
|
219
|
+
logging: boolean;
|
|
220
|
+
active: boolean;
|
|
221
|
+
constructor(writeKey: string);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Segment API Service used for waiting/retrieving the segment API from window when initialized.
|
|
225
|
+
*
|
|
226
|
+
* This requires some setup in index.html.
|
|
227
|
+
*/
|
|
228
|
+
declare class DbxAnalyticsSegmentApiService extends AbstractAsyncWindowLoadedService<SegmentAnalytics.AnalyticsJS> {
|
|
229
|
+
private readonly _config;
|
|
230
|
+
static readonly SEGMENT_API_WINDOW_KEY = "analytics";
|
|
231
|
+
static readonly SEGMENT_READY_KEY = "SegmentReady";
|
|
232
|
+
constructor();
|
|
233
|
+
get config(): DbxAnalyticsSegmentApiServiceConfig;
|
|
234
|
+
protected _prepareCompleteLoadingService(): Promise<void>;
|
|
235
|
+
protected _initService(service: SegmentAnalytics.AnalyticsJS): Promise<SegmentAnalytics.AnalyticsJS>;
|
|
236
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DbxAnalyticsSegmentApiService, never>;
|
|
237
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DbxAnalyticsSegmentApiService>;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
type DbxAnalyticsSegmentApiServiceConfigFactory = (injector: Injector) => DbxAnalyticsSegmentApiServiceConfig;
|
|
241
|
+
/**
|
|
242
|
+
* Configuration for provideDbxAnalyticsSegmentApiService()
|
|
243
|
+
*/
|
|
244
|
+
interface ProvideDbxAnalyticsSegmentModuleConfig {
|
|
245
|
+
readonly preloadSegmentToken?: boolean;
|
|
246
|
+
readonly dbxAnalyticsSegmentApiServiceConfigFactory: DbxAnalyticsSegmentApiServiceConfigFactory;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Creates a EnvironmentProviders that provides a DbxAnalyticsSegmentApiService.
|
|
250
|
+
*
|
|
251
|
+
* @param config Configuration
|
|
252
|
+
* @returns EnvironmentProviders
|
|
253
|
+
*/
|
|
254
|
+
declare function provideDbxAnalyticsSegmentApiService(config: ProvideDbxAnalyticsSegmentModuleConfig): EnvironmentProviders;
|
|
255
|
+
|
|
256
|
+
export { AbstractDbxAnalyticsServiceListener, DbxActionAnalyticsDirective, DbxAnalyticsActionModule, DbxAnalyticsEventEmitterService, DbxAnalyticsEventStreamService, DbxAnalyticsSegmentApiService, DbxAnalyticsSegmentApiServiceConfig, DbxAnalyticsSegmentServiceListener, DbxAnalyticsService, DbxAnalyticsServiceConfiguration, DbxAnalyticsServiceListener, DbxAnalyticsStreamEventType, DbxAnalyticsUserSource, PRELOAD_SEGMENT_TOKEN, dbxAnalyticsStreamEventAnalyticsEventWrapper, provideDbxAnalyticsSegmentApiService, provideDbxAnalyticsService };
|
|
257
|
+
export type { DbxActionAnalyticsConfig, DbxAnalyticsEvent, DbxAnalyticsEventData, DbxAnalyticsEventName, DbxAnalyticsSegmentApiServiceConfigFactory, DbxAnalyticsServiceConfigurationFactory, DbxAnalyticsStreamEvent, DbxAnalyticsStreamEventAnalyticsEventWrapper, DbxAnalyticsUser, DbxAnalyticsUserId, DbxAnalyticsUserProperties, DbxUserAnalyticsEvent, NewUserAnalyticsEventData, NewUserRegistrationMethod, ProvideDbxAnalyticsConfig, ProvideDbxAnalyticsSegmentModuleConfig };
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyZWVrYi1kYngtYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWFuYWx5dGljcy9zcmMvZGVyZWVrYi1kYngtYW5hbHl0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
package/esm2022/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './lib';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtYW5hbHl0aWNzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliJztcbiJdfQ==
|