@plasmicapp/loader-splits 1.0.2 → 1.0.5

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.
@@ -2,57 +2,28 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- function isMatching(cond, value) {
6
- var numMatches = 0;
7
- Object.keys(cond).forEach(function (op) {
8
- switch (op) {
9
- case 'eq':
10
- {
11
- numMatches += Number(value === cond[op]);
12
- break;
13
- }
5
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
14
6
 
15
- case 'lt':
16
- {
17
- numMatches += Number(value < cond[op]);
18
- break;
19
- }
7
+ var jsonLogic = _interopDefault(require('json-logic-js'));
20
8
 
21
- case 'lte':
22
- {
23
- numMatches += Number(value <= cond[op]);
24
- break;
25
- }
9
+ function _extends() {
10
+ _extends = Object.assign || function (target) {
11
+ for (var i = 1; i < arguments.length; i++) {
12
+ var source = arguments[i];
26
13
 
27
- case 'gt':
28
- {
29
- numMatches += Number(value > cond[op]);
30
- break;
14
+ for (var key in source) {
15
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
16
+ target[key] = source[key];
31
17
  }
18
+ }
19
+ }
32
20
 
33
- case 'gte':
34
- {
35
- numMatches += Number(value >= cond[op]);
36
- break;
37
- }
21
+ return target;
22
+ };
38
23
 
39
- default:
40
- {
41
- throw new Error('Unknown match value');
42
- }
43
- }
44
- });
45
- return numMatches === Object.keys(cond).length;
24
+ return _extends.apply(this, arguments);
46
25
  }
47
26
 
48
- var matchesPattern = function matchesPattern(pattern, traits) {
49
- var matches = 0;
50
- Object.keys(pattern).forEach(function (attr) {
51
- matches += Number(isMatching(pattern[attr], traits[attr]));
52
- });
53
- return matches === Object.keys(pattern).length;
54
- };
55
-
56
27
  var getSplitKey = function getSplitKey(split) {
57
28
  return "" + (split.type === 'experiment' ? 'exp.' : 'seg.') + split.id;
58
29
  };
@@ -87,7 +58,9 @@ function getActiveVariation(opts) {
87
58
  }
88
59
  } else if (split.type === 'segment') {
89
60
  for (var _i = 0; _i < numSlices; _i++) {
90
- if (matchesPattern(split.slices[_i].cond, opts.traits)) {
61
+ if (jsonLogic.apply(split.slices[_i].cond, _extends({
62
+ time: new Date().toISOString()
63
+ }, opts.traits))) {
91
64
  chosenSlice = split.slices[_i];
92
65
  }
93
66
  }
@@ -100,7 +73,9 @@ function getActiveVariation(opts) {
100
73
  variation["ext." + split.externalId] = chosenSlice.externalId;
101
74
  }
102
75
 
103
- updateKnownValue(key, chosenSlice.id);
76
+ if (split.type === 'experiment') {
77
+ updateKnownValue(key, chosenSlice.id);
78
+ }
104
79
  }
105
80
  });
106
81
  return variation;
