@effect-app/infra 1.6.7 → 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 +18 -0
- package/_cjs/errorReporter.cjs +20 -5
- package/_cjs/errorReporter.cjs.map +1 -1
- package/dist/RequestContext.d.ts +21 -13
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +24 -6
- package/dist/services/QueueMaker/service.d.ts +7 -9
- package/dist/services/QueueMaker/service.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/errorReporter.ts +33 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @effect-app/infra
|
|
2
2
|
|
|
3
|
+
## 1.6.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- ed065df: improve: failec error reporting handling
|
|
8
|
+
|
|
9
|
+
## 1.6.8
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 349c421: Update packages
|
|
14
|
+
- Updated dependencies [fe2754a]
|
|
15
|
+
- Updated dependencies [349c421]
|
|
16
|
+
- effect-app@1.4.8
|
|
17
|
+
- @effect-app/infra-adapters@1.2.10
|
|
18
|
+
- @effect-app/schema@1.2.8
|
|
19
|
+
- @effect-app/core@1.2.3
|
|
20
|
+
|
|
3
21
|
## 1.6.7
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
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":[]}
|
package/dist/RequestContext.d.ts
CHANGED
|
@@ -11,11 +11,15 @@ declare const RequestContextParent_base: S.EnhancedClass<RequestContextParent, {
|
|
|
11
11
|
withDefault: S.PropertySignature<":", string & S.NonEmptyString255Brand, never, ":", string, true, never>;
|
|
12
12
|
};
|
|
13
13
|
name: S.WithDefaults<S.Schema<string & S.NonEmptyString255Brand, string, never>> & S.Schema<string & S.NonEmptyString255Brand, string, never>;
|
|
14
|
-
userProfile: S.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
userProfile: S.optional<import("@effect/schema/Schema").Struct<{
|
|
15
|
+
sub: S.WithDefaults<S.Schema<string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, string, never> & {
|
|
16
|
+
make: () => string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand;
|
|
17
|
+
withDefault: S.PropertySignature<":", string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, never, ":", string, true, never>;
|
|
18
|
+
} & S.WithDefaults<S.Schema<string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, string, never>>> & S.Schema<string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, string, never> & {
|
|
19
|
+
make: () => string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand;
|
|
20
|
+
withDefault: S.PropertySignature<":", string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, never, ":", string, true, never>;
|
|
21
|
+
} & S.WithDefaults<S.Schema<string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, string, never>>;
|
|
22
|
+
}>>;
|
|
19
23
|
locale: S.Literal<["en", "de"]>;
|
|
20
24
|
createdAt: S.PropertySignature<":", Date, never, ":", string, true, never>;
|
|
21
25
|
}, RequestContextParent.From, never, {
|
|
@@ -40,16 +44,20 @@ declare const RequestContext_base: S.EnhancedClass<RequestContext, {
|
|
|
40
44
|
make: () => NonEmptyString255;
|
|
41
45
|
withDefault: S.PropertySignature<":", string & S.NonEmptyString255Brand, never, ":", string, true, never>;
|
|
42
46
|
};
|
|
43
|
-
sourceId: S.
|
|
44
|
-
parent: S.
|
|
45
|
-
namespace: S.
|
|
47
|
+
sourceId: S.optional<S.WithDefaults<S.Schema<string & S.NonEmptyString255Brand, string, never>> & S.Schema<string & S.NonEmptyString255Brand, string, never>>;
|
|
48
|
+
parent: S.optional<typeof RequestContextParent>;
|
|
49
|
+
namespace: S.optional<S.WithDefaults<S.Schema<string & S.NonEmptyString255Brand, string, never>> & S.Schema<string & S.NonEmptyString255Brand, string, never>>;
|
|
46
50
|
name: S.WithDefaults<S.Schema<string & S.NonEmptyString255Brand, string, never>> & S.Schema<string & S.NonEmptyString255Brand, string, never>;
|
|
47
51
|
createdAt: S.PropertySignature<":", Date, never, ":", string, true, never>;
|
|
48
|
-
userProfile: S.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
userProfile: S.optional<import("@effect/schema/Schema").Struct<{
|
|
53
|
+
sub: S.WithDefaults<S.Schema<string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, string, never> & {
|
|
54
|
+
make: () => string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand;
|
|
55
|
+
withDefault: S.PropertySignature<":", string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, never, ":", string, true, never>;
|
|
56
|
+
} & S.WithDefaults<S.Schema<string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, string, never>>> & S.Schema<string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, string, never> & {
|
|
57
|
+
make: () => string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand;
|
|
58
|
+
withDefault: S.PropertySignature<":", string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, never, ":", string, true, never>;
|
|
59
|
+
} & S.WithDefaults<S.Schema<string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, string, never>>;
|
|
60
|
+
}>>;
|
|
53
61
|
locale: S.Literal<["en", "de"]>;
|
|
54
62
|
}, RequestContext.From, never, {
|
|
55
63
|
readonly id?: string & S.NonEmptyString255Brand;
|
|
@@ -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
|
|
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,qBAAa,oBAAqB,SAAQ,yBASxC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL;;;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,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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
|
|
@@ -15,14 +15,12 @@ export interface QueueMakerOps {
|
|
|
15
15
|
export declare const QueueMaker: QueueMakerOps;
|
|
16
16
|
export declare const QueueMeta: import("@effect/schema/Schema").Struct<{
|
|
17
17
|
requestContext: typeof RequestContext;
|
|
18
|
-
span: S.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
readonly sampled: boolean;
|
|
26
|
-
} | undefined, false, never>;
|
|
18
|
+
span: S.optional<import("@effect/schema/Schema").Struct<{
|
|
19
|
+
spanId: typeof S.String;
|
|
20
|
+
traceId: typeof S.String;
|
|
21
|
+
sampled: typeof import("@effect/schema/Schema").Boolean & {
|
|
22
|
+
withDefault: S.PropertySignature<":", boolean, never, ":", boolean, true, never>;
|
|
23
|
+
};
|
|
24
|
+
}>>;
|
|
27
25
|
}>;
|
|
28
26
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAE1E,MAAM,WAAW,SAAS,CAAC,GAAG,EAAE,QAAQ;IACtC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EACpB,eAAe,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAC/D,SAAS,CAAC,EAAE,MAAM,KACf,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,uBAAuB,GAAG,mBAAmB,GAAG,MAAM,CAAC,CAAA;IACzF,OAAO,EAAE,CACP,GAAG,QAAQ,EAAE,qBAAqB,CAAC,GAAG,CAAC,KACpC,MAAM,CAAC,IAAI,CAAC,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;CAAG;AACjC,eAAO,MAAM,UAAU,EAAE,aAAkB,CAAA;AAE3C,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAE1E,MAAM,WAAW,SAAS,CAAC,GAAG,EAAE,QAAQ;IACtC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EACpB,eAAe,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAC/D,SAAS,CAAC,EAAE,MAAM,KACf,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,uBAAuB,GAAG,mBAAmB,GAAG,MAAM,CAAC,CAAA;IACzF,OAAO,EAAE,CACP,GAAG,QAAQ,EAAE,qBAAqB,CAAC,GAAG,CAAC,KACpC,MAAM,CAAC,IAAI,CAAC,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;CAAG;AACjC,eAAO,MAAM,UAAU,EAAE,aAAkB,CAAA;AAE3C,eAAO,MAAM,SAAS;;;;;;;;;EAOpB,CAAA"}
|
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,10 +18,10 @@
|
|
|
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.
|
|
22
|
-
"effect-app": "1.4.
|
|
23
|
-
"@effect-app/
|
|
24
|
-
"@effect-app/
|
|
21
|
+
"@effect-app/core": "1.2.3",
|
|
22
|
+
"effect-app": "1.4.8",
|
|
23
|
+
"@effect-app/infra-adapters": "1.2.10",
|
|
24
|
+
"@effect-app/schema": "1.2.8"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@babel/cli": "^7.24.5",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"express": "^4.19.2",
|
|
45
|
-
"@effect/platform": "^0.53.
|
|
46
|
-
"@effect/schema": "^0.67.
|
|
47
|
-
"effect": "^3.2.
|
|
45
|
+
"@effect/platform": "^0.53.14",
|
|
46
|
+
"@effect/schema": "^0.67.11",
|
|
47
|
+
"effect": "^3.2.3"
|
|
48
48
|
},
|
|
49
49
|
"typesVersions": {
|
|
50
50
|
"*": {
|
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
|
}
|