@effect-app/infra 1.43.2 → 1.43.4
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 +20 -0
- package/_cjs/errorReporter.cjs +4 -20
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/logger/jsonLogger.cjs +3 -1
- package/_cjs/logger/jsonLogger.cjs.map +1 -1
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +5 -24
- package/dist/logger/jsonLogger.js +2 -2
- package/package.json +12 -12
- package/src/errorReporter.ts +4 -21
- package/src/logger/jsonLogger.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @effect-app/infra
|
|
2
2
|
|
|
3
|
+
## 1.43.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 4a814f5: improve error report
|
|
8
|
+
- Updated dependencies [4a814f5]
|
|
9
|
+
- @effect-app/infra-adapters@1.20.4
|
|
10
|
+
- effect-app@1.30.3
|
|
11
|
+
|
|
12
|
+
## 1.43.3
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- cda1477: update packages
|
|
17
|
+
- Updated dependencies [cda1477]
|
|
18
|
+
- @effect-app/infra-adapters@1.20.3
|
|
19
|
+
- effect-app@1.30.2
|
|
20
|
+
- @effect-app/schema@1.19.1
|
|
21
|
+
- @effect-app/core@1.17.1
|
|
22
|
+
|
|
3
23
|
## 1.43.2
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/_cjs/errorReporter.cjs
CHANGED
|
@@ -15,24 +15,8 @@ var _logger = require("./logger.cjs");
|
|
|
15
15
|
var _RequestContextContainer = require("./services/RequestContextContainer.cjs");
|
|
16
16
|
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); }
|
|
17
17
|
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; }
|
|
18
|
-
const tryToJson = error => {
|
|
19
|
-
try {
|
|
20
|
-
return error.toJSON();
|
|
21
|
-
} catch {
|
|
22
|
-
try {
|
|
23
|
-
return error.toString();
|
|
24
|
-
} catch (err) {
|
|
25
|
-
try {
|
|
26
|
-
return `Failed to convert error: ${err}`;
|
|
27
|
-
} catch {
|
|
28
|
-
return `Failed to convert error: unknown failure`;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
18
|
function reportError(name) {
|
|
34
19
|
return (cause, extras) => _effectApp.Effect.gen(function* () {
|
|
35
|
-
yield* (0, _errors.annotateSpanWithError)(cause, name);
|
|
36
20
|
if (_effectApp.Cause.isInterrupted(cause)) {
|
|
37
21
|
yield* _logger.InfraLogger.logDebug("Interrupted").pipe(_effectApp.Effect.annotateLogs("extras", JSON.stringify(extras ?? {})));
|
|
38
22
|
return;
|
|
@@ -41,7 +25,7 @@ function reportError(name) {
|
|
|
41
25
|
yield* reportSentry(error, extras);
|
|
42
26
|
yield* _logger.InfraLogger.logError("Reporting error", cause).pipe(_effectApp.Effect.annotateLogs((0, _utils.dropUndefined)({
|
|
43
27
|
extras,
|
|
44
|
-
|
|
28
|
+
cause: (0, _errors.tryToJson)(error),
|
|
45
29
|
__error_name__: name
|
|
46
30
|
})), _effectApp.Effect.catchAllCause(cause => _logger.InfraLogger.logError("Failed to log error", cause)), _effectApp.Effect.catchAllCause(() => _logger.InfraLogger.logError("Failed to log error cause")));
|
|
47
31
|
error[_errors.ErrorReported] = true;
|
|
@@ -54,7 +38,8 @@ function reportSentry(error, extras) {
|
|
|
54
38
|
const scope = new Sentry.Scope();
|
|
55
39
|
if (context) scope.setContext("context", context);
|
|
56
40
|
if (extras) scope.setContext("extras", extras);
|
|
57
|
-
scope.setContext("error", tryToJson(error));
|
|
41
|
+
scope.setContext("error", (0, _errors.tryToJson)(error));
|
|
42
|
+
scope.setContext("cause", (0, _errors.tryToJson)(error.originalCause));
|
|
58
43
|
Sentry.captureException(error, scope);
|
|
59
44
|
}));
|
|
60
45
|
}
|
|
@@ -66,10 +51,9 @@ function logError(name) {
|
|
|
66
51
|
})));
|
|
67
52
|
return;
|
|
68
53
|
}
|
|
69
|
-
const error = new _errors.CauseException(cause, name);
|
|
70
54
|
yield* _logger.InfraLogger.logWarning("Logging error", cause).pipe(_effectApp.Effect.annotateLogs((0, _utils.dropUndefined)({
|
|
71
55
|
extras,
|
|
72
|
-
|
|
56
|
+
cause: (0, _errors.tryToJson)(cause),
|
|
73
57
|
__error_name__: name
|
|
74
58
|
})), _effectApp.Effect.catchAllCause(cause => _logger.InfraLogger.logError("Failed to log error", cause)), _effectApp.Effect.catchAllCause(() => _logger.InfraLogger.logError("Failed to log error cause")));
|
|
75
59
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorReporter.cjs","names":["_utils","require","Sentry","_interopRequireWildcard","_effectApp","_errors","_logger","_RequestContextContainer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","
|
|
1
|
+
{"version":3,"file":"errorReporter.cjs","names":["_utils","require","Sentry","_interopRequireWildcard","_effectApp","_errors","_logger","_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","Cause","isInterrupted","InfraLogger","logDebug","pipe","annotateLogs","JSON","stringify","error","CauseException","reportSentry","logError","dropUndefined","tryToJson","__error_name__","catchAllCause","ErrorReported","RequestContextContainer","getOption","map","ctx","context","Option","getOrUndefined","scope","Scope","setContext","originalCause","captureException","logWarning","console","reportMessage","message","captureMessage","warn"],"sources":["../src/errorReporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -24,7 +24,9 @@ const jsonLogger = exports.jsonLogger = _effectApp.Logger.make(({
|
|
|
24
24
|
fiber: _effectApp.FiberId.threadName(fiberId),
|
|
25
25
|
message,
|
|
26
26
|
request: _effectApp.Option.getOrUndefined(c),
|
|
27
|
-
cause: cause
|
|
27
|
+
cause: cause !== null && cause !== _effectApp.Cause.empty ? _effectApp.Cause.pretty(cause, {
|
|
28
|
+
renderErrorCause: true
|
|
29
|
+
}) : undefined,
|
|
28
30
|
spans: _effectApp.List.map(spans, _ => ({
|
|
29
31
|
label: _.label,
|
|
30
32
|
timing: nowMillis - _.startTime
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonLogger.cjs","names":["_effectApp","require","_shared","jsonLogger","exports","Logger","make","annotations","cause","context","fiberId","logLevel","message","spans","now","Date","nowMillis","getTime","c","getRequestContext","data","timestamp","level","label","fiber","FiberId","threadName","request","Option","getOrUndefined","Cause","empty","pretty","undefined","List","map","_","timing","startTime","pipe","toArray","HashMap","size","reduce","prev","k","v","globalThis","console","log","JSON","stringify","logJson","replace","defaultLogger","withSpanAnnotations"],"sources":["../../src/logger/jsonLogger.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEO,MAAME,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAGE,iBAAM,CAACC,IAAI,CACnC,CAAC;EAAEC,WAAW;EAAEC,KAAK;EAAEC,OAAO;EAAEC,OAAO;EAAEC,QAAQ;EAAEC,OAAO;EAAEC;AAAK,CAAE,KAAI;EACrE,MAAMC,GAAG,GAAG,IAAIC,IAAI,EAAE;EACtB,MAAMC,SAAS,GAAGF,GAAG,CAACG,OAAO,EAAE;EAE/B,MAAMC,CAAC,GAAG,IAAAC,yBAAiB,EAACV,OAAO,CAAC;EAEpC,MAAMW,IAAI,GAAG;IACXC,SAAS,EAAEP,GAAG;IACdQ,KAAK,EAAEX,QAAQ,CAACY,KAAK;IACrBC,KAAK,EAAEC,kBAAO,CAACC,UAAU,CAAChB,OAAO,CAAC;IAClCE,OAAO;IACPe,OAAO,EAAEC,iBAAM,CAACC,cAAc,CAACX,CAAC,CAAC;IACjCV,KAAK,EAAEA,KAAK,
|
|
1
|
+
{"version":3,"file":"jsonLogger.cjs","names":["_effectApp","require","_shared","jsonLogger","exports","Logger","make","annotations","cause","context","fiberId","logLevel","message","spans","now","Date","nowMillis","getTime","c","getRequestContext","data","timestamp","level","label","fiber","FiberId","threadName","request","Option","getOrUndefined","Cause","empty","pretty","renderErrorCause","undefined","List","map","_","timing","startTime","pipe","toArray","HashMap","size","reduce","prev","k","v","globalThis","console","log","JSON","stringify","logJson","replace","defaultLogger","withSpanAnnotations"],"sources":["../../src/logger/jsonLogger.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEO,MAAME,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAGE,iBAAM,CAACC,IAAI,CACnC,CAAC;EAAEC,WAAW;EAAEC,KAAK;EAAEC,OAAO;EAAEC,OAAO;EAAEC,QAAQ;EAAEC,OAAO;EAAEC;AAAK,CAAE,KAAI;EACrE,MAAMC,GAAG,GAAG,IAAIC,IAAI,EAAE;EACtB,MAAMC,SAAS,GAAGF,GAAG,CAACG,OAAO,EAAE;EAE/B,MAAMC,CAAC,GAAG,IAAAC,yBAAiB,EAACV,OAAO,CAAC;EAEpC,MAAMW,IAAI,GAAG;IACXC,SAAS,EAAEP,GAAG;IACdQ,KAAK,EAAEX,QAAQ,CAACY,KAAK;IACrBC,KAAK,EAAEC,kBAAO,CAACC,UAAU,CAAChB,OAAO,CAAC;IAClCE,OAAO;IACPe,OAAO,EAAEC,iBAAM,CAACC,cAAc,CAACX,CAAC,CAAC;IACjCV,KAAK,EAAEA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKsB,gBAAK,CAACC,KAAK,GAAGD,gBAAK,CAACE,MAAM,CAACxB,KAAK,EAAE;MAAEyB,gBAAgB,EAAE;IAAI,CAAE,CAAC,GAAGC,SAAS;IAC5GrB,KAAK,EAAEsB,eAAI,CAACC,GAAG,CAACvB,KAAK,EAAGwB,CAAC,KAAM;MAAEd,KAAK,EAAEc,CAAC,CAACd,KAAK;MAAEe,MAAM,EAAEtB,SAAS,GAAGqB,CAAC,CAACE;IAAS,CAAE,CAAC,CAAC,CAACC,IAAI,CAACL,eAAI,CAACM,OAAO,CAAC;IACvGlC,WAAW,EAAEmC,kBAAO,CAACC,IAAI,CAACpC,WAAW,CAAC,GAAG,CAAC,GACtC,CAAC,GAAGA,WAAW,CAAC,CAACqC,MAAM,CAAC,CAACC,IAAI,EAAE,CAACC,CAAC,EAAEC,CAAC,CAAC,KAAI;MACzCF,IAAI,CAACC,CAAC,CAAC,GAAGC,CAAC;MACX,OAAOF,IAAI;IACb,CAAC,EAAE,EAA6B,CAAC,GAC/BX;GACL;EAEDc,UAAU,CAACC,OAAO,CAACC,GAAG,CAACC,IAAI,CAACC,SAAS,CAAChC,IAAI,CAAC,CAAC;AAC9C,CAAC,CACF;AAEM,MAAMiC,OAAO,GAAAjD,OAAA,CAAAiD,OAAA,GAAGhD,iBAAM,CAACiD,OAAO,CAACjD,iBAAM,CAACkD,aAAa,EAAElD,iBAAM,CAACmD,mBAAmB,CAACrD,UAAU,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../src/RequestContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAG9B,eAAO,MAAM,MAAM,yBAAwB,CAAA;AAC3C,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;;;;;;
|
|
1
|
+
{"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../src/RequestContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAG9B,eAAO,MAAM,MAAM,yBAAwB,CAAA;AAC3C,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;;;;;;uBAW5B,iBAAiB,iBAIzB,sBAAqB;;;uBAKV,iBACL,iBACP,sBAAsB;;;;;;2BAaN,iBAAiB;;;2BAcG,iBAAiB;;;;;;;;;;;;;;AA9CvD,qBAAa,oBAAqB,SAAQ,yBASxC;CAAG;;;;;;;uBADM,iBAAiB,iBAIzB,sBAAqB;;;uBAKV,iBACL,iBACP,sBAAsB;;;;;;;;;;;2BAaN,iBAAiB;;;2BAcG,iBAAiB;;;;;;;;;;;;;;;;AAnCvD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAgBlC;IAEA,MAAM,CAAC,OAAO,CACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,qBAAqB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAUhE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc;;;;;;CASrD;AAED,eAAO,MAAM,cAAc,QAAS,cAAc;;;;;;;;;CAkBhD,CAAA;AAKF,yBAAiB,oBAAoB,CAAC;IACpC,UAAiB,IAAK,SAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KAAG;CACzF;AACD,yBAAiB,cAAc,CAAC;IAC9B,UAAiB,IAAK,SAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;KAAG;CACnF"}
|
|
@@ -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,
|
|
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,EAAE,cAAc,EAA4B,MAAM,aAAa,CAAA;AAItE,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,WAEG,KAAK,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,sEAwBhE;AAiBD,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,MAAM,WAEG,KAAK,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,uCAkB1D;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,qCAU9E"}
|
package/dist/errorReporter.js
CHANGED
|
@@ -1,30 +1,11 @@
|
|
|
1
1
|
import { dropUndefined } from "@effect-app/core/utils";
|
|
2
2
|
import * as Sentry from "@sentry/node";
|
|
3
3
|
import { Cause, Effect, Option } from "effect-app";
|
|
4
|
-
import {
|
|
4
|
+
import { CauseException, ErrorReported, tryToJson } from "./errors.js";
|
|
5
5
|
import { InfraLogger } from "./logger.js";
|
|
6
6
|
import { RequestContextContainer } from "./services/RequestContextContainer.js";
|
|
7
|
-
const tryToJson = (error) => {
|
|
8
|
-
try {
|
|
9
|
-
return error.toJSON();
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
try {
|
|
13
|
-
return error.toString();
|
|
14
|
-
}
|
|
15
|
-
catch (err) {
|
|
16
|
-
try {
|
|
17
|
-
return `Failed to convert error: ${err}`;
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
return `Failed to convert error: unknown failure`;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
7
|
export function reportError(name) {
|
|
26
8
|
return (cause, extras) => Effect.gen(function* () {
|
|
27
|
-
yield* annotateSpanWithError(cause, name);
|
|
28
9
|
if (Cause.isInterrupted(cause)) {
|
|
29
10
|
yield* InfraLogger.logDebug("Interrupted").pipe(Effect.annotateLogs("extras", JSON.stringify(extras ?? {})));
|
|
30
11
|
return;
|
|
@@ -35,7 +16,7 @@ export function reportError(name) {
|
|
|
35
16
|
.logError("Reporting error", cause)
|
|
36
17
|
.pipe(Effect.annotateLogs(dropUndefined({
|
|
37
18
|
extras,
|
|
38
|
-
|
|
19
|
+
cause: tryToJson(error),
|
|
39
20
|
__error_name__: name
|
|
40
21
|
})), Effect.catchAllCause((cause) => InfraLogger.logError("Failed to log error", cause)), Effect.catchAllCause(() => InfraLogger.logError("Failed to log error cause")));
|
|
41
22
|
error[ErrorReported] = true;
|
|
@@ -51,6 +32,7 @@ function reportSentry(error, extras) {
|
|
|
51
32
|
if (extras)
|
|
52
33
|
scope.setContext("extras", extras);
|
|
53
34
|
scope.setContext("error", tryToJson(error));
|
|
35
|
+
scope.setContext("cause", tryToJson(error.originalCause));
|
|
54
36
|
Sentry.captureException(error, scope);
|
|
55
37
|
}));
|
|
56
38
|
}
|
|
@@ -60,12 +42,11 @@ export function logError(name) {
|
|
|
60
42
|
yield* InfraLogger.logDebug("Interrupted").pipe(Effect.annotateLogs(dropUndefined({ extras })));
|
|
61
43
|
return;
|
|
62
44
|
}
|
|
63
|
-
const error = new CauseException(cause, name);
|
|
64
45
|
yield* InfraLogger
|
|
65
46
|
.logWarning("Logging error", cause)
|
|
66
47
|
.pipe(Effect.annotateLogs(dropUndefined({
|
|
67
48
|
extras,
|
|
68
|
-
|
|
49
|
+
cause: tryToJson(cause),
|
|
69
50
|
__error_name__: name
|
|
70
51
|
})), Effect.catchAllCause((cause) => InfraLogger.logError("Failed to log error", cause)), Effect.catchAllCause(() => InfraLogger.logError("Failed to log error cause")));
|
|
71
52
|
});
|
|
@@ -86,4 +67,4 @@ export function reportMessage(message, extras) {
|
|
|
86
67
|
console.warn(message);
|
|
87
68
|
}));
|
|
88
69
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JSZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvclJlcG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFFL0UsTUFBTSxVQUFVLFdBQVcsQ0FDekIsSUFBWTtJQUVaLE9BQU8sQ0FBQyxLQUFxQixFQUFFLE1BQWdDLEVBQUUsRUFBRSxDQUNqRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNsQixJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDNUcsT0FBTTtRQUNSLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFFN0MsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNsQyxLQUFLLENBQUMsQ0FBQyxXQUFXO2FBQ2YsUUFBUSxDQUFDLGlCQUFpQixF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
|
|
@@ -10,7 +10,7 @@ export const jsonLogger = Logger.make(({ annotations, cause, context, fiberId, l
|
|
|
10
10
|
fiber: FiberId.threadName(fiberId),
|
|
11
11
|
message,
|
|
12
12
|
request: Option.getOrUndefined(c),
|
|
13
|
-
cause: cause
|
|
13
|
+
cause: cause !== null && cause !== Cause.empty ? Cause.pretty(cause, { renderErrorCause: true }) : undefined,
|
|
14
14
|
spans: List.map(spans, (_) => ({ label: _.label, timing: nowMillis - _.startTime })).pipe(List.toArray),
|
|
15
15
|
annotations: HashMap.size(annotations) > 0
|
|
16
16
|
? [...annotations].reduce((prev, [k, v]) => {
|
|
@@ -22,4 +22,4 @@ export const jsonLogger = Logger.make(({ annotations, cause, context, fiberId, l
|
|
|
22
22
|
globalThis.console.log(JSON.stringify(data));
|
|
23
23
|
});
|
|
24
24
|
export const logJson = Logger.replace(Logger.defaultLogger, Logger.withSpanAnnotations(jsonLogger));
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnZXIvanNvbkxvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNuQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtJQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO0lBQ3RCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUUvQixNQUFNLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUVwQyxNQUFNLElBQUksR0FBRztRQUNYLFNBQVMsRUFBRSxHQUFHO1FBQ2QsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO1FBQ3JCLEtBQUssRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxPQUFPO1FBQ1AsT0FBTyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDNUcsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3ZHLFdBQVcsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDWCxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUMsRUFBRSxFQUE2QixDQUFDO1lBQ2pDLENBQUMsQ0FBQyxTQUFTO0tBQ2QsQ0FBQTtJQUVELFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUM5QyxDQUFDLENBQ0YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUEifQ==
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "1.43.
|
|
3
|
+
"version": "1.43.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@azure/cosmos": "^4.1.1",
|
|
8
8
|
"@azure/service-bus": "^7.9.5",
|
|
9
|
-
"@effect/rpc": "^0.43.
|
|
10
|
-
"@effect/rpc-http": "^0.41.
|
|
9
|
+
"@effect/rpc": "^0.43.5",
|
|
10
|
+
"@effect/rpc-http": "^0.41.5",
|
|
11
11
|
"express-oauth2-jwt-bearer": "^1.6.0",
|
|
12
12
|
"@faker-js/faker": "^8.4.1",
|
|
13
13
|
"@sendgrid/helpers": "^8.0.0",
|
|
14
|
-
"@sendgrid/mail": "^8.1.
|
|
14
|
+
"@sendgrid/mail": "^8.1.4",
|
|
15
15
|
"change-case": "^5.4.4",
|
|
16
16
|
"cross-fetch": "^4.0.0",
|
|
17
17
|
"fast-check": "~3.22.0",
|
|
@@ -20,16 +20,16 @@
|
|
|
20
20
|
"proper-lockfile": "^4.1.2",
|
|
21
21
|
"pure-rand": "6.1.0",
|
|
22
22
|
"redlock": "^4.2.0",
|
|
23
|
-
"@effect-app/
|
|
24
|
-
"@effect-app/
|
|
25
|
-
"effect-app": "1.
|
|
26
|
-
"
|
|
23
|
+
"@effect-app/infra-adapters": "1.20.4",
|
|
24
|
+
"@effect-app/core": "1.17.1",
|
|
25
|
+
"@effect-app/schema": "1.19.1",
|
|
26
|
+
"effect-app": "1.30.3"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@babel/cli": "^7.25.7",
|
|
30
30
|
"@sentry/node": "^8.34.0",
|
|
31
31
|
"@types/express": "^5.0.0",
|
|
32
|
-
"@types/node": "~22.7.
|
|
32
|
+
"@types/node": "~22.7.6",
|
|
33
33
|
"@types/proper-lockfile": "^4.1.4",
|
|
34
34
|
"@types/redis": "^2.8.32",
|
|
35
35
|
"@types/redlock": "^4.0.7",
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"express": "^4.21.1",
|
|
46
|
-
"@effect/platform": "^0.68.
|
|
47
|
-
"@effect/schema": "^0.75.
|
|
48
|
-
"@effect/sql": "^0.16.
|
|
46
|
+
"@effect/platform": "^0.68.6",
|
|
47
|
+
"@effect/schema": "^0.75.5",
|
|
48
|
+
"@effect/sql": "^0.16.6",
|
|
49
49
|
"@effect/vitest": "^0.12.1",
|
|
50
50
|
"effect": "^3.9.2"
|
|
51
51
|
},
|
package/src/errorReporter.ts
CHANGED
|
@@ -1,32 +1,15 @@
|
|
|
1
1
|
import { dropUndefined } from "@effect-app/core/utils"
|
|
2
2
|
import * as Sentry from "@sentry/node"
|
|
3
3
|
import { Cause, Effect, Option } from "effect-app"
|
|
4
|
-
import {
|
|
4
|
+
import { CauseException, ErrorReported, tryToJson } from "./errors.js"
|
|
5
5
|
import { InfraLogger } from "./logger.js"
|
|
6
6
|
import { RequestContextContainer } from "./services/RequestContextContainer.js"
|
|
7
7
|
|
|
8
|
-
const tryToJson = <T>(error: CauseException<T>) => {
|
|
9
|
-
try {
|
|
10
|
-
return error.toJSON()
|
|
11
|
-
} catch {
|
|
12
|
-
try {
|
|
13
|
-
return error.toString()
|
|
14
|
-
} catch (err) {
|
|
15
|
-
try {
|
|
16
|
-
return `Failed to convert error: ${err}`
|
|
17
|
-
} catch {
|
|
18
|
-
return `Failed to convert error: unknown failure`
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
8
|
export function reportError(
|
|
25
9
|
name: string
|
|
26
10
|
) {
|
|
27
11
|
return (cause: Cause<unknown>, extras?: Record<string, unknown>) =>
|
|
28
12
|
Effect.gen(function*() {
|
|
29
|
-
yield* annotateSpanWithError(cause, name)
|
|
30
13
|
if (Cause.isInterrupted(cause)) {
|
|
31
14
|
yield* InfraLogger.logDebug("Interrupted").pipe(Effect.annotateLogs("extras", JSON.stringify(extras ?? {})))
|
|
32
15
|
return
|
|
@@ -39,7 +22,7 @@ export function reportError(
|
|
|
39
22
|
.pipe(
|
|
40
23
|
Effect.annotateLogs(dropUndefined({
|
|
41
24
|
extras,
|
|
42
|
-
|
|
25
|
+
cause: tryToJson(error),
|
|
43
26
|
__error_name__: name
|
|
44
27
|
})),
|
|
45
28
|
Effect.catchAllCause((cause) => InfraLogger.logError("Failed to log error", cause)),
|
|
@@ -61,6 +44,7 @@ function reportSentry(
|
|
|
61
44
|
if (context) scope.setContext("context", context as unknown as Record<string, unknown>)
|
|
62
45
|
if (extras) scope.setContext("extras", extras)
|
|
63
46
|
scope.setContext("error", tryToJson(error) as any)
|
|
47
|
+
scope.setContext("cause", tryToJson(error.originalCause) as any)
|
|
64
48
|
Sentry.captureException(error, scope)
|
|
65
49
|
}))
|
|
66
50
|
}
|
|
@@ -74,13 +58,12 @@ export function logError<E>(
|
|
|
74
58
|
yield* InfraLogger.logDebug("Interrupted").pipe(Effect.annotateLogs(dropUndefined({ extras })))
|
|
75
59
|
return
|
|
76
60
|
}
|
|
77
|
-
const error = new CauseException(cause, name)
|
|
78
61
|
yield* InfraLogger
|
|
79
62
|
.logWarning("Logging error", cause)
|
|
80
63
|
.pipe(
|
|
81
64
|
Effect.annotateLogs(dropUndefined({
|
|
82
65
|
extras,
|
|
83
|
-
|
|
66
|
+
cause: tryToJson(cause),
|
|
84
67
|
__error_name__: name
|
|
85
68
|
})),
|
|
86
69
|
Effect.catchAllCause((cause) => InfraLogger.logError("Failed to log error", cause)),
|
package/src/logger/jsonLogger.ts
CHANGED
|
@@ -14,7 +14,7 @@ export const jsonLogger = Logger.make<unknown, void>(
|
|
|
14
14
|
fiber: FiberId.threadName(fiberId),
|
|
15
15
|
message,
|
|
16
16
|
request: Option.getOrUndefined(c),
|
|
17
|
-
cause: cause
|
|
17
|
+
cause: cause !== null && cause !== Cause.empty ? Cause.pretty(cause, { renderErrorCause: true }) : undefined,
|
|
18
18
|
spans: List.map(spans, (_) => ({ label: _.label, timing: nowMillis - _.startTime })).pipe(List.toArray),
|
|
19
19
|
annotations: HashMap.size(annotations) > 0
|
|
20
20
|
? [...annotations].reduce((prev, [k, v]) => {
|