@codeleap/query 7.0.2 → 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.
Files changed (50) hide show
  1. package/dist/factors/createQueryManager.d.ts +17 -14
  2. package/dist/factors/createQueryManager.d.ts.map +1 -1
  3. package/dist/factors/createQueryManager.js +18 -19
  4. package/dist/factors/createQueryManager.js.map +1 -1
  5. package/dist/factors/createQueryOperations.js +3 -6
  6. package/dist/factors/createQueryOperations.js.map +1 -1
  7. package/dist/factors/index.js +2 -18
  8. package/dist/factors/index.js.map +1 -1
  9. package/dist/index.js +3 -19
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/Mutations.js +39 -50
  12. package/dist/lib/Mutations.js.map +1 -1
  13. package/dist/lib/QueryClientEnhanced/index.js +45 -51
  14. package/dist/lib/QueryClientEnhanced/index.js.map +1 -1
  15. package/dist/lib/QueryClientEnhanced/types.js +1 -2
  16. package/dist/lib/QueryKeys.js +80 -91
  17. package/dist/lib/QueryKeys.js.map +1 -1
  18. package/dist/lib/QueryManager.d.ts +26 -10
  19. package/dist/lib/QueryManager.d.ts.map +1 -1
  20. package/dist/lib/QueryManager.js +173 -121
  21. package/dist/lib/QueryManager.js.map +1 -1
  22. package/dist/lib/QueryOperations/index.d.ts +2 -2
  23. package/dist/lib/QueryOperations/index.d.ts.map +1 -1
  24. package/dist/lib/QueryOperations/index.js +33 -33
  25. package/dist/lib/QueryOperations/index.js.map +1 -1
  26. package/dist/lib/QueryOperations/types.js +1 -2
  27. package/dist/lib/index.js +5 -21
  28. package/dist/lib/index.js.map +1 -1
  29. package/dist/types/core.d.ts +17 -3
  30. package/dist/types/core.d.ts.map +1 -1
  31. package/dist/types/core.js +1 -2
  32. package/dist/types/create.js +1 -2
  33. package/dist/types/delete.js +1 -2
  34. package/dist/types/index.js +7 -23
  35. package/dist/types/index.js.map +1 -1
  36. package/dist/types/list.d.ts +6 -4
  37. package/dist/types/list.d.ts.map +1 -1
  38. package/dist/types/list.js +1 -2
  39. package/dist/types/retrieve.js +1 -2
  40. package/dist/types/update.js +1 -2
  41. package/dist/types/utility.js +1 -2
  42. package/dist/utils/index.js +1 -17
  43. package/dist/utils/index.js.map +1 -1
  44. package/dist/utils/misc.js +3 -7
  45. package/dist/utils/misc.js.map +1 -1
  46. package/package.json +5 -5
  47. package/src/factors/createQueryManager.ts +19 -16
  48. package/src/lib/QueryManager.ts +55 -15
  49. package/src/types/core.ts +22 -3
  50. package/src/types/list.ts +7 -5
@@ -1,17 +1,5 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.QueryOperations = void 0;
13
- const react_query_1 = require("@tanstack/react-query");
14
- const QueryClientEnhanced_1 = require("../QueryClientEnhanced");
1
+ import { useMutation, useQuery } from '@tanstack/react-query';
2
+ import { QueryClientEnhanced } from '../QueryClientEnhanced';
15
3
  /**
16
4
  * Builder class for creating type-safe query and mutation operations
17
5
  * @template TMutations - Record type containing all registered mutation functions
@@ -28,7 +16,10 @@ const QueryClientEnhanced_1 = require("../QueryClientEnhanced");
28
16
  * - Type-safe React hooks generation
29
17
  * - Immutable operation registration (returns new instances)
30
18
  */
