import { ControlPlaneBadRequestError, ControlPlaneStorageError, } from "../api/errors"; import * as Effect from "effect/Effect"; import { asOperationErrors, type OperationErrorsLike, } from "./operation-errors"; export type Mutable = { -readonly [K in keyof T]: T[K] }; export const mapPersistenceError = ( operation: OperationErrorsLike, effect: Effect.Effect, ): Effect.Effect => effect.pipe( Effect.mapError((error) => { const errors = asOperationErrors(operation); return errors.storage(error); }), ); export const parseJsonString = ( operation: OperationErrorsLike, fieldName: string, value: string, ): Effect.Effect => Effect.try({ try: () => { JSON.parse(value); return value; }, catch: () => { const errors = asOperationErrors(operation); return errors.badRequest( `Invalid ${fieldName}`, `${fieldName} must be valid JSON`, ); }, });