@featurevisor/sdk 1.35.0 → 1.35.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/coverage/clover.xml +36 -34
- package/coverage/coverage-final.json +1 -1
- package/coverage/lcov-report/bucket.ts.html +1 -1
- package/coverage/lcov-report/conditions.ts.html +1 -1
- package/coverage/lcov-report/datafileReader.ts.html +1 -1
- package/coverage/lcov-report/emitter.ts.html +1 -1
- package/coverage/lcov-report/evaluate.ts.html +14 -8
- package/coverage/lcov-report/feature.ts.html +1 -1
- package/coverage/lcov-report/index.html +14 -14
- package/coverage/lcov-report/instance.ts.html +1 -1
- package/coverage/lcov-report/logger.ts.html +1 -1
- package/coverage/lcov-report/segments.ts.html +1 -1
- package/coverage/lcov.info +72 -66
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.gz +0 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/evaluate.ts +2 -0
|
@@ -487,7 +487,7 @@ export function getBucket(options: BucketValueOptions): Bucket {
|
|
|
487
487
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
488
488
|
Code coverage generated by
|
|
489
489
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
490
|
-
at 2025-03-
|
|
490
|
+
at 2025-03-31T21:26:29.644Z
|
|
491
491
|
</div>
|
|
492
492
|
<script src="prettify.js"></script>
|
|
493
493
|
<script>
|
|
@@ -451,7 +451,7 @@ export function allConditionsAreMatched(
|
|
|
451
451
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
452
452
|
Code coverage generated by
|
|
453
453
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
454
|
-
at 2025-03-
|
|
454
|
+
at 2025-03-31T21:26:29.644Z
|
|
455
455
|
</div>
|
|
456
456
|
<script src="prettify.js"></script>
|
|
457
457
|
<script>
|
|
@@ -388,7 +388,7 @@ export class DatafileReader {
|
|
|
388
388
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
389
389
|
Code coverage generated by
|
|
390
390
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
391
|
-
at 2025-03-
|
|
391
|
+
at 2025-03-31T21:26:29.644Z
|
|
392
392
|
</div>
|
|
393
393
|
<script src="prettify.js"></script>
|
|
394
394
|
<script>
|
|
@@ -229,7 +229,7 @@ export class Emitter {
|
|
|
229
229
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
230
230
|
Code coverage generated by
|
|
231
231
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
232
|
-
at 2025-03-
|
|
232
|
+
at 2025-03-31T21:26:29.644Z
|
|
233
233
|
</div>
|
|
234
234
|
<script src="prettify.js"></script>
|
|
235
235
|
<script>
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">95.
|
|
26
|
+
<span class="strong">95.3% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>203/213</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">91.6% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>131/143</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">95.
|
|
47
|
+
<span class="strong">95.19% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>198/208</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -842,7 +842,9 @@
|
|
|
842
842
|
<a name='L777'></a><a href='#L777'>777</a>
|
|
843
843
|
<a name='L778'></a><a href='#L778'>778</a>
|
|
844
844
|
<a name='L779'></a><a href='#L779'>779</a>
|
|
845
|
-
<a name='L780'></a><a href='#L780'>780</a
|
|
845
|
+
<a name='L780'></a><a href='#L780'>780</a>
|
|
846
|
+
<a name='L781'></a><a href='#L781'>781</a>
|
|
847
|
+
<a name='L782'></a><a href='#L782'>782</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
846
848
|
<span class="cline-any cline-neutral"> </span>
|
|
847
849
|
<span class="cline-any cline-neutral"> </span>
|
|
848
850
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1493,6 +1495,8 @@
|
|
|
1493
1495
|
<span class="cline-any cline-yes">20x</span>
|
|
1494
1496
|
<span class="cline-any cline-yes">3x</span>
|
|
1495
1497
|
<span class="cline-any cline-yes">17x</span>
|
|
1498
|
+
<span class="cline-any cline-no"> </span>
|
|
1499
|
+
<span class="cline-any cline-yes">17x</span>
|
|
1496
1500
|
<span class="cline-any cline-yes">16x</span>
|
|
1497
1501
|
<span class="cline-any cline-neutral"> </span>
|
|
1498
1502
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2271,6 +2275,8 @@ export function evaluate(options: EvaluateOptions): Evaluation {
|
|
|
2271
2275
|
|
|
2272
2276
|
if (force && force.variation) {
|
|
2273
2277
|
variationValue = force.variation;
|
|
2278
|
+
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (matchedTraffic && matchedTraffic.variation) {
|
|
2279
|
+
<span class="cstat-no" title="statement not covered" > variationValue = matchedTraffic.variation;</span>
|
|
2274
2280
|
} else if (matchedAllocation && matchedAllocation.variation) {
|
|
2275
2281
|
variationValue = matchedAllocation.variation;
|
|
2276
2282
|
}
|
|
@@ -2407,7 +2413,7 @@ export function evaluate(options: EvaluateOptions): Evaluation {
|
|
|
2407
2413
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2408
2414
|
Code coverage generated by
|
|
2409
2415
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2410
|
-
at 2025-03-
|
|
2416
|
+
at 2025-03-31T21:26:29.644Z
|
|
2411
2417
|
</div>
|
|
2412
2418
|
<script src="prettify.js"></script>
|
|
2413
2419
|
<script>
|
|
@@ -481,7 +481,7 @@ export function findForceFromFeature(
|
|
|
481
481
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
482
482
|
Code coverage generated by
|
|
483
483
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
484
|
-
at 2025-03-
|
|
484
|
+
at 2025-03-31T21:26:29.644Z
|
|
485
485
|
</div>
|
|
486
486
|
<script src="prettify.js"></script>
|
|
487
487
|
<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.
|
|
26
|
+
<span class="strong">92.43% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>599/648</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">86.
|
|
33
|
+
<span class="strong">86.4% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>305/353</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.
|
|
47
|
+
<span class="strong">92.46% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>589/637</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -140,17 +140,17 @@
|
|
|
140
140
|
|
|
141
141
|
<tr>
|
|
142
142
|
<td class="file high" data-value="evaluate.ts"><a href="evaluate.ts.html">evaluate.ts</a></td>
|
|
143
|
-
<td data-value="95.
|
|
143
|
+
<td data-value="95.3" class="pic high">
|
|
144
144
|
<div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
|
|
145
145
|
</td>
|
|
146
|
-
<td data-value="95.
|
|
147
|
-
<td data-value="
|
|
148
|
-
<td data-value="
|
|
149
|
-
<td data-value="
|
|
146
|
+
<td data-value="95.3" class="pct high">95.3%</td>
|
|
147
|
+
<td data-value="213" class="abs high">203/213</td>
|
|
148
|
+
<td data-value="91.6" class="pct high">91.6%</td>
|
|
149
|
+
<td data-value="143" class="abs high">131/143</td>
|
|
150
150
|
<td data-value="100" class="pct high">100%</td>
|
|
151
151
|
<td data-value="10" class="abs high">10/10</td>
|
|
152
|
-
<td data-value="95.
|
|
153
|
-
<td data-value="
|
|
152
|
+
<td data-value="95.19" class="pct high">95.19%</td>
|
|
153
|
+
<td data-value="208" class="abs high">198/208</td>
|
|
154
154
|
</tr>
|
|
155
155
|
|
|
156
156
|
<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-
|
|
224
|
+
at 2025-03-31T21:26:29.644Z
|
|
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-
|
|
1837
|
+
at 2025-03-31T21:26:29.644Z
|
|
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-
|
|
343
|
+
at 2025-03-31T21:26:29.644Z
|
|
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-
|
|
247
|
+
at 2025-03-31T21:26:29.644Z
|
|
248
248
|
</div>
|
|
249
249
|
<script src="prettify.js"></script>
|
|
250
250
|
<script>
|
package/coverage/lcov.info
CHANGED
|
@@ -368,9 +368,9 @@ FN:396,(anonymous_3)
|
|
|
368
368
|
FN:504,(anonymous_4)
|
|
369
369
|
FN:579,(anonymous_5)
|
|
370
370
|
FN:600,(anonymous_6)
|
|
371
|
-
FN:
|
|
372
|
-
FN:
|
|
373
|
-
FN:
|
|
371
|
+
FN:658,(anonymous_7)
|
|
372
|
+
FN:661,(anonymous_8)
|
|
373
|
+
FN:665,(anonymous_9)
|
|
374
374
|
FNF:10
|
|
375
375
|
FNH:10
|
|
376
376
|
FNDA:1,(anonymous_0)
|
|
@@ -554,43 +554,45 @@ DA:643,2
|
|
|
554
554
|
DA:649,20
|
|
555
555
|
DA:650,3
|
|
556
556
|
DA:651,17
|
|
557
|
-
DA:652,
|
|
558
|
-
DA:
|
|
559
|
-
DA:
|
|
560
|
-
DA:
|
|
561
|
-
DA:
|
|
562
|
-
DA:
|
|
563
|
-
DA:
|
|
564
|
-
DA:663,
|
|
565
|
-
DA:664,
|
|
566
|
-
DA:665,
|
|
567
|
-
DA:
|
|
568
|
-
DA:
|
|
569
|
-
DA:
|
|
570
|
-
DA:
|
|
571
|
-
DA:
|
|
572
|
-
DA:
|
|
557
|
+
DA:652,0
|
|
558
|
+
DA:653,17
|
|
559
|
+
DA:654,16
|
|
560
|
+
DA:657,20
|
|
561
|
+
DA:658,38
|
|
562
|
+
DA:660,19
|
|
563
|
+
DA:661,34
|
|
564
|
+
DA:663,19
|
|
565
|
+
DA:664,7
|
|
566
|
+
DA:665,7
|
|
567
|
+
DA:666,12
|
|
568
|
+
DA:667,5
|
|
569
|
+
DA:674,7
|
|
570
|
+
DA:675,7
|
|
571
|
+
DA:683,0
|
|
572
|
+
DA:686,7
|
|
573
|
+
DA:687,4
|
|
573
574
|
DA:699,4
|
|
574
|
-
DA:
|
|
575
|
-
DA:
|
|
576
|
-
DA:
|
|
575
|
+
DA:701,4
|
|
576
|
+
DA:705,3
|
|
577
|
+
DA:706,3
|
|
577
578
|
DA:718,3
|
|
578
|
-
DA:
|
|
579
|
-
DA:
|
|
580
|
-
DA:
|
|
579
|
+
DA:720,3
|
|
580
|
+
DA:730,18
|
|
581
|
+
DA:731,0
|
|
581
582
|
DA:738,0
|
|
582
|
-
DA:
|
|
583
|
-
DA:
|
|
584
|
-
DA:
|
|
583
|
+
DA:740,0
|
|
584
|
+
DA:743,18
|
|
585
|
+
DA:744,13
|
|
585
586
|
DA:754,13
|
|
586
|
-
DA:
|
|
587
|
-
DA:
|
|
587
|
+
DA:756,13
|
|
588
|
+
DA:759,5
|
|
588
589
|
DA:767,5
|
|
589
|
-
DA:769,
|
|
590
|
-
DA:
|
|
590
|
+
DA:769,5
|
|
591
|
+
DA:771,0
|
|
591
592
|
DA:777,0
|
|
592
|
-
|
|
593
|
-
|
|
593
|
+
DA:779,0
|
|
594
|
+
LF:208
|
|
595
|
+
LH:198
|
|
594
596
|
BRDA:35,0,0,1
|
|
595
597
|
BRDA:35,0,1,1
|
|
596
598
|
BRDA:122,1,0,130
|
|
@@ -699,39 +701,43 @@ BRDA:649,71,0,3
|
|
|
699
701
|
BRDA:649,71,1,17
|
|
700
702
|
BRDA:649,72,0,20
|
|
701
703
|
BRDA:649,72,1,3
|
|
702
|
-
BRDA:651,73,0,
|
|
704
|
+
BRDA:651,73,0,0
|
|
705
|
+
BRDA:651,73,1,17
|
|
703
706
|
BRDA:651,74,0,17
|
|
704
|
-
BRDA:651,74,1,
|
|
705
|
-
BRDA:
|
|
706
|
-
BRDA:
|
|
707
|
-
BRDA:
|
|
708
|
-
BRDA:
|
|
709
|
-
BRDA:
|
|
710
|
-
BRDA:
|
|
711
|
-
BRDA:
|
|
712
|
-
BRDA:
|
|
713
|
-
BRDA:
|
|
714
|
-
BRDA:
|
|
715
|
-
BRDA:
|
|
716
|
-
BRDA:
|
|
717
|
-
BRDA:
|
|
718
|
-
BRDA:
|
|
719
|
-
BRDA:
|
|
720
|
-
BRDA:
|
|
721
|
-
BRDA:
|
|
722
|
-
BRDA:
|
|
723
|
-
BRDA:
|
|
724
|
-
BRDA:
|
|
725
|
-
BRDA:
|
|
726
|
-
BRDA:
|
|
727
|
-
BRDA:
|
|
728
|
-
BRDA:
|
|
729
|
-
BRDA:
|
|
730
|
-
BRDA:
|
|
731
|
-
BRDA:
|
|
732
|
-
BRDA:
|
|
733
|
-
|
|
734
|
-
|
|
707
|
+
BRDA:651,74,1,17
|
|
708
|
+
BRDA:653,75,0,16
|
|
709
|
+
BRDA:653,76,0,17
|
|
710
|
+
BRDA:653,76,1,16
|
|
711
|
+
BRDA:657,77,0,19
|
|
712
|
+
BRDA:657,78,0,20
|
|
713
|
+
BRDA:657,78,1,19
|
|
714
|
+
BRDA:660,79,0,19
|
|
715
|
+
BRDA:660,80,0,19
|
|
716
|
+
BRDA:660,80,1,19
|
|
717
|
+
BRDA:663,81,0,7
|
|
718
|
+
BRDA:664,82,0,7
|
|
719
|
+
BRDA:666,83,0,5
|
|
720
|
+
BRDA:668,84,0,0
|
|
721
|
+
BRDA:668,84,1,5
|
|
722
|
+
BRDA:674,85,0,7
|
|
723
|
+
BRDA:686,86,0,4
|
|
724
|
+
BRDA:692,87,0,0
|
|
725
|
+
BRDA:692,87,1,4
|
|
726
|
+
BRDA:692,88,0,4
|
|
727
|
+
BRDA:692,88,1,4
|
|
728
|
+
BRDA:705,89,0,3
|
|
729
|
+
BRDA:711,90,0,0
|
|
730
|
+
BRDA:711,90,1,3
|
|
731
|
+
BRDA:711,91,0,3
|
|
732
|
+
BRDA:711,91,1,3
|
|
733
|
+
BRDA:730,92,0,0
|
|
734
|
+
BRDA:743,93,0,13
|
|
735
|
+
BRDA:743,94,0,18
|
|
736
|
+
BRDA:743,94,1,13
|
|
737
|
+
BRDA:772,95,0,0
|
|
738
|
+
BRDA:772,95,1,0
|
|
739
|
+
BRF:143
|
|
740
|
+
BRH:131
|
|
735
741
|
end_of_record
|
|
736
742
|
TN:
|
|
737
743
|
SF:src/feature.ts
|
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: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){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
|