@featurevisor/sdk 1.35.2 → 1.35.3

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.
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">97.67% </span>
26
+ <span class="strong">95.55% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>42/43</span>
28
+ <span class='fraction'>43/45</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">95% </span>
33
+ <span class="strong">90.47% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>19/20</span>
35
+ <span class='fraction'>19/21</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">97.61% </span>
47
+ <span class="strong">95.45% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>41/42</span>
49
+ <span class='fraction'>42/44</span>
50
50
  </div>
51
51
 
52
52
 
@@ -200,7 +200,11 @@
200
200
  <a name='L135'></a><a href='#L135'>135</a>
201
201
  <a name='L136'></a><a href='#L136'>136</a>
202
202
  <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
204
208
  <span class="cline-any cline-neutral">&nbsp;</span>
205
209
  <span class="cline-any cline-yes">1x</span>
206
210
  <span class="cline-any cline-yes">1x</span>
@@ -211,6 +215,10 @@
211
215
  <span class="cline-any cline-neutral">&nbsp;</span>
212
216
  <span class="cline-any cline-neutral">&nbsp;</span>
213
217
  <span class="cline-any cline-yes">39x</span>
218
+ <span class="cline-any cline-no">&nbsp;</span>
219
+ <span class="cline-any cline-neutral">&nbsp;</span>
220
+ <span class="cline-any cline-neutral">&nbsp;</span>
221
+ <span class="cline-any cline-yes">39x</span>
214
222
  <span class="cline-any cline-yes">65x</span>
215
223
  <span class="cline-any cline-neutral">&nbsp;</span>
216
224
  <span class="cline-any cline-yes">65x</span>
