react-query-firebase 2.1.4 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/package.json +1 -1
  2. package/react-native/auth/index.d.ts +1 -0
  3. package/react-native/auth/index.js +1 -0
  4. package/react-native/auth/index.ts +1 -0
  5. package/react-native/auth/useAuthStateReady.d.ts +17 -0
  6. package/react-native/auth/useAuthStateReady.js +33 -0
  7. package/react-native/auth/useAuthStateReady.ts +38 -0
  8. package/react-native/firestore/useCompositeFilter.d.ts +62 -20
  9. package/react-native/firestore/useCompositeFilter.js +51 -11
  10. package/react-native/firestore/useCompositeFilter.ts +70 -25
  11. package/react-native/firestore/useCountQuery.d.ts +35 -9
  12. package/react-native/firestore/useCountQuery.js +15 -6
  13. package/react-native/firestore/useCountQuery.ts +38 -14
  14. package/react-native/firestore/useInfiniteQuery.d.ts +39 -7
  15. package/react-native/firestore/useInfiniteQuery.js +19 -4
  16. package/react-native/firestore/useInfiniteQuery.ts +47 -8
  17. package/react-native/firestore/useQuery.d.ts +37 -12
  18. package/react-native/firestore/useQuery.js +17 -9
  19. package/react-native/firestore/useQuery.ts +40 -14
  20. package/types/index.d.ts +2 -0
  21. package/types/index.js +2 -0
  22. package/web/auth/useAuthStateReady.d.ts +12 -1
  23. package/web/auth/useAuthStateReady.js +12 -1
  24. package/web/auth/useAuthStateReady.ts +12 -1
  25. package/web/firestore/useCompositeFilter.d.ts +63 -21
  26. package/web/firestore/useCompositeFilter.js +48 -9
  27. package/web/firestore/useCompositeFilter.ts +73 -23
  28. package/web/firestore/useCountQuery.d.ts +37 -11
  29. package/web/firestore/useCountQuery.js +16 -7
  30. package/web/firestore/useCountQuery.ts +44 -19
  31. package/web/firestore/useInfiniteQuery.d.ts +41 -10
  32. package/web/firestore/useInfiniteQuery.js +21 -6
  33. package/web/firestore/useInfiniteQuery.ts +51 -23
  34. package/web/firestore/useQuery.d.ts +39 -15
  35. package/web/firestore/useQuery.js +19 -11
  36. package/web/firestore/useQuery.ts +49 -27
@@ -1,6 +1,4 @@
1
1
  import {
2
- DocumentData,
3
- FirestoreDataConverter,
4
2
  getDocs,
5
3
  CollectionReference,
6
4
  query,
@@ -14,51 +12,75 @@ import {
14
12
  useQuery as useReactQuery,
15
13
  UseQueryOptions as UseReactQueryOptions
16
14
  } from "@tanstack/react-query";
15
+ import { QueryFilterConstraint } from "./useCompositeFilter";
16
+ import { AppModel } from "../../types";
17
17
 
18
- type UseQueryOptions<
19
- AppModelType extends DocumentData = DocumentData,
20
- DbModelType extends DocumentData = DocumentData
21
- > = {
18
+ /**
19
+ * @inline
20
+ */
21
+ type UseQueryOptions<AppModelType extends AppModel = AppModel> = {
22
+ /**
23
+ * Reqct-query options that must include queryKey and shall not define queryFn
24
+ */
22
25
  options: Omit<UseReactQueryOptions<AppModelType[], Error, AppModelType[]>, "queryFn"> &
23
26
  Required<Pick<UseReactQueryOptions<AppModelType[], Error, AppModelType[]>, "queryKey">>;
24
- collectionReference: CollectionReference<AppModelType, DbModelType>;
27
+
28
+ /**
29
+ * Reference to a Firestore collection
30
+ */
31
+ collectionReference: CollectionReference<AppModelType, AppModelType>;
32
+
33
+ /**
34
+ * Non composite filter constraints such as limit, order, where
35
+ */
25
36
  queryConstraints?: QueryConstraint[] | QueryNonFilterConstraint[];
26
- compositeFilter?: QueryCompositeFilterConstraint;
27
- converter?: FirestoreDataConverter<AppModelType, DbModelType>;
37
+
38
+ /**
39
+ * Composite filter
40
+ */
41
+ compositeFilter?: QueryFilterConstraint;
28
42
  };
29
43
 
30
44
  /**
31
- * Executes a query on a Firestore-like data source and returns the resulting documents as an array.
45
+ * Executes a query on a Firestore data source and returns the resulting documents as an array.
46
+ *
47
+ * @group Hook
32
48
  *
33
- * This hook utilizes an abstraction over React Query to asynchronously fetch data based on the provided query
34
- * reference and constraints. It supports optional filtering, conversion, and additional query constraints.
49
+ * @param {UseQueryOptions<AppModelType>} options - Configuration options for the query.
35
50
  *
36
- * @param {UseQueryOptions<AppModelType, DbModelType>} options - Configuration options for the query.
37
- * @param {DocumentReference<AppModelType>} queryReference - The reference to the query to be executed.
38
- * @param {QueryConstraint[]} queryConstraints - Additional constraints to fine-tune the query.
39
- * @param {QueryConstraint} compositeFilter - Optional composite filter to apply to the query.
40
- * @param {FirestoreDataConverter<AppModelType>} converter - Optional data converter for transforming snapshots.
51
+ * @returns {UseQueryResult<AppModelType[]>} An object containing documents that match the query.
41
52
  *
42
- * @returns {UseQueryResult<AppModelType[]>} Result containing an array of documents that match the query criteria.
53
+ * @example
54
+ * ```jsx
55
+ * export const MyComponent = () => {
56
+ * const docs = useQuery({
57
+ * options: {
58
+ * queryKey: ['key']
59
+ * },
60
+ * collectionReference: collection(),
61
+ * });
62
+ * console.log(docs);
63
+ * };
64
+ * ```
43
65
  */
44
- export const useQuery = <
45
- AppModelType extends DocumentData = DocumentData,
46
- DbModelType extends DocumentData = DocumentData
47
- >({
66
+ export const useQuery = <AppModelType extends AppModel = AppModel>({
48
67
  options,
49
68
  collectionReference,
50
69
  queryConstraints = [],
51
- compositeFilter,
52
- converter
53
- }: UseQueryOptions<AppModelType, DbModelType>): UseQueryResult<AppModelType[]> => {
70
+ compositeFilter
71
+ }: UseQueryOptions<AppModelType>): UseQueryResult<AppModelType[]> => {
54
72
  return useReactQuery({
55
73
  ...options,
56
74
  queryFn: async () => {
57
75
  const queryToExecute = compositeFilter
58
- ? query(collectionReference, compositeFilter, ...(queryConstraints as QueryNonFilterConstraint[]))
76
+ ? query(
77
+ collectionReference,
78
+ compositeFilter as QueryCompositeFilterConstraint,
79
+ ...(queryConstraints as QueryNonFilterConstraint[])
80
+ )
59
81
  : query(collectionReference, ...queryConstraints);
60
82
 
61
- const querySnapshot = await getDocs(converter ? queryToExecute.withConverter(converter) : queryToExecute);
83
+ const querySnapshot = await getDocs(queryToExecute);
62
84
  const docs: AppModelType[] = [];
63
85
 
64
86
  if (querySnapshot) {