@cuemath/web-utils 1.0.53 → 1.0.54
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/dist/cjs/ab-experiment/index.d.ts +1 -1
- package/dist/cjs/ab-experiment/index.js +4 -1
- package/dist/cjs/ab-experiment/index.js.map +1 -1
- package/dist/cjs/ab-experiment/utils/ab-variant.d.ts +4 -1
- package/dist/cjs/ab-experiment/utils/ab-variant.js +52 -5
- package/dist/cjs/ab-experiment/utils/ab-variant.js.map +1 -1
- package/dist/esm/ab-experiment/index.d.ts +1 -1
- package/dist/esm/ab-experiment/index.js +1 -1
- package/dist/esm/ab-experiment/index.js.map +1 -1
- package/dist/esm/ab-experiment/utils/ab-variant.d.ts +4 -1
- package/dist/esm/ab-experiment/utils/ab-variant.js +48 -4
- package/dist/esm/ab-experiment/utils/ab-variant.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { getABVariant, getABExperimentCacheKey } from './utils/ab-variant';
|
|
1
|
+
export { getABVariant, getABExperimentCacheKey, setABExperiment, resetABExperiment, resetAllABExperiments, } from './utils/ab-variant';
|
|
2
2
|
export { EXPERIMENT_KEYS, VARIANTS, AB_IDENTIFIER_KEY, LAST_LANDING_PAGE_COOKIE, } from './constants';
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LAST_LANDING_PAGE_COOKIE = exports.AB_IDENTIFIER_KEY = exports.VARIANTS = exports.EXPERIMENT_KEYS = exports.getABExperimentCacheKey = exports.getABVariant = void 0;
|
|
3
|
+
exports.LAST_LANDING_PAGE_COOKIE = exports.AB_IDENTIFIER_KEY = exports.VARIANTS = exports.EXPERIMENT_KEYS = exports.resetAllABExperiments = exports.resetABExperiment = exports.setABExperiment = exports.getABExperimentCacheKey = exports.getABVariant = void 0;
|
|
4
4
|
var ab_variant_1 = require("./utils/ab-variant");
|
|
5
5
|
Object.defineProperty(exports, "getABVariant", { enumerable: true, get: function () { return ab_variant_1.getABVariant; } });
|
|
6
6
|
Object.defineProperty(exports, "getABExperimentCacheKey", { enumerable: true, get: function () { return ab_variant_1.getABExperimentCacheKey; } });
|
|
7
|
+
Object.defineProperty(exports, "setABExperiment", { enumerable: true, get: function () { return ab_variant_1.setABExperiment; } });
|
|
8
|
+
Object.defineProperty(exports, "resetABExperiment", { enumerable: true, get: function () { return ab_variant_1.resetABExperiment; } });
|
|
9
|
+
Object.defineProperty(exports, "resetAllABExperiments", { enumerable: true, get: function () { return ab_variant_1.resetAllABExperiments; } });
|
|
7
10
|
var constants_1 = require("./constants");
|
|
8
11
|
Object.defineProperty(exports, "EXPERIMENT_KEYS", { enumerable: true, get: function () { return constants_1.EXPERIMENT_KEYS; } });
|
|
9
12
|
Object.defineProperty(exports, "VARIANTS", { enumerable: true, get: function () { return constants_1.VARIANTS; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ab-experiment/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ab-experiment/index.ts"],"names":[],"mappings":";;;AAAA,iDAM4B;AAL1B,0GAAA,YAAY,OAAA;AACZ,qHAAA,uBAAuB,OAAA;AACvB,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA;AACjB,mHAAA,qBAAqB,OAAA;AAEvB,yCAKqB;AAJnB,4GAAA,eAAe,OAAA;AACf,qGAAA,QAAQ,OAAA;AACR,8GAAA,iBAAiB,OAAA;AACjB,qHAAA,wBAAwB,OAAA"}
|
|
@@ -2,9 +2,12 @@ type LastLandingPageProps = {
|
|
|
2
2
|
value: string;
|
|
3
3
|
createdAt: string;
|
|
4
4
|
};
|
|
5
|
-
export declare const getABVariant: (url: string, countryCode: string, currentABVariant: Record<string, string>, lastLandingPageCookies: LastLandingPageProps) => {
|
|
5
|
+
export declare const getABVariant: (url: string, countryCode: string, currentABVariant: Record<string, string>, lastLandingPageCookies: LastLandingPageProps, debugABCookieName: string, sourceCookies?: string) => {
|
|
6
6
|
isABExperimentsUpdated: boolean;
|
|
7
7
|
abExperiment: Record<string, string>;
|
|
8
8
|
};
|
|
9
|
+
export declare const setABExperiment: (debugABCookieName: string, experimentName: string, variant: string, timeInDays?: number) => void;
|
|
10
|
+
export declare const resetABExperiment: (debugABCookieName: string, experimentName: string) => void;
|
|
11
|
+
export declare const resetAllABExperiments: (debugABCookieName: string) => void;
|
|
9
12
|
export declare const getABExperimentCacheKey: (abExperimentObj: Record<string, string>) => string;
|
|
10
13
|
export {};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getABExperimentCacheKey = exports.getABVariant = void 0;
|
|
3
|
+
exports.getABExperimentCacheKey = exports.resetAllABExperiments = exports.resetABExperiment = exports.setABExperiment = exports.getABVariant = void 0;
|
|
4
|
+
const cookie_1 = require("../../cookie");
|
|
4
5
|
const url_parser_1 = require("../../url-parser");
|
|
5
6
|
const constants_1 = require("../constants");
|
|
6
7
|
const experiments_1 = require("./experiments");
|
|
7
8
|
const EXPERIMENT_VERSION = '2.0.1';
|
|
8
|
-
const getABVariant = (url, countryCode, currentABVariant, lastLandingPageCookies) => {
|
|
9
|
+
const getABVariant = (url, countryCode, currentABVariant, lastLandingPageCookies, debugABCookieName, sourceCookies) => {
|
|
9
10
|
const path = (0, url_parser_1.removeHrefLangFromPath)((0, url_parser_1.removeQueryStringFromPath)(url));
|
|
10
11
|
const newAbVariants = {
|
|
11
12
|
version: EXPERIMENT_VERSION,
|
|
@@ -18,13 +19,24 @@ const getABVariant = (url, countryCode, currentABVariant, lastLandingPageCookies
|
|
|
18
19
|
isExpModified = true;
|
|
19
20
|
}
|
|
20
21
|
});
|
|
22
|
+
const enabledABCookies = debugABCookieName
|
|
23
|
+
? (0, cookie_1.getCookie)(debugABCookieName, sourceCookies)
|
|
24
|
+
: '';
|
|
25
|
+
const enabledABKeys = enabledABCookies
|
|
26
|
+
? JSON.parse(decodeURIComponent(enabledABCookies))
|
|
27
|
+
: {};
|
|
21
28
|
experiments_1.EXPERIMENTS.forEach((experiment) => {
|
|
22
29
|
// eslint-disable-next-line prefer-const
|
|
23
30
|
let { name: experimentName, variants: getVariants } = experiment;
|
|
24
31
|
const variants = getVariants(path, countryCode, lastLandingPageCookies);
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
const variantIDs = variants.map((element) => element.id);
|
|
33
|
+
// Check and use if an AB experiment is manually enabled
|
|
34
|
+
if (enabledABKeys[experimentName]) {
|
|
35
|
+
newAbVariants[experimentName] = enabledABKeys[experimentName];
|
|
36
|
+
isExpModified = true;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const isVariantPresent = variantIDs.includes(currentABVariant[experimentName]);
|
|
28
40
|
// remove experimentName from currentABVariant if it is not present in variants.id
|
|
29
41
|
if (!isVariantPresent) {
|
|
30
42
|
delete currentABVariant[experimentName];
|
|
@@ -55,6 +67,41 @@ const getABVariant = (url, countryCode, currentABVariant, lastLandingPageCookies
|
|
|
55
67
|
return { isABExperimentsUpdated: isExpModified, abExperiment: newAbVariants };
|
|
56
68
|
};
|
|
57
69
|
exports.getABVariant = getABVariant;
|
|
70
|
+
const setABExperiment = (debugABCookieName, experimentName, variant, timeInDays) => {
|
|
71
|
+
if (!debugABCookieName || !experimentName || !variant) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
let results = {};
|
|
75
|
+
const enabledABCookie = (0, cookie_1.getCookie)(debugABCookieName);
|
|
76
|
+
if (enabledABCookie) {
|
|
77
|
+
const enabledABKeys = JSON.parse(decodeURIComponent(enabledABCookie)) || {};
|
|
78
|
+
results = { ...enabledABKeys };
|
|
79
|
+
}
|
|
80
|
+
results[experimentName] = variant;
|
|
81
|
+
(0, cookie_1.createCookie)(debugABCookieName, JSON.stringify(results), timeInDays || 1);
|
|
82
|
+
};
|
|
83
|
+
exports.setABExperiment = setABExperiment;
|
|
84
|
+
const resetABExperiment = (debugABCookieName, experimentName) => {
|
|
85
|
+
if (!debugABCookieName || !experimentName) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
let results = {};
|
|
89
|
+
const enabledABCookie = (0, cookie_1.getCookie)(debugABCookieName);
|
|
90
|
+
if (enabledABCookie) {
|
|
91
|
+
const enabledABKeys = JSON.parse(decodeURIComponent(enabledABCookie)) || {};
|
|
92
|
+
results = { ...enabledABKeys };
|
|
93
|
+
delete results[experimentName];
|
|
94
|
+
}
|
|
95
|
+
(0, cookie_1.createCookie)(debugABCookieName, JSON.stringify(results), 1);
|
|
96
|
+
};
|
|
97
|
+
exports.resetABExperiment = resetABExperiment;
|
|
98
|
+
const resetAllABExperiments = (debugABCookieName) => {
|
|
99
|
+
if (!debugABCookieName) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
(0, cookie_1.removeCookie)(debugABCookieName);
|
|
103
|
+
};
|
|
104
|
+
exports.resetAllABExperiments = resetAllABExperiments;
|
|
58
105
|
const getABExperimentCacheKey = (abExperimentObj) => {
|
|
59
106
|
// return key=value&key=value sorted by key
|
|
60
107
|
const keys = Object.keys(abExperimentObj).sort();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ab-variant.js","sourceRoot":"","sources":["../../../../src/ab-experiment/utils/ab-variant.ts"],"names":[],"mappings":";;;AAAA,iDAAqF;AACrF,4CAAmD;AACnD,+CAA4C;AAE5C,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAa5B,MAAM,YAAY,GAAG,CAC1B,GAAW,EACX,WAAmB,EACnB,gBAAwC,EACxC,sBAA4C,EAC5C,EAAE;IACF,MAAM,IAAI,GAAG,IAAA,mCAAsB,EAAC,IAAA,sCAAyB,EAAC,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,aAAa,GAA2B;QAC5C,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACF,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,2DAA2D;IAC3D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;QACjD,IAAI,+BAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7B,aAAa,GAAG,IAAI,CAAC;SACtB;IACH,CAAC,CAAC,CAAC;IAEH,yBAAW,CAAC,OAAO,CAAC,CAAC,UAA2B,EAAE,EAAE;QAClD,wCAAwC;QACxC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ab-variant.js","sourceRoot":"","sources":["../../../../src/ab-experiment/utils/ab-variant.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { getABVariant, getABExperimentCacheKey } from './utils/ab-variant';
|
|
1
|
+
export { getABVariant, getABExperimentCacheKey, setABExperiment, resetABExperiment, resetAllABExperiments, } from './utils/ab-variant';
|
|
2
2
|
export { EXPERIMENT_KEYS, VARIANTS, AB_IDENTIFIER_KEY, LAST_LANDING_PAGE_COOKIE, } from './constants';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { getABVariant, getABExperimentCacheKey } from './utils/ab-variant';
|
|
1
|
+
export { getABVariant, getABExperimentCacheKey, setABExperiment, resetABExperiment, resetAllABExperiments, } from './utils/ab-variant';
|
|
2
2
|
export { EXPERIMENT_KEYS, VARIANTS, AB_IDENTIFIER_KEY, LAST_LANDING_PAGE_COOKIE, } from './constants';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ab-experiment/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ab-experiment/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,QAAQ,EACR,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,aAAa,CAAC"}
|
|
@@ -2,9 +2,12 @@ type LastLandingPageProps = {
|
|
|
2
2
|
value: string;
|
|
3
3
|
createdAt: string;
|
|
4
4
|
};
|
|
5
|
-
export declare const getABVariant: (url: string, countryCode: string, currentABVariant: Record<string, string>, lastLandingPageCookies: LastLandingPageProps) => {
|
|
5
|
+
export declare const getABVariant: (url: string, countryCode: string, currentABVariant: Record<string, string>, lastLandingPageCookies: LastLandingPageProps, debugABCookieName: string, sourceCookies?: string) => {
|
|
6
6
|
isABExperimentsUpdated: boolean;
|
|
7
7
|
abExperiment: Record<string, string>;
|
|
8
8
|
};
|
|
9
|
+
export declare const setABExperiment: (debugABCookieName: string, experimentName: string, variant: string, timeInDays?: number) => void;
|
|
10
|
+
export declare const resetABExperiment: (debugABCookieName: string, experimentName: string) => void;
|
|
11
|
+
export declare const resetAllABExperiments: (debugABCookieName: string) => void;
|
|
9
12
|
export declare const getABExperimentCacheKey: (abExperimentObj: Record<string, string>) => string;
|
|
10
13
|
export {};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { createCookie, getCookie, removeCookie } from '../../cookie';
|
|
1
2
|
import { removeQueryStringFromPath, removeHrefLangFromPath } from '../../url-parser';
|
|
2
3
|
import { REMOVED_EXPERIMENTS } from '../constants';
|
|
3
4
|
import { EXPERIMENTS } from './experiments';
|
|
4
5
|
const EXPERIMENT_VERSION = '2.0.1';
|
|
5
|
-
export const getABVariant = (url, countryCode, currentABVariant, lastLandingPageCookies) => {
|
|
6
|
+
export const getABVariant = (url, countryCode, currentABVariant, lastLandingPageCookies, debugABCookieName, sourceCookies) => {
|
|
6
7
|
const path = removeHrefLangFromPath(removeQueryStringFromPath(url));
|
|
7
8
|
const newAbVariants = {
|
|
8
9
|
version: EXPERIMENT_VERSION,
|
|
@@ -15,13 +16,24 @@ export const getABVariant = (url, countryCode, currentABVariant, lastLandingPage
|
|
|
15
16
|
isExpModified = true;
|
|
16
17
|
}
|
|
17
18
|
});
|
|
19
|
+
const enabledABCookies = debugABCookieName
|
|
20
|
+
? getCookie(debugABCookieName, sourceCookies)
|
|
21
|
+
: '';
|
|
22
|
+
const enabledABKeys = enabledABCookies
|
|
23
|
+
? JSON.parse(decodeURIComponent(enabledABCookies))
|
|
24
|
+
: {};
|
|
18
25
|
EXPERIMENTS.forEach((experiment) => {
|
|
19
26
|
// eslint-disable-next-line prefer-const
|
|
20
27
|
let { name: experimentName, variants: getVariants } = experiment;
|
|
21
28
|
const variants = getVariants(path, countryCode, lastLandingPageCookies);
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
const variantIDs = variants.map((element) => element.id);
|
|
30
|
+
// Check and use if an AB experiment is manually enabled
|
|
31
|
+
if (enabledABKeys[experimentName]) {
|
|
32
|
+
newAbVariants[experimentName] = enabledABKeys[experimentName];
|
|
33
|
+
isExpModified = true;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const isVariantPresent = variantIDs.includes(currentABVariant[experimentName]);
|
|
25
37
|
// remove experimentName from currentABVariant if it is not present in variants.id
|
|
26
38
|
if (!isVariantPresent) {
|
|
27
39
|
delete currentABVariant[experimentName];
|
|
@@ -51,6 +63,38 @@ export const getABVariant = (url, countryCode, currentABVariant, lastLandingPage
|
|
|
51
63
|
});
|
|
52
64
|
return { isABExperimentsUpdated: isExpModified, abExperiment: newAbVariants };
|
|
53
65
|
};
|
|
66
|
+
export const setABExperiment = (debugABCookieName, experimentName, variant, timeInDays) => {
|
|
67
|
+
if (!debugABCookieName || !experimentName || !variant) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
let results = {};
|
|
71
|
+
const enabledABCookie = getCookie(debugABCookieName);
|
|
72
|
+
if (enabledABCookie) {
|
|
73
|
+
const enabledABKeys = JSON.parse(decodeURIComponent(enabledABCookie)) || {};
|
|
74
|
+
results = Object.assign({}, enabledABKeys);
|
|
75
|
+
}
|
|
76
|
+
results[experimentName] = variant;
|
|
77
|
+
createCookie(debugABCookieName, JSON.stringify(results), timeInDays || 1);
|
|
78
|
+
};
|
|
79
|
+
export const resetABExperiment = (debugABCookieName, experimentName) => {
|
|
80
|
+
if (!debugABCookieName || !experimentName) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
let results = {};
|
|
84
|
+
const enabledABCookie = getCookie(debugABCookieName);
|
|
85
|
+
if (enabledABCookie) {
|
|
86
|
+
const enabledABKeys = JSON.parse(decodeURIComponent(enabledABCookie)) || {};
|
|
87
|
+
results = Object.assign({}, enabledABKeys);
|
|
88
|
+
delete results[experimentName];
|
|
89
|
+
}
|
|
90
|
+
createCookie(debugABCookieName, JSON.stringify(results), 1);
|
|
91
|
+
};
|
|
92
|
+
export const resetAllABExperiments = (debugABCookieName) => {
|
|
93
|
+
if (!debugABCookieName) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
removeCookie(debugABCookieName);
|
|
97
|
+
};
|
|
54
98
|
export const getABExperimentCacheKey = (abExperimentObj) => {
|
|
55
99
|
// return key=value&key=value sorted by key
|
|
56
100
|
const keys = Object.keys(abExperimentObj).sort();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ab-variant.js","sourceRoot":"","sources":["../../../../src/ab-experiment/utils/ab-variant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAanC,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAW,EACX,WAAmB,EACnB,gBAAwC,EACxC,sBAA4C,EAC5C,EAAE;IACF,MAAM,IAAI,GAAG,sBAAsB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,aAAa,GAA2B;QAC5C,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACF,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,2DAA2D;IAC3D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;QACjD,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7B,aAAa,GAAG,IAAI,CAAC;SACtB;IACH,CAAC,CAAC,CAAC;IAEH,WAAW,CAAC,OAAO,CAAC,CAAC,UAA2B,EAAE,EAAE;QAClD,wCAAwC;QACxC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ab-variant.js","sourceRoot":"","sources":["../../../../src/ab-experiment/utils/ab-variant.ts"],"names":[],"mappings":"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"}
|