@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.
- package/.eslintcache +1 -1
- package/CHANGELOG.md +117 -101
- package/coverage/clover.xml +27 -27
- package/coverage/coverage-final.json +1 -1
- package/coverage/lcov-report/bucket.ts.html +1 -1
- package/coverage/lcov-report/conditions.ts.html +1 -1
- package/coverage/lcov-report/datafileReader.ts.html +44 -44
- package/coverage/lcov-report/emitter.ts.html +1 -1
- package/coverage/lcov-report/feature.ts.html +1 -1
- package/coverage/lcov-report/index.html +20 -20
- package/coverage/lcov-report/instance.ts.html +1 -1
- package/coverage/lcov-report/logger.ts.html +1 -1
- package/coverage/lcov-report/segments.ts.html +1 -1
- package/coverage/lcov.info +42 -42
- package/dist/index.js.gz +0 -0
- package/lib/datafileReader.spec.d.ts +1 -0
- package/package.json +5 -5
- package/src/datafileReader.spec.ts +89 -0
|
@@ -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">96.29% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
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">
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
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">
|
|
47
|
+
<span class="strong">95.83% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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
|
|
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"> </span>
|
|
147
147
|
<span class="cline-any cline-neutral"> </span>
|
|
148
148
|
<span class="cline-any cline-neutral"> </span>
|
|
149
|
-
<span class="cline-any cline-yes">
|
|
150
|
-
<span class="cline-any cline-yes">
|
|
151
|
-
<span class="cline-any cline-
|
|
152
|
-
<span class="cline-any cline-
|
|
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"> </span>
|
|
154
154
|
<span class="cline-any cline-no"> </span>
|
|
155
155
|
<span class="cline-any cline-neutral"> </span>
|
|
156
156
|
<span class="cline-any cline-neutral"> </span>
|
|
157
157
|
<span class="cline-any cline-neutral"> </span>
|
|
158
|
-
<span class="cline-any cline-yes">
|
|
158
|
+
<span class="cline-any cline-yes">16x</span>
|
|
159
159
|
<span class="cline-any cline-neutral"> </span>
|
|
160
160
|
<span class="cline-any cline-neutral"> </span>
|
|
161
|
-
<span class="cline-any cline-yes">
|
|
161
|
+
<span class="cline-any cline-yes">3x</span>
|
|
162
162
|
<span class="cline-any cline-neutral"> </span>
|
|
163
163
|
<span class="cline-any cline-neutral"> </span>
|
|
164
164
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -166,47 +166,47 @@
|
|
|
166
166
|
<span class="cline-any cline-neutral"> </span>
|
|
167
167
|
<span class="cline-any cline-neutral"> </span>
|
|
168
168
|
<span class="cline-any cline-neutral"> </span>
|
|
169
|
-
<span class="cline-any cline-yes">
|
|
170
|
-
<span class="cline-any cline-yes">
|
|
171
|
-
<span class="cline-any cline-yes">
|
|
172
|
-
<span class="cline-any cline-yes">
|
|
173
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
175
175
|
<span class="cline-any cline-neutral"> </span>
|
|
176
176
|
<span class="cline-any cline-neutral"> </span>
|
|
177
|
-
<span class="cline-any cline-yes">
|
|
177
|
+
<span class="cline-any cline-yes">2x</span>
|
|
178
178
|
<span class="cline-any cline-neutral"> </span>
|
|
179
179
|
<span class="cline-any cline-neutral"> </span>
|
|
180
180
|
<span class="cline-any cline-neutral"> </span>
|
|
181
|
-
<span class="cline-any cline-
|
|
181
|
+
<span class="cline-any cline-yes">1x</span>
|
|
182
182
|
<span class="cline-any cline-neutral"> </span>
|
|
183
183
|
<span class="cline-any cline-neutral"> </span>
|
|
184
184
|
<span class="cline-any cline-neutral"> </span>
|
|
185
|
-
<span class="cline-any cline-yes">
|
|
185
|
+
<span class="cline-any cline-yes">2x</span>
|
|
186
186
|
<span class="cline-any cline-neutral"> </span>
|
|
187
187
|
<span class="cline-any cline-neutral"> </span>
|
|
188
188
|
<span class="cline-any cline-neutral"> </span>
|
|
189
|
-
<span class="cline-any cline-
|
|
189
|
+
<span class="cline-any cline-yes">1x</span>
|
|
190
190
|
<span class="cline-any cline-neutral"> </span>
|
|
191
191
|
<span class="cline-any cline-neutral"> </span>
|
|
192
192
|
<span class="cline-any cline-neutral"> </span>
|
|
193
|
-
<span class="cline-any cline-yes">
|
|
193
|
+
<span class="cline-any cline-yes">43x</span>
|
|
194
194
|
<span class="cline-any cline-neutral"> </span>
|
|
195
|
-
<span class="cline-any cline-yes">
|
|
196
|
-
<span class="cline-any cline-
|
|
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"> </span>
|
|
198
198
|
<span class="cline-any cline-neutral"> </span>
|
|
199
|
-
<span class="cline-any cline-yes">
|
|
199
|
+
<span class="cline-any cline-yes">16x</span>
|
|
200
200
|
<span class="cline-any cline-neutral"> </span>
|
|
201
201
|
<span class="cline-any cline-neutral"> </span>
|
|
202
202
|
<span class="cline-any cline-neutral"> </span>
|
|
203
|
-
<span class="cline-any cline-yes">
|
|
203
|
+
<span class="cline-any cline-yes">70x</span>
|
|
204
204
|
<span class="cline-any cline-neutral"> </span>
|
|
205
|
-
<span class="cline-any cline-yes">
|
|
206
|
-
<span class="cline-any cline-
|
|
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"> </span>
|
|
208
208
|
<span class="cline-any cline-neutral"> </span>
|
|
209
|
-
<span class="cline-any cline-yes">
|
|
209
|
+
<span class="cline-any cline-yes">63x</span>
|
|
210
210
|
<span class="cline-any cline-neutral"> </span>
|
|
211
211
|
<span class="cline-any cline-neutral"> </span>
|
|
212
212
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
@@ -220,9 +220,9 @@
|
|
|
220
220
|
} from "@featurevisor/types";
|
|
221
221
|
|
|
222
222
|
export function parseJsonConditionsIfStringified<T>(record: T, key: string): T {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
223
|
+
if (typeof record[key] === "string" && 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
|
|
|
253
|
-
|
|
254
|
-
|
|
253
|
+
getSchemaVersion(): string {
|
|
254
|
+
return this.schemaVersion;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
257
|
getAllAttributes(): Attribute[] {
|
|
258
258
|
return this.attributes;
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
-
|
|
262
|
-
|
|
261
|
+
getAttribute(attributeKey: AttributeKey): Attribute | undefined {
|
|
262
|
+
return this.attributes.find((a) => a.key === attributeKey);
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
getSegment(segmentKey: SegmentKey): Segment | undefined {
|
|
266
266
|
const segment = this.segments.find((s) => s.key === segmentKey);
|
|
267
267
|
|
|
268
|
-
|
|
269
|
-
|
|
268
|
+
if (!segment) {
|
|
269
|
+
return undefined;
|
|
270
270
|
}
|
|
271
271
|
|
|
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) => s.key === featureKey);
|
|
277
277
|
|
|
278
|
-
|
|
279
|
-
|
|
278
|
+
if (!feature) {
|
|
279
|
+
return undefined;
|
|
280
280
|
}
|
|
281
281
|
|
|
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-
|
|
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-
|
|
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-
|
|
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">
|
|
26
|
+
<span class="strong">73.51% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
33
|
+
<span class="strong">66.15% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
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">
|
|
40
|
+
<span class="strong">79.59% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
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">
|
|
47
|
+
<span class="strong">73.44% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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
|
|
113
|
-
<td data-value="
|
|
114
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
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="
|
|
117
|
-
<td data-value="27" class="abs
|
|
118
|
-
<td data-value="
|
|
119
|
-
<td data-value="5" class="abs
|
|
120
|
-
<td data-value="
|
|
121
|
-
<td data-value="11" class="abs
|
|
122
|
-
<td data-value="
|
|
123
|
-
<td data-value="24" class="abs
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
241
|
+
at 2023-09-16T18:37:55.568Z
|
|
242
242
|
</div>
|
|
243
243
|
<script src="prettify.js"></script>
|
|
244
244
|
<script>
|
package/coverage/lcov.info
CHANGED
|
@@ -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:
|
|
185
|
-
FNDA:
|
|
186
|
-
FNDA:
|
|
187
|
-
FNDA:
|
|
188
|
-
FNDA:
|
|
189
|
-
FNDA:
|
|
190
|
-
FNDA:
|
|
191
|
-
FNDA:
|
|
192
|
-
FNDA:
|
|
193
|
-
FNDA:
|
|
194
|
-
FNDA:
|
|
195
|
-
FNDA:
|
|
196
|
-
DA:11,
|
|
197
|
-
DA:12,
|
|
198
|
-
DA:13,
|
|
199
|
-
DA:14,
|
|
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,
|
|
202
|
-
DA:23,
|
|
203
|
-
DA:31,
|
|
204
|
-
DA:32,
|
|
205
|
-
DA:33,
|
|
206
|
-
DA:34,
|
|
207
|
-
DA:35,
|
|
208
|
-
DA:39,
|
|
209
|
-
DA:43,
|
|
210
|
-
DA:47,
|
|
211
|
-
DA:51,
|
|
212
|
-
DA:55,
|
|
213
|
-
DA:57,
|
|
214
|
-
DA:58,
|
|
215
|
-
DA:61,
|
|
216
|
-
DA:65,
|
|
217
|
-
DA:67,
|
|
218
|
-
DA:68,
|
|
219
|
-
DA:71,
|
|
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:
|
|
222
|
-
BRDA:12,0,0,
|
|
223
|
-
BRDA:12,1,0,
|
|
224
|
-
BRDA:12,1,1,
|
|
225
|
-
BRDA:57,2,0,
|
|
226
|
-
BRDA:67,3,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:
|
|
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.
|
|
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/
|
|
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/
|
|
44
|
+
"url": "https://github.com/featurevisor/featurevisor/issues"
|
|
45
45
|
},
|
|
46
46
|
"license": "MIT",
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@featurevisor/types": "^0.47.
|
|
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": "
|
|
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
|
+
});
|