From 1f57f7d12779c31bdabe54237f6dd7ee0ededa08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 24 Feb 2025 01:55:47 +0100 Subject: [PATCH] Tests --- packages/reffuse/src/ReffuseExtension.ts | 6 ++- packages/reffuse/src/ReffuseHelpers.ts | 56 ++++-------------------- 2 files changed, 13 insertions(+), 49 deletions(-) diff --git a/packages/reffuse/src/ReffuseExtension.ts b/packages/reffuse/src/ReffuseExtension.ts index f39a433..f3dcc5e 100644 --- a/packages/reffuse/src/ReffuseExtension.ts +++ b/packages/reffuse/src/ReffuseExtension.ts @@ -39,13 +39,15 @@ export const withContexts = >( { new(): Merge< InstanceType, - ReffuseHelpers.ReffuseHelpers + ReffuseHelpers.ReffuseHelpers & { + prototype: ReffuseHelpers.ReffuseHelpers + } > } & StaticType ) => new self().pipe( instance => class extends self { - readonly contexts = [...instance.contexts, ...contexts] as const + readonly contexts = [...instance.contexts, ...contexts] as any } as any ) diff --git a/packages/reffuse/src/ReffuseHelpers.ts b/packages/reffuse/src/ReffuseHelpers.ts index d1016bf..0ac8c55 100644 --- a/packages/reffuse/src/ReffuseHelpers.ts +++ b/packages/reffuse/src/ReffuseHelpers.ts @@ -5,58 +5,13 @@ import * as ReffuseRuntime from "./ReffuseRuntime.js" import * as SetStateAction from "./SetStateAction.js" -export interface ReffuseHelper extends Pipeable.Pipeable { - useContext(): Context.Context - - useRunSync(): (effect: Effect.Effect) => A - useRunPromise(): (effect: Effect.Effect, options?: { - readonly signal?: AbortSignal - }) => Promise - useRunFork(): (effect: Effect.Effect, options?: Runtime.RunForkOptions) => Fiber.RuntimeFiber - useRunCallback(): (effect: Effect.Effect, options?: Runtime.RunCallbackOptions) => Runtime.Cancel - - useMemo( - effect: Effect.Effect, - deps?: React.DependencyList, - options?: RenderOptions, - ): A - - useMemoScoped( - effect: Effect.Effect, - deps?: React.DependencyList, - options?: RenderOptions & ScopeOptions, - ): A - - useLayoutEffect( - effect: Effect.Effect, - deps?: React.DependencyList, - options?: RenderOptions & ScopeOptions, - ): void - - useFork( - effect: Effect.Effect, - deps?: React.DependencyList, - options?: Runtime.RunForkOptions & RenderOptions & ScopeOptions, - ): void - - usePromise( - effect: Effect.Effect, - deps?: React.DependencyList, - options?: { readonly signal?: AbortSignal } & Runtime.RunForkOptions & RenderOptions & ScopeOptions, - ): Promise - - useRef(value: A): SubscriptionRef.SubscriptionRef - useRefState(ref: SubscriptionRef.SubscriptionRef): readonly [A, React.Dispatch>] -} - - export class ReffuseHelpers { - readonly contexts: readonly ReffuseContext.ReffuseContext[] = [] + declare ["constructor"]: ReffuseHelpersClass useContext(): Context.Context { - return ReffuseContext.useMergeAll(...this.contexts) + return ReffuseContext.useMergeAll(...this.constructor.contexts) } @@ -416,6 +371,13 @@ ReffuseHelpers.prototype.pipe = function pipe() { } +export interface ReffuseHelpersClass extends Pipeable.Pipeable { + new(): ReffuseHelpers + prototype: ReffuseHelpers + readonly contexts: readonly ReffuseContext.ReffuseContext[] +} + + export interface RenderOptions { /** Prevents re-executing the effect when the Effect runtime or context changes. Defaults to `false`. */ readonly doNotReExecuteOnRuntimeOrContextChange?: boolean