@featurevisor/sdk 1.2.3 → 1.11.1
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/.eslintcache +1 -1
- package/CHANGELOG.md +19 -0
- package/coverage/clover.xml +325 -322
- package/coverage/coverage-final.json +5 -5
- package/coverage/lcov-report/bucket.ts.html +1 -1
- package/coverage/lcov-report/conditions.ts.html +58 -10
- package/coverage/lcov-report/datafileReader.ts.html +1 -1
- package/coverage/lcov-report/emitter.ts.html +1 -1
- package/coverage/lcov-report/feature.ts.html +35 -5
- package/coverage/lcov-report/index.html +11 -11
- package/coverage/lcov-report/instance.ts.html +33 -6
- package/coverage/lcov-report/logger.ts.html +11 -11
- package/coverage/lcov-report/segments.ts.html +15 -9
- package/coverage/lcov.info +575 -572
- package/dist/index.js +1 -1
- package/dist/index.js.gz +0 -0
- package/dist/index.js.map +1 -1
- package/lib/conditions.d.ts +2 -1
- package/lib/conditions.js +18 -6
- package/lib/conditions.js.map +1 -1
- package/lib/feature.d.ts +4 -3
- package/lib/feature.js +7 -7
- package/lib/feature.js.map +1 -1
- package/lib/instance.js +8 -8
- package/lib/instance.js.map +1 -1
- package/lib/segments.d.ts +3 -2
- package/lib/segments.js +8 -8
- package/lib/segments.js.map +1 -1
- package/package.json +3 -3
- package/src/conditions.spec.ts +358 -192
- package/src/conditions.ts +20 -4
- package/src/feature.ts +13 -3
- package/src/instance.ts +13 -4
- package/src/segments.spec.ts +56 -28
- package/src/segments.ts +9 -7
|
@@ -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-
|
|
112
|
+
at 2024-03-14T17:04:39.207Z
|
|
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">
|
|
26
|
+
<span class="strong">94.28% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
47
|
+
<span class="strong">94.02% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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
|
|
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"> </span>
|
|
192
|
+
<span class="cline-any cline-neutral"> </span>
|
|
175
193
|
<span class="cline-any cline-neutral"> </span>
|
|
176
194
|
<span class="cline-any cline-neutral"> </span>
|
|
177
195
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -249,8 +267,21 @@
|
|
|
249
267
|
<span class="cline-any cline-neutral"> </span>
|
|
250
268
|
<span class="cline-any cline-neutral"> </span>
|
|
251
269
|
<span class="cline-any cline-neutral"> </span>
|
|
270
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
275
|
+
<span class="cline-any cline-no"> </span>
|
|
276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-no"> </span>
|
|
284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
254
285
|
<span class="cline-any cline-neutral"> </span>
|
|
255
286
|
<span class="cline-any cline-neutral"> </span>
|
|
256
287
|
<span class="cline-any cline-yes">428x</span>
|
|
@@ -273,6 +304,7 @@
|
|
|
273
304
|
<span class="cline-any cline-neutral"> </span>
|
|
274
305
|
<span class="cline-any cline-neutral"> </span>
|
|
275
306
|
<span class="cline-any cline-neutral"> </span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
@@ -283,6 +315,8 @@
|
|
|
283
315
|
|
|
284
316
|
import { Context, Condition, PlainCondition } from "@featurevisor/types";
|
|
285
317
|
|
|
318
|
+
import { Logger } from "./logger";
|
|
319
|
+
|
|
286
320
|
export function conditionIsMatched(condition: PlainCondition, context: Context): boolean {
|
|
287
321
|
const { attribute, operator, value } = condition;
|
|
288
322
|
|
|
@@ -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
|
-
|
|
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
|
+
|
|
407
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
408
|
+
}
|
|
362
409
|
}
|
|
363
410
|
|
|
364
411
|
if ("and" in conditions && Array.isArray(conditions.and)) {
|
|
365
|
-
return conditions.and.every((c) => allConditionsAreMatched(c, context));
|
|
412
|
+
return conditions.and.every((c) => allConditionsAreMatched(c, context, logger));
|
|
366
413
|
}
|
|
367
414
|
|
|
368
415
|
if ("or" in conditions && Array.isArray(conditions.or)) {
|
|
369
|
-
return conditions.or.some((c) => allConditionsAreMatched(c, context));
|
|
416
|
+
return conditions.or.some((c) => allConditionsAreMatched(c, context, logger));
|
|
370
417
|
}
|
|
371
418
|
|
|
372
419
|
if ("not" in conditions && 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
|
|
|
384
432
|
if (Array.isArray(conditions)) {
|
|
385
|
-
return conditions.every((c) => allConditionsAreMatched(c, context));
|
|
433
|
+
return conditions.every((c) => allConditionsAreMatched(c, context, logger));
|
|
386
434
|
}
|
|
387
435
|
|
|
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-
|
|
445
|
+
at 2024-03-14T17:04:39.207Z
|
|
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-
|
|
292
|
+
at 2024-03-14T17:04:39.207Z
|
|
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-
|
|
232
|
+
at 2024-03-14T17:04:39.207Z
|
|
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
|
|
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"> </span>
|
|
166
176
|
<span class="cline-any cline-neutral"> </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"> </span>
|
|
180
|
+
<span class="cline-any cline-neutral"> </span>
|
|
170
181
|
<span class="cline-any cline-yes">1x</span>
|
|
171
182
|
<span class="cline-any cline-neutral"> </span>
|
|
172
183
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -195,10 +206,16 @@
|
|
|
195
206
|
<span class="cline-any cline-neutral"> </span>
|
|
196
207
|
<span class="cline-any cline-neutral"> </span>
|
|
197
208
|
<span class="cline-any cline-neutral"> </span>
|
|
209
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
201
213
|
<span class="cline-any cline-neutral"> </span>
|
|
214
|
+
<span class="cline-any cline-neutral"> </span>
|
|
215
|
+
<span class="cline-any cline-neutral"> </span>
|
|
216
|
+
<span class="cline-any cline-neutral"> </span>
|
|
217
|
+
<span class="cline-any cline-neutral"> </span>
|
|
218
|
+
<span class="cline-any cline-neutral"> </span>
|
|
202
219
|
<span class="cline-any cline-yes">29x</span>
|
|
203
220
|
<span class="cline-any cline-neutral"> </span>
|
|
204
221
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -217,6 +234,7 @@
|
|
|
217
234
|
<span class="cline-any cline-neutral"> </span>
|
|
218
235
|
<span class="cline-any cline-neutral"> </span>
|
|
219
236
|
<span class="cline-any cline-neutral"> </span>
|
|
237
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
@@ -225,6 +243,7 @@
|
|
|
225
243
|
<span class="cline-any cline-neutral"> </span>
|
|
226
244
|
<span class="cline-any cline-neutral"> </span>
|
|
227
245
|
<span class="cline-any cline-neutral"> </span>
|
|
246
|
+
<span class="cline-any cline-neutral"> </span>
|
|
228
247
|
<span class="cline-any cline-yes">39x</span>
|
|
229
248
|
<span class="cline-any cline-no"> </span>
|
|
230
249
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -245,6 +264,7 @@
|
|
|
245
264
|
<span class="cline-any cline-neutral"> </span>
|
|
246
265
|
<span class="cline-any cline-neutral"> </span>
|
|
247
266
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-neutral"> </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"> </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
|
|
|
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) => {
|
|
298
320
|
if (
|
|
299
|
-
!allGroupSegmentsAreMatched(
|
|
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) => {
|
|
320
348
|
return allGroupSegmentsAreMatched(
|
|
321
349
|
parseFromStringifiedSegments(t.segments),
|
|
322
350
|
context,
|
|
323
351
|
datafileReader,
|
|
352
|
+
logger,
|
|
324
353
|
);
|
|
325
354
|
});
|
|
326
355
|
|
|
@@ -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
|
|
|
351
381
|
return feature.force.find((f: Force) => {
|
|
352
382
|
if (f.conditions) {
|
|
353
|
-
return allConditionsAreMatched(f.conditions, context);
|
|
383
|
+
return allConditionsAreMatched(f.conditions, context, logger);
|
|
354
384
|
}
|
|
355
385
|
|
|
356
386
|
if (f.segments) {
|
|
357
|
-
return allGroupSegmentsAreMatched(f.segments, context, datafileReader);
|
|
387
|
+
return allGroupSegmentsAreMatched(f.segments, context, datafileReader, logger);
|
|
358
388
|
}
|
|
359
389
|
|
|
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-
|
|
400
|
+
at 2024-03-14T17:04:39.207Z
|
|
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.
|
|
26
|
+
<span class="strong">91.68% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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.
|
|
47
|
+
<span class="strong">91.66% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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="
|
|
99
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
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="
|
|
102
|
-
<td data-value="
|
|
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="
|
|
108
|
-
<td data-value="
|
|
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-
|
|
209
|
+
at 2024-03-14T17:04:39.207Z
|
|
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
|
|
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"> </span>
|
|
1358
1367
|
<span class="cline-any cline-neutral"> </span>
|
|
1359
1368
|
<span class="cline-any cline-neutral"> </span>
|
|
1360
1369
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1937,6 +1946,11 @@
|
|
|
1937
1946
|
<span class="cline-any cline-neutral"> </span>
|
|
1938
1947
|
<span class="cline-any cline-yes">56x</span>
|
|
1939
1948
|
<span class="cline-any cline-neutral"> </span>
|
|
1949
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1950
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1951
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1952
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1953
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1940
1954
|
<span class="cline-any cline-yes">56x</span>
|
|
1941
1955
|
<span class="cline-any cline-neutral"> </span>
|
|
1942
1956
|
<span class="cline-any cline-yes">52x</span>
|
|
@@ -2158,6 +2172,7 @@
|
|
|
2158
2172
|
<span class="cline-any cline-neutral"> </span>
|
|
2159
2173
|
<span class="cline-any cline-neutral"> </span>
|
|
2160
2174
|
<span class="cline-any cline-neutral"> </span>
|
|
2175
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2161
2176
|
<span class="cline-any cline-yes">17x</span>
|
|
2162
2177
|
<span class="cline-any cline-neutral"> </span>
|
|
2163
2178
|
<span class="cline-any cline-yes">17x</span>
|
|
@@ -2422,6 +2437,7 @@
|
|
|
2422
2437
|
<span class="cline-any cline-neutral"> </span>
|
|
2423
2438
|
<span class="cline-any cline-neutral"> </span>
|
|
2424
2439
|
<span class="cline-any cline-neutral"> </span>
|
|
2440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2425
2441
|
<span class="cline-any cline-yes">22x</span>
|
|
2426
2442
|
<span class="cline-any cline-neutral"> </span>
|
|
2427
2443
|
<span class="cline-any cline-yes">22x</span>
|
|
@@ -2468,6 +2484,7 @@
|
|
|
2468
2484
|
<span class="cline-any cline-neutral"> </span>
|
|
2469
2485
|
<span class="cline-any cline-neutral"> </span>
|
|
2470
2486
|
<span class="cline-any cline-neutral"> </span>
|
|
2487
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
@@ -2476,6 +2493,7 @@
|
|
|
2476
2493
|
<span class="cline-any cline-neutral"> </span>
|
|
2477
2494
|
<span class="cline-any cline-neutral"> </span>
|
|
2478
2495
|
<span class="cline-any cline-neutral"> </span>
|
|
2496
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2479
2497
|
<span class="cline-any cline-no"> </span>
|
|
2480
2498
|
<span class="cline-any cline-neutral"> </span>
|
|
2481
2499
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -3168,7 +3186,7 @@ export class FeaturevisorInstance {
|
|
|
3168
3186
|
const finalContext = this.interceptContext ? this.interceptContext(context) : context;
|
|
3169
3187
|
|
|
3170
3188
|
// forced
|
|
3171
|
-
const force = findForceFromFeature(feature, context, this.datafileReader);
|
|
3189
|
+
const force = findForceFromFeature(feature, context, this.datafileReader, this.logger);
|
|
3172
3190
|
|
|
3173
3191
|
if (force && 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
|
|
|
3229
|
-
const matchedTraffic = getMatchedTraffic(
|
|
3247
|
+
const matchedTraffic = getMatchedTraffic(
|
|
3248
|
+
feature.traffic,
|
|
3249
|
+
finalContext,
|
|
3250
|
+
this.datafileReader,
|
|
3251
|
+
this.logger,
|
|
3252
|
+
);
|
|
3230
3253
|
|
|
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
|
|
|
3423
3446
|
// forced
|
|
3424
|
-
const force = findForceFromFeature(feature, context, this.datafileReader);
|
|
3447
|
+
const force = findForceFromFeature(feature, context, this.datafileReader, this.logger);
|
|
3425
3448
|
|
|
3426
3449
|
if (force && force.variation) {
|
|
3427
3450
|
const variation = feature.variations.find((v) => 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
|
|
|
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
|
|
|
3689
3713
|
// forced
|
|
3690
|
-
const force = findForceFromFeature(feature, context, this.datafileReader);
|
|
3714
|
+
const force = findForceFromFeature(feature, context, this.datafileReader, this.logger);
|
|
3691
3715
|
|
|
3692
3716
|
if (force && force.variables && 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
|
|
|
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
|
|
|
@@ -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
|
|
|
@@ -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-
|
|
3973
|
+
at 2024-03-14T17:04:39.207Z
|
|
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"> </span>
|
|
169
169
|
<span class="cline-any cline-neutral"> </span>
|
|
170
170
|
<span class="cline-any cline-neutral"> </span>
|
|
171
|
-
<span class="cline-any cline-yes">
|
|
171
|
+
<span class="cline-any cline-yes">4x</span>
|
|
172
172
|
<span class="cline-any cline-neutral"> </span>
|
|
173
|
-
<span class="cline-any cline-yes">
|
|
173
|
+
<span class="cline-any cline-yes">4x</span>
|
|
174
174
|
<span class="cline-any cline-neutral"> </span>
|
|
175
175
|
<span class="cline-any cline-neutral"> </span>
|
|
176
176
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
<span class="cline-any cline-neutral"> </span>
|
|
181
181
|
<span class="cline-any cline-neutral"> </span>
|
|
182
182
|
<span class="cline-any cline-neutral"> </span>
|
|
183
|
-
<span class="cline-any cline-yes">
|
|
183
|
+
<span class="cline-any cline-yes">4x</span>
|
|
184
184
|
<span class="cline-any cline-neutral"> </span>
|
|
185
185
|
<span class="cline-any cline-neutral"> </span>
|
|
186
186
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -201,13 +201,13 @@
|
|
|
201
201
|
<span class="cline-any cline-neutral"> </span>
|
|
202
202
|
<span class="cline-any cline-neutral"> </span>
|
|
203
203
|
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-yes">
|
|
204
|
+
<span class="cline-any cline-yes">4x</span>
|
|
205
205
|
<span class="cline-any cline-neutral"> </span>
|
|
206
206
|
<span class="cline-any cline-neutral"> </span>
|
|
207
207
|
<span class="cline-any cline-neutral"> </span>
|
|
208
208
|
<span class="cline-any cline-neutral"> </span>
|
|
209
|
-
<span class="cline-any cline-yes">
|
|
210
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
212
212
|
<span class="cline-any cline-neutral"> </span>
|
|
213
213
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -237,11 +237,11 @@
|
|
|
237
237
|
<span class="cline-any cline-neutral"> </span>
|
|
238
238
|
<span class="cline-any cline-neutral"> </span>
|
|
239
239
|
<span class="cline-any cline-neutral"> </span>
|
|
240
|
-
<span class="cline-any cline-yes">
|
|
241
|
-
<span class="cline-any cline-yes">
|
|
242
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
244
|
-
<span class="cline-any cline-yes">
|
|
244
|
+
<span class="cline-any cline-yes">30x</span>
|
|
245
245
|
<span class="cline-any cline-neutral"> </span>
|
|
246
246
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
247
247
|
|
|
@@ -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-
|
|
343
|
+
at 2024-03-14T17:04:39.207Z
|
|
344
344
|
</div>
|
|
345
345
|
<script src="prettify.js"></script>
|
|
346
346
|
<script>
|