@featurevisor/sdk 0.47.3 → 0.47.5
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 +16 -0
- package/coverage/clover.xml +45 -45
- package/coverage/coverage-final.json +2 -2
- 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 +1 -1
- package/coverage/lcov-report/emitter.ts.html +30 -30
- package/coverage/lcov-report/feature.ts.html +1 -1
- package/coverage/lcov-report/index.html +31 -31
- package/coverage/lcov-report/instance.ts.html +1 -1
- package/coverage/lcov-report/logger.ts.html +51 -51
- package/coverage/lcov-report/segments.ts.html +1 -1
- package/coverage/lcov.info +75 -75
- package/dist/index.js.gz +0 -0
- package/lib/emitter.spec.d.ts +1 -0
- package/lib/logger.spec.d.ts +1 -0
- package/package.json +2 -2
- package/src/emitter.spec.ts +100 -0
- package/src/logger.spec.ts +154 -0
package/coverage/lcov.info
CHANGED
|
@@ -237,42 +237,42 @@ FN:38,(anonymous_4)
|
|
|
237
237
|
FN:44,(anonymous_5)
|
|
238
238
|
FN:49,(anonymous_6)
|
|
239
239
|
FNF:7
|
|
240
|
-
FNH:
|
|
241
|
-
FNDA:
|
|
242
|
-
FNDA:
|
|
243
|
-
FNDA:
|
|
244
|
-
FNDA:
|
|
245
|
-
FNDA:
|
|
240
|
+
FNH:7
|
|
241
|
+
FNDA:25,(anonymous_0)
|
|
242
|
+
FNDA:20,(anonymous_1)
|
|
243
|
+
FNDA:7,(anonymous_2)
|
|
244
|
+
FNDA:2,(anonymous_3)
|
|
245
|
+
FNDA:2,(anonymous_4)
|
|
246
246
|
FNDA:14,(anonymous_5)
|
|
247
247
|
FNDA:6,(anonymous_6)
|
|
248
|
-
DA:7,
|
|
249
|
-
DA:11,
|
|
250
|
-
DA:15,
|
|
251
|
-
DA:16,
|
|
252
|
-
DA:19,
|
|
253
|
-
DA:23,
|
|
254
|
-
DA:24,
|
|
255
|
-
DA:27,
|
|
256
|
-
DA:29,
|
|
257
|
-
DA:30,
|
|
258
|
-
DA:35,
|
|
259
|
-
DA:36,
|
|
260
|
-
DA:38,
|
|
261
|
-
DA:39,
|
|
248
|
+
DA:7,2
|
|
249
|
+
DA:11,25
|
|
250
|
+
DA:15,20
|
|
251
|
+
DA:16,17
|
|
252
|
+
DA:19,20
|
|
253
|
+
DA:23,7
|
|
254
|
+
DA:24,1
|
|
255
|
+
DA:27,6
|
|
256
|
+
DA:29,6
|
|
257
|
+
DA:30,6
|
|
258
|
+
DA:35,2
|
|
259
|
+
DA:36,1
|
|
260
|
+
DA:38,1
|
|
261
|
+
DA:39,2
|
|
262
262
|
DA:45,14
|
|
263
263
|
DA:46,9
|
|
264
264
|
DA:49,5
|
|
265
265
|
DA:50,6
|
|
266
266
|
LF:18
|
|
267
|
-
LH:
|
|
268
|
-
BRDA:15,0,0,
|
|
269
|
-
BRDA:23,1,0,
|
|
270
|
-
BRDA:29,2,0,
|
|
271
|
-
BRDA:35,3,0,
|
|
272
|
-
BRDA:35,3,1,
|
|
267
|
+
LH:18
|
|
268
|
+
BRDA:15,0,0,17
|
|
269
|
+
BRDA:23,1,0,1
|
|
270
|
+
BRDA:29,2,0,6
|
|
271
|
+
BRDA:35,3,0,1
|
|
272
|
+
BRDA:35,3,1,1
|
|
273
273
|
BRDA:45,4,0,9
|
|
274
274
|
BRF:6
|
|
275
|
-
BRH:
|
|
275
|
+
BRH:6
|
|
276
276
|
end_of_record
|
|
277
277
|
TN:
|
|
278
278
|
SF:src/feature.ts
|
|
@@ -1077,57 +1077,57 @@ FN:76,(anonymous_6)
|
|
|
1077
1077
|
FN:80,(anonymous_7)
|
|
1078
1078
|
FN:85,createLogger
|
|
1079
1079
|
FNF:9
|
|
1080
|
-
FNH:
|
|
1081
|
-
FNDA:
|
|
1082
|
-
FNDA:
|
|
1083
|
-
FNDA:
|
|
1084
|
-
FNDA:
|
|
1085
|
-
FNDA:
|
|
1086
|
-
FNDA:
|
|
1087
|
-
FNDA:
|
|
1088
|
-
FNDA:
|
|
1089
|
-
FNDA:
|
|
1090
|
-
DA:16,
|
|
1091
|
-
DA:18,
|
|
1092
|
-
DA:28,
|
|
1093
|
-
DA:33,
|
|
1094
|
-
DA:35,
|
|
1095
|
-
DA:36,
|
|
1096
|
-
DA:38,
|
|
1097
|
-
DA:39,
|
|
1098
|
-
DA:41,
|
|
1099
|
-
DA:42,
|
|
1100
|
-
DA:44,
|
|
1101
|
-
DA:45,
|
|
1102
|
-
DA:49,
|
|
1103
|
-
DA:54,
|
|
1104
|
-
DA:55,
|
|
1105
|
-
DA:59,
|
|
1106
|
-
DA:63,
|
|
1107
|
-
DA:64,
|
|
1108
|
-
DA:69,
|
|
1109
|
-
DA:73,
|
|
1110
|
-
DA:77,
|
|
1111
|
-
DA:81,
|
|
1112
|
-
DA:85,
|
|
1113
|
-
DA:86,
|
|
1114
|
-
DA:87,
|
|
1115
|
-
DA:89,
|
|
1080
|
+
FNH:9
|
|
1081
|
+
FNDA:4,defaultLogHandler
|
|
1082
|
+
FNDA:22,(anonymous_1)
|
|
1083
|
+
FNDA:1,(anonymous_2)
|
|
1084
|
+
FNDA:55,(anonymous_3)
|
|
1085
|
+
FNDA:38,(anonymous_4)
|
|
1086
|
+
FNDA:6,(anonymous_5)
|
|
1087
|
+
FNDA:6,(anonymous_6)
|
|
1088
|
+
FNDA:5,(anonymous_7)
|
|
1089
|
+
FNDA:22,createLogger
|
|
1090
|
+
DA:16,2
|
|
1091
|
+
DA:18,2
|
|
1092
|
+
DA:28,2
|
|
1093
|
+
DA:33,4
|
|
1094
|
+
DA:35,1
|
|
1095
|
+
DA:36,1
|
|
1096
|
+
DA:38,1
|
|
1097
|
+
DA:39,1
|
|
1098
|
+
DA:41,1
|
|
1099
|
+
DA:42,1
|
|
1100
|
+
DA:44,1
|
|
1101
|
+
DA:45,1
|
|
1102
|
+
DA:49,2
|
|
1103
|
+
DA:54,22
|
|
1104
|
+
DA:55,22
|
|
1105
|
+
DA:59,1
|
|
1106
|
+
DA:63,55
|
|
1107
|
+
DA:64,17
|
|
1108
|
+
DA:69,38
|
|
1109
|
+
DA:73,6
|
|
1110
|
+
DA:77,6
|
|
1111
|
+
DA:81,5
|
|
1112
|
+
DA:85,2
|
|
1113
|
+
DA:86,22
|
|
1114
|
+
DA:87,22
|
|
1115
|
+
DA:89,22
|
|
1116
1116
|
LF:26
|
|
1117
|
-
LH:
|
|
1118
|
-
BRDA:31,0,0,
|
|
1119
|
-
BRDA:33,1,0,
|
|
1120
|
-
BRDA:33,1,1,
|
|
1121
|
-
BRDA:33,1,2,
|
|
1122
|
-
BRDA:33,1,3,
|
|
1123
|
-
BRDA:63,2,0,
|
|
1117
|
+
LH:26
|
|
1118
|
+
BRDA:31,0,0,4
|
|
1119
|
+
BRDA:33,1,0,1
|
|
1120
|
+
BRDA:33,1,1,1
|
|
1121
|
+
BRDA:33,1,2,1
|
|
1122
|
+
BRDA:33,1,3,1
|
|
1123
|
+
BRDA:63,2,0,17
|
|
1124
1124
|
BRDA:85,3,0,16
|
|
1125
|
-
BRDA:86,4,0,
|
|
1126
|
-
BRDA:86,4,1,
|
|
1127
|
-
BRDA:87,5,0,
|
|
1128
|
-
BRDA:87,5,1,
|
|
1125
|
+
BRDA:86,4,0,22
|
|
1126
|
+
BRDA:86,4,1,18
|
|
1127
|
+
BRDA:87,5,0,22
|
|
1128
|
+
BRDA:87,5,1,17
|
|
1129
1129
|
BRF:11
|
|
1130
|
-
BRH:
|
|
1130
|
+
BRH:11
|
|
1131
1131
|
end_of_record
|
|
1132
1132
|
TN:
|
|
1133
1133
|
SF:src/segments.ts
|
package/dist/index.js.gz
CHANGED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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.5",
|
|
4
4
|
"description": "Featurevisor SDK for Node.js and the browser",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"compare-versions": "^6.0.0-rc.1",
|
|
50
50
|
"murmurhash": "^2.0.1"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "150079539789fe0b61fa78dd9337788a4c176cb2"
|
|
53
53
|
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Emitter } from "./emitter";
|
|
2
|
+
|
|
3
|
+
describe("sdk :: Emitter", () => {
|
|
4
|
+
let emitter: Emitter;
|
|
5
|
+
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
emitter = new Emitter();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
describe("addListener", () => {
|
|
11
|
+
it("should add a listener", () => {
|
|
12
|
+
const fn = jest.fn();
|
|
13
|
+
|
|
14
|
+
emitter.addListener("ready", fn);
|
|
15
|
+
|
|
16
|
+
expect(emitter["_listeners"]["ready"]).toEqual([fn]);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("should add multiple listeners", () => {
|
|
20
|
+
const fn1 = jest.fn();
|
|
21
|
+
const fn2 = jest.fn();
|
|
22
|
+
|
|
23
|
+
emitter.addListener("ready", fn1);
|
|
24
|
+
emitter.addListener("ready", fn2);
|
|
25
|
+
|
|
26
|
+
expect(emitter["_listeners"]["ready"]).toEqual([fn1, fn2]);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("should add multiple listeners for different events", () => {
|
|
30
|
+
const fn1 = jest.fn();
|
|
31
|
+
const fn2 = jest.fn();
|
|
32
|
+
|
|
33
|
+
emitter.addListener("ready", fn1);
|
|
34
|
+
emitter.addListener("update", fn2);
|
|
35
|
+
|
|
36
|
+
expect(emitter["_listeners"]["ready"]).toEqual([fn1]);
|
|
37
|
+
expect(emitter["_listeners"]["update"]).toEqual([fn2]);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe("removeListener", () => {
|
|
42
|
+
it("should remove a listener", () => {
|
|
43
|
+
const fn = jest.fn();
|
|
44
|
+
|
|
45
|
+
emitter.addListener("ready", fn);
|
|
46
|
+
emitter.removeListener("ready", fn);
|
|
47
|
+
emitter.removeListener("update", fn);
|
|
48
|
+
|
|
49
|
+
expect(emitter["_listeners"]["ready"]).toEqual([]);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it("should remove multiple listeners", () => {
|
|
53
|
+
const fn1 = jest.fn();
|
|
54
|
+
const fn2 = jest.fn();
|
|
55
|
+
|
|
56
|
+
emitter.addListener("ready", fn1);
|
|
57
|
+
emitter.addListener("ready", fn2);
|
|
58
|
+
emitter.removeListener("ready", fn1);
|
|
59
|
+
emitter.removeListener("ready", fn2);
|
|
60
|
+
|
|
61
|
+
expect(emitter["_listeners"]["ready"]).toEqual([]);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it("should remove multiple listeners for different events", () => {
|
|
65
|
+
const fn1 = jest.fn();
|
|
66
|
+
const fn2 = jest.fn();
|
|
67
|
+
|
|
68
|
+
emitter.addListener("ready", fn1);
|
|
69
|
+
emitter.addListener("update", fn2);
|
|
70
|
+
emitter.removeListener("ready", fn1);
|
|
71
|
+
emitter.removeListener("update", fn2);
|
|
72
|
+
|
|
73
|
+
expect(emitter["_listeners"]["ready"]).toEqual([]);
|
|
74
|
+
expect(emitter["_listeners"]["update"]).toEqual([]);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
describe("removeAllListeners", () => {
|
|
79
|
+
it("should remove all listeners", () => {
|
|
80
|
+
const fn1 = jest.fn();
|
|
81
|
+
const fn2 = jest.fn();
|
|
82
|
+
|
|
83
|
+
emitter.addListener("ready", fn1);
|
|
84
|
+
emitter.addListener("update", fn2);
|
|
85
|
+
emitter.removeAllListeners();
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("should remove all listeners for a specific event", () => {
|
|
89
|
+
const fn1 = jest.fn();
|
|
90
|
+
const fn2 = jest.fn();
|
|
91
|
+
|
|
92
|
+
emitter.addListener("ready", fn1);
|
|
93
|
+
emitter.addListener("update", fn2);
|
|
94
|
+
emitter.removeAllListeners("ready");
|
|
95
|
+
|
|
96
|
+
expect(emitter["_listeners"]["ready"]).toEqual([]);
|
|
97
|
+
expect(emitter["_listeners"]["update"]).toEqual([fn2]);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
});
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/* eslint-disable no-global-assign */
|
|
2
|
+
|
|
3
|
+
import { createLogger } from "./logger";
|
|
4
|
+
|
|
5
|
+
describe("logger", () => {
|
|
6
|
+
it("should log", () => {
|
|
7
|
+
const logger = createLogger({
|
|
8
|
+
levels: ["debug", "info", "warn", "error"],
|
|
9
|
+
handler: jest.fn(),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
logger.debug("debug");
|
|
13
|
+
logger.info("info");
|
|
14
|
+
logger.warn("warn");
|
|
15
|
+
logger.error("error");
|
|
16
|
+
|
|
17
|
+
expect(logger).toBeDefined();
|
|
18
|
+
expect(logger.debug).toBeDefined();
|
|
19
|
+
expect(logger.info).toBeDefined();
|
|
20
|
+
expect(logger.warn).toBeDefined();
|
|
21
|
+
expect(logger.error).toBeDefined();
|
|
22
|
+
expect(logger.setLevels).toBeDefined();
|
|
23
|
+
expect(logger.log).toBeDefined();
|
|
24
|
+
expect(logger.log).toBeInstanceOf(Function);
|
|
25
|
+
expect(logger.debug).toBeInstanceOf(Function);
|
|
26
|
+
expect(logger.info).toBeInstanceOf(Function);
|
|
27
|
+
expect(logger.warn).toBeInstanceOf(Function);
|
|
28
|
+
expect(logger.error).toBeInstanceOf(Function);
|
|
29
|
+
expect(logger.setLevels).toBeInstanceOf(Function);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("should log with custom levels", () => {
|
|
33
|
+
const logger = createLogger({
|
|
34
|
+
levels: ["debug", "info"],
|
|
35
|
+
handler: jest.fn(),
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
logger.debug("debug");
|
|
39
|
+
logger.info("info");
|
|
40
|
+
logger.warn("warn");
|
|
41
|
+
logger.error("error");
|
|
42
|
+
|
|
43
|
+
expect(logger).toBeDefined();
|
|
44
|
+
expect(logger.debug).toBeDefined();
|
|
45
|
+
expect(logger.info).toBeDefined();
|
|
46
|
+
expect(logger.warn).toBeDefined();
|
|
47
|
+
expect(logger.error).toBeDefined();
|
|
48
|
+
expect(logger.setLevels).toBeDefined();
|
|
49
|
+
expect(logger.log).toBeDefined();
|
|
50
|
+
expect(logger.log).toBeInstanceOf(Function);
|
|
51
|
+
expect(logger.debug).toBeInstanceOf(Function);
|
|
52
|
+
expect(logger.info).toBeInstanceOf(Function);
|
|
53
|
+
expect(logger.warn).toBeInstanceOf(Function);
|
|
54
|
+
expect(logger.error).toBeInstanceOf(Function);
|
|
55
|
+
expect(logger.setLevels).toBeInstanceOf(Function);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("should log with default handler", () => {
|
|
59
|
+
const logs: any[] = [];
|
|
60
|
+
|
|
61
|
+
const realConsole = console;
|
|
62
|
+
const customConsole = {
|
|
63
|
+
log: (...args) => logs.push(args),
|
|
64
|
+
info: (...args) => logs.push(args),
|
|
65
|
+
warn: (...args) => logs.push(args),
|
|
66
|
+
error: (...args) => logs.push(args),
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
console = customConsole as unknown as Console; // eslint-ignore-line
|
|
70
|
+
|
|
71
|
+
const logger = createLogger({});
|
|
72
|
+
|
|
73
|
+
logger.setLevels(["debug", "info", "warn", "error"]);
|
|
74
|
+
|
|
75
|
+
logger.debug("debug");
|
|
76
|
+
logger.info("info");
|
|
77
|
+
logger.warn("warn");
|
|
78
|
+
logger.error("error");
|
|
79
|
+
|
|
80
|
+
expect(logger).toBeDefined();
|
|
81
|
+
expect(logger.debug).toBeDefined();
|
|
82
|
+
expect(logger.info).toBeDefined();
|
|
83
|
+
expect(logger.warn).toBeDefined();
|
|
84
|
+
expect(logger.error).toBeDefined();
|
|
85
|
+
expect(logger.setLevels).toBeDefined();
|
|
86
|
+
expect(logger.log).toBeDefined();
|
|
87
|
+
expect(logger.log).toBeInstanceOf(Function);
|
|
88
|
+
expect(logger.debug).toBeInstanceOf(Function);
|
|
89
|
+
expect(logger.info).toBeInstanceOf(Function);
|
|
90
|
+
expect(logger.warn).toBeInstanceOf(Function);
|
|
91
|
+
expect(logger.error).toBeInstanceOf(Function);
|
|
92
|
+
expect(logger.setLevels).toBeInstanceOf(Function);
|
|
93
|
+
|
|
94
|
+
expect(logs.length).toBe(4);
|
|
95
|
+
|
|
96
|
+
console = realConsole; // eslint-ignore-line
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it("should log with custom handler", () => {
|
|
100
|
+
const handler = jest.fn();
|
|
101
|
+
const logger = createLogger({
|
|
102
|
+
levels: ["debug", "info", "warn", "error"],
|
|
103
|
+
handler,
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
logger.debug("debug");
|
|
107
|
+
logger.info("info");
|
|
108
|
+
logger.warn("warn");
|
|
109
|
+
logger.error("error");
|
|
110
|
+
|
|
111
|
+
expect(logger).toBeDefined();
|
|
112
|
+
expect(logger.debug).toBeDefined();
|
|
113
|
+
expect(logger.info).toBeDefined();
|
|
114
|
+
expect(logger.warn).toBeDefined();
|
|
115
|
+
expect(logger.error).toBeDefined();
|
|
116
|
+
expect(logger.setLevels).toBeDefined();
|
|
117
|
+
expect(logger.log).toBeDefined();
|
|
118
|
+
expect(logger.log).toBeInstanceOf(Function);
|
|
119
|
+
expect(logger.debug).toBeInstanceOf(Function);
|
|
120
|
+
expect(logger.info).toBeInstanceOf(Function);
|
|
121
|
+
expect(logger.warn).toBeInstanceOf(Function);
|
|
122
|
+
expect(logger.error).toBeInstanceOf(Function);
|
|
123
|
+
expect(logger.setLevels).toBeInstanceOf(Function);
|
|
124
|
+
expect(handler).toHaveBeenCalledTimes(4);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it("should log with custom levels and handler", () => {
|
|
128
|
+
const handler = jest.fn();
|
|
129
|
+
const logger = createLogger({
|
|
130
|
+
levels: ["debug", "info"],
|
|
131
|
+
handler,
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
logger.debug("debug");
|
|
135
|
+
logger.info("info");
|
|
136
|
+
logger.warn("warn");
|
|
137
|
+
logger.error("error");
|
|
138
|
+
|
|
139
|
+
expect(logger).toBeDefined();
|
|
140
|
+
expect(logger.debug).toBeDefined();
|
|
141
|
+
expect(logger.info).toBeDefined();
|
|
142
|
+
expect(logger.warn).toBeDefined();
|
|
143
|
+
expect(logger.error).toBeDefined();
|
|
144
|
+
expect(logger.setLevels).toBeDefined();
|
|
145
|
+
expect(logger.log).toBeDefined();
|
|
146
|
+
expect(logger.log).toBeInstanceOf(Function);
|
|
147
|
+
expect(logger.debug).toBeInstanceOf(Function);
|
|
148
|
+
expect(logger.info).toBeInstanceOf(Function);
|
|
149
|
+
expect(logger.warn).toBeInstanceOf(Function);
|
|
150
|
+
expect(logger.error).toBeInstanceOf(Function);
|
|
151
|
+
expect(logger.setLevels).toBeInstanceOf(Function);
|
|
152
|
+
expect(handler).toHaveBeenCalledTimes(2);
|
|
153
|
+
});
|
|
154
|
+
});
|