From 98f76b5ffb4b87bcdd2781b17072a8750150aa38 Mon Sep 17 00:00:00 2001 From: Sebastian Silbermann Date: Mon, 1 Jul 2019 12:27:07 +0200 Subject: [PATCH] feat: Add buildQueries types --- typings/query-helpers.d.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/typings/query-helpers.d.ts b/typings/query-helpers.d.ts index b9e86b5d..f15a174e 100644 --- a/typings/query-helpers.d.ts +++ b/typings/query-helpers.d.ts @@ -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 = ( + container: HTMLElement, + ...args: Arguments +) => Return +export type QueryBy = QueryMethod< + Arguments, + HTMLElement | null +> +export type GetAllBy = QueryMethod< + Arguments, + HTMLElement[] +> +export type FindAllBy = QueryMethod< + Arguments, + Promise +> +export type GetBy = QueryMethod +export type FindBy = QueryMethod< + Arguments, + Promise +> + +export type BuiltQueryMethods = [ + QueryBy, + GetAllBy, + GetBy, + FindAllBy, + FindBy +] +export const buildQueries: ( + queryByAll: GetAllBy, + getMultipleError: (container: HTMLElement, ...args: Arguments) => string, + getMissingError: (container: HTMLElement, ...args: Arguments) => string, +) => BuiltQueryMethods