@tramvai/module-micro-sentry 3.24.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 +66 -0
- package/lib/browser.d.ts +5 -0
- package/lib/browser.js +28 -0
- package/lib/providers.browser.js +33 -0
- package/lib/providers.d.ts +3 -0
- package/lib/server.d.ts +5 -0
- package/lib/server.es.js +21 -0
- package/lib/server.js +26 -0
- package/lib/tokens.browser.js +6 -0
- package/lib/tokens.d.ts +8 -0
- package/lib/tokens.es.js +6 -0
- package/lib/tokens.js +11 -0
- package/package.json +29 -0
package/README.md
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Micro-sentry
|
|
2
|
+
|
|
3
|
+
Integration with [micro-sentry](https://github.com/taiga-family/micro-sentry).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
You need to install `@tramvai/module-micro-sentry`:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
yarn add @tramvai/module-micro-sentry
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
And connect to the project: `TramvaiMicroSentryModule`:
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { TramvaiMicroSentryModule } from '@tramvai/module-micro-sentry';
|
|
17
|
+
|
|
18
|
+
createApp({
|
|
19
|
+
modules: [TramvaiMicroSentryModule],
|
|
20
|
+
});
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
And make sure to add `SENTRY_DSN` environment on deployed stands. Otherwise module will not work.
|
|
24
|
+
|
|
25
|
+
## Explanation
|
|
26
|
+
|
|
27
|
+
### Environment variables
|
|
28
|
+
|
|
29
|
+
Required:
|
|
30
|
+
|
|
31
|
+
- `SENTRY_DSN` - [DSN](https://docs.sentry.io/product/sentry-basics/dsn-explainer/) of the app
|
|
32
|
+
|
|
33
|
+
## How to
|
|
34
|
+
|
|
35
|
+
### Send custom error
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
import { declareAction } from '@tramvai/core';
|
|
39
|
+
import { SENTRY_TOKEN } from '@tramvai/module-micro-sentry';
|
|
40
|
+
import { loadUsers } from './users';
|
|
41
|
+
|
|
42
|
+
export default declareAction({
|
|
43
|
+
name: 'loadUsers',
|
|
44
|
+
async fn() {
|
|
45
|
+
try {
|
|
46
|
+
await loadUsers();
|
|
47
|
+
} catch (e) {
|
|
48
|
+
microSentryClient.report(e);
|
|
49
|
+
throw e;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
deps: {
|
|
53
|
+
microSentryClient: MICRO_SENTRY_INSTANCE_TOKEN,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Exported tokens
|
|
59
|
+
|
|
60
|
+
#### `MICRO_SENTRY_INSTANCE_TOKEN`
|
|
61
|
+
|
|
62
|
+
Ready to use instance of micro-sentry
|
|
63
|
+
|
|
64
|
+
### `MICRO_SENTRY_OPTIONS_TOKEN`
|
|
65
|
+
|
|
66
|
+
Configuration options for micro-sentry
|
package/lib/browser.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './tokens';
|
|
2
|
+
export declare const TramvaiMicroSentryModule: import("@tinkoff/dippy/lib/modules/module.h").ModuleClass & Partial<import("@tinkoff/dippy/lib/modules/module.h").ModuleSecretParameters> & {
|
|
3
|
+
[x: string]: (...args: any[]) => import("@tramvai/core").ModuleType;
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=browser.d.ts.map
|
package/lib/browser.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { declareModule, provide } from '@tramvai/core';
|
|
2
|
+
import { ENV_MANAGER_TOKEN } from '@tramvai/module-common';
|
|
3
|
+
import { sharedProviders } from './providers.browser.js';
|
|
4
|
+
import { MICRO_SENTRY_OPTIONS_TOKEN } from './tokens.browser.js';
|
|
5
|
+
export { MICRO_SENTRY_INSTANCE_TOKEN, MICRO_SENTRY_OPTIONS_TOKEN } from './tokens.browser.js';
|
|
6
|
+
|
|
7
|
+
const TramvaiMicroSentryModule = declareModule({
|
|
8
|
+
name: 'TramvaiMicroSentryModule',
|
|
9
|
+
providers: [
|
|
10
|
+
provide({
|
|
11
|
+
provide: MICRO_SENTRY_OPTIONS_TOKEN,
|
|
12
|
+
useFactory: ({ envManager }) => {
|
|
13
|
+
const defaultOptions = {
|
|
14
|
+
environment: process.env.NODE_ENV,
|
|
15
|
+
dsn: envManager.get('SENTRY_DSN'),
|
|
16
|
+
};
|
|
17
|
+
return defaultOptions;
|
|
18
|
+
},
|
|
19
|
+
deps: {
|
|
20
|
+
envManager: ENV_MANAGER_TOKEN,
|
|
21
|
+
},
|
|
22
|
+
}),
|
|
23
|
+
...sharedProviders,
|
|
24
|
+
],
|
|
25
|
+
imports: [],
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
export { TramvaiMicroSentryModule };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { provide, commandLineListTokens } from '@tramvai/core';
|
|
2
|
+
import { ENV_USED_TOKEN } from '@tramvai/module-common';
|
|
3
|
+
import { BrowserMicroSentryClient } from '@micro-sentry/browser';
|
|
4
|
+
import { MICRO_SENTRY_INSTANCE_TOKEN, MICRO_SENTRY_OPTIONS_TOKEN } from './tokens.browser.js';
|
|
5
|
+
|
|
6
|
+
const sharedProviders = [
|
|
7
|
+
provide({
|
|
8
|
+
provide: ENV_USED_TOKEN,
|
|
9
|
+
useValue: [{ key: 'SENTRY_DSN' }],
|
|
10
|
+
}),
|
|
11
|
+
provide({
|
|
12
|
+
provide: MICRO_SENTRY_INSTANCE_TOKEN,
|
|
13
|
+
useFactory: ({ microSentryOptions }) => {
|
|
14
|
+
return new BrowserMicroSentryClient(microSentryOptions);
|
|
15
|
+
},
|
|
16
|
+
deps: {
|
|
17
|
+
microSentryOptions: MICRO_SENTRY_OPTIONS_TOKEN,
|
|
18
|
+
},
|
|
19
|
+
}),
|
|
20
|
+
provide({
|
|
21
|
+
provide: commandLineListTokens.init,
|
|
22
|
+
useFactory: ({ microSentry }) => {
|
|
23
|
+
return function initMicroSentry() {
|
|
24
|
+
return microSentry;
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
deps: {
|
|
28
|
+
microSentry: MICRO_SENTRY_INSTANCE_TOKEN,
|
|
29
|
+
},
|
|
30
|
+
}),
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
export { sharedProviders };
|
package/lib/server.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './tokens';
|
|
2
|
+
export declare const TramvaiMicroSentryModule: import("@tinkoff/dippy/lib/modules/module.h").ModuleClass & Partial<import("@tinkoff/dippy/lib/modules/module.h").ModuleSecretParameters> & {
|
|
3
|
+
[x: string]: (...args: any[]) => import("@tramvai/core").ModuleType;
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=server.d.ts.map
|
package/lib/server.es.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { declareModule, provide } from '@tramvai/core';
|
|
2
|
+
import { MICRO_SENTRY_INSTANCE_TOKEN } from './tokens.es.js';
|
|
3
|
+
export { MICRO_SENTRY_INSTANCE_TOKEN, MICRO_SENTRY_OPTIONS_TOKEN } from './tokens.es.js';
|
|
4
|
+
|
|
5
|
+
const TramvaiMicroSentryModule = declareModule({
|
|
6
|
+
name: 'TramvaiMicroSentryModule',
|
|
7
|
+
imports: [],
|
|
8
|
+
providers: [
|
|
9
|
+
provide({
|
|
10
|
+
provide: MICRO_SENTRY_INSTANCE_TOKEN,
|
|
11
|
+
useFactory: () => {
|
|
12
|
+
if (process.env.NODE_ENV === 'development') {
|
|
13
|
+
console.warn('micro-sentry will work only in browser environment, and will not work in server environment. If you need error logging both on server and client, take a look on @tramvai/module-sentry package');
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
},
|
|
17
|
+
}),
|
|
18
|
+
],
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export { TramvaiMicroSentryModule };
|
package/lib/server.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var core = require('@tramvai/core');
|
|
6
|
+
var tokens = require('./tokens.js');
|
|
7
|
+
|
|
8
|
+
const TramvaiMicroSentryModule = core.declareModule({
|
|
9
|
+
name: 'TramvaiMicroSentryModule',
|
|
10
|
+
imports: [],
|
|
11
|
+
providers: [
|
|
12
|
+
core.provide({
|
|
13
|
+
provide: tokens.MICRO_SENTRY_INSTANCE_TOKEN,
|
|
14
|
+
useFactory: () => {
|
|
15
|
+
if (process.env.NODE_ENV === 'development') {
|
|
16
|
+
console.warn('micro-sentry will work only in browser environment, and will not work in server environment. If you need error logging both on server and client, take a look on @tramvai/module-sentry package');
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
},
|
|
20
|
+
}),
|
|
21
|
+
],
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
exports.MICRO_SENTRY_INSTANCE_TOKEN = tokens.MICRO_SENTRY_INSTANCE_TOKEN;
|
|
25
|
+
exports.MICRO_SENTRY_OPTIONS_TOKEN = tokens.MICRO_SENTRY_OPTIONS_TOKEN;
|
|
26
|
+
exports.TramvaiMicroSentryModule = TramvaiMicroSentryModule;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createToken } from '@tramvai/core';
|
|
2
|
+
|
|
3
|
+
const MICRO_SENTRY_INSTANCE_TOKEN = createToken('MICRO_SENTRY_INSTANCE_TOKEN');
|
|
4
|
+
const MICRO_SENTRY_OPTIONS_TOKEN = createToken('MICRO_SENTRY_OPTIONS_TOKEN');
|
|
5
|
+
|
|
6
|
+
export { MICRO_SENTRY_INSTANCE_TOKEN, MICRO_SENTRY_OPTIONS_TOKEN };
|
package/lib/tokens.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BrowserSentryClientOptions, BrowserMicroSentryClient } from '@micro-sentry/browser';
|
|
2
|
+
export declare const MICRO_SENTRY_INSTANCE_TOKEN: (BrowserMicroSentryClient & {
|
|
3
|
+
__type?: "base token" | undefined;
|
|
4
|
+
}) | null;
|
|
5
|
+
export declare const MICRO_SENTRY_OPTIONS_TOKEN: BrowserSentryClientOptions & {
|
|
6
|
+
__type?: "base token" | undefined;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=tokens.d.ts.map
|
package/lib/tokens.es.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createToken } from '@tramvai/core';
|
|
2
|
+
|
|
3
|
+
const MICRO_SENTRY_INSTANCE_TOKEN = createToken('MICRO_SENTRY_INSTANCE_TOKEN');
|
|
4
|
+
const MICRO_SENTRY_OPTIONS_TOKEN = createToken('MICRO_SENTRY_OPTIONS_TOKEN');
|
|
5
|
+
|
|
6
|
+
export { MICRO_SENTRY_INSTANCE_TOKEN, MICRO_SENTRY_OPTIONS_TOKEN };
|
package/lib/tokens.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var core = require('@tramvai/core');
|
|
6
|
+
|
|
7
|
+
const MICRO_SENTRY_INSTANCE_TOKEN = core.createToken('MICRO_SENTRY_INSTANCE_TOKEN');
|
|
8
|
+
const MICRO_SENTRY_OPTIONS_TOKEN = core.createToken('MICRO_SENTRY_OPTIONS_TOKEN');
|
|
9
|
+
|
|
10
|
+
exports.MICRO_SENTRY_INSTANCE_TOKEN = MICRO_SENTRY_INSTANCE_TOKEN;
|
|
11
|
+
exports.MICRO_SENTRY_OPTIONS_TOKEN = MICRO_SENTRY_OPTIONS_TOKEN;
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tramvai/module-micro-sentry",
|
|
3
|
+
"version": "3.24.1",
|
|
4
|
+
"description": "Micro-sentry module",
|
|
5
|
+
"browser": "lib/browser.js",
|
|
6
|
+
"main": "lib/server.js",
|
|
7
|
+
"typings": "lib/server.d.ts",
|
|
8
|
+
"license": "Apache-2.0",
|
|
9
|
+
"files": [
|
|
10
|
+
"lib"
|
|
11
|
+
],
|
|
12
|
+
"sideEffects": false,
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git@github.com:Tinkoff/tramvai.git"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tramvai-build --forPublish --preserveModules",
|
|
19
|
+
"watch": "tsc -w"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@micro-sentry/browser": "^7.0.1"
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"@tramvai/core": "3.24.1",
|
|
26
|
+
"@tramvai/module-common": "3.24.1"
|
|
27
|
+
},
|
|
28
|
+
"module": "lib/server.es.js"
|
|
29
|
+
}
|