@book000/node-utils 1.24.296 → 1.25.1
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 +28 -0
- package/dist/__tests__/error-reporter.test.d.ts +2 -0
- package/dist/__tests__/error-reporter.test.d.ts.map +1 -0
- package/dist/__tests__/error-reporter.test.js +91 -0
- package/dist/__tests__/error-reporter.test.js.map +1 -0
- package/dist/__tests__/logger.test.js +80 -0
- package/dist/__tests__/logger.test.js.map +1 -1
- package/dist/__tests__/sentry-client.test.d.ts +2 -0
- package/dist/__tests__/sentry-client.test.d.ts.map +1 -0
- package/dist/__tests__/sentry-client.test.js +113 -0
- package/dist/__tests__/sentry-client.test.js.map +1 -0
- package/dist/__tests__/sentry-release.test.d.ts +2 -0
- package/dist/__tests__/sentry-release.test.d.ts.map +1 -0
- package/dist/__tests__/sentry-release.test.js +55 -0
- package/dist/__tests__/sentry-release.test.js.map +1 -0
- package/dist/__tests__/sentry-transport.test.d.ts +2 -0
- package/dist/__tests__/sentry-transport.test.d.ts.map +1 -0
- package/dist/__tests__/sentry-transport.test.js +122 -0
- package/dist/__tests__/sentry-transport.test.js.map +1 -0
- package/dist/error-reporter.d.ts +5 -0
- package/dist/error-reporter.d.ts.map +1 -0
- package/dist/error-reporter.js +55 -0
- package/dist/error-reporter.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +24 -9
- package/dist/logger.js.map +1 -1
- package/dist/sentry/sentry-client.d.ts +10 -0
- package/dist/sentry/sentry-client.d.ts.map +1 -0
- package/dist/sentry/sentry-client.js +64 -0
- package/dist/sentry/sentry-client.js.map +1 -0
- package/dist/sentry/sentry-release.d.ts +2 -0
- package/dist/sentry/sentry-release.d.ts.map +1 -0
- package/dist/sentry/sentry-release.js +27 -0
- package/dist/sentry/sentry-release.js.map +1 -0
- package/dist/sentry-transport.d.ts +11 -0
- package/dist/sentry-transport.d.ts.map +1 -0
- package/dist/sentry-transport.js +84 -0
- package/dist/sentry-transport.js.map +1 -0
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -75,6 +75,34 @@ function main() {
|
|
|
75
75
|
main()
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
+
### Sentry (GlitchTip) integration for error reporting
|
|
79
|
+
|
|
80
|
+
`Logger` automatically forwards `error`/`warn` logs (and the existing `unhandledRejection` / `uncaughtException` process hooks) to a Sentry-compatible endpoint (e.g. self-hosted [GlitchTip](https://glitchtip.com/)) when the `SENTRY_DSN` environment variable is set. No code changes are required on the consuming side beyond upgrading `@book000/node-utils` and setting the environment variable.
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import { Logger } from '@book000/node-utils'
|
|
84
|
+
|
|
85
|
+
// SENTRY_DSN が設定されていれば、以下の error() 呼び出しは自動的に GlitchTip へ転送される
|
|
86
|
+
const logger = Logger.configure('main')
|
|
87
|
+
logger.error('Something went wrong', new Error('boom'))
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
| Environment variable | Required | Default | Description |
|
|
91
|
+
|---|---|---|---|
|
|
92
|
+
| `SENTRY_DSN` | No (opt-in) | none | When unset, `SentryTransport` / `ErrorReporter` are fully no-op |
|
|
93
|
+
| `SENTRY_ENVIRONMENT` | No | `process.env.NODE_ENV ?? 'production'` | Sentry `environment` tag |
|
|
94
|
+
| `SENTRY_LOG_LEVEL` | No | `warn` | Minimum Winston log level forwarded by `SentryTransport` |
|
|
95
|
+
| `SENTRY_RELEASE` | No | auto-detected `<name>@<version>` from the consuming app's `package.json` | Overrides the auto-detected `release` tag |
|
|
96
|
+
|
|
97
|
+
For explicit, opt-in error reporting outside of `Logger` (e.g. attaching custom tags), use `ErrorReporter`:
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
import { ErrorReporter } from '@book000/node-utils'
|
|
101
|
+
|
|
102
|
+
ErrorReporter.configure()
|
|
103
|
+
ErrorReporter.captureException(new Error('boom'), { userId: '123' })
|
|
104
|
+
```
|
|
105
|
+
|
|
78
106
|
### Send message to Discord
|
|
79
107
|
|
|
80
108
|
You can send messages to the Discord using the Discord Bot or the Discord Webhook.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-reporter.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/error-reporter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const Sentry = __importStar(require("@sentry/node"));
|
|
37
|
+
const error_reporter_1 = require("../error-reporter");
|
|
38
|
+
const sentry_client_1 = require("../sentry/sentry-client");
|
|
39
|
+
jest.mock('@sentry/node', () => ({
|
|
40
|
+
captureException: jest.fn(),
|
|
41
|
+
}));
|
|
42
|
+
jest.mock('../sentry/sentry-client', () => ({
|
|
43
|
+
ensureSentryInitialized: jest.fn(),
|
|
44
|
+
isSentryInitialized: jest.fn().mockReturnValue(false),
|
|
45
|
+
}));
|
|
46
|
+
describe('ErrorReporter', () => {
|
|
47
|
+
const originalEnvironment = process.env;
|
|
48
|
+
beforeEach(() => {
|
|
49
|
+
jest.clearAllMocks();
|
|
50
|
+
process.env = { ...originalEnvironment };
|
|
51
|
+
delete process.env.SENTRY_DSN;
|
|
52
|
+
delete process.env.SENTRY_ENVIRONMENT;
|
|
53
|
+
});
|
|
54
|
+
afterEach(() => {
|
|
55
|
+
process.env = originalEnvironment;
|
|
56
|
+
});
|
|
57
|
+
describe('configure', () => {
|
|
58
|
+
it('should not call ensureSentryInitialized when SENTRY_DSN is unset', () => {
|
|
59
|
+
error_reporter_1.ErrorReporter.configure();
|
|
60
|
+
expect(sentry_client_1.ensureSentryInitialized).not.toHaveBeenCalled();
|
|
61
|
+
});
|
|
62
|
+
it('should call ensureSentryInitialized with SENTRY_DSN/SENTRY_ENVIRONMENT when set', () => {
|
|
63
|
+
process.env.SENTRY_DSN = 'https://example.com/1';
|
|
64
|
+
process.env.SENTRY_ENVIRONMENT = 'staging';
|
|
65
|
+
error_reporter_1.ErrorReporter.configure();
|
|
66
|
+
expect(sentry_client_1.ensureSentryInitialized).toHaveBeenCalledWith({
|
|
67
|
+
dsn: 'https://example.com/1',
|
|
68
|
+
environment: 'staging',
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('captureException', () => {
|
|
73
|
+
it('should not call Sentry.captureException when not initialized', () => {
|
|
74
|
+
;
|
|
75
|
+
sentry_client_1.isSentryInitialized.mockReturnValue(false);
|
|
76
|
+
error_reporter_1.ErrorReporter.captureException(new Error('boom'));
|
|
77
|
+
expect(Sentry.captureException).not.toHaveBeenCalled();
|
|
78
|
+
});
|
|
79
|
+
it('should call Sentry.captureException with context when initialized', () => {
|
|
80
|
+
;
|
|
81
|
+
sentry_client_1.isSentryInitialized.mockReturnValue(true);
|
|
82
|
+
const error = new Error('boom');
|
|
83
|
+
const context = { userId: '123' };
|
|
84
|
+
error_reporter_1.ErrorReporter.captureException(error, context);
|
|
85
|
+
expect(Sentry.captureException).toHaveBeenCalledWith(error, {
|
|
86
|
+
extra: context,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=error-reporter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-reporter.test.js","sourceRoot":"","sources":["../../src/__tests__/error-reporter.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAsC;AACtC,sDAAiD;AACjD,2DAGgC;AAEhC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;CAC5B,CAAC,CAAC,CAAA;AAEH,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE;IAClC,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;CACtD,CAAC,CAAC,CAAA;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAA;IAEvC,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,mBAAmB,EAAE,CAAA;QACxC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAA;QAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,GAAG,mBAAmB,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YAC1E,8BAAa,CAAC,SAAS,EAAE,CAAA;YAEzB,MAAM,CAAC,uCAAuB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;YACzF,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,uBAAuB,CAAA;YAChD,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,SAAS,CAAA;YAE1C,8BAAa,CAAC,SAAS,EAAE,CAAA;YAEzB,MAAM,CAAC,uCAAuB,CAAC,CAAC,oBAAoB,CAAC;gBACnD,GAAG,EAAE,uBAAuB;gBAC5B,WAAW,EAAE,SAAS;aACvB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,CAAC;YAAC,mCAAiC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAE1D,8BAAa,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAEjD,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC3E,CAAC;YAAC,mCAAiC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;YACzD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;YAC/B,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;YAEjC,8BAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAE9C,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE;gBAC1D,KAAK,EAAE,OAAO;aACf,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -7,6 +40,8 @@ const logger_1 = require("../logger");
|
|
|
7
40
|
const winston_1 = __importDefault(require("winston"));
|
|
8
41
|
const winston_daily_rotate_file_1 = __importDefault(require("winston-daily-rotate-file"));
|
|
9
42
|
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
43
|
+
const Sentry = __importStar(require("@sentry/node"));
|
|
44
|
+
const sentry_transport_1 = require("../sentry-transport");
|
|
10
45
|
jest.mock('winston', () => {
|
|
11
46
|
const mockFormat = {
|
|
12
47
|
combine: jest.fn().mockReturnValue('combined-format'),
|
|
@@ -36,6 +71,14 @@ jest.mock('winston', () => {
|
|
|
36
71
|
};
|
|
37
72
|
});
|
|
38
73
|
jest.mock('winston-daily-rotate-file');
|
|
74
|
+
jest.mock('../sentry-transport', () => ({
|
|
75
|
+
SentryTransport: jest.fn().mockImplementation(() => ({
|
|
76
|
+
log: jest.fn(),
|
|
77
|
+
})),
|
|
78
|
+
}));
|
|
79
|
+
jest.mock('@sentry/node', () => ({
|
|
80
|
+
close: jest.fn().mockResolvedValue(true),
|
|
81
|
+
}));
|
|
39
82
|
jest.mock('cycle', () => ({
|
|
40
83
|
decycle: jest.fn((object) => object),
|
|
41
84
|
}));
|
|
@@ -64,6 +107,8 @@ describe('Logger', () => {
|
|
|
64
107
|
delete process.env.LOG_FILE_MAX_AGE;
|
|
65
108
|
delete process.env.LOG_FILE_FORMAT;
|
|
66
109
|
delete process.env.TZ;
|
|
110
|
+
delete process.env.SENTRY_DSN;
|
|
111
|
+
delete process.env.SENTRY_LOG_LEVEL;
|
|
67
112
|
});
|
|
68
113
|
afterEach(() => {
|
|
69
114
|
process.env = originalEnvironment;
|
|
@@ -207,6 +252,25 @@ describe('Logger', () => {
|
|
|
207
252
|
const objectStackResult = printfCallback(objectStackInfo);
|
|
208
253
|
expect(objectStackResult).toContain('{"trace":"stack trace"}');
|
|
209
254
|
});
|
|
255
|
+
it('should not add SentryTransport when SENTRY_DSN is unset', () => {
|
|
256
|
+
delete process.env.SENTRY_DSN;
|
|
257
|
+
logger_1.Logger.configure('test');
|
|
258
|
+
expect(sentry_transport_1.SentryTransport).not.toHaveBeenCalled();
|
|
259
|
+
});
|
|
260
|
+
it('should add SentryTransport when SENTRY_DSN is set', () => {
|
|
261
|
+
process.env.SENTRY_DSN = 'https://example.com/1';
|
|
262
|
+
logger_1.Logger.configure('test');
|
|
263
|
+
expect(sentry_transport_1.SentryTransport).toHaveBeenCalledWith(expect.objectContaining({
|
|
264
|
+
dsn: 'https://example.com/1',
|
|
265
|
+
level: 'warn',
|
|
266
|
+
}));
|
|
267
|
+
});
|
|
268
|
+
it('should use SENTRY_LOG_LEVEL for the SentryTransport level when provided', () => {
|
|
269
|
+
process.env.SENTRY_DSN = 'https://example.com/1';
|
|
270
|
+
process.env.SENTRY_LOG_LEVEL = 'error';
|
|
271
|
+
logger_1.Logger.configure('test');
|
|
272
|
+
expect(sentry_transport_1.SentryTransport).toHaveBeenCalledWith(expect.objectContaining({ level: 'error' }));
|
|
273
|
+
});
|
|
210
274
|
});
|
|
211
275
|
describe('getTimestamp', () => {
|
|
212
276
|
it('should use TZ environment variable when provided and valid', () => {
|
|
@@ -272,6 +336,22 @@ describe('Logger', () => {
|
|
|
272
336
|
expect(mockWinstonLogger.error).toHaveBeenCalledWith('Error message', error);
|
|
273
337
|
});
|
|
274
338
|
});
|
|
339
|
+
describe('closeAll with Sentry', () => {
|
|
340
|
+
beforeEach(() => {
|
|
341
|
+
delete process.env.SENTRY_DSN;
|
|
342
|
+
});
|
|
343
|
+
it('should not call Sentry.close when SENTRY_DSN is unset', () => {
|
|
344
|
+
logger_1.Logger.configure('sentry-close-test');
|
|
345
|
+
logger_1.Logger.closeAll();
|
|
346
|
+
expect(Sentry.close).not.toHaveBeenCalled();
|
|
347
|
+
});
|
|
348
|
+
it('should call Sentry.close(2000) when SENTRY_DSN is set', () => {
|
|
349
|
+
process.env.SENTRY_DSN = 'https://example.com/1';
|
|
350
|
+
logger_1.Logger.configure('sentry-close-test');
|
|
351
|
+
logger_1.Logger.closeAll();
|
|
352
|
+
expect(Sentry.close).toHaveBeenCalledWith(2000);
|
|
353
|
+
});
|
|
354
|
+
});
|
|
275
355
|
describe('process event handlers', () => {
|
|
276
356
|
it('should register events for unhandledRejection and uncaughtException', () => {
|
|
277
357
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../src/__tests__/logger.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../src/__tests__/logger.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-client.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/sentry-client.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const mockSentryInit = jest.fn();
|
|
4
|
+
jest.mock('@sentry/node', () => ({
|
|
5
|
+
init: mockSentryInit,
|
|
6
|
+
}));
|
|
7
|
+
jest.mock('../sentry/sentry-release', () => ({
|
|
8
|
+
detectAppRelease: jest.fn().mockReturnValue('detected-app@1.0.0'),
|
|
9
|
+
}));
|
|
10
|
+
function freshSentryClient() {
|
|
11
|
+
return require('../sentry/sentry-client');
|
|
12
|
+
}
|
|
13
|
+
describe('sentry-client', () => {
|
|
14
|
+
const originalEnvironment = process.env;
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
jest.clearAllMocks();
|
|
17
|
+
jest.resetModules();
|
|
18
|
+
process.env = { ...originalEnvironment };
|
|
19
|
+
delete process.env.NODE_ENV;
|
|
20
|
+
delete process.env.SENTRY_RELEASE;
|
|
21
|
+
});
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
process.env = originalEnvironment;
|
|
24
|
+
});
|
|
25
|
+
describe('ensureSentryInitialized', () => {
|
|
26
|
+
it('should call Sentry.init with the given dsn and environment', () => {
|
|
27
|
+
const fresh = freshSentryClient();
|
|
28
|
+
fresh.ensureSentryInitialized({
|
|
29
|
+
dsn: 'https://example.com/1',
|
|
30
|
+
environment: 'staging',
|
|
31
|
+
});
|
|
32
|
+
expect(mockSentryInit).toHaveBeenCalledWith(expect.objectContaining({
|
|
33
|
+
dsn: 'https://example.com/1',
|
|
34
|
+
environment: 'staging',
|
|
35
|
+
}));
|
|
36
|
+
});
|
|
37
|
+
it('should call Sentry.init only once across multiple invocations', () => {
|
|
38
|
+
const fresh = freshSentryClient();
|
|
39
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/1' });
|
|
40
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/2' });
|
|
41
|
+
expect(mockSentryInit).toHaveBeenCalledTimes(1);
|
|
42
|
+
});
|
|
43
|
+
it('should call Sentry.init again after resetSentryInitialized', () => {
|
|
44
|
+
const fresh = freshSentryClient();
|
|
45
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/1' });
|
|
46
|
+
fresh.resetSentryInitialized();
|
|
47
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/2' });
|
|
48
|
+
expect(mockSentryInit).toHaveBeenCalledTimes(2);
|
|
49
|
+
});
|
|
50
|
+
it('should filter out OnUncaughtException and OnUnhandledRejection integrations', () => {
|
|
51
|
+
const fresh = freshSentryClient();
|
|
52
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/1' });
|
|
53
|
+
const calls = mockSentryInit.mock.calls;
|
|
54
|
+
const initOptions = calls[0][0];
|
|
55
|
+
const filtered = initOptions.integrations([
|
|
56
|
+
{ name: 'OnUncaughtException' },
|
|
57
|
+
{ name: 'OnUnhandledRejection' },
|
|
58
|
+
{ name: 'Http' },
|
|
59
|
+
]);
|
|
60
|
+
expect(filtered).toEqual([{ name: 'Http' }]);
|
|
61
|
+
});
|
|
62
|
+
it('should prefer SENTRY_RELEASE env var over detectAppRelease', () => {
|
|
63
|
+
process.env.SENTRY_RELEASE = 'env-app@2.0.0';
|
|
64
|
+
const fresh = freshSentryClient();
|
|
65
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/1' });
|
|
66
|
+
expect(mockSentryInit).toHaveBeenCalledWith(expect.objectContaining({ release: 'env-app@2.0.0' }));
|
|
67
|
+
});
|
|
68
|
+
it('should fall back to detectAppRelease when SENTRY_RELEASE is unset', () => {
|
|
69
|
+
const fresh = freshSentryClient();
|
|
70
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/1' });
|
|
71
|
+
expect(mockSentryInit).toHaveBeenCalledWith(expect.objectContaining({ release: 'detected-app@1.0.0' }));
|
|
72
|
+
});
|
|
73
|
+
it('should default environment to NODE_ENV when not provided', () => {
|
|
74
|
+
process.env.NODE_ENV = 'test-environment';
|
|
75
|
+
const fresh = freshSentryClient();
|
|
76
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/1' });
|
|
77
|
+
expect(mockSentryInit).toHaveBeenCalledWith(expect.objectContaining({ environment: 'test-environment' }));
|
|
78
|
+
});
|
|
79
|
+
it('should default environment to production when NODE_ENV is unset', () => {
|
|
80
|
+
const fresh = freshSentryClient();
|
|
81
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/1' });
|
|
82
|
+
expect(mockSentryInit).toHaveBeenCalledWith(expect.objectContaining({ environment: 'production' }));
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
describe('isSentryInitialized', () => {
|
|
86
|
+
it('should return false before ensureSentryInitialized is called', () => {
|
|
87
|
+
const fresh = freshSentryClient();
|
|
88
|
+
expect(fresh.isSentryInitialized()).toBe(false);
|
|
89
|
+
});
|
|
90
|
+
it('should return true after ensureSentryInitialized is called', () => {
|
|
91
|
+
const fresh = freshSentryClient();
|
|
92
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/1' });
|
|
93
|
+
expect(fresh.isSentryInitialized()).toBe(true);
|
|
94
|
+
});
|
|
95
|
+
it('should return false after resetSentryInitialized is called', () => {
|
|
96
|
+
const fresh = freshSentryClient();
|
|
97
|
+
fresh.ensureSentryInitialized({ dsn: 'https://example.com/1' });
|
|
98
|
+
fresh.resetSentryInitialized();
|
|
99
|
+
expect(fresh.isSentryInitialized()).toBe(false);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
describe('toSeverityLevel', () => {
|
|
103
|
+
it('should map "warn" to "warning"', () => {
|
|
104
|
+
const fresh = freshSentryClient();
|
|
105
|
+
expect(fresh.toSeverityLevel('warn')).toBe('warning');
|
|
106
|
+
});
|
|
107
|
+
it.each(['fatal', 'error', 'log', 'info', 'debug'])('should pass "%s" through unchanged', (level) => {
|
|
108
|
+
const fresh = freshSentryClient();
|
|
109
|
+
expect(fresh.toSeverityLevel(level)).toBe(level);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=sentry-client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-client.test.js","sourceRoot":"","sources":["../../src/__tests__/sentry-client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-release.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/sentry-release.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const sentry_release_1 = require("../sentry/sentry-release");
|
|
9
|
+
jest.mock('node:fs');
|
|
10
|
+
describe('detectAppRelease', () => {
|
|
11
|
+
const originalCwd = process.cwd.bind(process);
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
jest.clearAllMocks();
|
|
14
|
+
process.cwd = jest.fn().mockReturnValue('/app');
|
|
15
|
+
});
|
|
16
|
+
afterEach(() => {
|
|
17
|
+
process.cwd = originalCwd;
|
|
18
|
+
});
|
|
19
|
+
it('should return undefined when package.json does not exist', () => {
|
|
20
|
+
;
|
|
21
|
+
node_fs_1.default.existsSync.mockReturnValue(false);
|
|
22
|
+
const result = (0, sentry_release_1.detectAppRelease)();
|
|
23
|
+
expect(result).toBeUndefined();
|
|
24
|
+
expect(node_fs_1.default.existsSync).toHaveBeenCalledWith(node_path_1.default.join('/app', 'package.json'));
|
|
25
|
+
});
|
|
26
|
+
it('should return undefined when version field is missing', () => {
|
|
27
|
+
;
|
|
28
|
+
node_fs_1.default.existsSync.mockReturnValue(true);
|
|
29
|
+
node_fs_1.default.readFileSync.mockReturnValue(JSON.stringify({ name: 'my-app' }));
|
|
30
|
+
const result = (0, sentry_release_1.detectAppRelease)();
|
|
31
|
+
expect(result).toBeUndefined();
|
|
32
|
+
});
|
|
33
|
+
it('should return undefined when package.json parsing fails', () => {
|
|
34
|
+
;
|
|
35
|
+
node_fs_1.default.existsSync.mockReturnValue(true);
|
|
36
|
+
node_fs_1.default.readFileSync.mockReturnValue('{ invalid json');
|
|
37
|
+
const result = (0, sentry_release_1.detectAppRelease)();
|
|
38
|
+
expect(result).toBeUndefined();
|
|
39
|
+
});
|
|
40
|
+
it('should return "<name>@<version>" when both fields are present', () => {
|
|
41
|
+
;
|
|
42
|
+
node_fs_1.default.existsSync.mockReturnValue(true);
|
|
43
|
+
node_fs_1.default.readFileSync.mockReturnValue(JSON.stringify({ name: 'my-app', version: '1.2.3' }));
|
|
44
|
+
const result = (0, sentry_release_1.detectAppRelease)();
|
|
45
|
+
expect(result).toBe('my-app@1.2.3');
|
|
46
|
+
});
|
|
47
|
+
it('should return only the version when name field is missing', () => {
|
|
48
|
+
;
|
|
49
|
+
node_fs_1.default.existsSync.mockReturnValue(true);
|
|
50
|
+
node_fs_1.default.readFileSync.mockReturnValue(JSON.stringify({ version: '1.2.3' }));
|
|
51
|
+
const result = (0, sentry_release_1.detectAppRelease)();
|
|
52
|
+
expect(result).toBe('1.2.3');
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=sentry-release.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-release.test.js","sourceRoot":"","sources":["../../src/__tests__/sentry-release.test.ts"],"names":[],"mappings":";;;;;AAAA,sDAAwB;AACxB,0DAA4B;AAC5B,6DAA2D;AAE3D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAEpB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE7C,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,GAAG,WAAW,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,CAAC;QAAC,iBAAE,CAAC,UAAwB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QAEpD,MAAM,MAAM,GAAG,IAAA,iCAAgB,GAAE,CAAA;QAEjC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;QAC9B,MAAM,CAAC,iBAAE,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACxC,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAClC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,CAAC;QAAC,iBAAE,CAAC,UAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,CAClD;QAAC,iBAAE,CAAC,YAA0B,CAAC,eAAe,CAC7C,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CACnC,CAAA;QAED,MAAM,MAAM,GAAG,IAAA,iCAAgB,GAAE,CAAA;QAEjC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,CAAC;QAAC,iBAAE,CAAC,UAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,CAClD;QAAC,iBAAE,CAAC,YAA0B,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAA;QAEjE,MAAM,MAAM,GAAG,IAAA,iCAAgB,GAAE,CAAA;QAEjC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,CAAC;QAAC,iBAAE,CAAC,UAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,CAClD;QAAC,iBAAE,CAAC,YAA0B,CAAC,eAAe,CAC7C,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CACrD,CAAA;QAED,MAAM,MAAM,GAAG,IAAA,iCAAgB,GAAE,CAAA;QAEjC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,CAAC;QAAC,iBAAE,CAAC,UAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,CAClD;QAAC,iBAAE,CAAC,YAA0B,CAAC,eAAe,CAC7C,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CACrC,CAAA;QAED,MAAM,MAAM,GAAG,IAAA,iCAAgB,GAAE,CAAA;QAEjC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-transport.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/sentry-transport.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const Sentry = __importStar(require("@sentry/node"));
|
|
37
|
+
const sentry_transport_1 = require("../sentry-transport");
|
|
38
|
+
const sentry_client_1 = require("../sentry/sentry-client");
|
|
39
|
+
jest.mock('@sentry/node', () => ({
|
|
40
|
+
captureException: jest.fn(),
|
|
41
|
+
captureMessage: jest.fn(),
|
|
42
|
+
flush: jest.fn().mockResolvedValue(true),
|
|
43
|
+
}));
|
|
44
|
+
jest.mock('../sentry/sentry-client', () => ({
|
|
45
|
+
ensureSentryInitialized: jest.fn(),
|
|
46
|
+
toSeverityLevel: jest.fn((level) => level === 'warn' ? 'warning' : level),
|
|
47
|
+
}));
|
|
48
|
+
describe('SentryTransport', () => {
|
|
49
|
+
let transport;
|
|
50
|
+
beforeEach(() => {
|
|
51
|
+
jest.clearAllMocks();
|
|
52
|
+
transport = new sentry_transport_1.SentryTransport({ dsn: 'https://example.com/1' });
|
|
53
|
+
});
|
|
54
|
+
it('should call ensureSentryInitialized with the given options on construction', () => {
|
|
55
|
+
expect(sentry_client_1.ensureSentryInitialized).toHaveBeenCalledWith({
|
|
56
|
+
dsn: 'https://example.com/1',
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
it('should call captureException when level is error and stack is present', (done) => {
|
|
60
|
+
transport.log({ level: 'error', message: 'boom', stack: 'Error: boom\n at x' }, () => {
|
|
61
|
+
expect(Sentry.captureException).toHaveBeenCalledWith(expect.objectContaining({
|
|
62
|
+
message: 'boom',
|
|
63
|
+
stack: 'Error: boom\n at x',
|
|
64
|
+
}));
|
|
65
|
+
done();
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
it('should preserve the original error name parsed from the stack', (done) => {
|
|
69
|
+
transport.log({
|
|
70
|
+
level: 'error',
|
|
71
|
+
message: 'boom',
|
|
72
|
+
stack: 'TypeError: boom\n at x',
|
|
73
|
+
}, () => {
|
|
74
|
+
expect(Sentry.captureException).toHaveBeenCalledWith(expect.objectContaining({ name: 'TypeError' }));
|
|
75
|
+
done();
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
it('should emit an "error" event when Sentry.flush rejects', async () => {
|
|
79
|
+
;
|
|
80
|
+
Sentry.flush.mockRejectedValueOnce(new Error('network'));
|
|
81
|
+
const onError = jest.fn();
|
|
82
|
+
transport.on('error', onError);
|
|
83
|
+
const callback = jest.fn();
|
|
84
|
+
transport.log({ level: 'error', message: 'boom' }, callback);
|
|
85
|
+
await Promise.resolve();
|
|
86
|
+
await Promise.resolve();
|
|
87
|
+
expect(onError).toHaveBeenCalledWith(expect.any(Error));
|
|
88
|
+
expect(callback).toHaveBeenCalled();
|
|
89
|
+
});
|
|
90
|
+
it('should call captureMessage with "error" severity when level is error and no stack', (done) => {
|
|
91
|
+
transport.log({ level: 'error', message: 'boom' }, () => {
|
|
92
|
+
expect(Sentry.captureMessage).toHaveBeenCalledWith('boom', 'error');
|
|
93
|
+
done();
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
it('should call captureMessage with "warning" severity when level is warn', () => {
|
|
97
|
+
const callback = jest.fn();
|
|
98
|
+
transport.log({ level: 'warn', message: 'careful' }, callback);
|
|
99
|
+
expect(Sentry.captureMessage).toHaveBeenCalledWith('careful', 'warning');
|
|
100
|
+
});
|
|
101
|
+
it('should await Sentry.flush before invoking callback for error level', async () => {
|
|
102
|
+
const callback = jest.fn();
|
|
103
|
+
transport.log({ level: 'error', message: 'boom' }, callback);
|
|
104
|
+
expect(callback).not.toHaveBeenCalled();
|
|
105
|
+
expect(Sentry.flush).toHaveBeenCalledWith(2000);
|
|
106
|
+
await Promise.resolve();
|
|
107
|
+
await Promise.resolve();
|
|
108
|
+
expect(callback).toHaveBeenCalled();
|
|
109
|
+
});
|
|
110
|
+
it('should invoke callback synchronously without flush for non-error levels', () => {
|
|
111
|
+
const callback = jest.fn();
|
|
112
|
+
transport.log({ level: 'info', message: 'hello' }, callback);
|
|
113
|
+
expect(Sentry.flush).not.toHaveBeenCalled();
|
|
114
|
+
expect(callback).toHaveBeenCalled();
|
|
115
|
+
});
|
|
116
|
+
it('should not call captureException or captureMessage for info level', () => {
|
|
117
|
+
transport.log({ level: 'info', message: 'hello' }, jest.fn());
|
|
118
|
+
expect(Sentry.captureException).not.toHaveBeenCalled();
|
|
119
|
+
expect(Sentry.captureMessage).not.toHaveBeenCalled();
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=sentry-transport.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-transport.test.js","sourceRoot":"","sources":["../../src/__tests__/sentry-transport.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-reporter.d.ts","sourceRoot":"","sources":["../src/error-reporter.ts"],"names":[],"mappings":"AAYA,qBAAa,aAAa;WAIV,SAAS,IAAI,IAAI;WAgBjB,gBAAgB,CAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;CAIR"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ErrorReporter = void 0;
|
|
37
|
+
const Sentry = __importStar(require("@sentry/node"));
|
|
38
|
+
const sentry_client_1 = require("./sentry/sentry-client");
|
|
39
|
+
class ErrorReporter {
|
|
40
|
+
static configure() {
|
|
41
|
+
if (!process.env.SENTRY_DSN)
|
|
42
|
+
return;
|
|
43
|
+
(0, sentry_client_1.ensureSentryInitialized)({
|
|
44
|
+
dsn: process.env.SENTRY_DSN,
|
|
45
|
+
environment: process.env.SENTRY_ENVIRONMENT,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
static captureException(error, context) {
|
|
49
|
+
if (!(0, sentry_client_1.isSentryInitialized)())
|
|
50
|
+
return;
|
|
51
|
+
Sentry.captureException(error, { extra: context });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.ErrorReporter = ErrorReporter;
|
|
55
|
+
//# sourceMappingURL=error-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-reporter.js","sourceRoot":"","sources":["../src/error-reporter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAsC;AACtC,0DAG+B;AAQ/B,MAAa,aAAa;IAIjB,MAAM,CAAC,SAAS;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU;YAAE,OAAM;QACnC,IAAA,uCAAuB,EAAC;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;YAC3B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;SAC5C,CAAC,CAAA;IACJ,CAAC;IAUM,MAAM,CAAC,gBAAgB,CAC5B,KAAY,EACZ,OAAiC;QAEjC,IAAI,CAAC,IAAA,mCAAmB,GAAE;YAAE,OAAM;QAClC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IACpD,CAAC;CACF;AA3BD,sCA2BC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -16,5 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./config"), exports);
|
|
18
18
|
__exportStar(require("./discord"), exports);
|
|
19
|
+
__exportStar(require("./error-reporter"), exports);
|
|
19
20
|
__exportStar(require("./logger"), exports);
|
|
21
|
+
__exportStar(require("./sentry-transport"), exports);
|
|
20
22
|
//# 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":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,4CAAyB;AACzB,2CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,4CAAyB;AACzB,mDAAgC;AAChC,2CAAwB;AACxB,qDAAkC"}
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAqBA,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAEzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IAEvC,OAAO;IAUA,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAUhE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAU1C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;WAyBpC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;WA0HnC,QAAQ,IAAI,IAAI;IAe9B,MAAM,CAAC,YAAY,IAAI,MAAM,MAAM;CAKpC"}
|
package/dist/logger.js
CHANGED
|
@@ -41,6 +41,9 @@ const winston_1 = __importStar(require("winston"));
|
|
|
41
41
|
const winston_daily_rotate_file_1 = __importDefault(require("winston-daily-rotate-file"));
|
|
42
42
|
const cycle_1 = __importDefault(require("cycle"));
|
|
43
43
|
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
44
|
+
const Sentry = __importStar(require("@sentry/node"));
|
|
45
|
+
const sentry_transport_1 = require("./sentry-transport");
|
|
46
|
+
const sentry_client_1 = require("./sentry/sentry-client");
|
|
44
47
|
const getTimestampFormatter = () => {
|
|
45
48
|
const timezone = process.env.TZ && moment_timezone_1.default.tz.zone(process.env.TZ)
|
|
46
49
|
? process.env.TZ
|
|
@@ -137,15 +140,21 @@ class Logger {
|
|
|
137
140
|
format: fileFormat,
|
|
138
141
|
auditFile: `${logDirectory}/audit.json`,
|
|
139
142
|
});
|
|
140
|
-
const
|
|
141
|
-
transports
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
143
|
+
const transports = [
|
|
144
|
+
new winston_1.default.transports.Console({
|
|
145
|
+
level: logLevel,
|
|
146
|
+
format: consoleFormat,
|
|
147
|
+
}),
|
|
148
|
+
transportRotateFile,
|
|
149
|
+
];
|
|
150
|
+
if (process.env.SENTRY_DSN) {
|
|
151
|
+
transports.push(new sentry_transport_1.SentryTransport({
|
|
152
|
+
level: process.env.SENTRY_LOG_LEVEL ?? 'warn',
|
|
153
|
+
dsn: process.env.SENTRY_DSN,
|
|
154
|
+
environment: process.env.SENTRY_ENVIRONMENT,
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
const logger = winston_1.default.createLogger({ transports });
|
|
149
158
|
const instance = new Logger(logger);
|
|
150
159
|
this.cache.set(category, instance);
|
|
151
160
|
return instance;
|
|
@@ -155,6 +164,12 @@ class Logger {
|
|
|
155
164
|
instance.logger.close();
|
|
156
165
|
}
|
|
157
166
|
this.cache.clear();
|
|
167
|
+
if (process.env.SENTRY_DSN) {
|
|
168
|
+
Sentry.close(2000).catch((error) => {
|
|
169
|
+
console.error('Failed to close Sentry client', error);
|
|
170
|
+
});
|
|
171
|
+
(0, sentry_client_1.resetSentryInitialized)();
|
|
172
|
+
}
|
|
158
173
|
}
|
|
159
174
|
static getTimestamp() {
|
|
160
175
|
return getTimestampFormatter;
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAyC;AACzC,0FAA8D;AAC9D,kDAAyB;AACzB,sEAAoC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as Sentry from '@sentry/node';
|
|
2
|
+
export interface SentryClientOptions {
|
|
3
|
+
dsn: string;
|
|
4
|
+
environment?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function ensureSentryInitialized(options: SentryClientOptions): void;
|
|
7
|
+
export declare function toSeverityLevel(level: string): Sentry.SeverityLevel;
|
|
8
|
+
export declare function isSentryInitialized(): boolean;
|
|
9
|
+
export declare function resetSentryInitialized(): void;
|
|
10
|
+
//# sourceMappingURL=sentry-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-client.d.ts","sourceRoot":"","sources":["../../src/sentry/sentry-client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAGtC,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAcD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAgB1E;AAWD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa,CAEnE;AAOD,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAQD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ensureSentryInitialized = ensureSentryInitialized;
|
|
37
|
+
exports.toSeverityLevel = toSeverityLevel;
|
|
38
|
+
exports.isSentryInitialized = isSentryInitialized;
|
|
39
|
+
exports.resetSentryInitialized = resetSentryInitialized;
|
|
40
|
+
const Sentry = __importStar(require("@sentry/node"));
|
|
41
|
+
const sentry_release_1 = require("./sentry-release");
|
|
42
|
+
let initialized = false;
|
|
43
|
+
function ensureSentryInitialized(options) {
|
|
44
|
+
if (initialized)
|
|
45
|
+
return;
|
|
46
|
+
Sentry.init({
|
|
47
|
+
dsn: options.dsn,
|
|
48
|
+
environment: options.environment ?? process.env.NODE_ENV ?? 'production',
|
|
49
|
+
release: process.env.SENTRY_RELEASE ?? (0, sentry_release_1.detectAppRelease)(),
|
|
50
|
+
integrations: (integrations) => integrations.filter((integration) => integration.name !== 'OnUncaughtException' &&
|
|
51
|
+
integration.name !== 'OnUnhandledRejection'),
|
|
52
|
+
});
|
|
53
|
+
initialized = true;
|
|
54
|
+
}
|
|
55
|
+
function toSeverityLevel(level) {
|
|
56
|
+
return level === 'warn' ? 'warning' : level;
|
|
57
|
+
}
|
|
58
|
+
function isSentryInitialized() {
|
|
59
|
+
return initialized;
|
|
60
|
+
}
|
|
61
|
+
function resetSentryInitialized() {
|
|
62
|
+
initialized = false;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=sentry-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-client.js","sourceRoot":"","sources":["../../src/sentry/sentry-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,0DAgBC;AAWD,0CAEC;AAOD,kDAEC;AAQD,wDAEC;AApED,qDAAsC;AACtC,qDAAmD;AAUnD,IAAI,WAAW,GAAG,KAAK,CAAA;AASvB,SAAgB,uBAAuB,CAAC,OAA4B;IAClE,IAAI,WAAW;QAAE,OAAM;IACvB,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;QACxE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAA,iCAAgB,GAAE;QAGzD,YAAY,EAAE,CAAC,YAAY,EAAE,EAAE,CAC7B,YAAY,CAAC,MAAM,CACjB,CAAC,WAAW,EAAE,EAAE,CACd,WAAW,CAAC,IAAI,KAAK,qBAAqB;YAC1C,WAAW,CAAC,IAAI,KAAK,sBAAsB,CAC9C;KACJ,CAAC,CAAA;IACF,WAAW,GAAG,IAAI,CAAA;AACpB,CAAC;AAWD,SAAgB,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,KAA8B,CAAA;AACvE,CAAC;AAOD,SAAgB,mBAAmB;IACjC,OAAO,WAAW,CAAA;AACpB,CAAC;AAQD,SAAgB,sBAAsB;IACpC,WAAW,GAAG,KAAK,CAAA;AACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-release.d.ts","sourceRoot":"","sources":["../../src/sentry/sentry-release.ts"],"names":[],"mappings":"AAiBA,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAkBrD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.detectAppRelease = detectAppRelease;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
function detectAppRelease() {
|
|
10
|
+
const packageJsonPath = node_path_1.default.join(process.cwd(), 'package.json');
|
|
11
|
+
if (!node_fs_1.default.existsSync(packageJsonPath)) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
const packageJson = JSON.parse(node_fs_1.default.readFileSync(packageJsonPath, 'utf8'));
|
|
16
|
+
if (!packageJson.version) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return packageJson.name
|
|
20
|
+
? `${packageJson.name}@${packageJson.version}`
|
|
21
|
+
: packageJson.version;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=sentry-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-release.js","sourceRoot":"","sources":["../../src/sentry/sentry-release.ts"],"names":[],"mappings":";;;;;AAiBA,4CAkBC;AA7BD,sDAAwB;AACxB,0DAA4B;AAU5B,SAAgB,gBAAgB;IAC9B,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAA;IAChE,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,iBAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CACF,CAAA;QACxC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,WAAW,CAAC,IAAI;YACrB,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE;YAC9C,CAAC,CAAC,WAAW,CAAC,OAAO,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import TransportStream from 'winston-transport';
|
|
2
|
+
export interface SentryTransportOptions extends TransportStream.TransportStreamOptions {
|
|
3
|
+
dsn: string;
|
|
4
|
+
environment?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class SentryTransport extends TransportStream {
|
|
7
|
+
constructor(options: SentryTransportOptions);
|
|
8
|
+
log(info: Record<string, unknown>, callback: () => void): void;
|
|
9
|
+
private toError;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=sentry-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-transport.d.ts","sourceRoot":"","sources":["../src/sentry-transport.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAS/C,MAAM,WAAW,sBACf,SAAQ,eAAe,CAAC,sBAAsB;IAC9C,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAOD,qBAAa,eAAgB,SAAQ,eAAe;gBACtC,OAAO,EAAE,sBAAsB;IAW3C,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IA2B9D,OAAO,CAAC,OAAO;CAchB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.SentryTransport = void 0;
|
|
40
|
+
const Sentry = __importStar(require("@sentry/node"));
|
|
41
|
+
const winston_transport_1 = __importDefault(require("winston-transport"));
|
|
42
|
+
const sentry_client_1 = require("./sentry/sentry-client");
|
|
43
|
+
class SentryTransport extends winston_transport_1.default {
|
|
44
|
+
constructor(options) {
|
|
45
|
+
super(options);
|
|
46
|
+
(0, sentry_client_1.ensureSentryInitialized)(options);
|
|
47
|
+
}
|
|
48
|
+
log(info, callback) {
|
|
49
|
+
setImmediate(() => this.emit('logged', info));
|
|
50
|
+
const { level, message, ...rest } = info;
|
|
51
|
+
const messageText = typeof message === 'string' ? message : String(message);
|
|
52
|
+
if (level === 'error' && typeof rest.stack === 'string') {
|
|
53
|
+
Sentry.captureException(this.toError(messageText, rest.stack));
|
|
54
|
+
}
|
|
55
|
+
else if (level === 'error' || level === 'warn') {
|
|
56
|
+
Sentry.captureMessage(messageText, (0, sentry_client_1.toSeverityLevel)(level));
|
|
57
|
+
}
|
|
58
|
+
if (level === 'error') {
|
|
59
|
+
Sentry.flush(2000)
|
|
60
|
+
.catch((error) => {
|
|
61
|
+
this.emit('error', error);
|
|
62
|
+
})
|
|
63
|
+
.finally(() => {
|
|
64
|
+
callback();
|
|
65
|
+
});
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
callback();
|
|
69
|
+
}
|
|
70
|
+
toError(message, stack) {
|
|
71
|
+
const error = new Error(message);
|
|
72
|
+
const firstLine = stack.split('\n', 1)[0];
|
|
73
|
+
const name = firstLine.includes(': ')
|
|
74
|
+
? firstLine.slice(0, firstLine.indexOf(': '))
|
|
75
|
+
: undefined;
|
|
76
|
+
if (name) {
|
|
77
|
+
Object.defineProperty(error, 'name', { value: name, configurable: true });
|
|
78
|
+
}
|
|
79
|
+
Object.defineProperty(error, 'stack', { value: stack, configurable: true });
|
|
80
|
+
return error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.SentryTransport = SentryTransport;
|
|
84
|
+
//# sourceMappingURL=sentry-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-transport.js","sourceRoot":"","sources":["../src/sentry-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAsC;AACtC,0EAA+C;AAC/C,0DAG+B;AAgB/B,MAAa,eAAgB,SAAQ,2BAAe;IAClD,YAAY,OAA+B;QACzC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAA,uCAAuB,EAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IAQD,GAAG,CAAC,IAA6B,EAAE,QAAoB;QACrD,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;QAE7C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;QACxC,MAAM,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC3E,IAAI,KAAK,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAChE,CAAC;aAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACjD,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,IAAA,+BAAe,EAAC,KAAK,CAAC,CAAC,CAAA;QAC5D,CAAC;QAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YAEtB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;iBACf,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAGxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC3B,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,QAAQ,EAAE,CAAA;YACZ,CAAC,CAAC,CAAA;YACJ,OAAM;QACR,CAAC;QACD,QAAQ,EAAE,CAAA;IACZ,CAAC;IAEO,OAAO,CAAC,OAAe,EAAE,KAAa;QAC5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;QAGhC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,SAAS,CAAA;QACb,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3E,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AArDD,0CAqDC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@book000/node-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.25.1",
|
|
4
4
|
"description": "Self-Utility library",
|
|
5
5
|
"homepage": "https://github.com/book000/node-utils",
|
|
6
6
|
"bugs": {
|
|
@@ -18,11 +18,13 @@
|
|
|
18
18
|
"url": "git@github.com:book000/node-utils.git"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
+
"@sentry/node": "10.67.0",
|
|
21
22
|
"cycle": "1.0.3",
|
|
22
23
|
"jsonc-parser": "3.3.1",
|
|
23
|
-
"moment-timezone": "0.6.
|
|
24
|
+
"moment-timezone": "0.6.3",
|
|
24
25
|
"winston": "3.19.0",
|
|
25
|
-
"winston-daily-rotate-file": "5.0.0"
|
|
26
|
+
"winston-daily-rotate-file": "5.0.0",
|
|
27
|
+
"winston-transport": "4.9.0"
|
|
26
28
|
},
|
|
27
29
|
"devDependencies": {
|
|
28
30
|
"@book000/eslint-config": "1.16.14",
|