@holz/core 0.8.0-rc.1 → 0.8.0-rc.3

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=n=>r=>n.forEach(e=>e(r)),f=(n,r)=>e=>{n(e)&&r(e)},l={fatal:60,error:50,warn:40,info:30,debug:20,trace:10},i=(n,r)=>{const e=(a,c,d={})=>{n({message:c,level:a,origin:r,context:d})},o={owner:r,trace:e.bind(null,l.trace),debug:e.bind(null,l.debug),info:e.bind(null,l.info),warn:e.bind(null,l.warn),error:e.bind(null,l.error),fatal:e.bind(null,l.fatal),namespace:a=>i(n,r.concat(a)),withMiddleware:a=>i(a(n),r)},t={configurable:!1,enumerable:!1};return Object.defineProperties(o,{withMiddleware:t,namespace:t,trace:t,debug:t,info:t,warn:t,error:t,fatal:t})},g=n=>i(n,[]);exports.combine=b;exports.createLogger=g;exports.filter=f;exports.level=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=n=>r=>n.forEach(e=>e(r)),f=(n,r)=>e=>{n(e)&&r(e)},l={fatal:60,error:50,warn:40,info:30,debug:20,trace:10},i=(n,r)=>{const e=(a,c,d={})=>{n({timestamp:Date.now(),message:c,level:a,origin:r,context:d})},o={owner:r,trace:e.bind(null,l.trace),debug:e.bind(null,l.debug),info:e.bind(null,l.info),warn:e.bind(null,l.warn),error:e.bind(null,l.error),fatal:e.bind(null,l.fatal),namespace:a=>i(n,r.concat(a)),withMiddleware:a=>i(a(n),r)},t={configurable:!1,enumerable:!1};return Object.defineProperties(o,{withMiddleware:t,namespace:t,trace:t,debug:t,info:t,warn:t,error:t,fatal:t})},g=n=>i(n,[]);exports.combine=b;exports.createLogger=g;exports.filter=f;exports.level=l;
@@ -64,6 +64,8 @@ export declare const level: {
64
64
 
65
65
  /** A log message where variables are carried as structured data. */
66
66
  export declare interface Log {
67
+ /** Unix timestamp. Includes milliseconds. */
68
+ readonly timestamp: number;
67
69
  /** The verbatim log message. Should not contain interpolated data. */
68
70
  readonly message: string;
69
71
  /** Log severity. One of `levels.*`. */
package/dist/holz-core.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const f = (n) => (r) => n.forEach((e) => e(r)), b = (n, r) => (e) => {
2
2
  n(e) && r(e);
3
- }, l = {
3
+ }, a = {
4
4
  /** A critical failure happened and the program must exit. */
5
5
  fatal: 60,
6
6
  /** Something failed, but we can keep going. */
@@ -14,38 +14,39 @@ const f = (n) => (r) => n.forEach((e) => e(r)), b = (n, r) => (e) => {
14
14
  /** Extremely detailed progress updates (usually hidden). */
15
15
  trace: 10
16
16
  }, i = (n, r) => {
17
- const e = (t, d, c = {}) => {
17
+ const e = (l, d, c = {}) => {
18
18
  n({
19
+ timestamp: Date.now(),
19
20
  message: d,
20
- level: t,
21
+ level: l,
21
22
  origin: r,
22
23
  context: c
23
24
  });
24
25
  }, o = {
25
26
  owner: r,
26
- trace: e.bind(null, l.trace),
27
- debug: e.bind(null, l.debug),
28
- info: e.bind(null, l.info),
29
- warn: e.bind(null, l.warn),
30
- error: e.bind(null, l.error),
31
- fatal: e.bind(null, l.fatal),
32
- namespace: (t) => i(n, r.concat(t)),
33
- withMiddleware: (t) => i(t(n), r)
34
- }, a = { configurable: !1, enumerable: !1 };
27
+ trace: e.bind(null, a.trace),
28
+ debug: e.bind(null, a.debug),
29
+ info: e.bind(null, a.info),
30
+ warn: e.bind(null, a.warn),
31
+ error: e.bind(null, a.error),
32
+ fatal: e.bind(null, a.fatal),
33
+ namespace: (l) => i(n, r.concat(l)),
34
+ withMiddleware: (l) => i(l(n), r)
35
+ }, t = { configurable: !1, enumerable: !1 };
35
36
  return Object.defineProperties(o, {
36
- withMiddleware: a,
37
- namespace: a,
38
- trace: a,
39
- debug: a,
40
- info: a,
41
- warn: a,
42
- error: a,
43
- fatal: a
37
+ withMiddleware: t,
38
+ namespace: t,
39
+ trace: t,
40
+ debug: t,
41
+ info: t,
42
+ warn: t,
43
+ error: t,
44
+ fatal: t
44
45
  });
45
46
  }, u = (n) => i(n, []);
46
47
  export {
47
48
  f as combine,
48
49
  u as createLogger,
49
50
  b as filter,
50
- l as level
51
+ a as level
51
52
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@holz/core",
3
- "version": "0.8.0-rc.1",
3
+ "version": "0.8.0-rc.3",
4
4
  "description": "A structured and composable logger",
5
5
  "type": "module",
6
6
  "repository": {
@@ -1,6 +1,10 @@
1
1
  import { createLogger } from '../logger';
2
2
  import { level } from '../index';
3
3
 
4
+ const SYSTEM_TIME = new Date('2020-06-15T12:30:00Z').getTime();
5
+
6
+ vi.setSystemTime(SYSTEM_TIME);
7
+
4
8
  describe('Logger', () => {
5
9
  it('sends structured logs to the log processor', () => {
6
10
  const backend = vi.fn();
@@ -10,6 +14,7 @@ describe('Logger', () => {
10
14
 
11
15
  expect(backend).toHaveBeenCalledOnce();
12
16
  expect(backend).toHaveBeenCalledWith({
17
+ timestamp: SYSTEM_TIME,
13
18
  message: 'Hello world',
14
19
  level: level.info,
15
20
  origin: [],
@@ -30,6 +35,7 @@ describe('Logger', () => {
30
35
 
31
36
  logger[method](message, context);
32
37
  expect(backend).toHaveBeenCalledWith({
38
+ timestamp: SYSTEM_TIME,
33
39
  message,
34
40
  level: level[method],
35
41
  context,
@@ -61,6 +67,7 @@ describe('Logger', () => {
61
67
 
62
68
  expect(backend).toHaveBeenCalledOnce();
63
69
  expect(backend).toHaveBeenCalledWith({
70
+ timestamp: SYSTEM_TIME,
64
71
  message: 'opening socket',
65
72
  level: level.info,
66
73
  origin: ['signaling', 'socket'],
@@ -79,6 +86,7 @@ describe('Logger', () => {
79
86
  logger.info('original message');
80
87
  expect(backend).toHaveBeenCalledOnce();
81
88
  expect(backend).toHaveBeenCalledWith({
89
+ timestamp: SYSTEM_TIME,
82
90
  message: 'replaced',
83
91
  level: level.info,
84
92
  origin: [],
@@ -102,6 +110,7 @@ describe('Logger', () => {
102
110
  logger.info('original message');
103
111
  expect(backend).toHaveBeenCalledOnce();
104
112
  expect(backend).toHaveBeenCalledWith({
113
+ timestamp: SYSTEM_TIME,
105
114
  message: 'original message',
106
115
  level: level.info,
107
116
  origin: ['child'],
package/src/logger.ts CHANGED
@@ -17,6 +17,7 @@ const createNamespacedLogger = (
17
17
  context: Context = {} as Context,
18
18
  ) => {
19
19
  processor({
20
+ timestamp: Date.now(),
20
21
  message,
21
22
  level,
22
23
  origin: namespace,
package/src/types.ts CHANGED
@@ -10,6 +10,9 @@ export interface LogProcessor {
10
10
 
11
11
  /** A log message where variables are carried as structured data. */
12
12
  export interface Log {
13
+ /** Unix timestamp. Includes milliseconds. */
14
+ readonly timestamp: number;
15
+
13
16
  /** The verbatim log message. Should not contain interpolated data. */
14
17
  readonly message: string;
15
18