{"version":3,"file":"get-queries-for-instance.cjs","sources":["../../src/get-queries-for-instance.ts"],"sourcesContent":["import * as defaultQueries from \"./queries/index\";\nimport type { TestInstance } from \"./types\";\n\nexport type BoundFunction<T> = T extends (\n  container: TestInstance,\n  ...args: infer P\n) => infer R\n  ? (...args: P) => R\n  : never;\n\nexport type BoundFunctions<TQueries> = TQueries extends typeof defaultQueries\n  ? {\n      getByText: <T extends TestInstance = TestInstance>(\n        ...args: Parameters<BoundFunction<defaultQueries.GetByText<T>>>\n      ) => ReturnType<defaultQueries.GetByText<T>>;\n      queryByText: <T extends TestInstance = TestInstance>(\n        ...args: Parameters<BoundFunction<defaultQueries.QueryByText<T>>>\n      ) => ReturnType<defaultQueries.QueryByText<T>>;\n      findByText: <T extends TestInstance = TestInstance>(\n        ...args: Parameters<BoundFunction<defaultQueries.FindByText<T>>>\n      ) => ReturnType<defaultQueries.FindByText<T>>;\n    } & {\n      [P in keyof TQueries]: BoundFunction<TQueries[P]>;\n    }\n  : {\n      [P in keyof TQueries]: BoundFunction<TQueries[P]>;\n    };\n\nexport type Query = (\n  container: TestInstance,\n  ...args: Array<any>\n) =>\n  | Error\n  | TestInstance\n  | Array<TestInstance>\n  | Promise<Array<TestInstance>>\n  | Promise<TestInstance>\n  | null;\n\nexport interface Queries {\n  [T: string]: Query;\n}\n\n/**\n * @param instance\n * @param queries object of functions\n * @param initialValue for reducer\n * @returns returns object of functions bound to container\n */\nfunction getQueriesForElement<T extends Queries = typeof defaultQueries>(\n  instance: TestInstance,\n  queries: T = defaultQueries as unknown as T,\n  initialValue = {},\n): BoundFunctions<T> {\n  return Object.keys(queries).reduce((helpers, key) => {\n    const fn = queries[key];\n    helpers[key] = fn!.bind(null, instance);\n    return helpers;\n  }, initialValue as BoundFunctions<T>);\n}\n\nexport { getQueriesForElement };\n"],"names":["defaultQueries"],"mappings":";;;AAiDA,SAAS,qBACP,UACA,UAAaA,OACb,eAAe,CAAA,GACI;AACnB,SAAO,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,SAAS,QAAQ;AAC7C,UAAA,KAAK,QAAQ,GAAG;AACtB,YAAQ,GAAG,IAAI,GAAI,KAAK,MAAM,QAAQ;AAC/B,WAAA;AAAA,KACN,YAAiC;AACtC;;"}