UNPKG

@withstudiocms/effect

Version:

Effect-TS Utilities for Astro

35 lines (34 loc) 909 B
import { deepmergeCustom as _deepmergeCustomSrc } from "deepmerge-ts"; import { Effect } from "./effect.js"; const deepmergeCustom = Effect.fn( (fn) => Effect.try({ try: () => fn(_deepmergeCustomSrc), /* v8 ignore next 4 */ catch: (cause) => new Error( `Failed to run deepmerge callback: ${cause instanceof Error ? cause.message : String(cause)}` ) }) ); const deepmerge = Effect.fn(function* (fn, opts = {}) { const _deepmerge = yield* deepmergeCustom((merge) => merge(opts)); return yield* Effect.try({ try: () => fn(_deepmerge), catch: (cause) => new Error( `Failed to run deepmerge: ${cause instanceof Error ? cause.message : String(cause)}` ) }); }); class Deepmerge extends Effect.Service()("Deepmerge", { effect: Effect.succeed({ custom: deepmergeCustom, merge: deepmerge }) }) { } export { Deepmerge, deepmerge, deepmergeCustom };