@codeleap/query 7.0.1 → 7.1.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.d.ts +17 -14
- package/dist/factors/createQueryManager.d.ts.map +1 -1
- package/dist/factors/createQueryManager.js +15 -12
- package/dist/factors/createQueryManager.js.map +1 -1
- package/dist/lib/Mutations.js +32 -35
- package/dist/lib/Mutations.js.map +1 -1
- package/dist/lib/QueryClientEnhanced/index.js +41 -43
- package/dist/lib/QueryClientEnhanced/index.js.map +1 -1
- package/dist/lib/QueryKeys.js +70 -73
- package/dist/lib/QueryKeys.js.map +1 -1
- package/dist/lib/QueryManager.d.ts +24 -8
- package/dist/lib/QueryManager.d.ts.map +1 -1
- package/dist/lib/QueryManager.js +153 -97
- package/dist/lib/QueryManager.js.map +1 -1
- package/dist/lib/QueryOperations/index.js +29 -25
- package/dist/lib/QueryOperations/index.js.map +1 -1
- package/dist/types/core.d.ts +17 -3
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/list.d.ts +6 -4
- package/dist/types/list.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/factors/createQueryManager.ts +19 -16
- package/src/lib/QueryManager.ts +55 -15
- package/src/types/core.ts +22 -3
- package/src/types/list.ts +7 -5
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
import { QueryManager } from '../lib';
|
|
2
|
-
import { QueryItem, QueryManagerOptions } from '../types';
|
|
2
|
+
import { ListResponseMeta, QueryItem, QueryManagerOptions } from '../types';
|
|
3
3
|
/**
|
|
4
4
|
* Factory function to create a new QueryManager instance
|
|
5
5
|
* @template T - The query item type that extends QueryItem
|
|
6
6
|
* @template F - The filter type used for list queries
|
|
7
|
+
* @template M - Optional metadata shape returned alongside list items (e.g. `{ count: number }`). Defaults to `Record<string, unknown>`.
|
|
7
8
|
* @param options - Configuration options for the query manager
|
|
8
9
|
* @returns New QueryManager instance
|
|
9
10
|
*
|
|
10
11
|
* @example
|
|
11
12
|
* ```typescript
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* email: string
|
|
15
|
-
* status: 'active' | 'inactive'
|
|
16
|
-
* }
|
|
17
|
-
*
|
|
18
|
-
* interface UserFilters {
|
|
19
|
-
* status?: 'active' | 'inactive'
|
|
20
|
-
* search?: string
|
|
21
|
-
* }
|
|
22
|
-
*
|
|
23
|
-
* const userQueryManager = createQueryManager<User, UserFilters>({
|
|
13
|
+
* // Without list metadata (backward compatible)
|
|
14
|
+
* const userManager = createQueryManager<User, UserFilters>({
|
|
24
15
|
* name: 'users',
|
|
25
16
|
* queryClient,
|
|
26
17
|
* listFn: (limit, offset, filters) => api.getUsers({ limit, offset, ...filters }),
|
|
@@ -30,7 +21,19 @@ import { QueryItem, QueryManagerOptions } from '../types';
|
|
|
30
21
|
* deleteFn: (id) => api.deleteUser(id),
|
|
31
22
|
* listLimit: 20
|
|
32
23
|
* })
|
|
24
|
+
*
|
|
25
|
+
* // With list metadata
|
|
26
|
+
* const postManager = createQueryManager<Post, PostFilters, { count: number }>({
|
|
27
|
+
* name: 'posts',
|
|
28
|
+
* queryClient,
|
|
29
|
+
* listFn: async (limit, offset, filters) => {
|
|
30
|
+
* const { data } = await api.get('/posts/', { limit, offset, ...filters })
|
|
31
|
+
* return { listItems: data.results, count: data.count }
|
|
32
|
+
* },
|
|
33
|
+
* })
|
|
34
|
+
* // In a component: const { items, meta } = postManager.useList({ filters })
|
|
35
|
+
* // meta?.count is typed as number
|
|
33
36
|
* ```
|
|
34
37
|
*/
|
|
35
|
-
export declare const createQueryManager: <T extends QueryItem, F = {}>(options: QueryManagerOptions<T, F>) => QueryManager<T, F>;
|
|
38
|
+
export declare const createQueryManager: <T extends QueryItem, F = {}, M extends ListResponseMeta = ListResponseMeta>(options: QueryManagerOptions<T, F, M>) => QueryManager<T, F, M>;
|
|
36
39
|
//# sourceMappingURL=createQueryManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQueryManager.d.ts","sourceRoot":"","sources":["../../src/factors/createQueryManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"createQueryManager.d.ts","sourceRoot":"","sources":["../../src/factors/createQueryManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAAE,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,0BAEnJ,CAAA"}
|
|
@@ -3,23 +3,14 @@ import { QueryManager } from '../lib';
|
|
|
3
3
|
* Factory function to create a new QueryManager instance
|
|
4
4
|
* @template T - The query item type that extends QueryItem
|
|
5
5
|
* @template F - The filter type used for list queries
|
|
6
|
+
* @template M - Optional metadata shape returned alongside list items (e.g. `{ count: number }`). Defaults to `Record<string, unknown>`.
|
|
6
7
|
* @param options - Configuration options for the query manager
|
|
7
8
|
* @returns New QueryManager instance
|
|
8
9
|
*
|
|
9
10
|
* @example
|
|
10
11
|
* ```typescript
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* email: string
|
|
14
|
-
* status: 'active' | 'inactive'
|
|
15
|
-
* }
|
|
16
|
-
*
|
|
17
|
-
* interface UserFilters {
|
|
18
|
-
* status?: 'active' | 'inactive'
|
|
19
|
-
* search?: string
|
|
20
|
-
* }
|
|
21
|
-
*
|
|
22
|
-
* const userQueryManager = createQueryManager<User, UserFilters>({
|
|
12
|
+
* // Without list metadata (backward compatible)
|
|
13
|
+
* const userManager = createQueryManager<User, UserFilters>({
|
|
23
14
|
* name: 'users',
|
|
24
15
|
* queryClient,
|
|
25
16
|
* listFn: (limit, offset, filters) => api.getUsers({ limit, offset, ...filters }),
|
|
@@ -29,6 +20,18 @@ import { QueryManager } from '../lib';
|
|
|
29
20
|
* deleteFn: (id) => api.deleteUser(id),
|
|
30
21
|
* listLimit: 20
|
|
31
22
|
* })
|
|
23
|
+
*
|
|
24
|
+
* // With list metadata
|
|
25
|
+
* const postManager = createQueryManager<Post, PostFilters, { count: number }>({
|
|
26
|
+
* name: 'posts',
|
|
27
|
+
* queryClient,
|
|
28
|
+
* listFn: async (limit, offset, filters) => {
|
|
29
|
+
* const { data } = await api.get('/posts/', { limit, offset, ...filters })
|
|
30
|
+
* return { listItems: data.results, count: data.count }
|
|
31
|
+
* },
|
|
32
|
+
* })
|
|
33
|
+
* // In a component: const { items, meta } = postManager.useList({ filters })
|
|
34
|
+
* // meta?.count is typed as number
|
|
32
35
|
* ```
|
|
33
36
|
*/
|
|
34
37
|
export const createQueryManager = (options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQueryManager.js","sourceRoot":"","sources":["../../src/factors/createQueryManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAGrC
|
|
1
|
+
{"version":3,"file":"createQueryManager.js","sourceRoot":"","sources":["../../src/factors/createQueryManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAGrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAA6E,OAAqC,EAAE,EAAE;IACtJ,OAAO,IAAI,YAAY,CAAU,OAAO,CAAC,CAAA;AAC3C,CAAC,CAAA"}
|
package/dist/lib/Mutations.js
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
1
|
import deepEqual from 'fast-deep-equal';
|
|
13
2
|
import { TypeGuards } from '@codeleap/types';
|
|
14
3
|
/**
|
|
@@ -17,6 +6,9 @@ import { TypeGuards } from '@codeleap/types';
|
|
|
17
6
|
* @template F - The filter type used for list queries
|
|
18
7
|
*/
|
|
19
8
|
export class Mutations {
|
|
9
|
+
queryKeys;
|
|
10
|
+
queryClient;
|
|
11
|
+
queryName;
|
|
20
12
|
/**
|
|
21
13
|
* Creates a new Mutations instance
|
|
22
14
|
* @param queryKeys - The QueryKeys instance for managing query keys
|
|
@@ -64,14 +56,14 @@ export class Mutations {
|
|
|
64
56
|
? updatedPages[last] = [...updatedPages[last], newItem]
|
|
65
57
|
: updatedPages.push([newItem]);
|
|
66
58
|
}
|
|
67
|
-
this.queryClient.setQueryData(queryKey,
|
|
59
|
+
this.queryClient.setQueryData(queryKey, { ...currentData, pages: updatedPages });
|
|
68
60
|
}
|
|
69
61
|
addItem(newItem, position = 'start', listFilters) {
|
|
70
|
-
const isMultiQueryKeys = Array.isArray(position) &&
|
|
62
|
+
const isMultiQueryKeys = Array.isArray(position) && position?.length >= 1;
|
|
71
63
|
if (isMultiQueryKeys) {
|
|
72
64
|
for (const [queryKey, itemPosition] of position) {
|
|
73
65
|
const currentData = this.queryClient.getQueryData(queryKey);
|
|
74
|
-
const updatedPages = [...(
|
|
66
|
+
const updatedPages = [...(currentData?.pages || [])];
|
|
75
67
|
if (itemPosition.pageIndex < updatedPages.length) {
|
|
76
68
|
const targetPage = [...updatedPages[itemPosition.pageIndex]];
|
|
77
69
|
const insertIndex = Math.min(itemPosition.itemIndex, targetPage.length);
|
|
@@ -87,7 +79,7 @@ export class Mutations {
|
|
|
87
79
|
updatedPages.push([newItem]);
|
|
88
80
|
}
|
|
89
81
|
}
|
|
90
|
-
this.queryClient.setQueryData(queryKey,
|
|
82
|
+
this.queryClient.setQueryData(queryKey, { ...currentData, pages: updatedPages });
|
|
91
83
|
}
|
|
92
84
|
return;
|
|
93
85
|
}
|
|
@@ -117,19 +109,18 @@ export class Mutations {
|
|
|
117
109
|
* ```
|
|
118
110
|
*/
|
|
119
111
|
removeItem(itemId, listFilters) {
|
|
120
|
-
var _a, _b, _c;
|
|
121
112
|
this.queryKeys.removeRetrieveQueryData(itemId);
|
|
122
113
|
const listQueries = TypeGuards.isNil(listFilters) ? this.queryKeys.getAllListQueries() : [this.queryKeys.getListQuery(listFilters)];
|
|
123
114
|
const removedItemMap = [];
|
|
124
115
|
for (const query of listQueries) {
|
|
125
|
-
const currentData =
|
|
126
|
-
const queryKey = query
|
|
116
|
+
const currentData = query.state?.data;
|
|
117
|
+
const queryKey = query?.queryKey;
|
|
127
118
|
if (!currentData)
|
|
128
119
|
continue;
|
|
129
120
|
let removedItemPosition = null;
|
|
130
|
-
for (let pageIndex = 0; pageIndex <
|
|
121
|
+
for (let pageIndex = 0; pageIndex < currentData?.pages?.length; pageIndex++) {
|
|
131
122
|
const page = currentData.pages[pageIndex];
|
|
132
|
-
const itemIndex = page.findIndex((item) =>
|
|
123
|
+
const itemIndex = page.findIndex((item) => item?.id === itemId);
|
|
133
124
|
if (itemIndex !== -1) {
|
|
134
125
|
removedItemPosition = {
|
|
135
126
|
pageIndex,
|
|
@@ -141,11 +132,15 @@ export class Mutations {
|
|
|
141
132
|
if (!removedItemPosition)
|
|
142
133
|
continue;
|
|
143
134
|
removedItemMap.push([queryKey, removedItemPosition]);
|
|
144
|
-
const updatedPages = currentData.pages.map(page => page.filter((item) =>
|
|
145
|
-
const filteredPages = updatedPages.filter(page =>
|
|
146
|
-
const finalPages =
|
|
147
|
-
const newPageParams =
|
|
148
|
-
const newData =
|
|
135
|
+
const updatedPages = currentData.pages.map(page => page.filter((item) => item?.id !== itemId));
|
|
136
|
+
const filteredPages = updatedPages.filter(page => page?.length > 0);
|
|
137
|
+
const finalPages = filteredPages?.length > 0 ? filteredPages : [[]];
|
|
138
|
+
const newPageParams = currentData?.pageParams?.slice(0, finalPages?.length);
|
|
139
|
+
const newData = {
|
|
140
|
+
...currentData,
|
|
141
|
+
pages: finalPages,
|
|
142
|
+
pageParams: newPageParams
|
|
143
|
+
};
|
|
149
144
|
this.queryClient.setQueryData(queryKey, newData);
|
|
150
145
|
}
|
|
151
146
|
return removedItemMap;
|
|
@@ -174,29 +169,28 @@ export class Mutations {
|
|
|
174
169
|
* ```
|
|
175
170
|
*/
|
|
176
171
|
updateItems(data) {
|
|
177
|
-
var _a, _b, _c, _d;
|
|
178
172
|
const listQueries = this.queryKeys.getAllListQueries();
|
|
179
173
|
const dataArray = Array.isArray(data) ? data : [data];
|
|
180
174
|
for (const item of dataArray) {
|
|
181
|
-
const { tempId
|
|
175
|
+
const { tempId, ...updateData } = item;
|
|
182
176
|
const cachedQueryKey = this.queryKeys.keys.retrieve(updateData.id);
|
|
183
177
|
const cachedItemData = this.queryKeys.getRetrieveData(updateData.id);
|
|
184
178
|
if (!deepEqual(cachedItemData, updateData)) {
|
|
185
179
|
this.queryClient.setQueryData(cachedQueryKey, updateData);
|
|
186
180
|
}
|
|
187
181
|
}
|
|
188
|
-
const dataMap = Object.fromEntries(dataArray.map(item =>
|
|
182
|
+
const dataMap = Object.fromEntries(dataArray.map(item => [item?.tempId ?? item?.id, item]));
|
|
189
183
|
for (const query of listQueries) {
|
|
190
|
-
const oldData =
|
|
191
|
-
const queryKey = query
|
|
192
|
-
if (!
|
|
184
|
+
const oldData = query.state?.data;
|
|
185
|
+
const queryKey = query?.queryKey;
|
|
186
|
+
if (!oldData?.pages || !Array.isArray(oldData?.pages))
|
|
193
187
|
continue;
|
|
194
188
|
let hasChanges = false;
|
|
195
|
-
const updatedPages = (
|
|
189
|
+
const updatedPages = (oldData?.pages ?? [])?.filter(Array.isArray)?.map(page => {
|
|
196
190
|
let pageChanged = false;
|
|
197
191
|
const updatedPage = page.map((item) => {
|
|
198
|
-
if (dataMap
|
|
199
|
-
const
|
|
192
|
+
if (dataMap?.[item?.id]) {
|
|
193
|
+
const { tempId, ...updateData } = dataMap?.[item?.id];
|
|
200
194
|
const needsUpdate = !deepEqual(item, updateData);
|
|
201
195
|
if (needsUpdate) {
|
|
202
196
|
pageChanged = true;
|
|
@@ -209,7 +203,10 @@ export class Mutations {
|
|
|
209
203
|
return pageChanged ? updatedPage : page;
|
|
210
204
|
});
|
|
211
205
|
if (hasChanges) {
|
|
212
|
-
this.queryClient.setQueryData(queryKey,
|
|
206
|
+
this.queryClient.setQueryData(queryKey, {
|
|
207
|
+
...oldData,
|
|
208
|
+
pages: updatedPages
|
|
209
|
+
});
|
|
213
210
|
}
|
|
214
211
|
}
|
|
215
212
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mutations.js","sourceRoot":"","sources":["../../src/lib/Mutations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Mutations.js","sourceRoot":"","sources":["../../src/lib/Mutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,3 @@
|
|
|
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
1
|
import { waitFor } from '@codeleap/utils';
|
|
11
2
|
import { Query, hashKey, matchQuery } from '@tanstack/react-query';
|
|
12
3
|
/**
|
|
@@ -14,6 +5,7 @@ import { Query, hashKey, matchQuery } from '@tanstack/react-query';
|
|
|
14
5
|
* Pass an instance of this class wherever `QueryClient | QueryClientEnhanced` is accepted to unlock the enhanced API.
|
|
15
6
|
*/
|
|
16
7
|
export class QueryClientEnhanced {
|
|
8
|
+
client;
|
|
17
9
|
constructor(client) {
|
|
18
10
|
this.client = client;
|
|
19
11
|
}
|
|
@@ -39,35 +31,33 @@ export class QueryClientEnhanced {
|
|
|
39
31
|
* Repeatedly refetches a query on a fixed `interval` until the `callback` returns `{ stop: true }`.
|
|
40
32
|
* Rejects immediately if the query key is not present in the cache when called.
|
|
41
33
|
*/
|
|
42
|
-
pollQuery(key, options) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
yield waitFor(interval);
|
|
59
|
-
}
|
|
60
|
-
this.client.refetchQueries({
|
|
61
|
-
exact: true,
|
|
62
|
-
queryKey: key,
|
|
63
|
-
});
|
|
64
|
-
const newQuery = yield this.waitForRefresh(key);
|
|
65
|
-
const newResult = yield callback(newQuery, count, result === null || result === void 0 ? void 0 : result.data);
|
|
66
|
-
count += 1;
|
|
67
|
-
result = newResult;
|
|
34
|
+
async pollQuery(key, options) {
|
|
35
|
+
const { interval, callback, initialData, leading = false } = options;
|
|
36
|
+
const cache = this.client.getQueryCache();
|
|
37
|
+
const initialQuery = cache.find({ exact: true, queryKey: key });
|
|
38
|
+
if (!initialQuery) {
|
|
39
|
+
return Promise.reject(new Error('Query not found'));
|
|
40
|
+
}
|
|
41
|
+
let count = 0;
|
|
42
|
+
let result = {
|
|
43
|
+
stop: false,
|
|
44
|
+
data: initialData,
|
|
45
|
+
};
|
|
46
|
+
while (!result?.stop) {
|
|
47
|
+
const shouldWait = count > 0 || leading;
|
|
48
|
+
if (shouldWait) {
|
|
49
|
+
await waitFor(interval);
|
|
68
50
|
}
|
|
69
|
-
|
|
70
|
-
|
|
51
|
+
this.client.refetchQueries({
|
|
52
|
+
exact: true,
|
|
53
|
+
queryKey: key,
|
|
54
|
+
});
|
|
55
|
+
const newQuery = await this.waitForRefresh(key);
|
|
56
|
+
const newResult = await callback(newQuery, count, result?.data);
|
|
57
|
+
count += 1;
|
|
58
|
+
result = newResult;
|
|
59
|
+
}
|
|
60
|
+
return result?.data;
|
|
71
61
|
}
|
|
72
62
|
/**
|
|
73
63
|
* Returns an `EnhancedQuery<T>` Proxy for `key`.
|
|
@@ -110,17 +100,20 @@ export class QueryClientEnhanced {
|
|
|
110
100
|
};
|
|
111
101
|
case 'ensureData':
|
|
112
102
|
return (options) => {
|
|
113
|
-
return client.client.ensureQueryData(
|
|
103
|
+
return client.client.ensureQueryData({
|
|
104
|
+
queryKey: key,
|
|
105
|
+
...options
|
|
106
|
+
});
|
|
114
107
|
};
|
|
115
108
|
case 'refresh':
|
|
116
|
-
return () =>
|
|
109
|
+
return async () => {
|
|
117
110
|
client.client.refetchQueries({
|
|
118
111
|
exact: true,
|
|
119
112
|
queryKey: key,
|
|
120
113
|
});
|
|
121
|
-
const newQuery =
|
|
114
|
+
const newQuery = await client.waitForRefresh(key);
|
|
122
115
|
return newQuery.state.data;
|
|
123
|
-
}
|
|
116
|
+
};
|
|
124
117
|
case 'poll':
|
|
125
118
|
return (options) => {
|
|
126
119
|
return client.pollQuery(key, options);
|
|
@@ -157,7 +150,7 @@ export class QueryClientEnhanced {
|
|
|
157
150
|
else {
|
|
158
151
|
reject();
|
|
159
152
|
}
|
|
160
|
-
removeListener
|
|
153
|
+
removeListener?.();
|
|
161
154
|
}
|
|
162
155
|
});
|
|
163
156
|
});
|
|
@@ -170,7 +163,12 @@ export class QueryClientEnhanced {
|
|
|
170
163
|
if (options) {
|
|
171
164
|
this.client.setQueryDefaults(k, options);
|
|
172
165
|
const cache = this.client.getQueryCache();
|
|
173
|
-
const q = new Query(
|
|
166
|
+
const q = new Query({
|
|
167
|
+
client: this.client,
|
|
168
|
+
queryKey: k,
|
|
169
|
+
queryHash: hashKey(k),
|
|
170
|
+
...options,
|
|
171
|
+
});
|
|
174
172
|
cache.add(q);
|
|
175
173
|
}
|
|
176
174
|
return this.queryProxy(k);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/QueryClientEnhanced/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/QueryClientEnhanced/index.ts"],"names":[],"mappings":"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"}
|