0.1.0 #1

Merged
Thilawyn merged 87 commits from next into master 2025-01-18 00:54:42 +01:00
Showing only changes of commit e142010128 - Show all commits

View File

@@ -1,4 +1,4 @@
import { Context, Effect, Layer, Runtime } from "effect" import { Array, Context, Effect, Layer, Runtime } from "effect"
import React from "react" import React from "react"
import * as ReffuseRuntime from "./ReffuseRuntime.js" import * as ReffuseRuntime from "./ReffuseRuntime.js"
@@ -60,8 +60,14 @@ export function useMergeAll<
return React.useMemo(() => Context.mergeAll(...values), values) return React.useMemo(() => Context.mergeAll(...values), values)
} }
export function useMergeAllLayers<
const Contexts extends Array.NonEmptyReadonlyArray<ReffuseContext<any>>
>(
...contexts: Contexts
): Layer.Layer<{ [K in keyof Contexts]: R<Contexts[K]> }[number]> {
const values = Array.map(contexts, v => React.use(v.Context))
const context1 = make<{ readonly service1: true }>() return React.useMemo(() => Layer.mergeAll(
const context2 = make<{ readonly service2: true }>() ...Array.map(values, context => Layer.effectContext(Effect.succeed(context)))
) as Layer.Layer<any>, values)
const res = useMergeAll(context1, context2) }