@effect-app/infra 2.41.0 → 2.42.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/CHANGELOG.md +11 -0
- package/dist/Emailer/Sendgrid.d.ts +4 -4
- package/dist/RequestContext.d.ts +1 -1
- package/dist/adapters/logger.d.ts +1 -0
- package/dist/adapters/logger.d.ts.map +1 -1
- package/dist/errorReporter.d.ts +2 -2
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +8 -7
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/errorReporter.ts +9 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @effect-app/infra
|
|
2
2
|
|
|
3
|
+
## 2.42.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7a4d393: report errors anyway to Sentry but with lower severity. add log namespace annotations.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [7a4d393]
|
|
12
|
+
- effect-app@2.29.0
|
|
13
|
+
|
|
3
14
|
## 2.41.0
|
|
4
15
|
|
|
5
16
|
### Minor Changes
|
|
@@ -11,6 +11,7 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
|
|
|
11
11
|
to: EmailData | EmailData[];
|
|
12
12
|
cc: EmailData | EmailData[];
|
|
13
13
|
bcc: EmailData | EmailData[];
|
|
14
|
+
attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
|
|
14
15
|
replyTo?: EmailData;
|
|
15
16
|
sendAt?: number;
|
|
16
17
|
subject?: string;
|
|
@@ -18,7 +19,6 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
|
|
|
18
19
|
html?: string;
|
|
19
20
|
templateId?: string;
|
|
20
21
|
personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
|
|
21
|
-
attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
|
|
22
22
|
ipPoolName?: string;
|
|
23
23
|
batchId?: string;
|
|
24
24
|
sections?: {
|
|
@@ -50,6 +50,7 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
|
|
|
50
50
|
to: EmailData | EmailData[];
|
|
51
51
|
cc: EmailData | EmailData[];
|
|
52
52
|
bcc: EmailData | EmailData[];
|
|
53
|
+
attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
|
|
53
54
|
replyTo?: EmailData;
|
|
54
55
|
sendAt?: number;
|
|
55
56
|
subject?: string;
|
|
@@ -57,7 +58,6 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
|
|
|
57
58
|
html: string;
|
|
58
59
|
templateId?: string;
|
|
59
60
|
personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
|
|
60
|
-
attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
|
|
61
61
|
ipPoolName?: string;
|
|
62
62
|
batchId?: string;
|
|
63
63
|
sections?: {
|
|
@@ -89,6 +89,7 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
|
|
|
89
89
|
to: EmailData | EmailData[];
|
|
90
90
|
cc: EmailData | EmailData[];
|
|
91
91
|
bcc: EmailData | EmailData[];
|
|
92
|
+
attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
|
|
92
93
|
replyTo?: EmailData;
|
|
93
94
|
sendAt?: number;
|
|
94
95
|
subject?: string;
|
|
@@ -96,7 +97,6 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
|
|
|
96
97
|
html?: string;
|
|
97
98
|
templateId: string;
|
|
98
99
|
personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
|
|
99
|
-
attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
|
|
100
100
|
ipPoolName?: string;
|
|
101
101
|
batchId?: string;
|
|
102
102
|
sections?: {
|
|
@@ -128,6 +128,7 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
|
|
|
128
128
|
to: EmailData | EmailData[];
|
|
129
129
|
cc: EmailData | EmailData[];
|
|
130
130
|
bcc: EmailData | EmailData[];
|
|
131
|
+
attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
|
|
131
132
|
replyTo?: EmailData;
|
|
132
133
|
sendAt?: number;
|
|
133
134
|
subject?: string;
|
|
@@ -135,7 +136,6 @@ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
|
|
|
135
136
|
html?: string;
|
|
136
137
|
templateId?: string;
|
|
137
138
|
personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
|
|
138
|
-
attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
|
|
139
139
|
ipPoolName?: string;
|
|
140
140
|
batchId?: string;
|
|
141
141
|
sections?: {
|
package/dist/RequestContext.d.ts
CHANGED
|
@@ -25,9 +25,9 @@ declare const RequestContext_base: S.EnhancedClass<RequestContext, {
|
|
|
25
25
|
} & S.WithDefaults<S.Schema<string & S.StringIdBrand & import("effect-app/ids").UserProfileIdBrand, string, never>>;
|
|
26
26
|
}>>;
|
|
27
27
|
}, RequestContext.Encoded, never, {
|
|
28
|
-
readonly name: string & S.NonEmptyString255Brand;
|
|
29
28
|
readonly locale: "en" | "de";
|
|
30
29
|
readonly namespace: string & S.NonEmptyString255Brand;
|
|
30
|
+
readonly name: string & S.NonEmptyString255Brand;
|
|
31
31
|
readonly span: {
|
|
32
32
|
readonly traceId: string;
|
|
33
33
|
readonly spanId: string;
|
|
@@ -4,5 +4,6 @@ export declare const InfraLogger: {
|
|
|
4
4
|
logFatal: (...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
|
|
5
5
|
logInfo: (...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
|
|
6
6
|
logDebug: (...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
|
|
7
|
+
logWithLevel: (level: import("effect/LogLevel").LogLevel, ...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
|
|
7
8
|
};
|
|
8
9
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/adapters/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/adapters/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;iBACkK,GAAG;eAAkF,GAAG;eAAkF,GAAG;cAAiF,GAAG;eAAkF,GAAG;8DAA+G,GAAI;CADpkB,CAAA"}
|
package/dist/errorReporter.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Cause, Effect } from "effect-app";
|
|
1
|
+
import { Cause, Effect, LogLevel } from "effect-app";
|
|
2
2
|
import { CauseException } from "./errors.js";
|
|
3
|
-
export declare function reportError(name: string): (cause: Cause<unknown>, extras?: Record<string, unknown
|
|
3
|
+
export declare function reportError(name: string): (cause: Cause<unknown>, extras?: Record<string, unknown>, level?: LogLevel.LogLevel) => Effect.Effect<CauseException<unknown> | undefined, never, never>;
|
|
4
4
|
export declare function logError<E>(name: string): (cause: Cause<E>, extras?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
5
5
|
export declare function reportMessage(message: string, extras?: Record<string, unknown>): Effect.Effect<void, never, never>;
|
|
6
6
|
//# sourceMappingURL=errorReporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorReporter.d.ts","sourceRoot":"","sources":["../src/errorReporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"errorReporter.d.ts","sourceRoot":"","sources":["../src/errorReporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGpD,OAAO,EAAE,cAAc,EAAyC,MAAM,aAAa,CAAA;AAWnF,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,WAGH,KAAK,CAAC,OAAO,CAAC,WACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UACzB,QAAQ,CAAC,QAAQ,sEAoC3B;AAkBD,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,MAAM,WAEG,KAAK,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,uCAoB1D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,qCAU9E"}
|
package/dist/errorReporter.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Sentry from "@sentry/node";
|
|
2
|
-
import { Cause, Effect } from "effect-app";
|
|
3
|
-
import { dropUndefined } from "effect-app/utils";
|
|
2
|
+
import { Cause, Effect, LogLevel } from "effect-app";
|
|
3
|
+
import { dropUndefined, LogLevelToSentry } from "effect-app/utils";
|
|
4
4
|
import { getRC } from "./api/setupRequest.js";
|
|
5
5
|
import { CauseException, ErrorReported, tryToJson, tryToReport } from "./errors.js";
|
|
6
6
|
import { InfraLogger } from "./logger.js";
|
|
@@ -13,16 +13,16 @@ const tryCauseException = (cause, name) => {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
export function reportError(name) {
|
|
16
|
-
return (cause, extras) => Effect
|
|
16
|
+
return (cause, extras, level = LogLevel.Error) => Effect
|
|
17
17
|
.gen(function* () {
|
|
18
18
|
if (Cause.isInterruptedOnly(cause)) {
|
|
19
19
|
yield* InfraLogger.logDebug("Interrupted").pipe(Effect.annotateLogs("extras", JSON.stringify(extras ?? {})));
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
const error = tryCauseException(cause, name);
|
|
23
|
-
yield* reportSentry(error, extras);
|
|
23
|
+
yield* reportSentry(error, extras, LogLevelToSentry(level));
|
|
24
24
|
yield* InfraLogger
|
|
25
|
-
.
|
|
25
|
+
.logWithLevel(level, "Reporting error", cause)
|
|
26
26
|
.pipe(Effect.annotateLogs(dropUndefined({
|
|
27
27
|
extras,
|
|
28
28
|
error: tryToReport(error),
|
|
@@ -35,9 +35,10 @@ export function reportError(name) {
|
|
|
35
35
|
})
|
|
36
36
|
.pipe(Effect.tapErrorCause((cause) => InfraLogger.logError("Failed to report error", cause).pipe(Effect.tapErrorCause(() => InfraLogger.logFatal("Failed to log error cause")))));
|
|
37
37
|
}
|
|
38
|
-
function reportSentry(error, extras) {
|
|
38
|
+
function reportSentry(error, extras, level = "error") {
|
|
39
39
|
return getRC.pipe(Effect.map((context) => {
|
|
40
40
|
const scope = new Sentry.Scope();
|
|
41
|
+
scope.setLevel(level);
|
|
41
42
|
if (context)
|
|
42
43
|
scope.setContext("context", context);
|
|
43
44
|
if (extras)
|
|
@@ -76,4 +77,4 @@ export function reportMessage(message, extras) {
|
|
|
76
77
|
console.warn(message, extras);
|
|
77
78
|
});
|
|
78
79
|
}
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JSZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvclJlcG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6QyxNQUFNLGlCQUFpQixHQUFHLENBQUksS0FBZSxFQUFFLElBQVksRUFBcUIsRUFBRTtJQUNoRixJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxRixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FDekIsSUFBWTtJQUVaLE9BQU8sQ0FDTCxLQUFxQixFQUNyQixNQUFnQyxFQUNoQyxRQUEyQixRQUFRLENBQUMsS0FBSyxFQUN6QyxFQUFFLENBQ0YsTUFBTTtTQUNILEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDWixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLEtBQUssQ0FBQyxDQUFD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
|
package/dist/logger.d.ts
CHANGED
|
@@ -4,5 +4,6 @@ export declare const InfraLogger: {
|
|
|
4
4
|
logFatal: (...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
|
|
5
5
|
logInfo: (...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
|
|
6
6
|
logDebug: (...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
|
|
7
|
+
logWithLevel: (level: import("effect/LogLevel").LogLevel, ...message: ReadonlyArray<any>) => import("effect/Effect").Effect<void, never, never>;
|
|
7
8
|
};
|
|
8
9
|
//# sourceMappingURL=logger.d.ts.map
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;iBACkK,GAAG;eAAkF,GAAG;eAAkF,GAAG;cAAiF,GAAG;eAAkF,GAAG;8DAA+G,GAAI;CADpkB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.42.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"proper-lockfile": "^4.1.2",
|
|
14
14
|
"pure-rand": "7.0.1",
|
|
15
15
|
"query-string": "^9.1.1",
|
|
16
|
-
"effect-app": "2.
|
|
16
|
+
"effect-app": "2.29.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@azure/cosmos": "^4.2.0",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"express": "^4.21.2",
|
|
34
34
|
"jwks-rsa": "2.1.4",
|
|
35
35
|
"jwt-decode": "^4.0.0",
|
|
36
|
-
"mongodb": "6.13.
|
|
36
|
+
"mongodb": "6.13.1",
|
|
37
37
|
"redis": "^3.1.2",
|
|
38
38
|
"redlock": "^4.2.0",
|
|
39
39
|
"strip-ansi": "^7.1.0",
|
package/src/errorReporter.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Sentry from "@sentry/node"
|
|
2
|
-
import { Cause, Effect } from "effect-app"
|
|
3
|
-
import { dropUndefined } from "effect-app/utils"
|
|
2
|
+
import { Cause, Effect, LogLevel } from "effect-app"
|
|
3
|
+
import { dropUndefined, LogLevelToSentry } from "effect-app/utils"
|
|
4
4
|
import { getRC } from "./api/setupRequest.js"
|
|
5
5
|
import { CauseException, ErrorReported, tryToJson, tryToReport } from "./errors.js"
|
|
6
6
|
import { InfraLogger } from "./logger.js"
|
|
@@ -18,7 +18,8 @@ export function reportError(
|
|
|
18
18
|
) {
|
|
19
19
|
return (
|
|
20
20
|
cause: Cause<unknown>,
|
|
21
|
-
extras?: Record<string, unknown
|
|
21
|
+
extras?: Record<string, unknown>,
|
|
22
|
+
level: LogLevel.LogLevel = LogLevel.Error
|
|
22
23
|
) =>
|
|
23
24
|
Effect
|
|
24
25
|
.gen(function*() {
|
|
@@ -28,9 +29,9 @@ export function reportError(
|
|
|
28
29
|
}
|
|
29
30
|
const error = tryCauseException(cause, name)
|
|
30
31
|
|
|
31
|
-
yield* reportSentry(error, extras)
|
|
32
|
+
yield* reportSentry(error, extras, LogLevelToSentry(level))
|
|
32
33
|
yield* InfraLogger
|
|
33
|
-
.
|
|
34
|
+
.logWithLevel(level, "Reporting error", cause)
|
|
34
35
|
.pipe(
|
|
35
36
|
Effect.annotateLogs(dropUndefined({
|
|
36
37
|
extras,
|
|
@@ -58,10 +59,12 @@ export function reportError(
|
|
|
58
59
|
|
|
59
60
|
function reportSentry(
|
|
60
61
|
error: CauseException<unknown>,
|
|
61
|
-
extras: Record<string, unknown> | undefined
|
|
62
|
+
extras: Record<string, unknown> | undefined,
|
|
63
|
+
level: Sentry.SeverityLevel = "error"
|
|
62
64
|
) {
|
|
63
65
|
return getRC.pipe(Effect.map((context) => {
|
|
64
66
|
const scope = new Sentry.Scope()
|
|
67
|
+
scope.setLevel(level)
|
|
65
68
|
if (context) scope.setContext("context", context as unknown as Record<string, unknown>)
|
|
66
69
|
if (extras) scope.setContext("extras", extras)
|
|
67
70
|
scope.setContext("error", tryToReport(error) as any)
|