@driveflux/reporter 5.7.1 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +178 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +68 -10
- package/dist/drivers/sentry-nextjs.d.ts +13 -0
- package/dist/drivers/sentry-nextjs.d.ts.map +1 -0
- package/dist/drivers/sentry-nextjs.js +219 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -21
- package/package.json +4 -7
- package/dist/sentry-nextjs.js +0 -1
package/dist/config.d.ts
CHANGED
|
@@ -1,21 +1,194 @@
|
|
|
1
1
|
import { ProblemSeverity } from '@driveflux/problem';
|
|
2
|
-
import
|
|
3
|
-
export
|
|
2
|
+
import z from 'zod';
|
|
3
|
+
export declare const ConfigValidation: z.ZodEffects<z.ZodObject<{
|
|
4
|
+
isProd: z.ZodBoolean;
|
|
5
|
+
deferReporting: z.ZodBoolean;
|
|
6
|
+
slack: z.ZodOptional<z.ZodObject<{
|
|
7
|
+
errorChannelId: z.ZodString;
|
|
8
|
+
token: z.ZodString;
|
|
9
|
+
minimumSeverity: z.ZodNativeEnum<typeof ProblemSeverity>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
errorChannelId: string;
|
|
12
|
+
token: string;
|
|
13
|
+
minimumSeverity: ProblemSeverity;
|
|
14
|
+
}, {
|
|
15
|
+
errorChannelId: string;
|
|
16
|
+
token: string;
|
|
17
|
+
minimumSeverity: ProblemSeverity;
|
|
18
|
+
}>>;
|
|
19
|
+
drivers: z.ZodObject<{
|
|
20
|
+
slack: z.ZodBoolean;
|
|
21
|
+
rollbar: z.ZodBoolean;
|
|
22
|
+
console: z.ZodBoolean;
|
|
23
|
+
'sentry-nextjs': z.ZodBoolean;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
slack: boolean;
|
|
26
|
+
rollbar: boolean;
|
|
27
|
+
console: boolean;
|
|
28
|
+
'sentry-nextjs': boolean;
|
|
29
|
+
}, {
|
|
30
|
+
slack: boolean;
|
|
31
|
+
rollbar: boolean;
|
|
32
|
+
console: boolean;
|
|
33
|
+
'sentry-nextjs': boolean;
|
|
34
|
+
}>;
|
|
35
|
+
rollbar: z.ZodOptional<z.ZodObject<{
|
|
36
|
+
accessToken: z.ZodString;
|
|
37
|
+
enabled: z.ZodBoolean;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
accessToken: string;
|
|
40
|
+
enabled: boolean;
|
|
41
|
+
}, {
|
|
42
|
+
accessToken: string;
|
|
43
|
+
enabled: boolean;
|
|
44
|
+
}>>;
|
|
45
|
+
sentry: z.ZodOptional<z.ZodObject<{
|
|
46
|
+
url: z.ZodString;
|
|
47
|
+
org: z.ZodString;
|
|
48
|
+
project: z.ZodString;
|
|
49
|
+
dsn: z.ZodString;
|
|
50
|
+
authToken: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
url: string;
|
|
53
|
+
org: string;
|
|
54
|
+
project: string;
|
|
55
|
+
dsn: string;
|
|
56
|
+
authToken?: string | undefined;
|
|
57
|
+
}, {
|
|
58
|
+
url: string;
|
|
59
|
+
org: string;
|
|
60
|
+
project: string;
|
|
61
|
+
dsn: string;
|
|
62
|
+
authToken?: string | undefined;
|
|
63
|
+
}>>;
|
|
64
|
+
}, "strip", z.ZodTypeAny, {
|
|
4
65
|
isProd: boolean;
|
|
5
66
|
deferReporting: boolean;
|
|
67
|
+
drivers: {
|
|
68
|
+
slack: boolean;
|
|
69
|
+
rollbar: boolean;
|
|
70
|
+
console: boolean;
|
|
71
|
+
'sentry-nextjs': boolean;
|
|
72
|
+
};
|
|
6
73
|
slack?: {
|
|
7
74
|
errorChannelId: string;
|
|
8
75
|
token: string;
|
|
9
76
|
minimumSeverity: ProblemSeverity;
|
|
77
|
+
} | undefined;
|
|
78
|
+
rollbar?: {
|
|
79
|
+
accessToken: string;
|
|
80
|
+
enabled: boolean;
|
|
81
|
+
} | undefined;
|
|
82
|
+
sentry?: {
|
|
83
|
+
url: string;
|
|
84
|
+
org: string;
|
|
85
|
+
project: string;
|
|
86
|
+
dsn: string;
|
|
87
|
+
authToken?: string | undefined;
|
|
88
|
+
} | undefined;
|
|
89
|
+
}, {
|
|
90
|
+
isProd: boolean;
|
|
91
|
+
deferReporting: boolean;
|
|
92
|
+
drivers: {
|
|
93
|
+
slack: boolean;
|
|
94
|
+
rollbar: boolean;
|
|
95
|
+
console: boolean;
|
|
96
|
+
'sentry-nextjs': boolean;
|
|
10
97
|
};
|
|
98
|
+
slack?: {
|
|
99
|
+
errorChannelId: string;
|
|
100
|
+
token: string;
|
|
101
|
+
minimumSeverity: ProblemSeverity;
|
|
102
|
+
} | undefined;
|
|
103
|
+
rollbar?: {
|
|
104
|
+
accessToken: string;
|
|
105
|
+
enabled: boolean;
|
|
106
|
+
} | undefined;
|
|
107
|
+
sentry?: {
|
|
108
|
+
url: string;
|
|
109
|
+
org: string;
|
|
110
|
+
project: string;
|
|
111
|
+
dsn: string;
|
|
112
|
+
authToken?: string | undefined;
|
|
113
|
+
} | undefined;
|
|
114
|
+
}>, {
|
|
115
|
+
isProd: boolean;
|
|
116
|
+
deferReporting: boolean;
|
|
11
117
|
drivers: {
|
|
12
118
|
slack: boolean;
|
|
13
119
|
rollbar: boolean;
|
|
14
120
|
console: boolean;
|
|
121
|
+
'sentry-nextjs': boolean;
|
|
15
122
|
};
|
|
16
|
-
|
|
17
|
-
|
|
123
|
+
slack?: {
|
|
124
|
+
errorChannelId: string;
|
|
125
|
+
token: string;
|
|
126
|
+
minimumSeverity: ProblemSeverity;
|
|
127
|
+
} | undefined;
|
|
128
|
+
rollbar?: {
|
|
129
|
+
accessToken: string;
|
|
130
|
+
enabled: boolean;
|
|
131
|
+
} | undefined;
|
|
132
|
+
sentry?: {
|
|
133
|
+
url: string;
|
|
134
|
+
org: string;
|
|
135
|
+
project: string;
|
|
136
|
+
dsn: string;
|
|
137
|
+
authToken?: string | undefined;
|
|
138
|
+
} | undefined;
|
|
139
|
+
}, {
|
|
140
|
+
isProd: boolean;
|
|
141
|
+
deferReporting: boolean;
|
|
142
|
+
drivers: {
|
|
143
|
+
slack: boolean;
|
|
144
|
+
rollbar: boolean;
|
|
145
|
+
console: boolean;
|
|
146
|
+
'sentry-nextjs': boolean;
|
|
147
|
+
};
|
|
148
|
+
slack?: {
|
|
149
|
+
errorChannelId: string;
|
|
150
|
+
token: string;
|
|
151
|
+
minimumSeverity: ProblemSeverity;
|
|
152
|
+
} | undefined;
|
|
153
|
+
rollbar?: {
|
|
154
|
+
accessToken: string;
|
|
155
|
+
enabled: boolean;
|
|
156
|
+
} | undefined;
|
|
157
|
+
sentry?: {
|
|
158
|
+
url: string;
|
|
159
|
+
org: string;
|
|
160
|
+
project: string;
|
|
161
|
+
dsn: string;
|
|
162
|
+
authToken?: string | undefined;
|
|
163
|
+
} | undefined;
|
|
164
|
+
}>;
|
|
165
|
+
export type Config = z.infer<typeof ConfigValidation>;
|
|
18
166
|
export declare let config: Config;
|
|
19
|
-
export declare const resetConfig: () =>
|
|
167
|
+
export declare const resetConfig: () => {
|
|
168
|
+
isProd: boolean;
|
|
169
|
+
deferReporting: boolean;
|
|
170
|
+
drivers: {
|
|
171
|
+
slack: boolean;
|
|
172
|
+
rollbar: boolean;
|
|
173
|
+
console: boolean;
|
|
174
|
+
'sentry-nextjs': boolean;
|
|
175
|
+
};
|
|
176
|
+
slack?: {
|
|
177
|
+
errorChannelId: string;
|
|
178
|
+
token: string;
|
|
179
|
+
minimumSeverity: ProblemSeverity;
|
|
180
|
+
} | undefined;
|
|
181
|
+
rollbar?: {
|
|
182
|
+
accessToken: string;
|
|
183
|
+
enabled: boolean;
|
|
184
|
+
} | undefined;
|
|
185
|
+
sentry?: {
|
|
186
|
+
url: string;
|
|
187
|
+
org: string;
|
|
188
|
+
project: string;
|
|
189
|
+
dsn: string;
|
|
190
|
+
authToken?: string | undefined;
|
|
191
|
+
} | undefined;
|
|
192
|
+
};
|
|
20
193
|
export declare const setConfig: <Key extends keyof Config>(key: Key, value: Config[Key]) => void;
|
|
21
194
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoD1B,CAAA;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AA8CrD,eAAO,IAAI,MAAM,EAAE,MAA2D,CAAA;AAE9E,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAIvB,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,GAAG,SAAS,MAAM,MAAM,OAC5C,GAAG,SACD,MAAM,CAAC,GAAG,CAAC,SAGlB,CAAA"}
|
package/dist/config.js
CHANGED
|
@@ -1,31 +1,89 @@
|
|
|
1
1
|
import { ProblemSeverity } from '@driveflux/problem';
|
|
2
|
-
import {
|
|
2
|
+
import { initSingleton } from '@driveflux/singleton';
|
|
3
|
+
import z from 'zod';
|
|
4
|
+
export var ConfigValidation = z.object({
|
|
5
|
+
isProd: z.boolean(),
|
|
6
|
+
deferReporting: z.boolean(),
|
|
7
|
+
slack: z.object({
|
|
8
|
+
errorChannelId: z.string(),
|
|
9
|
+
token: z.string(),
|
|
10
|
+
minimumSeverity: z.nativeEnum(ProblemSeverity)
|
|
11
|
+
}).optional(),
|
|
12
|
+
drivers: z.object({
|
|
13
|
+
slack: z.boolean(),
|
|
14
|
+
rollbar: z.boolean(),
|
|
15
|
+
console: z.boolean(),
|
|
16
|
+
'sentry-nextjs': z.boolean()
|
|
17
|
+
}),
|
|
18
|
+
rollbar: z.object({
|
|
19
|
+
accessToken: z.string(),
|
|
20
|
+
enabled: z.boolean()
|
|
21
|
+
}).optional(),
|
|
22
|
+
sentry: z.object({
|
|
23
|
+
url: z.string(),
|
|
24
|
+
org: z.string(),
|
|
25
|
+
project: z.string(),
|
|
26
|
+
dsn: z.string(),
|
|
27
|
+
authToken: z.string().optional()
|
|
28
|
+
}).optional()
|
|
29
|
+
}).superRefine(function(data, ctx) {
|
|
30
|
+
if (data.drivers.rollbar && !data.rollbar) {
|
|
31
|
+
ctx.addIssue({
|
|
32
|
+
code: z.ZodIssueCode.custom,
|
|
33
|
+
message: 'Rollbar is required when using the Rollbar driver'
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (data.drivers['sentry-nextjs'] && !data.sentry) {
|
|
37
|
+
ctx.addIssue({
|
|
38
|
+
code: z.ZodIssueCode.custom,
|
|
39
|
+
message: 'Sentry is required when using the Sentry driver'
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (data.drivers.rollbar && !data.rollbar) {
|
|
43
|
+
ctx.addIssue({
|
|
44
|
+
code: z.ZodIssueCode.custom,
|
|
45
|
+
message: 'Rollbar is required when using the Rollbar driver'
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
});
|
|
3
49
|
var getConfig = function() {
|
|
4
|
-
return {
|
|
50
|
+
return ConfigValidation.parse({
|
|
5
51
|
isProd: process.env.APP_ENV === 'production',
|
|
6
52
|
deferReporting: typeof process.env.REPORTER_DEFER === 'string' && process.env.REPORTER_DEFER !== '' ? process.env.REPORTER_DEFER === 'true' : true,
|
|
7
|
-
slack: {
|
|
53
|
+
slack: process.env.REPORTER_USE_SLACK === 'true' ? {
|
|
8
54
|
errorChannelId: process.env.SLACK_ERROR_CHANNEL,
|
|
9
55
|
token: process.env.SLACK_TOKEN,
|
|
10
56
|
minimumSeverity: ProblemSeverity.CRITICAL
|
|
11
|
-
},
|
|
57
|
+
} : undefined,
|
|
12
58
|
drivers: {
|
|
13
59
|
slack: process.env.REPORTER_USE_SLACK === 'true',
|
|
14
60
|
rollbar: process.env.REPORTER_USE_ROLLBAR === 'true',
|
|
15
|
-
console: process.env.REPORTER_USE_CONSOLE !== 'false'
|
|
61
|
+
console: process.env.REPORTER_USE_CONSOLE !== 'false',
|
|
62
|
+
'sentry-nextjs': process.env.REPORTER_USE_SENTRY_NEXTJS === 'true'
|
|
16
63
|
},
|
|
17
|
-
|
|
64
|
+
sentry: process.env.REPORTER_USE_SENTRY_NEXTJS === 'true' ? {
|
|
65
|
+
url: process.env.SENTRY_URL,
|
|
66
|
+
org: process.env.SENTRY_ORG,
|
|
67
|
+
project: process.env.SENTRY_PROJECT,
|
|
68
|
+
dsn: process.env.SENTRY_DSN,
|
|
69
|
+
authToken: process.env.SENTRY_AUTH_TOKEN
|
|
70
|
+
} : undefined,
|
|
71
|
+
rollbar: process.env.REPORTER_USE_ROLLBAR === 'true' ? {
|
|
18
72
|
accessToken: process.env.ROLLBAR_ACCESS_TOKEN,
|
|
19
73
|
enabled: true,
|
|
20
74
|
captureUncaught: true,
|
|
21
75
|
captureUnhandledRejections: true,
|
|
22
76
|
environment: process.env.APP_ENV || process.env.NODE_ENV
|
|
23
|
-
}
|
|
24
|
-
};
|
|
77
|
+
} : undefined
|
|
78
|
+
});
|
|
25
79
|
};
|
|
26
|
-
export var config =
|
|
80
|
+
export var config = initSingleton('reporterConfig', function() {
|
|
81
|
+
return getConfig();
|
|
82
|
+
});
|
|
27
83
|
export var resetConfig = function() {
|
|
28
|
-
config =
|
|
84
|
+
config = initSingleton('reporterConfig', function() {
|
|
85
|
+
return getConfig();
|
|
86
|
+
}, true);
|
|
29
87
|
return config;
|
|
30
88
|
};
|
|
31
89
|
export var setConfig = function(key, value) {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Problem } from '@driveflux/problem';
|
|
2
|
+
import * as Sentry from '@sentry/nextjs';
|
|
3
|
+
import type { Config } from '../config.js';
|
|
4
|
+
import type { Metadata, Reporter } from '../types.js';
|
|
5
|
+
export declare class SentryNextJSDriver implements Reporter {
|
|
6
|
+
private config;
|
|
7
|
+
constructor(config: NonNullable<Config['sentry']>);
|
|
8
|
+
getSentry(): typeof Sentry;
|
|
9
|
+
reportError(err: Error, metadata: Metadata): Promise<void>;
|
|
10
|
+
reportProblem(problem: Problem): Promise<void>;
|
|
11
|
+
setReporterPayload(payload: Record<string, any>): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=sentry-nextjs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry-nextjs.d.ts","sourceRoot":"","sources":["../../src/drivers/sentry-nextjs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAErD,qBAAa,kBAAmB,YAAW,QAAQ;IACtC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAMzD,SAAS;IAIH,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;IAQ1C,aAAa,CAAC,OAAO,EAAE,OAAO;IAapC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAG/C"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
+
try {
|
|
3
|
+
var info = gen[key](arg);
|
|
4
|
+
var value = info.value;
|
|
5
|
+
} catch (error) {
|
|
6
|
+
reject(error);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (info.done) {
|
|
10
|
+
resolve(value);
|
|
11
|
+
} else {
|
|
12
|
+
Promise.resolve(value).then(_next, _throw);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function _async_to_generator(fn) {
|
|
16
|
+
return function() {
|
|
17
|
+
var self = this, args = arguments;
|
|
18
|
+
return new Promise(function(resolve, reject) {
|
|
19
|
+
var gen = fn.apply(self, args);
|
|
20
|
+
function _next(value) {
|
|
21
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
22
|
+
}
|
|
23
|
+
function _throw(err) {
|
|
24
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
25
|
+
}
|
|
26
|
+
_next(undefined);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function _class_call_check(instance, Constructor) {
|
|
31
|
+
if (!(instance instanceof Constructor)) {
|
|
32
|
+
throw new TypeError("Cannot call a class as a function");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function _defineProperties(target, props) {
|
|
36
|
+
for(var i = 0; i < props.length; i++){
|
|
37
|
+
var descriptor = props[i];
|
|
38
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
39
|
+
descriptor.configurable = true;
|
|
40
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
41
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
45
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
46
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
47
|
+
return Constructor;
|
|
48
|
+
}
|
|
49
|
+
function _define_property(obj, key, value) {
|
|
50
|
+
if (key in obj) {
|
|
51
|
+
Object.defineProperty(obj, key, {
|
|
52
|
+
value: value,
|
|
53
|
+
enumerable: true,
|
|
54
|
+
configurable: true,
|
|
55
|
+
writable: true
|
|
56
|
+
});
|
|
57
|
+
} else {
|
|
58
|
+
obj[key] = value;
|
|
59
|
+
}
|
|
60
|
+
return obj;
|
|
61
|
+
}
|
|
62
|
+
function _ts_generator(thisArg, body) {
|
|
63
|
+
var f, y, t, g, _ = {
|
|
64
|
+
label: 0,
|
|
65
|
+
sent: function() {
|
|
66
|
+
if (t[0] & 1) throw t[1];
|
|
67
|
+
return t[1];
|
|
68
|
+
},
|
|
69
|
+
trys: [],
|
|
70
|
+
ops: []
|
|
71
|
+
};
|
|
72
|
+
return g = {
|
|
73
|
+
next: verb(0),
|
|
74
|
+
"throw": verb(1),
|
|
75
|
+
"return": verb(2)
|
|
76
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
77
|
+
return this;
|
|
78
|
+
}), g;
|
|
79
|
+
function verb(n) {
|
|
80
|
+
return function(v) {
|
|
81
|
+
return step([
|
|
82
|
+
n,
|
|
83
|
+
v
|
|
84
|
+
]);
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function step(op) {
|
|
88
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
89
|
+
while(_)try {
|
|
90
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
91
|
+
if (y = 0, t) op = [
|
|
92
|
+
op[0] & 2,
|
|
93
|
+
t.value
|
|
94
|
+
];
|
|
95
|
+
switch(op[0]){
|
|
96
|
+
case 0:
|
|
97
|
+
case 1:
|
|
98
|
+
t = op;
|
|
99
|
+
break;
|
|
100
|
+
case 4:
|
|
101
|
+
_.label++;
|
|
102
|
+
return {
|
|
103
|
+
value: op[1],
|
|
104
|
+
done: false
|
|
105
|
+
};
|
|
106
|
+
case 5:
|
|
107
|
+
_.label++;
|
|
108
|
+
y = op[1];
|
|
109
|
+
op = [
|
|
110
|
+
0
|
|
111
|
+
];
|
|
112
|
+
continue;
|
|
113
|
+
case 7:
|
|
114
|
+
op = _.ops.pop();
|
|
115
|
+
_.trys.pop();
|
|
116
|
+
continue;
|
|
117
|
+
default:
|
|
118
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
119
|
+
_ = 0;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
123
|
+
_.label = op[1];
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
127
|
+
_.label = t[1];
|
|
128
|
+
t = op;
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
if (t && _.label < t[2]) {
|
|
132
|
+
_.label = t[2];
|
|
133
|
+
_.ops.push(op);
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
if (t[2]) _.ops.pop();
|
|
137
|
+
_.trys.pop();
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
op = body.call(thisArg, _);
|
|
141
|
+
} catch (e) {
|
|
142
|
+
op = [
|
|
143
|
+
6,
|
|
144
|
+
e
|
|
145
|
+
];
|
|
146
|
+
y = 0;
|
|
147
|
+
} finally{
|
|
148
|
+
f = t = 0;
|
|
149
|
+
}
|
|
150
|
+
if (op[0] & 5) throw op[1];
|
|
151
|
+
return {
|
|
152
|
+
value: op[0] ? op[1] : void 0,
|
|
153
|
+
done: true
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
import * as Sentry from '@sentry/nextjs';
|
|
158
|
+
export var SentryNextJSDriver = /*#__PURE__*/ function() {
|
|
159
|
+
"use strict";
|
|
160
|
+
function SentryNextJSDriver(config) {
|
|
161
|
+
_class_call_check(this, SentryNextJSDriver);
|
|
162
|
+
_define_property(this, "config", void 0);
|
|
163
|
+
this.config = config;
|
|
164
|
+
if (!this.config) {
|
|
165
|
+
throw new Error('Sentry is not configured');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
_create_class(SentryNextJSDriver, [
|
|
169
|
+
{
|
|
170
|
+
key: "getSentry",
|
|
171
|
+
value: function getSentry() {
|
|
172
|
+
return Sentry;
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
key: "reportError",
|
|
177
|
+
value: function reportError(err, metadata) {
|
|
178
|
+
return _async_to_generator(function() {
|
|
179
|
+
return _ts_generator(this, function(_state) {
|
|
180
|
+
Sentry.captureException(err, {
|
|
181
|
+
contexts: {
|
|
182
|
+
metadata: metadata
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
return [
|
|
186
|
+
2
|
|
187
|
+
];
|
|
188
|
+
});
|
|
189
|
+
})();
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
key: "reportProblem",
|
|
194
|
+
value: function reportProblem(problem) {
|
|
195
|
+
return _async_to_generator(function() {
|
|
196
|
+
var _problem_privateMetadata;
|
|
197
|
+
return _ts_generator(this, function(_state) {
|
|
198
|
+
Sentry.captureException(((_problem_privateMetadata = problem.privateMetadata) === null || _problem_privateMetadata === void 0 ? void 0 : _problem_privateMetadata.error) || new Error(problem.message || problem.code), {
|
|
199
|
+
contexts: {
|
|
200
|
+
metadata: problem.metadata,
|
|
201
|
+
privateMetadata: problem.privateMetadata
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
return [
|
|
205
|
+
2
|
|
206
|
+
];
|
|
207
|
+
});
|
|
208
|
+
})();
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
key: "setReporterPayload",
|
|
213
|
+
value: function setReporterPayload(payload) {
|
|
214
|
+
Sentry.setContext('reporterPayload', payload);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
]);
|
|
218
|
+
return SentryNextJSDriver;
|
|
219
|
+
}();
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import { type Problem } from '@driveflux/problem';
|
|
2
|
+
import { type Config } from './config.js';
|
|
3
|
+
import { ConsoleDriver } from './drivers/console.js';
|
|
4
|
+
import { RollbarDriver } from './drivers/rollbar.js';
|
|
5
|
+
import { SentryNextJSDriver } from './drivers/sentry-nextjs.js';
|
|
6
|
+
import { SlackDriver } from './drivers/slack.js';
|
|
2
7
|
import type { Metadata, Reporter } from './types.js';
|
|
8
|
+
type Driver = keyof Config['drivers'];
|
|
3
9
|
export * from './config.js';
|
|
4
10
|
export declare const addDriver: (name: string, reporter: Reporter, enabled?: boolean) => void;
|
|
5
|
-
|
|
11
|
+
declare const DRIVERS_MAP: {
|
|
12
|
+
readonly console: () => ConsoleDriver;
|
|
13
|
+
readonly rollbar: () => RollbarDriver;
|
|
14
|
+
readonly 'sentry-nextjs': () => SentryNextJSDriver;
|
|
15
|
+
readonly slack: () => SlackDriver;
|
|
16
|
+
};
|
|
17
|
+
export declare const getDriver: <D extends string>(driver: D) => D extends Driver ? ReturnType<(typeof DRIVERS_MAP)[D]> : Reporter;
|
|
6
18
|
export declare const reportError: (err: Error, metadata?: Metadata, sync?: boolean) => Promise<Error>;
|
|
7
19
|
/**
|
|
8
20
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,oBAAoB,CAAA;AAG7D,OAAO,EAAE,KAAK,MAAM,EAAU,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEpD,KAAK,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;AAErC,cAAc,aAAa,CAAA;AAY3B,eAAO,MAAM,SAAS,SAAU,MAAM,YAAY,QAAQ,4BAKzD,CAAA;AAED,QAAA,MAAM,WAAW;;;;;CAekC,CAAA;AAEnD,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,UACjC,CAAC,KACP,CAAC,SAAS,MAAM,GAAG,UAAU,CAAC,CAAC,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,QAW3D,CAAA;AAkBD,eAAO,MAAM,WAAW,QAClB,KAAK,aACA,QAAQ,SACX,OAAO,mBAUd,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,YAAmB,OAAO,SAAS,OAAO,qBASnE,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAYjC,CAAA;AAgCD,eAAO,MAAM,kBAAkB,YAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SAI9D,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -205,12 +205,13 @@ import { omit } from '@driveflux/utils';
|
|
|
205
205
|
import { config } from './config.js';
|
|
206
206
|
import { ConsoleDriver } from './drivers/console.js';
|
|
207
207
|
import { RollbarDriver } from './drivers/rollbar.js';
|
|
208
|
+
import { SentryNextJSDriver } from './drivers/sentry-nextjs.js';
|
|
208
209
|
import { SlackDriver } from './drivers/slack.js';
|
|
209
210
|
export * from './config.js';
|
|
210
|
-
var problemsAndErrorsToReport = initSingleton('
|
|
211
|
+
var problemsAndErrorsToReport = initSingleton('reporter_problemsAndErrors', function() {
|
|
211
212
|
return new Set();
|
|
212
213
|
});
|
|
213
|
-
var customDrivers = initSingleton('
|
|
214
|
+
var customDrivers = initSingleton('reporter_customDrivers', function() {
|
|
214
215
|
return new Map();
|
|
215
216
|
});
|
|
216
217
|
export var addDriver = function(name, reporter) {
|
|
@@ -220,28 +221,37 @@ export var addDriver = function(name, reporter) {
|
|
|
220
221
|
reporter: reporter
|
|
221
222
|
});
|
|
222
223
|
};
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
224
|
+
var DRIVERS_MAP = {
|
|
225
|
+
console: function() {
|
|
226
|
+
return initSingleton('reporter_consoleDriver', function() {
|
|
226
227
|
return new ConsoleDriver();
|
|
227
|
-
|
|
228
|
+
});
|
|
229
|
+
},
|
|
230
|
+
rollbar: function() {
|
|
231
|
+
return initSingleton('reporter_rollbarDriver', function() {
|
|
228
232
|
return new RollbarDriver(config.rollbar);
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
233
|
+
});
|
|
234
|
+
},
|
|
235
|
+
'sentry-nextjs': function() {
|
|
236
|
+
return initSingleton('reporter_sentryDriver', function() {
|
|
237
|
+
return new SentryNextJSDriver(config.sentry);
|
|
238
|
+
});
|
|
239
|
+
},
|
|
240
|
+
slack: function() {
|
|
241
|
+
return initSingleton('reporter_slackDriver', function() {
|
|
242
|
+
return new SlackDriver(config.slack);
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
export var getDriver = function(driver) {
|
|
247
|
+
if (driver in DRIVERS_MAP) {
|
|
248
|
+
return DRIVERS_MAP[driver]();
|
|
249
|
+
}
|
|
250
|
+
var customDriver = customDrivers.get(driver);
|
|
251
|
+
if (!customDriver) {
|
|
252
|
+
throw new Error("Driver ".concat(driver, " not found."));
|
|
244
253
|
}
|
|
254
|
+
return customDriver.reporter;
|
|
245
255
|
};
|
|
246
256
|
var getDrivers = function() {
|
|
247
257
|
var allDrivers = _to_consumable_array(Object.keys(config.drivers)).concat(_to_consumable_array(customDrivers.keys()));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@driveflux/reporter",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json",
|
|
@@ -15,10 +15,6 @@
|
|
|
15
15
|
"./types": {
|
|
16
16
|
"types": "./dist/types.d.ts",
|
|
17
17
|
"import": "./dist/types.js"
|
|
18
|
-
},
|
|
19
|
-
"./sentry/nextjs": {
|
|
20
|
-
"types": "./dist/sentry-nextjs.d.ts",
|
|
21
|
-
"import": "./dist/sentry-nextjs.js"
|
|
22
18
|
}
|
|
23
19
|
},
|
|
24
20
|
"files": [
|
|
@@ -29,11 +25,12 @@
|
|
|
29
25
|
"@driveflux/problem": "4.3.0",
|
|
30
26
|
"@driveflux/redact": "4.3.0",
|
|
31
27
|
"@driveflux/singleton": "1.5.0",
|
|
32
|
-
"@driveflux/utils": "
|
|
28
|
+
"@driveflux/utils": "4.0.0",
|
|
33
29
|
"@sentry/nextjs": "^8.41.0",
|
|
34
30
|
"@sentry/node": "^8.35.0",
|
|
35
31
|
"flat": "6.0.1",
|
|
36
|
-
"rollbar": "^2.26.4"
|
|
32
|
+
"rollbar": "^2.26.4",
|
|
33
|
+
"zod": "^3.23.8"
|
|
37
34
|
},
|
|
38
35
|
"devDependencies": {
|
|
39
36
|
"@driveflux/fab": "2.3.3",
|
package/dist/sentry-nextjs.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@sentry/nextjs';
|