|
1 |
| -import { CreateRenderer, Renderer, RenderResult, RenderHook, RenderHookOptions } from '../types' |
2 |
| -import { ResultContainer } from '../types/internal' |
| 1 | +import { CreateRenderer, Renderer, RenderResult, RenderHookOptions } from '../types' |
3 | 2 |
|
4 | 3 | import { asyncUtils } from './asyncUtils'
|
5 | 4 | import { cleanup, addCleanup, removeCleanup } from './cleanup'
|
6 | 5 |
|
7 |
| -function resultContainer<TValue>(): ResultContainer<TValue> { |
| 6 | +function resultContainer<TValue>() { |
8 | 7 | const results: Array<{ value?: TValue; error?: Error }> = []
|
9 | 8 | const resolvers: Array<() => void> = []
|
10 | 9 |
|
11 | 10 | const result: RenderResult<TValue> = {
|
12 | 11 | get all() {
|
13 |
| - return results.map(({ value, error }) => error ?? value) |
| 12 | + return results.map(({ value, error }) => error ?? (value as TValue)) |
14 | 13 | },
|
15 | 14 | get current() {
|
16 |
| - const { value, error } = results[results.length - 1] |
| 15 | + const { value, error } = results[results.length - 1] ?? {} |
17 | 16 | if (error) {
|
18 | 17 | throw error
|
19 | 18 | }
|
@@ -43,12 +42,12 @@ function resultContainer<TValue>(): ResultContainer<TValue> {
|
43 | 42 | function createRenderHook<
|
44 | 43 | TProps,
|
45 | 44 | TResult,
|
46 |
| - TOptions extends object, |
| 45 | + TRendererOptions extends object, |
47 | 46 | TRenderer extends Renderer<TProps>
|
48 |
| ->(createRenderer: CreateRenderer<TProps, TResult, TOptions, TRenderer>) { |
49 |
| - const renderHook: RenderHook<TProps, TResult, TOptions, TRenderer> = ( |
50 |
| - callback, |
51 |
| - options = {} as RenderHookOptions<TProps, TOptions> |
| 47 | +>(createRenderer: CreateRenderer<TProps, TResult, TRendererOptions, TRenderer>) { |
| 48 | + const renderHook = ( |
| 49 | + callback: (props: TProps) => TResult, |
| 50 | + options = {} as RenderHookOptions<TProps> & TRendererOptions |
52 | 51 | ) => {
|
53 | 52 | const { result, setValue, setError, addResolver } = resultContainer<TResult>()
|
54 | 53 | const renderProps = { callback, setValue, setError }
|
@@ -79,11 +78,6 @@ function createRenderHook<
|
79 | 78 | }
|
80 | 79 | }
|
81 | 80 |
|
82 |
| - // If the function name does not get used before it is returned, |
83 |
| - // it's name is removed by babel-plugin-minify-dead-code-elimination. |
84 |
| - // This dummy usage works around that. |
85 |
| - renderHook.name // eslint-disable-line @typescript-eslint/no-unused-expressions |
86 |
| - |
87 | 81 | return renderHook
|
88 | 82 | }
|
89 | 83 |
|
|
0 commit comments