@navios/react-query 0.7.1 → 1.0.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 (117) hide show
  1. package/CHANGELOG.md +171 -1
  2. package/README.md +152 -4
  3. package/coverage/base.css +224 -0
  4. package/coverage/block-navigation.js +87 -0
  5. package/coverage/client/declare-client.mts.html +1264 -0
  6. package/coverage/client/index.html +116 -0
  7. package/coverage/clover.xml +160 -0
  8. package/coverage/coverage-final.json +8 -0
  9. package/coverage/favicon.png +0 -0
  10. package/coverage/index.html +146 -0
  11. package/coverage/mutation/index.html +131 -0
  12. package/coverage/mutation/key-creator.mts.html +277 -0
  13. package/coverage/mutation/make-hook.mts.html +952 -0
  14. package/coverage/prettify.css +1 -0
  15. package/coverage/prettify.js +2 -0
  16. package/coverage/query/index.html +161 -0
  17. package/coverage/query/key-creator.mts.html +415 -0
  18. package/coverage/query/make-infinite-options.mts.html +601 -0
  19. package/coverage/query/make-options.mts.html +838 -0
  20. package/coverage/query/prefetch.mts.html +1063 -0
  21. package/coverage/sort-arrow-sprite.png +0 -0
  22. package/coverage/sorter.js +210 -0
  23. package/dist/src/__tests__/errorSchema.spec.d.mts +2 -0
  24. package/dist/src/__tests__/errorSchema.spec.d.mts.map +1 -0
  25. package/dist/src/__tests__/prefetch.spec.d.mts +2 -0
  26. package/dist/src/__tests__/prefetch.spec.d.mts.map +1 -0
  27. package/dist/src/client/__type-tests__/from-endpoint.spec-d.d.mts +2 -0
  28. package/dist/src/client/__type-tests__/from-endpoint.spec-d.d.mts.map +1 -0
  29. package/dist/src/client/__type-tests__/infinite-query.spec-d.d.mts +2 -0
  30. package/dist/src/client/__type-tests__/infinite-query.spec-d.d.mts.map +1 -0
  31. package/dist/src/client/__type-tests__/multipart-mutation.spec-d.d.mts +2 -0
  32. package/dist/src/client/__type-tests__/multipart-mutation.spec-d.d.mts.map +1 -0
  33. package/dist/src/client/__type-tests__/mutation.spec-d.d.mts +2 -0
  34. package/dist/src/client/__type-tests__/mutation.spec-d.d.mts.map +1 -0
  35. package/dist/src/client/__type-tests__/query.spec-d.d.mts +2 -0
  36. package/dist/src/client/__type-tests__/query.spec-d.d.mts.map +1 -0
  37. package/dist/src/client/declare-client.d.mts +15 -8
  38. package/dist/src/client/declare-client.d.mts.map +1 -1
  39. package/dist/src/client/types/from-endpoint.d.mts +130 -0
  40. package/dist/src/client/types/from-endpoint.d.mts.map +1 -0
  41. package/dist/src/client/types/helpers.d.mts +74 -0
  42. package/dist/src/client/types/helpers.d.mts.map +1 -0
  43. package/dist/src/client/types/index.d.mts +21 -0
  44. package/dist/src/client/types/index.d.mts.map +1 -0
  45. package/dist/src/client/types/infinite-query.d.mts +61 -0
  46. package/dist/src/client/types/infinite-query.d.mts.map +1 -0
  47. package/dist/src/client/types/multipart-mutation.d.mts +98 -0
  48. package/dist/src/client/types/multipart-mutation.d.mts.map +1 -0
  49. package/dist/src/client/types/mutation.d.mts +75 -0
  50. package/dist/src/client/types/mutation.d.mts.map +1 -0
  51. package/dist/src/client/types/query.d.mts +65 -0
  52. package/dist/src/client/types/query.d.mts.map +1 -0
  53. package/dist/src/client/types.d.mts +1 -608
  54. package/dist/src/client/types.d.mts.map +1 -1
  55. package/dist/src/common/types.d.mts +40 -3
  56. package/dist/src/common/types.d.mts.map +1 -1
  57. package/dist/src/mutation/index.d.mts +1 -0
  58. package/dist/src/mutation/index.d.mts.map +1 -1
  59. package/dist/src/mutation/make-hook.d.mts +42 -16
  60. package/dist/src/mutation/make-hook.d.mts.map +1 -1
  61. package/dist/src/mutation/optimistic.d.mts +172 -0
  62. package/dist/src/mutation/optimistic.d.mts.map +1 -0
  63. package/dist/src/mutation/types.d.mts +41 -20
  64. package/dist/src/mutation/types.d.mts.map +1 -1
  65. package/dist/src/query/index.d.mts +1 -0
  66. package/dist/src/query/index.d.mts.map +1 -1
  67. package/dist/src/query/key-creator.d.mts.map +1 -1
  68. package/dist/src/query/make-infinite-options.d.mts +3 -2
  69. package/dist/src/query/make-infinite-options.d.mts.map +1 -1
  70. package/dist/src/query/make-options.d.mts +42 -12
  71. package/dist/src/query/make-options.d.mts.map +1 -1
  72. package/dist/src/query/prefetch.d.mts +245 -0
  73. package/dist/src/query/prefetch.d.mts.map +1 -0
  74. package/dist/src/query/types.d.mts +25 -18
  75. package/dist/src/query/types.d.mts.map +1 -1
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/lib/index.cjs +451 -28
  78. package/lib/index.cjs.map +1 -1
  79. package/lib/index.d.cts +1019 -600
  80. package/lib/index.d.cts.map +1 -1
  81. package/lib/index.d.mts +1016 -597
  82. package/lib/index.d.mts.map +1 -1
  83. package/lib/index.mjs +447 -29
  84. package/lib/index.mjs.map +1 -1
  85. package/package.json +3 -3
  86. package/src/__tests__/declare-client.spec.mts +229 -2
  87. package/src/__tests__/errorSchema.spec.mts +391 -0
  88. package/src/__tests__/make-mutation.spec.mts +6 -5
  89. package/src/__tests__/makeDataTag.spec.mts +2 -1
  90. package/src/__tests__/makeQueryOptions.spec.mts +2 -1
  91. package/src/__tests__/prefetch.spec.mts +310 -0
  92. package/src/client/__type-tests__/from-endpoint.spec-d.mts +550 -0
  93. package/src/client/__type-tests__/infinite-query.spec-d.mts +648 -0
  94. package/src/client/__type-tests__/multipart-mutation.spec-d.mts +725 -0
  95. package/src/client/__type-tests__/mutation.spec-d.mts +757 -0
  96. package/src/client/__type-tests__/query.spec-d.mts +701 -0
  97. package/src/client/declare-client.mts +59 -34
  98. package/src/client/types/from-endpoint.mts +344 -0
  99. package/src/client/types/helpers.mts +140 -0
  100. package/src/client/types/index.mts +26 -0
  101. package/src/client/types/infinite-query.mts +133 -0
  102. package/src/client/types/multipart-mutation.mts +264 -0
  103. package/src/client/types/mutation.mts +176 -0
  104. package/src/client/types/query.mts +132 -0
  105. package/src/client/types.mts +1 -1935
  106. package/src/common/types.mts +67 -3
  107. package/src/mutation/index.mts +1 -0
  108. package/src/mutation/make-hook.mts +171 -63
  109. package/src/mutation/optimistic.mts +300 -0
  110. package/src/mutation/types.mts +87 -30
  111. package/src/query/index.mts +1 -0
  112. package/src/query/key-creator.mts +24 -13
  113. package/src/query/make-infinite-options.mts +53 -10
  114. package/src/query/make-options.mts +184 -43
  115. package/src/query/prefetch.mts +326 -0
  116. package/src/query/types.mts +56 -17
  117. package/src/client/__type-tests__/client-instance.spec-d.mts +0 -852
