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