@codeleap/query 6.8.0 → 7.0.1
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/factors/createQueryManager.js +37 -0
- package/dist/factors/createQueryManager.js.map +1 -0
- package/dist/factors/createQueryOperations.js +36 -0
- package/dist/factors/createQueryOperations.js.map +1 -0
- package/dist/factors/index.js +3 -0
- package/dist/factors/index.js.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/Mutations.js +235 -0
- package/dist/lib/Mutations.js.map +1 -0
- package/dist/lib/QueryClientEnhanced/index.js +195 -0
- package/dist/lib/QueryClientEnhanced/index.js.map +1 -0
- package/dist/lib/QueryClientEnhanced/types.js +2 -0
- package/dist/lib/QueryClientEnhanced/types.js.map +1 -0
- package/dist/lib/QueryKeys.js +313 -0
- package/dist/lib/QueryKeys.js.map +1 -0
- package/dist/lib/QueryManager.js +400 -0
- package/dist/lib/QueryManager.js.map +1 -0
- package/dist/lib/QueryOperations/index.js +284 -0
- package/dist/lib/QueryOperations/index.js.map +1 -0
- package/dist/lib/QueryOperations/types.js +2 -0
- package/dist/lib/QueryOperations/types.js.map +1 -0
- package/dist/lib/index.js +6 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/types/core.js +2 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/create.js +2 -0
- package/dist/types/create.js.map +1 -0
- package/dist/types/delete.js +2 -0
- package/dist/types/delete.js.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/list.js +2 -0
- package/dist/types/list.js.map +1 -0
- package/dist/types/retrieve.js +2 -0
- package/dist/types/retrieve.js.map +1 -0
- package/dist/types/update.js +2 -0
- package/dist/types/update.js.map +1 -0
- package/dist/types/utility.js +2 -0
- package/dist/types/utility.js.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/misc.js +35 -0
- package/dist/utils/misc.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { useMemo } from 'react';
|
|
11
|
+
import { TypeGuards } from '@codeleap/types';
|
|
12
|
+
import deepEqual from 'fast-deep-equal';
|
|
13
|
+
/**
|
|
14
|
+
* Class for managing React Query keys and operations for a specific query type
|
|
15
|
+
* @template T - The query item type that extends QueryItem
|
|
16
|
+
* @template F - The filter type used for list queries
|
|
17
|
+
*/
|
|
18
|
+
export class QueryKeys {
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new QueryKeys instance
|
|
21
|
+
* @param queryName - The name of the query used as base for all keys
|
|
22
|
+
* @param queryClient - The React Query client instance
|
|
23
|
+
*/
|
|
24
|
+
constructor(queryName, queryClient) {
|
|
25
|
+
this.queryName = queryName;
|
|
26
|
+
this.queryClient = queryClient;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Gets the base query keys for different operations
|
|
30
|
+
* @returns Object containing base query keys for list, retrieve, create, update, and delete operations
|
|
31
|
+
*/
|
|
32
|
+
get keys() {
|
|
33
|
+
return {
|
|
34
|
+
// queries
|
|
35
|
+
list: [this.queryName, 'list'],
|
|
36
|
+
retrieve: (id) => [this.queryName, 'retrieve', id],
|
|
37
|
+
// mutations
|
|
38
|
+
create: [this.queryName, 'create'],
|
|
39
|
+
update: [this.queryName, 'update'],
|
|
40
|
+
delete: [this.queryName, 'delete'],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Generates a list query key with optional filters
|
|
45
|
+
* @param filters - Optional filters to include in the query key
|
|
46
|
+
* @returns Query key array with or without filters
|
|
47
|
+
*/
|
|
48
|
+
listKeyWithFilters(filters) {
|
|
49
|
+
const hasValidFilters = !TypeGuards.isNil(filters) && (typeof filters !== 'object'
|
|
50
|
+
? Boolean(filters)
|
|
51
|
+
: Object.values(filters !== null && filters !== void 0 ? filters : {}).some(value => value != null && (typeof value !== 'string' || value.trim() !== '')));
|
|
52
|
+
return hasValidFilters ? [...this.keys.list, filters] : this.keys.list;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* React hook that returns a memoized list query key with filters
|
|
56
|
+
* @param filters - Optional filters to include in the query key
|
|
57
|
+
* @returns Memoized query key array
|
|
58
|
+
*/
|
|
59
|
+
useListKeyWithFilters(filters) {
|
|
60
|
+
return useMemo(() => {
|
|
61
|
+
return this.listKeyWithFilters(filters);
|
|
62
|
+
}, [filters]);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* React hook that returns a memoized retrieve query key
|
|
66
|
+
* @param id - The ID of the item to retrieve
|
|
67
|
+
* @returns Memoized query key array for retrieve operation
|
|
68
|
+
*/
|
|
69
|
+
useRetrieveKey(id) {
|
|
70
|
+
return useMemo(() => {
|
|
71
|
+
return this.keys.retrieve(id);
|
|
72
|
+
}, [id]);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Predicate function to check if a query belongs to this query name (all operations)
|
|
76
|
+
* @private
|
|
77
|
+
* @param queryName - The query name to match against
|
|
78
|
+
* @param query - The query object to check
|
|
79
|
+
* @returns True if the query matches the query name
|
|
80
|
+
*/
|
|
81
|
+
predicateQueryKeyAll(queryName, query) {
|
|
82
|
+
var _a;
|
|
83
|
+
const queryKey = (_a = query === null || query === void 0 ? void 0 : query.queryKey) === null || _a === void 0 ? void 0 : _a.join('/');
|
|
84
|
+
return queryKey === null || queryKey === void 0 ? void 0 : queryKey.includes(queryName);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Predicate function to check if a query is a list query for this query name
|
|
88
|
+
* @private
|
|
89
|
+
* @param queryName - The query name to match against
|
|
90
|
+
* @param query - The query object to check
|
|
91
|
+
* @param toIgnoreQueryKeys - Query keys to ignore in the matching
|
|
92
|
+
* @returns True if the query is a list query and not in the ignore list
|
|
93
|
+
*/
|
|
94
|
+
predicateQueryKeyList(queryName, query, toIgnoreQueryKeys) {
|
|
95
|
+
var _a;
|
|
96
|
+
const queryKey = (_a = query === null || query === void 0 ? void 0 : query.queryKey) === null || _a === void 0 ? void 0 : _a.join('/');
|
|
97
|
+
if (!TypeGuards.isNil(toIgnoreQueryKeys)) {
|
|
98
|
+
const ignoreQueryKeys = Array.isArray(toIgnoreQueryKeys === null || toIgnoreQueryKeys === void 0 ? void 0 : toIgnoreQueryKeys[0]) ? toIgnoreQueryKeys : [toIgnoreQueryKeys];
|
|
99
|
+
if (ignoreQueryKeys.some(key => deepEqual(query === null || query === void 0 ? void 0 : query.queryKey, key))) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const isListQueryKey = (queryKey === null || queryKey === void 0 ? void 0 : queryKey.includes(queryName)) && (queryKey === null || queryKey === void 0 ? void 0 : queryKey.includes('list'));
|
|
104
|
+
return isListQueryKey;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Invalidates all queries for this query name
|
|
108
|
+
* @param filters - Optional filters to apply to the invalidation
|
|
109
|
+
* @param options - Optional invalidation options
|
|
110
|
+
* @returns Promise that resolves when invalidation is complete
|
|
111
|
+
*/
|
|
112
|
+
invalidateAll(filters, options) {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
return this.queryClient.invalidateQueries(Object.assign(Object.assign({}, filters), { predicate: (query) => this.predicateQueryKeyAll(this.queryName, query) }), options);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Invalidates list queries, optionally with specific filters
|
|
119
|
+
* @param listFilters - Optional filters to target specific list queries
|
|
120
|
+
* @param ignoreQueryKeys - Query keys to ignore during invalidation
|
|
121
|
+
* @param filters - Optional filters to apply to the invalidation
|
|
122
|
+
* @param options - Optional invalidation options
|
|
123
|
+
* @returns Promise that resolves when invalidation is complete
|
|
124
|
+
*/
|
|
125
|
+
invalidateList(listFilters, ignoreQueryKeys, filters, options) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
if (!!listFilters) {
|
|
128
|
+
const queryKey = this.listKeyWithFilters(listFilters);
|
|
129
|
+
return this.queryClient.invalidateQueries(Object.assign(Object.assign({}, filters), { queryKey }), options);
|
|
130
|
+
}
|
|
131
|
+
return this.queryClient.invalidateQueries(Object.assign(Object.assign({}, filters), { predicate: (query) => this.predicateQueryKeyList(this.queryName, query, ignoreQueryKeys) }), options);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Invalidates a specific retrieve query by ID
|
|
136
|
+
* @param id - The ID of the item to invalidate
|
|
137
|
+
* @param filters - Optional filters to apply to the invalidation
|
|
138
|
+
* @param options - Optional invalidation options
|
|
139
|
+
* @returns Promise that resolves when invalidation is complete
|
|
140
|
+
*/
|
|
141
|
+
invalidateRetrieve(id, filters, options) {
|
|
142
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
143
|
+
const queryKey = this.keys.retrieve(id);
|
|
144
|
+
return this.queryClient.invalidateQueries(Object.assign(Object.assign({}, filters), { queryKey }), options);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Refetches all queries for this query name
|
|
149
|
+
* @param filters - Optional filters to apply to the refetch
|
|
150
|
+
* @param options - Optional refetch options
|
|
151
|
+
* @returns Promise that resolves when refetch is complete
|
|
152
|
+
*/
|
|
153
|
+
refetchAll(filters, options) {
|
|
154
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
155
|
+
return this.queryClient.refetchQueries(Object.assign(Object.assign({}, filters), { predicate: (query) => this.predicateQueryKeyAll(this.queryName, query) }), options);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Refetches list queries, optionally with specific filters
|
|
160
|
+
* @param listFilters - Optional filters to target specific list queries
|
|
161
|
+
* @param ignoreQueryKeys - Query keys to ignore during refetch
|
|
162
|
+
* @param filters - Optional filters to apply to the refetch
|
|
163
|
+
* @param options - Optional refetch options
|
|
164
|
+
* @returns Promise that resolves when refetch is complete
|
|
165
|
+
*/
|
|
166
|
+
refetchList(listFilters, ignoreQueryKeys, filters, options) {
|
|
167
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
168
|
+
if (!!listFilters) {
|
|
169
|
+
const queryKey = this.listKeyWithFilters(listFilters);
|
|
170
|
+
return this.queryClient.refetchQueries(Object.assign(Object.assign({}, filters), { queryKey }), options);
|
|
171
|
+
}
|
|
172
|
+
return this.queryClient.refetchQueries(Object.assign(Object.assign({}, filters), { predicate: (query) => this.predicateQueryKeyList(this.queryName, query, ignoreQueryKeys) }), options);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Refetches a specific retrieve query by ID
|
|
177
|
+
* @param id - The ID of the item to refetch
|
|
178
|
+
* @param filters - Optional filters to apply to the refetch
|
|
179
|
+
* @param options - Optional refetch options
|
|
180
|
+
* @returns Promise that resolves when refetch is complete
|
|
181
|
+
*/
|
|
182
|
+
refetchRetrieve(id, filters, options) {
|
|
183
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
184
|
+
const queryKey = this.keys.retrieve(id);
|
|
185
|
+
return this.queryClient.refetchQueries(Object.assign(Object.assign({}, filters), { queryKey }), options);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Removes a specific retrieve query data from the cache
|
|
190
|
+
* @param id - The ID of the item to remove from cache
|
|
191
|
+
* @param filters - Optional filters to apply to the removal
|
|
192
|
+
* @returns Promise that resolves when removal is complete
|
|
193
|
+
*/
|
|
194
|
+
removeRetrieveQueryData(id, filters) {
|
|
195
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
196
|
+
const queryKey = this.keys.retrieve(id);
|
|
197
|
+
return this.queryClient.removeQueries(Object.assign(Object.assign({}, filters), { queryKey }));
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Cancels list queries that are currently in flight
|
|
202
|
+
* @param listFilters - Optional filters to target specific list queries
|
|
203
|
+
* @param ignoreQueryKeys - Query keys to ignore during cancellation
|
|
204
|
+
* @param filters - Optional filters to apply to the cancellation
|
|
205
|
+
* @param options - Optional cancellation options
|
|
206
|
+
* @returns Promise that resolves when cancellation is complete
|
|
207
|
+
*/
|
|
208
|
+
cancelListQueries(listFilters, ignoreQueryKeys, filters, options) {
|
|
209
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
210
|
+
if (!!listFilters) {
|
|
211
|
+
const queryKey = this.listKeyWithFilters(listFilters);
|
|
212
|
+
return this.queryClient.cancelQueries(Object.assign(Object.assign({}, filters), { queryKey }), options);
|
|
213
|
+
}
|
|
214
|
+
return this.queryClient.cancelQueries(Object.assign(Object.assign({}, filters), { predicate: (query) => this.predicateQueryKeyList(this.queryName, query, ignoreQueryKeys) }), options);
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Gets list data from the cache, including both items array and item map
|
|
219
|
+
* @param filters - Optional filters to target specific list data
|
|
220
|
+
* @returns Object containing items array and itemMap (keyed by ID)
|
|
221
|
+
*/
|
|
222
|
+
getListData(filters) {
|
|
223
|
+
var _a;
|
|
224
|
+
const queryKey = this.listKeyWithFilters(filters);
|
|
225
|
+
const data = this.queryClient.getQueryData(queryKey);
|
|
226
|
+
const items = ((_a = data === null || data === void 0 ? void 0 : data.pages) !== null && _a !== void 0 ? _a : []).flat();
|
|
227
|
+
const itemMap = items.reduce((acc, item) => {
|
|
228
|
+
acc[item === null || item === void 0 ? void 0 : item.id] = item;
|
|
229
|
+
return acc;
|
|
230
|
+
}, {});
|
|
231
|
+
return {
|
|
232
|
+
items,
|
|
233
|
+
itemMap,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Retrieves item data from cache with intelligent fallback strategies
|
|
238
|
+
*
|
|
239
|
+
* @description Searches for an item using a multi-layered approach:
|
|
240
|
+
* 1. Direct cache lookup using retrieve query
|
|
241
|
+
* 2. Fallback to itemMap from list data (shallow search)
|
|
242
|
+
* 3. Deep search through all paginated list queries
|
|
243
|
+
*
|
|
244
|
+
* @param {QueryItem['id']} id - The unique identifier of the item to retrieve
|
|
245
|
+
* @param {RetrieveDataOptions} [options] - Configuration options for retrieval behavior
|
|
246
|
+
* @param {boolean} [options.onlyQueryData=false] - If true, only returns data from the specific retrieve query cache, ignoring list data fallbacks
|
|
247
|
+
* @param {boolean} [options.deepSearch=true] - If true, performs deep search through paginated queries when item not found in direct cache or itemMap
|
|
248
|
+
*
|
|
249
|
+
* @returns Item | undefined
|
|
250
|
+
*/
|
|
251
|
+
getRetrieveData(id, options = {}) {
|
|
252
|
+
var _a;
|
|
253
|
+
const { onlyQueryData = false, deepSearch = false, } = options;
|
|
254
|
+
if (TypeGuards.isNil(id))
|
|
255
|
+
return undefined;
|
|
256
|
+
const queryKey = this.keys.retrieve(id);
|
|
257
|
+
const queryData = this.queryClient.getQueryData(queryKey);
|
|
258
|
+
if (queryData === null || queryData === void 0 ? void 0 : queryData.id)
|
|
259
|
+
return queryData;
|
|
260
|
+
if (onlyQueryData)
|
|
261
|
+
return undefined;
|
|
262
|
+
if (!deepSearch) {
|
|
263
|
+
const { itemMap } = this.getListData();
|
|
264
|
+
return itemMap === null || itemMap === void 0 ? void 0 : itemMap[id];
|
|
265
|
+
}
|
|
266
|
+
const queries = this.getAllListQueries();
|
|
267
|
+
for (const query of queries) {
|
|
268
|
+
const pages = (_a = query.state.data) === null || _a === void 0 ? void 0 : _a.pages;
|
|
269
|
+
if (!(pages === null || pages === void 0 ? void 0 : pages.length))
|
|
270
|
+
continue;
|
|
271
|
+
const item = pages
|
|
272
|
+
.filter(Boolean)
|
|
273
|
+
.flatMap(page => Array.isArray(page) ? page : [])
|
|
274
|
+
.find(item => (item === null || item === void 0 ? void 0 : item.id) === id);
|
|
275
|
+
if (item)
|
|
276
|
+
return item;
|
|
277
|
+
}
|
|
278
|
+
return undefined;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Gets all list queries from the query cache
|
|
282
|
+
* @returns Array of list queries for this query name
|
|
283
|
+
*/
|
|
284
|
+
getAllListQueries() {
|
|
285
|
+
const queries = this.queryClient.getQueryCache().findAll({
|
|
286
|
+
predicate: (query) => this.predicateQueryKeyList(this.queryName, query),
|
|
287
|
+
});
|
|
288
|
+
return queries;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Gets a specific list query from the query cache
|
|
292
|
+
* @param listFilters - Optional filters to identify a specific list query. If omitted, returns the unfiltered list query
|
|
293
|
+
* @returns The matching list query, or undefined if not found
|
|
294
|
+
*/
|
|
295
|
+
getListQuery(listFilters) {
|
|
296
|
+
const query = this.queryClient.getQueryCache().find({
|
|
297
|
+
queryKey: this.listKeyWithFilters(listFilters)
|
|
298
|
+
});
|
|
299
|
+
return query;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Factory function to create a new QueryKeys instance
|
|
304
|
+
* @template T - The query item type that extends QueryItem
|
|
305
|
+
* @template F - The filter type used for list queries
|
|
306
|
+
* @param name - The name of the query used as base for all keys
|
|
307
|
+
* @param queryClient - The React Query client instance
|
|
308
|
+
* @returns New QueryKeys instance
|
|
309
|
+
*/
|
|
310
|
+
export const createQueryKeys = (name, queryClient) => {
|
|
311
|
+
return new QueryKeys(name, queryClient);
|
|
312
|
+
};
|
|
313
|
+
//# sourceMappingURL=QueryKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryKeys.js","sourceRoot":"","sources":["../../src/lib/QueryKeys.ts"],"names":[],"mappings":"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"}
|