@deriv-com/analytics 1.4.13 → 1.5.0-beta
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/lib/analytics.d.ts +6 -4
- package/lib/analytics.js +2 -2
- package/lib/growthbook.d.ts +4 -4
- package/lib/growthbook.js +6 -12
- package/lib/types.d.ts +1 -1
- package/package.json +2 -2
package/lib/analytics.d.ts
CHANGED
|
@@ -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);
|
package/lib/growthbook.d.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
39
|
+
"@growthbook/growthbook": "^0.36.0",
|
|
40
40
|
"rudder-sdk-js": "^2.35.0"
|
|
41
41
|
},
|
|
42
42
|
"engines": {
|