diff --git a/packages/core/src/features/telemetry/renderer/call-result/call-result.test.ts b/packages/core/src/features/telemetry/renderer/error-handling/call-result/call-result.test.ts similarity index 100% rename from packages/core/src/features/telemetry/renderer/call-result/call-result.test.ts rename to packages/core/src/features/telemetry/renderer/error-handling/call-result/call-result.test.ts diff --git a/packages/core/src/features/telemetry/renderer/call-result/call-result.ts b/packages/core/src/features/telemetry/renderer/error-handling/call-result/call-result.ts similarity index 100% rename from packages/core/src/features/telemetry/renderer/call-result/call-result.ts rename to packages/core/src/features/telemetry/renderer/error-handling/call-result/call-result.ts diff --git a/packages/core/src/features/telemetry/renderer/error-handling/with-no-thrown-errors/with-no-thrown-errors.ts b/packages/core/src/features/telemetry/renderer/error-handling/with-no-thrown-errors/with-no-thrown-errors.ts new file mode 100644 index 0000000000..66ead0f9d0 --- /dev/null +++ b/packages/core/src/features/telemetry/renderer/error-handling/with-no-thrown-errors/with-no-thrown-errors.ts @@ -0,0 +1,17 @@ +import { getFailure, getSuccess } from "../call-result/call-result"; +import { pipeline } from "@ogre-tools/fp"; + +export const withNoThrownErrors = + ( + toBeDecorated: (...args: TArgs) => TValue + ) => + (...args: TArgs) => { + try { + return pipeline( + toBeDecorated(...args), + getSuccess, + ); + } catch (error) { + return getFailure(error); + } + }; diff --git a/packages/core/src/features/telemetry/renderer/telemetry-decorator.injectable.ts b/packages/core/src/features/telemetry/renderer/telemetry-decorator.injectable.ts index 72eb24a087..0c0e4e7ca5 100644 --- a/packages/core/src/features/telemetry/renderer/telemetry-decorator.injectable.ts +++ b/packages/core/src/features/telemetry/renderer/telemetry-decorator.injectable.ts @@ -23,7 +23,7 @@ import logErrorInjectable, { } from "../../../common/log-error.injectable"; import type { AppEvent } from "../../../common/app-event-bus/event-bus"; -import { getFailure, getSuccess } from "./call-result/call-result"; +import { getFailure, getSuccess } from "./error-handling/call-result/call-result"; const telemetryDecoratorInjectable = getInjectable({ id: "telemetry-decorator",