@effect-app/infra 1.6.8 → 1.6.9
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/CHANGELOG.md +6 -0
- package/_cjs/errorReporter.cjs +20 -5
- package/_cjs/errorReporter.cjs.map +1 -1
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +24 -6
- package/package.json +2 -2
- package/src/errorReporter.ts +33 -11
package/CHANGELOG.md
CHANGED
package/_cjs/errorReporter.cjs
CHANGED
|
@@ -14,6 +14,21 @@ var _errors = require("./errors.cjs");
|
|
|
14
14
|
var _RequestContextContainer = require("./services/RequestContextContainer.cjs");
|
|
15
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
const tryToJson = error => {
|
|
18
|
+
try {
|
|
19
|
+
return error.toJSON();
|
|
20
|
+
} catch {
|
|
21
|
+
try {
|
|
22
|
+
return error.toString();
|
|
23
|
+
} catch (err) {
|
|
24
|
+
try {
|
|
25
|
+
return `Failed to convert error: ${err}`;
|
|
26
|
+
} catch {
|
|
27
|
+
return `Failed to convert error: unknown failure`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
17
32
|
function reportError(name) {
|
|
18
33
|
return (cause, extras) => _effectApp.Effect.gen(function* ($) {
|
|
19
34
|
yield* $((0, _errors.annotateSpanWithError)(cause, name));
|
|
@@ -25,9 +40,9 @@ function reportError(name) {
|
|
|
25
40
|
yield* $(reportSentry(error, extras));
|
|
26
41
|
yield* $(_effectApp.Effect.logError("Reporting error", cause).pipe(_effectApp.Effect.annotateLogs((0, _utils.dropUndefined)({
|
|
27
42
|
extras,
|
|
28
|
-
__cause__: error
|
|
43
|
+
__cause__: tryToJson(error),
|
|
29
44
|
__error_name__: name
|
|
30
|
-
}))));
|
|
45
|
+
})), _effectApp.Effect.catchAll(() => _effectApp.Effect.logError("Failed to log error"))));
|
|
31
46
|
error[_errors.ErrorReported] = true;
|
|
32
47
|
return error;
|
|
33
48
|
});
|
|
@@ -38,7 +53,7 @@ function reportSentry(error, extras) {
|
|
|
38
53
|
const scope = new Sentry.Scope();
|
|
39
54
|
if (context) scope.setContext("context", context);
|
|
40
55
|
if (extras) scope.setContext("extras", extras);
|
|
41
|
-
scope.setContext("error", error
|
|
56
|
+
scope.setContext("error", tryToJson(error));
|
|
42
57
|
Sentry.captureException(error, scope);
|
|
43
58
|
}));
|
|
44
59
|
}
|
|
@@ -53,9 +68,9 @@ function logError(name) {
|
|
|
53
68
|
const error = new _errors.CauseException(cause, name);
|
|
54
69
|
yield* $(_effectApp.Effect.logWarning("Logging error", cause).pipe(_effectApp.Effect.annotateLogs((0, _utils.dropUndefined)({
|
|
55
70
|
extras,
|
|
56
|
-
__cause__: error
|
|
71
|
+
__cause__: tryToJson(error),
|
|
57
72
|
__error_name__: name
|
|
58
|
-
}))));
|
|
73
|
+
})), _effectApp.Effect.catchAll(() => _effectApp.Effect.logError("Failed to log error"))));
|
|
59
74
|
});
|
|
60
75
|
}
|
|
61
76
|
function captureException(error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorReporter.cjs","names":["_utils","require","Sentry","_interopRequireWildcard","_effectApp","_errors","_RequestContextContainer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","reportError","name","cause","extras","Effect","gen","$","annotateSpanWithError","Cause","isInterrupted","logDebug","pipe","annotateLogs","JSON","stringify","
|
|
1
|
+
{"version":3,"file":"errorReporter.cjs","names":["_utils","require","Sentry","_interopRequireWildcard","_effectApp","_errors","_RequestContextContainer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","tryToJson","error","toJSON","toString","err","reportError","name","cause","extras","Effect","gen","$","annotateSpanWithError","Cause","isInterrupted","logDebug","pipe","annotateLogs","JSON","stringify","CauseException","reportSentry","logError","dropUndefined","__cause__","__error_name__","catchAll","ErrorReported","RequestContextContainer","getOption","map","ctx","context","Option","getOrUndefined","scope","Scope","setContext","captureException","logWarning","console","reportMessage","message","captureMessage","warn"],"sources":["../src/errorReporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorReporter.d.ts","sourceRoot":"","sources":["../src/errorReporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,YAAY,CAAA;AAClD,OAAO,EAAyB,cAAc,EAAiB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"errorReporter.d.ts","sourceRoot":"","sources":["../src/errorReporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,YAAY,CAAA;AAClD,OAAO,EAAyB,cAAc,EAAiB,MAAM,aAAa,CAAA;AAmBlF,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,WAEG,MAAM,OAAO,CAAC,WAAW,OAAO,MAAM,EAAE,OAAO,CAAC,sEAyBhE;AAgBD,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,MAAM,WAEG,MAAM,CAAC,CAAC,WAAW,OAAO,MAAM,EAAE,OAAO,CAAC,uCAoB1D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,QAG9C;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,qCAU1F"}
|
package/dist/errorReporter.js
CHANGED
|
@@ -3,6 +3,24 @@ import * as Sentry from "@sentry/node";
|
|
|
3
3
|
import { Cause, Effect, Option } from "effect-app";
|
|
4
4
|
import { annotateSpanWithError, CauseException, ErrorReported } from "./errors.js";
|
|
5
5
|
import { RequestContextContainer } from "./services/RequestContextContainer.js";
|
|
6
|
+
const tryToJson = (error) => {
|
|
7
|
+
try {
|
|
8
|
+
return error.toJSON();
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
try {
|
|
12
|
+
return error.toString();
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
try {
|
|
16
|
+
return `Failed to convert error: ${err}`;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return `Failed to convert error: unknown failure`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
6
24
|
export function reportError(name) {
|
|
7
25
|
return (cause, extras) => Effect.gen(function* ($) {
|
|
8
26
|
yield* $(annotateSpanWithError(cause, name));
|
|
@@ -16,9 +34,9 @@ export function reportError(name) {
|
|
|
16
34
|
.logError("Reporting error", cause)
|
|
17
35
|
.pipe(Effect.annotateLogs(dropUndefined({
|
|
18
36
|
extras,
|
|
19
|
-
__cause__: error
|
|
37
|
+
__cause__: tryToJson(error),
|
|
20
38
|
__error_name__: name
|
|
21
|
-
}))));
|
|
39
|
+
})), Effect.catchAll(() => Effect.logError("Failed to log error"))));
|
|
22
40
|
error[ErrorReported] = true;
|
|
23
41
|
return error;
|
|
24
42
|
});
|
|
@@ -31,7 +49,7 @@ function reportSentry(error, extras) {
|
|
|
31
49
|
scope.setContext("context", context);
|
|
32
50
|
if (extras)
|
|
33
51
|
scope.setContext("extras", extras);
|
|
34
|
-
scope.setContext("error", error
|
|
52
|
+
scope.setContext("error", tryToJson(error));
|
|
35
53
|
Sentry.captureException(error, scope);
|
|
36
54
|
}));
|
|
37
55
|
}
|
|
@@ -46,9 +64,9 @@ export function logError(name) {
|
|
|
46
64
|
.logWarning("Logging error", cause)
|
|
47
65
|
.pipe(Effect.annotateLogs(dropUndefined({
|
|
48
66
|
extras,
|
|
49
|
-
__cause__: error
|
|
67
|
+
__cause__: tryToJson(error),
|
|
50
68
|
__error_name__: name
|
|
51
|
-
}))));
|
|
69
|
+
})), Effect.catchAll(() => Effect.logError("Failed to log error"))));
|
|
52
70
|
});
|
|
53
71
|
}
|
|
54
72
|
export function captureException(error) {
|
|
@@ -67,4 +85,4 @@ export function reportMessage(message, extras) {
|
|
|
67
85
|
console.warn(message);
|
|
68
86
|
}));
|
|
69
87
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JSZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvclJlcG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFFL0UsTUFBTSxTQUFTLEdBQUcsQ0FBSSxLQUF3QixFQUFFLEVBQUU7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLElBQUksQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDO2dCQUNILE9BQU8sNEJBQTRCLEdBQUcsRUFBRSxDQUFBO1lBQzFDLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsT0FBTywwQ0FBMEMsQ0FBQTtZQUNuRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUE7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUN6QixJQUFZO0lBRVosT0FBTyxDQUFDLEtBQXFCLEVBQUUsTUFBZ0MsRUFBRSxFQUFFLENBQ2pFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUNwQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.9",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"proper-lockfile": "^4.1.2",
|
|
19
19
|
"pure-rand": "6.1.0",
|
|
20
20
|
"redlock": "^4.2.0",
|
|
21
|
+
"@effect-app/core": "1.2.3",
|
|
21
22
|
"effect-app": "1.4.8",
|
|
22
23
|
"@effect-app/infra-adapters": "1.2.10",
|
|
23
|
-
"@effect-app/core": "1.2.3",
|
|
24
24
|
"@effect-app/schema": "1.2.8"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
package/src/errorReporter.ts
CHANGED
|
@@ -4,6 +4,22 @@ import { Cause, Effect, Option } from "effect-app"
|
|
|
4
4
|
import { annotateSpanWithError, CauseException, ErrorReported } from "./errors.js"
|
|
5
5
|
import { RequestContextContainer } from "./services/RequestContextContainer.js"
|
|
6
6
|
|
|
7
|
+
const tryToJson = <T>(error: CauseException<T>) => {
|
|
8
|
+
try {
|
|
9
|
+
return error.toJSON()
|
|
10
|
+
} catch {
|
|
11
|
+
try {
|
|
12
|
+
return error.toString()
|
|
13
|
+
} catch (err) {
|
|
14
|
+
try {
|
|
15
|
+
return `Failed to convert error: ${err}`
|
|
16
|
+
} catch {
|
|
17
|
+
return `Failed to convert error: unknown failure`
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
7
23
|
export function reportError(
|
|
8
24
|
name: string
|
|
9
25
|
) {
|
|
@@ -20,11 +36,14 @@ export function reportError(
|
|
|
20
36
|
yield* $(
|
|
21
37
|
Effect
|
|
22
38
|
.logError("Reporting error", cause)
|
|
23
|
-
.pipe(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
39
|
+
.pipe(
|
|
40
|
+
Effect.annotateLogs(dropUndefined({
|
|
41
|
+
extras,
|
|
42
|
+
__cause__: tryToJson(error),
|
|
43
|
+
__error_name__: name
|
|
44
|
+
})),
|
|
45
|
+
Effect.catchAll(() => Effect.logError("Failed to log error"))
|
|
46
|
+
)
|
|
28
47
|
)
|
|
29
48
|
error[ErrorReported] = true
|
|
30
49
|
return error
|
|
@@ -40,7 +59,7 @@ function reportSentry(
|
|
|
40
59
|
const scope = new Sentry.Scope()
|
|
41
60
|
if (context) scope.setContext("context", context as unknown as Record<string, unknown>)
|
|
42
61
|
if (extras) scope.setContext("extras", extras)
|
|
43
|
-
scope.setContext("error", error
|
|
62
|
+
scope.setContext("error", tryToJson(error) as any)
|
|
44
63
|
Sentry.captureException(error, scope)
|
|
45
64
|
}))
|
|
46
65
|
}
|
|
@@ -58,11 +77,14 @@ export function logError<E>(
|
|
|
58
77
|
yield* $(
|
|
59
78
|
Effect
|
|
60
79
|
.logWarning("Logging error", cause)
|
|
61
|
-
.pipe(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
80
|
+
.pipe(
|
|
81
|
+
Effect.annotateLogs(dropUndefined({
|
|
82
|
+
extras,
|
|
83
|
+
__cause__: tryToJson(error),
|
|
84
|
+
__error_name__: name
|
|
85
|
+
})),
|
|
86
|
+
Effect.catchAll(() => Effect.logError("Failed to log error"))
|
|
87
|
+
)
|
|
66
88
|
)
|
|
67
89
|
})
|
|
68
90
|
}
|