31
- class QueryOperations {
19
+ export class QueryOperations {
20
+ _options;
21
+ _mutations;
22
+ _queries;
32
23
  /**
33
24
  * Creates a new QueryOperations instance
34
25
  * @param _options - Configuration options including QueryClient
@@ -48,7 +39,7 @@ class QueryOperations {
48
39
  return this._mutations;
49
40
  }
50
41
  get queryClient() {
51
- if (this._options.queryClient instanceof QueryClientEnhanced_1.QueryClientEnhanced) {
42
+ if (this._options.queryClient instanceof QueryClientEnhanced) {
52
43
  return this._options.queryClient.client;
53
44
  }
54
45
  return this._options.queryClient;
@@ -81,7 +72,7 @@ class QueryOperations {
81
72
  * ```
82
73
  */
83
74
  mutation(name, fn) {
84
- return new QueryOperations(this._options, Object.assign(Object.assign({}, this._mutations), { [name]: fn }), this._queries);
75
+ return new QueryOperations(this._options, { ...this._mutations, [name]: fn }, this._queries);
85
76
  }
86
77
  /**
87
78
  * Registers a new query function
@@ -104,7 +95,7 @@ class QueryOperations {
104
95
  * ```
105
96
  */
106
97
  query(name, fn) {
107
- return new QueryOperations(this._options, this._mutations, Object.assign(Object.assign({}, this._queries), { [name]: fn }));
98
+ return new QueryOperations(this._options, this._mutations, { ...this._queries, [name]: fn });
108
99
  }
109
100
  /**
110
101
  * React hook for executing mutations with full type safety
@@ -133,12 +124,16 @@ class QueryOperations {
133
124
  */
134
125
  useMutation(mutationKey, options) {
135
126
  const mutationFn = this._mutations[mutationKey];
136
- return (0, react_query_1.useMutation)(Object.assign({ mutationKey: this.getMutationKey(mutationKey), mutationFn: (data) => __awaiter(this, void 0, void 0, function* () {
127
+ return useMutation({
128
+ mutationKey: this.getMutationKey(mutationKey),
129
+ mutationFn: async (data) => {
137
130
  if (!mutationFn) {
138
131
  throw new Error(`Mutation "${String(mutationKey)}" not found`);
139
132
  }
140
133
  return mutationFn(data);
141
- }) }, options));
134
+ },
135
+ ...options
136
+ });
142
137
  }
143
138
  /**
144
139
  * React hook for executing queries with full type safety
@@ -171,12 +166,16 @@ class QueryOperations {
171
166
  */
172
167
  useQuery(queryKey, params, options) {
173
168
  const queryFn = this._queries[queryKey];
174
- return (0, react_query_1.useQuery)(Object.assign({ queryKey: this.getQueryKey(queryKey, params), queryFn: () => __awaiter(this, void 0, void 0, function* () {
169
+ return useQuery({
170
+ queryKey: this.getQueryKey(queryKey, params),
171
+ queryFn: async () => {
175
172
  if (!queryFn) {
176
173
  throw new Error(`Query "${String(queryKey)}" not found`);
177
174
  }
178
175
  return queryFn(params);
179
- }) }, options));
176
+ },
177
+ ...options
178
+ });
180
179
  }
181
180
  /**
182
181
  * Generates a properly typed query key for React Query
@@ -242,7 +241,11 @@ class QueryOperations {
242
241
  prefetchQuery(queryKey, params, options) {
243
242
  const prefetchQueryKey = this.getQueryKey(queryKey, params);
244
243
  const queryFn = this._queries[queryKey];
245
- return this.queryClient.prefetchQuery(Object.assign({ queryKey: prefetchQueryKey, queryFn: queryFn }, options));
244
+ return this.queryClient.prefetchQuery({
245
+ queryKey: prefetchQueryKey,
246
+ queryFn: queryFn,
247
+ ...options,
248
+ });
246
249
  }
247
250
  /**
248
251
  * Retrieves cached query data if it exists
@@ -273,16 +276,13 @@ class QueryOperations {
273
276
  * }
274
277
  * ```
275
278
  */
276
- getQueryData(queryKey, params, options) {
277
- return __awaiter(this, void 0, void 0, function* () {
278
- const prefetchQueryKey = this.getQueryKey(queryKey, params);
279
- const cachedData = this.queryClient.getQueryData(prefetchQueryKey);
280
- if (!cachedData) {
281
- yield this.prefetchQuery(queryKey, params, options);
282
- }
283
- return this.queryClient.getQueryData(prefetchQueryKey);
284
- });
279
+ async getQueryData(queryKey, params, options) {
280
+ const prefetchQueryKey = this.getQueryKey(queryKey, params);
281
+ const cachedData = this.queryClient.getQueryData(prefetchQueryKey);
282
+ if (!cachedData) {
283
+ await this.prefetchQuery(queryKey, params, options);
284
+ }
285
+ return this.queryClient.getQueryData(prefetchQueryKey);
285
286
  }
286
287
  }
287
- exports.QueryOperations = QueryOperations;
288
288
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/QueryOperations/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/QueryOperations/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=types.js.map
package/dist/lib/index.js CHANGED
@@ -1,22 +1,6 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./QueryClientEnhanced"), exports);
18
- __exportStar(require("./QueryKeys"), exports);
19
- __exportStar(require("./Mutations"), exports);
20
- __exportStar(require("./QueryManager"), exports);
21
- __exportStar(require("./QueryOperations"), exports);
1
+ export * from './QueryClientEnhanced';
2
+ export * from './QueryKeys';
3
+ export * from './Mutations';
4
+ export * from './QueryManager';
5
+ export * from './QueryOperations';
22
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAqC;AACrC,8CAA2B;AAC3B,8CAA2B;AAC3B,iDAA8B;AAC9B,oDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA"}
@@ -8,11 +8,24 @@ export type QueryItem = {
8
8
  export type PageParam = number;
9
9
  /** Raw page payload returned by `listFn` — a flat array of items for one page. */
10
10
  export type ListPaginationResponse<T extends QueryItem> = T[];
11
- /** Constructor options for `QueryManager`. All `*Fn` fields are optional; omitting one disables the corresponding operation and its generated hooks. */
12
- export type QueryManagerOptions<T extends QueryItem, F> = {
11
+ /** Extra metadata from a paginated API response (everything except the items array). */
12
+ export type ListResponseMeta = Record<string, unknown>;
13
+ /** Envelope returned by `listFn` when it includes metadata beyond the items array. `listItems` holds the page items; all other fields are treated as metadata. */
14
+ export type ListPaginationEnvelope<T extends QueryItem, M extends ListResponseMeta = ListResponseMeta> = {
15
+ listItems: T[];
16
+ } & M;
17
+ /** What `listFn` is allowed to return: a flat array (backward compat) or an envelope with metadata. */
18
+ export type ListFnResponse<T extends QueryItem, M extends ListResponseMeta = ListResponseMeta> = T[] | ListPaginationEnvelope<T, M>;
19
+ /**
20
+ * Constructor options for `QueryManager`. All `*Fn` fields are optional; omitting one disables the corresponding operation and its generated hooks.
21
+ * @template T - The query item type that extends QueryItem
22
+ * @template F - The filter type used for list queries
23
+ * @template M - Optional metadata shape returned alongside list items (e.g. `{ count: number }`). Defaults to `Record<string, unknown>`.
24
+ */
25
+ export type QueryManagerOptions<T extends QueryItem, F, M extends ListResponseMeta = ListResponseMeta> = {
13
26
  name: string;
14
27
  queryClient: ReturnType<typeof useQueryClient> | QueryClientEnhanced;
15
- listFn?: (limit: number, offset: number, filters: F) => Promise<ListPaginationResponse<T>>;
28
+ listFn?: (limit: number, offset: number, filters: F) => Promise<ListFnResponse<T, M>>;
16
29
  /** Page size sent to `listFn`. Defaults to 10 when omitted. */
17
30
  listLimit?: number;
18
31
  /** Side-effect hook called on every render with the current infinite-list query result. Useful for syncing list state into external stores. */
@@ -20,6 +33,7 @@ export type QueryManagerOptions<T extends QueryItem, F> = {
20
33
  pageParams: number[];
21
34
  pages: ListPaginationResponse<T>[];
22
35
  allItems: T[];
36
+ meta: M | null;
23
37
  }, Error>) => void;
24
38
  retrieveFn?: (id: T['id']) => Promise<T>;
25
39
  createFn?: (data: Partial<T>) => Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAE5C,qEAAqE;AACrE,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,CAAA;AAED,8EAA8E;AAC9E,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B,kFAAkF;AAClF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,EAAE,CAAA;AAE7D,wJAAwJ;AACxJ,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,IAAI;IACxD,IAAI,EAAE,MAAM,CAAA;IAEZ,WAAW,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,GAAG,mBAAmB,CAAA;IAEpE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1F,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,+IAA+I;IAC/I,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC;QACjD,UAAU,EAAE,MAAM,EAAE,CAAA;QACpB,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAA;QAClC,QAAQ,EAAE,CAAC,EAAE,CAAA;KACd,EAAE,KAAK,CAAC,KAAK,IAAI,CAAA;IAElB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAExC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAE3C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAE3C,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;CAC7C,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAE5C,qEAAqE;AACrE,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,CAAA;AAED,8EAA8E;AAC9E,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B,kFAAkF;AAClF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,EAAE,CAAA;AAE7D,wFAAwF;AACxF,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEtD,kKAAkK;AAClK,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;IACvG,SAAS,EAAE,CAAC,EAAE,CAAA;CACf,GAAG,CAAC,CAAA;AAEL,uGAAuG;AACvG,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IACzF,CAAC,EAAE,GACH,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;IACvG,IAAI,EAAE,MAAM,CAAA;IAEZ,WAAW,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,GAAG,mBAAmB,CAAA;IAEpE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAErF,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,+IAA+I;IAC/I,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC;QACjD,UAAU,EAAE,MAAM,EAAE,CAAA;QACpB,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAA;QAClC,QAAQ,EAAE,CAAC,EAAE,CAAA;QACb,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;KACf,EAAE,KAAK,CAAC,KAAK,IAAI,CAAA;IAElB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAExC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAE3C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAE3C,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;CAC7C,CAAA"}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=core.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=create.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=delete.js.map
@@ -1,24 +1,8 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./core"), exports);
18
- __exportStar(require("./list"), exports);
19
- __exportStar(require("./utility"), exports);
20
- __exportStar(require("./retrieve"), exports);
21
- __exportStar(require("./create"), exports);
22
- __exportStar(require("./update"), exports);
23
- __exportStar(require("./delete"), exports);
1
+ export * from './core';
2
+ export * from './list';
3
+ export * from './utility';
4
+ export * from './retrieve';
5
+ export * from './create';
6
+ export * from './update';
7
+ export * from './delete';
24
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB;AACtB,yCAAsB;AACtB,4CAAyB;AACzB,6CAA0B;AAC1B,2CAAwB;AACxB,2CAAwB;AACxB,2CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA"}
@@ -1,17 +1,19 @@
1
1
  import { QueryKey, UseInfiniteQueryOptions } from '@tanstack/react-query';
2
- import { ListPaginationResponse, PageParam, QueryItem } from './core';
2
+ import { ListPaginationResponse, ListResponseMeta, PageParam, QueryItem } from './core';
3
3
  /**
4
4
  * Normalised shape of the infinite-query cache entry.
5
5
  * `allItems` is a convenience flat-merge of every page's items — use it for rendering; use `pages` when you need per-page boundaries.
6
+ * `meta` holds extra data from the most recent `listFn` response (e.g. total count), or `null` when `listFn` returns a plain array.
6
7
  */
7
- export type ListSelector<T extends QueryItem> = {
8
+ export type ListSelector<T extends QueryItem, M extends ListResponseMeta = ListResponseMeta> = {
8
9
  pageParams: PageParam[];
9
10
  pages: ListPaginationResponse<T>[];
10
11
  allItems: T[];
12
+ meta: M | null;
11
13
  };
12
- type InfiniteQueryOptions<T extends QueryItem> = UseInfiniteQueryOptions<ListPaginationResponse<T>, Error, ListSelector<T>, QueryKey, PageParam>;
14
+ type InfiniteQueryOptions<T extends QueryItem, M extends ListResponseMeta = ListResponseMeta> = UseInfiniteQueryOptions<ListPaginationResponse<T>, Error, ListSelector<T, M>, QueryKey, PageParam>;
13
15
  /** Options accepted by the generated `useList` hook. Extends React Query's infinite-query options; `limit` and `filters` are forwarded to `listFn`. */
14
- export type ListQueryOptions<T extends QueryItem, F> = Partial<InfiniteQueryOptions<T>> & {
16
+ export type ListQueryOptions<T extends QueryItem, F, M extends ListResponseMeta = ListResponseMeta> = Partial<InfiniteQueryOptions<T, M>> & {
15
17
  limit?: number;
16
18
  filters?: F;
17
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/types/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAErE;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI;IAC9C,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAA;IAClC,QAAQ,EAAE,CAAC,EAAE,CAAA;CACd,CAAA;AAED,KAAK,oBAAoB,CAAC,CAAC,SAAS,SAAS,IAAI,uBAAuB,CACtE,sBAAsB,CAAC,CAAC,CAAC,EACzB,KAAK,EACL,YAAY,CAAC,CAAC,CAAC,EACf,QAAQ,EACR,SAAS,CACV,CAAA;AAED,uJAAuJ;AACvJ,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG;IACxF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,CAAC,CAAA;CACZ,CAAA"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/types/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAEvF;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;IAC7F,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAA;IAClC,QAAQ,EAAE,CAAC,EAAE,CAAA;IACb,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;CACf,CAAA;AAED,KAAK,oBAAoB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI,uBAAuB,CACrH,sBAAsB,CAAC,CAAC,CAAC,EACzB,KAAK,EACL,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAClB,QAAQ,EACR,SAAS,CACV,CAAA;AAED,uJAAuJ;AACvJ,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;IAC1I,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,CAAC,CAAA;CACZ,CAAA"}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=list.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=retrieve.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=update.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=utility.js.map
@@ -1,18 +1,2 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./misc"), exports);
1
+ export * from './misc';
18
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateTempId = exports.tempIdPrefix = void 0;
4
1
  function uuidV4() {
5
2
  function randomHex() {
6
3
  return Math.floor(Math.random() * 16).toString(16);
@@ -30,10 +27,9 @@ function uuidV4() {
30
27
  return uuid;
31
28
  }
32
29
  /** Prefix used on every optimistically-created item id. Check `id.startsWith(tempIdPrefix)` to distinguish placeholder items from server-assigned ids. */
33
- exports.tempIdPrefix = 'temp-id';
30
+ export const tempIdPrefix = 'temp-id';
34
31
  /** Returns a unique placeholder id for optimistic creates. The format is `temp-id-<uuidv4>` and is guaranteed never to collide with server-assigned ids. */
35
- const generateTempId = () => {
36
- return exports.tempIdPrefix + '-' + uuidV4();
32
+ export const generateTempId = () => {
33
+ return tempIdPrefix + '-' + uuidV4();
37
34
  };
38
- exports.generateTempId = generateTempId;
39
35
  //# sourceMappingURL=misc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":";;;AAAA,SAAS,MAAM;IACb,SAAS,SAAS;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,IAAI,GAAG,EAAE,CAAA;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,IAAI,GAAG,CAAA;IAEX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,IAAI,GAAG,CAAA;IAEX,IAAI,IAAI,GAAG,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IACD,IAAI,IAAI,GAAG,CAAA;IAEX,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IACD,IAAI,IAAI,GAAG,CAAA;IAEX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,0JAA0J;AAC7I,QAAA,YAAY,GAAG,SAAS,CAAA;AAErC,4JAA4J;AACrJ,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,OAAO,oBAAY,GAAG,GAAG,GAAG,MAAM,EAAE,CAAA;AACtC,CAAC,CAAA;AAFY,QAAA,cAAc,kBAE1B"}
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":"AAAA,SAAS,MAAM;IACb,SAAS,SAAS;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,IAAI,GAAG,EAAE,CAAA;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,IAAI,GAAG,CAAA;IAEX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,IAAI,GAAG,CAAA;IAEX,IAAI,IAAI,GAAG,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IACD,IAAI,IAAI,GAAG,CAAA;IAEX,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IACD,IAAI,IAAI,GAAG,CAAA;IAEX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,IAAI,SAAS,EAAE,CAAA;IACrB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,0JAA0J;AAC1J,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAA;AAErC,4JAA4J;AAC5J,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,OAAO,YAAY,GAAG,GAAG,GAAG,MAAM,EAAE,CAAA;AACtC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeleap/query",
3
- "version": "7.0.2",
3
+ "version": "7.1.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {
@@ -22,9 +22,9 @@
22
22
  "directory": "packages/query"
23
23
  },
24
24
  "devDependencies": {
25
- "@codeleap/config": "7.0.1",
26
- "@codeleap/types": "7.0.1",
27
- "@codeleap/utils": "7.0.1",
25
+ "@codeleap/config": "7.0.2",
26
+ "@codeleap/types": "7.0.2",
27
+ "@codeleap/utils": "7.0.2",
28
28
  "ts-node-dev": "1.1.8"
29
29
  },
30
30
  "scripts": {
@@ -32,7 +32,7 @@
32
32
  "typecheck": "bun tsc --noEmit -p ./tsconfig.json"
33
33
  },
34
34
  "peerDependencies": {
35
- "@codeleap/types": "7.0.1",
35
+ "@codeleap/types": "7.0.2",
36
36
  "typescript": "6.0.3",
37
37
  "@tanstack/react-query": "5.100.9"
38
38
  },
@@ -1,27 +1,18 @@
1
1
  import { QueryManager } from '../lib'
2
- import { QueryItem, QueryManagerOptions } from '../types'
2
+ import { ListResponseMeta, QueryItem, QueryManagerOptions } from '../types'
3
3
 
4
4
  /**
5
5
  * Factory function to create a new QueryManager instance
6
6
  * @template T - The query item type that extends QueryItem
7
7
  * @template F - The filter type used for list queries
8
+ * @template M - Optional metadata shape returned alongside list items (e.g. `{ count: number }`). Defaults to `Record<string, unknown>`.
8
9
  * @param options - Configuration options for the query manager
9
10
  * @returns New QueryManager instance
10
- *
11
+ *
11
12
  * @example
12
13
  * ```typescript
13
- * interface User extends QueryItem {
14
- * name: string
15
- * email: string
16
- * status: 'active' | 'inactive'
17
- * }
18
- *
19
- * interface UserFilters {
20
- * status?: 'active' | 'inactive'
21
- * search?: string
22
- * }
23
- *
24
- * const userQueryManager = createQueryManager<User, UserFilters>({
14
+ * // Without list metadata (backward compatible)
15
+ * const userManager = createQueryManager<User, UserFilters>({
25
16
  * name: 'users',
26
17
  * queryClient,
27
18
  * listFn: (limit, offset, filters) => api.getUsers({ limit, offset, ...filters }),
@@ -31,8 +22,20 @@ import { QueryItem, QueryManagerOptions } from '../types'
31
22
  * deleteFn: (id) => api.deleteUser(id),
32
23
  * listLimit: 20
33
24
  * })
25
+ *
26
+ * // With list metadata
27
+ * const postManager = createQueryManager<Post, PostFilters, { count: number }>({
28
+ * name: 'posts',
29
+ * queryClient,
30
+ * listFn: async (limit, offset, filters) => {
31
+ * const { data } = await api.get('/posts/', { limit, offset, ...filters })
32
+ * return { listItems: data.results, count: data.count }
33
+ * },
34
+ * })
35
+ * // In a component: const { items, meta } = postManager.useList({ filters })
36
+ * // meta?.count is typed as number
34
37
  * ```
35
38
  */
36
- export const createQueryManager = <T extends QueryItem, F = {}>(options: QueryManagerOptions<T, F>) => {
37
- return new QueryManager<T, F>(options)
39
+ export const createQueryManager = <T extends QueryItem, F = {}, M extends ListResponseMeta = ListResponseMeta>(options: QueryManagerOptions<T, F, M>) => {
40
+ return new QueryManager<T, F, M>(options)
38
41
  }