kayvee 3.18.0 → 4.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/README.md +147 -202
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/kayvee.d.ts +12 -0
- package/dist/kayvee.d.ts.map +1 -0
- package/{build/lib → dist}/kayvee.js +17 -30
- package/dist/logger/logger.d.ts +49 -0
- package/dist/logger/logger.d.ts.map +1 -0
- package/{build/lib → dist}/logger/logger.js +91 -83
- package/dist/middleware.d.ts +23 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +196 -0
- package/dist/package.json +89 -0
- package/dist/router/index.d.ts +23 -0
- package/dist/router/index.d.ts.map +1 -0
- package/{build/lib → dist}/router/index.js +33 -45
- package/package.json +63 -27
- package/.circleci/config.yml +0 -25
- package/.eslintrc.js +0 -124
- package/.github/workflows/notify-ci-status.yml +0 -20
- package/.nvmrc +0 -1
- package/.prettierrc.json +0 -1
- package/Makefile +0 -55
- package/benchmarks/data/.keep +0 -1
- package/benchmarks/data/corpus-basic.json +0 -22
- package/benchmarks/data/corpus-pathological.json +0 -22
- package/benchmarks/data/corpus-realistic.json +0 -22
- package/benchmarks/data/kvconfig-basic.yml +0 -7
- package/benchmarks/data/kvconfig-pathological.yml +0 -222
- package/benchmarks/data/kvconfig-realistic.yml +0 -39
- package/benchmarks/routing.js +0 -116
- package/build/lib/logger/helpers.js +0 -0
- package/build/lib/middleware.js +0 -274
- package/build/package.json +0 -53
- package/build/test/context_logger.js +0 -69
- package/build/test/kayvee.js +0 -36
- package/build/test/logger_test.js +0 -345
- package/build/test/middleware.js +0 -556
- package/build/test/router.js +0 -451
- package/index.js +0 -7
- package/lib/kayvee.ts +0 -73
- package/lib/logger/helpers.ts +0 -0
- package/lib/logger/logger.ts +0 -312
- package/lib/middleware.ts +0 -317
- package/lib/router/index.ts +0 -234
- package/lib/router/schema_definitions.json +0 -158
- package/test/context_logger.ts +0 -76
- package/test/kayvee.ts +0 -50
- package/test/kvconfig.yml +0 -14
- package/test/logger_test.ts +0 -378
- package/test/middleware.ts +0 -632
- package/test/router.ts +0 -558
- package/test/static/empty.css +0 -0
- package/test/static/js/empty.js +0 -0
- package/test/tests.json +0 -100
- package/tsconfig.json +0 -10
- /package/{build/lib → dist}/router/schema_definitions.json +0 -0
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
var KayveeLogger = require("../lib/logger/logger");
|
|
2
|
-
var assert = require("assert");
|
|
3
|
-
let sample = "";
|
|
4
|
-
function outputFunc(text) {
|
|
5
|
-
sample = text;
|
|
6
|
-
return sample;
|
|
7
|
-
}
|
|
8
|
-
describe("logger_test", () => {
|
|
9
|
-
let logObj = null;
|
|
10
|
-
let logObj2 = null;
|
|
11
|
-
beforeEach(() => {
|
|
12
|
-
logObj = new KayveeLogger("logger-tester");
|
|
13
|
-
sample = "";
|
|
14
|
-
return logObj.setOutput(outputFunc);
|
|
15
|
-
});
|
|
16
|
-
describe(".constructor", () => {
|
|
17
|
-
it("passing in parameters to constructor", () => {
|
|
18
|
-
const formatter = (data) => `${data.level}.${data.source}.${data.title}`;
|
|
19
|
-
logObj = new KayveeLogger("logger-test", KayveeLogger.Info, formatter, outputFunc);
|
|
20
|
-
logObj.debug("testlogdebug");
|
|
21
|
-
let expected = "";
|
|
22
|
-
assert.equal(sample, expected);
|
|
23
|
-
logObj.info("testloginfo");
|
|
24
|
-
expected = `${KayveeLogger.Info}.logger-test.testloginfo`;
|
|
25
|
-
assert.equal(sample, expected);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
describe(".validateloglvl", () => {
|
|
29
|
-
// Explicit validation checks
|
|
30
|
-
it("is case-insensitive in log level name", () => {
|
|
31
|
-
let logLvl = logObj._validateLogLvl("debug");
|
|
32
|
-
assert.equal(logLvl, KayveeLogger.Debug);
|
|
33
|
-
logLvl = logObj._validateLogLvl("Debug");
|
|
34
|
-
assert.equal(logLvl, KayveeLogger.Debug);
|
|
35
|
-
});
|
|
36
|
-
it("sets non-default log levels", () => {
|
|
37
|
-
let logLvl = logObj._validateLogLvl("info");
|
|
38
|
-
assert.equal(logLvl, KayveeLogger.Info);
|
|
39
|
-
// TODO: for each possible log level ...
|
|
40
|
-
logLvl = logObj._validateLogLvl("critical");
|
|
41
|
-
assert.equal(logLvl, KayveeLogger.Critical);
|
|
42
|
-
});
|
|
43
|
-
it("sets level to Debug, if given an invalid log level", () => {
|
|
44
|
-
const logLvl = logObj._validateLogLvl("sometest");
|
|
45
|
-
assert.equal(logLvl, KayveeLogger.Debug);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
describe(".invalidlog", () => {
|
|
49
|
-
it("check valid debug level JSON output of invalid log level", () => {
|
|
50
|
-
// Invalid log levels will default to debug
|
|
51
|
-
logObj.setLogLevel("invalidloglevel");
|
|
52
|
-
logObj.debug("testlogdebug");
|
|
53
|
-
let expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester", "level": "${KayveeLogger.Debug}", "title": "testlogdebug"}`;
|
|
54
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
55
|
-
logObj.setLogLevel("sometest");
|
|
56
|
-
logObj.info("testloginfo");
|
|
57
|
-
expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester", "level": "${KayveeLogger.Info}", "title": "testloginfo"}`;
|
|
58
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
describe(".debug", () => {
|
|
62
|
-
it("test debug function", () => {
|
|
63
|
-
logObj.debug("testlogdebug");
|
|
64
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester", "level": "${KayveeLogger.Debug}", "title": "testlogdebug"}`;
|
|
65
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
66
|
-
});
|
|
67
|
-
it("test debugD function", () => {
|
|
68
|
-
logObj.debugD("testlogdebug", { key1: "val1", key2: "val2" });
|
|
69
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester",
|
|
70
|
-
"level": "${KayveeLogger.Debug}", "title": "testlogdebug","key1": "val1", "key2": "val2"}`;
|
|
71
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
describe(".info", () => {
|
|
75
|
-
it("test info function", () => {
|
|
76
|
-
logObj.info("testloginfo");
|
|
77
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester", "level": "${KayveeLogger.Info}", "title": "testloginfo"}`;
|
|
78
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
79
|
-
});
|
|
80
|
-
it("test infoD function", () => {
|
|
81
|
-
logObj.infoD("testloginfo", { key1: "val1", key2: "val2" });
|
|
82
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester",
|
|
83
|
-
"level": "${KayveeLogger.Info}", "title": "testloginfo","key1": "val1", "key2": "val2"}`;
|
|
84
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
describe(".warning", () => {
|
|
88
|
-
it("test warn function", () => {
|
|
89
|
-
logObj.warn("testlogwarning");
|
|
90
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester", "level": "${KayveeLogger.Warning}", "title": "testlogwarning"}`;
|
|
91
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
92
|
-
});
|
|
93
|
-
it("test warnD function", () => {
|
|
94
|
-
logObj.warnD("testlogwarning", { key1: "val1", key2: "val2" });
|
|
95
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester",
|
|
96
|
-
"level": "${KayveeLogger.Warning}", "title": "testlogwarning","key1": "val1", "key2": "val2"}`;
|
|
97
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
describe(".error", () => {
|
|
101
|
-
it("test error function", () => {
|
|
102
|
-
logObj.error("testlogerror");
|
|
103
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester", "level": "${KayveeLogger.Error}", "title": "testlogerror"}`;
|
|
104
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
105
|
-
});
|
|
106
|
-
it("test errorD function", () => {
|
|
107
|
-
logObj.errorD("testlogerror", { key1: "val1", key2: "val2" });
|
|
108
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester",
|
|
109
|
-
"level": "${KayveeLogger.Error}", "title": "testlogerror","key1": "val1", "key2": "val2"}`;
|
|
110
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
describe(".critical", () => {
|
|
114
|
-
it("test critical function", () => {
|
|
115
|
-
logObj.critical("testlogcritical");
|
|
116
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester", "level": "${KayveeLogger.Critical}", "title": "testlogcritical"}`;
|
|
117
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
118
|
-
});
|
|
119
|
-
it("test criticalD function", () => {
|
|
120
|
-
logObj.criticalD("testlogcritical", { key1: "val1", key2: "val2" });
|
|
121
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester",
|
|
122
|
-
"level": "${KayveeLogger.Critical}", "title": "testlogcritical","key1": "val1", "key2": "val2"}`;
|
|
123
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
describe(".counter", () => {
|
|
127
|
-
it("test counter function", () => {
|
|
128
|
-
logObj.counter("testlogcounter");
|
|
129
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester",
|
|
130
|
-
"level": "${KayveeLogger.Info}", "title": "testlogcounter", "type": "counter", "value": 1}`;
|
|
131
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
132
|
-
});
|
|
133
|
-
it("test counterD function", () => {
|
|
134
|
-
logObj.counterD("testlogcounter", 2, { key1: "val1", key2: "val2" });
|
|
135
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester",
|
|
136
|
-
"level": "${KayveeLogger.Info}", "title": "testlogcounter","type": "counter", "value": 2,"key1": "val1",` +
|
|
137
|
-
' "key2": "val2"}';
|
|
138
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
139
|
-
});
|
|
140
|
-
it("test counterD function with overrides", () => {
|
|
141
|
-
logObj.counterD("testlogcounter", 2, { key1: "val1", key2: "val2", value: 18 });
|
|
142
|
-
const expected = {
|
|
143
|
-
deploy_env: "testing",
|
|
144
|
-
wf_id: "abc",
|
|
145
|
-
source: "logger-tester",
|
|
146
|
-
level: KayveeLogger.Info,
|
|
147
|
-
title: "testlogcounter",
|
|
148
|
-
type: "counter",
|
|
149
|
-
value: 18,
|
|
150
|
-
key1: "val1",
|
|
151
|
-
key2: "val2",
|
|
152
|
-
};
|
|
153
|
-
assert.deepEqual(JSON.parse(sample), expected);
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
describe(".gauge", () => {
|
|
157
|
-
it("test gauge function", () => {
|
|
158
|
-
logObj.gauge("testloggauge", 0);
|
|
159
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester",
|
|
160
|
-
"level": "${KayveeLogger.Info}", "title": "testloggauge", "type": "gauge", "value": 0}`;
|
|
161
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
162
|
-
});
|
|
163
|
-
it("test gaugeD function", () => {
|
|
164
|
-
logObj.gaugeD("testloggauge", 4, { key1: "val1", key2: "val2" });
|
|
165
|
-
const expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester",
|
|
166
|
-
"level": "${KayveeLogger.Info}", "title": "testloggauge", "type": "gauge", "value": 4, "key1": "val1", "key2": "val2"}`;
|
|
167
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(expected));
|
|
168
|
-
});
|
|
169
|
-
it("test gaugeD function with overrids", () => {
|
|
170
|
-
logObj.gaugeD("testloggauge", 4, { key1: "val1", key2: "val2", value: 18 });
|
|
171
|
-
const expected = {
|
|
172
|
-
deploy_env: "testing",
|
|
173
|
-
wf_id: "abc",
|
|
174
|
-
source: "logger-tester",
|
|
175
|
-
level: KayveeLogger.Info,
|
|
176
|
-
title: "testloggauge",
|
|
177
|
-
type: "gauge",
|
|
178
|
-
value: 18,
|
|
179
|
-
key1: "val1",
|
|
180
|
-
key2: "val2",
|
|
181
|
-
};
|
|
182
|
-
assert.deepEqual(JSON.parse(sample), expected);
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
describe(".diffoutput", () => {
|
|
186
|
-
it("output to different output functions using same logger", () => {
|
|
187
|
-
logObj.info("testloginfo");
|
|
188
|
-
const infoLog = sample;
|
|
189
|
-
let output2 = "";
|
|
190
|
-
const outputFunc2 = (text) => {
|
|
191
|
-
output2 = text;
|
|
192
|
-
return output2;
|
|
193
|
-
};
|
|
194
|
-
logObj.setOutput(outputFunc2);
|
|
195
|
-
logObj.warn("testlogwarning");
|
|
196
|
-
assert.deepEqual(JSON.parse(infoLog), JSON.parse(sample));
|
|
197
|
-
assert.notDeepEqual(JSON.parse(output2), JSON.parse(sample));
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
describe(".nomodifydata", () => {
|
|
201
|
-
before(() => {
|
|
202
|
-
logObj.setOutput(outputFunc);
|
|
203
|
-
});
|
|
204
|
-
it("does not modify data", () => {
|
|
205
|
-
const data = {
|
|
206
|
-
str: "modify",
|
|
207
|
-
obj: {
|
|
208
|
-
key: "value",
|
|
209
|
-
},
|
|
210
|
-
fun: "boo",
|
|
211
|
-
};
|
|
212
|
-
// not using deepClone since that's what we are
|
|
213
|
-
// somewhat testing
|
|
214
|
-
const dataCopy = {
|
|
215
|
-
str: "modify",
|
|
216
|
-
obj: {
|
|
217
|
-
key: "value",
|
|
218
|
-
},
|
|
219
|
-
fun: "boo",
|
|
220
|
-
};
|
|
221
|
-
logObj.infoD("testInfoWithData", data);
|
|
222
|
-
assert.deepEqual(data, dataCopy);
|
|
223
|
-
const output = {
|
|
224
|
-
deploy_env: "testing",
|
|
225
|
-
wf_id: "abc",
|
|
226
|
-
fun: "boo",
|
|
227
|
-
level: "info",
|
|
228
|
-
obj: {
|
|
229
|
-
key: "value",
|
|
230
|
-
},
|
|
231
|
-
source: "logger-tester",
|
|
232
|
-
title: "testInfoWithData",
|
|
233
|
-
str: "modify",
|
|
234
|
-
};
|
|
235
|
-
assert.deepEqual(JSON.parse(sample), output);
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
describe(".hiddenlog", () => {
|
|
239
|
-
describe(".logwarning", () => {
|
|
240
|
-
beforeEach(() => logObj.setLogLevel(KayveeLogger.Warning));
|
|
241
|
-
it("empty cases due to log level", () => {
|
|
242
|
-
logObj.debug("testlogdebug");
|
|
243
|
-
assert.equal(sample, "");
|
|
244
|
-
logObj.info("testloginfo");
|
|
245
|
-
assert.equal(sample, "");
|
|
246
|
-
});
|
|
247
|
-
it("not empty cases due to log level", () => {
|
|
248
|
-
logObj.warn("testlogwarning");
|
|
249
|
-
assert.notDeepEqual(JSON.parse(sample), "");
|
|
250
|
-
logObj.error("testlogerror");
|
|
251
|
-
assert.notDeepEqual(JSON.parse(sample), "");
|
|
252
|
-
logObj.critical("testlogcritical");
|
|
253
|
-
assert.notDeepEqual(JSON.parse(sample), "");
|
|
254
|
-
});
|
|
255
|
-
});
|
|
256
|
-
return describe(".logcritical", () => {
|
|
257
|
-
beforeEach(() => {
|
|
258
|
-
logObj.setLogLevel(KayveeLogger.Critical);
|
|
259
|
-
});
|
|
260
|
-
it("empty cases due to log level", () => {
|
|
261
|
-
logObj.debug("testlogdebug");
|
|
262
|
-
assert.equal(sample, "");
|
|
263
|
-
logObj.info("testloginfo");
|
|
264
|
-
assert.equal(sample, "");
|
|
265
|
-
logObj.warn("testlogwarning");
|
|
266
|
-
assert.equal(sample, "");
|
|
267
|
-
logObj.error("testlogerror");
|
|
268
|
-
assert.equal(sample, "");
|
|
269
|
-
});
|
|
270
|
-
it("not empty cases due to log level", () => {
|
|
271
|
-
logObj.critical("testlogcritical");
|
|
272
|
-
assert.notDeepEqual(JSON.parse(sample), "");
|
|
273
|
-
});
|
|
274
|
-
});
|
|
275
|
-
});
|
|
276
|
-
describe(".diffformat", () => {
|
|
277
|
-
it("use a different formatter than KV", () => {
|
|
278
|
-
const testFormatter = () => '"This is a test"';
|
|
279
|
-
logObj.setFormatter(testFormatter);
|
|
280
|
-
logObj.warn("testlogwarning");
|
|
281
|
-
assert.deepEqual(JSON.parse(sample), "This is a test");
|
|
282
|
-
});
|
|
283
|
-
});
|
|
284
|
-
describe("global overrides", () => {
|
|
285
|
-
it("what data has source prop", () => {
|
|
286
|
-
logObj.warnD("global-override", { source: "overrided" });
|
|
287
|
-
const output = {
|
|
288
|
-
deploy_env: "testing",
|
|
289
|
-
wf_id: "abc",
|
|
290
|
-
title: "global-override",
|
|
291
|
-
source: "overrided",
|
|
292
|
-
level: "warning",
|
|
293
|
-
};
|
|
294
|
-
assert.deepEqual(JSON.parse(sample), output);
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
return describe(".multipleloggers", () => {
|
|
298
|
-
before(() => {
|
|
299
|
-
logObj2 = new KayveeLogger("logger-tester2");
|
|
300
|
-
return logObj2;
|
|
301
|
-
});
|
|
302
|
-
it("log to same output buffer", () => {
|
|
303
|
-
logObj2.setOutput(outputFunc);
|
|
304
|
-
logObj.warn("testlogwarning");
|
|
305
|
-
const output1 = sample;
|
|
306
|
-
logObj2.info("testloginfo");
|
|
307
|
-
assert.notDeepEqual(JSON.parse(sample), JSON.parse(output1));
|
|
308
|
-
});
|
|
309
|
-
it("log to different output buffer", () => {
|
|
310
|
-
let output2 = "";
|
|
311
|
-
const outputFunc2 = (text) => {
|
|
312
|
-
output2 = text;
|
|
313
|
-
return output2;
|
|
314
|
-
};
|
|
315
|
-
logObj2.setOutput(outputFunc2);
|
|
316
|
-
logObj.warn("testlogwarning");
|
|
317
|
-
logObj2.info("testloginfo");
|
|
318
|
-
const loggerExpected = `
|
|
319
|
-
{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester", "level": "${KayveeLogger.Warning}", "title": "testlogwarning"}
|
|
320
|
-
`;
|
|
321
|
-
assert.deepEqual(JSON.parse(sample), JSON.parse(loggerExpected));
|
|
322
|
-
const logger2Expected = `{"deploy_env": "testing", "wf_id": "abc", "source": "logger-tester2", "level": "${KayveeLogger.Info}", "title": "testloginfo"}`;
|
|
323
|
-
assert.deepEqual(JSON.parse(output2), JSON.parse(logger2Expected));
|
|
324
|
-
});
|
|
325
|
-
});
|
|
326
|
-
});
|
|
327
|
-
describe("mockRouting", () => {
|
|
328
|
-
it("can override routing from setGlobalRouting, and captures routed logs", () => {
|
|
329
|
-
const logObj = new KayveeLogger("test-source");
|
|
330
|
-
KayveeLogger.mockRouting((kvdone) => {
|
|
331
|
-
KayveeLogger.setGlobalRouting("test/kvconfig.yml");
|
|
332
|
-
logObj.info("foo-title");
|
|
333
|
-
const ruleMatches = kvdone();
|
|
334
|
-
// should match one log
|
|
335
|
-
assert.equal(ruleMatches["rule-two"].length, 1);
|
|
336
|
-
// matched log should look like so
|
|
337
|
-
const expectedRule = {
|
|
338
|
-
type: "analytics",
|
|
339
|
-
series: "requests.everything",
|
|
340
|
-
rule: "rule-two",
|
|
341
|
-
};
|
|
342
|
-
assert.deepEqual(ruleMatches["rule-two"][0], expectedRule);
|
|
343
|
-
});
|
|
344
|
-
});
|
|
345
|
-
});
|