@featurevisor/sdk 2.0.2 → 2.1.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.
@@ -147,7 +147,10 @@
147
147
  <a name='L82'></a><a href='#L82'>82</a>
148
148
  <a name='L83'></a><a href='#L83'>83</a>
149
149
  <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
151
154
  <span class="cline-any cline-neutral">&nbsp;</span>
152
155
  <span class="cline-any cline-neutral">&nbsp;</span>
153
156
  <span class="cline-any cline-yes">3x</span>
@@ -156,6 +159,9 @@
156
159
  <span class="cline-any cline-neutral">&nbsp;</span>
157
160
  <span class="cline-any cline-neutral">&nbsp;</span>
158
161
  <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
163
+ <span class="cline-any cline-neutral">&nbsp;</span>
164
+ <span class="cline-any cline-neutral">&nbsp;</span>
159
165
  <span class="cline-any cline-yes">3x</span>
160
166
  <span class="cline-any cline-yes">3x</span>
161
167
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -231,12 +237,15 @@
231
237
  <span class="cline-any cline-neutral">&nbsp;</span>
232
238
  <span class="cline-any cline-yes">172x</span>
233
239
  <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { BucketKey, Context, AttributeValue, FeatureKey, BucketBy } from "@featurevisor/types";
240
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Context, AttributeValue, FeatureKey, BucketBy } from "@featurevisor/types";
235
241
  &nbsp;
236
242
  import { Logger } from "./logger";
237
243
  import { getValueFromContext } from "./conditions";
238
244
  import { MurmurHashV3 } from "./murmurhash";
239
245
  &nbsp;
246
+ export type BucketKey = string;
247
+ export type BucketValue = number; // 0 to 100,000 (100% * 1000 to include three decimal places in same integer)
248
+ &nbsp;
240
249
  /**
241
250
  * Generic hashing
242
251
  */
@@ -245,7 +254,7 @@ const MAX_HASH_VALUE = Math.pow(2, 32);
245
254
  &nbsp;
246
255
  export const MAX_BUCKETED_NUMBER = 100000; // 100% * 1000 to include three decimal places in the same integer value
247
256
  &nbsp;
