0.1.0 #1
@@ -1,2 +1,3 @@
|
|||||||
export * as Reffuse from "./Reffuse.js"
|
export * as Reffuse from "./Reffuse.js"
|
||||||
export * as ReffuseReactContext from "./ReffuseReactContext.js"
|
export * as ReffuseContext from "./ReffuseContext.js"
|
||||||
|
export * as ReffuseRuntime from "./ReffuseRuntime.js"
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
import { Context, Effect, FiberRefs, Layer, Ref, Runtime, RuntimeFlags } from "effect"
|
|
||||||
|
|
||||||
|
|
||||||
const runtime = Runtime.make({
|
|
||||||
context: Context.empty(),
|
|
||||||
runtimeFlags: RuntimeFlags.make(),
|
|
||||||
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", {
|
|
||||||
effect: Effect.gen(function*() {
|
|
||||||
return {
|
|
||||||
ref: yield* Ref.make("initial value")
|
|
||||||
} as const
|
|
||||||
})
|
|
||||||
}) {}
|
|
||||||
|
|
||||||
const MyLayer = Layer.empty.pipe(
|
|
||||||
Layer.provideMerge(MyService.Default)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
const runSync = createRunSync(runtime, MyLayer)
|
|
||||||
|
|
||||||
const setMyServiceValue = (value: string) => Effect.gen(function*() {
|
|
||||||
console.log("previous value: ", yield* (yield* MyService).ref)
|
|
||||||
yield* Ref.set((yield* MyService).ref, value)
|
|
||||||
console.log("new value: ", yield* (yield* MyService).ref)
|
|
||||||
})
|
|
||||||
|
|
||||||
runSync(setMyServiceValue("1"))
|
|
||||||
runSync(setMyServiceValue("2"))
|
|
||||||
Reference in New Issue
Block a user