import { BaseError } from '../error/mod.js' import { makeError, makeSuccess } from '../types/result.js' export class JsonEncodingError extends BaseError { public readonly _tag = 'JsonEncodingError' } export class JsonDecodingError extends BaseError { public readonly _tag = 'JsonDecodingError' } // biome-ignore lint/suspicious/noExplicitAny: export function encodeJson(encodable: any) { try { return makeSuccess(JSON.stringify(encodable)) } catch (cause) { return makeError( new JsonEncodingError(`failed to encode to JSON: ${cause}`), ) } } export function decodeJson(json: string) { try { return makeSuccess(JSON.parse(json) as Decoded) } catch (cause) { return makeError( new JsonEncodingError(`failed to decode to JSON: ${cause}`), ) } }