@featurevisor/sdk 1.35.2 → 2.0.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 +8 -0
- package/README.md +2 -381
- package/coverage/clover.xml +707 -643
- package/coverage/coverage-final.json +11 -9
- package/coverage/lcov-report/{segments.ts.html → bucketer.ts.html} +155 -77
- package/coverage/lcov-report/child.ts.html +940 -0
- package/coverage/lcov-report/conditions.ts.html +107 -158
- package/coverage/lcov-report/datafileReader.ts.html +763 -103
- package/coverage/lcov-report/emitter.ts.html +77 -59
- package/coverage/lcov-report/evaluate.ts.html +689 -416
- package/coverage/lcov-report/events.ts.html +334 -0
- package/coverage/lcov-report/helpers.ts.html +184 -0
- package/coverage/lcov-report/{feature.ts.html → hooks.ts.html} +90 -237
- package/coverage/lcov-report/index.html +119 -89
- package/coverage/lcov-report/instance.ts.html +341 -773
- package/coverage/lcov-report/logger.ts.html +64 -64
- package/coverage/lcov.info +1433 -1223
- package/dist/bucketer.d.ts +11 -0
- package/dist/child.d.ts +26 -0
- package/dist/compareVersions.d.ts +4 -0
- package/dist/conditions.d.ts +4 -4
- package/dist/datafileReader.d.ts +26 -6
- package/dist/emitter.d.ts +8 -9
- package/dist/evaluate.d.ts +31 -29
- package/dist/events.d.ts +5 -0
- package/dist/helpers.d.ts +5 -0
- package/dist/hooks.d.ts +45 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.gz +0 -0
- package/dist/index.mjs.map +1 -1
- package/dist/instance.d.ts +40 -72
- package/dist/logger.d.ts +6 -5
- package/dist/murmurhash.d.ts +1 -0
- package/jest.config.js +2 -0
- package/lib/bucketer.d.ts +11 -0
- package/lib/child.d.ts +26 -0
- package/lib/compareVersions.d.ts +4 -0
- package/lib/conditions.d.ts +4 -4
- package/lib/datafileReader.d.ts +26 -6
- package/lib/emitter.d.ts +8 -9
- package/lib/evaluate.d.ts +31 -29
- package/lib/events.d.ts +5 -0
- package/lib/helpers.d.ts +5 -0
- package/lib/hooks.d.ts +45 -0
- package/lib/index.d.ts +3 -2
- package/lib/instance.d.ts +40 -72
- package/lib/logger.d.ts +6 -5
- package/lib/murmurhash.d.ts +1 -0
- package/package.json +3 -5
- package/src/bucketer.spec.ts +165 -0
- package/src/bucketer.ts +84 -0
- package/src/child.spec.ts +267 -0
- package/src/child.ts +285 -0
- package/src/compareVersions.ts +93 -0
- package/src/conditions.spec.ts +563 -353
- package/src/conditions.ts +46 -63
- package/src/datafileReader.spec.ts +396 -84
- package/src/datafileReader.ts +280 -60
- package/src/emitter.spec.ts +27 -86
- package/src/emitter.ts +38 -32
- package/src/evaluate.ts +349 -258
- package/src/events.spec.ts +154 -0
- package/src/events.ts +83 -0
- package/src/helpers.ts +33 -0
- package/src/hooks.ts +88 -0
- package/src/index.ts +3 -2
- package/src/instance.spec.ts +305 -489
- package/src/instance.ts +247 -391
- package/src/logger.spec.ts +212 -134
- package/src/logger.ts +36 -36
- package/src/murmurhash.ts +71 -0
- package/coverage/lcov-report/bucket.ts.html +0 -502
- package/dist/bucket.d.ts +0 -30
- package/dist/feature.d.ts +0 -16
- package/dist/segments.d.ts +0 -5
- package/lib/bucket.d.ts +0 -30
- package/lib/feature.d.ts +0 -16
- package/lib/segments.d.ts +0 -5
- package/src/bucket.spec.ts +0 -37
- package/src/bucket.ts +0 -139
- package/src/feature.ts +0 -137
- package/src/segments.spec.ts +0 -468
- package/src/segments.ts +0 -58
|
@@ -32,7 +32,7 @@
|
|
|
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'>12/12</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -168,46 +168,45 @@
|
|
|
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">7x</span>
|
|
172
172
|
<span class="cline-any cline-neutral"> </span>
|
|
173
|
-
<span class="cline-any cline-yes">
|
|
173
|
+
<span class="cline-any cline-yes">7x</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
177
|
<span class="cline-any cline-neutral"> </span>
|
|
178
|
+
<span class="cline-any cline-yes">54x</span>
|
|
178
179
|
<span class="cline-any cline-neutral"> </span>
|
|
180
|
+
<span class="cline-any cline-yes">54x</span>
|
|
181
|
+
<span class="cline-any cline-yes">27x</span>
|
|
182
|
+
<span class="cline-any cline-yes">27x</span>
|
|
183
|
+
<span class="cline-any cline-yes">14x</span>
|
|
184
|
+
<span class="cline-any cline-yes">13x</span>
|
|
185
|
+
<span class="cline-any cline-yes">8x</span>
|
|
179
186
|
<span class="cline-any cline-neutral"> </span>
|
|
180
187
|
<span class="cline-any cline-neutral"> </span>
|
|
188
|
+
<span class="cline-any cline-yes">54x</span>
|
|
181
189
|
<span class="cline-any cline-neutral"> </span>
|
|
182
190
|
<span class="cline-any cline-neutral"> </span>
|
|
183
|
-
<span class="cline-any cline-yes">
|
|
191
|
+
<span class="cline-any cline-yes">7x</span>
|
|
192
|
+
<span class="cline-any cline-yes">7x</span>
|
|
184
193
|
<span class="cline-any cline-neutral"> </span>
|
|
185
194
|
<span class="cline-any cline-neutral"> </span>
|
|
186
195
|
<span class="cline-any cline-neutral"> </span>
|
|
187
196
|
<span class="cline-any cline-neutral"> </span>
|
|
188
|
-
<span class="cline-any cline-yes">12x</span>
|
|
189
197
|
<span class="cline-any cline-neutral"> </span>
|
|
190
|
-
<span class="cline-any cline-yes">1x</span>
|
|
191
|
-
<span class="cline-any cline-yes">1x</span>
|
|
192
198
|
<span class="cline-any cline-neutral"> </span>
|
|
193
|
-
<span class="cline-any cline-yes">1x</span>
|
|
194
|
-
<span class="cline-any cline-yes">1x</span>
|
|
195
199
|
<span class="cline-any cline-neutral"> </span>
|
|
196
|
-
<span class="cline-any cline-yes">9x</span>
|
|
197
|
-
<span class="cline-any cline-yes">9x</span>
|
|
198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
199
|
-
<span class="cline-any cline-yes">1x</span>
|
|
200
|
-
<span class="cline-any cline-yes">1x</span>
|
|
201
200
|
<span class="cline-any cline-neutral"> </span>
|
|
202
201
|
<span class="cline-any cline-neutral"> </span>
|
|
202
|
+
<span class="cline-any cline-yes">7x</span>
|
|
203
203
|
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-yes">4x</span>
|
|
205
204
|
<span class="cline-any cline-neutral"> </span>
|
|
206
205
|
<span class="cline-any cline-neutral"> </span>
|
|
207
206
|
<span class="cline-any cline-neutral"> </span>
|
|
208
207
|
<span class="cline-any cline-neutral"> </span>
|
|
209
|
-
<span class="cline-any cline-yes">
|
|
210
|
-
<span class="cline-any cline-yes">
|
|
208
|
+
<span class="cline-any cline-yes">46x</span>
|
|
209
|
+
<span class="cline-any cline-yes">46x</span>
|
|
211
210
|
<span class="cline-any cline-neutral"> </span>
|
|
212
211
|
<span class="cline-any cline-neutral"> </span>
|
|
213
212
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -215,35 +214,36 @@
|
|
|
215
214
|
<span class="cline-any cline-neutral"> </span>
|
|
216
215
|
<span class="cline-any cline-neutral"> </span>
|
|
217
216
|
<span class="cline-any cline-neutral"> </span>
|
|
218
|
-
<span class="cline-any cline-yes">
|
|
219
|
-
<span class="cline-any cline-yes">25x</span>
|
|
217
|
+
<span class="cline-any cline-yes">247x</span>
|
|
220
218
|
<span class="cline-any cline-neutral"> </span>
|
|
219
|
+
<span class="cline-any cline-yes">247x</span>
|
|
220
|
+
<span class="cline-any cline-yes">194x</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">53x</span>
|
|
223
224
|
<span class="cline-any cline-neutral"> </span>
|
|
224
|
-
<span class="cline-any cline-yes">128x</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">196x</span>
|
|
227
228
|
<span class="cline-any cline-neutral"> </span>
|
|
228
|
-
<span class="cline-any cline-yes">6x</span>
|
|
229
229
|
<span class="cline-any cline-neutral"> </span>
|
|
230
230
|
<span class="cline-any cline-neutral"> </span>
|
|
231
|
+
<span class="cline-any cline-yes">28x</span>
|
|
231
232
|
<span class="cline-any cline-neutral"> </span>
|
|
232
|
-
<span class="cline-any cline-yes">14x</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">14x</span>
|
|
236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
235
237
|
<span class="cline-any cline-neutral"> </span>
|
|
236
|
-
<span class="cline-any cline-yes">5x</span>
|
|
237
238
|
<span class="cline-any cline-neutral"> </span>
|
|
239
|
+
<span class="cline-any cline-yes">7x</span>
|
|
238
240
|
<span class="cline-any cline-neutral"> </span>
|
|
239
241
|
<span class="cline-any cline-neutral"> </span>
|
|
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
242
|
<span class="cline-any cline-neutral"> </span>
|
|
244
|
-
<span class="cline-any cline-yes">
|
|
243
|
+
<span class="cline-any cline-yes">7x</span>
|
|
244
|
+
<span class="cline-any cline-yes">26x</span>
|
|
245
245
|
<span class="cline-any cline-neutral"> </span>
|
|
246
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">export type LogLevel = "
|
|
246
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">export type LogLevel = "fatal" | "error" | "warn" | "info" | "debug";
|
|
247
247
|
|
|
248
248
|
export type LogMessage = string;
|
|
249
249
|
|
|
@@ -254,60 +254,63 @@ export interface LogDetails {
|
|
|
254
254
|
export type LogHandler = (level: LogLevel, message: LogMessage, details?: LogDetails) => void;
|
|
255
255
|
|
|
256
256
|
export interface CreateLoggerOptions {
|
|
257
|
-
|
|
257
|
+
level?: LogLevel;
|
|
258
258
|
handler?: LogHandler;
|
|
259
259
|
}
|
|
260
260
|
|
|
261
261
|
export const loggerPrefix = "[Featurevisor]";
|
|
262
262
|
|
|
263
|
-
export const defaultLogLevels: LogLevel[] = [
|
|
264
|
-
// supported, but not enabled by default
|
|
265
|
-
// "debug",
|
|
266
|
-
// "info",
|
|
267
|
-
|
|
268
|
-
// enabled by default
|
|
269
|
-
"warn",
|
|
270
|
-
"error",
|
|
271
|
-
];
|
|
272
|
-
|
|
273
263
|
export const defaultLogHandler: LogHandler = function defaultLogHandler(
|
|
274
264
|
level,
|
|
275
265
|
message,
|
|
276
266
|
details = {},
|
|
277
267
|
) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
console.warn(loggerPrefix, message, details);
|
|
287
|
-
break;
|
|
288
|
-
case "error":
|
|
289
|
-
console.error(loggerPrefix, message, details);
|
|
290
|
-
break;
|
|
268
|
+
let method = "log";
|
|
269
|
+
|
|
270
|
+
if (level === "info") {
|
|
271
|
+
method = "info";
|
|
272
|
+
} else if (level === "warn") {
|
|
273
|
+
method = "warn";
|
|
274
|
+
} else if (level === "error") {
|
|
275
|
+
method = "error";
|
|
291
276
|
}
|
|
277
|
+
|
|
278
|
+
console[method](loggerPrefix, message, details);
|
|
292
279
|
};
|
|
293
280
|
|
|
294
281
|
export class Logger {
|
|
295
|
-
|
|
282
|
+
static allLevels: LogLevel[] = [
|
|
283
|
+
"fatal",
|
|
284
|
+
"error",
|
|
285
|
+
"warn",
|
|
286
|
+
"info",
|
|
287
|
+
|
|
288
|
+
// not enabled by default
|
|
289
|
+
"debug",
|
|
290
|
+
];
|
|
291
|
+
|
|
292
|
+
static defaultLevel: LogLevel = "info";
|
|
293
|
+
|
|
294
|
+
private level: LogLevel;
|
|
296
295
|
private handle: LogHandler;
|
|
297
296
|
|
|
298
297
|
constructor(options: CreateLoggerOptions) {
|
|
299
|
-
this.
|
|
300
|
-
this.handle = options.handler
|
|
298
|
+
this.level = options.level || Logger.defaultLevel;
|
|
299
|
+
this.handle = options.handler || defaultLogHandler;
|
|
301
300
|
}
|
|
302
301
|
|
|
303
|
-
|
|
304
|
-
this.
|
|
302
|
+
setLevel(level: LogLevel) {
|
|
303
|
+
this.level = level;
|
|
305
304
|
}
|
|
306
305
|
|
|
307
306
|
log(level: LogLevel, message: LogMessage, details?: LogDetails) {
|
|
308
|
-
|
|
309
|
-
|
|
307
|
+
const shouldHandle = Logger.allLevels.indexOf(this.level) >= Logger.allLevels.indexOf(level);
|
|
308
|
+
|
|
309
|
+
if (!shouldHandle) {
|
|
310
|
+
return;
|
|
310
311
|
}
|
|
312
|
+
|
|
313
|
+
this.handle(level, message, details);
|
|
311
314
|
}
|
|
312
315
|
|
|
313
316
|
debug(message: LogMessage, details?: LogDetails) {
|
|
@@ -328,10 +331,7 @@ export class Logger {
|
|
|
328
331
|
}
|
|
329
332
|
|
|
330
333
|
export function createLogger(options: CreateLoggerOptions = {}): Logger {
|
|
331
|
-
|
|
332
|
-
const logHandler = options.handler || defaultLogHandler;
|
|
333
|
-
|
|
334
|
-
return new Logger({ levels, handler: logHandler });
|
|
334
|
+
return new Logger(options);
|
|
335
335
|
}
|
|
336
336
|
</pre></td></tr></table></pre>
|
|
337
337
|
|
|
@@ -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-
|
|
343
|
+
at 2025-07-13T22:31:55.309Z
|
|
344
344
|
</div>
|
|
345
345
|
<script src="prettify.js"></script>
|
|
346
346
|
<script>
|