@featurevisor/core 2.18.0 → 2.19.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.
- package/CHANGELOG.md +11 -0
- package/coverage/clover.xml +1581 -1119
- package/coverage/coverage-final.json +29 -22
- package/coverage/lcov-report/builder/allocator.ts.html +26 -26
- package/coverage/lcov-report/builder/buildDatafile.ts.html +2017 -0
- package/coverage/lcov-report/builder/buildScopedConditions.ts.html +35 -35
- package/coverage/lcov-report/builder/buildScopedDatafile.ts.html +213 -45
- package/coverage/lcov-report/builder/buildScopedSegments.ts.html +28 -28
- package/coverage/lcov-report/builder/convertToV1.ts.html +583 -0
- package/coverage/lcov-report/builder/getFeatureRanges.ts.html +268 -0
- package/coverage/lcov-report/builder/hashes.ts.html +412 -0
- package/coverage/lcov-report/builder/index.html +90 -30
- package/coverage/lcov-report/builder/mutateVariables.ts.html +66 -45
- package/coverage/lcov-report/builder/mutator.ts.html +95 -95
- package/coverage/lcov-report/builder/revision.ts.html +1 -1
- package/coverage/lcov-report/builder/traffic.ts.html +60 -57
- package/coverage/lcov-report/config/index.html +1 -1
- package/coverage/lcov-report/config/index.ts.html +2 -2
- package/coverage/lcov-report/config/projectConfig.ts.html +28 -28
- package/coverage/lcov-report/datasource/adapter.ts.html +2 -2
- package/coverage/lcov-report/datasource/datasource.ts.html +4 -4
- package/coverage/lcov-report/datasource/filesystemAdapter.ts.html +34 -34
- package/coverage/lcov-report/datasource/index.html +1 -1
- package/coverage/lcov-report/datasource/index.ts.html +1 -1
- package/coverage/lcov-report/index.html +39 -39
- package/coverage/lcov-report/linter/attributeSchema.ts.html +1 -1
- package/coverage/lcov-report/linter/checkCircularDependency.ts.html +1 -1
- package/coverage/lcov-report/linter/checkPercentageExceedingSlot.ts.html +1 -1
- package/coverage/lcov-report/linter/conditionSchema.ts.html +17 -17
- package/coverage/lcov-report/linter/featureSchema.ts.html +686 -401
- package/coverage/lcov-report/linter/groupSchema.ts.html +1 -1
- package/coverage/lcov-report/linter/index.html +27 -27
- package/coverage/lcov-report/linter/lintProject.ts.html +25 -25
- package/coverage/lcov-report/linter/mutationNotation.ts.html +191 -122
- package/coverage/lcov-report/linter/printError.ts.html +1 -1
- package/coverage/lcov-report/linter/schema.ts.html +72 -72
- package/coverage/lcov-report/linter/segmentSchema.ts.html +1 -1
- package/coverage/lcov-report/linter/testSchema.ts.html +5 -5
- package/coverage/lcov-report/list/index.html +1 -1
- package/coverage/lcov-report/list/matrix.ts.html +1 -1
- package/coverage/lcov-report/parsers/index.html +1 -1
- package/coverage/lcov-report/parsers/index.ts.html +4 -4
- package/coverage/lcov-report/parsers/json.ts.html +2 -2
- package/coverage/lcov-report/parsers/yml.ts.html +6 -6
- package/coverage/lcov-report/tester/cliFormat.ts.html +1 -1
- package/coverage/lcov-report/tester/helpers.ts.html +1 -1
- package/coverage/lcov-report/tester/index.html +1 -1
- package/coverage/lcov-report/utils/extractKeys.ts.html +493 -0
- package/coverage/lcov-report/utils/git.ts.html +3 -3
- package/coverage/lcov-report/utils/index.html +54 -9
- package/coverage/lcov-report/utils/index.ts.html +94 -0
- package/coverage/lcov-report/utils/pretty.ts.html +121 -0
- package/coverage/lcov.info +2955 -2095
- package/lib/builder/buildDatafile.js +50 -3
- package/lib/builder/buildDatafile.js.map +1 -1
- package/lib/builder/buildDatafile.spec.d.ts +1 -0
- package/lib/builder/buildDatafile.spec.js +233 -0
- package/lib/builder/buildDatafile.spec.js.map +1 -0
- package/lib/builder/buildScopedDatafile.js +37 -1
- package/lib/builder/buildScopedDatafile.js.map +1 -1
- package/lib/builder/buildScopedDatafile.spec.js +289 -0
- package/lib/builder/buildScopedDatafile.spec.js.map +1 -1
- package/lib/builder/mutateVariables.d.ts +1 -1
- package/lib/builder/mutateVariables.js +4 -1
- package/lib/builder/mutateVariables.js.map +1 -1
- package/lib/builder/mutateVariables.spec.js +29 -0
- package/lib/builder/mutateVariables.spec.js.map +1 -1
- package/lib/builder/traffic.js +1 -0
- package/lib/builder/traffic.js.map +1 -1
- package/lib/builder/traffic.spec.js +26 -0
- package/lib/builder/traffic.spec.js.map +1 -1
- package/lib/linter/featureSchema.d.ts +228 -22
- package/lib/linter/featureSchema.js +137 -76
- package/lib/linter/featureSchema.js.map +1 -1
- package/lib/linter/featureSchema.spec.js +175 -0
- package/lib/linter/featureSchema.spec.js.map +1 -1
- package/lib/linter/mutationNotation.js +35 -10
- package/lib/linter/mutationNotation.js.map +1 -1
- package/lib/linter/mutationNotation.spec.js +31 -0
- package/lib/linter/mutationNotation.spec.js.map +1 -1
- package/package.json +5 -5
- package/src/builder/buildDatafile.spec.ts +267 -0
- package/src/builder/buildDatafile.ts +85 -4
- package/src/builder/buildScopedDatafile.spec.ts +330 -0
- package/src/builder/buildScopedDatafile.ts +57 -1
- package/src/builder/mutateVariables.spec.ts +45 -0
- package/src/builder/mutateVariables.ts +7 -0
- package/src/builder/traffic.spec.ts +33 -0
- package/src/builder/traffic.ts +1 -0
- package/src/linter/featureSchema.spec.ts +197 -0
- package/src/linter/featureSchema.ts +204 -109
- package/src/linter/mutationNotation.spec.ts +39 -0
- package/src/linter/mutationNotation.ts +30 -7
|
@@ -211,42 +211,42 @@
|
|
|
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>
|
|
214
|
-
<span class="cline-any cline-yes">
|
|
215
|
-
<span class="cline-any cline-yes">
|
|
214
|
+
<span class="cline-any cline-yes">134x</span>
|
|
215
|
+
<span class="cline-any cline-yes">134x</span>
|
|
216
216
|
<span class="cline-any cline-neutral"> </span>
|
|
217
|
-
<span class="cline-any cline-yes">
|
|
217
|
+
<span class="cline-any cline-yes">134x</span>
|
|
218
218
|
<span class="cline-any cline-neutral"> </span>
|
|
219
219
|
<span class="cline-any cline-neutral"> </span>
|
|
220
220
|
<span class="cline-any cline-yes">2x</span>
|
|
221
221
|
<span class="cline-any cline-neutral"> </span>
|
|
222
222
|
<span class="cline-any cline-neutral"> </span>
|
|
223
|
-
<span class="cline-any cline-yes">
|
|
224
|
-
<span class="cline-any cline-yes">
|
|
223
|
+
<span class="cline-any cline-yes">480x</span>
|
|
224
|
+
<span class="cline-any cline-yes">213x</span>
|
|
225
225
|
<span class="cline-any cline-neutral"> </span>
|
|
226
226
|
<span class="cline-any cline-neutral"> </span>
|
|
227
|
-
<span class="cline-any cline-yes">
|
|
227
|
+
<span class="cline-any cline-yes">267x</span>
|
|
228
228
|
<span class="cline-any cline-neutral"> </span>
|
|
229
|
-
<span class="cline-any cline-yes">
|
|
229
|
+
<span class="cline-any cline-yes">121x</span>
|
|
230
230
|
<span class="cline-any cline-neutral"> </span>
|
|
231
231
|
<span class="cline-any cline-neutral"> </span>
|
|
232
|
-
<span class="cline-any cline-yes">
|
|
232
|
+
<span class="cline-any cline-yes">121x</span>
|
|
233
233
|
<span class="cline-any cline-neutral"> </span>
|
|
234
234
|
<span class="cline-any cline-neutral"> </span>
|
|
235
|
-
<span class="cline-any cline-yes">
|
|
236
|
-
<span class="cline-any cline-yes">
|
|
235
|
+
<span class="cline-any cline-yes">102x</span>
|
|
236
|
+
<span class="cline-any cline-yes">67x</span>
|
|
237
237
|
<span class="cline-any cline-neutral"> </span>
|
|
238
238
|
<span class="cline-any cline-neutral"> </span>
|
|
239
|
-
<span class="cline-any cline-yes">
|
|
239
|
+
<span class="cline-any cline-yes">35x</span>
|
|
240
240
|
<span class="cline-any cline-neutral"> </span>
|
|
241
241
|
<span class="cline-any cline-neutral"> </span>
|
|
242
|
-
<span class="cline-any cline-yes">
|
|
243
|
-
<span class="cline-any cline-yes">
|
|
244
|
-
<span class="cline-any cline-yes">
|
|
245
|
-
<span class="cline-any cline-yes">
|
|
242
|
+
<span class="cline-any cline-yes">165x</span>
|
|
243
|
+
<span class="cline-any cline-yes">165x</span>
|
|
244
|
+
<span class="cline-any cline-yes">99x</span>
|
|
245
|
+
<span class="cline-any cline-yes">99x</span>
|
|
246
246
|
<span class="cline-any cline-neutral"> </span>
|
|
247
247
|
<span class="cline-any cline-neutral"> </span>
|
|
248
|
-
<span class="cline-any cline-yes">
|
|
249
|
-
<span class="cline-any cline-yes">
|
|
248
|
+
<span class="cline-any cline-yes">39x</span>
|
|
249
|
+
<span class="cline-any cline-yes">19x</span>
|
|
250
250
|
<span class="cline-any cline-neutral"> </span>
|
|
251
251
|
<span class="cline-any cline-neutral"> </span>
|
|
252
252
|
<span class="cline-any cline-yes">20x</span>
|
|
@@ -254,7 +254,7 @@
|
|
|
254
254
|
<span class="cline-any cline-neutral"> </span>
|
|
255
255
|
<span class="cline-any cline-neutral"> </span>
|
|
256
256
|
<span class="cline-any cline-neutral"> </span>
|
|
257
|
-
<span class="cline-any cline-yes">
|
|
257
|
+
<span class="cline-any cline-yes">126x</span>
|
|
258
258
|
<span class="cline-any cline-yes">69x</span>
|
|
259
259
|
<span class="cline-any cline-yes">69x</span>
|
|
260
260
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -268,7 +268,7 @@
|
|
|
268
268
|
<span class="cline-any cline-neutral"> </span>
|
|
269
269
|
<span class="cline-any cline-neutral"> </span>
|
|
270
270
|
<span class="cline-any cline-neutral"> </span>
|
|
271
|
-
<span class="cline-any cline-yes">
|
|
271
|
+
<span class="cline-any cline-yes">98x</span>
|
|
272
272
|
<span class="cline-any cline-yes">30x</span>
|
|
273
273
|
<span class="cline-any cline-yes">30x</span>
|
|
274
274
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
<span class="cline-any cline-neutral"> </span>
|
|
284
284
|
<span class="cline-any cline-neutral"> </span>
|
|
285
285
|
<span class="cline-any cline-neutral"> </span>
|
|
286
|
-
<span class="cline-any cline-yes">
|
|
286
|
+
<span class="cline-any cline-yes">85x</span>
|
|
287
287
|
<span class="cline-any cline-neutral"> </span>
|
|
288
288
|
<span class="cline-any cline-neutral"> </span>
|
|
289
289
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -291,45 +291,45 @@
|
|
|
291
291
|
<span class="cline-any cline-neutral"> </span>
|
|
292
292
|
<span class="cline-any cline-neutral"> </span>
|
|
293
293
|
<span class="cline-any cline-neutral"> </span>
|
|
294
|
-
<span class="cline-any cline-yes">
|
|
294
|
+
<span class="cline-any cline-yes">422x</span>
|
|
295
295
|
<span class="cline-any cline-yes">7x</span>
|
|
296
296
|
<span class="cline-any cline-neutral"> </span>
|
|
297
297
|
<span class="cline-any cline-neutral"> </span>
|
|
298
|
-
<span class="cline-any cline-yes">
|
|
299
|
-
<span class="cline-any cline-yes">
|
|
298
|
+
<span class="cline-any cline-yes">415x</span>
|
|
299
|
+
<span class="cline-any cline-yes">116x</span>
|
|
300
300
|
<span class="cline-any cline-neutral"> </span>
|
|
301
301
|
<span class="cline-any cline-neutral"> </span>
|
|
302
|
-
<span class="cline-any cline-yes">
|
|
302
|
+
<span class="cline-any cline-yes">311x</span>
|
|
303
303
|
<span class="cline-any cline-neutral"> </span>
|
|
304
|
-
<span class="cline-any cline-yes">
|
|
305
|
-
<span class="cline-any cline-yes">
|
|
304
|
+
<span class="cline-any cline-yes">311x</span>
|
|
305
|
+
<span class="cline-any cline-yes">233x</span>
|
|
306
306
|
<span class="cline-any cline-neutral"> </span>
|
|
307
|
-
<span class="cline-any cline-yes">
|
|
308
|
-
<span class="cline-any cline-yes">
|
|
307
|
+
<span class="cline-any cline-yes">233x</span>
|
|
308
|
+
<span class="cline-any cline-yes">154x</span>
|
|
309
309
|
<span class="cline-any cline-neutral"> </span>
|
|
310
310
|
<span class="cline-any cline-neutral"> </span>
|
|
311
311
|
<span class="cline-any cline-neutral"> </span>
|
|
312
312
|
<span class="cline-any cline-neutral"> </span>
|
|
313
|
-
<span class="cline-any cline-yes">
|
|
314
|
-
<span class="cline-any cline-yes">
|
|
315
|
-
<span class="cline-any cline-yes">
|
|
313
|
+
<span class="cline-any cline-yes">157x</span>
|
|
314
|
+
<span class="cline-any cline-yes">37x</span>
|
|
315
|
+
<span class="cline-any cline-yes">70x</span>
|
|
316
316
|
<span class="cline-any cline-neutral"> </span>
|
|
317
317
|
<span class="cline-any cline-neutral"> </span>
|
|
318
318
|
<span class="cline-any cline-neutral"> </span>
|
|
319
|
-
<span class="cline-any cline-yes">
|
|
319
|
+
<span class="cline-any cline-yes">120x</span>
|
|
320
320
|
<span class="cline-any cline-yes">29x</span>
|
|
321
321
|
<span class="cline-any cline-yes">54x</span>
|
|
322
322
|
<span class="cline-any cline-neutral"> </span>
|
|
323
323
|
<span class="cline-any cline-neutral"> </span>
|
|
324
324
|
<span class="cline-any cline-neutral"> </span>
|
|
325
|
-
<span class="cline-any cline-yes">
|
|
325
|
+
<span class="cline-any cline-yes">91x</span>
|
|
326
326
|
<span class="cline-any cline-yes">12x</span>
|
|
327
327
|
<span class="cline-any cline-yes">16x</span>
|
|
328
328
|
<span class="cline-any cline-neutral"> </span>
|
|
329
329
|
<span class="cline-any cline-neutral"> </span>
|
|
330
330
|
<span class="cline-any cline-neutral"> </span>
|
|
331
331
|
<span class="cline-any cline-neutral"> </span>
|
|
332
|
-
<span class="cline-any cline-yes">
|
|
332
|
+
<span class="cline-any cline-yes">79x</span>
|
|
333
333
|
<span class="cline-any cline-neutral"> </span>
|
|
334
334
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type {
|
|
335
335
|
Condition,
|
|
@@ -472,7 +472,7 @@ export function buildScopedCondition(
|
|
|
472
472
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
473
473
|
Code coverage generated by
|
|
474
474
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
475
|
-
at 2026-
|
|
475
|
+
at 2026-03-01T20:34:15.761Z
|
|
476
476
|
</div>
|
|
477
477
|
<script src="../prettify.js"></script>
|
|
478
478
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">98.85% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>86/87</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>25/25</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>2/2</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">98.79% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>82/83</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -236,49 +236,122 @@
|
|
|
236
236
|
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
237
|
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
238
|
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
240
296
|
<span class="cline-any cline-yes">1x</span>
|
|
241
297
|
<span class="cline-any cline-neutral"> </span>
|
|
242
298
|
<span class="cline-any cline-yes">1x</span>
|
|
243
299
|
<span class="cline-any cline-yes">1x</span>
|
|
244
300
|
<span class="cline-any cline-neutral"> </span>
|
|
301
|
+
<span class="cline-any cline-neutral"> </span>
|
|
302
|
+
<span class="cline-any cline-yes">53x</span>
|
|
303
|
+
<span class="cline-any cline-yes">26x</span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-yes">27x</span>
|
|
307
|
+
<span class="cline-any cline-yes">27x</span>
|
|
308
|
+
<span class="cline-any cline-yes">25x</span>
|
|
309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
311
|
+
<span class="cline-any cline-yes">2x</span>
|
|
312
|
+
<span class="cline-any cline-yes">2x</span>
|
|
313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-no"> </span>
|
|
315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
317
|
+
<span class="cline-any cline-neutral"> </span>
|
|
245
318
|
<span class="cline-any cline-yes">1x</span>
|
|
246
319
|
<span class="cline-any cline-neutral"> </span>
|
|
247
320
|
<span class="cline-any cline-neutral"> </span>
|
|
248
321
|
<span class="cline-any cline-neutral"> </span>
|
|
249
|
-
<span class="cline-any cline-yes">
|
|
322
|
+
<span class="cline-any cline-yes">76x</span>
|
|
250
323
|
<span class="cline-any cline-neutral"> </span>
|
|
251
324
|
<span class="cline-any cline-neutral"> </span>
|
|
252
325
|
<span class="cline-any cline-neutral"> </span>
|
|
253
326
|
<span class="cline-any cline-neutral"> </span>
|
|
254
|
-
<span class="cline-any cline-yes">
|
|
327
|
+
<span class="cline-any cline-yes">76x</span>
|
|
255
328
|
<span class="cline-any cline-neutral"> </span>
|
|
256
329
|
<span class="cline-any cline-neutral"> </span>
|
|
257
330
|
<span class="cline-any cline-neutral"> </span>
|
|
258
|
-
<span class="cline-any cline-yes">
|
|
331
|
+
<span class="cline-any cline-yes">76x</span>
|
|
259
332
|
<span class="cline-any cline-neutral"> </span>
|
|
260
333
|
<span class="cline-any cline-neutral"> </span>
|
|
261
|
-
<span class="cline-any cline-yes">
|
|
262
|
-
<span class="cline-any cline-yes">
|
|
263
|
-
<span class="cline-any cline-yes">
|
|
264
|
-
<span class="cline-any cline-yes">
|
|
334
|
+
<span class="cline-any cline-yes">76x</span>
|
|
335
|
+
<span class="cline-any cline-yes">86x</span>
|
|
336
|
+
<span class="cline-any cline-yes">86x</span>
|
|
337
|
+
<span class="cline-any cline-yes">86x</span>
|
|
265
338
|
<span class="cline-any cline-neutral"> </span>
|
|
266
339
|
<span class="cline-any cline-neutral"> </span>
|
|
267
340
|
<span class="cline-any cline-neutral"> </span>
|
|
268
341
|
<span class="cline-any cline-neutral"> </span>
|
|
269
|
-
<span class="cline-any cline-yes">
|
|
342
|
+
<span class="cline-any cline-yes">86x</span>
|
|
270
343
|
<span class="cline-any cline-neutral"> </span>
|
|
271
|
-
<span class="cline-any cline-yes">
|
|
272
|
-
<span class="cline-any cline-yes">
|
|
344
|
+
<span class="cline-any cline-yes">86x</span>
|
|
345
|
+
<span class="cline-any cline-yes">60x</span>
|
|
273
346
|
<span class="cline-any cline-neutral"> </span>
|
|
274
347
|
<span class="cline-any cline-neutral"> </span>
|
|
275
348
|
<span class="cline-any cline-neutral"> </span>
|
|
276
349
|
<span class="cline-any cline-neutral"> </span>
|
|
277
|
-
<span class="cline-any cline-yes">
|
|
278
|
-
<span class="cline-any cline-yes">
|
|
350
|
+
<span class="cline-any cline-yes">76x</span>
|
|
351
|
+
<span class="cline-any cline-yes">64x</span>
|
|
279
352
|
<span class="cline-any cline-neutral"> </span>
|
|
280
353
|
<span class="cline-any cline-neutral"> </span>
|
|
281
|
-
<span class="cline-any cline-yes">
|
|
354
|
+
<span class="cline-any cline-yes">64x</span>
|
|
282
355
|
<span class="cline-any cline-yes">19x</span>
|
|
283
356
|
<span class="cline-any cline-yes">19x</span>
|
|
284
357
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -304,28 +377,67 @@
|
|
|
304
377
|
<span class="cline-any cline-neutral"> </span>
|
|
305
378
|
<span class="cline-any cline-neutral"> </span>
|
|
306
379
|
<span class="cline-any cline-neutral"> </span>
|
|
307
|
-
<span class="cline-any cline-yes">
|
|
308
|
-
<span class="cline-any cline-yes">
|
|
309
|
-
<span class="cline-any cline-yes">
|
|
310
|
-
<span class="cline-any cline-yes">
|
|
380
|
+
<span class="cline-any cline-yes">64x</span>
|
|
381
|
+
<span class="cline-any cline-yes">64x</span>
|
|
382
|
+
<span class="cline-any cline-yes">64x</span>
|
|
383
|
+
<span class="cline-any cline-yes">42x</span>
|
|
384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
386
|
+
<span class="cline-any cline-yes">42x</span>
|
|
387
|
+
<span class="cline-any cline-neutral"> </span>
|
|
311
388
|
<span class="cline-any cline-neutral"> </span>
|
|
389
|
+
<span class="cline-any cline-yes">42x</span>
|
|
390
|
+
<span class="cline-any cline-yes">42x</span>
|
|
391
|
+
<span class="cline-any cline-yes">42x</span>
|
|
312
392
|
<span class="cline-any cline-neutral"> </span>
|
|
313
|
-
<span class="cline-any cline-yes">33x</span>
|
|
314
393
|
<span class="cline-any cline-neutral"> </span>
|
|
315
394
|
<span class="cline-any cline-neutral"> </span>
|
|
316
|
-
<span class="cline-any cline-yes">33x</span>
|
|
317
|
-
<span class="cline-any cline-yes">33x</span>
|
|
318
395
|
<span class="cline-any cline-neutral"> </span>
|
|
319
396
|
<span class="cline-any cline-neutral"> </span>
|
|
320
397
|
<span class="cline-any cline-neutral"> </span>
|
|
321
398
|
<span class="cline-any cline-neutral"> </span>
|
|
322
399
|
<span class="cline-any cline-neutral"> </span>
|
|
400
|
+
<span class="cline-any cline-yes">42x</span>
|
|
401
|
+
<span class="cline-any cline-yes">9x</span>
|
|
402
|
+
<span class="cline-any cline-yes">9x</span>
|
|
323
403
|
<span class="cline-any cline-neutral"> </span>
|
|
404
|
+
<span class="cline-any cline-yes">9x</span>
|
|
405
|
+
<span class="cline-any cline-yes">9x</span>
|
|
324
406
|
<span class="cline-any cline-neutral"> </span>
|
|
325
407
|
<span class="cline-any cline-neutral"> </span>
|
|
326
408
|
<span class="cline-any cline-neutral"> </span>
|
|
409
|
+
<span class="cline-any cline-yes">11x</span>
|
|
410
|
+
<span class="cline-any cline-neutral"> </span>
|
|
411
|
+
<span class="cline-any cline-neutral"> </span>
|
|
412
|
+
<span class="cline-any cline-yes">11x</span>
|
|
413
|
+
<span class="cline-any cline-yes">7x</span>
|
|
414
|
+
<span class="cline-any cline-yes">7x</span>
|
|
415
|
+
<span class="cline-any cline-neutral"> </span>
|
|
327
416
|
<span class="cline-any cline-neutral"> </span>
|
|
328
|
-
<span class="cline-any cline-
|
|
417
|
+
<span class="cline-any cline-neutral"> </span>
|
|
418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
421
|
+
<span class="cline-any cline-neutral"> </span>
|
|
422
|
+
<span class="cline-any cline-neutral"> </span>
|
|
423
|
+
<span class="cline-any cline-yes">11x</span>
|
|
424
|
+
<span class="cline-any cline-yes">4x</span>
|
|
425
|
+
<span class="cline-any cline-yes">4x</span>
|
|
426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
429
|
+
<span class="cline-any cline-neutral"> </span>
|
|
430
|
+
<span class="cline-any cline-neutral"> </span>
|
|
431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
432
|
+
<span class="cline-any cline-yes">11x</span>
|
|
433
|
+
<span class="cline-any cline-neutral"> </span>
|
|
434
|
+
<span class="cline-any cline-neutral"> </span>
|
|
435
|
+
<span class="cline-any cline-neutral"> </span>
|
|
436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
438
|
+
<span class="cline-any cline-neutral"> </span>
|
|
439
|
+
<span class="cline-any cline-neutral"> </span>
|
|
440
|
+
<span class="cline-any cline-yes">64x</span>
|
|
329
441
|
<span class="cline-any cline-yes">21x</span>
|
|
330
442
|
<span class="cline-any cline-neutral"> </span>
|
|
331
443
|
<span class="cline-any cline-yes">21x</span>
|
|
@@ -372,42 +484,42 @@
|
|
|
372
484
|
<span class="cline-any cline-neutral"> </span>
|
|
373
485
|
<span class="cline-any cline-neutral"> </span>
|
|
374
486
|
<span class="cline-any cline-neutral"> </span>
|
|
375
|
-
<span class="cline-any cline-yes">
|
|
376
|
-
<span class="cline-any cline-yes">
|
|
487
|
+
<span class="cline-any cline-yes">64x</span>
|
|
488
|
+
<span class="cline-any cline-yes">64x</span>
|
|
377
489
|
<span class="cline-any cline-neutral"> </span>
|
|
378
490
|
<span class="cline-any cline-neutral"> </span>
|
|
379
491
|
<span class="cline-any cline-neutral"> </span>
|
|
380
|
-
<span class="cline-any cline-yes">
|
|
381
|
-
<span class="cline-any cline-yes">
|
|
382
|
-
<span class="cline-any cline-yes">
|
|
492
|
+
<span class="cline-any cline-yes">64x</span>
|
|
493
|
+
<span class="cline-any cline-yes">42x</span>
|
|
494
|
+
<span class="cline-any cline-yes">42x</span>
|
|
383
495
|
<span class="cline-any cline-neutral"> </span>
|
|
384
|
-
<span class="cline-any cline-yes">
|
|
496
|
+
<span class="cline-any cline-yes">42x</span>
|
|
385
497
|
<span class="cline-any cline-neutral"> </span>
|
|
386
498
|
<span class="cline-any cline-neutral"> </span>
|
|
387
499
|
<span class="cline-any cline-neutral"> </span>
|
|
388
500
|
<span class="cline-any cline-neutral"> </span>
|
|
389
|
-
<span class="cline-any cline-yes">
|
|
501
|
+
<span class="cline-any cline-yes">7x</span>
|
|
390
502
|
<span class="cline-any cline-neutral"> </span>
|
|
391
503
|
<span class="cline-any cline-neutral"> </span>
|
|
392
|
-
<span class="cline-any cline-yes">
|
|
393
|
-
<span class="cline-any cline-yes">
|
|
504
|
+
<span class="cline-any cline-yes">42x</span>
|
|
505
|
+
<span class="cline-any cline-yes">35x</span>
|
|
394
506
|
<span class="cline-any cline-neutral"> </span>
|
|
395
|
-
<span class="cline-any cline-yes">
|
|
507
|
+
<span class="cline-any cline-yes">35x</span>
|
|
396
508
|
<span class="cline-any cline-neutral"> </span>
|
|
397
509
|
<span class="cline-any cline-neutral"> </span>
|
|
398
510
|
<span class="cline-any cline-neutral"> </span>
|
|
399
|
-
<span class="cline-any cline-yes">
|
|
511
|
+
<span class="cline-any cline-yes">64x</span>
|
|
400
512
|
<span class="cline-any cline-neutral"> </span>
|
|
401
513
|
<span class="cline-any cline-neutral"> </span>
|
|
402
|
-
<span class="cline-any cline-yes">
|
|
514
|
+
<span class="cline-any cline-yes">64x</span>
|
|
403
515
|
<span class="cline-any cline-neutral"> </span>
|
|
404
516
|
<span class="cline-any cline-neutral"> </span>
|
|
405
517
|
<span class="cline-any cline-neutral"> </span>
|
|
406
|
-
<span class="cline-any cline-yes">
|
|
407
|
-
<span class="cline-any cline-yes">
|
|
518
|
+
<span class="cline-any cline-yes">76x</span>
|
|
519
|
+
<span class="cline-any cline-yes">60x</span>
|
|
408
520
|
<span class="cline-any cline-neutral"> </span>
|
|
409
521
|
<span class="cline-any cline-neutral"> </span>
|
|
410
|
-
<span class="cline-any cline-yes">
|
|
522
|
+
<span class="cline-any cline-yes">76x</span>
|
|
411
523
|
<span class="cline-any cline-neutral"> </span>
|
|
412
524
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { DatafileContent, Context, Traffic } from "@featurevisor/types";
|
|
413
525
|
import { DatafileReader, createLogger } from "@featurevisor/sdk";
|
|
@@ -415,6 +527,23 @@ import { DatafileReader, createLogger } from "@featurevisor/sdk";
|
|
|
415
527
|
import { buildScopedConditions } from "./buildScopedConditions";
|
|
416
528
|
import { buildScopedSegments } from "./buildScopedSegments";
|
|
417
529
|
|
|
530
|
+
function parseIfStringified<T>(value: T): T {
|
|
531
|
+
if (typeof value !== "string" || value === "*") {
|
|
532
|
+
return value;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
const firstChar = value[0];
|
|
536
|
+
if (firstChar !== "{" && firstChar !== "[") {
|
|
537
|
+
return value;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
try {
|
|
541
|
+
return JSON.parse(value) as T;
|
|
542
|
+
} catch {
|
|
543
|
+
<span class="cstat-no" title="statement not covered" > return value;</span>
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
|
|
418
547
|
export function buildScopedDatafile(
|
|
419
548
|
originalDatafileContent: DatafileContent,
|
|
420
549
|
context: Context,
|
|
@@ -487,13 +616,52 @@ export function buildScopedDatafile(
|
|
|
487
616
|
|
|
488
617
|
// segments
|
|
489
618
|
if (traffic.segments) {
|
|
619
|
+
const segments = parseIfStringified(traffic.segments);
|
|
490
620
|
feature.traffic[trafficI].segments = buildScopedSegments(
|
|
491
621
|
originalDatafileReader,
|
|
492
|
-
|
|
622
|
+
segments,
|
|
493
623
|
context,
|
|
494
624
|
removeSegments,
|
|
495
625
|
);
|
|
496
626
|
}
|
|
627
|
+
|
|
628
|
+
// variable overrides
|
|
629
|
+
if (traffic.variableOverrides) {
|
|
630
|
+
for (const variableKey in traffic.variableOverrides) {
|
|
631
|
+
const variableOverrides = traffic.variableOverrides[variableKey];
|
|
632
|
+
|
|
633
|
+
for (
|
|
634
|
+
let variableOverrideI = 0;
|
|
635
|
+
variableOverrideI < variableOverrides.length;
|
|
636
|
+
variableOverrideI++
|
|
637
|
+
) {
|
|
638
|
+
const variableOverride = variableOverrides[variableOverrideI];
|
|
639
|
+
|
|
640
|
+
// segments
|
|
641
|
+
if (variableOverride.segments) {
|
|
642
|
+
const segments = parseIfStringified(variableOverride.segments);
|
|
643
|
+
variableOverride.segments = buildScopedSegments(
|
|
644
|
+
originalDatafileReader,
|
|
645
|
+
segments,
|
|
646
|
+
context,
|
|
647
|
+
removeSegments,
|
|
648
|
+
);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
// conditions
|
|
652
|
+
if (variableOverride.conditions) {
|
|
653
|
+
const conditions = parseIfStringified(variableOverride.conditions);
|
|
654
|
+
variableOverride.conditions = buildScopedConditions(
|
|
655
|
+
originalDatafileReader,
|
|
656
|
+
conditions,
|
|
657
|
+
context,
|
|
658
|
+
);
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
variableOverrides[variableOverrideI] = variableOverride;
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
}
|
|
497
665
|
}
|
|
498
666
|
}
|
|
499
667
|
|
|
@@ -589,7 +757,7 @@ export function buildScopedDatafile(
|
|
|
589
757
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
590
758
|
Code coverage generated by
|
|
591
759
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
592
|
-
at 2026-
|
|
760
|
+
at 2026-03-01T20:34:15.761Z
|
|
593
761
|
</div>
|
|
594
762
|
<script src="../prettify.js"></script>
|
|
595
763
|
<script>
|