@ttt-productions/query-core 0.3.2 → 0.3.4
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.
- package/dist/firestore/use-firestore-collection.d.ts +8 -10
- package/dist/firestore/use-firestore-collection.d.ts.map +1 -1
- package/dist/firestore/use-firestore-collection.js +14 -11
- package/dist/firestore/use-firestore-collection.js.map +1 -1
- package/dist/firestore/use-firestore-doc.d.ts +11 -14
- package/dist/firestore/use-firestore-doc.d.ts.map +1 -1
- package/dist/firestore/use-firestore-doc.js +17 -15
- package/dist/firestore/use-firestore-doc.js.map +1 -1
- package/dist/firestore/use-firestore-paginated.d.ts +12 -14
- package/dist/firestore/use-firestore-paginated.d.ts.map +1 -1
- package/dist/firestore/use-firestore-paginated.js +19 -14
- package/dist/firestore/use-firestore-paginated.js.map +1 -1
- package/dist/keys.d.ts +8 -0
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +9 -9
- package/dist/keys.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,21 +5,19 @@ import type { FirestoreCollectionOptions, WithId } from './types';
|
|
|
5
5
|
* Fetch all documents from a Firestore collection with optional realtime updates.
|
|
6
6
|
* Use this for small collections where you need all documents at once.
|
|
7
7
|
* For large collections, use useFirestoreInfinite or useFirestorePaginated.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
8
|
+
* * @example
|
|
10
9
|
* ```tsx
|
|
11
10
|
* // Fetch all channels in a project
|
|
12
11
|
* const { data: channels } = useFirestoreCollection<Channel>({
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* collectionPath: `projects/${projectId}/channels`,
|
|
13
|
+
* queryKey: ['channels', projectId],
|
|
14
|
+
* constraints: [orderBy('createdAt', 'asc')],
|
|
16
15
|
* });
|
|
17
|
-
*
|
|
18
|
-
* // With realtime updates
|
|
16
|
+
* * // With realtime updates
|
|
19
17
|
* const { data: members } = useFirestoreCollection<Member>({
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
18
|
+
* collectionPath: `projects/${projectId}/members`,
|
|
19
|
+
* queryKey: ['members', projectId],
|
|
20
|
+
* subscribe: true,
|
|
23
21
|
* });
|
|
24
22
|
* ```
|
|
25
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-firestore-collection.d.ts","sourceRoot":"","sources":["../../src/firestore/use-firestore-collection.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"use-firestore-collection.d.ts","sourceRoot":"","sources":["../../src/firestore/use-firestore-collection.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAElE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,EAC5E,cAAc,EACd,QAAQ,EACR,WAAgB,EAChB,OAAc,EACd,SAAiB,EACjB,SAAS,EACT,MAAM,EACN,MAAM,GACP,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CA2DpE"}
|
|
@@ -7,21 +7,19 @@ import { useFirestoreDb } from './context';
|
|
|
7
7
|
* Fetch all documents from a Firestore collection with optional realtime updates.
|
|
8
8
|
* Use this for small collections where you need all documents at once.
|
|
9
9
|
* For large collections, use useFirestoreInfinite or useFirestorePaginated.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
10
|
+
* * @example
|
|
12
11
|
* ```tsx
|
|
13
12
|
* // Fetch all channels in a project
|
|
14
13
|
* const { data: channels } = useFirestoreCollection<Channel>({
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* collectionPath: `projects/${projectId}/channels`,
|
|
15
|
+
* queryKey: ['channels', projectId],
|
|
16
|
+
* constraints: [orderBy('createdAt', 'asc')],
|
|
18
17
|
* });
|
|
19
|
-
*
|
|
20
|
-
* // With realtime updates
|
|
18
|
+
* * // With realtime updates
|
|
21
19
|
* const { data: members } = useFirestoreCollection<Member>({
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
20
|
+
* collectionPath: `projects/${projectId}/members`,
|
|
21
|
+
* queryKey: ['members', projectId],
|
|
22
|
+
* subscribe: true,
|
|
25
23
|
* });
|
|
26
24
|
* ```
|
|
27
25
|
*/
|
|
@@ -47,9 +45,14 @@ export function useFirestoreCollection({ collectionPath, queryKey, constraints =
|
|
|
47
45
|
queryClient.setQueryData(queryKey, items);
|
|
48
46
|
}, (error) => {
|
|
49
47
|
console.error('[useFirestoreCollection] Subscription error:', error);
|
|
48
|
+
// Surface error so UI can react (clear stale data)
|
|
49
|
+
queryClient.setQueryData(queryKey, undefined);
|
|
50
|
+
// Invalidate to trigger error state
|
|
51
|
+
queryClient.invalidateQueries({ queryKey });
|
|
50
52
|
});
|
|
51
53
|
return () => unsubscribe();
|
|
52
|
-
|
|
54
|
+
// Note: select intentionally excluded to prevent re-subscribing on every render
|
|
55
|
+
}, [db, collectionPath, queryKey, constraints, enabled, subscribe, queryClient]);
|
|
53
56
|
return useQuery({
|
|
54
57
|
queryKey,
|
|
55
58
|
queryFn: async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-firestore-collection.js","sourceRoot":"","sources":["../../src/firestore/use-firestore-collection.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAuB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EACL,UAAU,EACV,KAAK,EACL,OAAO,EACP,UAAU,GAEX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C
|
|
1
|
+
{"version":3,"file":"use-firestore-collection.js","sourceRoot":"","sources":["../../src/firestore/use-firestore-collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,27 +3,24 @@ import { type DocumentData } from 'firebase/firestore';
|
|
|
3
3
|
import type { FirestoreDocOptions, WithId } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Fetch a single Firestore document with optional realtime updates.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
6
|
+
* * @example
|
|
8
7
|
* ```tsx
|
|
9
8
|
* // Simple fetch
|
|
10
9
|
* const { data: user } = useFirestoreDoc<User>({
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* docPath: `users/${userId}`,
|
|
11
|
+
* queryKey: ['user', userId],
|
|
13
12
|
* });
|
|
14
|
-
*
|
|
15
|
-
* // With realtime updates
|
|
13
|
+
* * // With realtime updates
|
|
16
14
|
* const { data: project } = useFirestoreDoc<Project>({
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
15
|
+
* docPath: `projects/${projectId}`,
|
|
16
|
+
* queryKey: ['project', projectId],
|
|
17
|
+
* subscribe: true,
|
|
20
18
|
* });
|
|
21
|
-
*
|
|
22
|
-
* // Conditional fetch
|
|
19
|
+
* * // Conditional fetch
|
|
23
20
|
* const { data: profile } = useFirestoreDoc<Profile>({
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
21
|
+
* docPath: `profiles/${userId}`,
|
|
22
|
+
* queryKey: ['profile', userId],
|
|
23
|
+
* enabled: !!userId,
|
|
27
24
|
* });
|
|
28
25
|
* ```
|
|
29
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-firestore-doc.d.ts","sourceRoot":"","sources":["../../src/firestore/use-firestore-doc.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE3D
|
|
1
|
+
{"version":3,"file":"use-firestore-doc.d.ts","sourceRoot":"","sources":["../../src/firestore/use-firestore-doc.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,EACrE,OAAO,EACP,QAAQ,EACR,OAAc,EACd,SAAiB,EACjB,SAAS,EACT,MAAM,EACN,MAAM,GACP,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAuDlE"}
|
|
@@ -5,27 +5,24 @@ import { doc, getDoc, onSnapshot } from 'firebase/firestore';
|
|
|
5
5
|
import { useFirestoreDb } from './context';
|
|
6
6
|
/**
|
|
7
7
|
* Fetch a single Firestore document with optional realtime updates.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
8
|
+
* * @example
|
|
10
9
|
* ```tsx
|
|
11
10
|
* // Simple fetch
|
|
12
11
|
* const { data: user } = useFirestoreDoc<User>({
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* docPath: `users/${userId}`,
|
|
13
|
+
* queryKey: ['user', userId],
|
|
15
14
|
* });
|
|
16
|
-
*
|
|
17
|
-
* // With realtime updates
|
|
15
|
+
* * // With realtime updates
|
|
18
16
|
* const { data: project } = useFirestoreDoc<Project>({
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
17
|
+
* docPath: `projects/${projectId}`,
|
|
18
|
+
* queryKey: ['project', projectId],
|
|
19
|
+
* subscribe: true,
|
|
22
20
|
* });
|
|
23
|
-
*
|
|
24
|
-
* // Conditional fetch
|
|
21
|
+
* * // Conditional fetch
|
|
25
22
|
* const { data: profile } = useFirestoreDoc<Profile>({
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
23
|
+
* docPath: `profiles/${userId}`,
|
|
24
|
+
* queryKey: ['profile', userId],
|
|
25
|
+
* enabled: !!userId,
|
|
29
26
|
* });
|
|
30
27
|
* ```
|
|
31
28
|
*/
|
|
@@ -50,9 +47,14 @@ export function useFirestoreDoc({ docPath, queryKey, enabled = true, subscribe =
|
|
|
50
47
|
}
|
|
51
48
|
}, (error) => {
|
|
52
49
|
console.error('[useFirestoreDoc] Subscription error:', error);
|
|
50
|
+
queryClient.setQueryData(queryKey, undefined);
|
|
51
|
+
// Invalidate to trigger error state
|
|
52
|
+
queryClient.invalidateQueries({ queryKey });
|
|
53
53
|
});
|
|
54
54
|
return () => unsubscribe();
|
|
55
|
-
|
|
55
|
+
// Note: select intentionally excluded to prevent re-subscribing on every render
|
|
56
|
+
// if the caller passes an inline function.
|
|
57
|
+
}, [db, docPath, queryKey, enabled, subscribe, queryClient]);
|
|
56
58
|
return useQuery({
|
|
57
59
|
queryKey,
|
|
58
60
|
queryFn: async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-firestore-doc.js","sourceRoot":"","sources":["../../src/firestore/use-firestore-doc.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAuB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C
|
|
1
|
+
{"version":3,"file":"use-firestore-doc.js","sourceRoot":"","sources":["../../src/firestore/use-firestore-doc.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,24 +17,22 @@ export type UseFirestorePaginatedResult<T> = UseQueryResult<WithId<T>[], Error>
|
|
|
17
17
|
/**
|
|
18
18
|
* Page-based pagination for Firestore collections.
|
|
19
19
|
* Supports navigating to specific pages (1, 2, 3...) rather than infinite scroll.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
20
|
+
* * @example
|
|
22
21
|
* ```tsx
|
|
23
22
|
* const {
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
23
|
+
* data,
|
|
24
|
+
* page,
|
|
25
|
+
* setPage,
|
|
26
|
+
* hasNextPage,
|
|
27
|
+
* hasPrevPage,
|
|
28
|
+
* isLoading,
|
|
30
29
|
* } = useFirestorePaginated<Task>({
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
30
|
+
* collectionPath: 'tasks',
|
|
31
|
+
* queryKey: ['tasks', 'list'],
|
|
32
|
+
* constraints: [where('status', '==', 'active'), orderBy('createdAt', 'desc')],
|
|
33
|
+
* pageSize: 10,
|
|
35
34
|
* });
|
|
36
|
-
*
|
|
37
|
-
* // Render pagination controls
|
|
35
|
+
* * // Render pagination controls
|
|
38
36
|
* <button onClick={() => setPage(page - 1)} disabled={!hasPrevPage}>Previous</button>
|
|
39
37
|
* <span>Page {page}</span>
|
|
40
38
|
* <button onClick={() => setPage(page + 1)} disabled={!hasNextPage}>Next</button>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-firestore-paginated.d.ts","sourceRoot":"","sources":["../../src/firestore/use-firestore-paginated.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAML,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"use-firestore-paginated.d.ts","sourceRoot":"","sources":["../../src/firestore/use-firestore-paginated.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAML,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKjE;;GAEG;AACH,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,EAC3E,cAAc,EACd,QAAQ,EACR,WAAgB,EAChB,QAA4B,EAC5B,WAAe,EACf,OAAc,EACd,SAAS,EACT,MAAM,EACN,MAAM,GACP,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC,CAAC,CAAC,CA2G/D"}
|
|
@@ -4,27 +4,26 @@ import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
|
4
4
|
import { collection, query, getDocs, limit, startAfter, } from 'firebase/firestore';
|
|
5
5
|
import { useFirestoreDb } from './context';
|
|
6
6
|
const DEFAULT_PAGE_SIZE = 10;
|
|
7
|
+
const MAX_CACHED_CURSORS = 20;
|
|
7
8
|
/**
|
|
8
9
|
* Page-based pagination for Firestore collections.
|
|
9
10
|
* Supports navigating to specific pages (1, 2, 3...) rather than infinite scroll.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
11
|
+
* * @example
|
|
12
12
|
* ```tsx
|
|
13
13
|
* const {
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
14
|
+
* data,
|
|
15
|
+
* page,
|
|
16
|
+
* setPage,
|
|
17
|
+
* hasNextPage,
|
|
18
|
+
* hasPrevPage,
|
|
19
|
+
* isLoading,
|
|
20
20
|
* } = useFirestorePaginated<Task>({
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* collectionPath: 'tasks',
|
|
22
|
+
* queryKey: ['tasks', 'list'],
|
|
23
|
+
* constraints: [where('status', '==', 'active'), orderBy('createdAt', 'desc')],
|
|
24
|
+
* pageSize: 10,
|
|
25
25
|
* });
|
|
26
|
-
*
|
|
27
|
-
* // Render pagination controls
|
|
26
|
+
* * // Render pagination controls
|
|
28
27
|
* <button onClick={() => setPage(page - 1)} disabled={!hasPrevPage}>Previous</button>
|
|
29
28
|
* <span>Page {page}</span>
|
|
30
29
|
* <button onClick={() => setPage(page + 1)} disabled={!hasNextPage}>Next</button>
|
|
@@ -58,6 +57,12 @@ export function useFirestorePaginated({ collectionPath, queryKey, constraints =
|
|
|
58
57
|
setCursors((prev) => {
|
|
59
58
|
const next = new Map(prev);
|
|
60
59
|
next.set(page, lastDoc);
|
|
60
|
+
// Prune old cursors if too many (prevent memory leaks)
|
|
61
|
+
if (next.size > MAX_CACHED_CURSORS) {
|
|
62
|
+
const sorted = Array.from(next.keys()).sort((a, b) => a - b);
|
|
63
|
+
const toDelete = sorted.slice(0, sorted.length - MAX_CACHED_CURSORS);
|
|
64
|
+
toDelete.forEach((k) => next.delete(k));
|
|
65
|
+
}
|
|
61
66
|
return next;
|
|
62
67
|
});
|
|
63
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-firestore-paginated.js","sourceRoot":"","sources":["../../src/firestore/use-firestore-paginated.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAuB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EACL,UAAU,EACV,KAAK,EACL,OAAO,EACP,KAAK,EACL,UAAU,GAGX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,iBAAiB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"use-firestore-paginated.js","sourceRoot":"","sources":["../../src/firestore/use-firestore-paginated.ts"],"names":[],"mappings":"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"}
|
package/dist/keys.d.ts
CHANGED
|
@@ -118,6 +118,14 @@ export declare const keys: {
|
|
|
118
118
|
readonly list: (params?: Record<string, unknown>) => QueryKey;
|
|
119
119
|
readonly custom: (...parts: KeyPart[]) => QueryKey;
|
|
120
120
|
};
|
|
121
|
+
readonly social: {
|
|
122
|
+
readonly all: QueryKey;
|
|
123
|
+
readonly feed: (filter?: string) => QueryKey;
|
|
124
|
+
readonly trending: () => QueryKey;
|
|
125
|
+
readonly detail: (id: string) => QueryKey;
|
|
126
|
+
readonly list: (params?: Record<string, unknown>) => QueryKey;
|
|
127
|
+
readonly custom: (...parts: KeyPart[]) => QueryKey;
|
|
128
|
+
};
|
|
121
129
|
};
|
|
122
130
|
/**
|
|
123
131
|
* Utility for apps that want to define their own scoped key sets
|
package/dist/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtF,MAAM,MAAM,QAAQ,GAAG,SAAS,OAAO,EAAE,CAAC;AAO1C,eAAO,MAAM,IAAI;;;8BAGA,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;8BAIf,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;;;iCAKZ,MAAM;;8BAET,MAAM;iCACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCACpB,OAAO,EAAE;;CAEtB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM;;0BAG3B,MAAM;6BACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gCACpB,OAAO,EAAE;EAE/B"}
|
package/dist/keys.js
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lightweight, stable query key helpers.
|
|
3
|
-
*
|
|
4
|
-
* Convention:
|
|
5
|
-
* - `keys.user.all` => ['user']
|
|
6
|
-
* - `keys.user.detail(id)` => ['user', 'detail', id]
|
|
7
|
-
* - `keys.user.list(filters?)` => ['user', 'list', filters]
|
|
8
|
-
* - `keys.user.custom('accountStatus', id)` => ['user', 'accountStatus', id]
|
|
9
|
-
*/
|
|
10
1
|
function withScope(scope, ...parts) {
|
|
11
2
|
const cleaned = parts.filter((p) => p !== undefined);
|
|
12
3
|
return [scope, ...cleaned];
|
|
@@ -120,6 +111,15 @@ export const keys = {
|
|
|
120
111
|
list: (params) => withScope('feedback', 'list', params),
|
|
121
112
|
custom: (...parts) => withScope('feedback', ...parts),
|
|
122
113
|
},
|
|
114
|
+
// Added social scope for Streetz feed and trending posts
|
|
115
|
+
social: {
|
|
116
|
+
all: withScope('social'),
|
|
117
|
+
feed: (filter) => withScope('social', 'feed', filter),
|
|
118
|
+
trending: () => withScope('social', 'trending'),
|
|
119
|
+
detail: (id) => withScope('social', 'detail', id),
|
|
120
|
+
list: (params) => withScope('social', 'list', params),
|
|
121
|
+
custom: (...parts) => withScope('social', ...parts),
|
|
122
|
+
},
|
|
123
123
|
};
|
|
124
124
|
/**
|
|
125
125
|
* Utility for apps that want to define their own scoped key sets
|
package/dist/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttt-productions/query-core",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"description": "Shared TanStack Query (React Query) client defaults, query key helpers, and Firestore integration hooks for TTT Productions apps",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|