@@ -14,10 +14,11 @@ import type { InfiniteQueryOptions, QueryArgs } from './types.mjs';
14
14
  */
15
15
  export declare function makeInfiniteQueryOptions<Config extends AnyEndpointConfig, Options extends InfiniteQueryOptions<Config>, BaseQuery extends Omit<UseInfiniteQueryOptions<ReturnType<Options['processResponse']>, Error, any>, 'queryKey' | 'queryFn' | 'getNextPageParam' | 'initialPageParam' | 'placeholderData' | 'throwOnError'>>(endpoint: AbstractEndpoint<Config>, options: Options, baseQuery?: BaseQuery): {
16
16
  (params: QueryArgs<Config["url"], Config["querySchema"]>): Options["processResponse"] extends (...args: any[]) => infer Result ? UseSuspenseInfiniteQueryOptions<Result, Error, BaseQuery["select"] extends (...args: any[]) => infer T ? T : InfiniteData<Result>> : never;
17
+ /** The query key creator for this infinite query endpoint */
17
18
  queryKey: import("./types.mjs").QueryKeyCreatorResult<Config["querySchema"], Config["url"], Options["processResponse"] extends (...args: any[]) => infer Result ? Result : never, true, import("@navios/builder").UrlHasParams<Config["url"]>>;
18
19
  use(params: QueryArgs<Config["url"], Config["querySchema"]>): import("@tanstack/react-query").UseInfiniteQueryResult<BaseQuery["select"] extends (...args: any[]) => infer T ? T : InfiniteData<unknown, unknown>, Error>;
19
20
  useSuspense(params: QueryArgs<Config["url"], Config["querySchema"]>): import("@tanstack/react-query").UseSuspenseInfiniteQueryResult<BaseQuery["select"] extends (...args: any[]) => infer T ? T : InfiniteData<unknown, unknown>, Error>;
20
- invalidate(queryClient: QueryClient, params: QueryArgs<Config["url"], Config["querySchema"]>): Promise<void>;
21
- invalidateAll(queryClient: QueryClient, params: QueryArgs<Config["url"], Config["querySchema"]>): Promise<void>;
21
+ invalidate(queryClient: QueryClient, params: QueryArgs<Config["url"], Config["querySchema"]>): () => Promise<void>;
22
+ invalidateAll(queryClient: QueryClient, params: QueryArgs<Config["url"], Config["querySchema"]>): () => Promise<void>;
22
23
  };
23
24
  //# sourceMappingURL=make-infinite-options.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"make-infinite-options.d.mts","sourceRoot":"","sources":["../../../src/query/make-infinite-options.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,+BAA+B,EAChC,MAAM,uBAAuB,CAAA;AAS9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIlE;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,SAAS,iBAAiB,EAChC,OAAO,SAAS,oBAAoB,CAAC,MAAM,CAAC,EAC5C,SAAS,SAAS,IAAI,CACpB,uBAAuB,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EACzE,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,GACjB,cAAc,CACjB,EAED,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,SAAS,GAAE,SAA2B;aAO5B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,GACtD,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,MAAM,GAClE,+BAA+B,CAC7B,MAAM,EACN,KAAK,EACL,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GACnD,CAAC,GACD,YAAY,CAAC,MAAM,CAAC,CACzB,GACD,KAAK;;gBAmCU,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,gGAvCtB,GAAG,EAAE,KAAK,MAAM,CAAC;wBA2ClC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,wGA3C9B,GAAG,EAAE,KAAK,MAAM,CAAC;4BAgD9C,WAAW,UAChB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;+BAQ1C,WAAW,UAChB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;EAS1D"}
