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 cd2df017ec - Show all commits

View File

@@ -7,6 +7,16 @@ const runtime = Runtime.make({
fiberRefs: FiberRefs.empty(), fiberRefs: FiberRefs.empty(),
}) })
const createRunSync = <R1, R2>(runtime: Runtime.Runtime<R1>, layer: Layer.Layer<R2>) => {
const context = Effect.context<R1 | R2>().pipe(
Effect.provide(layer),
Runtime.runSync(runtime),
)
return <A, E>(effect: Effect.Effect<A, E, R1 | R2>) =>
Runtime.runSync(runtime)(effect.pipe(Effect.provide(context)))
}
class MyService extends Effect.Service<MyService>()("MyServer", { class MyService extends Effect.Service<MyService>()("MyServer", {
effect: Effect.gen(function*() { effect: Effect.gen(function*() {
@@ -20,12 +30,14 @@ const MyLayer = Layer.empty.pipe(
Layer.provideMerge(MyService.Default) Layer.provideMerge(MyService.Default)
) )
const runSync = createRunSync(runtime, MyLayer)
const setMyServiceValue = (value: string) => Effect.gen(function*() { const setMyServiceValue = (value: string) => Effect.gen(function*() {
console.log("previous value: ", yield* (yield* MyService).ref) console.log("previous value: ", yield* (yield* MyService).ref)
yield* Ref.set((yield* MyService).ref, value) yield* Ref.set((yield* MyService).ref, value)
console.log("new value: ", yield* (yield* MyService).ref) console.log("new value: ", yield* (yield* MyService).ref)
}) })
runSync(setMyServiceValue("1"))
Runtime.runSync(runtime)(setMyServiceValue("1").pipe(Effect.provide(MyLayer))) runSync(setMyServiceValue("2"))
Runtime.runSync(runtime)(setMyServiceValue("2").pipe(Effect.provide(MyLayer)))