Add ErrorObserver handle
All checks were successful
Lint / lint (push) Successful in 41s

This commit is contained in:
Julien Valverdé
2025-11-07 01:13:50 +01:00
parent c80b25b0e0
commit 6d52c4ee31
2 changed files with 9 additions and 6 deletions

View File

@@ -2,6 +2,7 @@
import { Effect, Function, Predicate, Runtime, Scope } from "effect"
import * as React from "react"
import * as Component from "./Component.js"
import * as ErrorObserver from "./ErrorObserver.js"
export const TypeId: unique symbol = Symbol.for("@effect-fc/Async/Async")
@@ -31,10 +32,10 @@ const SuspenseProto = Object.freeze({
return ({ fallback, name, ...props }: Async.Props) => {
const promise = Runtime.runPromise(runtimeRef.current)(
Effect.andThen(
ErrorObserver.handle(Effect.andThen(
Component.useScope([], this),
scope => Effect.provideService(this.body(props as P), Scope.Scope, scope),
)
))
)
return React.createElement(

View File

@@ -2,6 +2,7 @@
/** biome-ignore-all lint/complexity/useArrowFunction: necessary for class prototypes */
import { Context, type Duration, Effect, Effectable, Equivalence, ExecutionStrategy, Exit, Fiber, Function, HashMap, Layer, ManagedRuntime, Option, Predicate, Ref, Runtime, Scope, Tracer, type Utils } from "effect"
import * as React from "react"
import * as ErrorObserver from "./ErrorObserver.js"
import { Memoized } from "./index.js"
@@ -75,10 +76,10 @@ const ComponentProto = Object.freeze({
runtimeRef: React.RefObject<Runtime.Runtime<Exclude<R, Scope.Scope>>>,
) {
return (props: P) => Runtime.runSync(runtimeRef.current)(
Effect.andThen(
ErrorObserver.handle(Effect.andThen(
useScope([], this),
scope => Effect.provideService(this.body(props), Scope.Scope, scope),
)
))
)
},
} as const)
@@ -547,14 +548,15 @@ const runReactEffect = <E, R>(
() => {
switch (options?.finalizerExecutionMode ?? "fork") {
case "sync":
Runtime.runSync(runtime)(Scope.close(scope, Exit.void))
Runtime.runSync(runtime)(ErrorObserver.handle(Scope.close(scope, Exit.void)))
break
case "fork":
Runtime.runFork(runtime)(Scope.close(scope, Exit.void))
Runtime.runFork(runtime)(ErrorObserver.handle(Scope.close(scope, Exit.void)))
break
}
}
),
ErrorObserver.handle,
Runtime.runSync(runtime),
)