@featurevisor/sdk 0.47.0 → 0.47.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">70.37% </span>
26
+ <span class="strong">96.29% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>19/27</span>
28
+ <span class='fraction'>26/27</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">20% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>1/5</span>
35
+ <span class='fraction'>5/5</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">72.72% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>8/11</span>
42
+ <span class='fraction'>11/11</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">70.83% </span>
47
+ <span class="strong">95.83% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>17/24</span>
49
+ <span class='fraction'>23/24</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -146,19 +146,19 @@
146
146
  <span class="cline-any cline-neutral">&nbsp;</span>
147
147
  <span class="cline-any cline-neutral">&nbsp;</span>
148
148
  <span class="cline-any cline-neutral">&nbsp;</span>
149
- <span class="cline-any cline-yes">2x</span>
150
- <span class="cline-any cline-yes">14x</span>
151
- <span class="cline-any cline-no">&nbsp;</span>
152
- <span class="cline-any cline-no">&nbsp;</span>
149
+ <span class="cline-any cline-yes">3x</span>
150
+ <span class="cline-any cline-yes">16x</span>
151
+ <span class="cline-any cline-yes">1x</span>
152
+ <span class="cline-any cline-yes">1x</span>
153
153
  <span class="cline-any cline-neutral">&nbsp;</span>
154
154
  <span class="cline-any cline-no">&nbsp;</span>
155
155
  <span class="cline-any cline-neutral">&nbsp;</span>
156
156
  <span class="cline-any cline-neutral">&nbsp;</span>
157
157
  <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-yes">14x</span>
158
+ <span class="cline-any cline-yes">16x</span>
159
159
  <span class="cline-any cline-neutral">&nbsp;</span>
160
160
  <span class="cline-any cline-neutral">&nbsp;</span>
161
- <span class="cline-any cline-yes">2x</span>
161
+ <span class="cline-any cline-yes">3x</span>
162
162
  <span class="cline-any cline-neutral">&nbsp;</span>
163
163
  <span class="cline-any cline-neutral">&nbsp;</span>
164
164
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -166,47 +166,47 @@
166
166
  <span class="cline-any cline-neutral">&nbsp;</span>
167
167
  <span class="cline-any cline-neutral">&nbsp;</span>
168
168
  <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-yes">22x</span>
170
- <span class="cline-any cline-yes">22x</span>
171
- <span class="cline-any cline-yes">22x</span>
172
- <span class="cline-any cline-yes">22x</span>
173
- <span class="cline-any cline-yes">22x</span>
169
+ <span class="cline-any cline-yes">23x</span>
170
+ <span class="cline-any cline-yes">23x</span>
171
+ <span class="cline-any cline-yes">23x</span>
172
+ <span class="cline-any cline-yes">23x</span>
173
+ <span class="cline-any cline-yes">23x</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>
177
- <span class="cline-any cline-yes">1x</span>
177
+ <span class="cline-any cline-yes">2x</span>
178
178
  <span class="cline-any cline-neutral">&nbsp;</span>
179
179
  <span class="cline-any cline-neutral">&nbsp;</span>
180
180
  <span class="cline-any cline-neutral">&nbsp;</span>
181
- <span class="cline-any cline-no">&nbsp;</span>
181
+ <span class="cline-any cline-yes">1x</span>
182
182
  <span class="cline-any cline-neutral">&nbsp;</span>
183
183
  <span class="cline-any cline-neutral">&nbsp;</span>
184
184
  <span class="cline-any cline-neutral">&nbsp;</span>
185
- <span class="cline-any cline-yes">1x</span>
185
+ <span class="cline-any cline-yes">2x</span>
186
186
  <span class="cline-any cline-neutral">&nbsp;</span>
187
187
  <span class="cline-any cline-neutral">&nbsp;</span>
188
188
  <span class="cline-any cline-neutral">&nbsp;</span>
189
- <span class="cline-any cline-no">&nbsp;</span>
189
+ <span class="cline-any cline-yes">1x</span>
190
190
  <span class="cline-any cline-neutral">&nbsp;</span>
191
191
  <span class="cline-any cline-neutral">&nbsp;</span>
