export const ErrorTrackerSentry = Layer.succeed(
ErrorTracker,
ErrorTracker.of({
captureException: (error: Cause.YieldableError) =>
Effect.gen(function* () {
const DEFAULT_ERROR_MESSAGE = "ErrorTrackerSentry.captureException";
yield* Effect.logError(error.message ?? DEFAULT_ERROR_MESSAGE, {
error: error.toJSON(),
});
yield* Effect.try({
try: () => {
const scope = Sentry.getCurrentScope();
Sentry.captureException(error, scope);
},
catch: (unknown) =>
new ErrorTrackerError({
message: "Sentry exception capture failed",
cause: errorEnsure(unknown),
}),
});
}),
}),
);
export const ErrorTrackerSentry = Layer.succeed(
ErrorTracker,
ErrorTracker.of({
captureException: (error: Cause.YieldableError) =>
Effect.gen(function* () {
const DEFAULT_ERROR_MESSAGE = "ErrorTrackerSentry.captureException";
yield* Effect.logError(error.message ?? DEFAULT_ERROR_MESSAGE, {
error: error.toJSON(),
});
yield* Effect.try({
try: () => {
const scope = Sentry.getCurrentScope();
Sentry.captureException(error, scope);
},
catch: (unknown) =>
new ErrorTrackerError({
message: "Sentry exception capture failed",
cause: errorEnsure(unknown),
}),
});
}),
}),
);