1
+ {"version":3,"file":"make-infinite-options.d.mts","sourceRoot":"","sources":["../../../src/query/make-infinite-options.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,+BAA+B,EAChC,MAAM,uBAAuB,CAAA;AAS9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIlE;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,SAAS,iBAAiB,EAChC,OAAO,SAAS,oBAAoB,CAAC,MAAM,CAAC,EAC5C,SAAS,SAAS,IAAI,CACpB,uBAAuB,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EACzE,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,GACjB,cAAc,CACjB,EAED,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,SAAS,GAAE,SAA2B;aAO5B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,GACtD,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,MAAM,GAClE,+BAA+B,CAC7B,MAAM,EACN,KAAK,EACL,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GACnD,CAAC,GACD,YAAY,CAAC,MAAM,CAAC,CACzB,GACD,KAAK;IAsCT,6DAA6D;;gBAU1C,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,gGApDtB,GAAG,EAAE,KAAK,MAAM,CAAC;wBAiEnD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,wGAjEb,GAAG,EAAE,KAAK,MAAM,CAAC;4BA+E9C,WAAW,UAChB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;+BAkB1C,WAAW,UAChB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;EAW1D"}
@@ -1,24 +1,54 @@
1
- import type { AbstractEndpoint, AnyEndpointConfig } from '@navios/builder';
2
- import type { DataTag, QueryClient, UseQueryOptions, UseSuspenseQueryOptions } from '@tanstack/react-query';
1
+ import type { EndpointHandler, EndpointOptions, InferEndpointReturn, Simplify } from '@navios/builder';
2
+ import type { DataTag, UseQueryOptions, UseSuspenseQueryOptions } from '@tanstack/react-query';
3
+ import type { ZodObject, ZodType } from 'zod/v4';
3
4
  import type { Split } from '../common/types.mjs';
4
- import type { QueryArgs, QueryParams } from './types.mjs';
5
+ import type { QueryArgs, QueryHelpers, QueryResult } from './types.mjs';
6
+ /**
7
+ * Options for makeQueryOptions.
8
+ */
9
+ export interface MakeQueryOptionsParams<Options extends EndpointOptions, UseDiscriminator extends boolean = false, Result = QueryResult<Options, UseDiscriminator>> {
10
+ keyPrefix?: string[];
11
+ keySuffix?: string[];
12
+ onFail?: (err: unknown) => void;
13
+ processResponse: (data: InferEndpointReturn<Options, UseDiscriminator>) => Result;
14
+ }
5
15
  /**
6
16
  * Creates query options for a given endpoint.
7
17
  *
8
18
  * Returns a function that generates TanStack Query options when called with params.
9
19
  * The returned function also has helper methods attached (use, useSuspense, invalidate, etc.)
10
20
  *
11
- * @param endpoint - The navios endpoint to create query options for
21
+ * Uses const generics pattern to automatically infer types from the endpoint configuration.
22
+ *
23
+ * @param endpoint - The navios endpoint handler (from builder's declareEndpoint)
12
24
  * @param options - Query configuration including processResponse
13
25
  * @param baseQuery - Optional base query options to merge
14
26
  * @returns A function that generates query options with attached helpers
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const getUser = api.declareEndpoint({
31
+ * method: 'GET',
32
+ * url: '/users/$userId',
33
+ * responseSchema: userSchema,
34
+ * })
35
+ *
36
+ * const queryOptions = makeQueryOptions(getUser, {
37
+ * processResponse: (data) => data,
38
+ * })
39
+ *
40
+ * const { data } = queryOptions.useSuspense({ urlParams: { userId: '123' } })
41
+ * ```
15
42
  */
16
- export declare function makeQueryOptions<Config extends AnyEndpointConfig, Options extends QueryParams<Config>, BaseQuery extends Omit<UseQueryOptions<ReturnType<Options['processResponse']>, Error, any>, 'queryKey' | 'queryFn' | 'getNextPageParam' | 'initialPageParam' | 'enabled' | 'throwOnError' | 'placeholderData'>>(endpoint: AbstractEndpoint<Config>, options: Options, baseQuery?: BaseQuery): {
17
- (params: QueryArgs<Config["url"], Config["querySchema"]>): Options["processResponse"] extends (...args: any[]) => infer Result ? UseSuspenseQueryOptions<Result, Error, BaseQuery["select"] extends (...args: any[]) => infer T ? T : Result, DataTag<Split<Config["url"], "/">, Result, Error>> : never;
18
- queryKey: import("./types.mjs").QueryKeyCreatorResult<Config["querySchema"], Config["url"], Options["processResponse"] extends (...args: any[]) => infer Result ? Result : never, false, import("@navios/builder").UrlHasParams<Config["url"]>>;
19
- use(params: QueryArgs<Config["url"], Config["querySchema"]>): import("@tanstack/react-query").UseQueryResult<import("@tanstack/react-query").NoInfer<BaseQuery["select"] extends (...args: any[]) => infer T ? T : unknown>, Error>;
20
- useSuspense(params: QueryArgs<Config["url"], Config["querySchema"]>): import("@tanstack/react-query").UseSuspenseQueryResult<BaseQuery["select"] extends (...args: any[]) => infer T ? T : unknown, Error>;
21
- invalidate(queryClient: QueryClient, params: QueryArgs<Config["url"], Config["querySchema"]>): Promise<void>;
22
- invalidateAll(queryClient: QueryClient, params: QueryArgs<Config["url"], Config["querySchema"]>): Promise<void>;
23
- };
43
+ export declare function makeQueryOptions<const Options extends EndpointOptions, UseDiscriminator extends boolean = false, Result = QueryResult<Options, UseDiscriminator>, BaseQuery extends Omit<UseQueryOptions<Result, Error, any>, 'queryKey' | 'queryFn' | 'getNextPageParam' | 'initialPageParam' | 'enabled' | 'throwOnError' | 'placeholderData'> = Omit<UseQueryOptions<Result, Error, any>, 'queryKey' | 'queryFn' | 'getNextPageParam' | 'initialPageParam' | 'enabled' | 'throwOnError' | 'placeholderData'>>(endpoint: EndpointHandler<Options, UseDiscriminator>, options: MakeQueryOptionsParams<Options, UseDiscriminator, Result>, baseQuery?: BaseQuery): ((params: Simplify<QueryArgs<Options['url'], Options extends {
44
+ querySchema: infer Q extends ZodObject;
45
+ } ? Q : undefined, Options extends {
46
+ requestSchema: infer R extends ZodType;
47
+ } ? R : undefined>>) => UseSuspenseQueryOptions<Result, Error, BaseQuery extends {
48
+ select: (...args: any[]) => infer T;
49
+ } ? T : Result, DataTag<Split<Options['url'], '/'>, Result, Error>>) & QueryHelpers<Options['url'], Options extends {
50
+ querySchema: infer Q extends ZodObject;
51
+ } ? Q : undefined, Result, false, Options extends {
52
+ requestSchema: infer R extends ZodType;
53
+ } ? R : undefined>;
24
54
  //# sourceMappingURL=make-options.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"make-options.d.mts","sourceRoot":"","sources":["../../../src/query/make-options.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,eAAe,EACf,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAI9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIzD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,SAAS,iBAAiB,EAChC,OAAO,SAAS,WAAW,CAAC,MAAM,CAAC,EACnC,SAAS,SAAS,IAAI,CACpB,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EACjE,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,kBAAkB,GAClB,SAAS,GACT,cAAc,GACd,iBAAiB,CACpB,EAED,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,SAAS,GAAE,SAA2B;aAO5B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,GACtD,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,MAAM,GAClE,uBAAuB,CACrB,MAAM,EACN,KAAK,EACL,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EACpE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAClD,GACD,KAAK;;gBAwBa,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,gIA3BzB,GAAG,EAAE,KAAK,MAAM,CAAC;wBA+B/B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,gGA/BjC,GAAG,EAAE,KAAK,MAAM,CAAC;4BAoC9C,WAAW,UAChB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;+BAQ1C,WAAW,UAChB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;EAS1D"}
1
+ {"version":3,"file":"make-options.d.mts","sourceRoot":"","sources":["../../../src/query/make-options.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACT,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAIhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIvE;;GAEG;AACH,MAAM,WAAW,sBAAsB,CACrC,OAAO,SAAS,eAAe,EAC/B,gBAAgB,SAAS,OAAO,GAAG,KAAK,EACxC,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAE/C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/B,eAAe,EAAE,CACf,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,KACjD,MAAM,CAAA;CACZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,CAAC,OAAO,SAAS,eAAe,EACrC,gBAAgB,SAAS,OAAO,GAAG,KAAK,EACxC,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAC/C,SAAS,SAAS,IAAI,CACpB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,EACjC,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,kBAAkB,GAClB,SAAS,GACT,cAAc,GACd,iBAAiB,CACpB,GAAG,IAAI,CACN,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,EACjC,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,kBAAkB,GAClB,SAAS,GACT,cAAc,GACd,iBAAiB,CACpB,EAED,QAAQ,EAAE,eAAe,CAAC,OAAO,EAAE,gBAAgB,CAAC,EACpD,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAClE,SAAS,CAAC,EAAE,SAAS,GACpB,CAAC,CACF,MAAM,EAAE,QAAQ,CACd,SAAS,CACP,OAAO,CAAC,KAAK,CAAC,EACd,OAAO,SAAS;IAAE,WAAW,EAAE,MAAM,CAAC,SAAS,SAAS,CAAA;CAAE,GACtD,CAAC,GACD,SAAS,EACb,OAAO,SAAS;IAAE,aAAa,EAAE,MAAM,CAAC,SAAS,OAAO,CAAA;CAAE,GAAG,CAAC,GAAG,SAAS,CAC3E,CACF,KACE,uBAAuB,CAC1B,MAAM,EACN,KAAK,EACL,SAAS,SAAS;IAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,MAAM,EACtE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CACnD,CAAC,GACA,YAAY,CACV,OAAO,CAAC,KAAK,CAAC,EACd,OAAO,SAAS;IAAE,WAAW,EAAE,MAAM,CAAC,SAAS,SAAS,CAAA;CAAE,GAAG,CAAC,GAAG,SAAS,EAC1E,MAAM,EACN,KAAK,EACL,OAAO,SAAS;IAAE,aAAa,EAAE,MAAM,CAAC,SAAS,OAAO,CAAA;CAAE,GAAG,CAAC,GAAG,SAAS,CAC3E,CAwIF"}
@@ -0,0 +1,245 @@
1
+ import type { FetchQueryOptions, QueryClient, QueryKey } from '@tanstack/react-query';
2
+ /**
3
+ * Type for a query options creator function that returns TanStack Query options.
4
+ *
5
+ * This matches the return type of `client.query()` from the navios react-query client.
6
+ */
7
+ export type QueryOptionsCreator<TParams, TData, TError = Error> = (params: TParams) => FetchQueryOptions<TData, TError, TData, QueryKey>;
8
+ /**
9
+ * Helper utilities for prefetching queries.
10
+ *
11
+ * @template TParams - The query parameters type
12
+ * @template TData - The query data type
13
+ * @template TError - The error type (defaults to Error)
14
+ */
15
+ export interface PrefetchHelper<TParams, TData, TError = Error> {
16
+ /**
17
+ * Prefetch query data on the server.
18
+ *
19
+ * Use this in server components or getServerSideProps to
20
+ * prefetch data before rendering.
21
+ *
22
+ * @param queryClient - The QueryClient instance
23
+ * @param params - Parameters for the query
24
+ * @returns Promise that resolves when prefetch is complete
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * // In a Next.js Server Component
29
+ * const queryClient = new QueryClient()
30
+ * await prefetch.prefetch(queryClient, { urlParams: { userId: '1' } })
31
+ * return (
32
+ * <HydrationBoundary state={dehydrate(queryClient)}>
33
+ * <UserProfile userId="1" />
34
+ * </HydrationBoundary>
35
+ * )
36
+ * ```
37
+ */
38
+ prefetch: (queryClient: QueryClient, params: TParams) => Promise<void>;
39
+ /**
40
+ * Ensure query data exists in cache. Fetches only if not cached.
41
+ *
42
+ * Returns the cached or fetched data.
43
+ *
44
+ * @param queryClient - The QueryClient instance
45
+ * @param params - Parameters for the query
46
+ * @returns Promise that resolves to the query data
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * // Ensure data exists before rendering
51
+ * const userData = await prefetch.ensureData(queryClient, {
52
+ * urlParams: { userId: '1' },
53
+ * })
54
+ * console.log('User:', userData.name)
55
+ * ```
56
+ */
57
+ ensureData: (queryClient: QueryClient, params: TParams) => Promise<TData>;
58
+ /**
59
+ * Get the query options for a given set of parameters.
60
+ *
61
+ * Useful for advanced use cases or when you need to
62
+ * customize the prefetch behavior.
63
+ *
64
+ * @param params - Parameters for the query
65
+ * @returns The query options object
66
+ *
67
+ * @example
68
+ * ```tsx
69
+ * const options = prefetch.getQueryOptions({ urlParams: { userId: '1' } })
70
+ * await queryClient.prefetchQuery({
71
+ * ...options,
72
+ * staleTime: 60000, // Override stale time for prefetch
73
+ * })
74
+ * ```
75
+ */
76
+ getQueryOptions: (params: TParams) => FetchQueryOptions<TData, TError, TData, QueryKey>;
77
+ /**
78
+ * Prefetch multiple queries in parallel.
79
+ *
80
+ * @param queryClient - The QueryClient instance
81
+ * @param paramsList - Array of parameters for multiple queries
82
+ * @returns Promise that resolves when all prefetches complete
83
+ *
84
+ * @example
85
+ * ```tsx
86
+ * // Prefetch multiple users in parallel
87
+ * await prefetch.prefetchMany(queryClient, [
88
+ * { urlParams: { userId: '1' } },
89
+ * { urlParams: { userId: '2' } },
90
+ * { urlParams: { userId: '3' } },
91
+ * ])
92
+ * ```
93
+ */
94
+ prefetchMany: (queryClient: QueryClient, paramsList: TParams[]) => Promise<void>;
95
+ }
96
+ /**
97
+ * Creates a type-safe prefetch helper for SSR/RSC.
98
+ *
99
+ * This utility wraps a query options creator to provide convenient
100
+ * methods for server-side data fetching and hydration.
101
+ *
102
+ * @param queryOptionsCreator - A function that creates query options (from client.query())
103
+ * @returns A prefetch helper object with prefetch, ensureData, and getQueryOptions methods
104
+ *
105
+ * @example
106
+ * ```tsx
107
+ * // 1. Create your query
108
+ * const getUserQuery = client.query({
109
+ * method: 'GET',
110
+ * url: '/users/$userId',
111
+ * responseSchema: userSchema,
112
+ * })
113
+ *
114
+ * // 2. Create prefetch helper
115
+ * const userPrefetch = createPrefetchHelper(getUserQuery)
116
+ *
117
+ * // 3. Use in server component
118
+ * async function UserPage({ userId }: { userId: string }) {
119
+ * const queryClient = new QueryClient()
120
+ *
121
+ * await userPrefetch.prefetch(queryClient, {
122
+ * urlParams: { userId },
123
+ * })
124
+ *
125
+ * return (
126
+ * <HydrationBoundary state={dehydrate(queryClient)}>
127
+ * <UserProfile userId={userId} />
128
+ * </HydrationBoundary>
129
+ * )
130
+ * }
131
+ * ```
132
+ *
133
+ * @example
134
+ * ```tsx
135
+ * // With Next.js App Router
136
+ * import { dehydrate, HydrationBoundary, QueryClient } from '@tanstack/react-query'
137
+ * import { createPrefetchHelper } from '@navios/react-query'
138
+ *
139
+ * // Define queries
140
+ * const getPostsQuery = client.query({
141
+ * method: 'GET',
142
+ * url: '/posts',
143
+ * querySchema: z.object({ page: z.number() }),
144
+ * responseSchema: postsSchema,
145
+ * })
146
+ *
147
+ * const postsPrefetch = createPrefetchHelper(getPostsQuery)
148
+ *
149
+ * // Server Component
150
+ * export default async function PostsPage() {
151
+ * const queryClient = new QueryClient()
152
+ *
153
+ * await postsPrefetch.prefetch(queryClient, {
154
+ * params: { page: 1 },
155
+ * })
156
+ *
157
+ * return (
158
+ * <HydrationBoundary state={dehydrate(queryClient)}>
159
+ * <PostsList />
160
+ * </HydrationBoundary>
161
+ * )
162
+ * }
163
+ * ```
164
+ */
165
+ export declare function createPrefetchHelper<TParams, TData, TError = Error>(queryOptionsCreator: QueryOptionsCreator<TParams, TData, TError>): PrefetchHelper<TParams, TData, TError>;
166
+ /**
167
+ * Creates multiple prefetch helpers from a record of query options creators.
168
+ *
169
+ * Useful when you have multiple queries that need to be prefetched together.
170
+ *
171
+ * @param queries - Record of query options creator functions
172
+ * @returns Record of prefetch helpers with the same keys
173
+ *
174
+ * @example
175
+ * ```tsx
176
+ * // Define all your queries
177
+ * const queries = {
178
+ * user: client.query({
179
+ * method: 'GET',
180
+ * url: '/users/$userId',
181
+ * responseSchema: userSchema,
182
+ * }),
183
+ * posts: client.query({
184
+ * method: 'GET',
185
+ * url: '/users/$userId/posts',
186
+ * responseSchema: postsSchema,
187
+ * }),
188
+ * }
189
+ *
190
+ * // Create all prefetch helpers at once
191
+ * const prefetchers = createPrefetchHelpers(queries)
192
+ *
193
+ * // Use in server component
194
+ * async function UserPage({ userId }: { userId: string }) {
195
+ * const queryClient = new QueryClient()
196
+ *
197
+ * await Promise.all([
198
+ * prefetchers.user.prefetch(queryClient, { urlParams: { userId } }),
199
+ * prefetchers.posts.prefetch(queryClient, { urlParams: { userId } }),
200
+ * ])
201
+ *
202
+ * return (
203
+ * <HydrationBoundary state={dehydrate(queryClient)}>
204
+ * <UserProfileWithPosts userId={userId} />
205
+ * </HydrationBoundary>
206
+ * )
207
+ * }
208
+ * ```
209
+ */
210
+ export declare function createPrefetchHelpers<T extends Record<string, QueryOptionsCreator<any, any, any>>>(queries: T): {
211
+ [K in keyof T]: T[K] extends QueryOptionsCreator<infer TParams, infer TData, infer TError> ? PrefetchHelper<TParams, TData, TError> : never;
212
+ };
213
+ /**
214
+ * Prefetch multiple queries from different query creators in parallel.
215
+ *
216
+ * @param queryClient - The QueryClient instance
217
+ * @param prefetches - Array of { helper, params } objects
218
+ * @returns Promise that resolves when all prefetches complete
219
+ *
220
+ * @example
221
+ * ```tsx
222
+ * const userPrefetch = createPrefetchHelper(getUserQuery)
223
+ * const postsPrefetch = createPrefetchHelper(getPostsQuery)
224
+ *
225
+ * async function DashboardPage({ userId }: { userId: string }) {
226
+ * const queryClient = new QueryClient()
227
+ *
228
+ * await prefetchAll(queryClient, [
229
+ * { helper: userPrefetch, params: { urlParams: { userId } } },
230
+ * { helper: postsPrefetch, params: { urlParams: { userId }, params: { limit: 10 } } },
231
+ * ])
232
+ *
233
+ * return (
234
+ * <HydrationBoundary state={dehydrate(queryClient)}>
235
+ * <Dashboard userId={userId} />
236
+ * </HydrationBoundary>
237
+ * )
238
+ * }
239
+ * ```
240
+ */
241
+ export declare function prefetchAll(queryClient: QueryClient, prefetches: Array<{
242
+ helper: PrefetchHelper<any, any, any>;
243
+ params: unknown;
244
+ }>): Promise<void>;
245
+ //# sourceMappingURL=prefetch.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefetch.d.mts","sourceRoot":"","sources":["../../../src/query/prefetch.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACT,MAAM,uBAAuB,CAAA;AAE9B;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,CAChE,MAAM,EAAE,OAAO,KACZ,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK;IAC5D;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtE;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAA;IAEzE;;;;;;;;;;;;;;;;;OAiBG;IACH,eAAe,EAAE,CACf,MAAM,EAAE,OAAO,KACZ,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAEtD;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,EAAE,CACZ,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,OAAO,EAAE,KAClB,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EACjE,mBAAmB,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAC/D,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAyBxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAE5D,OAAO,EAAE,CAAC,GACT;KACA,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,mBAAmB,CAC9C,MAAM,OAAO,EACb,MAAM,KAAK,EACX,MAAM,MAAM,CACb,GACG,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GACtC,KAAK;CACV,CAiBA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACrC,MAAM,EAAE,OAAO,CAAA;CAChB,CAAC,GACD,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -1,17 +1,18 @@
1
- import type { AnyEndpointConfig, BaseEndpointConfig, HttpMethod, UrlHasParams, UrlParams, Util_FlatObject } from '@navios/builder';
1
+ import type { AnyEndpointConfig, BaseEndpointConfig, EndpointOptions, HttpMethod, InferEndpointReturn, RequestArgs, Simplify, UrlHasParams, UrlParams } from '@navios/builder';
2
2
  import type { DataTag, InfiniteData, QueryClient, UseQueryResult, UseSuspenseQueryResult } from '@tanstack/react-query';
3
3
  import type { z, ZodObject, ZodType } from 'zod/v4';
4
- import type { Split } from '../common/types.mjs';
4
+ import type { ComputeResponseInput, Split } from '../common/types.mjs';
5
+ /**
6
+ * Helper type to extract the result type from processResponse.
7
+ */
8
+ export type QueryResult<Options extends EndpointOptions, UseDiscriminator extends boolean = false> = Options extends {
9
+ processResponse: (data: any) => infer Result;
10
+ } ? Result : InferEndpointReturn<Options, UseDiscriminator>;
5
11
  /**
6
12
  * Arguments for query functions based on URL params and query schema.
13
+ * Uses RequestArgs from builder for consistency.
7
14
  */
8
- export type QueryArgs<Url extends string = string, QuerySchema = ZodObject, RequestSchema = undefined> = (UrlHasParams<Url> extends true ? {
9
- urlParams: UrlParams<Url>;
10
- } : {}) & (QuerySchema extends ZodObject ? {
11
- params: z.input<QuerySchema>;
12
- } : {}) & (RequestSchema extends ZodType ? {
13
- data: z.input<RequestSchema>;
14
- } : {});
15
+ export type QueryArgs<Url extends string = string, QuerySchema extends ZodObject | undefined = undefined, RequestSchema extends ZodType | undefined = undefined> = RequestArgs<Url, QuerySchema, RequestSchema>;
15
16
  /**
16
17
  * Arguments containing only URL params (for invalidateAll operations).
17
18
  */
@@ -20,12 +21,15 @@ export type QueryUrlParamsArgs<Url extends string = string> = UrlHasParams<Url>
20
21
  } : {} | undefined;
21
22
  /**
22
23
  * Base parameters for query configuration.
24
+ *
25
+ * @template UseDiscriminator - When `true`, errors are returned as union types in processResponse.
26
+ * When `false` (default), errors are thrown and not included in the response type.
23
27
  */
24
- export type QueryParams<Config extends AnyEndpointConfig, Res = any> = {
28
+ export type QueryParams<Config extends AnyEndpointConfig, Res = any, UseDiscriminator extends boolean = false> = {
25
29
  keyPrefix?: string[];
26
30
  keySuffix?: string[];
27
31
  onFail?: (err: unknown) => void;
28
- processResponse: (data: z.output<Config['responseSchema']>) => Res;
32
+ processResponse: (data: ComputeResponseInput<UseDiscriminator, Config['responseSchema'], Config['errorSchema']>) => Res;
29
33
  };
30
34
  /**
31
35
  * Result type from the query key creator function.
@@ -51,25 +55,28 @@ export type QueryKeyCreatorResult<QuerySchema = undefined, Url extends string =
51
55
  */
52
56
  export type QueryHelpers<Url extends string, QuerySchema extends ZodObject | undefined = undefined, Result = undefined, IsInfinite extends boolean = false, RequestSchema extends ZodType | undefined = undefined> = {
53
57
  queryKey: QueryKeyCreatorResult<QuerySchema, Url, Result, IsInfinite>;
54
- use: (params: Util_FlatObject<QueryArgs<Url, QuerySchema, RequestSchema>>) => UseQueryResult<Result, Error>;
55
- useSuspense: (params: Util_FlatObject<QueryArgs<Url, QuerySchema, RequestSchema>>) => UseSuspenseQueryResult<Result, Error>;
56
- invalidate: (queryClient: QueryClient, params: Util_FlatObject<QueryArgs<Url, QuerySchema, RequestSchema>>) => () => Promise<void>;
57
- invalidateAll: (queryClient: QueryClient, params: Util_FlatObject<QueryUrlParamsArgs<Url>>) => () => Promise<void>;
58
+ use: (params: Simplify<QueryArgs<Url, QuerySchema, RequestSchema>>) => UseQueryResult<Result, Error>;
59
+ useSuspense: (params: Simplify<QueryArgs<Url, QuerySchema, RequestSchema>>) => UseSuspenseQueryResult<Result, Error>;
60
+ invalidate: (queryClient: QueryClient, params: Simplify<QueryArgs<Url, QuerySchema, RequestSchema>>) => () => Promise<void>;
61
+ invalidateAll: (queryClient: QueryClient, params: Simplify<QueryUrlParamsArgs<Url>>) => () => Promise<void>;
58
62
  };
59
63
  /**
60
64
  * Options for infinite query configuration.
65
+ *
66
+ * @template UseDiscriminator - When `true`, errors are returned as union types in processResponse.
67
+ * When `false` (default), errors are thrown and not included in the response type.
61
68
  */
62
- export type InfiniteQueryOptions<Config extends BaseEndpointConfig<HttpMethod, string, ZodObject>, Res = any> = {
69
+ export type InfiniteQueryOptions<Config extends BaseEndpointConfig<HttpMethod, string, ZodObject>, Res = any, UseDiscriminator extends boolean = false> = {
63
70
  keyPrefix?: string[];
64
71
  keySuffix?: string[];
65
- processResponse: (data: z.infer<Config['responseSchema']>) => Res;
72
+ processResponse: (data: ComputeResponseInput<UseDiscriminator, Config['responseSchema'], Config['errorSchema']>) => Res;
66
73
  onFail?: (err: unknown) => void;
67
74
  getNextPageParam: (lastPage: Res, allPages: Res[], lastPageParam: z.infer<Config['querySchema']> | undefined, allPageParams: z.infer<Config['querySchema']>[] | undefined) => z.input<Config['querySchema']> | z.infer<Config['querySchema']> | undefined;
68
75
  getPreviousPageParam?: (firstPage: Res, allPages: Res[], lastPageParam: z.infer<Config['querySchema']> | undefined, allPageParams: z.infer<Config['querySchema']>[] | undefined) => z.input<Config['querySchema']>;
69
76
  initialPageParam?: z.input<Config['querySchema']> | z.infer<Config['querySchema']>;
70
77
  };
71
78
  /** @deprecated Use QueryArgs instead */
72
- export type ClientQueryArgs<Url extends string = string, QuerySchema = ZodObject, RequestSchema = undefined> = QueryArgs<Url, QuerySchema, RequestSchema>;
79
+ export type ClientQueryArgs<Url extends string = string, QuerySchema extends ZodObject = ZodObject, RequestSchema extends ZodType | undefined = undefined> = QueryArgs<Url, QuerySchema, RequestSchema>;
73
80
  /** @deprecated Use QueryUrlParamsArgs instead */
74
81
  export type ClientQueryUrlParamsArgs<Url extends string = string> = QueryUrlParamsArgs<Url>;
75
82
  /** @deprecated Use QueryParams instead */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/query/types.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,SAAS,EACT,eAAe,EAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,cAAc,EACd,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD;;GAEG;AACH,MAAM,MAAM,SAAS,CACnB,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,WAAW,GAAG,SAAS,EACvB,aAAa,GAAG,SAAS,IACvB,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG;IAAE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,EAAE,CAAC,GACvE,CAAC,WAAW,SAAS,SAAS,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;CAAE,GAAG,EAAE,CAAC,GACvE,CAAC,aAAa,SAAS,OAAO,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;CAAE,GAAG,EAAE,CAAC,CAAA;AAEzE;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,IACxD,YAAY,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG;IAAE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,EAAE,GAAG,SAAS,CAAA;AAEjF;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,iBAAiB,EAAE,GAAG,GAAG,GAAG,IAAI;IACrE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/B,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,GAAG,CAAA;CACnE,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAC/B,WAAW,GAAG,SAAS,EACvB,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,MAAM,GAAG,OAAO,EAChB,UAAU,SAAS,OAAO,GAAG,KAAK,EAClC,SAAS,SAAS,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,IACrD;IACF,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACzB,OAAO,EAAE,CACP,MAAM,EAAE,CAAC,SAAS,SAAS,IAAI,GAAG;QAAE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;KAAE,GAAG,EAAE,CAAC,GACnE,CAAC,WAAW,SAAS,SAAS,GAAG;QAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;KAAE,GAAG,EAAE,CAAC,KACtE,OAAO,CACV,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACf,UAAU,SAAS,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,EACvD,KAAK,CACN,CAAA;IACD,SAAS,EAAE,CACT,MAAM,EAAE,SAAS,SAAS,IAAI,GAAG;QAAE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;KAAE,GAAG,EAAE,KAChE,OAAO,CACV,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACf,UAAU,SAAS,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,EACvD,KAAK,CACN,CAAA;IACD,SAAS,EAAE,CACT,MAAM,EAAE,CAAC,SAAS,SAAS,IAAI,GAAG;QAAE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;KAAE,GAAG,EAAE,CAAC,GACnE,CAAC,WAAW,SAAS,SAAS,GAAG;QAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;KAAE,GAAG,EAAE,CAAC,KACtE,MAAM,CAAA;CACZ,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CACtB,GAAG,SAAS,MAAM,EAClB,WAAW,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,EACrD,MAAM,GAAG,SAAS,EAClB,UAAU,SAAS,OAAO,GAAG,KAAK,EAClC,aAAa,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,IACnD;IACF,QAAQ,EAAE,qBAAqB,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;IACrE,GAAG,EAAE,CACH,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,KAChE,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAClC,WAAW,EAAE,CACX,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,KAChE,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC1C,UAAU,EAAE,CACV,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,KAChE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,aAAa,EAAE,CACb,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,eAAe,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAC7C,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAC9B,MAAM,SAAS,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAChE,GAAG,GAAG,GAAG,IACP;IACF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,GAAG,CAAA;IACjE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/B,gBAAgB,EAAE,CAChB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,EAAE,EACf,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS,EACzD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,SAAS,KAEzD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAC9B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAC9B,SAAS,CAAA;IACb,oBAAoB,CAAC,EAAE,CACrB,SAAS,EAAE,GAAG,EACd,QAAQ,EAAE,GAAG,EAAE,EACf,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS,EACzD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,SAAS,KACxD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IACnC,gBAAgB,CAAC,EACb,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAC9B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;CACnC,CAAA;AAGD,wCAAwC;AACxC,MAAM,MAAM,eAAe,CACzB,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,WAAW,GAAG,SAAS,EACvB,aAAa,GAAG,SAAS,IACvB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,CAAA;AAE9C,iDAAiD;AACjD,MAAM,MAAM,wBAAwB,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,IAC9D,kBAAkB,CAAC,GAAG,CAAC,CAAA;AAEzB,0CAA0C;AAC1C,MAAM,MAAM,eAAe,CACzB,MAAM,SAAS,iBAAiB,EAChC,GAAG,GAAG,OAAO,IACX,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAE5B,wCAAwC;AACxC,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,iBAAiB,IAAI,CAAC,YAAY,CACzE,MAAM,CAAC,KAAK,CAAC,CACd,SAAS,IAAI,GACV;IAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;CAAE,GACvC,EAAE,CAAC,GACL,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,SAAS,GACpC;IAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;CAAE,GAC1C,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/query/types.mts"],"names":[],"mappings":"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"}