@withstudiocms/effect
Version:
Effect-TS Utilities for Astro
35 lines (34 loc) • 909 B
JavaScript
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
};