@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.
@@ -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,iDAA2E;AAAlE,0GAAA,YAAY,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAC9C,yCAKqB;AAJnB,4GAAA,eAAe,OAAA;AACf,qGAAA,QAAQ,OAAA;AACR,8GAAA,iBAAiB,OAAA;AACjB,qHAAA,wBAAwB,OAAA"}
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 isVariantPresent = variants
26
- .map((element) => element.id)
27
- .includes(currentABVariant[experimentName]);
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":"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"}
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,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACL,eAAe,EACf,QAAQ,EACR,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,aAAa,CAAC"}
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 isVariantPresent = variants
23
- .map((element) => element.id)
24
- .includes(currentABVariant[experimentName]);
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":"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"}
1
+ {"version":3,"file":"ab-variant.js","sourceRoot":"","sources":["../../../../src/ab-experiment/utils/ab-variant.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/web-utils",
3
- "version": "1.0.53",
3
+ "version": "1.0.54",
4
4
  "description": "Shared web utils package",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",