@uniformdev/context 19.128.1-alpha.11 → 19.128.1-alpha.13
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/api/api.d.mts +1 -1
- package/dist/api/api.d.ts +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.esm.js +34 -19
- package/dist/index.js +34 -19
- package/dist/index.mjs +34 -19
- package/dist/{types-g61S1nwH.d.mts → types-o-_vpf1P.d.mts} +1 -0
- package/dist/{types-g61S1nwH.d.ts → types-o-_vpf1P.d.ts} +1 -0
- package/package.json +2 -2
package/dist/api/api.d.mts
CHANGED
package/dist/api/api.d.ts
CHANGED
package/dist/index.d.mts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import { O as OutputSeverity, L as LogDrain, C as ContextPlugin, S as ScoreVector, A as AggregateDimension, T as TransitionDataStore, a as StorageCommands, V as VisitorData, b as TransitionDataStoreOptions, D as DecayFunction, c as CriteriaEvaluator, d as StringMatch, e as VariantMatchCriteria, f as LogMessage, g as DevToolsEvents } from './types-
|
2
|
-
export { _ as AggregateDimensionInput, a4 as BehaviorTag, h as CONTEXTUAL_EDITING_TEST_NAME, i as CONTEXTUAL_EDITING_TEST_SELECTED_VARIANT_ID, n as Context, l as ContextEvents, m as ContextInstance, j as ContextOptions, aw as ContextState, ax as ContextStateUpdate, J as CriteriaEvaluatorParameters, I as CriteriaEvaluatorResult, al as DecayOptions, q as DevToolsActions, t as DevToolsDataEvent, r as DevToolsEvent, x as DevToolsForgetEvent, u as DevToolsHelloEvent, s as DevToolsLogEvent, w as DevToolsRawCommandsEvent, p as DevToolsState, o as DevToolsUiVersion, v as DevToolsUpdateEvent, a1 as DimensionMatch, X as EnrichmentCategory, ar as EnrichmentData, au as EventData, H as GroupCriteriaEvaluator, af as IdentifyCommand, F as LogMessageGroup, E as LogMessageSingle, y as LogMessages, G as ManifestInstance, N as ManifestV2, M as MessageCategory, B as MessageFunc, aa as ModifyScoreCommand, ab as ModifySessionScoreCommand, Y as NumberMatch, P as PersonalizationEvent, Q as PersonalizationManifest, as as PersonalizeControlVariant, a2 as PersonalizeOptions, at as PersonalizeVariants, a6 as PersonalizedResult, a5 as PersonalizedVariant, ap as Quirks, aj as SERVER_STATE_ID, ai as ServerToClientTransitionState, ac as SetConsentCommand, ag as SetControlGroupCommand, ah as SetPersonalizeVariantControlCommand, ad as SetQuirkCommand, ae as SetTestCommand, z as Severity, R as Signal, W as SignalCriteria, U as SignalCriteriaGroup, K as SignalData, a9 as StorageCommand, Z as TestDefinition, k as TestEvent, $ as TestOptions, a8 as TestResult, a7 as TestVariant, aq as Tests, ak as TransitionDataStoreEvents, ao as VisitorDataStore, an as VisitorDataStoreEvents, am as VisitorDataStoreOptions, av as emptyVisitorData, a3 as personalizeVariations, a0 as testVariations } from './types-
|
1
|
+
import { O as OutputSeverity, L as LogDrain, C as ContextPlugin, S as ScoreVector, A as AggregateDimension, T as TransitionDataStore, a as StorageCommands, V as VisitorData, b as TransitionDataStoreOptions, D as DecayFunction, c as CriteriaEvaluator, d as StringMatch, e as VariantMatchCriteria, f as LogMessage, g as DevToolsEvents } from './types-o-_vpf1P.mjs';
|
2
|
+
export { _ as AggregateDimensionInput, a4 as BehaviorTag, h as CONTEXTUAL_EDITING_TEST_NAME, i as CONTEXTUAL_EDITING_TEST_SELECTED_VARIANT_ID, n as Context, l as ContextEvents, m as ContextInstance, j as ContextOptions, aw as ContextState, ax as ContextStateUpdate, J as CriteriaEvaluatorParameters, I as CriteriaEvaluatorResult, al as DecayOptions, q as DevToolsActions, t as DevToolsDataEvent, r as DevToolsEvent, x as DevToolsForgetEvent, u as DevToolsHelloEvent, s as DevToolsLogEvent, w as DevToolsRawCommandsEvent, p as DevToolsState, o as DevToolsUiVersion, v as DevToolsUpdateEvent, a1 as DimensionMatch, X as EnrichmentCategory, ar as EnrichmentData, au as EventData, H as GroupCriteriaEvaluator, af as IdentifyCommand, F as LogMessageGroup, E as LogMessageSingle, y as LogMessages, G as ManifestInstance, N as ManifestV2, M as MessageCategory, B as MessageFunc, aa as ModifyScoreCommand, ab as ModifySessionScoreCommand, Y as NumberMatch, P as PersonalizationEvent, Q as PersonalizationManifest, as as PersonalizeControlVariant, a2 as PersonalizeOptions, at as PersonalizeVariants, a6 as PersonalizedResult, a5 as PersonalizedVariant, ap as Quirks, aj as SERVER_STATE_ID, ai as ServerToClientTransitionState, ac as SetConsentCommand, ag as SetControlGroupCommand, ah as SetPersonalizeVariantControlCommand, ad as SetQuirkCommand, ae as SetTestCommand, z as Severity, R as Signal, W as SignalCriteria, U as SignalCriteriaGroup, K as SignalData, a9 as StorageCommand, Z as TestDefinition, k as TestEvent, $ as TestOptions, a8 as TestResult, a7 as TestVariant, aq as Tests, ak as TransitionDataStoreEvents, ao as VisitorDataStore, an as VisitorDataStoreEvents, am as VisitorDataStoreOptions, av as emptyVisitorData, a3 as personalizeVariations, a0 as testVariations } from './types-o-_vpf1P.mjs';
|
3
3
|
import Cookies from 'js-cookie';
|
4
4
|
import 'mitt';
|
5
5
|
|
package/dist/index.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import { O as OutputSeverity, L as LogDrain, C as ContextPlugin, S as ScoreVector, A as AggregateDimension, T as TransitionDataStore, a as StorageCommands, V as VisitorData, b as TransitionDataStoreOptions, D as DecayFunction, c as CriteriaEvaluator, d as StringMatch, e as VariantMatchCriteria, f as LogMessage, g as DevToolsEvents } from './types-
|
2
|
-
export { _ as AggregateDimensionInput, a4 as BehaviorTag, h as CONTEXTUAL_EDITING_TEST_NAME, i as CONTEXTUAL_EDITING_TEST_SELECTED_VARIANT_ID, n as Context, l as ContextEvents, m as ContextInstance, j as ContextOptions, aw as ContextState, ax as ContextStateUpdate, J as CriteriaEvaluatorParameters, I as CriteriaEvaluatorResult, al as DecayOptions, q as DevToolsActions, t as DevToolsDataEvent, r as DevToolsEvent, x as DevToolsForgetEvent, u as DevToolsHelloEvent, s as DevToolsLogEvent, w as DevToolsRawCommandsEvent, p as DevToolsState, o as DevToolsUiVersion, v as DevToolsUpdateEvent, a1 as DimensionMatch, X as EnrichmentCategory, ar as EnrichmentData, au as EventData, H as GroupCriteriaEvaluator, af as IdentifyCommand, F as LogMessageGroup, E as LogMessageSingle, y as LogMessages, G as ManifestInstance, N as ManifestV2, M as MessageCategory, B as MessageFunc, aa as ModifyScoreCommand, ab as ModifySessionScoreCommand, Y as NumberMatch, P as PersonalizationEvent, Q as PersonalizationManifest, as as PersonalizeControlVariant, a2 as PersonalizeOptions, at as PersonalizeVariants, a6 as PersonalizedResult, a5 as PersonalizedVariant, ap as Quirks, aj as SERVER_STATE_ID, ai as ServerToClientTransitionState, ac as SetConsentCommand, ag as SetControlGroupCommand, ah as SetPersonalizeVariantControlCommand, ad as SetQuirkCommand, ae as SetTestCommand, z as Severity, R as Signal, W as SignalCriteria, U as SignalCriteriaGroup, K as SignalData, a9 as StorageCommand, Z as TestDefinition, k as TestEvent, $ as TestOptions, a8 as TestResult, a7 as TestVariant, aq as Tests, ak as TransitionDataStoreEvents, ao as VisitorDataStore, an as VisitorDataStoreEvents, am as VisitorDataStoreOptions, av as emptyVisitorData, a3 as personalizeVariations, a0 as testVariations } from './types-
|
1
|
+
import { O as OutputSeverity, L as LogDrain, C as ContextPlugin, S as ScoreVector, A as AggregateDimension, T as TransitionDataStore, a as StorageCommands, V as VisitorData, b as TransitionDataStoreOptions, D as DecayFunction, c as CriteriaEvaluator, d as StringMatch, e as VariantMatchCriteria, f as LogMessage, g as DevToolsEvents } from './types-o-_vpf1P.js';
|
2
|
+
export { _ as AggregateDimensionInput, a4 as BehaviorTag, h as CONTEXTUAL_EDITING_TEST_NAME, i as CONTEXTUAL_EDITING_TEST_SELECTED_VARIANT_ID, n as Context, l as ContextEvents, m as ContextInstance, j as ContextOptions, aw as ContextState, ax as ContextStateUpdate, J as CriteriaEvaluatorParameters, I as CriteriaEvaluatorResult, al as DecayOptions, q as DevToolsActions, t as DevToolsDataEvent, r as DevToolsEvent, x as DevToolsForgetEvent, u as DevToolsHelloEvent, s as DevToolsLogEvent, w as DevToolsRawCommandsEvent, p as DevToolsState, o as DevToolsUiVersion, v as DevToolsUpdateEvent, a1 as DimensionMatch, X as EnrichmentCategory, ar as EnrichmentData, au as EventData, H as GroupCriteriaEvaluator, af as IdentifyCommand, F as LogMessageGroup, E as LogMessageSingle, y as LogMessages, G as ManifestInstance, N as ManifestV2, M as MessageCategory, B as MessageFunc, aa as ModifyScoreCommand, ab as ModifySessionScoreCommand, Y as NumberMatch, P as PersonalizationEvent, Q as PersonalizationManifest, as as PersonalizeControlVariant, a2 as PersonalizeOptions, at as PersonalizeVariants, a6 as PersonalizedResult, a5 as PersonalizedVariant, ap as Quirks, aj as SERVER_STATE_ID, ai as ServerToClientTransitionState, ac as SetConsentCommand, ag as SetControlGroupCommand, ah as SetPersonalizeVariantControlCommand, ad as SetQuirkCommand, ae as SetTestCommand, z as Severity, R as Signal, W as SignalCriteria, U as SignalCriteriaGroup, K as SignalData, a9 as StorageCommand, Z as TestDefinition, k as TestEvent, $ as TestOptions, a8 as TestResult, a7 as TestVariant, aq as Tests, ak as TransitionDataStoreEvents, ao as VisitorDataStore, an as VisitorDataStoreEvents, am as VisitorDataStoreOptions, av as emptyVisitorData, a3 as personalizeVariations, a0 as testVariations } from './types-o-_vpf1P.js';
|
3
3
|
import Cookies from 'js-cookie';
|
4
4
|
import 'mitt';
|
5
5
|
|
package/dist/index.esm.js
CHANGED
@@ -614,7 +614,7 @@ function personalizeVariations({
|
|
614
614
|
take = 1,
|
615
615
|
onLogMessage
|
616
616
|
}) {
|
617
|
-
var _a, _b, _c, _d
|
617
|
+
var _a, _b, _c, _d;
|
618
618
|
onLogMessage == null ? void 0 : onLogMessage(["info", 300, "GROUP", { name, take }]);
|
619
619
|
try {
|
620
620
|
const control = (_a = context.storage.data.controlGroup) != null ? _a : false;
|
@@ -649,26 +649,23 @@ function personalizeVariations({
|
|
649
649
|
}
|
650
650
|
if (evaluateVariantMatch(variant.id, variant.pz, scores, onLogMessage)) {
|
651
651
|
let variantToAdd = variant;
|
652
|
-
|
652
|
+
const isControl = false;
|
653
653
|
if (take === 1 && defaultVariants.length && typeof variant.pz.control === "number") {
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
isControl = entry.control;
|
658
|
-
} else {
|
659
|
-
isControl = rollForControlGroup(variant.pz.control);
|
654
|
+
let isControl2 = context.getPersonalizeVariantControl(name, currentIndex);
|
655
|
+
if (typeof isControl2 === "undefined") {
|
656
|
+
isControl2 = rollForControlGroup(variant.pz.control);
|
660
657
|
context.storage.updateData([
|
661
658
|
{
|
662
659
|
type: "setpersonalizecontrol",
|
663
660
|
data: {
|
664
661
|
personlizationName: name,
|
665
662
|
index: currentIndex,
|
666
|
-
control:
|
663
|
+
control: isControl2
|
667
664
|
}
|
668
665
|
}
|
669
666
|
]);
|
670
667
|
}
|
671
|
-
if (
|
668
|
+
if (isControl2) {
|
672
669
|
variantToAdd = defaultVariants[0];
|
673
670
|
}
|
674
671
|
}
|
@@ -988,8 +985,9 @@ function decodePersonalizeVariants(data) {
|
|
988
985
|
return void 0;
|
989
986
|
}
|
990
987
|
const results = {};
|
991
|
-
Object.keys(parsed).forEach((
|
992
|
-
const variants = parsed[
|
988
|
+
Object.keys(parsed).forEach((k) => {
|
989
|
+
const variants = parsed[k].split(",");
|
990
|
+
const key = decodeURIComponent(k);
|
993
991
|
results[key] = variants.map((variant) => {
|
994
992
|
const [index, control] = variant.split(":");
|
995
993
|
return {
|
@@ -1148,13 +1146,12 @@ function applyCommandsToData(commands, state, inControlGroup) {
|
|
1148
1146
|
(i) => i.index === command.data.index
|
1149
1147
|
);
|
1150
1148
|
if (!existingDef) {
|
1151
|
-
|
1149
|
+
newData.personalizeVariants[command.data.personlizationName].push({
|
1152
1150
|
index: command.data.index,
|
1153
1151
|
control: command.data.control
|
1154
|
-
};
|
1155
|
-
|
1156
|
-
|
1157
|
-
existingDef.control = command.data.control;
|
1152
|
+
});
|
1153
|
+
} else {
|
1154
|
+
console.warn("Overwriting existing control group definition is not allowed");
|
1158
1155
|
}
|
1159
1156
|
break;
|
1160
1157
|
default:
|
@@ -1518,7 +1515,7 @@ var Context = class {
|
|
1518
1515
|
* will NOT result in a recomputation of signal state.
|
1519
1516
|
*/
|
1520
1517
|
async update(newData) {
|
1521
|
-
var _a, _b, _c;
|
1518
|
+
var _a, _b, _c, _d;
|
1522
1519
|
const commands = [];
|
1523
1520
|
const newServerSideTests = {};
|
1524
1521
|
if ((_a = __privateGet(this, _serverTransitionState)) == null ? void 0 : _a.quirks) {
|
@@ -1548,6 +1545,17 @@ var Context = class {
|
|
1548
1545
|
);
|
1549
1546
|
}
|
1550
1547
|
}
|
1548
|
+
if ((_c = __privateGet(this, _serverTransitionState)) == null ? void 0 : _c.personalizeVariants) {
|
1549
|
+
Object.keys(__privateGet(this, _serverTransitionState).personalizeVariants).forEach((personalizationName) => {
|
1550
|
+
const variants = __privateGet(this, _serverTransitionState).personalizeVariants[personalizationName];
|
1551
|
+
variants.forEach((e) => {
|
1552
|
+
commands.push({
|
1553
|
+
type: "setpersonalizecontrol",
|
1554
|
+
data: { personlizationName: personalizationName, index: e.index, control: e.control }
|
1555
|
+
});
|
1556
|
+
});
|
1557
|
+
});
|
1558
|
+
}
|
1551
1559
|
try {
|
1552
1560
|
__privateGet(this, _mitt3).emit("log", [
|
1553
1561
|
"info",
|
@@ -1557,7 +1565,7 @@ var Context = class {
|
|
1557
1565
|
...newData,
|
1558
1566
|
// need to convert url to string so it can be json serialized
|
1559
1567
|
// to go over postMessage to chrome extension
|
1560
|
-
url: (
|
1568
|
+
url: (_d = newData.url) == null ? void 0 : _d.toString()
|
1561
1569
|
}
|
1562
1570
|
]);
|
1563
1571
|
if (newData.quirks) {
|
@@ -1639,6 +1647,13 @@ var Context = class {
|
|
1639
1647
|
}
|
1640
1648
|
]);
|
1641
1649
|
}
|
1650
|
+
getPersonalizeVariantControl(name, index) {
|
1651
|
+
var _a, _b, _c;
|
1652
|
+
const source = (_b = (_a = __privateGet(this, _serverTransitionState)) == null ? void 0 : _a.personalizeVariants) != null ? _b : this.storage.data.personalizeVariants;
|
1653
|
+
const variants = (_c = source == null ? void 0 : source[name]) != null ? _c : [];
|
1654
|
+
const variant = variants.find((v) => v.index === index);
|
1655
|
+
return variant == null ? void 0 : variant.control;
|
1656
|
+
}
|
1642
1657
|
/**
|
1643
1658
|
* Writes a message to the Context log sink.
|
1644
1659
|
* Used by Uniform internal SDK; not intended for public use.
|
package/dist/index.js
CHANGED
@@ -684,7 +684,7 @@ function personalizeVariations({
|
|
684
684
|
take = 1,
|
685
685
|
onLogMessage
|
686
686
|
}) {
|
687
|
-
var _a, _b, _c, _d
|
687
|
+
var _a, _b, _c, _d;
|
688
688
|
onLogMessage == null ? void 0 : onLogMessage(["info", 300, "GROUP", { name, take }]);
|
689
689
|
try {
|
690
690
|
const control = (_a = context.storage.data.controlGroup) != null ? _a : false;
|
@@ -719,26 +719,23 @@ function personalizeVariations({
|
|
719
719
|
}
|
720
720
|
if (evaluateVariantMatch(variant.id, variant.pz, scores, onLogMessage)) {
|
721
721
|
let variantToAdd = variant;
|
722
|
-
|
722
|
+
const isControl = false;
|
723
723
|
if (take === 1 && defaultVariants.length && typeof variant.pz.control === "number") {
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
isControl = entry.control;
|
728
|
-
} else {
|
729
|
-
isControl = rollForControlGroup(variant.pz.control);
|
724
|
+
let isControl2 = context.getPersonalizeVariantControl(name, currentIndex);
|
725
|
+
if (typeof isControl2 === "undefined") {
|
726
|
+
isControl2 = rollForControlGroup(variant.pz.control);
|
730
727
|
context.storage.updateData([
|
731
728
|
{
|
732
729
|
type: "setpersonalizecontrol",
|
733
730
|
data: {
|
734
731
|
personlizationName: name,
|
735
732
|
index: currentIndex,
|
736
|
-
control:
|
733
|
+
control: isControl2
|
737
734
|
}
|
738
735
|
}
|
739
736
|
]);
|
740
737
|
}
|
741
|
-
if (
|
738
|
+
if (isControl2) {
|
742
739
|
variantToAdd = defaultVariants[0];
|
743
740
|
}
|
744
741
|
}
|
@@ -1058,8 +1055,9 @@ function decodePersonalizeVariants(data) {
|
|
1058
1055
|
return void 0;
|
1059
1056
|
}
|
1060
1057
|
const results = {};
|
1061
|
-
Object.keys(parsed).forEach((
|
1062
|
-
const variants = parsed[
|
1058
|
+
Object.keys(parsed).forEach((k) => {
|
1059
|
+
const variants = parsed[k].split(",");
|
1060
|
+
const key = decodeURIComponent(k);
|
1063
1061
|
results[key] = variants.map((variant) => {
|
1064
1062
|
const [index, control] = variant.split(":");
|
1065
1063
|
return {
|
@@ -1218,13 +1216,12 @@ function applyCommandsToData(commands, state, inControlGroup) {
|
|
1218
1216
|
(i) => i.index === command.data.index
|
1219
1217
|
);
|
1220
1218
|
if (!existingDef) {
|
1221
|
-
|
1219
|
+
newData.personalizeVariants[command.data.personlizationName].push({
|
1222
1220
|
index: command.data.index,
|
1223
1221
|
control: command.data.control
|
1224
|
-
};
|
1225
|
-
|
1226
|
-
|
1227
|
-
existingDef.control = command.data.control;
|
1222
|
+
});
|
1223
|
+
} else {
|
1224
|
+
console.warn("Overwriting existing control group definition is not allowed");
|
1228
1225
|
}
|
1229
1226
|
break;
|
1230
1227
|
default:
|
@@ -1588,7 +1585,7 @@ var Context = class {
|
|
1588
1585
|
* will NOT result in a recomputation of signal state.
|
1589
1586
|
*/
|
1590
1587
|
async update(newData) {
|
1591
|
-
var _a, _b, _c;
|
1588
|
+
var _a, _b, _c, _d;
|
1592
1589
|
const commands = [];
|
1593
1590
|
const newServerSideTests = {};
|
1594
1591
|
if ((_a = __privateGet(this, _serverTransitionState)) == null ? void 0 : _a.quirks) {
|
@@ -1618,6 +1615,17 @@ var Context = class {
|
|
1618
1615
|
);
|
1619
1616
|
}
|
1620
1617
|
}
|
1618
|
+
if ((_c = __privateGet(this, _serverTransitionState)) == null ? void 0 : _c.personalizeVariants) {
|
1619
|
+
Object.keys(__privateGet(this, _serverTransitionState).personalizeVariants).forEach((personalizationName) => {
|
1620
|
+
const variants = __privateGet(this, _serverTransitionState).personalizeVariants[personalizationName];
|
1621
|
+
variants.forEach((e) => {
|
1622
|
+
commands.push({
|
1623
|
+
type: "setpersonalizecontrol",
|
1624
|
+
data: { personlizationName: personalizationName, index: e.index, control: e.control }
|
1625
|
+
});
|
1626
|
+
});
|
1627
|
+
});
|
1628
|
+
}
|
1621
1629
|
try {
|
1622
1630
|
__privateGet(this, _mitt3).emit("log", [
|
1623
1631
|
"info",
|
@@ -1627,7 +1635,7 @@ var Context = class {
|
|
1627
1635
|
...newData,
|
1628
1636
|
// need to convert url to string so it can be json serialized
|
1629
1637
|
// to go over postMessage to chrome extension
|
1630
|
-
url: (
|
1638
|
+
url: (_d = newData.url) == null ? void 0 : _d.toString()
|
1631
1639
|
}
|
1632
1640
|
]);
|
1633
1641
|
if (newData.quirks) {
|
@@ -1709,6 +1717,13 @@ var Context = class {
|
|
1709
1717
|
}
|
1710
1718
|
]);
|
1711
1719
|
}
|
1720
|
+
getPersonalizeVariantControl(name, index) {
|
1721
|
+
var _a, _b, _c;
|
1722
|
+
const source = (_b = (_a = __privateGet(this, _serverTransitionState)) == null ? void 0 : _a.personalizeVariants) != null ? _b : this.storage.data.personalizeVariants;
|
1723
|
+
const variants = (_c = source == null ? void 0 : source[name]) != null ? _c : [];
|
1724
|
+
const variant = variants.find((v) => v.index === index);
|
1725
|
+
return variant == null ? void 0 : variant.control;
|
1726
|
+
}
|
1712
1727
|
/**
|
1713
1728
|
* Writes a message to the Context log sink.
|
1714
1729
|
* Used by Uniform internal SDK; not intended for public use.
|
package/dist/index.mjs
CHANGED
@@ -614,7 +614,7 @@ function personalizeVariations({
|
|
614
614
|
take = 1,
|
615
615
|
onLogMessage
|
616
616
|
}) {
|
617
|
-
var _a, _b, _c, _d
|
617
|
+
var _a, _b, _c, _d;
|
618
618
|
onLogMessage == null ? void 0 : onLogMessage(["info", 300, "GROUP", { name, take }]);
|
619
619
|
try {
|
620
620
|
const control = (_a = context.storage.data.controlGroup) != null ? _a : false;
|
@@ -649,26 +649,23 @@ function personalizeVariations({
|
|
649
649
|
}
|
650
650
|
if (evaluateVariantMatch(variant.id, variant.pz, scores, onLogMessage)) {
|
651
651
|
let variantToAdd = variant;
|
652
|
-
|
652
|
+
const isControl = false;
|
653
653
|
if (take === 1 && defaultVariants.length && typeof variant.pz.control === "number") {
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
isControl = entry.control;
|
658
|
-
} else {
|
659
|
-
isControl = rollForControlGroup(variant.pz.control);
|
654
|
+
let isControl2 = context.getPersonalizeVariantControl(name, currentIndex);
|
655
|
+
if (typeof isControl2 === "undefined") {
|
656
|
+
isControl2 = rollForControlGroup(variant.pz.control);
|
660
657
|
context.storage.updateData([
|
661
658
|
{
|
662
659
|
type: "setpersonalizecontrol",
|
663
660
|
data: {
|
664
661
|
personlizationName: name,
|
665
662
|
index: currentIndex,
|
666
|
-
control:
|
663
|
+
control: isControl2
|
667
664
|
}
|
668
665
|
}
|
669
666
|
]);
|
670
667
|
}
|
671
|
-
if (
|
668
|
+
if (isControl2) {
|
672
669
|
variantToAdd = defaultVariants[0];
|
673
670
|
}
|
674
671
|
}
|
@@ -988,8 +985,9 @@ function decodePersonalizeVariants(data) {
|
|
988
985
|
return void 0;
|
989
986
|
}
|
990
987
|
const results = {};
|
991
|
-
Object.keys(parsed).forEach((
|
992
|
-
const variants = parsed[
|
988
|
+
Object.keys(parsed).forEach((k) => {
|
989
|
+
const variants = parsed[k].split(",");
|
990
|
+
const key = decodeURIComponent(k);
|
993
991
|
results[key] = variants.map((variant) => {
|
994
992
|
const [index, control] = variant.split(":");
|
995
993
|
return {
|
@@ -1148,13 +1146,12 @@ function applyCommandsToData(commands, state, inControlGroup) {
|
|
1148
1146
|
(i) => i.index === command.data.index
|
1149
1147
|
);
|
1150
1148
|
if (!existingDef) {
|
1151
|
-
|
1149
|
+
newData.personalizeVariants[command.data.personlizationName].push({
|
1152
1150
|
index: command.data.index,
|
1153
1151
|
control: command.data.control
|
1154
|
-
};
|
1155
|
-
|
1156
|
-
|
1157
|
-
existingDef.control = command.data.control;
|
1152
|
+
});
|
1153
|
+
} else {
|
1154
|
+
console.warn("Overwriting existing control group definition is not allowed");
|
1158
1155
|
}
|
1159
1156
|
break;
|
1160
1157
|
default:
|
@@ -1518,7 +1515,7 @@ var Context = class {
|
|
1518
1515
|
* will NOT result in a recomputation of signal state.
|
1519
1516
|
*/
|
1520
1517
|
async update(newData) {
|
1521
|
-
var _a, _b, _c;
|
1518
|
+
var _a, _b, _c, _d;
|
1522
1519
|
const commands = [];
|
1523
1520
|
const newServerSideTests = {};
|
1524
1521
|
if ((_a = __privateGet(this, _serverTransitionState)) == null ? void 0 : _a.quirks) {
|
@@ -1548,6 +1545,17 @@ var Context = class {
|
|
1548
1545
|
);
|
1549
1546
|
}
|
1550
1547
|
}
|
1548
|
+
if ((_c = __privateGet(this, _serverTransitionState)) == null ? void 0 : _c.personalizeVariants) {
|
1549
|
+
Object.keys(__privateGet(this, _serverTransitionState).personalizeVariants).forEach((personalizationName) => {
|
1550
|
+
const variants = __privateGet(this, _serverTransitionState).personalizeVariants[personalizationName];
|
1551
|
+
variants.forEach((e) => {
|
1552
|
+
commands.push({
|
1553
|
+
type: "setpersonalizecontrol",
|
1554
|
+
data: { personlizationName: personalizationName, index: e.index, control: e.control }
|
1555
|
+
});
|
1556
|
+
});
|
1557
|
+
});
|
1558
|
+
}
|
1551
1559
|
try {
|
1552
1560
|
__privateGet(this, _mitt3).emit("log", [
|
1553
1561
|
"info",
|
@@ -1557,7 +1565,7 @@ var Context = class {
|
|
1557
1565
|
...newData,
|
1558
1566
|
// need to convert url to string so it can be json serialized
|
1559
1567
|
// to go over postMessage to chrome extension
|
1560
|
-
url: (
|
1568
|
+
url: (_d = newData.url) == null ? void 0 : _d.toString()
|
1561
1569
|
}
|
1562
1570
|
]);
|
1563
1571
|
if (newData.quirks) {
|
@@ -1639,6 +1647,13 @@ var Context = class {
|
|
1639
1647
|
}
|
1640
1648
|
]);
|
1641
1649
|
}
|
1650
|
+
getPersonalizeVariantControl(name, index) {
|
1651
|
+
var _a, _b, _c;
|
1652
|
+
const source = (_b = (_a = __privateGet(this, _serverTransitionState)) == null ? void 0 : _a.personalizeVariants) != null ? _b : this.storage.data.personalizeVariants;
|
1653
|
+
const variants = (_c = source == null ? void 0 : source[name]) != null ? _c : [];
|
1654
|
+
const variant = variants.find((v) => v.index === index);
|
1655
|
+
return variant == null ? void 0 : variant.control;
|
1656
|
+
}
|
1642
1657
|
/**
|
1643
1658
|
* Writes a message to the Context log sink.
|
1644
1659
|
* Used by Uniform internal SDK; not intended for public use.
|
@@ -1082,6 +1082,7 @@ declare class Context implements ContextInstance {
|
|
1082
1082
|
getTestVariantId(testName: string): string | null | undefined;
|
1083
1083
|
/** use test() instead */
|
1084
1084
|
setTestVariantId(testName: string, variantId: string): void;
|
1085
|
+
getPersonalizeVariantControl(name: string, index: number): boolean | undefined;
|
1085
1086
|
/**
|
1086
1087
|
* Writes a message to the Context log sink.
|
1087
1088
|
* Used by Uniform internal SDK; not intended for public use.
|
@@ -1082,6 +1082,7 @@ declare class Context implements ContextInstance {
|
|
1082
1082
|
getTestVariantId(testName: string): string | null | undefined;
|
1083
1083
|
/** use test() instead */
|
1084
1084
|
setTestVariantId(testName: string, variantId: string): void;
|
1085
|
+
getPersonalizeVariantControl(name: string, index: number): boolean | undefined;
|
1085
1086
|
/**
|
1086
1087
|
* Writes a message to the Context log sink.
|
1087
1088
|
* Used by Uniform internal SDK; not intended for public use.
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@uniformdev/context",
|
3
|
-
"version": "19.128.1-alpha.
|
3
|
+
"version": "19.128.1-alpha.13+43aae451f5",
|
4
4
|
"description": "Uniform Context core package",
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
6
6
|
"main": "./dist/index.js",
|
@@ -66,5 +66,5 @@
|
|
66
66
|
"publishConfig": {
|
67
67
|
"access": "public"
|
68
68
|
},
|
69
|
-
"gitHead": "
|
69
|
+
"gitHead": "43aae451f56db9125e3f2c875fe1ce5a95a501f2"
|
70
70
|
}
|