Skip to content

Commit

Permalink
feat: Add buildQueries types (#301)
Browse files Browse the repository at this point in the history
  • Loading branch information
eps1lon authored and Kent C. Dodds committed Jul 1, 2019
1 parent b1644c2 commit aa60afe
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions typings/query-helpers.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,41 @@ export const queryByAttribute: QueryByAttribute
export const queryAllByAttribute: AllByAttribute
export const debugDOM: (htmlElement: HTMLElement) => string
export const getElementError: (message: string, container: HTMLElement) => Error

/**
* query methods have a common call signature. Only the return type differs.
*/
type QueryMethod<Arguments extends any[], Return> = (
container: HTMLElement,
...args: Arguments
) => Return
export type QueryBy<Arguments extends any[]> = QueryMethod<
Arguments,
HTMLElement | null
>
export type GetAllBy<Arguments extends any[]> = QueryMethod<
Arguments,
HTMLElement[]
>
export type FindAllBy<Arguments extends any[]> = QueryMethod<
Arguments,
Promise<HTMLElement[]>
>
export type GetBy<Arguments extends any[]> = QueryMethod<Arguments, HTMLElement>
export type FindBy<Arguments extends any[]> = QueryMethod<
Arguments,
Promise<HTMLElement>
>

export type BuiltQueryMethods<Arguments extends any[]> = [
QueryBy<Arguments>,
GetAllBy<Arguments>,
GetBy<Arguments>,
FindAllBy<Arguments>,
FindBy<Arguments>
]
export const buildQueries: <Arguments extends any[]>(
queryByAll: GetAllBy<Arguments>,
getMultipleError: (container: HTMLElement, ...args: Arguments) => string,
getMissingError: (container: HTMLElement, ...args: Arguments) => string,
) => BuiltQueryMethods<Arguments>

0 comments on commit aa60afe

Please sign in to comment.