From 0cbbcfc817d5a61c0bbaf34a732c782261bd9387 Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Thu, 17 Mar 2022 15:35:51 +0530 Subject: [PATCH 01/11] feat(telemetry): added rudderstack telemetry js library --- package-lock.json | 11 +++++++++++ package.json | 1 + projects/common/package.json | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 02699adbe..f5b1a3206 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,6 +50,7 @@ "lodash-es": "^4.17.21", "mixpanel-browser": "^2.45.0", "ngx-color": "7.0.0", + "rudder-sdk-js": "^2.3.0", "rxjs": "~6.6.7", "tslib": "^2.3.1", "uuid": "^8.3.2", @@ -26226,6 +26227,11 @@ "node": "6.* || >= 7.*" } }, + "node_modules/rudder-sdk-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/rudder-sdk-js/-/rudder-sdk-js-2.3.0.tgz", + "integrity": "sha512-xGMj4hthuI26N2JNl8NdJxXfTOnriZ3mlzv2ohwWP7XvZWBcQlaZP6R1MFUbTVVMNPi0lxcc3+VaxcdXdf4Rwg==" + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -50919,6 +50925,11 @@ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", "dev": true }, + "rudder-sdk-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/rudder-sdk-js/-/rudder-sdk-js-2.3.0.tgz", + "integrity": "sha512-xGMj4hthuI26N2JNl8NdJxXfTOnriZ3mlzv2ohwWP7XvZWBcQlaZP6R1MFUbTVVMNPi0lxcc3+VaxcdXdf4Rwg==" + }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", diff --git a/package.json b/package.json index 6bcf563ea..05258d746 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "lodash-es": "^4.17.21", "mixpanel-browser": "^2.45.0", "ngx-color": "7.0.0", + "rudder-sdk-js": "^2.3.0", "rxjs": "~6.6.7", "tslib": "^2.3.1", "uuid": "^8.3.2", diff --git a/projects/common/package.json b/projects/common/package.json index a05eaa6a0..687566c27 100644 --- a/projects/common/package.json +++ b/projects/common/package.json @@ -22,7 +22,8 @@ "d3-interpolate": "^2.0.1", "d3-color": "^1.4.0", "@fullstory/browser": "^1.4.9", - "mixpanel-browser": "^2.41.0" + "mixpanel-browser": "^2.41.0", + "rudder-sdk-js": "^2.3.0" }, "devDependencies": { "@hypertrace/test-utils": "^0.0.0" From ba53c48dbbd62ee4f7e55cdb5d7bad1979df4aca Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Thu, 17 Mar 2022 15:41:03 +0530 Subject: [PATCH 02/11] feat: added rudderstack provider --- projects/common/src/public-api.ts | 1 + .../rudderstack/rudderstack-provider.ts | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts diff --git a/projects/common/src/public-api.ts b/projects/common/src/public-api.ts index e935fbe1d..f108e5868 100644 --- a/projects/common/src/public-api.ts +++ b/projects/common/src/public-api.ts @@ -107,6 +107,7 @@ export * from './telemetry/telemetry'; export { FullStoryTelemetry } from './telemetry/providers/fullstory/full-story-provider'; export { FreshPaintTelemetry } from './telemetry/providers/freshpaint/freshpaint-provider'; export { MixPanelTelemetry } from './telemetry/providers/mixpanel/mixpanel-provider'; +export { RudderStackTelemetry } from './telemetry/providers/rudderstack/rudderstack-provider'; export { TrackDirective } from './telemetry/track/track.directive'; // Time diff --git a/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts b/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts new file mode 100644 index 000000000..6220f7980 --- /dev/null +++ b/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts @@ -0,0 +1,29 @@ +import { Injectable } from '@angular/core'; +import { Dictionary } from '../../../utilities/types/types'; + +import * as rudderanalytics from 'rudder-sdk-js'; +import { TelemetryProviderConfig, UserTelemetryProvider, UserTraits } from '../../telemetry'; + +@Injectable({ providedIn: 'root' }) +export class RudderStackTelemetry + implements UserTelemetryProvider { + public initialize(config: InitConfig): void { + rudderanalytics.load(config.orgId, config.orgTrackingURL!); + } + + public identify(userTraits: UserTraits): void { + rudderanalytics.identify(undefined, userTraits as rudderanalytics.apiObject); + } + + public trackEvent(name: string, eventData: Dictionary): void { + rudderanalytics.track(name, eventData as rudderanalytics.apiObject); + } + + public trackPage(name: string, eventData: Dictionary): void { + rudderanalytics.page(name, name, eventData as rudderanalytics.apiObject); + } + + public trackError(name: string, eventData: Dictionary): void { + this.trackEvent(name, eventData); + } +} From bb2e8d67d0dff6e818a731c90015ab32283d247e Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Thu, 17 Mar 2022 15:42:00 +0530 Subject: [PATCH 03/11] chore: added field to telemetry provider config --- projects/common/src/telemetry/telemetry.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/common/src/telemetry/telemetry.ts b/projects/common/src/telemetry/telemetry.ts index f355bdc6c..e2c2002f8 100644 --- a/projects/common/src/telemetry/telemetry.ts +++ b/projects/common/src/telemetry/telemetry.ts @@ -20,6 +20,7 @@ export interface UserTelemetryProvider { export interface TelemetryProviderConfig { orgId: string; + orgTrackingURL?: string; } export interface UserTraits extends Dictionary { From fab872caee2b672e6942c07d885dab5dce627fe7 Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Thu, 17 Mar 2022 16:09:39 +0530 Subject: [PATCH 04/11] chore: remove unused imports --- src/app/config.module.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/app/config.module.ts b/src/app/config.module.ts index 80aa98fbb..073e483d2 100644 --- a/src/app/config.module.ts +++ b/src/app/config.module.ts @@ -1,5 +1,11 @@ import { NgModule } from '@angular/core'; -import { ALTERNATE_COLOR_PALETTES, APP_TITLE, DEFAULT_COLOR_PALETTE, GLOBAL_HEADER_HEIGHT } from '@hypertrace/common'; +import { + ALTERNATE_COLOR_PALETTES, + APP_TITLE, + DEFAULT_COLOR_PALETTE, + GLOBAL_HEADER_HEIGHT, + UserTelemetryModule +} from '@hypertrace/common'; import { GRAPHQL_OPTIONS } from '@hypertrace/graphql-client'; import { ENTITY_METADATA, RED_COLOR_PALETTE } from '@hypertrace/observability'; import { environment } from '../environments/environment'; @@ -7,7 +13,7 @@ import { entityMetadata } from './entity-metadata'; import { FeatureResolverModule } from './shared/feature-resolver/feature-resolver.module'; @NgModule({ - imports: [FeatureResolverModule], + imports: [FeatureResolverModule, UserTelemetryModule.forRoot([])], providers: [ { provide: GRAPHQL_OPTIONS, From 48e7852be233a03ccddc69893bac535611408038 Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Thu, 17 Mar 2022 15:35:51 +0530 Subject: [PATCH 05/11] feat(telemetry): added rudderstack telemetry js library --- package-lock.json | 11 +++++++++++ package.json | 1 + projects/common/package.json | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 02699adbe..f5b1a3206 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,6 +50,7 @@ "lodash-es": "^4.17.21", "mixpanel-browser": "^2.45.0", "ngx-color": "7.0.0", + "rudder-sdk-js": "^2.3.0", "rxjs": "~6.6.7", "tslib": "^2.3.1", "uuid": "^8.3.2", @@ -26226,6 +26227,11 @@ "node": "6.* || >= 7.*" } }, + "node_modules/rudder-sdk-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/rudder-sdk-js/-/rudder-sdk-js-2.3.0.tgz", + "integrity": "sha512-xGMj4hthuI26N2JNl8NdJxXfTOnriZ3mlzv2ohwWP7XvZWBcQlaZP6R1MFUbTVVMNPi0lxcc3+VaxcdXdf4Rwg==" + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -50919,6 +50925,11 @@ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", "dev": true }, + "rudder-sdk-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/rudder-sdk-js/-/rudder-sdk-js-2.3.0.tgz", + "integrity": "sha512-xGMj4hthuI26N2JNl8NdJxXfTOnriZ3mlzv2ohwWP7XvZWBcQlaZP6R1MFUbTVVMNPi0lxcc3+VaxcdXdf4Rwg==" + }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", diff --git a/package.json b/package.json index 6bcf563ea..05258d746 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "lodash-es": "^4.17.21", "mixpanel-browser": "^2.45.0", "ngx-color": "7.0.0", + "rudder-sdk-js": "^2.3.0", "rxjs": "~6.6.7", "tslib": "^2.3.1", "uuid": "^8.3.2", diff --git a/projects/common/package.json b/projects/common/package.json index a05eaa6a0..687566c27 100644 --- a/projects/common/package.json +++ b/projects/common/package.json @@ -22,7 +22,8 @@ "d3-interpolate": "^2.0.1", "d3-color": "^1.4.0", "@fullstory/browser": "^1.4.9", - "mixpanel-browser": "^2.41.0" + "mixpanel-browser": "^2.41.0", + "rudder-sdk-js": "^2.3.0" }, "devDependencies": { "@hypertrace/test-utils": "^0.0.0" From 6496cb5406b2141edb120164146187d5828e6793 Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Thu, 17 Mar 2022 15:41:03 +0530 Subject: [PATCH 06/11] feat: added rudderstack provider --- projects/common/src/public-api.ts | 1 + .../rudderstack/rudderstack-provider.ts | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts diff --git a/projects/common/src/public-api.ts b/projects/common/src/public-api.ts index e935fbe1d..f108e5868 100644 --- a/projects/common/src/public-api.ts +++ b/projects/common/src/public-api.ts @@ -107,6 +107,7 @@ export * from './telemetry/telemetry'; export { FullStoryTelemetry } from './telemetry/providers/fullstory/full-story-provider'; export { FreshPaintTelemetry } from './telemetry/providers/freshpaint/freshpaint-provider'; export { MixPanelTelemetry } from './telemetry/providers/mixpanel/mixpanel-provider'; +export { RudderStackTelemetry } from './telemetry/providers/rudderstack/rudderstack-provider'; export { TrackDirective } from './telemetry/track/track.directive'; // Time diff --git a/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts b/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts new file mode 100644 index 000000000..6220f7980 --- /dev/null +++ b/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts @@ -0,0 +1,29 @@ +import { Injectable } from '@angular/core'; +import { Dictionary } from '../../../utilities/types/types'; + +import * as rudderanalytics from 'rudder-sdk-js'; +import { TelemetryProviderConfig, UserTelemetryProvider, UserTraits } from '../../telemetry'; + +@Injectable({ providedIn: 'root' }) +export class RudderStackTelemetry + implements UserTelemetryProvider { + public initialize(config: InitConfig): void { + rudderanalytics.load(config.orgId, config.orgTrackingURL!); + } + + public identify(userTraits: UserTraits): void { + rudderanalytics.identify(undefined, userTraits as rudderanalytics.apiObject); + } + + public trackEvent(name: string, eventData: Dictionary): void { + rudderanalytics.track(name, eventData as rudderanalytics.apiObject); + } + + public trackPage(name: string, eventData: Dictionary): void { + rudderanalytics.page(name, name, eventData as rudderanalytics.apiObject); + } + + public trackError(name: string, eventData: Dictionary): void { + this.trackEvent(name, eventData); + } +} From 6303d19b4f873a60aab1bb743b23adbaf18c3042 Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Thu, 17 Mar 2022 15:42:00 +0530 Subject: [PATCH 07/11] chore: added field to telemetry provider config --- projects/common/src/telemetry/telemetry.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/common/src/telemetry/telemetry.ts b/projects/common/src/telemetry/telemetry.ts index f355bdc6c..e2c2002f8 100644 --- a/projects/common/src/telemetry/telemetry.ts +++ b/projects/common/src/telemetry/telemetry.ts @@ -20,6 +20,7 @@ export interface UserTelemetryProvider { export interface TelemetryProviderConfig { orgId: string; + orgTrackingURL?: string; } export interface UserTraits extends Dictionary { From fdd5afdcbeb9bbeca08a701ee953812665cc172c Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Thu, 17 Mar 2022 16:09:39 +0530 Subject: [PATCH 08/11] chore: remove unused imports --- src/app/config.module.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/app/config.module.ts b/src/app/config.module.ts index 80aa98fbb..073e483d2 100644 --- a/src/app/config.module.ts +++ b/src/app/config.module.ts @@ -1,5 +1,11 @@ import { NgModule } from '@angular/core'; -import { ALTERNATE_COLOR_PALETTES, APP_TITLE, DEFAULT_COLOR_PALETTE, GLOBAL_HEADER_HEIGHT } from '@hypertrace/common'; +import { + ALTERNATE_COLOR_PALETTES, + APP_TITLE, + DEFAULT_COLOR_PALETTE, + GLOBAL_HEADER_HEIGHT, + UserTelemetryModule +} from '@hypertrace/common'; import { GRAPHQL_OPTIONS } from '@hypertrace/graphql-client'; import { ENTITY_METADATA, RED_COLOR_PALETTE } from '@hypertrace/observability'; import { environment } from '../environments/environment'; @@ -7,7 +13,7 @@ import { entityMetadata } from './entity-metadata'; import { FeatureResolverModule } from './shared/feature-resolver/feature-resolver.module'; @NgModule({ - imports: [FeatureResolverModule], + imports: [FeatureResolverModule, UserTelemetryModule.forRoot([])], providers: [ { provide: GRAPHQL_OPTIONS, From b3adaf73dc6707c7632699c9c491f194e691174a Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Mon, 4 Apr 2022 19:41:42 +0530 Subject: [PATCH 09/11] chore: updated rudderstack provider to have only named imports --- .../rudderstack/rudderstack-provider.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts b/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts index 6220f7980..554fbfdfb 100644 --- a/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts +++ b/projects/common/src/telemetry/providers/rudderstack/rudderstack-provider.ts @@ -1,26 +1,29 @@ import { Injectable } from '@angular/core'; import { Dictionary } from '../../../utilities/types/types'; -import * as rudderanalytics from 'rudder-sdk-js'; +import { apiObject, identify, load, page, track } from 'rudder-sdk-js'; import { TelemetryProviderConfig, UserTelemetryProvider, UserTraits } from '../../telemetry'; +export interface RudderStackConfig extends TelemetryProviderConfig { + writeKey: string; +} + @Injectable({ providedIn: 'root' }) -export class RudderStackTelemetry - implements UserTelemetryProvider { - public initialize(config: InitConfig): void { - rudderanalytics.load(config.orgId, config.orgTrackingURL!); +export class RudderStackTelemetry implements UserTelemetryProvider { + public initialize(config: RudderStackConfig): void { + load(config.writeKey, config.orgId, { configUrl: config.orgId }); } public identify(userTraits: UserTraits): void { - rudderanalytics.identify(undefined, userTraits as rudderanalytics.apiObject); + identify(undefined, userTraits as apiObject); } public trackEvent(name: string, eventData: Dictionary): void { - rudderanalytics.track(name, eventData as rudderanalytics.apiObject); + track(name, eventData as apiObject); } public trackPage(name: string, eventData: Dictionary): void { - rudderanalytics.page(name, name, eventData as rudderanalytics.apiObject); + page(name, name, eventData as apiObject); } public trackError(name: string, eventData: Dictionary): void { From 077361370545df71f570d2c4736f1ad209b46920 Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Mon, 4 Apr 2022 19:43:29 +0530 Subject: [PATCH 10/11] fix: removed additional field from telemetry config interface --- projects/common/src/telemetry/telemetry.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/common/src/telemetry/telemetry.ts b/projects/common/src/telemetry/telemetry.ts index e2c2002f8..f355bdc6c 100644 --- a/projects/common/src/telemetry/telemetry.ts +++ b/projects/common/src/telemetry/telemetry.ts @@ -20,7 +20,6 @@ export interface UserTelemetryProvider { export interface TelemetryProviderConfig { orgId: string; - orgTrackingURL?: string; } export interface UserTraits extends Dictionary { From 6c9966b4a2466ec24d0319b920813ed9e8d81b67 Mon Sep 17 00:00:00 2001 From: Jay Bhatt Date: Wed, 6 Apr 2022 18:14:49 +0530 Subject: [PATCH 11/11] chore: remove import from config module as it's already present in root module --- src/app/config.module.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/app/config.module.ts b/src/app/config.module.ts index 073e483d2..80aa98fbb 100644 --- a/src/app/config.module.ts +++ b/src/app/config.module.ts @@ -1,11 +1,5 @@ import { NgModule } from '@angular/core'; -import { - ALTERNATE_COLOR_PALETTES, - APP_TITLE, - DEFAULT_COLOR_PALETTE, - GLOBAL_HEADER_HEIGHT, - UserTelemetryModule -} from '@hypertrace/common'; +import { ALTERNATE_COLOR_PALETTES, APP_TITLE, DEFAULT_COLOR_PALETTE, GLOBAL_HEADER_HEIGHT } from '@hypertrace/common'; import { GRAPHQL_OPTIONS } from '@hypertrace/graphql-client'; import { ENTITY_METADATA, RED_COLOR_PALETTE } from '@hypertrace/observability'; import { environment } from '../environments/environment'; @@ -13,7 +7,7 @@ import { entityMetadata } from './entity-metadata'; import { FeatureResolverModule } from './shared/feature-resolver/feature-resolver.module'; @NgModule({ - imports: [FeatureResolverModule, UserTelemetryModule.forRoot([])], + imports: [FeatureResolverModule], providers: [ { provide: GRAPHQL_OPTIONS,