248
- export function getBucketedNumber(bucketKey: string): number {
257
+ export function getBucketedNumber(bucketKey: string): BucketValue {
249
258
  const hashValue = MurmurHashV3(bucketKey, HASH_SEED);
250
259
  const ratio = hashValue / MAX_HASH_VALUE;
251
260
  &nbsp;
@@ -322,7 +331,7 @@ export function getBucketKey(options: GetBucketKeyOptions): BucketKey {
322
331
  <div class='footer quiet pad2 space-top1 center small'>
323
332
  Code coverage generated by
324
333
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
325
- at 2025-07-19T21:32:42.383Z
334
+ at 2025-07-21T22:18:08.337Z
326
335
  </div>
327
336
  <script src="prettify.js"></script>
328
337
  <script>
@@ -925,7 +925,7 @@ export class FeaturevisorChildInstance {
925
925
  <div class='footer quiet pad2 space-top1 center small'>
926
926
  Code coverage generated by
927
927
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
928
- at 2025-07-19T21:32:42.383Z
928
+ at 2025-07-21T22:18:08.337Z
929
929
  </div>
930
930
  <script src="prettify.js"></script>
931
931
  <script>
@@ -400,7 +400,7 @@ export function conditionIsMatched(
400
400
  <div class='footer quiet pad2 space-top1 center small'>
401
401
  Code coverage generated by
402
402
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
403
- at 2025-07-19T21:32:42.383Z
403
+ at 2025-07-21T22:18:08.337Z
404
404
  </div>
405
405
  <script src="prettify.js"></script>
406
406
  <script>
@@ -1048,7 +1048,7 @@ export class DatafileReader {
1048
1048
  <div class='footer quiet pad2 space-top1 center small'>
1049
1049
  Code coverage generated by
1050
1050
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1051
- at 2025-07-19T21:32:42.383Z
1051
+ at 2025-07-21T22:18:08.337Z
1052
1052
  </div>
1053
1053
  <script src="prettify.js"></script>
1054
1054
  <script>
@@ -247,7 +247,7 @@ export class Emitter {
247
247
  <div class='footer quiet pad2 space-top1 center small'>
248
248
  Code coverage generated by
249
249
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
250
- at 2025-07-19T21:32:42.383Z
250
+ at 2025-07-21T22:18:08.337Z
251
251
  </div>
252
252
  <script src="prettify.js"></script>
253
253
  <script>
@@ -933,11 +933,7 @@
933
933
  <a name='L868'></a><a href='#L868'>868</a>
934
934
  <a name='L869'></a><a href='#L869'>869</a>
935
935
  <a name='L870'></a><a href='#L870'>870</a>
936
- <a name='L871'></a><a href='#L871'>871</a>
937
- <a name='L872'></a><a href='#L872'>872</a>
938
- <a name='L873'></a><a href='#L873'>873</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <a name='L871'></a><a href='#L871'>871</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
941
937
  <span class="cline-any cline-neutral">&nbsp;</span>
942
938
  <span class="cline-any cline-neutral">&nbsp;</span>
943
939
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1810,8 +1806,6 @@
1810
1806
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type {
1811
1807
  FeatureKey,
1812
1808
  Context,
1813
- BucketKey,
1814
- BucketValue,
1815
1809
  RuleKey,
1816
1810
  Traffic,
1817
1811
  Force,
@@ -1829,7 +1823,7 @@
1829
1823
  import { Logger } from "./logger";
1830
1824
  import { HooksManager } from "./hooks";
1831
1825
  import { DatafileReader } from "./datafileReader";
1832
- import { getBucketKey, getBucketedNumber } from "./bucketer";
1826
+ import { BucketKey, BucketValue, getBucketKey, getBucketedNumber } from "./bucketer";
1833
1827
  &nbsp;
1834
1828
  export enum EvaluationReason {
1835
1829
  // feature specific
@@ -2686,7 +2680,7 @@ export function evaluate(options: EvaluateOptions): Evaluation {
2686
2680
  <div class='footer quiet pad2 space-top1 center small'>
2687
2681
  Code coverage generated by
2688
2682
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2689
- at 2025-07-19T21:32:42.383Z
2683
+ at 2025-07-21T22:18:08.337Z
2690
2684
  </div>
2691
2685
  <script src="prettify.js"></script>
2692
2686
  <script>
@@ -319,7 +319,7 @@ export function getParamsForDatafileSetEvent(
319
319
  <div class='footer quiet pad2 space-top1 center small'>
320
320
  Code coverage generated by
321
321
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
322
- at 2025-07-19T21:32:42.383Z
322
+ at 2025-07-21T22:18:08.337Z
323
323
  </div>
324
324
  <script src="prettify.js"></script>
325
325
  <script>
@@ -169,7 +169,7 @@ export function getValueByType(value: ValueType, fieldType: FieldType): ValueTyp
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
172
- at 2025-07-19T21:32:42.383Z
172
+ at 2025-07-21T22:18:08.337Z
173
173
  </div>
174
174
  <script src="prettify.js"></script>
175
175
  <script>
@@ -151,7 +151,9 @@
151
151
  <a name='L86'></a><a href='#L86'>86</a>
152
152
  <a name='L87'></a><a href='#L87'>87</a>
153
153
  <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
157
  <span class="cline-any cline-neutral">&nbsp;</span>
156
158
  <span class="cline-any cline-neutral">&nbsp;</span>
157
159
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -239,10 +241,11 @@
239
241
  <span class="cline-any cline-yes">415x</span>
240
242
  <span class="cline-any cline-neutral">&nbsp;</span>
241
243
  <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { BucketBy, BucketKey, BucketValue, Context, FeatureKey } from "@featurevisor/types";
244
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { BucketBy, Context, FeatureKey } from "@featurevisor/types";
243
245
  &nbsp;
244
246
  import type { EvaluateOptions, Evaluation } from "./evaluate";
245
247
  import type { Logger } from "./logger";
248
+ import type { BucketKey, BucketValue } from "./bucketer";
246
249
  &nbsp;
247
250
  /**
248
251
  * bucketKey
@@ -334,7 +337,7 @@ export class HooksManager {
334
337
  <div class='footer quiet pad2 space-top1 center small'>
335
338
  Code coverage generated by
336
339
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
337
- at 2025-07-19T21:32:42.383Z
340
+ at 2025-07-21T22:18:08.337Z
338
341
  </div>
339
342
  <script src="prettify.js"></script>
340
343
  <script>
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">84.46% </span>
33
+ <span class="strong">84.27% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>386/457</span>
35
+ <span class='fraction'>386/458</span>
36
36
  </div>
37
37
 
38
38
 
@@ -220,8 +220,8 @@
220
220
  </td>
221
221
  <td data-value="81.9" class="pct high">81.9%</td>
222
222
  <td data-value="105" class="abs high">86/105</td>
223
- <td data-value="59.15" class="pct medium">59.15%</td>
224
- <td data-value="71" class="abs medium">42/71</td>
223
+ <td data-value="58.33" class="pct medium">58.33%</td>
224
+ <td data-value="72" class="abs medium">42/72</td>
225
225
  <td data-value="75" class="pct medium">75%</td>
226
226
  <td data-value="28" class="abs medium">21/28</td>
227
227
  <td data-value="81.9" class="pct high">81.9%</td>
@@ -251,7 +251,7 @@
251
251
  <div class='footer quiet pad2 space-top1 center small'>
252
252
  Code coverage generated by
253
253
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
254
- at 2025-07-19T21:32:42.383Z
254
+ at 2025-07-21T22:18:08.337Z
255
255
  </div>
256
256
  <script src="prettify.js"></script>
257
257
  <script>
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">59.15% </span>
33
+ <span class="strong">58.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>42/71</span>
35
+ <span class='fraction'>42/72</span>
36
36
  </div>
37
37
 
38
38
 
@@ -1392,7 +1392,7 @@ export class FeaturevisorInstance {
1392
1392
  }
1393
1393
  }
1394
1394
  &nbsp;
1395
- export function createInstance(options: InstanceOptions): FeaturevisorInstance {
1395
+ export function createInstance(options: InstanceOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span>: FeaturevisorInstance {
1396
1396
  return new FeaturevisorInstance(options);
1397
1397
  }
1398
1398
  &nbsp;</pre></td></tr></table></pre>
@@ -1402,7 +1402,7 @@ export function createInstance(options: InstanceOptions): FeaturevisorInstance {
1402
1402
  <div class='footer quiet pad2 space-top1 center small'>
1403
1403
  Code coverage generated by
1404
1404
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1405
- at 2025-07-19T21:32:42.383Z
1405
+ at 2025-07-21T22:18:08.337Z
1406
1406
  </div>
1407
1407
  <script src="prettify.js"></script>
1408
1408
  <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-07-19T21:32:42.383Z
343
+ at 2025-07-21T22:18:08.337Z
344
344
  </div>
345
345
  <script src="prettify.js"></script>
346
346
  <script>