@@ -1 +1 @@
1
- {"version":3,"file":"loader-splits.cjs.development.js","sources":["../src/variation.ts"],"sourcesContent":["import { Split } from '@plasmicapp/loader-fetcher';\n\ntype MatchOp = 'eq' | 'lt' | 'lte' | 'gt' | 'gte';\n\nfunction isMatching(\n cond: Record<MatchOp, string | number>,\n value: string | number\n) {\n let numMatches = 0;\n Object.keys(cond).forEach((op) => {\n switch (op) {\n case 'eq': {\n numMatches += Number(value === cond[op]);\n break;\n }\n case 'lt': {\n numMatches += Number(value < cond[op]);\n break;\n }\n case 'lte': {\n numMatches += Number(value <= cond[op]);\n break;\n }\n case 'gt': {\n numMatches += Number(value > cond[op]);\n break;\n }\n case 'gte': {\n numMatches += Number(value >= cond[op]);\n break;\n }\n default: {\n throw new Error('Unknown match value');\n }\n }\n });\n\n return numMatches === Object.keys(cond).length;\n}\n\nconst matchesPattern = (\n pattern: Record<string, any>,\n traits: Record<string, string | number>\n) => {\n let matches = 0;\n Object.keys(pattern).forEach((attr) => {\n matches += Number(isMatching(pattern[attr], traits[attr]));\n });\n return matches === Object.keys(pattern).length;\n};\n\nexport const getSplitKey = (split: Split) => {\n return `${split.type === 'experiment' ? 'exp.' : 'seg.'}${split.id}`;\n};\n\nexport function getActiveVariation(opts: {\n splits: Split[];\n traits: Record<string, string | number>;\n getKnownValue: (key: string) => string | undefined;\n updateKnownValue: (key: string, value: string) => void;\n}) {\n const { splits, getKnownValue, updateKnownValue } = opts;\n const variation: Record<string, string> = {};\n splits.forEach((split) => {\n const key = getSplitKey(split);\n const knownVal = getKnownValue(key);\n if (knownVal) {\n variation[key] = knownVal;\n return;\n }\n const numSlices = split.slices.length;\n let chosenSlice = undefined;\n if (split.type === 'experiment') {\n let p = Math.random();\n chosenSlice = split.slices[numSlices - 1];\n for (let i = 0; i < numSlices; i++) {\n if (p - split.slices[i].prob <= 0) {\n chosenSlice = split.slices[i];\n break;\n }\n p -= split.slices[i].prob;\n }\n } else if (split.type === 'segment') {\n for (let i = 0; i < numSlices; i++) {\n if (matchesPattern(split.slices[i].cond, opts.traits)) {\n chosenSlice = split.slices[i];\n }\n }\n }\n\n if (chosenSlice) {\n variation[key] = chosenSlice.id;\n if (split.externalId && chosenSlice.externalId) {\n variation[`ext.${split.externalId}`] = chosenSlice.externalId;\n }\n updateKnownValue(key, chosenSlice.id);\n }\n });\n\n return variation;\n}\n"],"names":["isMatching","cond","value","numMatches","Object","keys","forEach","op","Number","Error","length","matchesPattern","pattern","traits","matches","attr","getSplitKey","split","type","id","getActiveVariation","opts","splits","getKnownValue","updateKnownValue","variation","key","knownVal","numSlices","slices","chosenSlice","undefined","p","Math","random","i","prob","externalId"],"mappings":"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"}
1
+ {"version":3,"file":"loader-splits.cjs.development.js","sources":["../src/variation.ts"],"sourcesContent":["import { Split } from '@plasmicapp/loader-fetcher';\nimport jsonLogic from 'json-logic-js';\n\nexport const getSplitKey = (split: Split) => {\n return `${split.type === 'experiment' ? 'exp.' : 'seg.'}${split.id}`;\n};\n\nexport function getActiveVariation(opts: {\n splits: Split[];\n traits: Record<string, string | number>;\n getKnownValue: (key: string) => string | undefined;\n updateKnownValue: (key: string, value: string) => void;\n}) {\n const { splits, getKnownValue, updateKnownValue } = opts;\n const variation: Record<string, string> = {};\n splits.forEach((split) => {\n const key = getSplitKey(split);\n const knownVal = getKnownValue(key);\n if (knownVal) {\n variation[key] = knownVal;\n return;\n }\n const numSlices = split.slices.length;\n let chosenSlice = undefined;\n if (split.type === 'experiment') {\n let p = Math.random();\n chosenSlice = split.slices[numSlices - 1];\n for (let i = 0; i < numSlices; i++) {\n if (p - split.slices[i].prob <= 0) {\n chosenSlice = split.slices[i];\n break;\n }\n p -= split.slices[i].prob;\n }\n } else if (split.type === 'segment') {\n for (let i = 0; i < numSlices; i++) {\n if (\n jsonLogic.apply(split.slices[i].cond, {\n time: new Date().toISOString(),\n ...opts.traits,\n })\n ) {\n chosenSlice = split.slices[i];\n }\n }\n }\n\n if (chosenSlice) {\n variation[key] = chosenSlice.id;\n if (split.externalId && chosenSlice.externalId) {\n variation[`ext.${split.externalId}`] = chosenSlice.externalId;\n }\n if (split.type === 'experiment') {\n updateKnownValue(key, chosenSlice.id);\n }\n }\n });\n\n return variation;\n}\n"],"names":["getSplitKey","split","type","id","getActiveVariation","opts","splits","getKnownValue","updateKnownValue","variation","forEach","key","knownVal","numSlices","slices","length","chosenSlice","undefined","p","Math","random","i","prob","jsonLogic","apply","cond","time","Date","toISOString","traits","externalId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;IAGaA,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD;AACzB,eAAUA,KAAK,CAACC,IAAN,KAAe,YAAf,GAA8B,MAA9B,GAAuC,MAAjD,IAA0DD,KAAK,CAACE,EAAhE;AACD;SAEeC,mBAAmBC;AAMjC,MAAQC,MAAR,GAAoDD,IAApD,CAAQC,MAAR;AAAA,MAAgBC,aAAhB,GAAoDF,IAApD,CAAgBE,aAAhB;AAAA,MAA+BC,gBAA/B,GAAoDH,IAApD,CAA+BG,gBAA/B;AACA,MAAMC,SAAS,GAA2B,EAA1C;AACAH,EAAAA,MAAM,CAACI,OAAP,CAAe,UAACT,KAAD;AACb,QAAMU,GAAG,GAAGX,WAAW,CAACC,KAAD,CAAvB;AACA,QAAMW,QAAQ,GAAGL,aAAa,CAACI,GAAD,CAA9B;;AACA,QAAIC,QAAJ,EAAc;AACZH,MAAAA,SAAS,CAACE,GAAD,CAAT,GAAiBC,QAAjB;AACA;AACD;;AACD,QAAMC,SAAS,GAAGZ,KAAK,CAACa,MAAN,CAAaC,MAA/B;AACA,QAAIC,WAAW,GAAGC,SAAlB;;AACA,QAAIhB,KAAK,CAACC,IAAN,KAAe,YAAnB,EAAiC;AAC/B,UAAIgB,CAAC,GAAGC,IAAI,CAACC,MAAL,EAAR;AACAJ,MAAAA,WAAW,GAAGf,KAAK,CAACa,MAAN,CAAaD,SAAS,GAAG,CAAzB,CAAd;;AACA,WAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,SAApB,EAA+BQ,CAAC,EAAhC,EAAoC;AAClC,YAAIH,CAAC,GAAGjB,KAAK,CAACa,MAAN,CAAaO,CAAb,EAAgBC,IAApB,IAA4B,CAAhC,EAAmC;AACjCN,UAAAA,WAAW,GAAGf,KAAK,CAACa,MAAN,CAAaO,CAAb,CAAd;AACA;AACD;;AACDH,QAAAA,CAAC,IAAIjB,KAAK,CAACa,MAAN,CAAaO,CAAb,EAAgBC,IAArB;AACD;AACF,KAVD,MAUO,IAAIrB,KAAK,CAACC,IAAN,KAAe,SAAnB,EAA8B;AACnC,WAAK,IAAImB,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGR,SAApB,EAA+BQ,EAAC,EAAhC,EAAoC;AAClC,YACEE,SAAS,CAACC,KAAV,CAAgBvB,KAAK,CAACa,MAAN,CAAaO,EAAb,EAAgBI,IAAhC;AACEC,UAAAA,IAAI,EAAE,IAAIC,IAAJ,GAAWC,WAAX;AADR,WAEKvB,IAAI,CAACwB,MAFV,EADF,EAKE;AACAb,UAAAA,WAAW,GAAGf,KAAK,CAACa,MAAN,CAAaO,EAAb,CAAd;AACD;AACF;AACF;;AAED,QAAIL,WAAJ,EAAiB;AACfP,MAAAA,SAAS,CAACE,GAAD,CAAT,GAAiBK,WAAW,CAACb,EAA7B;;AACA,UAAIF,KAAK,CAAC6B,UAAN,IAAoBd,WAAW,CAACc,UAApC,EAAgD;AAC9CrB,QAAAA,SAAS,UAAQR,KAAK,CAAC6B,UAAd,CAAT,GAAuCd,WAAW,CAACc,UAAnD;AACD;;AACD,UAAI7B,KAAK,CAACC,IAAN,KAAe,YAAnB,EAAiC;AAC/BM,QAAAA,gBAAgB,CAACG,GAAD,EAAMK,WAAW,CAACb,EAAlB,CAAhB;AACD;AACF;AACF,GAzCD;AA2CA,SAAOM,SAAP;AACD;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=function(e,r){var t=0;return Object.keys(e).forEach((function(a){var n,s,i;t+=Number((n=e[a],s=r[a],i=0,Object.keys(n).forEach((function(e){switch(e){case"eq":i+=Number(s===n[e]);break;case"lt":i+=Number(s<n[e]);break;case"lte":i+=Number(s<=n[e]);break;case"gt":i+=Number(s>n[e]);break;case"gte":i+=Number(s>=n[e]);break;default:throw new Error("Unknown match value")}})),i===Object.keys(n).length))})),t===Object.keys(e).length},r=function(e){return("experiment"===e.type?"exp.":"seg.")+e.id};exports.getActiveVariation=function(t){var a=t.getKnownValue,n=t.updateKnownValue,s={};return t.splits.forEach((function(i){var c=r(i),o=a(c);if(o)s[c]=o;else{var l=i.slices.length,u=void 0;if("experiment"===i.type){var b=Math.random();u=i.slices[l-1];for(var f=0;f<l;f++){if(b-i.slices[f].prob<=0){u=i.slices[f];break}b-=i.slices[f].prob}}else if("segment"===i.type)for(var p=0;p<l;p++)e(i.slices[p].cond,t.traits)&&(u=i.slices[p]);u&&(s[c]=u.id,i.externalId&&u.externalId&&(s["ext."+i.externalId]=u.externalId),n(c,u.id))}})),s},exports.getSplitKey=r;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=(e=require("json-logic-js"))&&"object"==typeof e&&"default"in e?e.default:e;function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}var i=function(e){return("experiment"===e.type?"exp.":"seg.")+e.id};exports.getActiveVariation=function(e){var n=e.getKnownValue,a=e.updateKnownValue,s={};return e.splits.forEach((function(o){var l=i(o),p=n(l);if(p)s[l]=p;else{var c=o.slices.length,f=void 0;if("experiment"===o.type){var u=Math.random();f=o.slices[c-1];for(var d=0;d<c;d++){if(u-o.slices[d].prob<=0){f=o.slices[d];break}u-=o.slices[d].prob}}else if("segment"===o.type)for(var v=0;v<c;v++)t.apply(o.slices[v].cond,r({time:(new Date).toISOString()},e.traits))&&(f=o.slices[v]);f&&(s[l]=f.id,o.externalId&&f.externalId&&(s["ext."+o.externalId]=f.externalId),"experiment"===o.type&&a(l,f.id))}})),s},exports.getSplitKey=i;
2
2
  //# sourceMappingURL=loader-splits.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader-splits.cjs.production.min.js","sources":["../src/variation.ts"],"sourcesContent":["import { Split } from '@plasmicapp/loader-fetcher';\n\ntype MatchOp = 'eq' | 'lt' | 'lte' | 'gt' | 'gte';\n\nfunction isMatching(\n cond: Record<MatchOp, string | number>,\n value: string | number\n) {\n let numMatches = 0;\n Object.keys(cond).forEach((op) => {\n switch (op) {\n case 'eq': {\n numMatches += Number(value === cond[op]);\n break;\n }\n case 'lt': {\n numMatches += Number(value < cond[op]);\n break;\n }\n case 'lte': {\n numMatches += Number(value <= cond[op]);\n break;\n }\n case 'gt': {\n numMatches += Number(value > cond[op]);\n break;\n }\n case 'gte': {\n numMatches += Number(value >= cond[op]);\n break;\n }\n default: {\n throw new Error('Unknown match value');\n }\n }\n });\n\n return numMatches === Object.keys(cond).length;\n}\n\nconst matchesPattern = (\n pattern: Record<string, any>,\n traits: Record<string, string | number>\n) => {\n let matches = 0;\n Object.keys(pattern).forEach((attr) => {\n matches += Number(isMatching(pattern[attr], traits[attr]));\n });\n return matches === Object.keys(pattern).length;\n};\n\nexport const getSplitKey = (split: Split) => {\n return `${split.type === 'experiment' ? 'exp.' : 'seg.'}${split.id}`;\n};\n\nexport function getActiveVariation(opts: {\n splits: Split[];\n traits: Record<string, string | number>;\n getKnownValue: (key: string) => string | undefined;\n updateKnownValue: (key: string, value: string) => void;\n}) {\n const { splits, getKnownValue, updateKnownValue } = opts;\n const variation: Record<string, string> = {};\n splits.forEach((split) => {\n const key = getSplitKey(split);\n const knownVal = getKnownValue(key);\n if (knownVal) {\n variation[key] = knownVal;\n return;\n }\n const numSlices = split.slices.length;\n let chosenSlice = undefined;\n if (split.type === 'experiment') {\n let p = Math.random();\n chosenSlice = split.slices[numSlices - 1];\n for (let i = 0; i < numSlices; i++) {\n if (p - split.slices[i].prob <= 0) {\n chosenSlice = split.slices[i];\n break;\n }\n p -= split.slices[i].prob;\n }\n } else if (split.type === 'segment') {\n for (let i = 0; i < numSlices; i++) {\n if (matchesPattern(split.slices[i].cond, opts.traits)) {\n chosenSlice = split.slices[i];\n }\n }\n }\n\n if (chosenSlice) {\n variation[key] = chosenSlice.id;\n if (split.externalId && chosenSlice.externalId) {\n variation[`ext.${split.externalId}`] = chosenSlice.externalId;\n }\n updateKnownValue(key, chosenSlice.id);\n }\n });\n\n return variation;\n}\n"],"names":["matchesPattern","pattern","traits","matches","Object","keys","forEach","attr","cond","value","numMatches","Number","op","Error","length","getSplitKey","split","type","id","opts","getKnownValue","updateKnownValue","variation","splits","key","knownVal","numSlices","slices","chosenSlice","undefined","p","Math","random","i","prob","externalId"],"mappings":"oEAwCA,IAAMA,EAAiB,SACrBC,EACAC,OAEIC,EAAU,SACdC,OAAOC,KAAKJ,GAASK,SAAQ,SAACC,GAzChC,IACEC,EACAC,EAEIC,EAsCFP,GAAWQ,QAzCbH,EAyC+BP,EAAQM,GAxCvCE,EAwC8CP,EAAOK,GAtCjDG,EAAa,EACjBN,OAAOC,KAAKG,GAAMF,SAAQ,SAACM,UACjBA,OACD,KACHF,GAAcC,OAAOF,IAAUD,EAAKI,cAGjC,KACHF,GAAcC,OAAOF,EAAQD,EAAKI,cAG/B,MACHF,GAAcC,OAAOF,GAASD,EAAKI,cAGhC,KACHF,GAAcC,OAAOF,EAAQD,EAAKI,cAG/B,MACHF,GAAcC,OAAOF,GAASD,EAAKI,wBAI7B,IAAIC,MAAM,2BAKfH,IAAeN,OAAOC,KAAKG,GAAMM,YAWjCX,IAAYC,OAAOC,KAAKJ,GAASa,QAG7BC,EAAc,SAACC,UACD,eAAfA,EAAMC,KAAwB,OAAS,QAASD,EAAME,wCAG/BC,OAMjBC,EAAoCD,EAApCC,cAAeC,EAAqBF,EAArBE,iBACzBC,EAAoC,UADUH,EAA5CI,OAEDjB,SAAQ,SAACU,OACRQ,EAAMT,EAAYC,GAClBS,EAAWL,EAAcI,MAC3BC,EACFH,EAAUE,GAAOC,WAGbC,EAAYV,EAAMW,OAAOb,OAC3Bc,OAAcC,KACC,eAAfb,EAAMC,KAAuB,KAC3Ba,EAAIC,KAAKC,SACbJ,EAAcZ,EAAMW,OAAOD,EAAY,OAClC,IAAIO,EAAI,EAAGA,EAAIP,EAAWO,IAAK,IAC9BH,EAAId,EAAMW,OAAOM,GAAGC,MAAQ,EAAG,CACjCN,EAAcZ,EAAMW,OAAOM,SAG7BH,GAAKd,EAAMW,OAAOM,GAAGC,WAElB,GAAmB,YAAflB,EAAMC,SACV,IAAIgB,EAAI,EAAGA,EAAIP,EAAWO,IACzBjC,EAAegB,EAAMW,OAAOM,GAAGzB,KAAMW,EAAKjB,UAC5C0B,EAAcZ,EAAMW,OAAOM,IAK7BL,IACFN,EAAUE,GAAOI,EAAYV,GACzBF,EAAMmB,YAAcP,EAAYO,aAClCb,SAAiBN,EAAMmB,YAAgBP,EAAYO,YAErDd,EAAiBG,EAAKI,EAAYV,SAI/BI"}
1
+ {"version":3,"file":"loader-splits.cjs.production.min.js","sources":["../src/variation.ts"],"sourcesContent":["import { Split } from '@plasmicapp/loader-fetcher';\nimport jsonLogic from 'json-logic-js';\n\nexport const getSplitKey = (split: Split) => {\n return `${split.type === 'experiment' ? 'exp.' : 'seg.'}${split.id}`;\n};\n\nexport function getActiveVariation(opts: {\n splits: Split[];\n traits: Record<string, string | number>;\n getKnownValue: (key: string) => string | undefined;\n updateKnownValue: (key: string, value: string) => void;\n}) {\n const { splits, getKnownValue, updateKnownValue } = opts;\n const variation: Record<string, string> = {};\n splits.forEach((split) => {\n const key = getSplitKey(split);\n const knownVal = getKnownValue(key);\n if (knownVal) {\n variation[key] = knownVal;\n return;\n }\n const numSlices = split.slices.length;\n let chosenSlice = undefined;\n if (split.type === 'experiment') {\n let p = Math.random();\n chosenSlice = split.slices[numSlices - 1];\n for (let i = 0; i < numSlices; i++) {\n if (p - split.slices[i].prob <= 0) {\n chosenSlice = split.slices[i];\n break;\n }\n p -= split.slices[i].prob;\n }\n } else if (split.type === 'segment') {\n for (let i = 0; i < numSlices; i++) {\n if (\n jsonLogic.apply(split.slices[i].cond, {\n time: new Date().toISOString(),\n ...opts.traits,\n })\n ) {\n chosenSlice = split.slices[i];\n }\n }\n }\n\n if (chosenSlice) {\n variation[key] = chosenSlice.id;\n if (split.externalId && chosenSlice.externalId) {\n variation[`ext.${split.externalId}`] = chosenSlice.externalId;\n }\n if (split.type === 'experiment') {\n updateKnownValue(key, chosenSlice.id);\n }\n }\n });\n\n return variation;\n}\n"],"names":["getSplitKey","split","type","id","opts","getKnownValue","updateKnownValue","variation","splits","forEach","key","knownVal","numSlices","slices","length","chosenSlice","undefined","p","Math","random","i","prob","jsonLogic","apply","cond","time","Date","toISOString","traits","externalId"],"mappings":"2WAGaA,EAAc,SAACC,UACD,eAAfA,EAAMC,KAAwB,OAAS,QAASD,EAAME,wCAG/BC,OAMjBC,EAAoCD,EAApCC,cAAeC,EAAqBF,EAArBE,iBACzBC,EAAoC,UADUH,EAA5CI,OAEDC,SAAQ,SAACR,OACRS,EAAMV,EAAYC,GAClBU,EAAWN,EAAcK,MAC3BC,EACFJ,EAAUG,GAAOC,WAGbC,EAAYX,EAAMY,OAAOC,OAC3BC,OAAcC,KACC,eAAff,EAAMC,KAAuB,KAC3Be,EAAIC,KAAKC,SACbJ,EAAcd,EAAMY,OAAOD,EAAY,OAClC,IAAIQ,EAAI,EAAGA,EAAIR,EAAWQ,IAAK,IAC9BH,EAAIhB,EAAMY,OAAOO,GAAGC,MAAQ,EAAG,CACjCN,EAAcd,EAAMY,OAAOO,SAG7BH,GAAKhB,EAAMY,OAAOO,GAAGC,WAElB,GAAmB,YAAfpB,EAAMC,SACV,IAAIkB,EAAI,EAAGA,EAAIR,EAAWQ,IAE3BE,EAAUC,MAAMtB,EAAMY,OAAOO,GAAGI,QAC9BC,MAAM,IAAIC,MAAOC,eACdvB,EAAKwB,WAGVb,EAAcd,EAAMY,OAAOO,IAK7BL,IACFR,EAAUG,GAAOK,EAAYZ,GACzBF,EAAM4B,YAAcd,EAAYc,aAClCtB,SAAiBN,EAAM4B,YAAgBd,EAAYc,YAElC,eAAf5B,EAAMC,MACRI,EAAiBI,EAAKK,EAAYZ,SAKjCI"}
@@ -1,54 +1,23 @@
1
- function isMatching(cond, value) {
2
- var numMatches = 0;
3
- Object.keys(cond).forEach(function (op) {
4
- switch (op) {
5
- case 'eq':
6
- {
7
- numMatches += Number(value === cond[op]);
8
- break;
9
- }
1
+ import jsonLogic from 'json-logic-js';
10
2
 
11
- case 'lt':
12
- {
13
- numMatches += Number(value < cond[op]);
14
- break;
15
- }
3
+ function _extends() {
4
+ _extends = Object.assign || function (target) {
5
+ for (var i = 1; i < arguments.length; i++) {
6
+ var source = arguments[i];
16
7
 
17
- case 'lte':
18
- {
19
- numMatches += Number(value <= cond[op]);
20
- break;
8
+ for (var key in source) {
9
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
10
+ target[key] = source[key];
21
11
  }
12
+ }
13
+ }
22
14
 
23
- case 'gt':
24
- {
25
- numMatches += Number(value > cond[op]);
26
- break;
27
- }
15
+ return target;
16
+ };
28
17
 
29
- case 'gte':
30
- {
31
- numMatches += Number(value >= cond[op]);
32
- break;
33
- }
34
-
35
- default:
36
- {
37
- throw new Error('Unknown match value');
38
- }
39
- }
40
- });
41
- return numMatches === Object.keys(cond).length;
18
+ return _extends.apply(this, arguments);
42
19
  }
43
20
 
44
- var matchesPattern = function matchesPattern(pattern, traits) {
45
- var matches = 0;
46
- Object.keys(pattern).forEach(function (attr) {
47
- matches += Number(isMatching(pattern[attr], traits[attr]));
48
- });
49
- return matches === Object.keys(pattern).length;
50
- };
51
-
52
21
  var getSplitKey = function getSplitKey(split) {
53
22
  return "" + (split.type === 'experiment' ? 'exp.' : 'seg.') + split.id;
54
23
  };
@@ -83,7 +52,9 @@ function getActiveVariation(opts) {
83
52
  }
84
53
  } else if (split.type === 'segment') {
85
54
  for (var _i = 0; _i < numSlices; _i++) {
86
- if (matchesPattern(split.slices[_i].cond, opts.traits)) {
55
+ if (jsonLogic.apply(split.slices[_i].cond, _extends({
56
+ time: new Date().toISOString()
57
+ }, opts.traits))) {
87
58
  chosenSlice = split.slices[_i];
88
59
  }
89
60
  }
@@ -96,7 +67,9 @@ function getActiveVariation(opts) {
96
67
  variation["ext." + split.externalId] = chosenSlice.externalId;
97
68
  }
98
69
 
99
- updateKnownValue(key, chosenSlice.id);
70
+ if (split.type === 'experiment') {
71
+ updateKnownValue(key, chosenSlice.id);
72
+ }
100
73
  }
101
74
  });
102
75
  return variation;
@@ -1 +1 @@
1
- {"version":3,"file":"loader-splits.esm.js","sources":["../src/variation.ts"],"sourcesContent":["import { Split } from '@plasmicapp/loader-fetcher';\n\ntype MatchOp = 'eq' | 'lt' | 'lte' | 'gt' | 'gte';\n\nfunction isMatching(\n cond: Record<MatchOp, string | number>,\n value: string | number\n) {\n let numMatches = 0;\n Object.keys(cond).forEach((op) => {\n switch (op) {\n case 'eq': {\n numMatches += Number(value === cond[op]);\n break;\n }\n case 'lt': {\n numMatches += Number(value < cond[op]);\n break;\n }\n case 'lte': {\n numMatches += Number(value <= cond[op]);\n break;\n }\n case 'gt': {\n numMatches += Number(value > cond[op]);\n break;\n }\n case 'gte': {\n numMatches += Number(value >= cond[op]);\n break;\n }\n default: {\n throw new Error('Unknown match value');\n }\n }\n });\n\n return numMatches === Object.keys(cond).length;\n}\n\nconst matchesPattern = (\n pattern: Record<string, any>,\n traits: Record<string, string | number>\n) => {\n let matches = 0;\n Object.keys(pattern).forEach((attr) => {\n matches += Number(isMatching(pattern[attr], traits[attr]));\n });\n return matches === Object.keys(pattern).length;\n};\n\nexport const getSplitKey = (split: Split) => {\n return `${split.type === 'experiment' ? 'exp.' : 'seg.'}${split.id}`;\n};\n\nexport function getActiveVariation(opts: {\n splits: Split[];\n traits: Record<string, string | number>;\n getKnownValue: (key: string) => string | undefined;\n updateKnownValue: (key: string, value: string) => void;\n}) {\n const { splits, getKnownValue, updateKnownValue } = opts;\n const variation: Record<string, string> = {};\n splits.forEach((split) => {\n const key = getSplitKey(split);\n const knownVal = getKnownValue(key);\n if (knownVal) {\n variation[key] = knownVal;\n return;\n }\n const numSlices = split.slices.length;\n let chosenSlice = undefined;\n if (split.type === 'experiment') {\n let p = Math.random();\n chosenSlice = split.slices[numSlices - 1];\n for (let i = 0; i < numSlices; i++) {\n if (p - split.slices[i].prob <= 0) {\n chosenSlice = split.slices[i];\n break;\n }\n p -= split.slices[i].prob;\n }\n } else if (split.type === 'segment') {\n for (let i = 0; i < numSlices; i++) {\n if (matchesPattern(split.slices[i].cond, opts.traits)) {\n chosenSlice = split.slices[i];\n }\n }\n }\n\n if (chosenSlice) {\n variation[key] = chosenSlice.id;\n if (split.externalId && chosenSlice.externalId) {\n variation[`ext.${split.externalId}`] = chosenSlice.externalId;\n }\n updateKnownValue(key, chosenSlice.id);\n }\n });\n\n return variation;\n}\n"],"names":["isMatching","cond","value","numMatches","Object","keys","forEach","op","Number","Error","length","matchesPattern","pattern","traits","matches","attr","getSplitKey","split","type","id","getActiveVariation","opts","splits","getKnownValue","updateKnownValue","variation","key","knownVal","numSlices","slices","chosenSlice","undefined","p","Math","random","i","prob","externalId"],"mappings":"AAIA,SAASA,UAAT,CACEC,IADF,EAEEC,KAFF;AAIE,MAAIC,UAAU,GAAG,CAAjB;AACAC,EAAAA,MAAM,CAACC,IAAP,CAAYJ,IAAZ,EAAkBK,OAAlB,CAA0B,UAACC,EAAD;AACxB,YAAQA,EAAR;AACE,WAAK,IAAL;AAAW;AACTJ,UAAAA,UAAU,IAAIK,MAAM,CAACN,KAAK,KAAKD,IAAI,CAACM,EAAD,CAAf,CAApB;AACA;AACD;;AACD,WAAK,IAAL;AAAW;AACTJ,UAAAA,UAAU,IAAIK,MAAM,CAACN,KAAK,GAAGD,IAAI,CAACM,EAAD,CAAb,CAApB;AACA;AACD;;AACD,WAAK,KAAL;AAAY;AACVJ,UAAAA,UAAU,IAAIK,MAAM,CAACN,KAAK,IAAID,IAAI,CAACM,EAAD,CAAd,CAApB;AACA;AACD;;AACD,WAAK,IAAL;AAAW;AACTJ,UAAAA,UAAU,IAAIK,MAAM,CAACN,KAAK,GAAGD,IAAI,CAACM,EAAD,CAAb,CAApB;AACA;AACD;;AACD,WAAK,KAAL;AAAY;AACVJ,UAAAA,UAAU,IAAIK,MAAM,CAACN,KAAK,IAAID,IAAI,CAACM,EAAD,CAAd,CAApB;AACA;AACD;;AACD;AAAS;AACP,gBAAM,IAAIE,KAAJ,CAAU,qBAAV,CAAN;AACD;AAvBH;AAyBD,GA1BD;AA4BA,SAAON,UAAU,KAAKC,MAAM,CAACC,IAAP,CAAYJ,IAAZ,EAAkBS,MAAxC;AACD;;AAED,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CACrBC,OADqB,EAErBC,MAFqB;AAIrB,MAAIC,OAAO,GAAG,CAAd;AACAV,EAAAA,MAAM,CAACC,IAAP,CAAYO,OAAZ,EAAqBN,OAArB,CAA6B,UAACS,IAAD;AAC3BD,IAAAA,OAAO,IAAIN,MAAM,CAACR,UAAU,CAACY,OAAO,CAACG,IAAD,CAAR,EAAgBF,MAAM,CAACE,IAAD,CAAtB,CAAX,CAAjB;AACD,GAFD;AAGA,SAAOD,OAAO,KAAKV,MAAM,CAACC,IAAP,CAAYO,OAAZ,EAAqBF,MAAxC;AACD,CATD;;IAWaM,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD;AACzB,eAAUA,KAAK,CAACC,IAAN,KAAe,YAAf,GAA8B,MAA9B,GAAuC,MAAjD,IAA0DD,KAAK,CAACE,EAAhE;AACD;SAEeC,mBAAmBC;AAMjC,MAAQC,MAAR,GAAoDD,IAApD,CAAQC,MAAR;AAAA,MAAgBC,aAAhB,GAAoDF,IAApD,CAAgBE,aAAhB;AAAA,MAA+BC,gBAA/B,GAAoDH,IAApD,CAA+BG,gBAA/B;AACA,MAAMC,SAAS,GAA2B,EAA1C;AACAH,EAAAA,MAAM,CAAChB,OAAP,CAAe,UAACW,KAAD;AACb,QAAMS,GAAG,GAAGV,WAAW,CAACC,KAAD,CAAvB;AACA,QAAMU,QAAQ,GAAGJ,aAAa,CAACG,GAAD,CAA9B;;AACA,QAAIC,QAAJ,EAAc;AACZF,MAAAA,SAAS,CAACC,GAAD,CAAT,GAAiBC,QAAjB;AACA;AACD;;AACD,QAAMC,SAAS,GAAGX,KAAK,CAACY,MAAN,CAAanB,MAA/B;AACA,QAAIoB,WAAW,GAAGC,SAAlB;;AACA,QAAId,KAAK,CAACC,IAAN,KAAe,YAAnB,EAAiC;AAC/B,UAAIc,CAAC,GAAGC,IAAI,CAACC,MAAL,EAAR;AACAJ,MAAAA,WAAW,GAAGb,KAAK,CAACY,MAAN,CAAaD,SAAS,GAAG,CAAzB,CAAd;;AACA,WAAK,IAAIO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,SAApB,EAA+BO,CAAC,EAAhC,EAAoC;AAClC,YAAIH,CAAC,GAAGf,KAAK,CAACY,MAAN,CAAaM,CAAb,EAAgBC,IAApB,IAA4B,CAAhC,EAAmC;AACjCN,UAAAA,WAAW,GAAGb,KAAK,CAACY,MAAN,CAAaM,CAAb,CAAd;AACA;AACD;;AACDH,QAAAA,CAAC,IAAIf,KAAK,CAACY,MAAN,CAAaM,CAAb,EAAgBC,IAArB;AACD;AACF,KAVD,MAUO,IAAInB,KAAK,CAACC,IAAN,KAAe,SAAnB,EAA8B;AACnC,WAAK,IAAIiB,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGP,SAApB,EAA+BO,EAAC,EAAhC,EAAoC;AAClC,YAAIxB,cAAc,CAACM,KAAK,CAACY,MAAN,CAAaM,EAAb,EAAgBlC,IAAjB,EAAuBoB,IAAI,CAACR,MAA5B,CAAlB,EAAuD;AACrDiB,UAAAA,WAAW,GAAGb,KAAK,CAACY,MAAN,CAAaM,EAAb,CAAd;AACD;AACF;AACF;;AAED,QAAIL,WAAJ,EAAiB;AACfL,MAAAA,SAAS,CAACC,GAAD,CAAT,GAAiBI,WAAW,CAACX,EAA7B;;AACA,UAAIF,KAAK,CAACoB,UAAN,IAAoBP,WAAW,CAACO,UAApC,EAAgD;AAC9CZ,QAAAA,SAAS,UAAQR,KAAK,CAACoB,UAAd,CAAT,GAAuCP,WAAW,CAACO,UAAnD;AACD;;AACDb,MAAAA,gBAAgB,CAACE,GAAD,EAAMI,WAAW,CAACX,EAAlB,CAAhB;AACD;AACF,GAlCD;AAoCA,SAAOM,SAAP;AACD;;;;"}
1
+ {"version":3,"file":"loader-splits.esm.js","sources":["../src/variation.ts"],"sourcesContent":["import { Split } from '@plasmicapp/loader-fetcher';\nimport jsonLogic from 'json-logic-js';\n\nexport const getSplitKey = (split: Split) => {\n return `${split.type === 'experiment' ? 'exp.' : 'seg.'}${split.id}`;\n};\n\nexport function getActiveVariation(opts: {\n splits: Split[];\n traits: Record<string, string | number>;\n getKnownValue: (key: string) => string | undefined;\n updateKnownValue: (key: string, value: string) => void;\n}) {\n const { splits, getKnownValue, updateKnownValue } = opts;\n const variation: Record<string, string> = {};\n splits.forEach((split) => {\n const key = getSplitKey(split);\n const knownVal = getKnownValue(key);\n if (knownVal) {\n variation[key] = knownVal;\n return;\n }\n const numSlices = split.slices.length;\n let chosenSlice = undefined;\n if (split.type === 'experiment') {\n let p = Math.random();\n chosenSlice = split.slices[numSlices - 1];\n for (let i = 0; i < numSlices; i++) {\n if (p - split.slices[i].prob <= 0) {\n chosenSlice = split.slices[i];\n break;\n }\n p -= split.slices[i].prob;\n }\n } else if (split.type === 'segment') {\n for (let i = 0; i < numSlices; i++) {\n if (\n jsonLogic.apply(split.slices[i].cond, {\n time: new Date().toISOString(),\n ...opts.traits,\n })\n ) {\n chosenSlice = split.slices[i];\n }\n }\n }\n\n if (chosenSlice) {\n variation[key] = chosenSlice.id;\n if (split.externalId && chosenSlice.externalId) {\n variation[`ext.${split.externalId}`] = chosenSlice.externalId;\n }\n if (split.type === 'experiment') {\n updateKnownValue(key, chosenSlice.id);\n }\n }\n });\n\n return variation;\n}\n"],"names":["getSplitKey","split","type","id","getActiveVariation","opts","splits","getKnownValue","updateKnownValue","variation","forEach","key","knownVal","numSlices","slices","length","chosenSlice","undefined","p","Math","random","i","prob","jsonLogic","apply","cond","time","Date","toISOString","traits","externalId"],"mappings":";;;;;;;;;;;;;;;;;;;;IAGaA,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD;AACzB,eAAUA,KAAK,CAACC,IAAN,KAAe,YAAf,GAA8B,MAA9B,GAAuC,MAAjD,IAA0DD,KAAK,CAACE,EAAhE;AACD;SAEeC,mBAAmBC;AAMjC,MAAQC,MAAR,GAAoDD,IAApD,CAAQC,MAAR;AAAA,MAAgBC,aAAhB,GAAoDF,IAApD,CAAgBE,aAAhB;AAAA,MAA+BC,gBAA/B,GAAoDH,IAApD,CAA+BG,gBAA/B;AACA,MAAMC,SAAS,GAA2B,EAA1C;AACAH,EAAAA,MAAM,CAACI,OAAP,CAAe,UAACT,KAAD;AACb,QAAMU,GAAG,GAAGX,WAAW,CAACC,KAAD,CAAvB;AACA,QAAMW,QAAQ,GAAGL,aAAa,CAACI,GAAD,CAA9B;;AACA,QAAIC,QAAJ,EAAc;AACZH,MAAAA,SAAS,CAACE,GAAD,CAAT,GAAiBC,QAAjB;AACA;AACD;;AACD,QAAMC,SAAS,GAAGZ,KAAK,CAACa,MAAN,CAAaC,MAA/B;AACA,QAAIC,WAAW,GAAGC,SAAlB;;AACA,QAAIhB,KAAK,CAACC,IAAN,KAAe,YAAnB,EAAiC;AAC/B,UAAIgB,CAAC,GAAGC,IAAI,CAACC,MAAL,EAAR;AACAJ,MAAAA,WAAW,GAAGf,KAAK,CAACa,MAAN,CAAaD,SAAS,GAAG,CAAzB,CAAd;;AACA,WAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,SAApB,EAA+BQ,CAAC,EAAhC,EAAoC;AAClC,YAAIH,CAAC,GAAGjB,KAAK,CAACa,MAAN,CAAaO,CAAb,EAAgBC,IAApB,IAA4B,CAAhC,EAAmC;AACjCN,UAAAA,WAAW,GAAGf,KAAK,CAACa,MAAN,CAAaO,CAAb,CAAd;AACA;AACD;;AACDH,QAAAA,CAAC,IAAIjB,KAAK,CAACa,MAAN,CAAaO,CAAb,EAAgBC,IAArB;AACD;AACF,KAVD,MAUO,IAAIrB,KAAK,CAACC,IAAN,KAAe,SAAnB,EAA8B;AACnC,WAAK,IAAImB,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGR,SAApB,EAA+BQ,EAAC,EAAhC,EAAoC;AAClC,YACEE,SAAS,CAACC,KAAV,CAAgBvB,KAAK,CAACa,MAAN,CAAaO,EAAb,EAAgBI,IAAhC;AACEC,UAAAA,IAAI,EAAE,IAAIC,IAAJ,GAAWC,WAAX;AADR,WAEKvB,IAAI,CAACwB,MAFV,EADF,EAKE;AACAb,UAAAA,WAAW,GAAGf,KAAK,CAACa,MAAN,CAAaO,EAAb,CAAd;AACD;AACF;AACF;;AAED,QAAIL,WAAJ,EAAiB;AACfP,MAAAA,SAAS,CAACE,GAAD,CAAT,GAAiBK,WAAW,CAACb,EAA7B;;AACA,UAAIF,KAAK,CAAC6B,UAAN,IAAoBd,WAAW,CAACc,UAApC,EAAgD;AAC9CrB,QAAAA,SAAS,UAAQR,KAAK,CAAC6B,UAAd,CAAT,GAAuCd,WAAW,CAACc,UAAnD;AACD;;AACD,UAAI7B,KAAK,CAACC,IAAN,KAAe,YAAnB,EAAiC;AAC/BM,QAAAA,gBAAgB,CAACG,GAAD,EAAMK,WAAW,CAACb,EAAlB,CAAhB;AACD;AACF;AACF,GAzCD;AA2CA,SAAOM,SAAP;AACD;;;;"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.2",
2
+ "version": "1.0.5",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -13,7 +13,8 @@
13
13
  "start": "tsdx watch",
14
14
  "build": "tsdx build",
15
15
  "yalcp": "yalc publish --push",
16
- "test": "tsdx test",
16
+ "test": "tsdx test --passWithNoTests",
17
+ "coverage": "tsdx test --coverage --passWithNoTests",
17
18
  "lint": "tsdx lint",
18
19
  "prepare": "tsdx build",
19
20
  "size": "size-limit",
@@ -45,6 +46,7 @@
45
46
  ],
46
47
  "devDependencies": {
47
48
  "@size-limit/preset-small-lib": "^4.11.0",
49
+ "@types/json-logic-js": "^1.2.1",
48
50
  "husky": "^6.0.0",
49
51
  "size-limit": "^4.11.0",
50
52
  "tsdx": "^0.14.1",
@@ -52,10 +54,11 @@
52
54
  "typescript": "^4.3.2"
53
55
  },
54
56
  "dependencies": {
55
- "@plasmicapp/loader-fetcher": "1.0.2"
57
+ "@plasmicapp/loader-fetcher": "1.0.3",
58
+ "json-logic-js": "^2.0.2"
56
59
  },
57
60
  "publishConfig": {
58
61
  "access": "public"
59
62
  },
60
- "gitHead": "67150233c7ade71ce1ff0f9d5a246821740a8e6f"
63
+ "gitHead": "15fe247a0a2e71c3ac3e3195179ffa96d009085b"
61
64
  }