Skip to content

Commit

Permalink
refactor: update types to use type consistently
Browse files Browse the repository at this point in the history
  • Loading branch information
mpeyper committed Jan 9, 2021
1 parent a82d5ef commit ecfd75b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
11 changes: 5 additions & 6 deletions src/core/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ function resultContainer<TValue>(): ResultContainer<TValue> {

function createRenderHook<TProps, TResult, TOptions extends {}, TRenderer extends Renderer<TProps>>(
createRenderer: CreateRenderer<TProps, TResult, TOptions, TRenderer>
) {
const renderHook = (
callback: (props: TProps) => TResult,
options: RenderHookOptions<TProps, TOptions> = {} as RenderHookOptions<TProps, TOptions>
): RenderHook<TProps, TResult, TRenderer> => {
): RenderHook<TProps, TResult, TOptions> {
const renderHook: RenderHook<TProps, TResult, TOptions> = (
callback,
options = {} as RenderHookOptions<TProps, TOptions>
) => {
const { result, setValue, setError, addResolver } = resultContainer<TResult>()
const renderProps = { callback, setValue, setError }
let hookProps = options.initialProps
Expand Down Expand Up @@ -81,7 +81,6 @@ function createRenderHook<TProps, TResult, TOptions extends {}, TRenderer extend
// This dummy usage works around that.
renderHook.name // eslint-disable-line @typescript-eslint/no-unused-expressions


return renderHook
}

Expand Down
9 changes: 8 additions & 1 deletion src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export type AsyncUtils = {
waitForValueToChange: (selector: () => unknown, options?: WaitOptions) => Promise<void>
}

export type RenderHook<
export type RenderHookResult<
TProps,
TValue,
TRenderer extends Renderer<TProps> = Renderer<TProps>
Expand All @@ -51,6 +51,13 @@ export type RenderHookOptions<TProps, TOptions extends {}> = TOptions & {
initialProps?: TProps
}

export interface RenderHook<TProps, TResult, TOptions extends object> {
(
callback: (props: TProps) => TResult,
options?: RenderHookOptions<TProps, TOptions>
): RenderHookResult<TProps, TResult>
}

export interface Act {
(callback: () => void | undefined): void
(callback: () => Promise<void | undefined>): Promise<undefined>
Expand Down
6 changes: 3 additions & 3 deletions src/types/react.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import { ComponentType } from 'react'

import { RenderHook, RenderHookOptions, Act } from '.'
import { RenderHookOptions, RenderHookResult, Act } from '.'

export type WrapperComponent<TProps> = ComponentType<TProps>

export type RendererOptions<TProps> = {
wrapper?: WrapperComponent<TProps>
}

export interface ReactHooksRenderer {
export type ReactHooksRenderer = {
renderHook: <TProps, TResult>(
callback: (props: TProps) => TResult,
options?: RenderHookOptions<TProps, RendererOptions<TProps>>
) => RenderHook<TProps, TResult>
) => RenderHookResult<TProps, TResult>
act: Act
cleanup: () => void
addCleanup: (callback: () => Promise<void> | void) => () => void
Expand Down

0 comments on commit ecfd75b

Please sign in to comment.