()
| 5 | import { suppressErrorOutput } from './console' |
| 6 | |
| 7 | function resultContainer<TValue>() { |
| 8 | const results: Array<{ value?: TValue; error?: Error }> = [] |
| 9 | const resolvers: Array<() => void> = [] |
| 10 | |
| 11 | const result: RenderResult<TValue> = { |
| 12 | get all() { |
| 13 | return results.map(({ value, error }) => error ?? (value as TValue)) |
| 14 | }, |
| 15 | get current() { |
| 16 | const { value, error } = results[results.length - 1] ?? {} |
| 17 | if (error) { |
| 18 | throw error |
| 19 | } |
| 20 | return value as TValue |
| 21 | }, |
| 22 | get error() { |
| 23 | const { error } = results[results.length - 1] ?? {} |
| 24 | return error |
| 25 | } |
| 26 | } |
| 27 | |
| 28 | const updateResult = (value?: TValue, error?: Error) => { |
| 29 | results.push({ value, error }) |
| 30 | resolvers.splice(0, resolvers.length).forEach((resolve) => resolve()) |
| 31 | } |
| 32 | |
| 33 | return { |
| 34 | result, |
| 35 | addResolver: (resolver: () => void) => { |
| 36 | resolvers.push(resolver) |
| 37 | }, |
| 38 | setValue: (value: TValue) => updateResult(value), |
| 39 | setError: (error: Error) => updateResult(undefined, error) |
| 40 | } |
| 41 | } |
| 42 | |
| 43 | function createRenderHook< |
| 44 | TProps, |
no test coverage detected
searching dependent graphs…