@deriv-com/analytics 1.4.13 → 1.5.0-beta

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,19 +1,21 @@
1
+ import type { Context } from '@growthbook/growthbook';
1
2
  import { Growthbook, GrowthbookConfigs } from './growthbook';
2
3
  import { RudderStack } from './rudderstack';
3
4
  import { TCoreAttributes, TEvents } from './types';
4
5
  type Options = {
5
6
  growthbookKey?: string;
7
+ growthbookOptions?: Partial<Context>;
6
8
  growthbookDecryptionKey?: string;
7
9
  rudderstackKey: string;
8
10
  };
9
11
  export declare function createAnalyticsInstance(options?: Options): {
10
- initialise: ({ growthbookKey, growthbookDecryptionKey, rudderstackKey }: Options) => void;
12
+ initialise: ({ growthbookKey, growthbookDecryptionKey, rudderstackKey, growthbookOptions }: Options) => void;
11
13
  setAttributes: ({ country, user_language, device_language, device_type, account_type, user_id, app_id, utm_source, utm_medium, utm_campaign, is_authorised, }: TCoreAttributes) => void;
12
14
  identifyEvent: () => void;
13
15
  getFeatureState: (id: string) => string | undefined;
14
16
  getFeatureValue: <K extends string | number, V extends GrowthbookConfigs[K]>(id: K, defaultValue: V) => import("@growthbook/growthbook").WidenPrimitives<V>;
15
17
  isFeatureOn: (key: string) => boolean;
16
- setUrl: (href: string) => void;
18
+ setUrl: (href: string) => Promise<void>;
17
19
  getId: () => string;
18
20
  trackEvent: <T extends keyof TEvents>(event: T, analytics_data: TEvents[T]) => void;
19
21
  getInstances: () => {
@@ -24,13 +26,13 @@ export declare function createAnalyticsInstance(options?: Options): {
24
26
  reset: () => void;
25
27
  };
26
28
  export declare const Analytics: {
27
- initialise: ({ growthbookKey, growthbookDecryptionKey, rudderstackKey }: Options) => void;
29
+ initialise: ({ growthbookKey, growthbookDecryptionKey, rudderstackKey, growthbookOptions }: Options) => void;
28
30
  setAttributes: ({ country, user_language, device_language, device_type, account_type, user_id, app_id, utm_source, utm_medium, utm_campaign, is_authorised, }: TCoreAttributes) => void;
29
31
  identifyEvent: () => void;
30
32
  getFeatureState: (id: string) => string | undefined;
31
33
  getFeatureValue: <K extends string | number, V extends GrowthbookConfigs[K]>(id: K, defaultValue: V) => import("@growthbook/growthbook").WidenPrimitives<V>;
32
34
  isFeatureOn: (key: string) => boolean;
33
- setUrl: (href: string) => void;
35
+ setUrl: (href: string) => Promise<void>;
34
36
  getId: () => string;
35
37
  trackEvent: <T extends keyof TEvents>(event: T, analytics_data: TEvents[T]) => void;
36
38
  getInstances: () => {
package/lib/analytics.js CHANGED
@@ -17,10 +17,10 @@ var rudderstack_1 = require("./rudderstack");
17
17
  function createAnalyticsInstance(options) {
18
18
  var _growthbook, _rudderstack, core_data = {}, tracking_config = {}, offline_cache = {};
19
19
  var initialise = function (_a) {
20
- var growthbookKey = _a.growthbookKey, growthbookDecryptionKey = _a.growthbookDecryptionKey, rudderstackKey = _a.rudderstackKey;
20
+ var growthbookKey = _a.growthbookKey, growthbookDecryptionKey = _a.growthbookDecryptionKey, rudderstackKey = _a.rudderstackKey, growthbookOptions = _a.growthbookOptions;
21
21
  _rudderstack = rudderstack_1.RudderStack.getRudderStackInstance(rudderstackKey);
22
22
  if (growthbookKey && growthbookDecryptionKey) {
23
- _growthbook = growthbook_1.Growthbook.getGrowthBookInstance(growthbookKey, growthbookDecryptionKey);
23
+ _growthbook = growthbook_1.Growthbook.getGrowthBookInstance(growthbookKey, growthbookDecryptionKey, growthbookOptions);
24
24
  var interval_1 = setInterval(function () {
25
25
  if (Object.keys(tracking_config).length > 0)
26
26
  clearInterval(interval_1);
@@ -1,4 +1,4 @@
1
- import { GrowthBook } from '@growthbook/growthbook';
1
+ import { Context, GrowthBook } from '@growthbook/growthbook';
2
2
  import { TGrowthbookAttributes } from './types';
3
3
  export type GrowthbookConfigs = {
4
4
  'tracking-buttons-config': Record<string, boolean>;
@@ -8,12 +8,12 @@ export type GrowthbookConfigs = {
8
8
  export declare class Growthbook {
9
9
  GrowthBook: GrowthBook<GrowthbookConfigs>;
10
10
  private static _instance;
11
- constructor(clientKey: string, decryptionKey: string);
12
- static getGrowthBookInstance: (clientKey: string, decryptionKey: string) => Growthbook;
11
+ constructor(clientKey: string, decryptionKey: string, settings?: Partial<Context>);
12
+ static getGrowthBookInstance: (clientKey: string, decryptionKey: string, growthbookOptions?: Partial<Context>) => Growthbook;
13
13
  setAttributes: ({ id, country, user_language, device_language, device_type, utm_source, utm_medium, utm_campaign, is_authorised, }: TGrowthbookAttributes) => void;
14
14
  getFeatureValue: <K extends string | number, V extends GrowthbookConfigs[K]>(key: K, defaultValue: V) => import("@growthbook/growthbook").WidenPrimitives<V>;
15
15
  getFeatureState: (id: string) => import("@growthbook/growthbook").FeatureResult<string | boolean | Record<string, boolean> | [] | null>;
16
- setUrl: (href: string) => void;
16
+ setUrl: (href: string) => Promise<void>;
17
17
  isOn: (key: string) => boolean;
18
18
  init: () => Promise<void>;
19
19
  }
package/lib/growthbook.js CHANGED
@@ -39,7 +39,8 @@ var growthbook_1 = require("@growthbook/growthbook");
39
39
  var RudderAnalytics = __importStar(require("rudder-sdk-js"));
40
40
  var Growthbook = /** @class */ (function () {
41
41
  // we have to pass settings due the specific framework implementation
42
- function Growthbook(clientKey, decryptionKey) {
42
+ function Growthbook(clientKey, decryptionKey, settings) {
43
+ if (settings === void 0) { settings = {}; }
43
44
  var _this = this;
44
45
  this.setAttributes = function (_a) {
45
46
  var id = _a.id, country = _a.country, user_language = _a.user_language, device_language = _a.device_language, device_type = _a.device_type, utm_source = _a.utm_source, utm_medium = _a.utm_medium, utm_campaign = _a.utm_campaign, is_authorised = _a.is_authorised;
@@ -52,13 +53,7 @@ var Growthbook = /** @class */ (function () {
52
53
  this.setUrl = function (href) { return _this.GrowthBook.setURL(href); };
53
54
  this.isOn = function (key) { return _this.GrowthBook.isOn(key); };
54
55
  this.init = function () { return _this.GrowthBook.loadFeatures().catch(function (err) { return console.error(err); }); };
55
- this.GrowthBook = new growthbook_1.GrowthBook({
56
- apiHost: 'https://cdn.growthbook.io',
57
- clientKey: clientKey,
58
- decryptionKey: decryptionKey,
59
- subscribeToChanges: true,
60
- enableDevMode: window === null || window === void 0 ? void 0 : window.location.hostname.includes('localhost'),
61
- trackingCallback: function (experiment, result) {
56
+ this.GrowthBook = new growthbook_1.GrowthBook(__assign({ apiHost: 'https://cdn.growthbook.io', clientKey: clientKey, decryptionKey: decryptionKey, antiFlicker: true, navigateDelay: 0, antiFlickerTimeout: 3500, subscribeToChanges: true, enableDevMode: window === null || window === void 0 ? void 0 : window.location.hostname.includes('localhost'), trackingCallback: function (experiment, result) {
62
57
  if (window.dataLayer) {
63
58
  window.dataLayer.push({
64
59
  event: 'experiment_viewed',
@@ -72,14 +67,13 @@ var Growthbook = /** @class */ (function () {
72
67
  experimentId: experiment.key,
73
68
  variationId: result.variationId,
74
69
  });
75
- },
76
- });
70
+ } }, settings));
77
71
  this.init();
78
72
  }
79
73
  // for make instance by singleton
80
- Growthbook.getGrowthBookInstance = function (clientKey, decryptionKey) {
74
+ Growthbook.getGrowthBookInstance = function (clientKey, decryptionKey, growthbookOptions) {
81
75
  if (!Growthbook._instance) {
82
- Growthbook._instance = new Growthbook(clientKey, decryptionKey);
76
+ Growthbook._instance = new Growthbook(clientKey, decryptionKey, growthbookOptions);
83
77
  return Growthbook._instance;
84
78
  }
85
79
  return Growthbook._instance;
package/lib/types.d.ts CHANGED
@@ -17,7 +17,7 @@ export type TCoreAttributes = {
17
17
  } & Partial<TGrowthbookAttributes>;
18
18
  type SignupProvider = 'email' | 'phone' | 'google' | 'facebook' | 'apple';
19
19
  type VirtualSignupForm = {
20
- action?: 'open' | 'started' | 'email_confirmation_sent' | 'email_confirmed' | 'signup_continued' | 'country_selection_screen_opened' | 'password_screen_opened' | 'signup_done' | 'signup_flow_error' | 'go_to_login';
20
+ action?: 'open' | 'started' | 'email_confirmation_sent' | 'email_confirmed' | 'signup_continued' | 'country_selection_screen_opened' | 'password_screen_opened' | 'signup_done' | 'signup_flow_error' | 'go_to_login' | 'signup_modal_open' | 'signup_modal_close';
21
21
  signup_provider?: SignupProvider;
22
22
  form_source?: string;
23
23
  form_name?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deriv-com/analytics",
3
- "version": "1.4.13",
3
+ "version": "1.5.0-beta",
4
4
  "description": "The analytics package contains all the utility functions used for tracking user events and sending them to the respective platform such as Rudderstack.",
5
5
  "keywords": [
6
6
  "rudderstack",
@@ -36,7 +36,7 @@
36
36
  "typescript": "^4.9.5"
37
37
  },
38
38
  "dependencies": {
39
- "@growthbook/growthbook": "^0.29.0",
39
+ "@growthbook/growthbook": "^0.36.0",
40
40
  "rudder-sdk-js": "^2.35.0"
41
41
  },
42
42
  "engines": {