192
192
  <span class="cline-any cline-neutral">&nbsp;</span>
193
- <span class="cline-any cline-yes">38x</span>
193
+ <span class="cline-any cline-yes">43x</span>
194
194
  <span class="cline-any cline-neutral">&nbsp;</span>
195
- <span class="cline-any cline-yes">14x</span>
196
- <span class="cline-any cline-no">&nbsp;</span>
195
+ <span class="cline-any cline-yes">17x</span>
196
+ <span class="cline-any cline-yes">1x</span>
197
197
  <span class="cline-any cline-neutral">&nbsp;</span>
198
198
  <span class="cline-any cline-neutral">&nbsp;</span>
199
- <span class="cline-any cline-yes">14x</span>
199
+ <span class="cline-any cline-yes">16x</span>
200
200
  <span class="cline-any cline-neutral">&nbsp;</span>
201
201
  <span class="cline-any cline-neutral">&nbsp;</span>
202
202
  <span class="cline-any cline-neutral">&nbsp;</span>
203
- <span class="cline-any cline-yes">68x</span>
203
+ <span class="cline-any cline-yes">70x</span>
204
204
  <span class="cline-any cline-neutral">&nbsp;</span>
205
- <span class="cline-any cline-yes">62x</span>
206
- <span class="cline-any cline-no">&nbsp;</span>
205
+ <span class="cline-any cline-yes">64x</span>
206
+ <span class="cline-any cline-yes">1x</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">62x</span>
209
+ <span class="cline-any cline-yes">63x</span>
210
210
  <span class="cline-any cline-neutral">&nbsp;</span>
211
211
  <span class="cline-any cline-neutral">&nbsp;</span>
212
212
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
@@ -220,9 +220,9 @@
220
220
  } from "@featurevisor/types";
221
221
  &nbsp;
