@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 CHANGED
@@ -1,21 +1,194 @@
1
1
  import { ProblemSeverity } from '@driveflux/problem';
2
- import type { Configuration } from 'rollbar';
3
- export type Config = {
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
- rollbar?: Configuration;
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: () => Config;
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
@@ -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,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,MAAM,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE;QACP,cAAc,EAAE,MAAM,CAAA;QACtB,KAAK,EAAE,MAAM,CAAA;QACb,eAAe,EAAE,eAAe,CAAA;KAChC,CAAA;IACD,OAAO,EAAE;QACR,KAAK,EAAE,OAAO,CAAA;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,OAAO,EAAE,OAAO,CAAA;KAChB,CAAA;IACD,OAAO,CAAC,EAAE,aAAa,CAAA;CACvB,CAAA;AA6BD,eAAO,IAAI,MAAM,EAAE,MAAiD,CAAA;AAEpE,eAAO,MAAM,WAAW,cAIvB,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,GAAG,SAAS,MAAM,MAAM,OAC5C,GAAG,SACD,MAAM,CAAC,GAAG,CAAC,SAGlB,CAAA"}
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 { singleton } from '@driveflux/singleton';
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
- rollbar: {
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 = singleton('reporterConfig', getConfig());
80
+ export var config = initSingleton('reporterConfig', function() {
81
+ return getConfig();
82
+ });
27
83
  export var resetConfig = function() {
28
- config = singleton('reporterConfig', getConfig(), true);
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
- export declare const getDriver: (driver: string) => Reporter;
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
  *
@@ -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;AAO7D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIpD,cAAc,aAAa,CAAA;AAY3B,eAAO,MAAM,SAAS,SAAU,MAAM,YAAY,QAAQ,4BAKzD,CAAA;AAED,eAAO,MAAM,SAAS,WAAY,MAAM,KAAG,QAqB1C,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"}
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('reporterProblemsAndErrors', function() {
211
+ var problemsAndErrorsToReport = initSingleton('reporter_problemsAndErrors', function() {
211
212
  return new Set();
212
213
  });
213
- var customDrivers = initSingleton('reporterCustomDrivers', function() {
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
- export var getDriver = function(driver) {
224
- switch(driver){
225
- case 'console':
224
+ var DRIVERS_MAP = {
225
+ console: function() {
226
+ return initSingleton('reporter_consoleDriver', function() {
226
227
  return new ConsoleDriver();
227
- case 'rollbar':
228
+ });
229
+ },
230
+ rollbar: function() {
231
+ return initSingleton('reporter_rollbarDriver', function() {
228
232
  return new RollbarDriver(config.rollbar);
229
- case 'slack':
230
- {
231
- if (!config.slack) {
232
- throw new Error('Slack config missing');
233
- }
234
- return new SlackDriver(config.slack);
235
- }
236
- default:
237
- {
238
- var customDriver = customDrivers.get(driver);
239
- if (!customDriver) {
240
- throw new Error("Driver ".concat(driver, " not found."));
241
- }
242
- return customDriver.reporter;
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.7.1",
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": "3.3.2",
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",
@@ -1 +0,0 @@
1
- export * from '@sentry/nextjs';