From ad9217999ad9b639b95b4bd4a590550c253cbb8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sat, 9 Aug 2025 00:57:11 +0200 Subject: [PATCH] Cleanup --- packages/effect-fc/src/Memoized.ts | 16 ++++++++-------- packages/effect-fc/src/Suspense.ts | 26 ++++++++++++-------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/packages/effect-fc/src/Memoized.ts b/packages/effect-fc/src/Memoized.ts index 10d17e5..86cab06 100644 --- a/packages/effect-fc/src/Memoized.ts +++ b/packages/effect-fc/src/Memoized.ts @@ -23,24 +23,24 @@ const MemoizedProto = Object.freeze({ export const isMemoized = (u: unknown): u is Memoized => Predicate.hasProperty(u, TypeId) -export const memo = >( +export const memo = >( self: T -): T & Memoized>> => Object.setPrototypeOf( +): T & Memoized> => Object.setPrototypeOf( Object.assign(function() {}, self), Object.freeze({ ...Object.getPrototypeOf(self), ...MemoizedProto }), ) export const withOptions: { - & Memoized>( - options: Partial>>> + & Memoized>( + options: Partial>> ): (self: T) => T - & Memoized>( + & Memoized>( self: T, - options: Partial>>>, + options: Partial>>, ): T -} = Function.dual(2, & Memoized>( +} = Function.dual(2, & Memoized>( self: T, - options: Partial>>>, + options: Partial>>, ): T => Object.setPrototypeOf( Object.assign(function() {}, self, options), Object.getPrototypeOf(self), diff --git a/packages/effect-fc/src/Suspense.ts b/packages/effect-fc/src/Suspense.ts index 45212cf..e89c539 100644 --- a/packages/effect-fc/src/Suspense.ts +++ b/packages/effect-fc/src/Suspense.ts @@ -1,6 +1,6 @@ import { Effect, Function, Predicate, Runtime, Scope } from "effect" import * as React from "react" -import type * as Component from "./Component.js" +import * as Component from "./Component.js" export const TypeId: unique symbol = Symbol.for("effect-fc/Suspense") @@ -22,8 +22,8 @@ export namespace Suspense { const SuspenseProto = Object.freeze({ [TypeId]: TypeId, - makeFunctionComponent( - this: Component.Component & Suspense, + makeFunctionComponent( + this: Component.Component & Suspense, runtimeRef: React.RefObject>>, scope: Scope.Scope, ) { @@ -31,7 +31,7 @@ const SuspenseProto = Object.freeze({ return ({ fallback, name, ...props }: Suspense.Props) => { const promise = Runtime.runPromise(runtimeRef.current)( - Effect.provideService(this.body(props as Component.FunctionComponent.Props), Scope.Scope, scope) + Effect.provideService(this.body(props as P), Scope.Scope, scope) ) return React.createElement( @@ -46,18 +46,16 @@ const SuspenseProto = Object.freeze({ export const isSuspense = (u: unknown): u is Suspense => Predicate.hasProperty(u, TypeId) -export const suspense = >( +export const suspense = >( self: T ): ( & Omit> & Component.Component< - Component.Component.FunctionComponent extends (...args: readonly [infer P, ...infer Args]) => infer A - ? A extends React.ReactNode - ? (...args: readonly [props: P & Suspense.Props, ...Args]) => A - : never - : never, + Component.Component.Props & Suspense.Props, + Component.Component.Success, Component.Component.Error, - Component.Component.Context> + Component.Component.Context + > & Suspense ) => Object.setPrototypeOf( Object.assign(function() {}, self), @@ -65,14 +63,14 @@ export const suspense = >( ) export const withOptions: { - & Suspense>( + & Suspense>( options: Partial ): (self: T) => T - & Suspense>( + & Suspense>( self: T, options: Partial, ): T -} = Function.dual(2, & Suspense>( +} = Function.dual(2, & Suspense>( self: T, options: Partial, ): T => Object.setPrototypeOf(