@driveflux/reporter 5.1.3 → 5.2.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/build.js DELETED
@@ -1,49 +0,0 @@
1
- import { build } from 'esbuild'
2
- import fs from 'node:fs'
3
- const { dependencies, devDependencies } = JSON.parse(fs.readFileSync('./package.json'))
4
-
5
- const ESM_MODULES = ['flat']
6
-
7
- const sharedConfig = {
8
- entryPoints: ['./src/index.ts'],
9
- platform: 'node',
10
- bundle: true,
11
- external: [...Object.keys(dependencies), ...Object.keys(devDependencies)],
12
- sourcemap: true
13
- }
14
-
15
- const handleError = (e) => {
16
- console.log('Error bundling')
17
- console.error(e)
18
- process.exit(1)
19
- }
20
-
21
- const buildAll = async () => {
22
- try {
23
- await Promise.all([
24
- build({
25
- ...sharedConfig,
26
- outdir: 'dist',
27
- format: 'esm'
28
- }),
29
-
30
- build({
31
- ...sharedConfig,
32
- external: sharedConfig.external.filter((e) => !ESM_MODULES.includes(e)),
33
- outdir: 'dist/cjs',
34
- format: 'cjs'
35
- }).then(() => {
36
- fs.writeFileSync(
37
- './dist/cjs/package.json',
38
- `{
39
- "type": "commonjs"
40
- }`
41
- )
42
- })
43
- ])
44
- } catch (e) {
45
- handleError(e)
46
- }
47
- }
48
-
49
- await buildAll()
package/dist/cjs/index.js DELETED
@@ -1,399 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/index.ts
31
- var src_exports = {};
32
- __export(src_exports, {
33
- addDriver: () => addDriver,
34
- commitReportingErrors: () => commitReportingErrors,
35
- config: () => config,
36
- getDriver: () => getDriver,
37
- reportError: () => reportError,
38
- reportProblem: () => reportProblem,
39
- resetConfig: () => resetConfig,
40
- setConfig: () => setConfig,
41
- setReporterPayload: () => setReporterPayload
42
- });
43
- module.exports = __toCommonJS(src_exports);
44
- var import_problem3 = require("@driveflux/problem");
45
- var import_singleton2 = require("@driveflux/singleton");
46
- var import_utils2 = require("@driveflux/utils");
47
-
48
- // src/config.ts
49
- var import_problem = require("@driveflux/problem");
50
- var import_singleton = require("@driveflux/singleton");
51
- var getConfig = () => ({
52
- isProd: process.env.APP_ENV === "production",
53
- deferReporting: typeof process.env.REPORTER_DEFER === "string" && process.env.REPORTER_DEFER !== "" ? process.env.REPORTER_DEFER === "true" : true,
54
- slack: {
55
- errorChannelId: process.env.SLACK_ERROR_CHANNEL,
56
- token: process.env.SLACK_TOKEN,
57
- minimumSeverity: import_problem.ProblemSeverity.CRITICAL
58
- },
59
- drivers: {
60
- slack: process.env.REPORTER_USE_SLACK === "true",
61
- rollbar: process.env.REPORTER_USE_ROLLBAR === "true",
62
- console: process.env.REPORTER_USE_CONSOLE !== "false"
63
- },
64
- rollbar: {
65
- accessToken: process.env.ROLLBAR_ACCESS_TOKEN,
66
- enabled: true,
67
- captureUncaught: true,
68
- captureUnhandledRejections: true,
69
- environment: process.env.APP_ENV || process.env.NODE_ENV
70
- }
71
- });
72
- var config = (0, import_singleton.singleton)("reporterConfig", getConfig());
73
- var resetConfig = () => {
74
- config = (0, import_singleton.singleton)("reporterConfig", getConfig(), true);
75
- return config;
76
- };
77
- var setConfig = (key, value) => {
78
- config[key] = value;
79
- };
80
-
81
- // src/drivers/console.ts
82
- var ConsoleDriver = class {
83
- payload;
84
- async reportError(err, _) {
85
- console.error("An error happened");
86
- console.error("Error", err);
87
- console.error("Payload", this.payload);
88
- }
89
- async reportProblem(problem) {
90
- console.error("A problem happened");
91
- console.error("Problem", problem);
92
- console.error("Payload", this.payload);
93
- }
94
- setReporterPayload(payload) {
95
- this.payload = payload;
96
- }
97
- };
98
-
99
- // src/drivers/rollbar.ts
100
- var import_rollbar = __toESM(require("rollbar"), 1);
101
- var RollbarDriver = class {
102
- rollbar;
103
- constructor(rollbarConfig) {
104
- this.rollbar = new import_rollbar.default(rollbarConfig);
105
- }
106
- async reportError(err, metadata) {
107
- this.rollbar.error(err, metadata.request || {}, metadata.others);
108
- }
109
- async reportProblem(problem) {
110
- await new Promise((resolve) => {
111
- this.rollbar.error(
112
- problem.privateMetadata?.error || new Error(problem.message || problem.code),
113
- problem.privateMetadata?.request,
114
- problem.privateMetadata || {},
115
- (error) => {
116
- resolve(error);
117
- }
118
- );
119
- });
120
- }
121
- setReporterPayload(payload) {
122
- this.rollbar.configure({ payload });
123
- }
124
- };
125
-
126
- // src/drivers/slack.ts
127
- var import_fetch = require("@driveflux/fetch");
128
- var import_problem2 = require("@driveflux/problem");
129
- var import_utils = require("@driveflux/utils");
130
-
131
- // ../../node_modules/.pnpm/flat@6.0.1/node_modules/flat/index.js
132
- function isBuffer(obj) {
133
- return obj && obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
134
- }
135
- function keyIdentity(key) {
136
- return key;
137
- }
138
- function flatten(target, opts) {
139
- opts = opts || {};
140
- const delimiter = opts.delimiter || ".";
141
- const maxDepth = opts.maxDepth;
142
- const transformKey = opts.transformKey || keyIdentity;
143
- const output = {};
144
- function step(object, prev, currentDepth) {
145
- currentDepth = currentDepth || 1;
146
- Object.keys(object).forEach(function(key) {
147
- const value = object[key];
148
- const isarray = opts.safe && Array.isArray(value);
149
- const type = Object.prototype.toString.call(value);
150
- const isbuffer = isBuffer(value);
151
- const isobject = type === "[object Object]" || type === "[object Array]";
152
- const newKey = prev ? prev + delimiter + transformKey(key) : transformKey(key);
153
- if (!isarray && !isbuffer && isobject && Object.keys(value).length && (!opts.maxDepth || currentDepth < maxDepth)) {
154
- return step(value, newKey, currentDepth + 1);
155
- }
156
- output[newKey] = value;
157
- });
158
- }
159
- step(target);
160
- return output;
161
- }
162
-
163
- // src/drivers/slack.ts
164
- var lines = (object) => {
165
- return {
166
- type: "section",
167
- fields: Object.keys(object).map((key) => ({
168
- type: "mrkdwn",
169
- body: `*${key}:*
170
- ${JSON.stringify(object[key])}`
171
- }))
172
- };
173
- };
174
- var SlackDriver = class {
175
- accessToken;
176
- payload = {};
177
- channel;
178
- constructor(slackConfig) {
179
- this.accessToken = slackConfig.token;
180
- this.channel = slackConfig.errorChannelId;
181
- }
182
- async reportError(err, metadata) {
183
- const blocks = [
184
- {
185
- type: "header",
186
- text: {
187
- type: "mrkdwn",
188
- text: ":fire: Unexpected error happened",
189
- emoji: true
190
- }
191
- },
192
- {
193
- type: "section",
194
- text: {
195
- type: "mrkdwn",
196
- text: err.message
197
- }
198
- }
199
- ];
200
- this.standardBody(blocks, metadata);
201
- await this.slack(blocks);
202
- }
203
- async reportProblem(problem) {
204
- if (!(0, import_problem2.hasSeverityGte)(problem, config.slack?.minimumSeverity || import_problem2.ProblemSeverity.CRITICAL)) {
205
- return;
206
- }
207
- const blocks = [
208
- {
209
- type: "header",
210
- text: {
211
- type: "plain_text",
212
- text: "Problem",
213
- emoji: true
214
- }
215
- },
216
- {
217
- type: "section",
218
- text: {
219
- type: "mrkdwn",
220
- text: `*Code:*: ${problem.code}
221
- *Message:* ${problem.message}`
222
- }
223
- }
224
- ];
225
- this.standardBody(blocks, problem.metadata);
226
- await this.slack(blocks);
227
- }
228
- setReporterPayload(payload) {
229
- this.payload = payload;
230
- }
231
- async slack(blocks) {
232
- return await (0, import_fetch.enhancedFetch)("https://slack.com/api/chat.postMessage", {
233
- method: "POST",
234
- headers: {
235
- Authorization: `Bearer ${this.accessToken}`
236
- },
237
- body: JSON.stringify({
238
- channel: this.channel,
239
- blocks
240
- })
241
- });
242
- }
243
- standardBody(blocks, metadata) {
244
- if (metadata?.request) {
245
- blocks.push({
246
- type: "section",
247
- text: {
248
- type: "plain_text",
249
- text: "Request:"
250
- }
251
- });
252
- blocks.push({
253
- type: "section",
254
- fields: [
255
- {
256
- type: "mrkdwn",
257
- body: `*URL:*
258
- ${metadata.request?.url}`
259
- },
260
- {
261
- type: "mrkdwn",
262
- body: `*Method:*
263
- ${metadata.request?.method}`
264
- }
265
- ]
266
- });
267
- }
268
- if (metadata) {
269
- blocks.push({
270
- type: "section",
271
- text: {
272
- type: "plain_text",
273
- text: "Other Information:"
274
- }
275
- });
276
- blocks.push(lines(flatten((0, import_utils.omit)(metadata, "request"))));
277
- }
278
- if (!(0, import_utils.isEmpty)(this.payload)) {
279
- blocks.push({
280
- type: "section",
281
- text: {
282
- type: "plain_text",
283
- text: "Other Information:"
284
- }
285
- });
286
- blocks.push(lines(flatten(this.payload)));
287
- }
288
- }
289
- };
290
-
291
- // src/index.ts
292
- var problemsAndErrorsToReport = (0, import_singleton2.singleton)("reporterProblemsAndErrors", /* @__PURE__ */ new Set());
293
- var customDrivers = (0, import_singleton2.singleton)("reporterCustomDrivers", /* @__PURE__ */ new Map());
294
- var addDriver = (name, reporter, enabled = true) => {
295
- customDrivers.set(name, {
296
- enabled,
297
- reporter
298
- });
299
- };
300
- var getDriver = (driver) => {
301
- switch (driver) {
302
- case "console":
303
- return new ConsoleDriver();
304
- case "rollbar":
305
- return new RollbarDriver(config.rollbar);
306
- case "slack": {
307
- if (!config.slack) {
308
- throw new Error(`Slack config missing`);
309
- }
310
- return new SlackDriver(config.slack);
311
- }
312
- default: {
313
- const customDriver = customDrivers.get(driver);
314
- if (!customDriver) {
315
- throw new Error(`Driver ${driver} not found.`);
316
- }
317
- return customDriver.reporter;
318
- }
319
- }
320
- };
321
- var getDrivers = () => {
322
- return Object.keys(config.drivers).map((driver) => {
323
- if (config.drivers[driver] || customDrivers.get(driver)?.enabled) {
324
- return getDriver(driver);
325
- }
326
- return;
327
- }).filter((d) => d);
328
- };
329
- var reportError = async (err, metadata = {}, sync) => {
330
- const defer = typeof sync === "boolean" ? !sync : config.deferReporting;
331
- if (defer) {
332
- problemsAndErrorsToReport.add(err);
333
- } else {
334
- await commitSingleError(err, metadata);
335
- }
336
- return err;
337
- };
338
- var reportProblem = async (problem, sync) => {
339
- const defer = typeof sync === "boolean" ? !sync : config.deferReporting;
340
- if (defer) {
341
- problemsAndErrorsToReport.add(problem);
342
- } else {
343
- await commitSingleProblem(problem);
344
- }
345
- return problem;
346
- };
347
- var commitReportingErrors = async () => {
348
- const promises = [];
349
- const problemsToReport = problemsAndErrorsToReport.values();
350
- problemsAndErrorsToReport.clear();
351
- for (const err of problemsToReport) {
352
- promises.push((0, import_problem3.isAProblem)(err) ? commitSingleProblem(err) : commitSingleError(err));
353
- }
354
- await Promise.allSettled(promises);
355
- };
356
- var commitSingleError = (err, metadata = {}) => {
357
- return Promise.allSettled(
358
- getDrivers().map((driver) => {
359
- return driver.reportError(err, {
360
- request: metadata.request,
361
- others: (0, import_utils2.omit)(metadata, "request")
362
- });
363
- })
364
- );
365
- };
366
- var commitSingleProblem = (problem) => {
367
- return Promise.allSettled(
368
- getDrivers().map((driver) => {
369
- return driver.reportProblem({
370
- ...problem,
371
- privateMetadata: {
372
- request: problem.privateMetadata?.request,
373
- others: {
374
- ...problem.metadata,
375
- ...problem.privateMetadata ? (0, import_utils2.omit)(problem.privateMetadata, "request") : void 0
376
- }
377
- }
378
- });
379
- })
380
- );
381
- };
382
- var setReporterPayload = (payload) => {
383
- getDrivers().forEach((driver) => {
384
- driver.setReporterPayload(payload);
385
- });
386
- };
387
- // Annotate the CommonJS export names for ESM import in node:
388
- 0 && (module.exports = {
389
- addDriver,
390
- commitReportingErrors,
391
- config,
392
- getDriver,
393
- reportError,
394
- reportProblem,
395
- resetConfig,
396
- setConfig,
397
- setReporterPayload
398
- });
399
- //# sourceMappingURL=index.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.ts", "../../src/config.ts", "../../src/drivers/console.ts", "../../src/drivers/rollbar.ts", "../../src/drivers/slack.ts", "../../../../node_modules/.pnpm/flat@6.0.1/node_modules/flat/index.js"],
4
- "sourcesContent": ["import { Problem, isAProblem } from '@driveflux/problem'\nimport { singleton } from '@driveflux/singleton'\nimport { omit } from '@driveflux/utils'\nimport { config, type Config } from './config.js'\nimport { ConsoleDriver } from './drivers/console.js'\nimport { RollbarDriver } from './drivers/rollbar.js'\nimport { SlackDriver } from './drivers/slack.js'\nimport type { Metadata, Reporter } from './types.js'\n\ntype Driver = keyof Config['drivers']\n\nexport * from './config.js'\n\nconst problemsAndErrorsToReport = singleton('reporterProblemsAndErrors', new Set<Problem | Error>())\n\nconst customDrivers = singleton('reporterCustomDrivers', new Map<string, { enabled: boolean; reporter: Reporter }>())\n\nexport const addDriver = (name: string, reporter: Reporter, enabled = true) => {\n customDrivers.set(name, {\n enabled,\n reporter\n })\n}\n\nexport const getDriver = (driver: string): Reporter => {\n switch (driver) {\n case 'console':\n return new ConsoleDriver()\n case 'rollbar':\n return new RollbarDriver(config.rollbar)\n case 'slack': {\n if (!config.slack) {\n throw new Error(`Slack config missing`)\n }\n return new SlackDriver(config.slack!)\n }\n default: {\n const customDriver = customDrivers.get(driver)\n if (!customDriver) {\n throw new Error(`Driver ${driver} not found.`)\n }\n\n return customDriver.reporter\n }\n }\n}\n\nconst getDrivers = (): Reporter[] => {\n return Object.keys(config.drivers)\n .map((driver) => {\n if (config.drivers[driver as Driver] || customDrivers.get(driver)?.enabled) {\n return getDriver(driver)\n }\n return\n })\n .filter((d) => d) as Reporter[]\n}\n\nexport const reportError = async (err: Error, metadata: Metadata = {}, sync?: boolean) => {\n const defer = typeof sync === 'boolean' ? !sync : config.deferReporting\n if (defer) {\n problemsAndErrorsToReport.add(err)\n } else {\n await commitSingleError(err, metadata)\n }\n\n return err\n}\n\n/**\n *\n * @todo make function\n * @param problem\n */\nexport const reportProblem = async (problem: Problem, sync?: boolean) => {\n const defer = typeof sync === 'boolean' ? !sync : config.deferReporting\n if (defer) {\n problemsAndErrorsToReport.add(problem)\n } else {\n await commitSingleProblem(problem)\n }\n\n return problem\n}\n\nexport const commitReportingErrors = async () => {\n const promises: Promise<any>[] = []\n const problemsToReport = problemsAndErrorsToReport.values()\n problemsAndErrorsToReport.clear()\n \n for (const err of problemsToReport) {\n promises.push(isAProblem(err) ? commitSingleProblem(err) : commitSingleError(err))\n }\n\n await Promise.allSettled(promises)\n \n}\n\nconst commitSingleError = (err: Error, metadata: Metadata = {}) => {\n return Promise.allSettled(\n getDrivers().map((driver) => {\n return driver.reportError(err, {\n request: metadata.request,\n others: omit(metadata, 'request')\n })\n })\n )\n}\n\nconst commitSingleProblem = (problem: Problem) => {\n return Promise.allSettled(\n getDrivers().map((driver) => {\n return driver.reportProblem({\n ...problem,\n privateMetadata: {\n request: problem.privateMetadata?.request,\n others: {\n ...problem.metadata,\n ...(problem.privateMetadata ? omit(problem.privateMetadata, 'request') : undefined)\n }\n }\n })\n })\n )\n}\n\nexport const setReporterPayload = (payload: Record<string, any>) => {\n getDrivers().forEach((driver) => {\n driver.setReporterPayload(payload)\n })\n}\n", "import { ProblemSeverity } from '@driveflux/problem'\nimport { singleton } from '@driveflux/singleton'\nimport { Configuration } from 'rollbar'\n\nexport type Config = {\n isProd: boolean\n deferReporting: boolean\n slack?: {\n errorChannelId: string\n token: string\n minimumSeverity: ProblemSeverity\n }\n drivers: {\n slack: boolean\n rollbar: boolean\n console: boolean\n }\n rollbar?: Configuration\n}\n\nconst getConfig = (): Config =>\n ({\n isProd: process.env.APP_ENV === 'production',\n deferReporting:\n typeof process.env.REPORTER_DEFER === 'string' && process.env.REPORTER_DEFER !== ''\n ? process.env.REPORTER_DEFER === 'true'\n : true,\n slack: {\n errorChannelId: process.env.SLACK_ERROR_CHANNEL!,\n token: process.env.SLACK_TOKEN!,\n minimumSeverity: ProblemSeverity.CRITICAL\n },\n drivers: {\n slack: process.env.REPORTER_USE_SLACK === 'true',\n rollbar: process.env.REPORTER_USE_ROLLBAR === 'true',\n console: process.env.REPORTER_USE_CONSOLE !== 'false'\n },\n rollbar: {\n accessToken: process.env.ROLLBAR_ACCESS_TOKEN,\n enabled: true,\n captureUncaught: true,\n captureUnhandledRejections: true,\n environment: process.env.APP_ENV || process.env.NODE_ENV\n }\n }) as const\n\nexport let config: Config = singleton('reporterConfig', getConfig())\n\nexport const resetConfig = () => {\n config = singleton('reporterConfig', getConfig(), true)\n\n return config\n}\n\nexport const setConfig = <Key extends keyof Config>(key: Key, value: Config[Key]) => {\n config[key] = value\n}\n", "import type { Problem } from '@driveflux/problem'\nimport type { Metadata, Reporter } from '../types.js'\nexport class ConsoleDriver implements Reporter {\n private payload: any\n\n async reportError(err: Error, _: Metadata) {\n console.error('An error happened')\n console.error('Error', err)\n console.error('Payload', this.payload)\n }\n\n async reportProblem(problem: Problem) {\n console.error('A problem happened')\n console.error('Problem', problem)\n console.error('Payload', this.payload)\n }\n\n setReporterPayload(payload: Record<string, any>) {\n this.payload = payload\n }\n}\n", "import type { Problem } from '@driveflux/problem'\nimport Rollbar from 'rollbar'\nimport type { Metadata, Reporter } from '../types.js'\n\nexport class RollbarDriver implements Reporter {\n private rollbar\n\n constructor(rollbarConfig?: import('rollbar').Configuration) {\n this.rollbar = new Rollbar(rollbarConfig)\n }\n\n async reportError(err: Error, metadata: Metadata) {\n this.rollbar.error(err, metadata.request || {}, metadata.others)\n }\n\n async reportProblem(problem: Problem) {\n await new Promise((resolve) => {\n this.rollbar.error(\n problem.privateMetadata?.error || new Error(problem.message || problem.code),\n problem.privateMetadata?.request,\n problem.privateMetadata || {},\n (error) => {\n resolve(error)\n }\n )\n })\n }\n\n setReporterPayload(payload: Record<string, any>) {\n this.rollbar.configure({ payload })\n }\n}\n", "import { enhancedFetch } from '@driveflux/fetch'\nimport { ProblemSeverity, hasSeverityGte, type Problem } from '@driveflux/problem'\nimport { isEmpty, omit } from '@driveflux/utils'\nimport { flatten } from 'flat'\nimport { config, type Config } from '../config.js'\nimport type { Metadata, Reporter } from '../types.js'\n\n\nconst lines = (object: any) => {\n return {\n type: 'section',\n fields: Object.keys(object).map((key) => ({\n type: 'mrkdwn',\n body: `*${key}:*\\n${JSON.stringify(object[key])}`\n }))\n }\n}\n\nexport class SlackDriver implements Reporter {\n private accessToken: string\n private payload: Record<string, any> = {}\n private channel: string\n\n constructor(slackConfig: NonNullable<Config['slack']>) {\n this.accessToken = slackConfig.token\n this.channel = slackConfig.errorChannelId\n }\n\n async reportError(err: Error, metadata: Metadata) {\n // We won't check for severity for Error objects as they are most likely always critical\n const blocks: any[] = [\n {\n type: 'header',\n text: {\n type: 'mrkdwn',\n text: ':fire: Unexpected error happened',\n emoji: true\n }\n },\n {\n type: 'section',\n text: {\n type: 'mrkdwn',\n text: err.message\n }\n }\n ]\n this.standardBody(blocks, metadata)\n await this.slack(blocks)\n }\n\n async reportProblem(problem: Problem) {\n if(!hasSeverityGte(problem, config.slack?.minimumSeverity || ProblemSeverity.CRITICAL)) {\n return\n }\n\n const blocks: any[] = [\n {\n type: 'header',\n text: {\n type: 'plain_text',\n text: 'Problem',\n emoji: true\n }\n },\n {\n type: 'section',\n text: {\n type: 'mrkdwn',\n text: `*Code:*: ${problem.code}\\n*Message:* ${problem.message}`\n }\n }\n ]\n this.standardBody(blocks, problem.metadata)\n await this.slack(blocks)\n }\n\n setReporterPayload(payload: Record<string, any>) {\n this.payload = payload\n }\n\n private async slack(blocks: any[]): Promise<any> {\n return await enhancedFetch('https://slack.com/api/chat.postMessage', {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.accessToken}`\n },\n body: JSON.stringify({\n channel: this.channel,\n blocks\n })\n })\n }\n\n private standardBody(blocks: any[], metadata?: Metadata) {\n if (metadata?.request) {\n blocks.push({\n type: 'section',\n text: {\n type: 'plain_text',\n text: 'Request:'\n }\n })\n blocks.push({\n type: 'section',\n fields: [\n {\n type: 'mrkdwn',\n body: `*URL:*\\n${metadata.request?.url}`\n },\n {\n type: 'mrkdwn',\n body: `*Method:*\\n${metadata.request?.method}`\n }\n ]\n })\n }\n\n if (metadata) {\n blocks.push({\n type: 'section',\n text: {\n type: 'plain_text',\n text: 'Other Information:'\n }\n })\n blocks.push(lines(flatten(omit(metadata, 'request'))))\n }\n\n if (!isEmpty(this.payload)) {\n blocks.push({\n type: 'section',\n text: {\n type: 'plain_text',\n text: 'Other Information:'\n }\n })\n blocks.push(lines(flatten(this.payload)))\n }\n }\n}\n", "function isBuffer (obj) {\n return obj &&\n obj.constructor &&\n (typeof obj.constructor.isBuffer === 'function') &&\n obj.constructor.isBuffer(obj)\n}\n\nfunction keyIdentity (key) {\n return key\n}\n\nexport function flatten (target, opts) {\n opts = opts || {}\n\n const delimiter = opts.delimiter || '.'\n const maxDepth = opts.maxDepth\n const transformKey = opts.transformKey || keyIdentity\n const output = {}\n\n function step (object, prev, currentDepth) {\n currentDepth = currentDepth || 1\n Object.keys(object).forEach(function (key) {\n const value = object[key]\n const isarray = opts.safe && Array.isArray(value)\n const type = Object.prototype.toString.call(value)\n const isbuffer = isBuffer(value)\n const isobject = (\n type === '[object Object]' ||\n type === '[object Array]'\n )\n\n const newKey = prev\n ? prev + delimiter + transformKey(key)\n : transformKey(key)\n\n if (!isarray && !isbuffer && isobject && Object.keys(value).length &&\n (!opts.maxDepth || currentDepth < maxDepth)) {\n return step(value, newKey, currentDepth + 1)\n }\n\n output[newKey] = value\n })\n }\n\n step(target)\n\n return output\n}\n\nexport function unflatten (target, opts) {\n opts = opts || {}\n\n const delimiter = opts.delimiter || '.'\n const overwrite = opts.overwrite || false\n const transformKey = opts.transformKey || keyIdentity\n const result = {}\n\n const isbuffer = isBuffer(target)\n if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') {\n return target\n }\n\n // safely ensure that the key is\n // an integer.\n function getkey (key) {\n const parsedKey = Number(key)\n\n return (\n isNaN(parsedKey) ||\n key.indexOf('.') !== -1 ||\n opts.object\n )\n ? key\n : parsedKey\n }\n\n function addKeys (keyPrefix, recipient, target) {\n return Object.keys(target).reduce(function (result, key) {\n result[keyPrefix + delimiter + key] = target[key]\n\n return result\n }, recipient)\n }\n\n function isEmpty (val) {\n const type = Object.prototype.toString.call(val)\n const isArray = type === '[object Array]'\n const isObject = type === '[object Object]'\n\n if (!val) {\n return true\n } else if (isArray) {\n return !val.length\n } else if (isObject) {\n return !Object.keys(val).length\n }\n }\n\n target = Object.keys(target).reduce(function (result, key) {\n const type = Object.prototype.toString.call(target[key])\n const isObject = (type === '[object Object]' || type === '[object Array]')\n if (!isObject || isEmpty(target[key])) {\n result[key] = target[key]\n return result\n } else {\n return addKeys(\n key,\n result,\n flatten(target[key], opts)\n )\n }\n }, {})\n\n Object.keys(target).forEach(function (key) {\n const split = key.split(delimiter).map(transformKey)\n let key1 = getkey(split.shift())\n let key2 = getkey(split[0])\n let recipient = result\n\n while (key2 !== undefined) {\n if (key1 === '__proto__') {\n return\n }\n\n const type = Object.prototype.toString.call(recipient[key1])\n const isobject = (\n type === '[object Object]' ||\n type === '[object Array]'\n )\n\n // do not write over falsey, non-undefined values if overwrite is false\n if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') {\n return\n }\n\n if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) {\n recipient[key1] = (\n typeof key2 === 'number' &&\n !opts.object\n ? []\n : {}\n )\n }\n\n recipient = recipient[key1]\n if (split.length > 0) {\n key1 = getkey(split.shift())\n key2 = getkey(split[0])\n }\n }\n\n // unflatten again for 'messy objects'\n recipient[key1] = unflatten(target[key], opts)\n })\n\n return result\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_problem", "import_singleton", "import_utils", "Rollbar", "import_problem"]
7
- }
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAmBhD,MAAM,SAAS,GAAG,GAAW,EAAE,CAC7B,CAAC;IACC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,YAAY;IAC5C,cAAc,EACZ,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,EAAE;QACjF,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM;QACvC,CAAC,CAAC,IAAI;IACV,KAAK,EAAE;QACL,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAoB;QAChD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,WAAY;QAC/B,eAAe,EAAE,eAAe,CAAC,QAAQ;KAC1C;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM;QAChD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM;QACpD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,OAAO;KACtD;IACD,OAAO,EAAE;QACP,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAC7C,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,IAAI;QACrB,0BAA0B,EAAE,IAAI;QAChC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;KACzD;CACF,CAAU,CAAA;AAEb,MAAM,CAAC,IAAI,MAAM,GAAW,SAAS,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,GAAG,SAAS,CAAC,gBAAgB,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,CAAA;IAEvD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAA2B,GAAQ,EAAE,KAAkB,EAAE,EAAE;IAClF,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACrB,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/drivers/console.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAChB,OAAO,CAAK;IAEpB,KAAK,CAAC,WAAW,CAAC,GAAU,EAAE,CAAW;QACvC,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAClC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC3B,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACnC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACjC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IAED,kBAAkB,CAAC,OAA4B;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rollbar.js","sourceRoot":"","sources":["../../src/drivers/rollbar.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,MAAM,OAAO,aAAa;IAChB,OAAO,CAAA;IAEf,YAAY,aAA+C;QACzD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAU,EAAE,QAAkB;QAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB,OAAO,CAAC,eAAe,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,EAC5E,OAAO,CAAC,eAAe,EAAE,OAAO,EAChC,OAAO,CAAC,eAAe,IAAI,EAAE,EAC7B,CAAC,KAAK,EAAE,EAAE;gBACR,OAAO,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC,CACF,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kBAAkB,CAAC,OAA4B;QAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/drivers/slack.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts", "../src/config.ts", "../src/drivers/console.ts", "../src/drivers/rollbar.ts", "../src/drivers/slack.ts"],
4
- "sourcesContent": ["import { Problem, isAProblem } from '@driveflux/problem'\nimport { singleton } from '@driveflux/singleton'\nimport { omit } from '@driveflux/utils'\nimport { config, type Config } from './config.js'\nimport { ConsoleDriver } from './drivers/console.js'\nimport { RollbarDriver } from './drivers/rollbar.js'\nimport { SlackDriver } from './drivers/slack.js'\nimport type { Metadata, Reporter } from './types.js'\n\ntype Driver = keyof Config['drivers']\n\nexport * from './config.js'\n\nconst problemsAndErrorsToReport = singleton('reporterProblemsAndErrors', new Set<Problem | Error>())\n\nconst customDrivers = singleton('reporterCustomDrivers', new Map<string, { enabled: boolean; reporter: Reporter }>())\n\nexport const addDriver = (name: string, reporter: Reporter, enabled = true) => {\n customDrivers.set(name, {\n enabled,\n reporter\n })\n}\n\nexport const getDriver = (driver: string): Reporter => {\n switch (driver) {\n case 'console':\n return new ConsoleDriver()\n case 'rollbar':\n return new RollbarDriver(config.rollbar)\n case 'slack': {\n if (!config.slack) {\n throw new Error(`Slack config missing`)\n }\n return new SlackDriver(config.slack!)\n }\n default: {\n const customDriver = customDrivers.get(driver)\n if (!customDriver) {\n throw new Error(`Driver ${driver} not found.`)\n }\n\n return customDriver.reporter\n }\n }\n}\n\nconst getDrivers = (): Reporter[] => {\n return Object.keys(config.drivers)\n .map((driver) => {\n if (config.drivers[driver as Driver] || customDrivers.get(driver)?.enabled) {\n return getDriver(driver)\n }\n return\n })\n .filter((d) => d) as Reporter[]\n}\n\nexport const reportError = async (err: Error, metadata: Metadata = {}, sync?: boolean) => {\n const defer = typeof sync === 'boolean' ? !sync : config.deferReporting\n if (defer) {\n problemsAndErrorsToReport.add(err)\n } else {\n await commitSingleError(err, metadata)\n }\n\n return err\n}\n\n/**\n *\n * @todo make function\n * @param problem\n */\nexport const reportProblem = async (problem: Problem, sync?: boolean) => {\n const defer = typeof sync === 'boolean' ? !sync : config.deferReporting\n if (defer) {\n problemsAndErrorsToReport.add(problem)\n } else {\n await commitSingleProblem(problem)\n }\n\n return problem\n}\n\nexport const commitReportingErrors = async () => {\n const promises: Promise<any>[] = []\n const problemsToReport = problemsAndErrorsToReport.values()\n problemsAndErrorsToReport.clear()\n \n for (const err of problemsToReport) {\n promises.push(isAProblem(err) ? commitSingleProblem(err) : commitSingleError(err))\n }\n\n await Promise.allSettled(promises)\n \n}\n\nconst commitSingleError = (err: Error, metadata: Metadata = {}) => {\n return Promise.allSettled(\n getDrivers().map((driver) => {\n return driver.reportError(err, {\n request: metadata.request,\n others: omit(metadata, 'request')\n })\n })\n )\n}\n\nconst commitSingleProblem = (problem: Problem) => {\n return Promise.allSettled(\n getDrivers().map((driver) => {\n return driver.reportProblem({\n ...problem,\n privateMetadata: {\n request: problem.privateMetadata?.request,\n others: {\n ...problem.metadata,\n ...(problem.privateMetadata ? omit(problem.privateMetadata, 'request') : undefined)\n }\n }\n })\n })\n )\n}\n\nexport const setReporterPayload = (payload: Record<string, any>) => {\n getDrivers().forEach((driver) => {\n driver.setReporterPayload(payload)\n })\n}\n", "import { ProblemSeverity } from '@driveflux/problem'\nimport { singleton } from '@driveflux/singleton'\nimport { Configuration } from 'rollbar'\n\nexport type Config = {\n isProd: boolean\n deferReporting: boolean\n slack?: {\n errorChannelId: string\n token: string\n minimumSeverity: ProblemSeverity\n }\n drivers: {\n slack: boolean\n rollbar: boolean\n console: boolean\n }\n rollbar?: Configuration\n}\n\nconst getConfig = (): Config =>\n ({\n isProd: process.env.APP_ENV === 'production',\n deferReporting:\n typeof process.env.REPORTER_DEFER === 'string' && process.env.REPORTER_DEFER !== ''\n ? process.env.REPORTER_DEFER === 'true'\n : true,\n slack: {\n errorChannelId: process.env.SLACK_ERROR_CHANNEL!,\n token: process.env.SLACK_TOKEN!,\n minimumSeverity: ProblemSeverity.CRITICAL\n },\n drivers: {\n slack: process.env.REPORTER_USE_SLACK === 'true',\n rollbar: process.env.REPORTER_USE_ROLLBAR === 'true',\n console: process.env.REPORTER_USE_CONSOLE !== 'false'\n },\n rollbar: {\n accessToken: process.env.ROLLBAR_ACCESS_TOKEN,\n enabled: true,\n captureUncaught: true,\n captureUnhandledRejections: true,\n environment: process.env.APP_ENV || process.env.NODE_ENV\n }\n }) as const\n\nexport let config: Config = singleton('reporterConfig', getConfig())\n\nexport const resetConfig = () => {\n config = singleton('reporterConfig', getConfig(), true)\n\n return config\n}\n\nexport const setConfig = <Key extends keyof Config>(key: Key, value: Config[Key]) => {\n config[key] = value\n}\n", "import type { Problem } from '@driveflux/problem'\nimport type { Metadata, Reporter } from '../types.js'\nexport class ConsoleDriver implements Reporter {\n private payload: any\n\n async reportError(err: Error, _: Metadata) {\n console.error('An error happened')\n console.error('Error', err)\n console.error('Payload', this.payload)\n }\n\n async reportProblem(problem: Problem) {\n console.error('A problem happened')\n console.error('Problem', problem)\n console.error('Payload', this.payload)\n }\n\n setReporterPayload(payload: Record<string, any>) {\n this.payload = payload\n }\n}\n", "import type { Problem } from '@driveflux/problem'\nimport Rollbar from 'rollbar'\nimport type { Metadata, Reporter } from '../types.js'\n\nexport class RollbarDriver implements Reporter {\n private rollbar\n\n constructor(rollbarConfig?: import('rollbar').Configuration) {\n this.rollbar = new Rollbar(rollbarConfig)\n }\n\n async reportError(err: Error, metadata: Metadata) {\n this.rollbar.error(err, metadata.request || {}, metadata.others)\n }\n\n async reportProblem(problem: Problem) {\n await new Promise((resolve) => {\n this.rollbar.error(\n problem.privateMetadata?.error || new Error(problem.message || problem.code),\n problem.privateMetadata?.request,\n problem.privateMetadata || {},\n (error) => {\n resolve(error)\n }\n )\n })\n }\n\n setReporterPayload(payload: Record<string, any>) {\n this.rollbar.configure({ payload })\n }\n}\n", "import { enhancedFetch } from '@driveflux/fetch'\nimport { ProblemSeverity, hasSeverityGte, type Problem } from '@driveflux/problem'\nimport { isEmpty, omit } from '@driveflux/utils'\nimport { flatten } from 'flat'\nimport { config, type Config } from '../config.js'\nimport type { Metadata, Reporter } from '../types.js'\n\n\nconst lines = (object: any) => {\n return {\n type: 'section',\n fields: Object.keys(object).map((key) => ({\n type: 'mrkdwn',\n body: `*${key}:*\\n${JSON.stringify(object[key])}`\n }))\n }\n}\n\nexport class SlackDriver implements Reporter {\n private accessToken: string\n private payload: Record<string, any> = {}\n private channel: string\n\n constructor(slackConfig: NonNullable<Config['slack']>) {\n this.accessToken = slackConfig.token\n this.channel = slackConfig.errorChannelId\n }\n\n async reportError(err: Error, metadata: Metadata) {\n // We won't check for severity for Error objects as they are most likely always critical\n const blocks: any[] = [\n {\n type: 'header',\n text: {\n type: 'mrkdwn',\n text: ':fire: Unexpected error happened',\n emoji: true\n }\n },\n {\n type: 'section',\n text: {\n type: 'mrkdwn',\n text: err.message\n }\n }\n ]\n this.standardBody(blocks, metadata)\n await this.slack(blocks)\n }\n\n async reportProblem(problem: Problem) {\n if(!hasSeverityGte(problem, config.slack?.minimumSeverity || ProblemSeverity.CRITICAL)) {\n return\n }\n\n const blocks: any[] = [\n {\n type: 'header',\n text: {\n type: 'plain_text',\n text: 'Problem',\n emoji: true\n }\n },\n {\n type: 'section',\n text: {\n type: 'mrkdwn',\n text: `*Code:*: ${problem.code}\\n*Message:* ${problem.message}`\n }\n }\n ]\n this.standardBody(blocks, problem.metadata)\n await this.slack(blocks)\n }\n\n setReporterPayload(payload: Record<string, any>) {\n this.payload = payload\n }\n\n private async slack(blocks: any[]): Promise<any> {\n return await enhancedFetch('https://slack.com/api/chat.postMessage', {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.accessToken}`\n },\n body: JSON.stringify({\n channel: this.channel,\n blocks\n })\n })\n }\n\n private standardBody(blocks: any[], metadata?: Metadata) {\n if (metadata?.request) {\n blocks.push({\n type: 'section',\n text: {\n type: 'plain_text',\n text: 'Request:'\n }\n })\n blocks.push({\n type: 'section',\n fields: [\n {\n type: 'mrkdwn',\n body: `*URL:*\\n${metadata.request?.url}`\n },\n {\n type: 'mrkdwn',\n body: `*Method:*\\n${metadata.request?.method}`\n }\n ]\n })\n }\n\n if (metadata) {\n blocks.push({\n type: 'section',\n text: {\n type: 'plain_text',\n text: 'Other Information:'\n }\n })\n blocks.push(lines(flatten(omit(metadata, 'request'))))\n }\n\n if (!isEmpty(this.payload)) {\n blocks.push({\n type: 'section',\n text: {\n type: 'plain_text',\n text: 'Other Information:'\n }\n })\n blocks.push(lines(flatten(this.payload)))\n }\n }\n}\n"],
5
- "mappings": ";AAAA,SAAkB,kBAAkB;AACpC,SAAS,aAAAA,kBAAiB;AAC1B,SAAS,QAAAC,aAAY;;;ACFrB,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAmB1B,IAAM,YAAY,OACf;AAAA,EACC,QAAQ,QAAQ,IAAI,YAAY;AAAA,EAChC,gBACE,OAAO,QAAQ,IAAI,mBAAmB,YAAY,QAAQ,IAAI,mBAAmB,KAC7E,QAAQ,IAAI,mBAAmB,SAC/B;AAAA,EACN,OAAO;AAAA,IACL,gBAAgB,QAAQ,IAAI;AAAA,IAC5B,OAAO,QAAQ,IAAI;AAAA,IACnB,iBAAiB,gBAAgB;AAAA,EACnC;AAAA,EACA,SAAS;AAAA,IACP,OAAO,QAAQ,IAAI,uBAAuB;AAAA,IAC1C,SAAS,QAAQ,IAAI,yBAAyB;AAAA,IAC9C,SAAS,QAAQ,IAAI,yBAAyB;AAAA,EAChD;AAAA,EACA,SAAS;AAAA,IACP,aAAa,QAAQ,IAAI;AAAA,IACzB,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,4BAA4B;AAAA,IAC5B,aAAa,QAAQ,IAAI,WAAW,QAAQ,IAAI;AAAA,EAClD;AACF;AAEK,IAAI,SAAiB,UAAU,kBAAkB,UAAU,CAAC;AAE5D,IAAM,cAAc,MAAM;AAC/B,WAAS,UAAU,kBAAkB,UAAU,GAAG,IAAI;AAEtD,SAAO;AACT;AAEO,IAAM,YAAY,CAA2B,KAAU,UAAuB;AACnF,SAAO,GAAG,IAAI;AAChB;;;ACtDO,IAAM,gBAAN,MAAwC;AAAA,EACrC;AAAA,EAER,MAAM,YAAY,KAAY,GAAa;AACzC,YAAQ,MAAM,mBAAmB;AACjC,YAAQ,MAAM,SAAS,GAAG;AAC1B,YAAQ,MAAM,WAAW,KAAK,OAAO;AAAA,EACvC;AAAA,EAEA,MAAM,cAAc,SAAkB;AACpC,YAAQ,MAAM,oBAAoB;AAClC,YAAQ,MAAM,WAAW,OAAO;AAChC,YAAQ,MAAM,WAAW,KAAK,OAAO;AAAA,EACvC;AAAA,EAEA,mBAAmB,SAA8B;AAC/C,SAAK,UAAU;AAAA,EACjB;AACF;;;ACnBA,OAAO,aAAa;AAGb,IAAM,gBAAN,MAAwC;AAAA,EACrC;AAAA,EAER,YAAY,eAAiD;AAC3D,SAAK,UAAU,IAAI,QAAQ,aAAa;AAAA,EAC1C;AAAA,EAEA,MAAM,YAAY,KAAY,UAAoB;AAChD,SAAK,QAAQ,MAAM,KAAK,SAAS,WAAW,CAAC,GAAG,SAAS,MAAM;AAAA,EACjE;AAAA,EAEA,MAAM,cAAc,SAAkB;AACpC,UAAM,IAAI,QAAQ,CAAC,YAAY;AAC7B,WAAK,QAAQ;AAAA,QACX,QAAQ,iBAAiB,SAAS,IAAI,MAAM,QAAQ,WAAW,QAAQ,IAAI;AAAA,QAC3E,QAAQ,iBAAiB;AAAA,QACzB,QAAQ,mBAAmB,CAAC;AAAA,QAC5B,CAAC,UAAU;AACT,kBAAQ,KAAK;AAAA,QACf;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,mBAAmB,SAA8B;AAC/C,SAAK,QAAQ,UAAU,EAAE,QAAQ,CAAC;AAAA,EACpC;AACF;;;AC/BA,SAAS,qBAAqB;AAC9B,SAAS,mBAAAC,kBAAiB,sBAAoC;AAC9D,SAAS,SAAS,YAAY;AAC9B,SAAS,eAAe;AAKxB,IAAM,QAAQ,CAAC,WAAgB;AAC7B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,OAAO,KAAK,MAAM,EAAE,IAAI,CAAC,SAAS;AAAA,MACxC,MAAM;AAAA,MACN,MAAM,IAAI,GAAG;AAAA,EAAO,KAAK,UAAU,OAAO,GAAG,CAAC,CAAC;AAAA,IACjD,EAAE;AAAA,EACJ;AACF;AAEO,IAAM,cAAN,MAAsC;AAAA,EACnC;AAAA,EACA,UAA+B,CAAC;AAAA,EAChC;AAAA,EAER,YAAY,aAA2C;AACrD,SAAK,cAAc,YAAY;AAC/B,SAAK,UAAU,YAAY;AAAA,EAC7B;AAAA,EAEA,MAAM,YAAY,KAAY,UAAoB;AAEhD,UAAM,SAAgB;AAAA,MACpB;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,MAAM,IAAI;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AACA,SAAK,aAAa,QAAQ,QAAQ;AAClC,UAAM,KAAK,MAAM,MAAM;AAAA,EACzB;AAAA,EAEA,MAAM,cAAc,SAAkB;AACpC,QAAG,CAAC,eAAe,SAAS,OAAO,OAAO,mBAAmBC,iBAAgB,QAAQ,GAAG;AACtF;AAAA,IACF;AAEA,UAAM,SAAgB;AAAA,MACpB;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,MAAM,YAAY,QAAQ,IAAI;AAAA,aAAgB,QAAQ,OAAO;AAAA,QAC/D;AAAA,MACF;AAAA,IACF;AACA,SAAK,aAAa,QAAQ,QAAQ,QAAQ;AAC1C,UAAM,KAAK,MAAM,MAAM;AAAA,EACzB;AAAA,EAEA,mBAAmB,SAA8B;AAC/C,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAc,MAAM,QAA6B;AAC/C,WAAO,MAAM,cAAc,0CAA0C;AAAA,MACnE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,eAAe,UAAU,KAAK,WAAW;AAAA,MAC3C;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACnB,SAAS,KAAK;AAAA,QACd;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEQ,aAAa,QAAe,UAAqB;AACvD,QAAI,UAAU,SAAS;AACrB,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AACD,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,EAAW,SAAS,SAAS,GAAG;AAAA,UACxC;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,EAAc,SAAS,SAAS,MAAM;AAAA,UAC9C;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI,UAAU;AACZ,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AACD,aAAO,KAAK,MAAM,QAAQ,KAAK,UAAU,SAAS,CAAC,CAAC,CAAC;AAAA,IACvD;AAEA,QAAI,CAAC,QAAQ,KAAK,OAAO,GAAG;AAC1B,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AACD,aAAO,KAAK,MAAM,QAAQ,KAAK,OAAO,CAAC,CAAC;AAAA,IAC1C;AAAA,EACF;AACF;;;AJ/HA,IAAM,4BAA4BC,WAAU,6BAA6B,oBAAI,IAAqB,CAAC;AAEnG,IAAM,gBAAgBA,WAAU,yBAAyB,oBAAI,IAAsD,CAAC;AAE7G,IAAM,YAAY,CAAC,MAAc,UAAoB,UAAU,SAAS;AAC7E,gBAAc,IAAI,MAAM;AAAA,IACtB;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEO,IAAM,YAAY,CAAC,WAA6B;AACrD,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,IAAI,cAAc;AAAA,IAC3B,KAAK;AACH,aAAO,IAAI,cAAc,OAAO,OAAO;AAAA,IACzC,KAAK,SAAS;AACZ,UAAI,CAAC,OAAO,OAAO;AACjB,cAAM,IAAI,MAAM,sBAAsB;AAAA,MACxC;AACA,aAAO,IAAI,YAAY,OAAO,KAAM;AAAA,IACtC;AAAA,IACA,SAAS;AACP,YAAM,eAAe,cAAc,IAAI,MAAM;AAC7C,UAAI,CAAC,cAAc;AACjB,cAAM,IAAI,MAAM,UAAU,MAAM,aAAa;AAAA,MAC/C;AAEA,aAAO,aAAa;AAAA,IACtB;AAAA,EACF;AACF;AAEA,IAAM,aAAa,MAAkB;AACnC,SAAO,OAAO,KAAK,OAAO,OAAO,EAC9B,IAAI,CAAC,WAAW;AACf,QAAI,OAAO,QAAQ,MAAgB,KAAK,cAAc,IAAI,MAAM,GAAG,SAAS;AAC1E,aAAO,UAAU,MAAM;AAAA,IACzB;AACA;AAAA,EACF,CAAC,EACA,OAAO,CAAC,MAAM,CAAC;AACpB;AAEO,IAAM,cAAc,OAAO,KAAY,WAAqB,CAAC,GAAG,SAAmB;AACxF,QAAM,QAAQ,OAAO,SAAS,YAAY,CAAC,OAAO,OAAO;AACzD,MAAI,OAAO;AACT,8BAA0B,IAAI,GAAG;AAAA,EACnC,OAAO;AACL,UAAM,kBAAkB,KAAK,QAAQ;AAAA,EACvC;AAEA,SAAO;AACT;AAOO,IAAM,gBAAgB,OAAO,SAAkB,SAAmB;AACvE,QAAM,QAAQ,OAAO,SAAS,YAAY,CAAC,OAAO,OAAO;AACzD,MAAI,OAAO;AACT,8BAA0B,IAAI,OAAO;AAAA,EACvC,OAAO;AACL,UAAM,oBAAoB,OAAO;AAAA,EACnC;AAEA,SAAO;AACT;AAEO,IAAM,wBAAwB,YAAY;AAC/C,QAAM,WAA2B,CAAC;AAClC,QAAM,mBAAmB,0BAA0B,OAAO;AAC1D,4BAA0B,MAAM;AAEhC,aAAW,OAAO,kBAAkB;AAClC,aAAS,KAAK,WAAW,GAAG,IAAI,oBAAoB,GAAG,IAAI,kBAAkB,GAAG,CAAC;AAAA,EACnF;AAEA,QAAM,QAAQ,WAAW,QAAQ;AAEnC;AAEA,IAAM,oBAAoB,CAAC,KAAY,WAAqB,CAAC,MAAM;AACjE,SAAO,QAAQ;AAAA,IACb,WAAW,EAAE,IAAI,CAAC,WAAW;AAC3B,aAAO,OAAO,YAAY,KAAK;AAAA,QAC7B,SAAS,SAAS;AAAA,QAClB,QAAQC,MAAK,UAAU,SAAS;AAAA,MAClC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEA,IAAM,sBAAsB,CAAC,YAAqB;AAChD,SAAO,QAAQ;AAAA,IACb,WAAW,EAAE,IAAI,CAAC,WAAW;AAC3B,aAAO,OAAO,cAAc;AAAA,QAC1B,GAAG;AAAA,QACH,iBAAiB;AAAA,UACf,SAAS,QAAQ,iBAAiB;AAAA,UAClC,QAAQ;AAAA,YACN,GAAG,QAAQ;AAAA,YACX,GAAI,QAAQ,kBAAkBA,MAAK,QAAQ,iBAAiB,SAAS,IAAI;AAAA,UAC3E;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEO,IAAM,qBAAqB,CAAC,YAAiC;AAClE,aAAW,EAAE,QAAQ,CAAC,WAAW;AAC/B,WAAO,mBAAmB,OAAO;AAAA,EACnC,CAAC;AACH;",
6
- "names": ["singleton", "omit", "ProblemSeverity", "ProblemSeverity", "singleton", "omit"]
7
- }
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/tsconfig.json DELETED
@@ -1,14 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.module",
3
- "compilerOptions": {
4
- "rootDir": "src",
5
- "outDir": "dist"
6
- },
7
- "include": [
8
- "src/**/*.ts"
9
- ],
10
- "exclude": [
11
- "node_modules",
12
- "dist/**/*"
13
- ]
14
- }