@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 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?: {
@@ -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;iBAC0H,GAAG;eAAkF,GAAG;eAAkF,GAAG;cAAiF,GAAG;eAAkF,GAAG;CADza,CAAA"}
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"}
@@ -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>) => Effect.Effect<CauseException<unknown> | undefined, never, never>;
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;AAG1C,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,sEAoCnC;AAgBD,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"}
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"}
@@ -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
- .logError("Reporting error", cause)
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JSZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvclJlcG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXpDLE1BQU0saUJBQWlCLEdBQUcsQ0FBSSxLQUFlLEVBQUUsSUFBWSxFQUFxQixFQUFFO0lBQ2hGLElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzFGLENBQUM7QUFDSCxDQUFDLENBQUE7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUN6QixJQUFZO0lBRVosT0FBTyxDQUNMLEtBQXFCLEVBQ3JCLE1BQWdDLEVBQ2hDLEVBQUUsQ0FDRixNQUFNO1NBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNaLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFB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
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
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;iBAC0H,GAAG;eAAkF,GAAG;eAAkF,GAAG;cAAiF,GAAG;eAAkF,GAAG;CADza,CAAA"}
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.41.0",
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.28.0"
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.0",
36
+ "mongodb": "6.13.1",
37
37
  "redis": "^3.1.2",
38
38
  "redlock": "^4.2.0",
39
39
  "strip-ansi": "^7.1.0",
@@ -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
- .logError("Reporting error", cause)
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)