From e340ab0c8eb3454fd08c2d24d76d02eb5157c8ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 15 Jan 2025 23:40:56 +0100 Subject: [PATCH] Scope options --- packages/reffuse/src/Reffuse.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/reffuse/src/Reffuse.ts b/packages/reffuse/src/Reffuse.ts index 9c6e4fa..0600222 100644 --- a/packages/reffuse/src/Reffuse.ts +++ b/packages/reffuse/src/Reffuse.ts @@ -1,4 +1,4 @@ -import { Context, Effect, Exit, Fiber, Ref, Runtime, Scope, Stream, SubscriptionRef } from "effect" +import { Context, Effect, ExecutionStrategy, Exit, Fiber, Ref, Runtime, Scope, Stream, SubscriptionRef } from "effect" import React from "react" import * as ReffuseContext from "./ReffuseContext.js" import * as ReffuseRuntime from "./ReffuseRuntime.js" @@ -71,12 +71,12 @@ export class Reffuse { useEffect( effect: Effect.Effect, deps?: React.DependencyList, - options?: RenderOptions, + options?: RenderOptions & ScopeOptions, ): void { const runSync = this.useRunSync() return React.useEffect(() => { - const scope = Scope.make().pipe( + const scope = Scope.make(options?.finalizerExecutionStrategy).pipe( Effect.tap(scope => Effect.provideService(effect, Scope.Scope, scope)), runSync, ) @@ -158,6 +158,10 @@ export interface RenderOptions { readonly doNotReExecuteOnRuntimeOrContextChange?: boolean } +export interface ScopeOptions { + readonly finalizerExecutionStrategy?: ExecutionStrategy.ExecutionStrategy +} + export const make = < const Contexts extends readonly ReffuseContext.ReffuseContext[]