0.1.3 #5

Merged
Thilawyn merged 104 commits from next into master 2025-03-11 01:44:38 +01:00
3 changed files with 15 additions and 7 deletions
Showing only changes of commit 40e8bf6a1f - Show all commits

View File

@@ -26,11 +26,11 @@ declare module "@tanstack/react-router" {
createRoot(document.getElementById("root")!).render( createRoot(document.getElementById("root")!).render(
<StrictMode> // <StrictMode>
<ReffuseRuntime.Provider> <ReffuseRuntime.Provider>
<GlobalContext.Provider layer={layer}> <GlobalContext.Provider layer={layer}>
<RouterProvider router={router} /> <RouterProvider router={router} />
</GlobalContext.Provider> </GlobalContext.Provider>
</ReffuseRuntime.Provider> </ReffuseRuntime.Provider>
</StrictMode> // </StrictMode>
) )

View File

@@ -1,5 +1,5 @@
import * as AsyncData from "@typed/async-data" import * as AsyncData from "@typed/async-data"
import { Effect, Fiber, flow, identity, Option, Ref, SubscriptionRef } from "effect" import { Effect, Fiber, identity, Option, Ref, SubscriptionRef } from "effect"
export interface QueryRunner<A, E, R> { export interface QueryRunner<A, E, R> {
@@ -24,9 +24,17 @@ export const make = <A, E, R>(
const interrupt = fiberRef.pipe( const interrupt = fiberRef.pipe(
Effect.flatMap(Option.match({ Effect.flatMap(Option.match({
onSome: flow( onSome: fiber => Ref.set(fiberRef, Option.none()).pipe(
Fiber.interrupt, Effect.andThen(Fiber.interrupt(fiber))
Effect.andThen(Ref.set(fiberRef, Option.none())), ),
onNone: () => Effect.void,
}))
)
const forkInterrupt = fiberRef.pipe(
Effect.flatMap(Option.match({
onSome: fiber => Ref.set(fiberRef, Option.none()).pipe(
Effect.andThen(Fiber.interruptFork(fiber))
), ),
onNone: () => Effect.void, onNone: () => Effect.void,
})) }))

View File

@@ -25,7 +25,7 @@ export const QueryExtension = ReffuseExtension.make(() => ({
this.useFork(() => Stream.runForEach(runner.fiberRef.changes, Console.log), []) this.useFork(() => Stream.runForEach(runner.fiberRef.changes, Console.log), [])
this.useFork(() => Effect.addFinalizer(() => runner.interrupt).pipe( this.useEffect(() => Effect.addFinalizer(() => Effect.void).pipe(
Effect.andThen(Ref.set(runner.queryRef, props.effect())), Effect.andThen(Ref.set(runner.queryRef, props.effect())),
Effect.andThen(runner.forkFetch), Effect.andThen(runner.forkFetch),
), [runner, ...props.deps]) ), [runner, ...props.deps])