@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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 1.6.9
4
+
5
+ ### Patch Changes
6
+
7
+ - ed065df: improve: failec error reporting handling
8
+
3
9
  ## 1.6.8
4
10
 
5
11
  ### Patch Changes
@@ -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.toJSON(),
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.toJSON());
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.toJSON(),
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","error","CauseException","reportSentry","logError","dropUndefined","__cause__","toJSON","__error_name__","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
+ {"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;AAGlF,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,WAEG,MAAM,OAAO,CAAC,WAAW,OAAO,MAAM,EAAE,OAAO,CAAC,sEAsBhE;AAgBD,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,MAAM,WAEG,MAAM,CAAC,CAAC,WAAW,OAAO,MAAM,EAAE,OAAO,CAAC,uCAiB1D;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"}
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"}
@@ -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.toJSON(),
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.toJSON());
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.toJSON(),
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JSZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvclJlcG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFFL0UsTUFBTSxVQUFVLFdBQVcsQ0FDekIsSUFBWTtJQUVaLE9BQU8sQ0FBQyxLQUFxQixFQUFFLE1BQWdDLEVBQUUsRUFBRSxDQUNqRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDcEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzVDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMxRyxPQUFNO1FBQ1IsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUU3QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUss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
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.8",
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": {
@@ -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(Effect.annotateLogs(dropUndefined({
24
- extras,
25
- __cause__: error.toJSON(),
26
- __error_name__: name
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.toJSON() as any)
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(Effect.annotateLogs(dropUndefined({
62
- extras,
63
- __cause__: error.toJSON(),
64
- __error_name__: name
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
  }