@featurevisor/sdk 1.3.0 → 1.16.0

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.
@@ -109,7 +109,7 @@ export function getBucketedNumber(bucketKey: string): number {
109
109
  <div class='footer quiet pad2 space-top1 center small'>
110
110
  Code coverage generated by
111
111
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
112
- at 2024-01-23T21:38:46.395Z
112
+ at 2024-04-05T16:04:58.225Z
113
113
  </div>
114
114
  <script src="prettify.js"></script>
115
115
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">97.01% </span>
26
+ <span class="strong">94.28% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>65/67</span>
28
+ <span class='fraction'>66/70</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">96.87% </span>
47
+ <span class="strong">94.02% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>62/64</span>
49
+ <span class='fraction'>63/67</span>
50
50
  </div>
51
51
 
52
52
 
@@ -171,7 +171,25 @@
171
171
  <a name='L106'></a><a href='#L106'>106</a>
172
172
  <a name='L107'></a><a href='#L107'>107</a>
173
173
  <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
191
+ <span class="cline-any cline-neutral">&nbsp;</span>
192
+ <span class="cline-any cline-neutral">&nbsp;</span>
175
193
  <span class="cline-any cline-neutral">&nbsp;</span>
176
194
  <span class="cline-any cline-neutral">&nbsp;</span>
177
195
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -249,8 +267,21 @@
249
267
  <span class="cline-any cline-neutral">&nbsp;</span>
250
268
  <span class="cline-any cline-neutral">&nbsp;</span>
251
269
  <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
271
  <span class="cline-any cline-yes">842x</span>
253
272
  <span class="cline-any cline-yes">414x</span>
273
+ <span class="cline-any cline-yes">414x</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-no">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
254
285
  <span class="cline-any cline-neutral">&nbsp;</span>
255
286
  <span class="cline-any cline-neutral">&nbsp;</span>
256
287
  <span class="cline-any cline-yes">428x</span>
@@ -273,6 +304,7 @@
273
304
  <span class="cline-any cline-neutral">&nbsp;</span>
274
305
  <span class="cline-any cline-neutral">&nbsp;</span>
275
306
  <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
308
  <span class="cline-any cline-yes">377x</span>
277
309
  <span class="cline-any cline-yes">380x</span>
278
310
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -283,6 +315,8 @@
283
315
  &nbsp;
284
316
  import { Context, Condition, PlainCondition } from "@featurevisor/types";
285
317
  &nbsp;
318
+ import { Logger } from "./logger";
319
+ &nbsp;
286
320
  export function conditionIsMatched(condition: PlainCondition, context: Context): boolean {
287
321
  const { attribute, operator, value } = condition;
288
322
  &nbsp;
@@ -356,17 +390,30 @@ export function conditionIsMatched(condition: PlainCondition, context: Context):
356
390
  export function allConditionsAreMatched(
357
391
  conditions: Condition[] | Condition,
358
392
  context: Context,
393
+ logger: Logger,
359
394
  ): boolean {
360
395
  if ("attribute" in conditions) {
361
- return conditionIsMatched(conditions, context);
396
+ try {
397
+ return conditionIsMatched(conditions, context);
398
+ } catch (e) {
399
+ <span class="cstat-no" title="statement not covered" > logger.warn(e.message, {</span>
400
+ error: e,
401
+ details: {
402
+ condition: conditions,
403
+ context,
404
+ },
405
+ });
406
+ &nbsp;
407
+ <span class="cstat-no" title="statement not covered" > return false;</span>
408
+ }
362
409
  }
363
410
  &nbsp;
364
411
  if ("and" in conditions &amp;&amp; Array.isArray(conditions.and)) {
365
- return conditions.and.every((c) =&gt; allConditionsAreMatched(c, context));
412
+ return conditions.and.every((c) =&gt; allConditionsAreMatched(c, context, logger));
366
413
  }
367
414
  &nbsp;
368
415
  if ("or" in conditions &amp;&amp; Array.isArray(conditions.or)) {
369
- return conditions.or.some((c) =&gt; allConditionsAreMatched(c, context));
416
+ return conditions.or.some((c) =&gt; allConditionsAreMatched(c, context, logger));
370
417
  }
371
418
  &nbsp;
372
419
  if ("not" in conditions &amp;&amp; Array.isArray(conditions.not)) {
@@ -377,12 +424,13 @@ export function allConditionsAreMatched(
377
424
  and: conditions.not,
378
425
  },
379
426
  context,
427
+ logger,
380
428
  ) === false,
381
429
  );
382
430
  }
383
431
  &nbsp;
384
432
  if (Array.isArray(conditions)) {
385
- return conditions.every((c) =&gt; allConditionsAreMatched(c, context));
433
+ return conditions.every((c) =&gt; allConditionsAreMatched(c, context, logger));
386
434
  }
387
435
  &nbsp;
388
436
  <span class="cstat-no" title="statement not covered" > return false;</span>
@@ -394,7 +442,7 @@ export function allConditionsAreMatched(
394
442
  <div class='footer quiet pad2 space-top1 center small'>
395
443
  Code coverage generated by
396
444
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
397
- at 2024-01-23T21:38:46.395Z
445
+ at 2024-04-05T16:04:58.225Z
398
446
  </div>
399
447
  <script src="prettify.js"></script>
400
448
  <script>
@@ -289,7 +289,7 @@ export class DatafileReader {
289
289
  <div class='footer quiet pad2 space-top1 center small'>
290
290
  Code coverage generated by
291
291
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
292
- at 2024-01-23T21:38:46.395Z
292
+ at 2024-04-05T16:04:58.225Z
293
293
  </div>
294
294
  <script src="prettify.js"></script>
295
295
  <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 2024-01-23T21:38:46.395Z
232
+ at 2024-04-05T16:04:58.225Z
233
233
  </div>
234
234
  <script src="prettify.js"></script>
235
235
  <script>
@@ -162,11 +162,22 @@
162
162
  <a name='L97'></a><a href='#L97'>97</a>
163
163
  <a name='L98'></a><a href='#L98'>98</a>
164
164
  <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
166
176
  <span class="cline-any cline-neutral">&nbsp;</span>
167
177
  <span class="cline-any cline-yes">1x</span>
168
178
  <span class="cline-any cline-yes">1x</span>
169
179
  <span class="cline-any cline-neutral">&nbsp;</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
170
181
  <span class="cline-any cline-yes">1x</span>
171
182
  <span class="cline-any cline-neutral">&nbsp;</span>
172
183
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -195,10 +206,16 @@
195
206
  <span class="cline-any cline-neutral">&nbsp;</span>
196
207
  <span class="cline-any cline-neutral">&nbsp;</span>
197
208
  <span class="cline-any cline-neutral">&nbsp;</span>
209
+ <span class="cline-any cline-neutral">&nbsp;</span>
198
210
  <span class="cline-any cline-yes">56x</span>
199
211
  <span class="cline-any cline-yes">81x</span>
200
212
  <span class="cline-any cline-neutral">&nbsp;</span>
201
213
  <span class="cline-any cline-neutral">&nbsp;</span>
214
+ <span class="cline-any cline-neutral">&nbsp;</span>
215
+ <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-neutral">&nbsp;</span>
218
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
219
  <span class="cline-any cline-yes">29x</span>
203
220
  <span class="cline-any cline-neutral">&nbsp;</span>
204
221
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -217,6 +234,7 @@
217
234
  <span class="cline-any cline-neutral">&nbsp;</span>
218
235
  <span class="cline-any cline-neutral">&nbsp;</span>
219
236
  <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-neutral">&nbsp;</span>
220
238
  <span class="cline-any cline-yes">39x</span>
221
239
  <span class="cline-any cline-yes">59x</span>
222
240
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -225,6 +243,7 @@
225
243
  <span class="cline-any cline-neutral">&nbsp;</span>
226
244
  <span class="cline-any cline-neutral">&nbsp;</span>
227
245
  <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
247
  <span class="cline-any cline-yes">39x</span>
229
248
  <span class="cline-any cline-no">&nbsp;</span>
230
249
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -245,6 +264,7 @@
245
264
  <span class="cline-any cline-neutral">&nbsp;</span>
246
265
  <span class="cline-any cline-neutral">&nbsp;</span>
247
266
  <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
268
  <span class="cline-any cline-yes">108x</span>
249
269
  <span class="cline-any cline-yes">51x</span>
250
270
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -265,6 +285,7 @@
265
285
  import { DatafileReader } from "./datafileReader";
266
286
  import { allGroupSegmentsAreMatched } from "./segments";
267
287
  import { allConditionsAreMatched } from "./conditions";
288
+ import { Logger } from "./logger";
268
289
  &nbsp;
269
290
  export function getMatchedAllocation(
270
291
  traffic: Traffic,
@@ -293,10 +314,16 @@ export function getMatchedTraffic(
293
314
  traffic: Traffic[],
294
315
  context: Context,
295
316
  datafileReader: DatafileReader,
317
+ logger: Logger,
296
318
  ): Traffic | undefined {
297
319
  return traffic.find((t) =&gt; {
298
320
  if (
299
- !allGroupSegmentsAreMatched(parseFromStringifiedSegments(t.segments), context, datafileReader)
321
+ !allGroupSegmentsAreMatched(
322
+ parseFromStringifiedSegments(t.segments),
323
+ context,
324
+ datafileReader,
325
+ logger,
326
+ )
300
327
  ) {
301
328
  return false;
302
329
  }
@@ -315,12 +342,14 @@ export function getMatchedTrafficAndAllocation(
315
342
  context: Context,
316
343
  bucketValue: number,
317
344
  datafileReader: DatafileReader,
345
+ logger: Logger,
318
346
  ): MatchedTrafficAndAllocation {
319
347
  const matchedTraffic = traffic.find((t) =&gt; {
320
348
  return allGroupSegmentsAreMatched(
321
349
  parseFromStringifiedSegments(t.segments),
322
350
  context,
323
351
  datafileReader,
352
+ logger,
324
353
  );
325
354
  });
326
355
  &nbsp;
@@ -343,6 +372,7 @@ export function findForceFromFeature(
343
372
  feature: Feature,
344
373
  context: Context,
345
374
  datafileReader: DatafileReader,
375
+ logger: Logger,
346
376
  ): Force | undefined {
347
377
  if (!feature.force) {
348
378
  return undefined;
@@ -350,11 +380,11 @@ export function findForceFromFeature(
350
380
  &nbsp;
351
381
  return feature.force.find((f: Force) =&gt; {
352
382
  if (f.conditions) {
353
- return allConditionsAreMatched(f.conditions, context);
383
+ return allConditionsAreMatched(f.conditions, context, logger);
354
384
  }
355
385
  &nbsp;
356
386
  if (f.segments) {
357
- return allGroupSegmentsAreMatched(f.segments, context, datafileReader);
387
+ return allGroupSegmentsAreMatched(f.segments, context, datafileReader, logger);
358
388
  }
359
389
  &nbsp;
360
390
  <span class="cstat-no" title="statement not covered" > return false;</span>
@@ -367,7 +397,7 @@ export function findForceFromFeature(
367
397
  <div class='footer quiet pad2 space-top1 center small'>
368
398
  Code coverage generated by
369
399
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
370
- at 2024-01-23T21:38:46.395Z
400
+ at 2024-04-05T16:04:58.225Z
371
401
  </div>
372
402
  <script src="prettify.js"></script>
373
403
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">91.96% </span>
26
+ <span class="strong">91.68% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>572/622</span>
28
+ <span class='fraction'>573/625</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">91.95% </span>
47
+ <span class="strong">91.66% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>560/609</span>
49
+ <span class='fraction'>561/612</span>
50
50
  </div>
51
51
 
52
52
 
@@ -95,17 +95,17 @@
95
95
 
96
96
  <tr>
97
97
  <td class="file high" data-value="conditions.ts"><a href="conditions.ts.html">conditions.ts</a></td>
98
- <td data-value="97.01" class="pic high">
99
- <div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
98
+ <td data-value="94.28" class="pic high">
99
+ <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
100
100
  </td>
101
- <td data-value="97.01" class="pct high">97.01%</td>
102
- <td data-value="67" class="abs high">65/67</td>
101
+ <td data-value="94.28" class="pct high">94.28%</td>
102
+ <td data-value="70" class="abs high">66/70</td>
103
103
  <td data-value="98.46" class="pct high">98.46%</td>
104
104
  <td data-value="65" class="abs high">64/65</td>
105
105
  <td data-value="100" class="pct high">100%</td>
106
106
  <td data-value="6" class="abs high">6/6</td>
107
- <td data-value="96.87" class="pct high">96.87%</td>
108
- <td data-value="64" class="abs high">62/64</td>
107
+ <td data-value="94.02" class="pct high">94.02%</td>
108
+ <td data-value="67" class="abs high">63/67</td>
109
109
  </tr>
110
110
 
111
111
  <tr>
@@ -206,7 +206,7 @@
206
206
  <div class='footer quiet pad2 space-top1 center small'>
207
207
  Code coverage generated by
208
208
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
209
- at 2024-01-23T21:38:46.395Z
209
+ at 2024-04-05T16:04:58.225Z
210
210
  </div>
211
211
  <script src="prettify.js"></script>
212
212
  <script>
@@ -1354,7 +1354,16 @@
1354
1354
  <a name='L1289'></a><a href='#L1289'>1289</a>
1355
1355
  <a name='L1290'></a><a href='#L1290'>1290</a>
1356
1356
  <a name='L1291'></a><a href='#L1291'>1291</a>
1357
- <a name='L1292'></a><a href='#L1292'>1292</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
1357
+ <a name='L1292'></a><a href='#L1292'>1292</a>
1358
+ <a name='L1293'></a><a href='#L1293'>1293</a>
1359
+ <a name='L1294'></a><a href='#L1294'>1294</a>
1360
+ <a name='L1295'></a><a href='#L1295'>1295</a>
1361
+ <a name='L1296'></a><a href='#L1296'>1296</a>
1362
+ <a name='L1297'></a><a href='#L1297'>1297</a>
1363
+ <a name='L1298'></a><a href='#L1298'>1298</a>
1364
+ <a name='L1299'></a><a href='#L1299'>1299</a>
1365
+ <a name='L1300'></a><a href='#L1300'>1300</a>
1366
+ <a name='L1301'></a><a href='#L1301'>1301</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
1358
1367
  <span class="cline-any cline-neutral">&nbsp;</span>
1359
1368
  <span class="cline-any cline-neutral">&nbsp;</span>
1360
1369
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1937,6 +1946,11 @@
1937
1946
  <span class="cline-any cline-neutral">&nbsp;</span>
1938
1947
  <span class="cline-any cline-yes">56x</span>
1939
1948
  <span class="cline-any cline-neutral">&nbsp;</span>
1949
+ <span class="cline-any cline-neutral">&nbsp;</span>
1950
+ <span class="cline-any cline-neutral">&nbsp;</span>
1951
+ <span class="cline-any cline-neutral">&nbsp;</span>
1952
+ <span class="cline-any cline-neutral">&nbsp;</span>
1953
+ <span class="cline-any cline-neutral">&nbsp;</span>
1940
1954
  <span class="cline-any cline-yes">56x</span>
1941
1955
  <span class="cline-any cline-neutral">&nbsp;</span>
1942
1956
  <span class="cline-any cline-yes">52x</span>
@@ -2158,6 +2172,7 @@
2158
2172
  <span class="cline-any cline-neutral">&nbsp;</span>
2159
2173
  <span class="cline-any cline-neutral">&nbsp;</span>
2160
2174
  <span class="cline-any cline-neutral">&nbsp;</span>
2175
+ <span class="cline-any cline-neutral">&nbsp;</span>
2161
2176
  <span class="cline-any cline-yes">17x</span>
2162
2177
  <span class="cline-any cline-neutral">&nbsp;</span>
2163
2178
  <span class="cline-any cline-yes">17x</span>
@@ -2422,6 +2437,7 @@
2422
2437
  <span class="cline-any cline-neutral">&nbsp;</span>
2423
2438
  <span class="cline-any cline-neutral">&nbsp;</span>
2424
2439
  <span class="cline-any cline-neutral">&nbsp;</span>
2440
+ <span class="cline-any cline-neutral">&nbsp;</span>
2425
2441
  <span class="cline-any cline-yes">22x</span>
2426
2442
  <span class="cline-any cline-neutral">&nbsp;</span>
2427
2443
  <span class="cline-any cline-yes">22x</span>
@@ -2468,6 +2484,7 @@
2468
2484
  <span class="cline-any cline-neutral">&nbsp;</span>
2469
2485
  <span class="cline-any cline-neutral">&nbsp;</span>
2470
2486
  <span class="cline-any cline-neutral">&nbsp;</span>
2487
+ <span class="cline-any cline-neutral">&nbsp;</span>
2471
2488
  <span class="cline-any cline-yes">7x</span>
2472
2489
  <span class="cline-any cline-yes">7x</span>
2473
2490
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2476,6 +2493,7 @@
2476
2493
  <span class="cline-any cline-neutral">&nbsp;</span>
2477
2494
  <span class="cline-any cline-neutral">&nbsp;</span>
2478
2495
  <span class="cline-any cline-neutral">&nbsp;</span>
2496
+ <span class="cline-any cline-neutral">&nbsp;</span>
2479
2497
  <span class="cline-any cline-no">&nbsp;</span>
2480
2498
  <span class="cline-any cline-neutral">&nbsp;</span>
2481
2499
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -3168,7 +3186,7 @@ export class FeaturevisorInstance {
3168
3186
  const finalContext = this.interceptContext ? this.interceptContext(context) : context;
3169
3187
  &nbsp;
3170
3188
  // forced
3171
- const force = findForceFromFeature(feature, context, this.datafileReader);
3189
+ const force = findForceFromFeature(feature, context, this.datafileReader, this.logger);
3172
3190
  &nbsp;
3173
3191
  if (force &amp;&amp; typeof force.enabled !== "undefined") {
3174
3192
  evaluation = {
@@ -3226,7 +3244,12 @@ export class FeaturevisorInstance {
3226
3244
  // bucketing
3227
3245
  const bucketValue = this.getBucketValue(feature, finalContext);
3228
3246
  &nbsp;
3229
- const matchedTraffic = getMatchedTraffic(feature.traffic, finalContext, this.datafileReader);
3247
+ const matchedTraffic = getMatchedTraffic(
3248
+ feature.traffic,
3249
+ finalContext,
3250
+ this.datafileReader,
3251
+ this.logger,
3252
+ );
3230
3253
  &nbsp;
3231
3254
  if (matchedTraffic) {
3232
3255
  // check if mutually exclusive
@@ -3421,7 +3444,7 @@ export class FeaturevisorInstance {
3421
3444
  const finalContext = this.interceptContext ? this.interceptContext(context) : context;
3422
3445
  &nbsp;
3423
3446
  // forced
3424
- const force = findForceFromFeature(feature, context, this.datafileReader);
3447
+ const force = findForceFromFeature(feature, context, this.datafileReader, this.logger);
3425
3448
  &nbsp;
3426
3449
  if (force &amp;&amp; force.variation) {
3427
3450
  const variation = feature.variations.find((v) =&gt; v.value === force.variation);
@@ -3447,6 +3470,7 @@ export class FeaturevisorInstance {
3447
3470
  finalContext,
3448
3471
  bucketValue,
3449
3472
  this.datafileReader,
3473
+ this.logger,
3450
3474
  );
3451
3475
  &nbsp;
3452
3476
  if (matchedTraffic) {
@@ -3687,7 +3711,7 @@ export class FeaturevisorInstance {
3687
3711
  const finalContext = this.interceptContext ? <span class="branch-0 cbranch-no" title="branch not covered" >this.interceptContext(context) </span>: context;
3688
3712
  &nbsp;
3689
3713
  // forced
3690
- const force = findForceFromFeature(feature, context, this.datafileReader);
3714
+ const force = findForceFromFeature(feature, context, this.datafileReader, this.logger);
3691
3715
  &nbsp;
3692
3716
  if (force &amp;&amp; force.variables &amp;&amp; typeof force.variables[variableKey] !== "undefined") {
3693
3717
  evaluation = {
@@ -3711,6 +3735,7 @@ export class FeaturevisorInstance {
3711
3735
  finalContext,
3712
3736
  bucketValue,
3713
3737
  this.datafileReader,
3738
+ this.logger,
3714
3739
  );
3715
3740
  &nbsp;
3716
3741
  if (matchedTraffic) {
@@ -3756,6 +3781,7 @@ export class FeaturevisorInstance {
3756
3781
  return allConditionsAreMatched(
3757
3782
  typeof o.conditions === "string" ? <span class="branch-0 cbranch-no" title="branch not covered" >JSON.parse(o.conditions) </span>: o.conditions,
3758
3783
  finalContext,
3784
+ this.logger,
3759
3785
  );
3760
3786
  }
3761
3787
  &nbsp;
@@ -3764,6 +3790,7 @@ export class FeaturevisorInstance {
3764
3790
  parseFromStringifiedSegments(o.segments),
3765
3791
  finalContext,
3766
3792
  this.datafileReader,
3793
+ this.logger,
3767
3794
  );
3768
3795
  }
3769
3796
  &nbsp;
@@ -3943,7 +3970,7 @@ export function createInstance(options: InstanceOptions): FeaturevisorInstance {
3943
3970
  <div class='footer quiet pad2 space-top1 center small'>
3944
3971
  Code coverage generated by
3945
3972
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3946
- at 2024-01-23T21:38:46.395Z
3973
+ at 2024-04-05T16:04:58.225Z
3947
3974
  </div>
3948
3975
  <script src="prettify.js"></script>
3949
3976
  <script>
@@ -168,9 +168,9 @@
168
168
  <span class="cline-any cline-neutral">&nbsp;</span>
169
169
  <span class="cline-any cline-neutral">&nbsp;</span>
170
170
  <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-yes">2x</span>
171
+ <span class="cline-any cline-yes">4x</span>
172
172
  <span class="cline-any cline-neutral">&nbsp;</span>
173
- <span class="cline-any cline-yes">2x</span>
173
+ <span class="cline-any cline-yes">4x</span>
174
174
  <span class="cline-any cline-neutral">&nbsp;</span>
175
175
  <span class="cline-any cline-neutral">&nbsp;</span>
176
176
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -180,7 +180,7 @@
180
180
  <span class="cline-any cline-neutral">&nbsp;</span>
181
181
  <span class="cline-any cline-neutral">&nbsp;</span>
182
182
  <span class="cline-any cline-neutral">&nbsp;</span>
183
- <span class="cline-any cline-yes">2x</span>
183
+ <span class="cline-any cline-yes">4x</span>
184
184
  <span class="cline-any cline-neutral">&nbsp;</span>
185
185
  <span class="cline-any cline-neutral">&nbsp;</span>
186
186
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -201,13 +201,13 @@
201
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
202
  <span class="cline-any cline-neutral">&nbsp;</span>
203
203
  <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-yes">2x</span>
204
+ <span class="cline-any cline-yes">4x</span>
205
205
  <span class="cline-any cline-neutral">&nbsp;</span>
206
206
  <span class="cline-any cline-neutral">&nbsp;</span>
207
207
  <span class="cline-any cline-neutral">&nbsp;</span>
208
208
  <span class="cline-any cline-neutral">&nbsp;</span>
209
- <span class="cline-any cline-yes">28x</span>
210
- <span class="cline-any cline-yes">28x</span>
209
+ <span class="cline-any cline-yes">30x</span>
210
+ <span class="cline-any cline-yes">30x</span>
211
211
  <span class="cline-any cline-neutral">&nbsp;</span>
212
212
  <span class="cline-any cline-neutral">&nbsp;</span>
213
213
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -237,11 +237,11 @@
237
237
  <span class="cline-any cline-neutral">&nbsp;</span>
238
238
  <span class="cline-any cline-neutral">&nbsp;</span>
239
239
  <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-yes">2x</span>
241
- <span class="cline-any cline-yes">28x</span>
242
- <span class="cline-any cline-yes">28x</span>
240
+ <span class="cline-any cline-yes">4x</span>
241
+ <span class="cline-any cline-yes">30x</span>
242
+ <span class="cline-any cline-yes">30x</span>
243
243
  <span class="cline-any cline-neutral">&nbsp;</span>
244
- <span class="cline-any cline-yes">28x</span>
244
+ <span class="cline-any cline-yes">30x</span>
245
245
  <span class="cline-any cline-neutral">&nbsp;</span>
246
246
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export type LogLevel = "debug" | "info" | "warn" | "error";
247
247
  &nbsp;
@@ -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 2024-01-23T21:38:46.395Z
343
+ at 2024-04-05T16:04:58.225Z
344
344
  </div>
345
345
  <script src="prettify.js"></script>
346
346
  <script>