@leaflink/snitch 1.1.0 → 1.2.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 +5 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.spec.js +4 -4
- package/dist/index.spec.js.map +1 -1
- package/dist/transports/console.js +1 -0
- package/dist/transports/console.js.map +1 -1
- package/dist/transports/datadog.d.ts +1 -1
- package/dist/transports/datadog.js.map +1 -1
- package/package.json +15 -1
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# @leaflink/snitch
|
|
2
2
|
|
|
3
|
+
[](https://leaflink.slack.com/archives/CDXDCR0RX)
|
|
4
|
+

|
|
5
|
+
|
|
3
6
|
Simple and extensible browser logging, inspired by [Winston](https://github.com/winstonjs/winston).
|
|
4
7
|
|
|
5
8
|
## Installation
|
|
@@ -8,7 +11,7 @@ Simple and extensible browser logging, inspired by [Winston](https://github.com/
|
|
|
8
11
|
|
|
9
12
|
## Transports
|
|
10
13
|
|
|
11
|
-
Transports are a way of routing log messages to multiple destinations, with the ability to pre-process or format the message. `@leaflink/snitch` includes
|
|
14
|
+
Transports are a way of routing log messages to multiple destinations, with the ability to pre-process or format the message. `@leaflink/snitch` includes three transports by default (`console`, Sentry, and Datadog), but they can be extended using the `Transport` type exported by the logger.
|
|
12
15
|
|
|
13
16
|
## Log Levels
|
|
14
17
|
|
|
@@ -211,4 +214,4 @@ import { CustomTransport } from './custom-transport';
|
|
|
211
214
|
logger.add(new CustomTransport());
|
|
212
215
|
```
|
|
213
216
|
|
|
214
|
-
Note: You can add a custom transport in your project, but consider opening a PR in this repo instead!
|
|
217
|
+
Note: You can add a custom transport in your project, but consider opening a PR in this repo instead!
|
package/dist/index.d.ts
CHANGED
|
@@ -19,3 +19,6 @@ export declare class Logger {
|
|
|
19
19
|
}
|
|
20
20
|
declare const logger: Logger;
|
|
21
21
|
export default logger;
|
|
22
|
+
export { ConsoleTransport } from './transports/console.js';
|
|
23
|
+
export { DatadogTransport } from './transports/datadog.js';
|
|
24
|
+
export { SentryTransport } from './transports/sentry.js';
|
package/dist/index.js
CHANGED
|
@@ -40,4 +40,7 @@ export class Logger {
|
|
|
40
40
|
}
|
|
41
41
|
const logger = new Logger();
|
|
42
42
|
export default logger;
|
|
43
|
+
export { ConsoleTransport } from './transports/console.js';
|
|
44
|
+
export { DatadogTransport } from './transports/datadog.js';
|
|
45
|
+
export { SentryTransport } from './transports/sentry.js';
|
|
43
46
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAUF,MAAM,OAAO,MAAM;IACjB,UAAU,CAAc;IAExB,YAAY,IAAK;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;IAC3C,CAAC;IAEO,IAAI,CAAC,KAAe,EAAE,OAAmB,EAAE,IAA8B;QAC/E,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC5C,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;aACrC;SACF;IACH,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAUF,MAAM,OAAO,MAAM;IACjB,UAAU,CAAc;IAExB,YAAY,IAAK;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;IAC3C,CAAC;IAEO,IAAI,CAAC,KAAe,EAAE,OAAmB,EAAE,IAA8B;QAC/E,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC5C,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;aACrC;SACF;IACH,CAAC;IAED,KAAK,CAAC,OAAmB,EAAE,IAA8B;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,OAAmB,EAAE,IAA8B;QACtD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,OAAmB,EAAE,IAA8B;QACrD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,OAAmB,EAAE,IAA8B;QACtD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAmB,EAAE,IAA8B;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,SAAoB;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,eAAe;QACb,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;CACF;AAED,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC5B,eAAe,MAAM,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.spec.js
CHANGED
|
@@ -4,12 +4,12 @@ it.each(['debug', 'info', 'warn', 'error'])('can register a logger to a log leve
|
|
|
4
4
|
expect(logger.transports.length).toBe(0);
|
|
5
5
|
logger.addTransport({
|
|
6
6
|
level: level,
|
|
7
|
-
log: () =>
|
|
7
|
+
log: () => console.log('logged!'),
|
|
8
8
|
});
|
|
9
9
|
expect(logger.transports.length).toBe(1);
|
|
10
10
|
expect(logger.transports[0].level).toBe(level);
|
|
11
11
|
});
|
|
12
|
-
it(
|
|
12
|
+
it("calls a transport when the log level is at or below the transport's level", () => {
|
|
13
13
|
const errorSpy = vi.fn();
|
|
14
14
|
const warnSpy = vi.fn();
|
|
15
15
|
const infoSpy = vi.fn();
|
|
@@ -57,11 +57,11 @@ it('can create a logger with transports set in the constructor', () => {
|
|
|
57
57
|
transports: [
|
|
58
58
|
{
|
|
59
59
|
level: 'info',
|
|
60
|
-
log: vi.fn()
|
|
60
|
+
log: vi.fn(),
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
level: 'warn',
|
|
64
|
-
log: vi.fn()
|
|
64
|
+
log: vi.fn(),
|
|
65
65
|
},
|
|
66
66
|
],
|
|
67
67
|
});
|
package/dist/index.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,MAAM,EAAY,MAAM,YAAY,CAAC;AAEtD,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;AAE1C,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,sCAAsC,EAAE,CAAC,KAAK,EAAE,EAAE;IAC5F,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzC,MAAM,CAAC,YAAY,CAAC;QAClB,KAAK,EAAE,KAAiB;QACxB,GAAG,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/transports/console.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAW;IAChB,GAAG,CAAiG;IAEpG,YAAY,IAA8B;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC;QACpC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAClC,QAAQ,KAAK,EAAE;gBACb,KAAK,OAAO;oBACV,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,MAAM;oBACT,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,OAAO;oBACV,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/transports/console.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAW;IAChB,GAAG,CAAiG;IAEpG,YAAY,IAA8B;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC;QACpC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAClC,QAAQ,KAAK,EAAE;gBACb,KAAK,OAAO;oBACV,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,MAAM;oBACT,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,OAAO;oBACV,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC7B,MAAM;gBACR;oBACE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LogLevel, Transport } from '../index.js';
|
|
2
1
|
import type { datadogLogs } from '@datadog/browser-logs';
|
|
2
|
+
import { LogLevel, Transport } from '../index.js';
|
|
3
3
|
export interface DatadogTransportOptions {
|
|
4
4
|
level?: LogLevel;
|
|
5
5
|
datadogLogsInstance: typeof datadogLogs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datadog.js","sourceRoot":"","sources":["../../src/transports/datadog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"datadog.js","sourceRoot":"","sources":["../../src/transports/datadog.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAW;IAChB,GAAG,CAAiG;IAEpG,YAAY,IAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;QAClC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;YACvC,+DAA+D;YAC/D,IAAI,OAAO,YAAY,KAAK,EAAE;gBAC5B,0EAA0E;gBAC1E,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aACxE;iBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBACtC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACvD;iBAAM;gBACL,2FAA2F;gBAC3F,0GAA0G;gBAC1G,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;aACvE;QACH,CAAC,CAAC;IACJ,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leaflink/snitch",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Front end logging inspired by winston.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
"types": "./dist/transports/sentry.d.ts",
|
|
19
19
|
"import": "./dist/transports/sentry.js",
|
|
20
20
|
"default": "./dist/transports/sentry.js"
|
|
21
|
+
},
|
|
22
|
+
"./transports/datadog.js": {
|
|
23
|
+
"types": "./dist/transports/datadog.d.ts",
|
|
24
|
+
"import": "./dist/transports/datadog.js",
|
|
25
|
+
"default": "./dist/transports/datadog.js"
|
|
21
26
|
}
|
|
22
27
|
},
|
|
23
28
|
"engines": {
|
|
@@ -33,6 +38,8 @@
|
|
|
33
38
|
},
|
|
34
39
|
"scripts": {
|
|
35
40
|
"build": "tsc",
|
|
41
|
+
"fix": "eslint --fix .",
|
|
42
|
+
"lint": "eslint .",
|
|
36
43
|
"lint:commits": "commitlint",
|
|
37
44
|
"test": "vitest --reporter verbose",
|
|
38
45
|
"test:ci": "vitest run --silent --coverage"
|
|
@@ -51,6 +58,8 @@
|
|
|
51
58
|
"@commitlint/config-conventional": "^17.4.4",
|
|
52
59
|
"@datadog/browser-logs": "^4.39.0",
|
|
53
60
|
"@vitest/coverage-c8": "^0.29.2",
|
|
61
|
+
"eslint": "^8.41.0",
|
|
62
|
+
"eslint-config-leaflink": "^1.3.1",
|
|
54
63
|
"typescript": "^4.9.5",
|
|
55
64
|
"vite": "^4.1.4",
|
|
56
65
|
"vitest": "^0.29.2"
|
|
@@ -67,5 +76,10 @@
|
|
|
67
76
|
0
|
|
68
77
|
]
|
|
69
78
|
}
|
|
79
|
+
},
|
|
80
|
+
"eslintConfig": {
|
|
81
|
+
"extends": [
|
|
82
|
+
"leaflink"
|
|
83
|
+
]
|
|
70
84
|
}
|
|
71
85
|
}
|