@@ -347,6 +355,10 @@ export function getMatchedAllocation(
347
355
  traffic: Traffic,
348
356
  bucketValue: number,
349
357
  ): Allocation | undefined {
358
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!traffic.allocation) {
359
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
360
+ }
361
+ &nbsp;
350
362
  for (const allocation of traffic.allocation) {
351
363
  const [start, end] = allocation.range;
352
364
  &nbsp;
@@ -481,7 +493,7 @@ export function findForceFromFeature(
481
493
  <div class='footer quiet pad2 space-top1 center small'>
482
494
  Code coverage generated by
483
495
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
484
- at 2025-03-31T21:26:29.644Z
496
+ at 2025-04-12T20:34:55.662Z
485
497
  </div>
486
498
  <script src="prettify.js"></script>
487
499
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.43% </span>
26
+ <span class="strong">92.3% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>599/648</span>
28
+ <span class='fraction'>600/650</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">86.4% </span>
33
+ <span class="strong">86.15% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>305/353</span>
35
+ <span class='fraction'>305/354</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.46% </span>
47
+ <span class="strong">92.33% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>589/637</span>
49
+ <span class='fraction'>590/639</span>
50
50
  </div>
51
51
 
52
52
 
@@ -155,17 +155,17 @@
155
155
 
156
156
  <tr>
157
157
  <td class="file high" data-value="feature.ts"><a href="feature.ts.html">feature.ts</a></td>
158
- <td data-value="97.67" class="pic high">
159
- <div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
158
+ <td data-value="95.55" class="pic high">
159
+ <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
160
160
  </td>
161
- <td data-value="97.67" class="pct high">97.67%</td>
162
- <td data-value="43" class="abs high">42/43</td>
163
- <td data-value="95" class="pct high">95%</td>
164
- <td data-value="20" class="abs high">19/20</td>
161
+ <td data-value="95.55" class="pct high">95.55%</td>
162
+ <td data-value="45" class="abs high">43/45</td>
163
+ <td data-value="90.47" class="pct high">90.47%</td>
164
+ <td data-value="21" class="abs high">19/21</td>
165
165
  <td data-value="100" class="pct high">100%</td>
166
166
  <td data-value="7" class="abs high">7/7</td>
167
- <td data-value="97.61" class="pct high">97.61%</td>
168
- <td data-value="42" class="abs high">41/42</td>
167
+ <td data-value="95.45" class="pct high">95.45%</td>
168
+ <td data-value="44" class="abs high">42/44</td>
169
169
  </tr>
170
170
 
171
171
  <tr>
@@ -221,7 +221,7 @@
221
221
  <div class='footer quiet pad2 space-top1 center small'>
222
222
  Code coverage generated by
223
223
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
224
- at 2025-03-31T21:26:29.644Z
224
+ at 2025-04-12T20:34:55.662Z
225
225
  </div>
226
226
  <script src="prettify.js"></script>
227
227
  <script>
@@ -1834,7 +1834,7 @@ export function createInstance(options: InstanceOptions): FeaturevisorInstance {
1834
1834
  <div class='footer quiet pad2 space-top1 center small'>
1835
1835
  Code coverage generated by
1836
1836
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1837
- at 2025-03-31T21:26:29.644Z
1837
+ at 2025-04-12T20:34:55.662Z
1838
1838
  </div>
1839
1839
  <script src="prettify.js"></script>
1840
1840
  <script>
@@ -340,7 +340,7 @@ export function createLogger(options: CreateLoggerOptions = {}): Logger {
340
340
  <div class='footer quiet pad2 space-top1 center small'>
341
341
  Code coverage generated by
342
342
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
343
- at 2025-03-31T21:26:29.644Z
343
+ at 2025-04-12T20:34:55.662Z
344
344
  </div>
345
345
  <script src="prettify.js"></script>
346
346
  <script>
@@ -244,7 +244,7 @@ export function allGroupSegmentsAreMatched(
244
244
  <div class='footer quiet pad2 space-top1 center small'>
245
245
  Code coverage generated by
246
246
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
247
- at 2025-03-31T21:26:29.644Z
247
+ at 2025-04-12T20:34:55.662Z
248
248
  </div>
249
249
  <script src="prettify.js"></script>
250
250
  <script>
@@ -742,12 +742,12 @@ end_of_record
742
742
  TN:
743
743
  SF:src/feature.ts
744
744
  FN:7,getMatchedAllocation
745
- FN:22,parseFromStringifiedSegments
746
- FN:30,getMatchedTraffic
747
- FN:36,(anonymous_3)
748
- FN:63,getMatchedTrafficAndAllocation
749
- FN:70,(anonymous_5)
750
- FN:99,findForceFromFeature
745
+ FN:26,parseFromStringifiedSegments
746
+ FN:34,getMatchedTraffic
747
+ FN:40,(anonymous_3)
748
+ FN:67,getMatchedTrafficAndAllocation
749
+ FN:74,(anonymous_5)
750
+ FN:103,findForceFromFeature
751
751
  FNF:7
752
752
  FNH:7
753
753
  FNDA:39,getMatchedAllocation
@@ -761,67 +761,70 @@ DA:3,1
761
761
  DA:4,1
762
762
  DA:7,1
763
763
  DA:11,39
764
- DA:12,65
765
- DA:14,65
766
- DA:15,37
767
- DA:19,2
768
- DA:22,1
769
- DA:23,147
770
- DA:24,5
771
- DA:27,142
772
- DA:30,1
773
- DA:36,56
774
- DA:37,81
775
- DA:45,29
776
- DA:48,52
777
- DA:51,56
778
- DA:52,51
779
- DA:55,5
780
- DA:63,1
781
- DA:70,39
782
- DA:71,59
783
- DA:79,39
784
- DA:80,0
785
- DA:86,39
786
- DA:88,39
787
- DA:99,1
788
- DA:105,108
789
- DA:110,108
790
- DA:111,51
791
- DA:114,57
792
- DA:115,153
793
- DA:117,153
794
- DA:121,13
795
- DA:122,13
796
- DA:123,13
797
- DA:126,140
798
- DA:130,1
799
- DA:131,1
800
- DA:132,1
801
- DA:136,57
802
- LF:42
803
- LH:41
804
- BRDA:14,0,0,37
805
- BRDA:14,1,0,65
806
- BRDA:14,1,1,65
807
- BRDA:14,1,2,65
808
- BRDA:23,2,0,5
809
- BRDA:23,3,0,147
810
- BRDA:23,3,1,96
811
- BRDA:23,3,2,96
812
- BRDA:37,4,0,29
813
- BRDA:51,5,0,51
814
- BRDA:51,6,0,56
815
- BRDA:51,6,1,52
816
- BRDA:79,7,0,0
817
- BRDA:110,8,0,51
818
- BRDA:117,9,0,13
819
- BRDA:118,10,0,153
820
- BRDA:118,10,1,148
821
- BRDA:126,11,0,1
822
- BRDA:127,12,0,140
823
- BRDA:127,12,1,5
824
- BRF:20
764
+ DA:12,0
765
+ DA:15,39
766
+ DA:16,65
767
+ DA:18,65
768
+ DA:19,37
769
+ DA:23,2
770
+ DA:26,1
771
+ DA:27,147
772
+ DA:28,5
773
+ DA:31,142
774
+ DA:34,1
775
+ DA:40,56
776
+ DA:41,81
777
+ DA:49,29
778
+ DA:52,52
779
+ DA:55,56
780
+ DA:56,51
781
+ DA:59,5
782
+ DA:67,1
783
+ DA:74,39
784
+ DA:75,59
785
+ DA:83,39
786
+ DA:84,0
787
+ DA:90,39
788
+ DA:92,39
789
+ DA:103,1
790
+ DA:109,108
791
+ DA:114,108
792
+ DA:115,51
793
+ DA:118,57
794
+ DA:119,153
795
+ DA:121,153
796
+ DA:125,13
797
+ DA:126,13
798
+ DA:127,13
799
+ DA:130,140
800
+ DA:134,1
801
+ DA:135,1
802
+ DA:136,1
803
+ DA:140,57
804
+ LF:44
805
+ LH:42
806
+ BRDA:11,0,0,0
807
+ BRDA:18,1,0,37
808
+ BRDA:18,2,0,65
809
+ BRDA:18,2,1,65
810
+ BRDA:18,2,2,65
811
+ BRDA:27,3,0,5
812
+ BRDA:27,4,0,147
813
+ BRDA:27,4,1,96
814
+ BRDA:27,4,2,96
815
+ BRDA:41,5,0,29
816
+ BRDA:55,6,0,51
817
+ BRDA:55,7,0,56
818
+ BRDA:55,7,1,52
819
+ BRDA:83,8,0,0
820
+ BRDA:114,9,0,51
821
+ BRDA:121,10,0,13
822
+ BRDA:122,11,0,153
823
+ BRDA:122,11,1,148
824
+ BRDA:130,12,0,1
825
+ BRDA:131,13,0,140
826
+ BRDA:131,13,1,5
827
+ BRF:21
825
828
  BRH:19
826
829
  end_of_record
827
830
  TN:
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FeaturevisorSDK=t():e.FeaturevisorSDK=t()}(this,(()=>(()=>{var e={393:(e,t,r)=>{"use strict";r.r(t),r.d(t,{compare:()=>n,compareVersions:()=>i,satisfies:()=>o,validate:()=>a});const i=(e,t)=>{const r=u(e),i=u(t),a=r.pop(),n=i.pop(),o=d(r,i);return 0!==o?o:a&&n?d(a.split("."),n.split(".")):a||n?a?-1:1:0},a=e=>"string"==typeof e&&/^[v\d]/.test(e)&&s.test(e),n=(e,t,r)=>{g(r);const a=i(e,t);return v[r].includes(a)},o=(e,t)=>{if(t.includes("||"))return t.split("||").some((t=>o(e,t)));if(t.includes(" "))return t.trim().replace(/\s{2,}/g," ").split(" ").every((t=>o(e,t)));const r=t.match(/^([<>=~^]+)/),i=r?r[1]:"=";if("^"!==i&&"~"!==i)return n(e,t,i);const[a,s,f,,c]=u(e),[l,v,y,,g]=u(t),h=[a,s,f],b=[l,null!=v?v:"x",null!=y?y:"x"];if(g){if(!c)return!1;if(0!==d(h,b))return!1;if(-1===d(c.split("."),g.split(".")))return!1}const p=b.findIndex((e=>"0"!==e))+1,k="~"===i?2:p>1?p:1;return 0===d(h.slice(0,k),b.slice(0,k))&&-1!==d(h.slice(k),b.slice(k))},s=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,u=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(s);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},f=e=>"*"===e||"x"===e||"X"===e,c=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},l=(e,t)=>{if(f(e)||f(t))return 0;const[r,i]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(c(e),c(t));return r>i?1:r<i?-1:0},d=(e,t)=>{for(let r=0;r<Math.max(e.length,t.length);r++){const i=l(e[r]||"0",t[r]||"0");if(0!==i)return i}return 0},v={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},y=Object.keys(v),g=e=>{if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===y.indexOf(e))throw new Error(`Invalid operator, expected one of ${y.join("|")}`)}},784:e=>{!function(){const t=e=>(new TextEncoder).encode(e);function r(e,r){let i,a,n,o,s,u,f,c;for("string"==typeof e&&(e=t(e)),i=3&e.length,a=e.length-i,n=r,s=3432918353,u=461845907,c=0;c<a;)f=255&e[c]|(255&e[++c])<<8|(255&e[++c])<<16|(255&e[++c])<<24,++c,f=(65535&f)*s+(((f>>>16)*s&65535)<<16)&4294967295,f=f<<15|f>>>17,f=(65535&f)*u+(((f>>>16)*u&65535)<<16)&4294967295,n^=f,n=n<<13|n>>>19,o=5*(65535&n)+((5*(n>>>16)&65535)<<16)&4294967295,n=27492+(65535&o)+((58964+(o>>>16)&65535)<<16);switch(f=0,i){case 3:f^=(255&e[c+2])<<16;case 2:f^=(255&e[c+1])<<8;case 1:f^=255&e[c],f=(65535&f)*s+(((f>>>16)*s&65535)<<16)&4294967295,f=f<<15|f>>>17,f=(65535&f)*u+(((f>>>16)*u&65535)<<16)&4294967295,n^=f}return n^=e.length,n^=n>>>16,n=2246822507*(65535&n)+((2246822507*(n>>>16)&65535)<<16)&4294967295,n^=n>>>13,n=3266489909*(65535&n)+((3266489909*(n>>>16)&65535)<<16)&4294967295,n^=n>>>16,n>>>0}const i=r;i.v2=function(e,r){"string"==typeof e&&(e=t(e));let i,a=e.length,n=r^a,o=0;for(;a>=4;)i=255&e[o]|(255&e[++o])<<8|(255&e[++o])<<16|(255&e[++o])<<24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),i^=i>>>24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^i,a-=4,++o;switch(a){case 3:n^=(255&e[o+2])<<16;case 2:n^=(255&e[o+1])<<8;case 1:n^=255&e[o],n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)}return n^=n>>>13,n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16),n^=n>>>15,n>>>0},i.v3=r,e.exports=i}()},906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MAX_BUCKETED_NUMBER=void 0,t.getBucketedNumber=o,t.getBucketKey=s,t.getBucket=function(e){var t=e.feature,r=e.context,i=e.logger,a=e.bucketKeySeparator,n=e.configureBucketKey,u=e.configureBucketValue,f=s({feature:t,context:r,logger:i,bucketKeySeparator:a,configureBucketKey:n}),c=o(f);return u?{bucketKey:f,bucketValue:u(t,r,c)}:{bucketKey:f,bucketValue:c}};var i=r(784),a=1,n=Math.pow(2,32);function o(e){var r=i.v3(e,a)/n;return Math.floor(r*t.MAX_BUCKETED_NUMBER)}function s(e){var t,r,i=e.feature,a=e.context,n=e.logger,o=e.bucketKeySeparator,s=void 0===o?".":o,u=e.configureBucketKey,f=i.key;if("string"==typeof i.bucketBy)t="plain",r=[i.bucketBy];else if(Array.isArray(i.bucketBy))t="and",r=i.bucketBy;else{if("object"!=typeof i.bucketBy||!Array.isArray(i.bucketBy.or))throw n.error("invalid bucketBy",{featureKey:f,bucketBy:i.bucketBy}),new Error("invalid bucketBy");t="or",r=i.bucketBy.or}var c=[];r.forEach((function(e){var r=a[e];void 0!==r&&("plain"===t||"and"===t||0===c.length)&&c.push(r)})),c.push(f);var l=c.join(s);return u?u(i,a,l):l}t.MAX_BUCKETED_NUMBER=1e5},186:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.conditionIsMatched=a,t.allConditionsAreMatched=function e(t,r,i){if("attribute"in t)try{return a(t,r)}catch(e){return i.warn(e.message,{error:e,details:{condition:t,context:r}}),!1}return"and"in t&&Array.isArray(t.and)?t.and.every((function(t){return e(t,r,i)})):"or"in t&&Array.isArray(t.or)?t.or.some((function(t){return e(t,r,i)})):"not"in t&&Array.isArray(t.not)?t.not.every((function(){return!1===e({and:t.not},r,i)})):!!Array.isArray(t)&&t.every((function(t){return e(t,r,i)}))};var i=r(393);function a(e,t){var r=e.attribute,a=e.operator,n=e.value;if("equals"===a)return t[r]===n;if("notEquals"===a)return t[r]!==n;if("before"===a||"after"===a){var o=(u=t[r])instanceof Date?u:new Date(u),s=n instanceof Date?n:new Date(n);return"before"===a?o<s:o>s}if(!Array.isArray(n)||-1===["string","number"].indexOf(typeof t[r])&&null!==t[r]){if("string"==typeof t[r]&&"string"==typeof n){if(u=t[r],"contains"===a)return-1!==u.indexOf(n);if("notContains"===a)return-1===u.indexOf(n);if("startsWith"===a)return u.startsWith(n);if("endsWith"===a)return u.endsWith(n);if("semverEquals"===a)return 0===(0,i.compareVersions)(u,n);if("semverNotEquals"===a)return 0!==(0,i.compareVersions)(u,n);if("semverGreaterThan"===a)return 1===(0,i.compareVersions)(u,n);if("semverGreaterThanOrEquals"===a)return(0,i.compareVersions)(u,n)>=0;if("semverLessThan"===a)return-1===(0,i.compareVersions)(u,n);if("semverLessThanOrEquals"===a)return(0,i.compareVersions)(u,n)<=0}else if("number"==typeof t[r]&&"number"==typeof n){if(u=t[r],"greaterThan"===a)return u>n;if("greaterThanOrEquals"===a)return u>=n;if("lessThan"===a)return u<n;if("lessThanOrEquals"===a)return u<=n}}else{var u=t[r];if("in"===a)return-1!==n.indexOf(u);if("notIn"===a)return-1===n.indexOf(u)}return!1}},649:(e,t)=>{"use strict";function r(e,t){if("string"==typeof e[t]&&"*"!==e[t])try{e[t]=JSON.parse(e[t])}catch(e){console.error("Error parsing JSON",e)}return e}Object.defineProperty(t,"__esModule",{value:!0}),t.DatafileReader=void 0,t.parseJsonConditionsIfStringified=r;var i=function(){function e(e){var t=this;if(this.schemaVersion=e.schemaVersion,this.revision=e.revision,"2"===this.schemaVersion){var r=e;this.attributes=r.attributes,this.segments=r.segments,this.features=r.features}else{var i=e;this.attributes={},i.attributes.forEach((function(e){t.attributes[e.key]=e})),this.segments={},i.segments.forEach((function(e){t.segments[e.key]=e})),this.features={},i.features.forEach((function(e){Array.isArray(e.variablesSchema)&&(e.variablesSchema=e.variablesSchema.reduce((function(e,t){return e[t.key]=t,e}),{})),t.features[e.key]=e}))}}return e.prototype.getRevision=function(){return this.revision},e.prototype.getSchemaVersion=function(){return this.schemaVersion},e.prototype.getAllAttributes=function(){var e=this,t=[];return Object.keys(this.attributes).forEach((function(r){t.push(e.attributes[r])})),t},e.prototype.getAttribute=function(e){return this.attributes[e]},e.prototype.getSegment=function(e){var t=this.segments[e];if(t)return r(t,"conditions")},e.prototype.getFeature=function(e){return this.features[e]},e}();t.DatafileReader=i},40:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Emitter=void 0;var r=function(){function e(){this._listeners={}}return e.prototype.addListener=function(e,t){void 0===this._listeners[e]&&(this._listeners[e]=[]),this._listeners[e].push(t)},e.prototype.removeListener=function(e,t){if(void 0!==this._listeners[e]){var r=this._listeners[e].indexOf(t);-1!==r&&this._listeners[e].splice(r,1)}},e.prototype.removeAllListeners=function(e){var t=this;e?this._listeners[e]=[]:Object.keys(this._listeners).forEach((function(e){t._listeners[e]=[]}))},e.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];void 0!==this._listeners[e]&&this._listeners[e].forEach((function(e){e.apply(void 0,t)}))},e}();t.Emitter=r},335:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EvaluationReason=void 0,t.evaluate=function e(t){var r,u=t.type,f=t.featureKey,c=t.variableKey,l=t.context,d=t.logger,v=t.datafileReader,y=t.statuses,g=t.stickyFeatures,h=t.initialFeatures,b=t.interceptContext,p=t.bucketKeySeparator,k=t.configureBucketKey,m=t.configureBucketValue;try{var K="string"==typeof f?f:f.key;if("flag"!==u&&!1===e({type:"flag",featureKey:K,context:l,logger:d,datafileReader:v,statuses:y,stickyFeatures:g,initialFeatures:h,bucketKeySeparator:p,configureBucketKey:k,configureBucketValue:m}).enabled)return r={featureKey:K,reason:i.DISABLED},d.debug("feature is disabled",r),r;if(g&&g[K]){if("flag"===u&&void 0!==g[K].enabled)return r={featureKey:K,reason:i.STICKY,sticky:g[K],enabled:g[K].enabled},d.debug("using sticky enabled",r),r;if("variation"===u&&void 0!==(A=g[K].variation))return r={featureKey:K,reason:i.STICKY,variationValue:A},d.debug("using sticky variation",r),r;if(c&&(O=g[K].variables)){var V=O[c];if(void 0!==V)return r={featureKey:K,reason:i.STICKY,variableKey:c,variableValue:V},d.debug("using sticky variable",r),r}}if(y&&!y.ready&&h&&h[K]){if("flag"===u&&void 0!==h[K].enabled)return r={featureKey:K,reason:i.INITIAL,initial:h[K],enabled:h[K].enabled},d.debug("using initial enabled",r),r;if("variation"===u&&void 0!==h[K].variation){var A=h[K].variation;return r={featureKey:K,reason:i.INITIAL,variationValue:A},d.debug("using initial variation",r),r}var O;if(c&&(O=h[K].variables)&&void 0!==O[c])return r={featureKey:K,reason:i.INITIAL,variableKey:c,variableValue:O[c]},d.debug("using initial variable",r),r}var E="string"==typeof f?v.getFeature(f):f;if(!E)return r={featureKey:K,reason:i.NOT_FOUND},d.warn("feature not found",r),r;"flag"===u&&E.deprecated&&d.warn("feature is deprecated",{featureKey:E.key});var S=void 0;if(c){if(E.variablesSchema&&E.variablesSchema[c]&&(S=E.variablesSchema[c]),!S)return r={featureKey:K,reason:i.NOT_FOUND,variableKey:c},d.warn("variable schema not found",r),r;S.deprecated&&d.warn("variable is deprecated",{featureKey:E.key,variableKey:c})}if("variation"===u&&(!E.variations||0===E.variations.length))return r={featureKey:K,reason:i.NO_VARIATIONS},d.warn("no variations",r),r;var x=b?b(l):l,I=(0,n.findForceFromFeature)(E,l,v,d),R=I.force,_=I.forceIndex;if(R){if("flag"===u&&void 0!==R.enabled)return r={featureKey:E.key,reason:i.FORCED,forceIndex:_,force:R,enabled:R.enabled},d.debug("forced enabled found",r),r;if("variation"===u&&R.variation&&E.variations&&(C=E.variations.find((function(e){return e.value===R.variation}))))return r={featureKey:E.key,reason:i.FORCED,forceIndex:_,force:R,variation:C},d.debug("forced variation found",r),r;if(c&&R.variables&&void 0!==R.variables[c])return r={featureKey:E.key,reason:i.FORCED,forceIndex:_,force:R,variableKey:c,variableSchema:S,variableValue:R.variables[c]},d.debug("forced variable",r),r}if("flag"===u&&E.required&&E.required.length>0){var F=E.required.every((function(t){var r,i;if("string"==typeof t?r=t:(r=t.key,i=t.variation),!e({type:"flag",featureKey:r,context:x,logger:d,datafileReader:v,statuses:y,stickyFeatures:g,initialFeatures:h,bucketKeySeparator:p,configureBucketKey:k,configureBucketValue:m}).enabled)return!1;if(void 0!==i){var a=e({type:"variation",featureKey:r,context:x,logger:d,datafileReader:v,statuses:y,stickyFeatures:g,initialFeatures:h,bucketKeySeparator:p,configureBucketKey:k,configureBucketValue:m}),n=void 0;return a.variationValue?n=a.variationValue:a.variation&&(n=a.variation.value),n===i}return!0}));if(!F)return r={featureKey:E.key,reason:i.REQUIRED,required:E.required,enabled:F},d.debug("required features not enabled",r),r}var B,L,T=(0,a.getBucket)({feature:E,context:x,logger:d,bucketKeySeparator:p,configureBucketKey:k,configureBucketValue:m}),D=T.bucketKey,w=T.bucketValue;if("flag"!==u){var M=(0,n.getMatchedTrafficAndAllocation)(E.traffic,x,w,v,d);B=M.matchedTraffic,L=M.matchedAllocation}else B=(0,n.getMatchedTraffic)(E.traffic,x,v,d);if(B){if("flag"===u){if(E.ranges&&E.ranges.length>0)return E.ranges.find((function(e){return w>=e[0]&&w<e[1]}))?(r={featureKey:E.key,reason:i.ALLOCATED,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,enabled:void 0===B.enabled||B.enabled},d.debug("matched",r),r):(r={featureKey:E.key,reason:i.OUT_OF_RANGE,bucketKey:D,bucketValue:w,enabled:!1},d.debug("not matched",r),r);if(void 0!==B.enabled)return r={featureKey:E.key,reason:i.OVERRIDE,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,enabled:B.enabled},d.debug("override from rule",r),r;if(w<=B.percentage)return r={featureKey:E.key,reason:i.RULE,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,enabled:!0},d.debug("matched traffic",r),r}if("variation"===u&&E.variations){if(B.variation&&(C=E.variations.find((function(e){return e.value===B.variation}))))return r={featureKey:E.key,reason:i.RULE,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,variation:C},d.debug("override from rule",r),r;if(L&&L.variation&&(C=E.variations.find((function(e){return e.value===L.variation}))))return r={featureKey:E.key,reason:i.ALLOCATED,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,variation:C},d.debug("allocated variation",r),r}}if("variable"===u&&c){if(B&&B.variables&&void 0!==B.variables[c])return r={featureKey:E.key,reason:i.RULE,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,variableKey:c,variableSchema:S,variableValue:B.variables[c]},d.debug("override from rule",r),r;var j,C;if(R&&R.variation?j=R.variation:B&&B.variation?j=B.variation:L&&L.variation&&(j=L.variation),j&&Array.isArray(E.variations)&&(C=E.variations.find((function(e){return e.value===j})))&&C.variables){var N=C.variables.find((function(e){return e.key===c}));if(N){if(N.overrides){var U=N.overrides.find((function(e){return e.conditions?(0,o.allConditionsAreMatched)("string"==typeof e.conditions?JSON.parse(e.conditions):e.conditions,x,d):!!e.segments&&(0,s.allGroupSegmentsAreMatched)((0,n.parseFromStringifiedSegments)(e.segments),x,v,d)}));if(U)return r={featureKey:E.key,reason:i.OVERRIDE,bucketKey:D,bucketValue:w,ruleKey:null==B?void 0:B.key,traffic:B,variableKey:c,variableSchema:S,variableValue:U.value},d.debug("variable override",r),r}if(void 0!==N.value)return r={featureKey:E.key,reason:i.ALLOCATED,bucketKey:D,bucketValue:w,ruleKey:null==B?void 0:B.key,traffic:B,variableKey:c,variableSchema:S,variableValue:N.value},d.debug("allocated variable",r),r}}}return"variation"===u?(r={featureKey:E.key,reason:i.NO_MATCH,bucketKey:D,bucketValue:w},d.debug("no matched variation",r),r):"variable"===u&&S?(r={featureKey:E.key,reason:i.DEFAULTED,bucketKey:D,bucketValue:w,variableKey:c,variableSchema:S,variableValue:S.defaultValue},d.debug("using default value",r),r):(r={featureKey:E.key,reason:i.NO_MATCH,bucketKey:D,bucketValue:w,enabled:!1},d.debug("nothing matched",r),r)}catch(e){return r={featureKey:"string"==typeof f?f:f.key,reason:i.ERROR,error:e},d.error("error",r),r}};var i,a=r(906),n=r(512),o=r(186),s=r(826);!function(e){e.NOT_FOUND="not_found",e.NO_VARIATIONS="no_variations",e.NO_MATCH="no_match",e.DISABLED="disabled",e.REQUIRED="required",e.OUT_OF_RANGE="out_of_range",e.FORCED="forced",e.INITIAL="initial",e.STICKY="sticky",e.RULE="rule",e.ALLOCATED="allocated",e.DEFAULTED="defaulted",e.OVERRIDE="override",e.ERROR="error"}(i||(t.EvaluationReason=i={}))},512:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getMatchedAllocation=n,t.parseFromStringifiedSegments=o,t.getMatchedTraffic=function(e,t,r,a){var n=e.find((function(e){return!!(0,i.allGroupSegmentsAreMatched)(o(e.segments),t,r,a)}));if(n&&n.percentage>0)return n},t.getMatchedTrafficAndAllocation=function(e,t,r,a,s){var u=e.find((function(e){return(0,i.allGroupSegmentsAreMatched)(o(e.segments),t,a,s)}));return u?{matchedTraffic:u,matchedAllocation:n(u,r)}:{matchedTraffic:void 0,matchedAllocation:void 0}},t.findForceFromFeature=function(e,t,r,n){var o={force:void 0,forceIndex:void 0};if(!e.force)return o;for(var s=0;s<e.force.length;s++){var u=e.force[s];if(u.conditions&&(0,a.allConditionsAreMatched)(u.conditions,t,n)){o.force=u,o.forceIndex=s;break}if(u.segments&&(0,i.allGroupSegmentsAreMatched)(u.segments,t,r,n)){o.force=u,o.forceIndex=s;break}}return o};var i=r(826),a=r(186);function n(e,t){for(var r=0,i=e.allocation;r<i.length;r++){var a=i[r],n=a.range,o=n[0],s=n[1];if(a.range&&o<=t&&s>=t)return a}}function o(e){return"string"==typeof e&&(e.startsWith("{")||e.startsWith("["))?JSON.parse(e):e}},166:function(e,t,r){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var a=Object.getOwnPropertyDescriptor(t,r);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,a)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),a(r(906),t),a(r(247),t),a(r(584),t),a(r(186),t),a(r(40),t),a(r(335),t)},247:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FeaturevisorInstance=void 0,t.getValueByType=f,t.createInstance=function(e){return new c(e)};var i=r(584),a=r(649),n=r(40),o=r(335),s={schemaVersion:"1",revision:"unknown",attributes:[],segments:[],features:[]};function u(e,t){return t?t(e):fetch(e).then((function(e){return e.json()}))}function f(e,t){try{if(void 0===e)return;switch(t){case"string":return"string"==typeof e?e:void 0;case"integer":return parseInt(e,10);case"double":return parseFloat(e);case"boolean":return!0===e;case"array":return Array.isArray(e)?e:void 0;case"object":return"object"==typeof e?e:void 0;default:return e}}catch(e){return}}var c=function(){function e(e){var t=this;this.bucketKeySeparator=e.bucketKeySeparator||".",this.configureBucketKey=e.configureBucketKey,this.configureBucketValue=e.configureBucketValue,this.datafileUrl=e.datafileUrl,this.handleDatafileFetch=e.handleDatafileFetch,this.initialFeatures=e.initialFeatures,this.interceptContext=e.interceptContext,this.logger=e.logger||(0,i.createLogger)(),this.refreshInterval=e.refreshInterval,this.stickyFeatures=e.stickyFeatures,this.emitter=new n.Emitter,this.statuses={ready:!1,refreshInProgress:!1},e.onReady&&this.emitter.addListener("ready",e.onReady),e.onRefresh&&this.emitter.addListener("refresh",e.onRefresh),e.onUpdate&&this.emitter.addListener("update",e.onUpdate),e.onActivation&&this.emitter.addListener("activation",e.onActivation);var r=this.emitter.addListener.bind(this.emitter);this.on=r,this.addListener=r;var a=this.emitter.removeListener.bind(this.emitter);if(this.off=a,this.removeListener=a,this.removeAllListeners=this.emitter.removeAllListeners.bind(this.emitter),e.datafileUrl)this.setDatafile(e.datafile||s),u(e.datafileUrl,e.handleDatafileFetch).then((function(e){t.setDatafile(e),t.statuses.ready=!0,t.emitter.emit("ready"),t.refreshInterval&&t.startRefreshing()})).catch((function(e){t.logger.error("failed to fetch datafile",{error:e})}));else{if(!e.datafile)throw new Error("Featurevisor SDK instance cannot be created without both `datafile` and `datafileUrl` options");this.setDatafile(e.datafile),this.statuses.ready=!0,setTimeout((function(){t.emitter.emit("ready")}),0)}}return e.prototype.setLogLevels=function(e){this.logger.setLevels(e)},e.prototype.onReady=function(){var e=this;return new Promise((function(t){if(e.statuses.ready)return t(e);var r=function(){e.emitter.removeListener("ready",r),t(e)};e.emitter.addListener("ready",r)}))},e.prototype.setDatafile=function(e){try{this.datafileReader=new a.DatafileReader("string"==typeof e?JSON.parse(e):e)}catch(e){this.logger.error("could not parse datafile",{error:e})}},e.prototype.setStickyFeatures=function(e){this.stickyFeatures=e},e.prototype.getRevision=function(){return this.datafileReader.getRevision()},e.prototype.getFeature=function(e){return"string"==typeof e?this.datafileReader.getFeature(e):e},e.prototype.isReady=function(){return this.statuses.ready},e.prototype.refresh=function(){var e=this;return this.logger.debug("refreshing datafile"),this.statuses.refreshInProgress?this.logger.warn("refresh in progress, skipping"):this.datafileUrl?(this.statuses.refreshInProgress=!0,void u(this.datafileUrl,this.handleDatafileFetch).then((function(t){var r=e.getRevision()!==t.revision;e.setDatafile(t),e.logger.info("refreshed datafile"),e.emitter.emit("refresh"),r&&e.emitter.emit("update"),e.statuses.refreshInProgress=!1})).catch((function(t){e.logger.error("failed to refresh datafile",{error:t}),e.statuses.refreshInProgress=!1}))):this.logger.error("cannot refresh since `datafileUrl` is not provided")},e.prototype.startRefreshing=function(){var e=this;return this.datafileUrl?this.intervalId?this.logger.warn("refreshing has already started"):this.refreshInterval?void(this.intervalId=setInterval((function(){e.refresh()}),1e3*this.refreshInterval)):this.logger.warn("no `refreshInterval` option provided"):this.logger.error("cannot start refreshing since `datafileUrl` is not provided")},e.prototype.stopRefreshing=function(){if(!this.intervalId)return this.logger.warn("refreshing has not started yet");clearInterval(this.intervalId)},e.prototype.evaluateFlag=function(e,t){return void 0===t&&(t={}),(0,o.evaluate)({type:"flag",featureKey:e,context:t,logger:this.logger,datafileReader:this.datafileReader,statuses:this.statuses,interceptContext:this.interceptContext,stickyFeatures:this.stickyFeatures,initialFeatures:this.initialFeatures,bucketKeySeparator:this.bucketKeySeparator,configureBucketKey:this.configureBucketKey,configureBucketValue:this.configureBucketValue})},e.prototype.isEnabled=function(e,t){void 0===t&&(t={});try{return!0===this.evaluateFlag(e,t).enabled}catch(t){return this.logger.error("isEnabled",{featureKey:e,error:t}),!1}},e.prototype.evaluateVariation=function(e,t){return void 0===t&&(t={}),(0,o.evaluate)({type:"variation",featureKey:e,context:t,logger:this.logger,datafileReader:this.datafileReader,statuses:this.statuses,interceptContext:this.interceptContext,stickyFeatures:this.stickyFeatures,initialFeatures:this.initialFeatures,bucketKeySeparator:this.bucketKeySeparator,configureBucketKey:this.configureBucketKey,configureBucketValue:this.configureBucketValue})},e.prototype.getVariation=function(e,t){void 0===t&&(t={});try{var r=this.evaluateVariation(e,t);return void 0!==r.variationValue?r.variationValue:r.variation?r.variation.value:void 0}catch(t){return void this.logger.error("getVariation",{featureKey:e,error:t})}},e.prototype.activate=function(e,t){void 0===t&&(t={});try{var r=this.evaluateVariation(e,t),i=r.variation?r.variation.value:r.variationValue;if(void 0===i)return;var a=this.interceptContext?this.interceptContext(t):t,n={};return this.datafileReader.getAllAttributes().filter((function(e){return!0===e.capture})).forEach((function(e){void 0!==a[e.key]&&(n[e.key]=t[e.key])})),this.emitter.emit("activation",e,i,a,n,r),i}catch(t){return void this.logger.error("activate",{featureKey:e,error:t})}},e.prototype.evaluateVariable=function(e,t,r){return void 0===r&&(r={}),(0,o.evaluate)({type:"variable",featureKey:e,variableKey:t,context:r,logger:this.logger,datafileReader:this.datafileReader,statuses:this.statuses,interceptContext:this.interceptContext,stickyFeatures:this.stickyFeatures,initialFeatures:this.initialFeatures,bucketKeySeparator:this.bucketKeySeparator,configureBucketKey:this.configureBucketKey,configureBucketValue:this.configureBucketValue})},e.prototype.getVariable=function(e,t,r){void 0===r&&(r={});try{var i=this.evaluateVariable(e,t,r);return void 0!==i.variableValue?i.variableSchema&&"json"===i.variableSchema.type&&"string"==typeof i.variableValue?JSON.parse(i.variableValue):i.variableValue:void 0}catch(r){return void this.logger.error("getVariable",{featureKey:e,variableKey:t,error:r})}},e.prototype.getVariableBoolean=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"boolean")},e.prototype.getVariableString=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"string")},e.prototype.getVariableInteger=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"integer")},e.prototype.getVariableDouble=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"double")},e.prototype.getVariableArray=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"array")},e.prototype.getVariableObject=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"object")},e.prototype.getVariableJSON=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"json")},e}();t.FeaturevisorInstance=c},584:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=t.defaultLogHandler=t.defaultLogLevels=t.loggerPrefix=void 0,t.createLogger=function(e){void 0===e&&(e={});var i=e.levels||t.defaultLogLevels,a=e.handler||t.defaultLogHandler;return new r({levels:i,handler:a})},t.loggerPrefix="[Featurevisor]",t.defaultLogLevels=["warn","error"],t.defaultLogHandler=function(e,r,i){switch(void 0===i&&(i={}),e){case"debug":console.log(t.loggerPrefix,r,i);break;case"info":console.info(t.loggerPrefix,r,i);break;case"warn":console.warn(t.loggerPrefix,r,i);break;case"error":console.error(t.loggerPrefix,r,i)}};var r=function(){function e(e){this.levels=e.levels,this.handle=e.handler}return e.prototype.setLevels=function(e){this.levels=e},e.prototype.log=function(e,t,r){-1!==this.levels.indexOf(e)&&this.handle(e,t,r)},e.prototype.debug=function(e,t){this.log("debug",e,t)},e.prototype.info=function(e,t){this.log("info",e,t)},e.prototype.warn=function(e,t){this.log("warn",e,t)},e.prototype.error=function(e,t){this.log("error",e,t)},e}();t.Logger=r},826:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.segmentIsMatched=a,t.allGroupSegmentsAreMatched=function e(t,r,i,n){if("*"===t)return!0;if("string"==typeof t){var o=i.getSegment(t);return!!o&&a(o,r,n)}if("object"==typeof t){if("and"in t&&Array.isArray(t.and))return t.and.every((function(t){return e(t,r,i,n)}));if("or"in t&&Array.isArray(t.or))return t.or.some((function(t){return e(t,r,i,n)}));if("not"in t&&Array.isArray(t.not))return t.not.every((function(t){return!1===e(t,r,i,n)}))}return!!Array.isArray(t)&&t.every((function(t){return e(t,r,i,n)}))};var i=r(186);function a(e,t,r){return(0,i.allConditionsAreMatched)(e.conditions,t,r)}}},t={};function r(i){var a=t[i];if(void 0!==a)return a.exports;var n=t[i]={exports:{}};return e[i].call(n.exports,n,n.exports,r),n.exports}return r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(166)})()));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FeaturevisorSDK=t():e.FeaturevisorSDK=t()}(this,(()=>(()=>{var e={393:(e,t,r)=>{"use strict";r.r(t),r.d(t,{compare:()=>n,compareVersions:()=>i,satisfies:()=>o,validate:()=>a});const i=(e,t)=>{const r=u(e),i=u(t),a=r.pop(),n=i.pop(),o=d(r,i);return 0!==o?o:a&&n?d(a.split("."),n.split(".")):a||n?a?-1:1:0},a=e=>"string"==typeof e&&/^[v\d]/.test(e)&&s.test(e),n=(e,t,r)=>{g(r);const a=i(e,t);return v[r].includes(a)},o=(e,t)=>{if(t.includes("||"))return t.split("||").some((t=>o(e,t)));if(t.includes(" "))return t.trim().replace(/\s{2,}/g," ").split(" ").every((t=>o(e,t)));const r=t.match(/^([<>=~^]+)/),i=r?r[1]:"=";if("^"!==i&&"~"!==i)return n(e,t,i);const[a,s,f,,c]=u(e),[l,v,y,,g]=u(t),h=[a,s,f],b=[l,null!=v?v:"x",null!=y?y:"x"];if(g){if(!c)return!1;if(0!==d(h,b))return!1;if(-1===d(c.split("."),g.split(".")))return!1}const p=b.findIndex((e=>"0"!==e))+1,k="~"===i?2:p>1?p:1;return 0===d(h.slice(0,k),b.slice(0,k))&&-1!==d(h.slice(k),b.slice(k))},s=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,u=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(s);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},f=e=>"*"===e||"x"===e||"X"===e,c=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},l=(e,t)=>{if(f(e)||f(t))return 0;const[r,i]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(c(e),c(t));return r>i?1:r<i?-1:0},d=(e,t)=>{for(let r=0;r<Math.max(e.length,t.length);r++){const i=l(e[r]||"0",t[r]||"0");if(0!==i)return i}return 0},v={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},y=Object.keys(v),g=e=>{if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===y.indexOf(e))throw new Error(`Invalid operator, expected one of ${y.join("|")}`)}},784:e=>{!function(){const t=e=>(new TextEncoder).encode(e);function r(e,r){let i,a,n,o,s,u,f,c;for("string"==typeof e&&(e=t(e)),i=3&e.length,a=e.length-i,n=r,s=3432918353,u=461845907,c=0;c<a;)f=255&e[c]|(255&e[++c])<<8|(255&e[++c])<<16|(255&e[++c])<<24,++c,f=(65535&f)*s+(((f>>>16)*s&65535)<<16)&4294967295,f=f<<15|f>>>17,f=(65535&f)*u+(((f>>>16)*u&65535)<<16)&4294967295,n^=f,n=n<<13|n>>>19,o=5*(65535&n)+((5*(n>>>16)&65535)<<16)&4294967295,n=27492+(65535&o)+((58964+(o>>>16)&65535)<<16);switch(f=0,i){case 3:f^=(255&e[c+2])<<16;case 2:f^=(255&e[c+1])<<8;case 1:f^=255&e[c],f=(65535&f)*s+(((f>>>16)*s&65535)<<16)&4294967295,f=f<<15|f>>>17,f=(65535&f)*u+(((f>>>16)*u&65535)<<16)&4294967295,n^=f}return n^=e.length,n^=n>>>16,n=2246822507*(65535&n)+((2246822507*(n>>>16)&65535)<<16)&4294967295,n^=n>>>13,n=3266489909*(65535&n)+((3266489909*(n>>>16)&65535)<<16)&4294967295,n^=n>>>16,n>>>0}const i=r;i.v2=function(e,r){"string"==typeof e&&(e=t(e));let i,a=e.length,n=r^a,o=0;for(;a>=4;)i=255&e[o]|(255&e[++o])<<8|(255&e[++o])<<16|(255&e[++o])<<24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),i^=i>>>24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^i,a-=4,++o;switch(a){case 3:n^=(255&e[o+2])<<16;case 2:n^=(255&e[o+1])<<8;case 1:n^=255&e[o],n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)}return n^=n>>>13,n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16),n^=n>>>15,n>>>0},i.v3=r,e.exports=i}()},906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MAX_BUCKETED_NUMBER=void 0,t.getBucketedNumber=o,t.getBucketKey=s,t.getBucket=function(e){var t=e.feature,r=e.context,i=e.logger,a=e.bucketKeySeparator,n=e.configureBucketKey,u=e.configureBucketValue,f=s({feature:t,context:r,logger:i,bucketKeySeparator:a,configureBucketKey:n}),c=o(f);return u?{bucketKey:f,bucketValue:u(t,r,c)}:{bucketKey:f,bucketValue:c}};var i=r(784),a=1,n=Math.pow(2,32);function o(e){var r=i.v3(e,a)/n;return Math.floor(r*t.MAX_BUCKETED_NUMBER)}function s(e){var t,r,i=e.feature,a=e.context,n=e.logger,o=e.bucketKeySeparator,s=void 0===o?".":o,u=e.configureBucketKey,f=i.key;if("string"==typeof i.bucketBy)t="plain",r=[i.bucketBy];else if(Array.isArray(i.bucketBy))t="and",r=i.bucketBy;else{if("object"!=typeof i.bucketBy||!Array.isArray(i.bucketBy.or))throw n.error("invalid bucketBy",{featureKey:f,bucketBy:i.bucketBy}),new Error("invalid bucketBy");t="or",r=i.bucketBy.or}var c=[];r.forEach((function(e){var r=a[e];void 0!==r&&("plain"===t||"and"===t||0===c.length)&&c.push(r)})),c.push(f);var l=c.join(s);return u?u(i,a,l):l}t.MAX_BUCKETED_NUMBER=1e5},186:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.conditionIsMatched=a,t.allConditionsAreMatched=function e(t,r,i){if("attribute"in t)try{return a(t,r)}catch(e){return i.warn(e.message,{error:e,details:{condition:t,context:r}}),!1}return"and"in t&&Array.isArray(t.and)?t.and.every((function(t){return e(t,r,i)})):"or"in t&&Array.isArray(t.or)?t.or.some((function(t){return e(t,r,i)})):"not"in t&&Array.isArray(t.not)?t.not.every((function(){return!1===e({and:t.not},r,i)})):!!Array.isArray(t)&&t.every((function(t){return e(t,r,i)}))};var i=r(393);function a(e,t){var r=e.attribute,a=e.operator,n=e.value;if("equals"===a)return t[r]===n;if("notEquals"===a)return t[r]!==n;if("before"===a||"after"===a){var o=(u=t[r])instanceof Date?u:new Date(u),s=n instanceof Date?n:new Date(n);return"before"===a?o<s:o>s}if(!Array.isArray(n)||-1===["string","number"].indexOf(typeof t[r])&&null!==t[r]){if("string"==typeof t[r]&&"string"==typeof n){if(u=t[r],"contains"===a)return-1!==u.indexOf(n);if("notContains"===a)return-1===u.indexOf(n);if("startsWith"===a)return u.startsWith(n);if("endsWith"===a)return u.endsWith(n);if("semverEquals"===a)return 0===(0,i.compareVersions)(u,n);if("semverNotEquals"===a)return 0!==(0,i.compareVersions)(u,n);if("semverGreaterThan"===a)return 1===(0,i.compareVersions)(u,n);if("semverGreaterThanOrEquals"===a)return(0,i.compareVersions)(u,n)>=0;if("semverLessThan"===a)return-1===(0,i.compareVersions)(u,n);if("semverLessThanOrEquals"===a)return(0,i.compareVersions)(u,n)<=0}else if("number"==typeof t[r]&&"number"==typeof n){if(u=t[r],"greaterThan"===a)return u>n;if("greaterThanOrEquals"===a)return u>=n;if("lessThan"===a)return u<n;if("lessThanOrEquals"===a)return u<=n}}else{var u=t[r];if("in"===a)return-1!==n.indexOf(u);if("notIn"===a)return-1===n.indexOf(u)}return!1}},649:(e,t)=>{"use strict";function r(e,t){if("string"==typeof e[t]&&"*"!==e[t])try{e[t]=JSON.parse(e[t])}catch(e){console.error("Error parsing JSON",e)}return e}Object.defineProperty(t,"__esModule",{value:!0}),t.DatafileReader=void 0,t.parseJsonConditionsIfStringified=r;var i=function(){function e(e){var t=this;if(this.schemaVersion=e.schemaVersion,this.revision=e.revision,"2"===this.schemaVersion){var r=e;this.attributes=r.attributes,this.segments=r.segments,this.features=r.features}else{var i=e;this.attributes={},i.attributes.forEach((function(e){t.attributes[e.key]=e})),this.segments={},i.segments.forEach((function(e){t.segments[e.key]=e})),this.features={},i.features.forEach((function(e){Array.isArray(e.variablesSchema)&&(e.variablesSchema=e.variablesSchema.reduce((function(e,t){return e[t.key]=t,e}),{})),t.features[e.key]=e}))}}return e.prototype.getRevision=function(){return this.revision},e.prototype.getSchemaVersion=function(){return this.schemaVersion},e.prototype.getAllAttributes=function(){var e=this,t=[];return Object.keys(this.attributes).forEach((function(r){t.push(e.attributes[r])})),t},e.prototype.getAttribute=function(e){return this.attributes[e]},e.prototype.getSegment=function(e){var t=this.segments[e];if(t)return r(t,"conditions")},e.prototype.getFeature=function(e){return this.features[e]},e}();t.DatafileReader=i},40:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Emitter=void 0;var r=function(){function e(){this._listeners={}}return e.prototype.addListener=function(e,t){void 0===this._listeners[e]&&(this._listeners[e]=[]),this._listeners[e].push(t)},e.prototype.removeListener=function(e,t){if(void 0!==this._listeners[e]){var r=this._listeners[e].indexOf(t);-1!==r&&this._listeners[e].splice(r,1)}},e.prototype.removeAllListeners=function(e){var t=this;e?this._listeners[e]=[]:Object.keys(this._listeners).forEach((function(e){t._listeners[e]=[]}))},e.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];void 0!==this._listeners[e]&&this._listeners[e].forEach((function(e){e.apply(void 0,t)}))},e}();t.Emitter=r},335:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EvaluationReason=void 0,t.evaluate=function e(t){var r,u=t.type,f=t.featureKey,c=t.variableKey,l=t.context,d=t.logger,v=t.datafileReader,y=t.statuses,g=t.stickyFeatures,h=t.initialFeatures,b=t.interceptContext,p=t.bucketKeySeparator,k=t.configureBucketKey,m=t.configureBucketValue;try{var K="string"==typeof f?f:f.key;if("flag"!==u&&!1===e({type:"flag",featureKey:K,context:l,logger:d,datafileReader:v,statuses:y,stickyFeatures:g,initialFeatures:h,bucketKeySeparator:p,configureBucketKey:k,configureBucketValue:m}).enabled)return r={featureKey:K,reason:i.DISABLED},d.debug("feature is disabled",r),r;if(g&&g[K]){if("flag"===u&&void 0!==g[K].enabled)return r={featureKey:K,reason:i.STICKY,sticky:g[K],enabled:g[K].enabled},d.debug("using sticky enabled",r),r;if("variation"===u&&void 0!==(A=g[K].variation))return r={featureKey:K,reason:i.STICKY,variationValue:A},d.debug("using sticky variation",r),r;if(c&&(O=g[K].variables)){var V=O[c];if(void 0!==V)return r={featureKey:K,reason:i.STICKY,variableKey:c,variableValue:V},d.debug("using sticky variable",r),r}}if(y&&!y.ready&&h&&h[K]){if("flag"===u&&void 0!==h[K].enabled)return r={featureKey:K,reason:i.INITIAL,initial:h[K],enabled:h[K].enabled},d.debug("using initial enabled",r),r;if("variation"===u&&void 0!==h[K].variation){var A=h[K].variation;return r={featureKey:K,reason:i.INITIAL,variationValue:A},d.debug("using initial variation",r),r}var O;if(c&&(O=h[K].variables)&&void 0!==O[c])return r={featureKey:K,reason:i.INITIAL,variableKey:c,variableValue:O[c]},d.debug("using initial variable",r),r}var E="string"==typeof f?v.getFeature(f):f;if(!E)return r={featureKey:K,reason:i.NOT_FOUND},d.warn("feature not found",r),r;"flag"===u&&E.deprecated&&d.warn("feature is deprecated",{featureKey:E.key});var S=void 0;if(c){if(E.variablesSchema&&E.variablesSchema[c]&&(S=E.variablesSchema[c]),!S)return r={featureKey:K,reason:i.NOT_FOUND,variableKey:c},d.warn("variable schema not found",r),r;S.deprecated&&d.warn("variable is deprecated",{featureKey:E.key,variableKey:c})}if("variation"===u&&(!E.variations||0===E.variations.length))return r={featureKey:K,reason:i.NO_VARIATIONS},d.warn("no variations",r),r;var x=b?b(l):l,I=(0,n.findForceFromFeature)(E,l,v,d),R=I.force,_=I.forceIndex;if(R){if("flag"===u&&void 0!==R.enabled)return r={featureKey:E.key,reason:i.FORCED,forceIndex:_,force:R,enabled:R.enabled},d.debug("forced enabled found",r),r;if("variation"===u&&R.variation&&E.variations&&(C=E.variations.find((function(e){return e.value===R.variation}))))return r={featureKey:E.key,reason:i.FORCED,forceIndex:_,force:R,variation:C},d.debug("forced variation found",r),r;if(c&&R.variables&&void 0!==R.variables[c])return r={featureKey:E.key,reason:i.FORCED,forceIndex:_,force:R,variableKey:c,variableSchema:S,variableValue:R.variables[c]},d.debug("forced variable",r),r}if("flag"===u&&E.required&&E.required.length>0){var F=E.required.every((function(t){var r,i;if("string"==typeof t?r=t:(r=t.key,i=t.variation),!e({type:"flag",featureKey:r,context:x,logger:d,datafileReader:v,statuses:y,stickyFeatures:g,initialFeatures:h,bucketKeySeparator:p,configureBucketKey:k,configureBucketValue:m}).enabled)return!1;if(void 0!==i){var a=e({type:"variation",featureKey:r,context:x,logger:d,datafileReader:v,statuses:y,stickyFeatures:g,initialFeatures:h,bucketKeySeparator:p,configureBucketKey:k,configureBucketValue:m}),n=void 0;return a.variationValue?n=a.variationValue:a.variation&&(n=a.variation.value),n===i}return!0}));if(!F)return r={featureKey:E.key,reason:i.REQUIRED,required:E.required,enabled:F},d.debug("required features not enabled",r),r}var B,L,T=(0,a.getBucket)({feature:E,context:x,logger:d,bucketKeySeparator:p,configureBucketKey:k,configureBucketValue:m}),D=T.bucketKey,w=T.bucketValue;if("flag"!==u){var M=(0,n.getMatchedTrafficAndAllocation)(E.traffic,x,w,v,d);B=M.matchedTraffic,L=M.matchedAllocation}else B=(0,n.getMatchedTraffic)(E.traffic,x,v,d);if(B){if("flag"===u){if(E.ranges&&E.ranges.length>0)return E.ranges.find((function(e){return w>=e[0]&&w<e[1]}))?(r={featureKey:E.key,reason:i.ALLOCATED,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,enabled:void 0===B.enabled||B.enabled},d.debug("matched",r),r):(r={featureKey:E.key,reason:i.OUT_OF_RANGE,bucketKey:D,bucketValue:w,enabled:!1},d.debug("not matched",r),r);if(void 0!==B.enabled)return r={featureKey:E.key,reason:i.OVERRIDE,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,enabled:B.enabled},d.debug("override from rule",r),r;if(w<=B.percentage)return r={featureKey:E.key,reason:i.RULE,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,enabled:!0},d.debug("matched traffic",r),r}if("variation"===u&&E.variations){if(B.variation&&(C=E.variations.find((function(e){return e.value===B.variation}))))return r={featureKey:E.key,reason:i.RULE,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,variation:C},d.debug("override from rule",r),r;if(L&&L.variation&&(C=E.variations.find((function(e){return e.value===L.variation}))))return r={featureKey:E.key,reason:i.ALLOCATED,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,variation:C},d.debug("allocated variation",r),r}}if("variable"===u&&c){if(B&&B.variables&&void 0!==B.variables[c])return r={featureKey:E.key,reason:i.RULE,bucketKey:D,bucketValue:w,ruleKey:B.key,traffic:B,variableKey:c,variableSchema:S,variableValue:B.variables[c]},d.debug("override from rule",r),r;var j,C;if(R&&R.variation?j=R.variation:B&&B.variation?j=B.variation:L&&L.variation&&(j=L.variation),j&&Array.isArray(E.variations)&&(C=E.variations.find((function(e){return e.value===j})))&&C.variables){var N=C.variables.find((function(e){return e.key===c}));if(N){if(N.overrides){var U=N.overrides.find((function(e){return e.conditions?(0,o.allConditionsAreMatched)("string"==typeof e.conditions?JSON.parse(e.conditions):e.conditions,x,d):!!e.segments&&(0,s.allGroupSegmentsAreMatched)((0,n.parseFromStringifiedSegments)(e.segments),x,v,d)}));if(U)return r={featureKey:E.key,reason:i.OVERRIDE,bucketKey:D,bucketValue:w,ruleKey:null==B?void 0:B.key,traffic:B,variableKey:c,variableSchema:S,variableValue:U.value},d.debug("variable override",r),r}if(void 0!==N.value)return r={featureKey:E.key,reason:i.ALLOCATED,bucketKey:D,bucketValue:w,ruleKey:null==B?void 0:B.key,traffic:B,variableKey:c,variableSchema:S,variableValue:N.value},d.debug("allocated variable",r),r}}}return"variation"===u?(r={featureKey:E.key,reason:i.NO_MATCH,bucketKey:D,bucketValue:w},d.debug("no matched variation",r),r):"variable"===u&&S?(r={featureKey:E.key,reason:i.DEFAULTED,bucketKey:D,bucketValue:w,variableKey:c,variableSchema:S,variableValue:S.defaultValue},d.debug("using default value",r),r):(r={featureKey:E.key,reason:i.NO_MATCH,bucketKey:D,bucketValue:w,enabled:!1},d.debug("nothing matched",r),r)}catch(e){return r={featureKey:"string"==typeof f?f:f.key,reason:i.ERROR,error:e},d.error("error",r),r}};var i,a=r(906),n=r(512),o=r(186),s=r(826);!function(e){e.NOT_FOUND="not_found",e.NO_VARIATIONS="no_variations",e.NO_MATCH="no_match",e.DISABLED="disabled",e.REQUIRED="required",e.OUT_OF_RANGE="out_of_range",e.FORCED="forced",e.INITIAL="initial",e.STICKY="sticky",e.RULE="rule",e.ALLOCATED="allocated",e.DEFAULTED="defaulted",e.OVERRIDE="override",e.ERROR="error"}(i||(t.EvaluationReason=i={}))},512:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getMatchedAllocation=n,t.parseFromStringifiedSegments=o,t.getMatchedTraffic=function(e,t,r,a){var n=e.find((function(e){return!!(0,i.allGroupSegmentsAreMatched)(o(e.segments),t,r,a)}));if(n&&n.percentage>0)return n},t.getMatchedTrafficAndAllocation=function(e,t,r,a,s){var u=e.find((function(e){return(0,i.allGroupSegmentsAreMatched)(o(e.segments),t,a,s)}));return u?{matchedTraffic:u,matchedAllocation:n(u,r)}:{matchedTraffic:void 0,matchedAllocation:void 0}},t.findForceFromFeature=function(e,t,r,n){var o={force:void 0,forceIndex:void 0};if(!e.force)return o;for(var s=0;s<e.force.length;s++){var u=e.force[s];if(u.conditions&&(0,a.allConditionsAreMatched)(u.conditions,t,n)){o.force=u,o.forceIndex=s;break}if(u.segments&&(0,i.allGroupSegmentsAreMatched)(u.segments,t,r,n)){o.force=u,o.forceIndex=s;break}}return o};var i=r(826),a=r(186);function n(e,t){if(e.allocation)for(var r=0,i=e.allocation;r<i.length;r++){var a=i[r],n=a.range,o=n[0],s=n[1];if(a.range&&o<=t&&s>=t)return a}}function o(e){return"string"==typeof e&&(e.startsWith("{")||e.startsWith("["))?JSON.parse(e):e}},166:function(e,t,r){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var a=Object.getOwnPropertyDescriptor(t,r);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,a)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),a(r(906),t),a(r(247),t),a(r(584),t),a(r(186),t),a(r(40),t),a(r(335),t)},247:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FeaturevisorInstance=void 0,t.getValueByType=f,t.createInstance=function(e){return new c(e)};var i=r(584),a=r(649),n=r(40),o=r(335),s={schemaVersion:"1",revision:"unknown",attributes:[],segments:[],features:[]};function u(e,t){return t?t(e):fetch(e).then((function(e){return e.json()}))}function f(e,t){try{if(void 0===e)return;switch(t){case"string":return"string"==typeof e?e:void 0;case"integer":return parseInt(e,10);case"double":return parseFloat(e);case"boolean":return!0===e;case"array":return Array.isArray(e)?e:void 0;case"object":return"object"==typeof e?e:void 0;default:return e}}catch(e){return}}var c=function(){function e(e){var t=this;this.bucketKeySeparator=e.bucketKeySeparator||".",this.configureBucketKey=e.configureBucketKey,this.configureBucketValue=e.configureBucketValue,this.datafileUrl=e.datafileUrl,this.handleDatafileFetch=e.handleDatafileFetch,this.initialFeatures=e.initialFeatures,this.interceptContext=e.interceptContext,this.logger=e.logger||(0,i.createLogger)(),this.refreshInterval=e.refreshInterval,this.stickyFeatures=e.stickyFeatures,this.emitter=new n.Emitter,this.statuses={ready:!1,refreshInProgress:!1},e.onReady&&this.emitter.addListener("ready",e.onReady),e.onRefresh&&this.emitter.addListener("refresh",e.onRefresh),e.onUpdate&&this.emitter.addListener("update",e.onUpdate),e.onActivation&&this.emitter.addListener("activation",e.onActivation);var r=this.emitter.addListener.bind(this.emitter);this.on=r,this.addListener=r;var a=this.emitter.removeListener.bind(this.emitter);if(this.off=a,this.removeListener=a,this.removeAllListeners=this.emitter.removeAllListeners.bind(this.emitter),e.datafileUrl)this.setDatafile(e.datafile||s),u(e.datafileUrl,e.handleDatafileFetch).then((function(e){t.setDatafile(e),t.statuses.ready=!0,t.emitter.emit("ready"),t.refreshInterval&&t.startRefreshing()})).catch((function(e){t.logger.error("failed to fetch datafile",{error:e})}));else{if(!e.datafile)throw new Error("Featurevisor SDK instance cannot be created without both `datafile` and `datafileUrl` options");this.setDatafile(e.datafile),this.statuses.ready=!0,setTimeout((function(){t.emitter.emit("ready")}),0)}}return e.prototype.setLogLevels=function(e){this.logger.setLevels(e)},e.prototype.onReady=function(){var e=this;return new Promise((function(t){if(e.statuses.ready)return t(e);var r=function(){e.emitter.removeListener("ready",r),t(e)};e.emitter.addListener("ready",r)}))},e.prototype.setDatafile=function(e){try{this.datafileReader=new a.DatafileReader("string"==typeof e?JSON.parse(e):e)}catch(e){this.logger.error("could not parse datafile",{error:e})}},e.prototype.setStickyFeatures=function(e){this.stickyFeatures=e},e.prototype.getRevision=function(){return this.datafileReader.getRevision()},e.prototype.getFeature=function(e){return"string"==typeof e?this.datafileReader.getFeature(e):e},e.prototype.isReady=function(){return this.statuses.ready},e.prototype.refresh=function(){var e=this;return this.logger.debug("refreshing datafile"),this.statuses.refreshInProgress?this.logger.warn("refresh in progress, skipping"):this.datafileUrl?(this.statuses.refreshInProgress=!0,void u(this.datafileUrl,this.handleDatafileFetch).then((function(t){var r=e.getRevision()!==t.revision;e.setDatafile(t),e.logger.info("refreshed datafile"),e.emitter.emit("refresh"),r&&e.emitter.emit("update"),e.statuses.refreshInProgress=!1})).catch((function(t){e.logger.error("failed to refresh datafile",{error:t}),e.statuses.refreshInProgress=!1}))):this.logger.error("cannot refresh since `datafileUrl` is not provided")},e.prototype.startRefreshing=function(){var e=this;return this.datafileUrl?this.intervalId?this.logger.warn("refreshing has already started"):this.refreshInterval?void(this.intervalId=setInterval((function(){e.refresh()}),1e3*this.refreshInterval)):this.logger.warn("no `refreshInterval` option provided"):this.logger.error("cannot start refreshing since `datafileUrl` is not provided")},e.prototype.stopRefreshing=function(){if(!this.intervalId)return this.logger.warn("refreshing has not started yet");clearInterval(this.intervalId)},e.prototype.evaluateFlag=function(e,t){return void 0===t&&(t={}),(0,o.evaluate)({type:"flag",featureKey:e,context:t,logger:this.logger,datafileReader:this.datafileReader,statuses:this.statuses,interceptContext:this.interceptContext,stickyFeatures:this.stickyFeatures,initialFeatures:this.initialFeatures,bucketKeySeparator:this.bucketKeySeparator,configureBucketKey:this.configureBucketKey,configureBucketValue:this.configureBucketValue})},e.prototype.isEnabled=function(e,t){void 0===t&&(t={});try{return!0===this.evaluateFlag(e,t).enabled}catch(t){return this.logger.error("isEnabled",{featureKey:e,error:t}),!1}},e.prototype.evaluateVariation=function(e,t){return void 0===t&&(t={}),(0,o.evaluate)({type:"variation",featureKey:e,context:t,logger:this.logger,datafileReader:this.datafileReader,statuses:this.statuses,interceptContext:this.interceptContext,stickyFeatures:this.stickyFeatures,initialFeatures:this.initialFeatures,bucketKeySeparator:this.bucketKeySeparator,configureBucketKey:this.configureBucketKey,configureBucketValue:this.configureBucketValue})},e.prototype.getVariation=function(e,t){void 0===t&&(t={});try{var r=this.evaluateVariation(e,t);return void 0!==r.variationValue?r.variationValue:r.variation?r.variation.value:void 0}catch(t){return void this.logger.error("getVariation",{featureKey:e,error:t})}},e.prototype.activate=function(e,t){void 0===t&&(t={});try{var r=this.evaluateVariation(e,t),i=r.variation?r.variation.value:r.variationValue;if(void 0===i)return;var a=this.interceptContext?this.interceptContext(t):t,n={};return this.datafileReader.getAllAttributes().filter((function(e){return!0===e.capture})).forEach((function(e){void 0!==a[e.key]&&(n[e.key]=t[e.key])})),this.emitter.emit("activation",e,i,a,n,r),i}catch(t){return void this.logger.error("activate",{featureKey:e,error:t})}},e.prototype.evaluateVariable=function(e,t,r){return void 0===r&&(r={}),(0,o.evaluate)({type:"variable",featureKey:e,variableKey:t,context:r,logger:this.logger,datafileReader:this.datafileReader,statuses:this.statuses,interceptContext:this.interceptContext,stickyFeatures:this.stickyFeatures,initialFeatures:this.initialFeatures,bucketKeySeparator:this.bucketKeySeparator,configureBucketKey:this.configureBucketKey,configureBucketValue:this.configureBucketValue})},e.prototype.getVariable=function(e,t,r){void 0===r&&(r={});try{var i=this.evaluateVariable(e,t,r);return void 0!==i.variableValue?i.variableSchema&&"json"===i.variableSchema.type&&"string"==typeof i.variableValue?JSON.parse(i.variableValue):i.variableValue:void 0}catch(r){return void this.logger.error("getVariable",{featureKey:e,variableKey:t,error:r})}},e.prototype.getVariableBoolean=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"boolean")},e.prototype.getVariableString=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"string")},e.prototype.getVariableInteger=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"integer")},e.prototype.getVariableDouble=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"double")},e.prototype.getVariableArray=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"array")},e.prototype.getVariableObject=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"object")},e.prototype.getVariableJSON=function(e,t,r){return void 0===r&&(r={}),f(this.getVariable(e,t,r),"json")},e}();t.FeaturevisorInstance=c},584:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=t.defaultLogHandler=t.defaultLogLevels=t.loggerPrefix=void 0,t.createLogger=function(e){void 0===e&&(e={});var i=e.levels||t.defaultLogLevels,a=e.handler||t.defaultLogHandler;return new r({levels:i,handler:a})},t.loggerPrefix="[Featurevisor]",t.defaultLogLevels=["warn","error"],t.defaultLogHandler=function(e,r,i){switch(void 0===i&&(i={}),e){case"debug":console.log(t.loggerPrefix,r,i);break;case"info":console.info(t.loggerPrefix,r,i);break;case"warn":console.warn(t.loggerPrefix,r,i);break;case"error":console.error(t.loggerPrefix,r,i)}};var r=function(){function e(e){this.levels=e.levels,this.handle=e.handler}return e.prototype.setLevels=function(e){this.levels=e},e.prototype.log=function(e,t,r){-1!==this.levels.indexOf(e)&&this.handle(e,t,r)},e.prototype.debug=function(e,t){this.log("debug",e,t)},e.prototype.info=function(e,t){this.log("info",e,t)},e.prototype.warn=function(e,t){this.log("warn",e,t)},e.prototype.error=function(e,t){this.log("error",e,t)},e}();t.Logger=r},826:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.segmentIsMatched=a,t.allGroupSegmentsAreMatched=function e(t,r,i,n){if("*"===t)return!0;if("string"==typeof t){var o=i.getSegment(t);return!!o&&a(o,r,n)}if("object"==typeof t){if("and"in t&&Array.isArray(t.and))return t.and.every((function(t){return e(t,r,i,n)}));if("or"in t&&Array.isArray(t.or))return t.or.some((function(t){return e(t,r,i,n)}));if("not"in t&&Array.isArray(t.not))return t.not.every((function(t){return!1===e(t,r,i,n)}))}return!!Array.isArray(t)&&t.every((function(t){return e(t,r,i,n)}))};var i=r(186);function a(e,t,r){return(0,i.allConditionsAreMatched)(e.conditions,t,r)}}},t={};function r(i){var a=t[i];if(void 0!==a)return a.exports;var n=t[i]={exports:{}};return e[i].call(n.exports,n,n.exports,r),n.exports}return r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(166)})()));
2
2
  //# sourceMappingURL=index.js.map