0.1.0 #1
@@ -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)))
|
|
||||||
|
|||||||
Reference in New Issue
Block a user