222
222
  export function parseJsonConditionsIfStringified&lt;T&gt;(record: T, key: string): T {
223
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof record[key] === "string" &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >record[key] !== "*")</span> {
224
- <span class="cstat-no" title="statement not covered" > try {</span>
225
- <span class="cstat-no" title="statement not covered" > record[key] = JSON.parse(record[key]);</span>
223
+ if (typeof record[key] === "string" &amp;&amp; record[key] !== "*") {
224
+ try {
225
+ record[key] = JSON.parse(record[key]);
226
226
  } catch (e) {
227
227
  <span class="cstat-no" title="statement not covered" > console.error("Error parsing JSON", e);</span>
228
228
  }
@@ -250,23 +250,23 @@ export class DatafileReader {
250
250
  return this.revision;
251
251
  }
252
252
  &nbsp;
253
- <span class="fstat-no" title="function not covered" > getSchemaVersion(</span>): string {
254
- <span class="cstat-no" title="statement not covered" > return this.schemaVersion;</span>
253
+ getSchemaVersion(): string {
254
+ return this.schemaVersion;
255
255
  }
256
256
  &nbsp;
257
257
  getAllAttributes(): Attribute[] {
258
258
  return this.attributes;
259
259
  }
260
260
  &nbsp;
261
- <span class="fstat-no" title="function not covered" > getAttribute(</span>attributeKey: AttributeKey): Attribute | undefined {
262
- <span class="cstat-no" title="statement not covered" > return this.attributes.find(<span class="fstat-no" title="function not covered" >(a</span>) =&gt; <span class="cstat-no" title="statement not covered" >a.key === attributeKey)</span>;</span>
261
+ getAttribute(attributeKey: AttributeKey): Attribute | undefined {
262
+ return this.attributes.find((a) =&gt; a.key === attributeKey);
263
263
  }
264
264
  &nbsp;
265
265
  getSegment(segmentKey: SegmentKey): Segment | undefined {
266
266
  const segment = this.segments.find((s) =&gt; s.key === segmentKey);
267
267
  &nbsp;
268
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!segment) {
269
- <span class="cstat-no" title="statement not covered" > return undefined;</span>
268
+ if (!segment) {
269
+ return undefined;
270
270
  }
271
271
  &nbsp;
272
272
  return parseJsonConditionsIfStringified(segment, "conditions");
@@ -275,8 +275,8 @@ export class DatafileReader {
275
275
  getFeature(featureKey: FeatureKey): Feature | undefined {
276
276
  const feature = this.features.find((s) =&gt; s.key === featureKey);
277
277
  &nbsp;
278
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!feature) {
279
- <span class="cstat-no" title="statement not covered" > return undefined;</span>
278
+ if (!feature) {
279
+ return undefined;
280
280
  }
281
281
  &nbsp;
282
282
  return feature;
@@ -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 2023-09-05T22:33:25.737Z
292
+ at 2023-09-16T18:37:55.568Z
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 2023-09-05T22:33:25.737Z
232
+ at 2023-09-16T18:37:55.568Z
233
233
  </div>
234
234
  <script src="prettify.js"></script>
235
235
  <script>
@@ -370,7 +370,7 @@ export function findForceFromFeature(
370
370
  <div class='footer quiet pad2 space-top1 center small'>
371
371
  Code coverage generated by
372
372
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
373
- at 2023-09-05T22:33:25.737Z
373
+ at 2023-09-16T18:37:55.568Z
374
374
  </div>
375
375
  <script src="prettify.js"></script>
376
376
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">72.36% </span>
26
+ <span class="strong">73.51% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>440/608</span>
28
+ <span class='fraction'>447/608</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">64.93% </span>
33
+ <span class="strong">66.15% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>213/328</span>
35
+ <span class='fraction'>217/328</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">76.53% </span>
40
+ <span class="strong">79.59% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>75/98</span>
42
+ <span class='fraction'>78/98</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">72.43% </span>
47
+ <span class="strong">73.44% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>431/595</span>
49
+ <span class='fraction'>437/595</span>
50
50
  </div>
51
51
 
52
52
 
@@ -109,18 +109,18 @@
109
109
  </tr>
110
110
 
111
111
  <tr>
112
- <td class="file medium" data-value="datafileReader.ts"><a href="datafileReader.ts.html">datafileReader.ts</a></td>
113
- <td data-value="70.37" class="pic medium">
114
- <div class="chart"><div class="cover-fill" style="width: 70%"></div><div class="cover-empty" style="width: 30%"></div></div>
112
+ <td class="file high" data-value="datafileReader.ts"><a href="datafileReader.ts.html">datafileReader.ts</a></td>
113
+ <td data-value="96.29" class="pic high">
114
+ <div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
115
115
  </td>
116
- <td data-value="70.37" class="pct medium">70.37%</td>
117
- <td data-value="27" class="abs medium">19/27</td>
118
- <td data-value="20" class="pct low">20%</td>
119
- <td data-value="5" class="abs low">1/5</td>
120
- <td data-value="72.72" class="pct medium">72.72%</td>
121
- <td data-value="11" class="abs medium">8/11</td>
122
- <td data-value="70.83" class="pct medium">70.83%</td>
123
- <td data-value="24" class="abs medium">17/24</td>
116
+ <td data-value="96.29" class="pct high">96.29%</td>
117
+ <td data-value="27" class="abs high">26/27</td>
118
+ <td data-value="100" class="pct high">100%</td>
119
+ <td data-value="5" class="abs high">5/5</td>
120
+ <td data-value="100" class="pct high">100%</td>
121
+ <td data-value="11" class="abs high">11/11</td>
122
+ <td data-value="95.83" class="pct high">95.83%</td>
123
+ <td data-value="24" class="abs high">23/24</td>
124
124
  </tr>
125
125
 
126
126
  <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 2023-09-05T22:33:25.737Z
209
+ at 2023-09-16T18:37:55.568Z
210
210
  </div>
211
211
  <script src="prettify.js"></script>
212
212
  <script>
@@ -3859,7 +3859,7 @@ export function createInstance(options: InstanceOptions): FeaturevisorInstance {
3859
3859
  <div class='footer quiet pad2 space-top1 center small'>
3860
3860
  Code coverage generated by
3861
3861
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3862
- at 2023-09-05T22:33:25.737Z
3862
+ at 2023-09-16T18:37:55.568Z
3863
3863
  </div>
3864
3864
  <script src="prettify.js"></script>
3865
3865
  <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 2023-09-05T22:33:25.737Z
343
+ at 2023-09-16T18:37:55.568Z
344
344
  </div>
345
345
  <script src="prettify.js"></script>
346
346
  <script>
@@ -238,7 +238,7 @@ export function allGroupSegmentsAreMatched(
238
238
  <div class='footer quiet pad2 space-top1 center small'>
239
239
  Code coverage generated by
240
240
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
241
- at 2023-09-05T22:33:25.737Z
241
+ at 2023-09-16T18:37:55.568Z
242
242
  </div>
243
243
  <script src="prettify.js"></script>
244
244
  <script>
@@ -181,51 +181,51 @@ FN:55,(anonymous_8)
181
181
  FN:64,(anonymous_9)
182
182
  FN:65,(anonymous_10)
183
183
  FNF:11
184
- FNH:8
185
- FNDA:14,parseJsonConditionsIfStringified
186
- FNDA:22,(anonymous_1)
187
- FNDA:1,(anonymous_2)
188
- FNDA:0,(anonymous_3)
189
- FNDA:1,(anonymous_4)
190
- FNDA:0,(anonymous_5)
191
- FNDA:0,(anonymous_6)
192
- FNDA:14,(anonymous_7)
193
- FNDA:38,(anonymous_8)
194
- FNDA:62,(anonymous_9)
195
- FNDA:68,(anonymous_10)
196
- DA:11,2
197
- DA:12,14
198
- DA:13,0
199
- DA:14,0
184
+ FNH:11
185
+ FNDA:16,parseJsonConditionsIfStringified
186
+ FNDA:23,(anonymous_1)
187
+ FNDA:2,(anonymous_2)
188
+ FNDA:1,(anonymous_3)
189
+ FNDA:2,(anonymous_4)
190
+ FNDA:1,(anonymous_5)
191
+ FNDA:1,(anonymous_6)
192
+ FNDA:17,(anonymous_7)
193
+ FNDA:43,(anonymous_8)
194
+ FNDA:64,(anonymous_9)
195
+ FNDA:70,(anonymous_10)
196
+ DA:11,3
197
+ DA:12,16
198
+ DA:13,1
199
+ DA:14,1
200
200
  DA:16,0
201
- DA:20,14
202
- DA:23,2
203
- DA:31,22
204
- DA:32,22
205
- DA:33,22
206
- DA:34,22
207
- DA:35,22
208
- DA:39,1
209
- DA:43,0
210
- DA:47,1
211
- DA:51,0
212
- DA:55,38
213
- DA:57,14
214
- DA:58,0
215
- DA:61,14
216
- DA:65,68
217
- DA:67,62
218
- DA:68,0
219
- DA:71,62
201
+ DA:20,16
202
+ DA:23,3
203
+ DA:31,23
204
+ DA:32,23
205
+ DA:33,23
206
+ DA:34,23
207
+ DA:35,23
208
+ DA:39,2
209
+ DA:43,1
210
+ DA:47,2
211
+ DA:51,1
212
+ DA:55,43
213
+ DA:57,17
214
+ DA:58,1
215
+ DA:61,16
216
+ DA:65,70
217
+ DA:67,64
218
+ DA:68,1
219
+ DA:71,63
220
220
  LF:24
221
- LH:17
222
- BRDA:12,0,0,0
223
- BRDA:12,1,0,14
224
- BRDA:12,1,1,0
225
- BRDA:57,2,0,0
226
- BRDA:67,3,0,0
221
+ LH:23
222
+ BRDA:12,0,0,1
223
+ BRDA:12,1,0,16
224
+ BRDA:12,1,1,1
225
+ BRDA:57,2,0,1
226
+ BRDA:67,3,0,1
227
227
  BRF:5
228
- BRH:1
228
+ BRH:5
229
229
  end_of_record
230
230
  TN:
231
231
  SF:src/emitter.ts
package/dist/index.js.gz CHANGED
Binary file
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@featurevisor/sdk",
3
- "version": "0.47.0",
3
+ "version": "0.47.2",
4
4
  "description": "Featurevisor SDK for Node.js and the browser",
5
5
  "main": "dist/index.js",
6
6
  "module": "lib/index.js",
@@ -34,20 +34,20 @@
34
34
  ],
35
35
  "repository": {
36
36
  "type": "git",
37
- "url": "https://github.com/fahad19/featurevisor.git"
37
+ "url": "https://github.com/featurevisor/featurevisor.git"
38
38
  },
39
39
  "publishConfig": {
40
40
  "access": "public",
41
41
  "registry": "https://registry.npmjs.org/"
42
42
  },
43
43
  "bugs": {
44
- "url": "https://github.com/fahad19/featurevisor/issues"
44
+ "url": "https://github.com/featurevisor/featurevisor/issues"
45
45
  },
46
46
  "license": "MIT",
47
47
  "dependencies": {
48
- "@featurevisor/types": "^0.47.0",
48
+ "@featurevisor/types": "^0.47.1",
49
49
  "compare-versions": "^6.0.0-rc.1",
50
50
  "murmurhash": "^2.0.1"
51
51
  },
52
- "gitHead": "cc153ea5b692390b6af2c374d590d5846eecb67e"
52
+ "gitHead": "4f7b0c721da93130299f6978808f0816857d8137"
53
53
  }
@@ -0,0 +1,89 @@
1
+ import { DatafileContent } from "@featurevisor/types";
2
+ import { DatafileReader } from "./datafileReader";
3
+
4
+ describe("sdk: DatafileReader", function () {
5
+ it("should be a function", function () {
6
+ expect(typeof DatafileReader).toEqual("function");
7
+ });
8
+
9
+ it("should return requested entities", function () {
10
+ const datafileJson: DatafileContent = {
11
+ schemaVersion: "1",
12
+ revision: "1",
13
+ attributes: [
14
+ {
15
+ key: "userId",
16
+ type: "string",
17
+ capture: true,
18
+ },
19
+ {
20
+ key: "country",
21
+ type: "string",
22
+ },
23
+ ],
24
+ segments: [
25
+ {
26
+ key: "netherlands",
27
+ conditions: [
28
+ {
29
+ attribute: "country",
30
+ operator: "equals",
31
+ value: "nl",
32
+ },
33
+ ],
34
+ },
35
+ {
36
+ key: "germany",
37
+ conditions: JSON.stringify([
38
+ {
39
+ attribute: "country",
40
+ operator: "equals",
41
+ value: "de",
42
+ },
43
+ ]),
44
+ },
45
+ ],
46
+ features: [
47
+ {
48
+ key: "test",
49
+ bucketBy: "userId",
50
+ variations: [
51
+ { value: "control" },
52
+ {
53
+ value: "treatment",
54
+ variables: [
55
+ {
56
+ key: "showSidebar",
57
+ value: true,
58
+ },
59
+ ],
60
+ },
61
+ ],
62
+ traffic: [
63
+ {
64
+ key: "1",
65
+ segments: "*",
66
+ percentage: 100000,
67
+ allocation: [
68
+ { variation: "control", range: [0, 0] },
69
+ { variation: "treatment", range: [0, 100000] },
70
+ ],
71
+ },
72
+ ],
73
+ },
74
+ ],
75
+ };
76
+
77
+ const reader = new DatafileReader(datafileJson);
78
+
79
+ expect(reader.getRevision()).toEqual("1");
80
+ expect(reader.getSchemaVersion()).toEqual("1");
81
+ expect(reader.getAllAttributes()).toEqual(datafileJson.attributes);
82
+ expect(reader.getAttribute("userId")).toEqual(datafileJson.attributes[0]);
83
+ expect(reader.getSegment("netherlands")).toEqual(datafileJson.segments[0]);
84
+ expect((reader.getSegment("germany") as any).conditions[0].value).toEqual("de");
85
+ expect(reader.getSegment("belgium")).toEqual(undefined);
86
+ expect(reader.getFeature("test")).toEqual(datafileJson.features[0]);
87
+ expect(reader.getFeature("test2")).toEqual(undefined);
88
+ });
89
+ });