nightingale-slack 11.6.0 → 11.7.4
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/.eslintrc.json +1 -1
- package/CHANGELOG.md +38 -0
- package/babel.config.cjs +14 -0
- package/dist/index-node12-dev.cjs.js +14 -13
- package/dist/index-node12-dev.cjs.js.map +1 -1
- package/dist/index-node12-dev.mjs +5 -4
- package/dist/index-node12-dev.mjs.map +1 -1
- package/dist/index-node12.cjs.js +14 -13
- package/dist/index-node12.cjs.js.map +1 -1
- package/dist/index-node12.mjs +5 -4
- package/dist/index-node12.mjs.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/package.json +21 -30
- package/rollup.config.mjs +3 -0
- package/src/.eslintrc.json +1 -1
- package/src/createBody.test.ts +1 -1
- package/src/createBody.ts +2 -2
- package/src/index.ts +13 -11
- package/index.js +0 -6
package/.eslintrc.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,44 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [11.7.4](https://github.com/christophehurpeau/nightingale/compare/v11.7.3...v11.7.4) (2021-11-27)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* build all packages ([dbb4785](https://github.com/christophehurpeau/nightingale/commit/dbb4785cbb8c75942935c4a5935df32fd2e93690))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [11.7.2](https://github.com/christophehurpeau/nightingale/compare/v11.7.1...v11.7.2) (2021-11-27)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package nightingale-slack
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## [11.7.1](https://github.com/christophehurpeau/nightingale/compare/v11.7.0...v11.7.1) (2021-06-29)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* update pob-babel to bring back webpack 4 support ([4887431](https://github.com/christophehurpeau/nightingale/commit/4887431b3b272496511f879af022638723b9056e))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# [11.7.0](https://github.com/christophehurpeau/nightingale/compare/v11.6.0...v11.7.0) (2021-03-29)
|
|
37
|
+
|
|
38
|
+
**Note:** Version bump only for package nightingale-slack
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
6
44
|
# [11.6.0](https://github.com/christophehurpeau/nightingale/compare/v11.5.4...v11.6.0) (2021-03-21)
|
|
7
45
|
|
|
8
46
|
|
package/babel.config.cjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const path = require('path');
|
|
4
|
+
|
|
5
|
+
module.exports = function babelConfig(api) {
|
|
6
|
+
const isTest = api.env('test');
|
|
7
|
+
|
|
8
|
+
if (!isTest) return {};
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
only: [path.resolve(__dirname, 'src')],
|
|
12
|
+
presets: [require.resolve('pob-babel/preset')],
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -3,26 +3,25 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const request = require('request');
|
|
6
|
-
const
|
|
6
|
+
const nightingaleLevels = require('nightingale-levels');
|
|
7
7
|
const markdownFormatter = require('nightingale-markdown-formatter');
|
|
8
8
|
const rawFormatter = require('nightingale-raw-formatter');
|
|
9
9
|
|
|
10
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e[
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
11
11
|
|
|
12
|
-
const Level__default = /*#__PURE__*/_interopDefaultLegacy(Level);
|
|
13
12
|
const markdownFormatter__default = /*#__PURE__*/_interopDefaultLegacy(markdownFormatter);
|
|
14
13
|
const rawFormatter__default = /*#__PURE__*/_interopDefaultLegacy(rawFormatter);
|
|
15
14
|
|
|
16
15
|
/* eslint-disable camelcase */
|
|
17
16
|
const levelToSlackColor = {
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
21
|
-
[
|
|
22
|
-
[
|
|
23
|
-
[
|
|
24
|
-
[
|
|
25
|
-
[
|
|
17
|
+
[nightingaleLevels.Level.TRACE]: '#808080',
|
|
18
|
+
[nightingaleLevels.Level.DEBUG]: '#808080',
|
|
19
|
+
[nightingaleLevels.Level.INFO]: '#808080',
|
|
20
|
+
[nightingaleLevels.Level.WARN]: 'warning',
|
|
21
|
+
[nightingaleLevels.Level.ERROR]: 'danger',
|
|
22
|
+
[nightingaleLevels.Level.CRITICAL]: 'danger',
|
|
23
|
+
[nightingaleLevels.Level.FATAL]: 'danger',
|
|
24
|
+
[nightingaleLevels.Level.EMERGENCY]: 'danger'
|
|
26
25
|
};
|
|
27
26
|
function createBody(record, slackConfig) {
|
|
28
27
|
const markdown = markdownFormatter__default(record);
|
|
@@ -48,7 +47,9 @@ const createHandler = slackConfig => record => {
|
|
|
48
47
|
url: slackConfig.webhookUrl,
|
|
49
48
|
body,
|
|
50
49
|
json: true
|
|
51
|
-
}).on('error', err2 =>
|
|
50
|
+
}).on('error', err2 => {
|
|
51
|
+
console.error(err2.stack);
|
|
52
|
+
});
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
class SlackHandler {
|
|
@@ -61,5 +62,5 @@ class SlackHandler {
|
|
|
61
62
|
|
|
62
63
|
exports.SlackHandler = SlackHandler;
|
|
63
64
|
exports.createBody = createBody;
|
|
64
|
-
exports
|
|
65
|
+
exports["default"] = SlackHandler;
|
|
65
66
|
//# sourceMappingURL=index-node12-dev.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-node12-dev.cjs.js","sources":["../src/createBody.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport Level from 'nightingale-levels';\nimport markdownFormatter from 'nightingale-markdown-formatter';\nimport rawFormatter from 'nightingale-raw-formatter';\nimport type { LogRecord, Metadata } from 'nightingale-types';\nimport type SlackConfig from './SlackConfig';\n\nconst levelToSlackColor:
|
|
1
|
+
{"version":3,"file":"index-node12-dev.cjs.js","sources":["../src/createBody.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport { Level } from 'nightingale-levels';\nimport markdownFormatter from 'nightingale-markdown-formatter';\nimport rawFormatter from 'nightingale-raw-formatter';\nimport type { LogRecord, Metadata } from 'nightingale-types';\nimport type SlackConfig from './SlackConfig';\n\nconst levelToSlackColor: Record<number, string> = {\n [Level.TRACE]: '#808080',\n [Level.DEBUG]: '#808080',\n [Level.INFO]: '#808080',\n [Level.WARN]: 'warning',\n [Level.ERROR]: 'danger',\n [Level.CRITICAL]: 'danger',\n [Level.FATAL]: 'danger',\n [Level.EMERGENCY]: 'danger',\n};\n\nexport default function createBody<T extends Metadata>(\n record: LogRecord<T>,\n slackConfig: SlackConfig,\n): Record<string, unknown> {\n const markdown = markdownFormatter(record);\n const raw = rawFormatter(record);\n\n return {\n channel: slackConfig.channel,\n username: slackConfig.username,\n icon_url: slackConfig.iconUrl,\n icon_emoji: slackConfig.iconEmoji,\n attachments: [\n {\n fallback: raw,\n title: record.message,\n color: levelToSlackColor[record.level],\n text: markdown,\n mrkdwn_in: ['text'],\n },\n ],\n };\n}\n","import type {\n LogRecord,\n Handle,\n Metadata,\n Handler,\n Level,\n} from 'nightingale-types';\nimport { post } from 'request';\nimport type SlackConfig from './SlackConfig';\nimport createBody from './createBody';\n\nexport { default as createBody } from './createBody';\n\nconst createHandler =\n (slackConfig: SlackConfig) =>\n <T extends Metadata>(record: LogRecord<T>) => {\n const body = createBody(record, slackConfig);\n\n post({ url: slackConfig.webhookUrl, body, json: true }).on(\n 'error',\n (err2: Error) => {\n console.error(err2.stack);\n },\n );\n };\n\nexport class SlackHandler implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(slackConfig: SlackConfig, minLevel: Level) {\n this.minLevel = minLevel;\n this.handle = createHandler(slackConfig);\n }\n}\n\n/** @deprecated use named export instead */\nexport default SlackHandler;\n"],"names":["levelToSlackColor","Level","TRACE","DEBUG","INFO","WARN","ERROR","CRITICAL","FATAL","EMERGENCY","createBody","record","slackConfig","markdown","markdownFormatter","raw","rawFormatter","channel","username","icon_url","iconUrl","icon_emoji","iconEmoji","attachments","fallback","title","message","color","level","text","mrkdwn_in","createHandler","body","post","url","webhookUrl","json","on","err2","console","error","stack","SlackHandler","constructor","minLevel","handle"],"mappings":";;;;;;;;;;;;;;AAAA;AAOA,MAAMA,iBAAyC,GAAG;AAChD,GAACC,uBAAK,CAACC,KAAP,GAAe,SADiC;AAEhD,GAACD,uBAAK,CAACE,KAAP,GAAe,SAFiC;AAGhD,GAACF,uBAAK,CAACG,IAAP,GAAc,SAHkC;AAIhD,GAACH,uBAAK,CAACI,IAAP,GAAc,SAJkC;AAKhD,GAACJ,uBAAK,CAACK,KAAP,GAAe,QALiC;AAMhD,GAACL,uBAAK,CAACM,QAAP,GAAkB,QAN8B;AAOhD,GAACN,uBAAK,CAACO,KAAP,GAAe,QAPiC;AAQhD,GAACP,uBAAK,CAACQ,SAAP,GAAmB;AAR6B,CAAlD;AAWe,SAASC,UAAT,CACbC,MADa,EAEbC,WAFa,EAGY;AACzB,QAAMC,QAAQ,GAAGC,0BAAiB,CAACH,MAAD,CAAlC;AACA,QAAMI,GAAG,GAAGC,qBAAY,CAACL,MAAD,CAAxB;AAEA,SAAO;AACLM,IAAAA,OAAO,EAAEL,WAAW,CAACK,OADhB;AAELC,IAAAA,QAAQ,EAAEN,WAAW,CAACM,QAFjB;AAGLC,IAAAA,QAAQ,EAAEP,WAAW,CAACQ,OAHjB;AAILC,IAAAA,UAAU,EAAET,WAAW,CAACU,SAJnB;AAKLC,IAAAA,WAAW,EAAE,CACX;AACEC,MAAAA,QAAQ,EAAET,GADZ;AAEEU,MAAAA,KAAK,EAAEd,MAAM,CAACe,OAFhB;AAGEC,MAAAA,KAAK,EAAE3B,iBAAiB,CAACW,MAAM,CAACiB,KAAR,CAH1B;AAIEC,MAAAA,IAAI,EAAEhB,QAJR;AAKEiB,MAAAA,SAAS,EAAE,CAAC,MAAD;AALb,KADW;AALR,GAAP;AAeD;;AC3BD,MAAMC,aAAa,GAChBnB,WAAD,IACqBD,MAArB,IAA8C;AAC5C,QAAMqB,IAAI,GAAGtB,UAAU,CAACC,MAAD,EAASC,WAAT,CAAvB;AAEAqB,EAAAA,YAAI,CAAC;AAAEC,IAAAA,GAAG,EAAEtB,WAAW,CAACuB,UAAnB;AAA+BH,IAAAA,IAA/B;AAAqCI,IAAAA,IAAI,EAAE;AAA3C,GAAD,CAAJ,CAAwDC,EAAxD,CACE,OADF,EAEGC,IAAD,IAAiB;AACfC,IAAAA,OAAO,CAACC,KAAR,CAAcF,IAAI,CAACG,KAAnB;AACD,GAJH;AAMD,CAXH;;AAaO,MAAMC,YAAN,CAAsC;AAK3CC,EAAAA,WAAW,CAAC/B,WAAD,EAA2BgC,QAA3B,EAA4C;AACrD,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKC,MAAL,GAAcd,aAAa,CAACnB,WAAD,CAA3B;AACD;;AAR0C;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { post } from 'request';
|
|
2
|
-
import Level from 'nightingale-levels';
|
|
2
|
+
import { Level } from 'nightingale-levels';
|
|
3
3
|
import markdownFormatter from 'nightingale-markdown-formatter';
|
|
4
4
|
import rawFormatter from 'nightingale-raw-formatter';
|
|
5
5
|
|
|
@@ -38,7 +38,9 @@ const createHandler = slackConfig => record => {
|
|
|
38
38
|
url: slackConfig.webhookUrl,
|
|
39
39
|
body,
|
|
40
40
|
json: true
|
|
41
|
-
}).on('error', err2 =>
|
|
41
|
+
}).on('error', err2 => {
|
|
42
|
+
console.error(err2.stack);
|
|
43
|
+
});
|
|
42
44
|
};
|
|
43
45
|
|
|
44
46
|
class SlackHandler {
|
|
@@ -49,6 +51,5 @@ class SlackHandler {
|
|
|
49
51
|
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
export default
|
|
53
|
-
export { SlackHandler, createBody };
|
|
54
|
+
export { SlackHandler, createBody, SlackHandler as default };
|
|
54
55
|
//# sourceMappingURL=index-node12-dev.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-node12-dev.mjs","sources":["../src/createBody.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport Level from 'nightingale-levels';\nimport markdownFormatter from 'nightingale-markdown-formatter';\nimport rawFormatter from 'nightingale-raw-formatter';\nimport type { LogRecord, Metadata } from 'nightingale-types';\nimport type SlackConfig from './SlackConfig';\n\nconst levelToSlackColor:
|
|
1
|
+
{"version":3,"file":"index-node12-dev.mjs","sources":["../src/createBody.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport { Level } from 'nightingale-levels';\nimport markdownFormatter from 'nightingale-markdown-formatter';\nimport rawFormatter from 'nightingale-raw-formatter';\nimport type { LogRecord, Metadata } from 'nightingale-types';\nimport type SlackConfig from './SlackConfig';\n\nconst levelToSlackColor: Record<number, string> = {\n [Level.TRACE]: '#808080',\n [Level.DEBUG]: '#808080',\n [Level.INFO]: '#808080',\n [Level.WARN]: 'warning',\n [Level.ERROR]: 'danger',\n [Level.CRITICAL]: 'danger',\n [Level.FATAL]: 'danger',\n [Level.EMERGENCY]: 'danger',\n};\n\nexport default function createBody<T extends Metadata>(\n record: LogRecord<T>,\n slackConfig: SlackConfig,\n): Record<string, unknown> {\n const markdown = markdownFormatter(record);\n const raw = rawFormatter(record);\n\n return {\n channel: slackConfig.channel,\n username: slackConfig.username,\n icon_url: slackConfig.iconUrl,\n icon_emoji: slackConfig.iconEmoji,\n attachments: [\n {\n fallback: raw,\n title: record.message,\n color: levelToSlackColor[record.level],\n text: markdown,\n mrkdwn_in: ['text'],\n },\n ],\n };\n}\n","import type {\n LogRecord,\n Handle,\n Metadata,\n Handler,\n Level,\n} from 'nightingale-types';\nimport { post } from 'request';\nimport type SlackConfig from './SlackConfig';\nimport createBody from './createBody';\n\nexport { default as createBody } from './createBody';\n\nconst createHandler =\n (slackConfig: SlackConfig) =>\n <T extends Metadata>(record: LogRecord<T>) => {\n const body = createBody(record, slackConfig);\n\n post({ url: slackConfig.webhookUrl, body, json: true }).on(\n 'error',\n (err2: Error) => {\n console.error(err2.stack);\n },\n );\n };\n\nexport class SlackHandler implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(slackConfig: SlackConfig, minLevel: Level) {\n this.minLevel = minLevel;\n this.handle = createHandler(slackConfig);\n }\n}\n\n/** @deprecated use named export instead */\nexport default SlackHandler;\n"],"names":["levelToSlackColor","Level","TRACE","DEBUG","INFO","WARN","ERROR","CRITICAL","FATAL","EMERGENCY","createBody","record","slackConfig","markdown","markdownFormatter","raw","rawFormatter","channel","username","icon_url","iconUrl","icon_emoji","iconEmoji","attachments","fallback","title","message","color","level","text","mrkdwn_in","createHandler","body","post","url","webhookUrl","json","on","err2","console","error","stack","SlackHandler","constructor","minLevel","handle"],"mappings":";;;;;AAAA;AAOA,MAAMA,iBAAyC,GAAG;AAChD,GAACC,KAAK,CAACC,KAAP,GAAe,SADiC;AAEhD,GAACD,KAAK,CAACE,KAAP,GAAe,SAFiC;AAGhD,GAACF,KAAK,CAACG,IAAP,GAAc,SAHkC;AAIhD,GAACH,KAAK,CAACI,IAAP,GAAc,SAJkC;AAKhD,GAACJ,KAAK,CAACK,KAAP,GAAe,QALiC;AAMhD,GAACL,KAAK,CAACM,QAAP,GAAkB,QAN8B;AAOhD,GAACN,KAAK,CAACO,KAAP,GAAe,QAPiC;AAQhD,GAACP,KAAK,CAACQ,SAAP,GAAmB;AAR6B,CAAlD;AAWe,SAASC,UAAT,CACbC,MADa,EAEbC,WAFa,EAGY;AACzB,QAAMC,QAAQ,GAAGC,iBAAiB,CAACH,MAAD,CAAlC;AACA,QAAMI,GAAG,GAAGC,YAAY,CAACL,MAAD,CAAxB;AAEA,SAAO;AACLM,IAAAA,OAAO,EAAEL,WAAW,CAACK,OADhB;AAELC,IAAAA,QAAQ,EAAEN,WAAW,CAACM,QAFjB;AAGLC,IAAAA,QAAQ,EAAEP,WAAW,CAACQ,OAHjB;AAILC,IAAAA,UAAU,EAAET,WAAW,CAACU,SAJnB;AAKLC,IAAAA,WAAW,EAAE,CACX;AACEC,MAAAA,QAAQ,EAAET,GADZ;AAEEU,MAAAA,KAAK,EAAEd,MAAM,CAACe,OAFhB;AAGEC,MAAAA,KAAK,EAAE3B,iBAAiB,CAACW,MAAM,CAACiB,KAAR,CAH1B;AAIEC,MAAAA,IAAI,EAAEhB,QAJR;AAKEiB,MAAAA,SAAS,EAAE,CAAC,MAAD;AALb,KADW;AALR,GAAP;AAeD;;AC3BD,MAAMC,aAAa,GAChBnB,WAAD,IACqBD,MAArB,IAA8C;AAC5C,QAAMqB,IAAI,GAAGtB,UAAU,CAACC,MAAD,EAASC,WAAT,CAAvB;AAEAqB,EAAAA,IAAI,CAAC;AAAEC,IAAAA,GAAG,EAAEtB,WAAW,CAACuB,UAAnB;AAA+BH,IAAAA,IAA/B;AAAqCI,IAAAA,IAAI,EAAE;AAA3C,GAAD,CAAJ,CAAwDC,EAAxD,CACE,OADF,EAEGC,IAAD,IAAiB;AACfC,IAAAA,OAAO,CAACC,KAAR,CAAcF,IAAI,CAACG,KAAnB;AACD,GAJH;AAMD,CAXH;;AAaO,MAAMC,YAAN,CAAsC;AAK3CC,EAAAA,WAAW,CAAC/B,WAAD,EAA2BgC,QAA3B,EAA4C;AACrD,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKC,MAAL,GAAcd,aAAa,CAACnB,WAAD,CAA3B;AACD;;AAR0C;;;;"}
|
package/dist/index-node12.cjs.js
CHANGED
|
@@ -3,26 +3,25 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const request = require('request');
|
|
6
|
-
const
|
|
6
|
+
const nightingaleLevels = require('nightingale-levels');
|
|
7
7
|
const markdownFormatter = require('nightingale-markdown-formatter');
|
|
8
8
|
const rawFormatter = require('nightingale-raw-formatter');
|
|
9
9
|
|
|
10
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e[
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
11
11
|
|
|
12
|
-
const Level__default = /*#__PURE__*/_interopDefaultLegacy(Level);
|
|
13
12
|
const markdownFormatter__default = /*#__PURE__*/_interopDefaultLegacy(markdownFormatter);
|
|
14
13
|
const rawFormatter__default = /*#__PURE__*/_interopDefaultLegacy(rawFormatter);
|
|
15
14
|
|
|
16
15
|
/* eslint-disable camelcase */
|
|
17
16
|
const levelToSlackColor = {
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
21
|
-
[
|
|
22
|
-
[
|
|
23
|
-
[
|
|
24
|
-
[
|
|
25
|
-
[
|
|
17
|
+
[nightingaleLevels.Level.TRACE]: '#808080',
|
|
18
|
+
[nightingaleLevels.Level.DEBUG]: '#808080',
|
|
19
|
+
[nightingaleLevels.Level.INFO]: '#808080',
|
|
20
|
+
[nightingaleLevels.Level.WARN]: 'warning',
|
|
21
|
+
[nightingaleLevels.Level.ERROR]: 'danger',
|
|
22
|
+
[nightingaleLevels.Level.CRITICAL]: 'danger',
|
|
23
|
+
[nightingaleLevels.Level.FATAL]: 'danger',
|
|
24
|
+
[nightingaleLevels.Level.EMERGENCY]: 'danger'
|
|
26
25
|
};
|
|
27
26
|
function createBody(record, slackConfig) {
|
|
28
27
|
const markdown = markdownFormatter__default(record);
|
|
@@ -48,7 +47,9 @@ const createHandler = slackConfig => record => {
|
|
|
48
47
|
url: slackConfig.webhookUrl,
|
|
49
48
|
body,
|
|
50
49
|
json: true
|
|
51
|
-
}).on('error', err2 =>
|
|
50
|
+
}).on('error', err2 => {
|
|
51
|
+
console.error(err2.stack);
|
|
52
|
+
});
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
class SlackHandler {
|
|
@@ -61,5 +62,5 @@ class SlackHandler {
|
|
|
61
62
|
|
|
62
63
|
exports.SlackHandler = SlackHandler;
|
|
63
64
|
exports.createBody = createBody;
|
|
64
|
-
exports
|
|
65
|
+
exports["default"] = SlackHandler;
|
|
65
66
|
//# sourceMappingURL=index-node12.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-node12.cjs.js","sources":["../src/createBody.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport Level from 'nightingale-levels';\nimport markdownFormatter from 'nightingale-markdown-formatter';\nimport rawFormatter from 'nightingale-raw-formatter';\nimport type { LogRecord, Metadata } from 'nightingale-types';\nimport type SlackConfig from './SlackConfig';\n\nconst levelToSlackColor:
|
|
1
|
+
{"version":3,"file":"index-node12.cjs.js","sources":["../src/createBody.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport { Level } from 'nightingale-levels';\nimport markdownFormatter from 'nightingale-markdown-formatter';\nimport rawFormatter from 'nightingale-raw-formatter';\nimport type { LogRecord, Metadata } from 'nightingale-types';\nimport type SlackConfig from './SlackConfig';\n\nconst levelToSlackColor: Record<number, string> = {\n [Level.TRACE]: '#808080',\n [Level.DEBUG]: '#808080',\n [Level.INFO]: '#808080',\n [Level.WARN]: 'warning',\n [Level.ERROR]: 'danger',\n [Level.CRITICAL]: 'danger',\n [Level.FATAL]: 'danger',\n [Level.EMERGENCY]: 'danger',\n};\n\nexport default function createBody<T extends Metadata>(\n record: LogRecord<T>,\n slackConfig: SlackConfig,\n): Record<string, unknown> {\n const markdown = markdownFormatter(record);\n const raw = rawFormatter(record);\n\n return {\n channel: slackConfig.channel,\n username: slackConfig.username,\n icon_url: slackConfig.iconUrl,\n icon_emoji: slackConfig.iconEmoji,\n attachments: [\n {\n fallback: raw,\n title: record.message,\n color: levelToSlackColor[record.level],\n text: markdown,\n mrkdwn_in: ['text'],\n },\n ],\n };\n}\n","import type {\n LogRecord,\n Handle,\n Metadata,\n Handler,\n Level,\n} from 'nightingale-types';\nimport { post } from 'request';\nimport type SlackConfig from './SlackConfig';\nimport createBody from './createBody';\n\nexport { default as createBody } from './createBody';\n\nconst createHandler =\n (slackConfig: SlackConfig) =>\n <T extends Metadata>(record: LogRecord<T>) => {\n const body = createBody(record, slackConfig);\n\n post({ url: slackConfig.webhookUrl, body, json: true }).on(\n 'error',\n (err2: Error) => {\n console.error(err2.stack);\n },\n );\n };\n\nexport class SlackHandler implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(slackConfig: SlackConfig, minLevel: Level) {\n this.minLevel = minLevel;\n this.handle = createHandler(slackConfig);\n }\n}\n\n/** @deprecated use named export instead */\nexport default SlackHandler;\n"],"names":["levelToSlackColor","Level","TRACE","DEBUG","INFO","WARN","ERROR","CRITICAL","FATAL","EMERGENCY","createBody","record","slackConfig","markdown","markdownFormatter","raw","rawFormatter","channel","username","icon_url","iconUrl","icon_emoji","iconEmoji","attachments","fallback","title","message","color","level","text","mrkdwn_in","createHandler","body","post","url","webhookUrl","json","on","err2","console","error","stack","SlackHandler","constructor","minLevel","handle"],"mappings":";;;;;;;;;;;;;;AAAA;AAOA,MAAMA,iBAAyC,GAAG;AAChD,GAACC,uBAAK,CAACC,KAAP,GAAe,SADiC;AAEhD,GAACD,uBAAK,CAACE,KAAP,GAAe,SAFiC;AAGhD,GAACF,uBAAK,CAACG,IAAP,GAAc,SAHkC;AAIhD,GAACH,uBAAK,CAACI,IAAP,GAAc,SAJkC;AAKhD,GAACJ,uBAAK,CAACK,KAAP,GAAe,QALiC;AAMhD,GAACL,uBAAK,CAACM,QAAP,GAAkB,QAN8B;AAOhD,GAACN,uBAAK,CAACO,KAAP,GAAe,QAPiC;AAQhD,GAACP,uBAAK,CAACQ,SAAP,GAAmB;AAR6B,CAAlD;AAWe,SAASC,UAAT,CACbC,MADa,EAEbC,WAFa,EAGY;AACzB,QAAMC,QAAQ,GAAGC,0BAAiB,CAACH,MAAD,CAAlC;AACA,QAAMI,GAAG,GAAGC,qBAAY,CAACL,MAAD,CAAxB;AAEA,SAAO;AACLM,IAAAA,OAAO,EAAEL,WAAW,CAACK,OADhB;AAELC,IAAAA,QAAQ,EAAEN,WAAW,CAACM,QAFjB;AAGLC,IAAAA,QAAQ,EAAEP,WAAW,CAACQ,OAHjB;AAILC,IAAAA,UAAU,EAAET,WAAW,CAACU,SAJnB;AAKLC,IAAAA,WAAW,EAAE,CACX;AACEC,MAAAA,QAAQ,EAAET,GADZ;AAEEU,MAAAA,KAAK,EAAEd,MAAM,CAACe,OAFhB;AAGEC,MAAAA,KAAK,EAAE3B,iBAAiB,CAACW,MAAM,CAACiB,KAAR,CAH1B;AAIEC,MAAAA,IAAI,EAAEhB,QAJR;AAKEiB,MAAAA,SAAS,EAAE,CAAC,MAAD;AALb,KADW;AALR,GAAP;AAeD;;AC3BD,MAAMC,aAAa,GAChBnB,WAAD,IACqBD,MAArB,IAA8C;AAC5C,QAAMqB,IAAI,GAAGtB,UAAU,CAACC,MAAD,EAASC,WAAT,CAAvB;AAEAqB,EAAAA,YAAI,CAAC;AAAEC,IAAAA,GAAG,EAAEtB,WAAW,CAACuB,UAAnB;AAA+BH,IAAAA,IAA/B;AAAqCI,IAAAA,IAAI,EAAE;AAA3C,GAAD,CAAJ,CAAwDC,EAAxD,CACE,OADF,EAEGC,IAAD,IAAiB;AACfC,IAAAA,OAAO,CAACC,KAAR,CAAcF,IAAI,CAACG,KAAnB;AACD,GAJH;AAMD,CAXH;;AAaO,MAAMC,YAAN,CAAsC;AAK3CC,EAAAA,WAAW,CAAC/B,WAAD,EAA2BgC,QAA3B,EAA4C;AACrD,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKC,MAAL,GAAcd,aAAa,CAACnB,WAAD,CAA3B;AACD;;AAR0C;;;;;;"}
|
package/dist/index-node12.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { post } from 'request';
|
|
2
|
-
import Level from 'nightingale-levels';
|
|
2
|
+
import { Level } from 'nightingale-levels';
|
|
3
3
|
import markdownFormatter from 'nightingale-markdown-formatter';
|
|
4
4
|
import rawFormatter from 'nightingale-raw-formatter';
|
|
5
5
|
|
|
@@ -38,7 +38,9 @@ const createHandler = slackConfig => record => {
|
|
|
38
38
|
url: slackConfig.webhookUrl,
|
|
39
39
|
body,
|
|
40
40
|
json: true
|
|
41
|
-
}).on('error', err2 =>
|
|
41
|
+
}).on('error', err2 => {
|
|
42
|
+
console.error(err2.stack);
|
|
43
|
+
});
|
|
42
44
|
};
|
|
43
45
|
|
|
44
46
|
class SlackHandler {
|
|
@@ -49,6 +51,5 @@ class SlackHandler {
|
|
|
49
51
|
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
export default
|
|
53
|
-
export { SlackHandler, createBody };
|
|
54
|
+
export { SlackHandler, createBody, SlackHandler as default };
|
|
54
55
|
//# sourceMappingURL=index-node12.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-node12.mjs","sources":["../src/createBody.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport Level from 'nightingale-levels';\nimport markdownFormatter from 'nightingale-markdown-formatter';\nimport rawFormatter from 'nightingale-raw-formatter';\nimport type { LogRecord, Metadata } from 'nightingale-types';\nimport type SlackConfig from './SlackConfig';\n\nconst levelToSlackColor:
|
|
1
|
+
{"version":3,"file":"index-node12.mjs","sources":["../src/createBody.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport { Level } from 'nightingale-levels';\nimport markdownFormatter from 'nightingale-markdown-formatter';\nimport rawFormatter from 'nightingale-raw-formatter';\nimport type { LogRecord, Metadata } from 'nightingale-types';\nimport type SlackConfig from './SlackConfig';\n\nconst levelToSlackColor: Record<number, string> = {\n [Level.TRACE]: '#808080',\n [Level.DEBUG]: '#808080',\n [Level.INFO]: '#808080',\n [Level.WARN]: 'warning',\n [Level.ERROR]: 'danger',\n [Level.CRITICAL]: 'danger',\n [Level.FATAL]: 'danger',\n [Level.EMERGENCY]: 'danger',\n};\n\nexport default function createBody<T extends Metadata>(\n record: LogRecord<T>,\n slackConfig: SlackConfig,\n): Record<string, unknown> {\n const markdown = markdownFormatter(record);\n const raw = rawFormatter(record);\n\n return {\n channel: slackConfig.channel,\n username: slackConfig.username,\n icon_url: slackConfig.iconUrl,\n icon_emoji: slackConfig.iconEmoji,\n attachments: [\n {\n fallback: raw,\n title: record.message,\n color: levelToSlackColor[record.level],\n text: markdown,\n mrkdwn_in: ['text'],\n },\n ],\n };\n}\n","import type {\n LogRecord,\n Handle,\n Metadata,\n Handler,\n Level,\n} from 'nightingale-types';\nimport { post } from 'request';\nimport type SlackConfig from './SlackConfig';\nimport createBody from './createBody';\n\nexport { default as createBody } from './createBody';\n\nconst createHandler =\n (slackConfig: SlackConfig) =>\n <T extends Metadata>(record: LogRecord<T>) => {\n const body = createBody(record, slackConfig);\n\n post({ url: slackConfig.webhookUrl, body, json: true }).on(\n 'error',\n (err2: Error) => {\n console.error(err2.stack);\n },\n );\n };\n\nexport class SlackHandler implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(slackConfig: SlackConfig, minLevel: Level) {\n this.minLevel = minLevel;\n this.handle = createHandler(slackConfig);\n }\n}\n\n/** @deprecated use named export instead */\nexport default SlackHandler;\n"],"names":["levelToSlackColor","Level","TRACE","DEBUG","INFO","WARN","ERROR","CRITICAL","FATAL","EMERGENCY","createBody","record","slackConfig","markdown","markdownFormatter","raw","rawFormatter","channel","username","icon_url","iconUrl","icon_emoji","iconEmoji","attachments","fallback","title","message","color","level","text","mrkdwn_in","createHandler","body","post","url","webhookUrl","json","on","err2","console","error","stack","SlackHandler","constructor","minLevel","handle"],"mappings":";;;;;AAAA;AAOA,MAAMA,iBAAyC,GAAG;AAChD,GAACC,KAAK,CAACC,KAAP,GAAe,SADiC;AAEhD,GAACD,KAAK,CAACE,KAAP,GAAe,SAFiC;AAGhD,GAACF,KAAK,CAACG,IAAP,GAAc,SAHkC;AAIhD,GAACH,KAAK,CAACI,IAAP,GAAc,SAJkC;AAKhD,GAACJ,KAAK,CAACK,KAAP,GAAe,QALiC;AAMhD,GAACL,KAAK,CAACM,QAAP,GAAkB,QAN8B;AAOhD,GAACN,KAAK,CAACO,KAAP,GAAe,QAPiC;AAQhD,GAACP,KAAK,CAACQ,SAAP,GAAmB;AAR6B,CAAlD;AAWe,SAASC,UAAT,CACbC,MADa,EAEbC,WAFa,EAGY;AACzB,QAAMC,QAAQ,GAAGC,iBAAiB,CAACH,MAAD,CAAlC;AACA,QAAMI,GAAG,GAAGC,YAAY,CAACL,MAAD,CAAxB;AAEA,SAAO;AACLM,IAAAA,OAAO,EAAEL,WAAW,CAACK,OADhB;AAELC,IAAAA,QAAQ,EAAEN,WAAW,CAACM,QAFjB;AAGLC,IAAAA,QAAQ,EAAEP,WAAW,CAACQ,OAHjB;AAILC,IAAAA,UAAU,EAAET,WAAW,CAACU,SAJnB;AAKLC,IAAAA,WAAW,EAAE,CACX;AACEC,MAAAA,QAAQ,EAAET,GADZ;AAEEU,MAAAA,KAAK,EAAEd,MAAM,CAACe,OAFhB;AAGEC,MAAAA,KAAK,EAAE3B,iBAAiB,CAACW,MAAM,CAACiB,KAAR,CAH1B;AAIEC,MAAAA,IAAI,EAAEhB,QAJR;AAKEiB,MAAAA,SAAS,EAAE,CAAC,MAAD;AALb,KADW;AALR,GAAP;AAeD;;AC3BD,MAAMC,aAAa,GAChBnB,WAAD,IACqBD,MAArB,IAA8C;AAC5C,QAAMqB,IAAI,GAAGtB,UAAU,CAACC,MAAD,EAASC,WAAT,CAAvB;AAEAqB,EAAAA,IAAI,CAAC;AAAEC,IAAAA,GAAG,EAAEtB,WAAW,CAACuB,UAAnB;AAA+BH,IAAAA,IAA/B;AAAqCI,IAAAA,IAAI,EAAE;AAA3C,GAAD,CAAJ,CAAwDC,EAAxD,CACE,OADF,EAEGC,IAAD,IAAiB;AACfC,IAAAA,OAAO,CAACC,KAAR,CAAcF,IAAI,CAACG,KAAnB;AACD,GAJH;AAMD,CAXH;;AAaO,MAAMC,YAAN,CAAsC;AAK3CC,EAAAA,WAAW,CAAC/B,WAAD,EAA2BgC,QAA3B,EAA4C;AACrD,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKC,MAAL,GAAcd,aAAa,CAACnB,WAAD,CAA3B;AACD;;AAR0C;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Handle, Handler, Level } from 'nightingale-types';
|
|
2
2
|
import type SlackConfig from './SlackConfig';
|
|
3
|
-
|
|
4
|
-
export { createBody };
|
|
3
|
+
export { default as createBody } from './createBody';
|
|
5
4
|
export declare class SlackHandler implements Handler {
|
|
6
5
|
minLevel: Level;
|
|
7
6
|
handle: Handle;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,MAAM,EAEN,OAAO,EACP,KAAK,EACN,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAerD,qBAAa,YAAa,YAAW,OAAO;IAC1C,QAAQ,EAAE,KAAK,CAAC;IAEhB,MAAM,EAAE,MAAM,CAAC;gBAEH,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK;CAItD;AAED,2CAA2C;AAC3C,eAAe,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nightingale-slack",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.7.4",
|
|
4
4
|
"description": "Slack handler for nightingale",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nightingale",
|
|
@@ -14,12 +14,14 @@
|
|
|
14
14
|
"directory": "packages/nightingale-slack"
|
|
15
15
|
},
|
|
16
16
|
"homepage": "https://github.com/christophehurpeau/nightingale",
|
|
17
|
+
"type": "commonjs",
|
|
17
18
|
"engines": {
|
|
18
|
-
"node": "
|
|
19
|
+
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
19
20
|
},
|
|
20
|
-
"main": "./index.js",
|
|
21
|
+
"main": "./dist/index-node12.cjs.js",
|
|
21
22
|
"types": "./dist/index.d.ts",
|
|
22
23
|
"exports": {
|
|
24
|
+
"./package.json": "./package.json",
|
|
23
25
|
".": {
|
|
24
26
|
"node": {
|
|
25
27
|
"development": {
|
|
@@ -40,9 +42,9 @@
|
|
|
40
42
|
"clean": "rm -Rf docs dist test/node6 coverage",
|
|
41
43
|
"generate:test-coverage": "rm -Rf docs/coverage/ ; NODE_ENV=production BABEL_ENV=test jest --coverage --coverageReporters=pob-lcov-reporter --coverageDirectory=docs/coverage/",
|
|
42
44
|
"lint": "yarn run lint:eslint",
|
|
43
|
-
"lint:eslint": "
|
|
45
|
+
"lint:eslint": "cd ../.. && yarn run eslint --report-unused-disable-directives --resolve-plugins-relative-to . --quiet packages/nightingale-slack",
|
|
44
46
|
"test": "jest",
|
|
45
|
-
"test:watch": "jest",
|
|
47
|
+
"test:watch": "jest --watch",
|
|
46
48
|
"watch": "pob-watch"
|
|
47
49
|
},
|
|
48
50
|
"prettier": {
|
|
@@ -85,35 +87,24 @@
|
|
|
85
87
|
]
|
|
86
88
|
},
|
|
87
89
|
"dependencies": {
|
|
88
|
-
"nightingale-levels": "^11.
|
|
89
|
-
"nightingale-markdown-formatter": "^11.
|
|
90
|
-
"nightingale-raw-formatter": "^11.
|
|
91
|
-
"nightingale-types": "^11.
|
|
90
|
+
"nightingale-levels": "^11.7.2",
|
|
91
|
+
"nightingale-markdown-formatter": "^11.7.4",
|
|
92
|
+
"nightingale-raw-formatter": "^11.7.4",
|
|
93
|
+
"nightingale-types": "^11.7.4",
|
|
92
94
|
"request": "^2.88.0"
|
|
93
95
|
},
|
|
94
96
|
"devDependencies": {
|
|
95
|
-
"@babel/core": "7.
|
|
96
|
-
"@
|
|
97
|
-
"@
|
|
98
|
-
"
|
|
99
|
-
"@pob/eslint-config-typescript-node": "43.0.0",
|
|
100
|
-
"@types/jest": "26.0.21",
|
|
101
|
-
"@types/request": "2.48.5",
|
|
102
|
-
"@typescript-eslint/eslint-plugin": "4.18.0",
|
|
103
|
-
"@typescript-eslint/parser": "4.18.0",
|
|
104
|
-
"babel-jest": "26.6.3",
|
|
97
|
+
"@babel/core": "7.16.0",
|
|
98
|
+
"@types/jest": "27.0.3",
|
|
99
|
+
"@types/request": "2.48.7",
|
|
100
|
+
"babel-jest": "27.3.1",
|
|
105
101
|
"babel-preset-latest-node": "5.5.1",
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"jest": "26.6.3",
|
|
112
|
-
"pob-babel": "26.8.0",
|
|
113
|
-
"pob-lcov-reporter": "4.0.1",
|
|
114
|
-
"rollup": "2.42.1",
|
|
115
|
-
"typescript": "4.2.3",
|
|
102
|
+
"jest": "27.3.1",
|
|
103
|
+
"pob-babel": "28.5.0",
|
|
104
|
+
"pob-lcov-reporter": "5.4.0",
|
|
105
|
+
"rollup": "2.60.1",
|
|
106
|
+
"typescript": "4.5.2",
|
|
116
107
|
"xunit-file": "1.0.0"
|
|
117
108
|
},
|
|
118
|
-
"gitHead": "
|
|
109
|
+
"gitHead": "70f6b4ba634ff778fc94bef7e2455e8b6a7db06a"
|
|
119
110
|
}
|
package/src/.eslintrc.json
CHANGED
package/src/createBody.test.ts
CHANGED
package/src/createBody.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* eslint-disable camelcase */
|
|
2
|
-
import Level from 'nightingale-levels';
|
|
2
|
+
import { Level } from 'nightingale-levels';
|
|
3
3
|
import markdownFormatter from 'nightingale-markdown-formatter';
|
|
4
4
|
import rawFormatter from 'nightingale-raw-formatter';
|
|
5
5
|
import type { LogRecord, Metadata } from 'nightingale-types';
|
|
6
6
|
import type SlackConfig from './SlackConfig';
|
|
7
7
|
|
|
8
|
-
const levelToSlackColor:
|
|
8
|
+
const levelToSlackColor: Record<number, string> = {
|
|
9
9
|
[Level.TRACE]: '#808080',
|
|
10
10
|
[Level.DEBUG]: '#808080',
|
|
11
11
|
[Level.INFO]: '#808080',
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { post } from 'request';
|
|
2
1
|
import type {
|
|
3
2
|
LogRecord,
|
|
4
3
|
Handle,
|
|
@@ -6,21 +5,24 @@ import type {
|
|
|
6
5
|
Handler,
|
|
7
6
|
Level,
|
|
8
7
|
} from 'nightingale-types';
|
|
8
|
+
import { post } from 'request';
|
|
9
9
|
import type SlackConfig from './SlackConfig';
|
|
10
10
|
import createBody from './createBody';
|
|
11
11
|
|
|
12
|
-
export { createBody };
|
|
12
|
+
export { default as createBody } from './createBody';
|
|
13
13
|
|
|
14
|
-
const createHandler =
|
|
15
|
-
|
|
16
|
-
) => {
|
|
17
|
-
|
|
14
|
+
const createHandler =
|
|
15
|
+
(slackConfig: SlackConfig) =>
|
|
16
|
+
<T extends Metadata>(record: LogRecord<T>) => {
|
|
17
|
+
const body = createBody(record, slackConfig);
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
19
|
+
post({ url: slackConfig.webhookUrl, body, json: true }).on(
|
|
20
|
+
'error',
|
|
21
|
+
(err2: Error) => {
|
|
22
|
+
console.error(err2.stack);
|
|
23
|
+
},
|
|
24
|
+
);
|
|
25
|
+
};
|
|
24
26
|
|
|
25
27
|
export class SlackHandler implements Handler {
|
|
26
28
|
minLevel: Level;
|