@openapi-qraft/react 2.10.1 → 2.10.2
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/CHANGELOG.md +7 -0
- package/dist/cjs/lib/callQueryClientFetchMethod.cjs +4 -2
- package/dist/cjs/lib/callQueryClientFetchMethod.cjs.map +1 -1
- package/dist/cjs/lib/prepareRequestFnParameters.cjs +46 -0
- package/dist/cjs/lib/prepareRequestFnParameters.cjs.map +1 -0
- package/dist/cjs/lib/useComposeUseQueryOptions.cjs +3 -4
- package/dist/cjs/lib/useComposeUseQueryOptions.cjs.map +1 -1
- package/dist/esm/lib/callQueryClientFetchMethod.js +4 -2
- package/dist/esm/lib/callQueryClientFetchMethod.js.map +1 -1
- package/dist/esm/lib/prepareRequestFnParameters.js +44 -0
- package/dist/esm/lib/prepareRequestFnParameters.js.map +1 -0
- package/dist/esm/lib/useComposeUseQueryOptions.js +3 -4
- package/dist/esm/lib/useComposeUseQueryOptions.js.map +1 -1
- package/dist/types/lib/callQueryClientFetchMethod.d.ts.map +1 -1
- package/dist/types/lib/prepareRequestFnParameters.d.ts +14 -0
- package/dist/types/lib/prepareRequestFnParameters.d.ts.map +1 -0
- package/dist/types/lib/useComposeUseQueryOptions.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/lib/callQueryClientFetchMethod.ts +9 -4
- package/src/lib/prepareRequestFnParameters.ts +70 -0
- package/src/lib/useComposeUseQueryOptions.ts +7 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @openapi-qraft/react
|
|
2
2
|
|
|
3
|
+
## 2.10.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2a4db33: Refactored parameter preparation logic for queryable write operations to correctly handle body parameters in both regular and infinite queries. The update extracts shared logic into a reusable utility and ensures consistent parameter handling across all affected query methods.
|
|
8
|
+
- @openapi-qraft/tanstack-query-react-types@2.10.2
|
|
9
|
+
|
|
3
10
|
## 2.10.1
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var composeInfiniteQueryKey = require('./composeInfiniteQueryKey.cjs');
|
|
4
4
|
var composeQueryKey = require('./composeQueryKey.cjs');
|
|
5
|
+
var prepareRequestFnParameters = require('./prepareRequestFnParameters.cjs');
|
|
5
6
|
var requestFnResponseRejecter = require('./requestFnResponseRejecter.cjs');
|
|
6
7
|
var requestFnResponseResolver = require('./requestFnResponseResolver.cjs');
|
|
7
|
-
var shelfMerge = require('./shelfMerge.cjs');
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Calls a query client fetch method with parameters and options,
|
|
@@ -21,9 +21,11 @@ var shelfMerge = require('./shelfMerge.cjs');
|
|
|
21
21
|
throw new Error('callQueryClientMethodWithQueryKey: options.queryKey and options.parameters are mutually exclusive');
|
|
22
22
|
}
|
|
23
23
|
const queryFn = queryFnOption ?? (requestFn ? function({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
24
|
+
const { parameters, body } = prepareRequestFnParameters.prepareRequestFnParameters(queryParams, pageParam, infinite);
|
|
24
25
|
return requestFn(schema, {
|
|
25
|
-
parameters:
|
|
26
|
+
parameters: parameters,
|
|
26
27
|
baseUrl,
|
|
28
|
+
body,
|
|
27
29
|
signal,
|
|
28
30
|
meta
|
|
29
31
|
}).then(requestFnResponseResolver.requestFnResponseResolver, requestFnResponseRejecter.requestFnResponseRejecter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callQueryClientFetchMethod.cjs","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/react-query';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema, RequestFn } from './requestFn.js';\nimport { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';\nimport { composeQueryKey } from './composeQueryKey.js';\nimport {
|
|
1
|
+
{"version":3,"file":"callQueryClientFetchMethod.cjs","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/react-query';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema, RequestFn } from './requestFn.js';\nimport { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';\nimport { composeQueryKey } from './composeQueryKey.js';\nimport { prepareRequestFnParameters } from './prepareRequestFnParameters.js';\nimport { requestFnResponseRejecter } from './requestFnResponseRejecter.js';\nimport { requestFnResponseResolver } from './requestFnResponseResolver.js';\n\n/**\n * Calls a query client fetch method with parameters and options,\n * and automatically composes the `QueryKey` based on the schema and parameters.\n */\nexport function callQueryClientMethodWithQueryKey<\n QFMethod extends QueryKeyMethods,\n>(\n qraftOptions: CreateAPIQueryClientOptions,\n queryFilterMethod: QFMethod,\n schema: OperationSchema,\n infinite: boolean,\n args: QueryClientMethodArgs<QFMethod>\n): ReturnType<(typeof QueryClient.prototype)[QFMethod]> {\n const {\n requestFn: requestFnOption,\n baseUrl: baseUrlOption,\n queryFn: queryFnOption,\n parameters,\n ...options\n } = args[0] ?? {};\n\n const queryClient = qraftOptions.queryClient;\n const baseUrl = baseUrlOption ?? qraftOptions.baseUrl;\n\n if (queryFnOption && requestFnOption) {\n throw new Error(\n 'callQueryClientMethodWithQueryKey: options.queryFn and options.requestFn are mutually exclusive'\n );\n }\n\n const requestFn = requestFnOption ?? qraftOptions.requestFn;\n\n if (options.queryKey && parameters) {\n throw new Error(\n 'callQueryClientMethodWithQueryKey: options.queryKey and options.parameters are mutually exclusive'\n );\n }\n\n const queryFn =\n queryFnOption ??\n (requestFn\n ? // @ts-expect-error - Too complex union to type\n function ({ queryKey: [, queryParams], signal, meta, pageParam }) {\n const { parameters, body } = prepareRequestFnParameters(\n queryParams,\n pageParam,\n infinite\n );\n\n return requestFn(schema, {\n parameters: parameters as never,\n baseUrl,\n body,\n signal,\n meta,\n }).then(requestFnResponseResolver, requestFnResponseRejecter);\n }\n : undefined);\n\n // @ts-expect-error - Too complex union to type\n return queryClient[queryFilterMethod]({\n ...options,\n queryFn,\n queryKey:\n options.queryKey ??\n (infinite\n ? composeInfiniteQueryKey(schema, parameters)\n : composeQueryKey(schema, parameters)),\n });\n}\n\ntype QueryClientMethodArgs<QMethod extends keyof QueryClientPrototype> = [\n options: Parameters<QueryClientPrototype[QMethod]>[0] & {\n parameters?: unknown;\n baseUrl?: string;\n requestFn?: RequestFn<unknown, unknown>;\n },\n queryClient: QueryClient,\n];\n\ntype QueryKeyMethods =\n | QueryKeyMethod<'fetchQuery'>\n | QueryKeyMethod<'prefetchQuery'>\n | QueryKeyMethod<'ensureQueryData'>\n | QueryKeyMethod<'fetchInfiniteQuery'>\n | QueryKeyMethod<'prefetchInfiniteQuery'>\n | QueryKeyMethod<'ensureInfiniteQueryData'>;\n\ntype QueryClientPrototype = typeof QueryClient.prototype;\n\ntype QueryKeyMethod<QFMethod extends keyof typeof QueryClient.prototype> =\n QFMethod;\n"],"names":["callQueryClientMethodWithQueryKey","qraftOptions","queryFilterMethod","schema","infinite","args","requestFn","requestFnOption","baseUrl","baseUrlOption","queryFn","queryFnOption","parameters","options","queryClient","Error","queryKey","queryParams","signal","meta","pageParam","body","prepareRequestFnParameters","then","requestFnResponseResolver","requestFnResponseRejecter","undefined","composeInfiniteQueryKey","composeQueryKey"],"mappings":";;;;;;;;AASA;;;IAIO,SAASA,iCAAAA,CAGdC,YAAyC,EACzCC,iBAA2B,EAC3BC,MAAuB,EACvBC,QAAiB,EACjBC,IAAqC,EAAA;AAErC,IAAA,MAAM,EACJC,SAAWC,EAAAA,eAAe,EAC1BC,OAASC,EAAAA,aAAa,EACtBC,OAASC,EAAAA,aAAa,EACtBC,UAAU,EACV,GAAGC,OACJ,EAAA,GAAGR,IAAI,CAAC,CAAA,CAAE,IAAI,EAAC,CAAA;IAEhB,MAAMS,WAAAA,GAAcb,aAAaa,WAAW,CAAA;IAC5C,MAAMN,OAAAA,GAAUC,aAAiBR,IAAAA,YAAAA,CAAaO,OAAO,CAAA;AAErD,IAAA,IAAIG,iBAAiBJ,eAAiB,EAAA;AACpC,QAAA,MAAM,IAAIQ,KACR,CAAA,iGAAA,CAAA,CAAA;AAEJ,KAAA;IAEA,MAAMT,SAAAA,GAAYC,eAAmBN,IAAAA,YAAAA,CAAaK,SAAS,CAAA;IAE3D,IAAIO,OAAAA,CAAQG,QAAQ,IAAIJ,UAAY,EAAA;AAClC,QAAA,MAAM,IAAIG,KACR,CAAA,mGAAA,CAAA,CAAA;AAEJ,KAAA;AAEA,IAAA,MAAML,OACJC,GAAAA,aAAAA,KACCL,SAAAA,GAEG,SAAU,EAAEU,QAAAA,EAAU,GAAGC,WAAAA,CAAY,EAAEC,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,EAAA;QAC9D,MAAM,EAAER,UAAU,EAAES,IAAI,EAAE,GAAGC,qDAAAA,CAC3BL,aACAG,SACAhB,EAAAA,QAAAA,CAAAA,CAAAA;AAGF,QAAA,OAAOE,UAAUH,MAAQ,EAAA;YACvBS,UAAYA,EAAAA,UAAAA;AACZJ,YAAAA,OAAAA;AACAa,YAAAA,IAAAA;AACAH,YAAAA,MAAAA;AACAC,YAAAA,IAAAA;SACCI,CAAAA,CAAAA,IAAI,CAACC,mDAA2BC,EAAAA,mDAAAA,CAAAA,CAAAA;AACrC,KAAA,GACAC,SAAQ,CAAA,CAAA;;IAGd,OAAOZ,WAAW,CAACZ,iBAAAA,CAAkB,CAAC;AACpC,QAAA,GAAGW,OAAO;AACVH,QAAAA,OAAAA;QACAM,QACEH,EAAAA,OAAAA,CAAQG,QAAQ,KACfZ,QAAAA,GACGuB,gDAAwBxB,MAAQS,EAAAA,UAAAA,CAAAA,GAChCgB,+BAAgBzB,CAAAA,MAAAA,EAAQS,UAAU,CAAA,CAAA;AAC1C,KAAA,CAAA,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var shelfMerge = require('./shelfMerge.cjs');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Prepares parameters and body for requestFn calls, handling infinite query logic
|
|
7
|
+
* @param queryParams - The query parameters that may contain body
|
|
8
|
+
* @param pageParam - The page parameter for infinite queries
|
|
9
|
+
* @param infinite - Whether this is for an infinite query
|
|
10
|
+
* @returns Object with prepared parameters and body
|
|
11
|
+
*/ function prepareRequestFnParameters(queryParams, pageParam, infinite) {
|
|
12
|
+
const { body, ...parameters } = queryParams;
|
|
13
|
+
if (!infinite) {
|
|
14
|
+
return {
|
|
15
|
+
parameters: parameters,
|
|
16
|
+
body: body
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
// Handle infinite query parameters
|
|
20
|
+
const processedParameters = shelfMerge.shelfMerge(2, parameters, omitBodyFromPageParam(pageParam));
|
|
21
|
+
const processedBody = mergeBodyWithPageParam(body, pageParam);
|
|
22
|
+
return {
|
|
23
|
+
parameters: processedParameters,
|
|
24
|
+
body: processedBody
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Remove body from pageParam if it exists
|
|
29
|
+
*/ function omitBodyFromPageParam(pageParam) {
|
|
30
|
+
if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {
|
|
31
|
+
const { body: _body, ...pageParameters } = pageParam;
|
|
32
|
+
return pageParameters;
|
|
33
|
+
}
|
|
34
|
+
return pageParam;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Merge body with pageParam.body if pageParam contains body
|
|
38
|
+
*/ function mergeBodyWithPageParam(body, pageParam) {
|
|
39
|
+
if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {
|
|
40
|
+
return shelfMerge.shelfMerge(1, body, pageParam.body);
|
|
41
|
+
}
|
|
42
|
+
return body;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
exports.prepareRequestFnParameters = prepareRequestFnParameters;
|
|
46
|
+
//# sourceMappingURL=prepareRequestFnParameters.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareRequestFnParameters.cjs","sources":["../../../src/lib/prepareRequestFnParameters.ts"],"sourcesContent":["import { shelfMerge } from './shelfMerge.js';\n\n/**\n * Prepares parameters and body for requestFn calls, handling infinite query logic\n * @param queryParams - The query parameters that may contain body\n * @param pageParam - The page parameter for infinite queries\n * @param infinite - Whether this is for an infinite query\n * @returns Object with prepared parameters and body\n */\nexport function prepareRequestFnParameters<TQueryParams>(\n queryParams: TQueryParams,\n pageParam: unknown,\n infinite: boolean\n): {\n parameters: TQueryParams extends { body: any }\n ? Omit<TQueryParams, 'body'>\n : TQueryParams;\n body: BodyInit | undefined;\n} {\n const { body, ...parameters } = queryParams as {\n body?: BodyInit;\n } & TQueryParams;\n\n if (!infinite) {\n return {\n parameters: parameters as never,\n body: body as never,\n };\n }\n\n // Handle infinite query parameters\n const processedParameters = shelfMerge(\n 2,\n parameters,\n omitBodyFromPageParam(pageParam)\n ) as never;\n\n const processedBody = mergeBodyWithPageParam(body, pageParam) as never;\n\n return {\n parameters: processedParameters,\n body: processedBody,\n };\n}\n\n/**\n * Remove body from pageParam if it exists\n */\nfunction omitBodyFromPageParam(pageParam: unknown) {\n if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {\n const { body: _body, ...pageParameters } = pageParam;\n return pageParameters;\n }\n\n return pageParam;\n}\n\n/**\n * Merge body with pageParam.body if pageParam contains body\n */\nfunction mergeBodyWithPageParam(\n body: BodyInit | undefined,\n pageParam: unknown\n): BodyInit | undefined {\n if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {\n return shelfMerge(1, body, pageParam.body) as BodyInit;\n }\n\n return body;\n}\n"],"names":["prepareRequestFnParameters","queryParams","pageParam","infinite","body","parameters","processedParameters","shelfMerge","omitBodyFromPageParam","processedBody","mergeBodyWithPageParam","_body","pageParameters"],"mappings":";;;;AAEA;;;;;;AAMC,IACM,SAASA,0BAAAA,CACdC,WAAyB,EACzBC,SAAkB,EAClBC,QAAiB,EAAA;AAOjB,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGC,YAAY,GAAGJ,WAAAA,CAAAA;AAIhC,IAAA,IAAI,CAACE,QAAU,EAAA;QACb,OAAO;YACLE,UAAYA,EAAAA,UAAAA;YACZD,IAAMA,EAAAA,IAAAA;AACR,SAAA,CAAA;AACF,KAAA;;AAGA,IAAA,MAAME,mBAAsBC,GAAAA,qBAAAA,CAC1B,CACAF,EAAAA,UAAAA,EACAG,qBAAsBN,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA;IAGxB,MAAMO,aAAAA,GAAgBC,uBAAuBN,IAAMF,EAAAA,SAAAA,CAAAA,CAAAA;IAEnD,OAAO;QACLG,UAAYC,EAAAA,mBAAAA;QACZF,IAAMK,EAAAA,aAAAA;AACR,KAAA,CAAA;AACF,CAAA;AAEA;;IAGA,SAASD,sBAAsBN,SAAkB,EAAA;AAC/C,IAAA,IAAIA,SAAa,IAAA,OAAOA,SAAc,KAAA,QAAA,IAAY,UAAUA,SAAW,EAAA;AACrE,QAAA,MAAM,EAAEE,IAAMO,EAAAA,KAAK,EAAE,GAAGC,gBAAgB,GAAGV,SAAAA,CAAAA;QAC3C,OAAOU,cAAAA,CAAAA;AACT,KAAA;IAEA,OAAOV,SAAAA,CAAAA;AACT,CAAA;AAEA;;AAEC,IACD,SAASQ,sBAAAA,CACPN,IAA0B,EAC1BF,SAAkB,EAAA;AAElB,IAAA,IAAIA,SAAa,IAAA,OAAOA,SAAc,KAAA,QAAA,IAAY,UAAUA,SAAW,EAAA;AACrE,QAAA,OAAOK,qBAAW,CAAA,CAAA,EAAGH,IAAMF,EAAAA,SAAAA,CAAUE,IAAI,CAAA,CAAA;AAC3C,KAAA;IAEA,OAAOA,IAAAA,CAAAA;AACT;;;;"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
var composeInfiniteQueryKey = require('./composeInfiniteQueryKey.cjs');
|
|
5
5
|
var composeQueryKey = require('./composeQueryKey.cjs');
|
|
6
|
+
var prepareRequestFnParameters = require('./prepareRequestFnParameters.cjs');
|
|
6
7
|
var requestFnResponseRejecter = require('./requestFnResponseRejecter.cjs');
|
|
7
8
|
var requestFnResponseResolver = require('./requestFnResponseResolver.cjs');
|
|
8
|
-
var shelfMerge = require('./shelfMerge.cjs');
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Composes the options for useQuery, useInfiniteQuery, useSuspenseQuery, and useSuspenseQueries.
|
|
@@ -13,10 +13,9 @@ var shelfMerge = require('./shelfMerge.cjs');
|
|
|
13
13
|
*/ function useComposeUseQueryOptions(qraftOptions, schema, args, infinite) {
|
|
14
14
|
const [parameters, options] = args;
|
|
15
15
|
const queryFn = options?.queryFn ?? function({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
16
|
-
const {
|
|
16
|
+
const { parameters, body } = prepareRequestFnParameters.prepareRequestFnParameters(queryParams, pageParam, infinite);
|
|
17
17
|
return qraftOptions.requestFn(schema, {
|
|
18
|
-
|
|
19
|
-
parameters: infinite ? shelfMerge.shelfMerge(2, parameters, pageParam) : parameters,
|
|
18
|
+
parameters: parameters,
|
|
20
19
|
baseUrl: qraftOptions.baseUrl,
|
|
21
20
|
body,
|
|
22
21
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComposeUseQueryOptions.cjs","sources":["../../../src/lib/useComposeUseQueryOptions.ts"],"sourcesContent":["'use client';\n\nimport type { ServiceOperationQueryKey } from '@openapi-qraft/tanstack-query-react-types';\nimport type { QueryClient, UseQueryOptions } from '@tanstack/react-query';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema } from './requestFn.js';\nimport { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';\nimport { composeQueryKey } from './composeQueryKey.js';\nimport {
|
|
1
|
+
{"version":3,"file":"useComposeUseQueryOptions.cjs","sources":["../../../src/lib/useComposeUseQueryOptions.ts"],"sourcesContent":["'use client';\n\nimport type { ServiceOperationQueryKey } from '@openapi-qraft/tanstack-query-react-types';\nimport type { QueryClient, UseQueryOptions } from '@tanstack/react-query';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema } from './requestFn.js';\nimport { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';\nimport { composeQueryKey } from './composeQueryKey.js';\nimport { prepareRequestFnParameters } from './prepareRequestFnParameters.js';\nimport { requestFnResponseRejecter } from './requestFnResponseRejecter.js';\nimport { requestFnResponseResolver } from './requestFnResponseResolver.js';\n\n/**\n * Composes the options for useQuery, useInfiniteQuery, useSuspenseQuery, and useSuspenseQueries.\n * @internal\n */\nexport function useComposeUseQueryOptions(\n qraftOptions: CreateAPIQueryClientOptions,\n schema: OperationSchema,\n args: UseQueryOptionsArgs,\n infinite: boolean\n): never {\n const [parameters, options] = args;\n\n const queryFn =\n options?.queryFn ??\n function ({ queryKey: [, queryParams], signal, meta, pageParam }) {\n const { parameters, body } = prepareRequestFnParameters(\n queryParams,\n pageParam,\n infinite\n );\n\n return qraftOptions\n .requestFn(schema, {\n parameters: parameters as never,\n baseUrl: qraftOptions.baseUrl,\n body,\n signal,\n meta,\n })\n .then(requestFnResponseResolver, requestFnResponseRejecter);\n };\n\n const queryKey = Array.isArray(parameters)\n ? (parameters as ServiceOperationQueryKey<OperationSchema, unknown>)\n : infinite\n ? composeInfiniteQueryKey(schema, parameters)\n : composeQueryKey(schema, parameters);\n\n return [{ ...options, queryFn, queryKey }, qraftOptions.queryClient] as never;\n}\n\ntype UseQueryOptionsArgs = [\n parameters: unknown,\n options?: UseQueryOptions,\n queryClient?: QueryClient,\n];\n"],"names":["useComposeUseQueryOptions","qraftOptions","schema","args","infinite","parameters","options","queryFn","queryKey","queryParams","signal","meta","pageParam","body","prepareRequestFnParameters","requestFn","baseUrl","then","requestFnResponseResolver","requestFnResponseRejecter","Array","isArray","composeInfiniteQueryKey","composeQueryKey","queryClient"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';
|
|
2
2
|
import { composeQueryKey } from './composeQueryKey.js';
|
|
3
|
+
import { prepareRequestFnParameters } from './prepareRequestFnParameters.js';
|
|
3
4
|
import { requestFnResponseRejecter } from './requestFnResponseRejecter.js';
|
|
4
5
|
import { requestFnResponseResolver } from './requestFnResponseResolver.js';
|
|
5
|
-
import { shelfMerge } from './shelfMerge.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Calls a query client fetch method with parameters and options,
|
|
@@ -19,9 +19,11 @@ import { shelfMerge } from './shelfMerge.js';
|
|
|
19
19
|
throw new Error('callQueryClientMethodWithQueryKey: options.queryKey and options.parameters are mutually exclusive');
|
|
20
20
|
}
|
|
21
21
|
const queryFn = queryFnOption ?? (requestFn ? function({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
22
|
+
const { parameters, body } = prepareRequestFnParameters(queryParams, pageParam, infinite);
|
|
22
23
|
return requestFn(schema, {
|
|
23
|
-
parameters:
|
|
24
|
+
parameters: parameters,
|
|
24
25
|
baseUrl,
|
|
26
|
+
body,
|
|
25
27
|
signal,
|
|
26
28
|
meta
|
|
27
29
|
}).then(requestFnResponseResolver, requestFnResponseRejecter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callQueryClientFetchMethod.js","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/react-query';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema, RequestFn } from './requestFn.js';\nimport { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';\nimport { composeQueryKey } from './composeQueryKey.js';\nimport {
|
|
1
|
+
{"version":3,"file":"callQueryClientFetchMethod.js","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/react-query';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema, RequestFn } from './requestFn.js';\nimport { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';\nimport { composeQueryKey } from './composeQueryKey.js';\nimport { prepareRequestFnParameters } from './prepareRequestFnParameters.js';\nimport { requestFnResponseRejecter } from './requestFnResponseRejecter.js';\nimport { requestFnResponseResolver } from './requestFnResponseResolver.js';\n\n/**\n * Calls a query client fetch method with parameters and options,\n * and automatically composes the `QueryKey` based on the schema and parameters.\n */\nexport function callQueryClientMethodWithQueryKey<\n QFMethod extends QueryKeyMethods,\n>(\n qraftOptions: CreateAPIQueryClientOptions,\n queryFilterMethod: QFMethod,\n schema: OperationSchema,\n infinite: boolean,\n args: QueryClientMethodArgs<QFMethod>\n): ReturnType<(typeof QueryClient.prototype)[QFMethod]> {\n const {\n requestFn: requestFnOption,\n baseUrl: baseUrlOption,\n queryFn: queryFnOption,\n parameters,\n ...options\n } = args[0] ?? {};\n\n const queryClient = qraftOptions.queryClient;\n const baseUrl = baseUrlOption ?? qraftOptions.baseUrl;\n\n if (queryFnOption && requestFnOption) {\n throw new Error(\n 'callQueryClientMethodWithQueryKey: options.queryFn and options.requestFn are mutually exclusive'\n );\n }\n\n const requestFn = requestFnOption ?? qraftOptions.requestFn;\n\n if (options.queryKey && parameters) {\n throw new Error(\n 'callQueryClientMethodWithQueryKey: options.queryKey and options.parameters are mutually exclusive'\n );\n }\n\n const queryFn =\n queryFnOption ??\n (requestFn\n ? // @ts-expect-error - Too complex union to type\n function ({ queryKey: [, queryParams], signal, meta, pageParam }) {\n const { parameters, body } = prepareRequestFnParameters(\n queryParams,\n pageParam,\n infinite\n );\n\n return requestFn(schema, {\n parameters: parameters as never,\n baseUrl,\n body,\n signal,\n meta,\n }).then(requestFnResponseResolver, requestFnResponseRejecter);\n }\n : undefined);\n\n // @ts-expect-error - Too complex union to type\n return queryClient[queryFilterMethod]({\n ...options,\n queryFn,\n queryKey:\n options.queryKey ??\n (infinite\n ? composeInfiniteQueryKey(schema, parameters)\n : composeQueryKey(schema, parameters)),\n });\n}\n\ntype QueryClientMethodArgs<QMethod extends keyof QueryClientPrototype> = [\n options: Parameters<QueryClientPrototype[QMethod]>[0] & {\n parameters?: unknown;\n baseUrl?: string;\n requestFn?: RequestFn<unknown, unknown>;\n },\n queryClient: QueryClient,\n];\n\ntype QueryKeyMethods =\n | QueryKeyMethod<'fetchQuery'>\n | QueryKeyMethod<'prefetchQuery'>\n | QueryKeyMethod<'ensureQueryData'>\n | QueryKeyMethod<'fetchInfiniteQuery'>\n | QueryKeyMethod<'prefetchInfiniteQuery'>\n | QueryKeyMethod<'ensureInfiniteQueryData'>;\n\ntype QueryClientPrototype = typeof QueryClient.prototype;\n\ntype QueryKeyMethod<QFMethod extends keyof typeof QueryClient.prototype> =\n QFMethod;\n"],"names":["callQueryClientMethodWithQueryKey","qraftOptions","queryFilterMethod","schema","infinite","args","requestFn","requestFnOption","baseUrl","baseUrlOption","queryFn","queryFnOption","parameters","options","queryClient","Error","queryKey","queryParams","signal","meta","pageParam","body","prepareRequestFnParameters","then","requestFnResponseResolver","requestFnResponseRejecter","undefined","composeInfiniteQueryKey","composeQueryKey"],"mappings":";;;;;;AASA;;;IAIO,SAASA,iCAAAA,CAGdC,YAAyC,EACzCC,iBAA2B,EAC3BC,MAAuB,EACvBC,QAAiB,EACjBC,IAAqC,EAAA;AAErC,IAAA,MAAM,EACJC,SAAWC,EAAAA,eAAe,EAC1BC,OAASC,EAAAA,aAAa,EACtBC,OAASC,EAAAA,aAAa,EACtBC,UAAU,EACV,GAAGC,OACJ,EAAA,GAAGR,IAAI,CAAC,CAAA,CAAE,IAAI,EAAC,CAAA;IAEhB,MAAMS,WAAAA,GAAcb,aAAaa,WAAW,CAAA;IAC5C,MAAMN,OAAAA,GAAUC,aAAiBR,IAAAA,YAAAA,CAAaO,OAAO,CAAA;AAErD,IAAA,IAAIG,iBAAiBJ,eAAiB,EAAA;AACpC,QAAA,MAAM,IAAIQ,KACR,CAAA,iGAAA,CAAA,CAAA;AAEJ,KAAA;IAEA,MAAMT,SAAAA,GAAYC,eAAmBN,IAAAA,YAAAA,CAAaK,SAAS,CAAA;IAE3D,IAAIO,OAAAA,CAAQG,QAAQ,IAAIJ,UAAY,EAAA;AAClC,QAAA,MAAM,IAAIG,KACR,CAAA,mGAAA,CAAA,CAAA;AAEJ,KAAA;AAEA,IAAA,MAAML,OACJC,GAAAA,aAAAA,KACCL,SAAAA,GAEG,SAAU,EAAEU,QAAAA,EAAU,GAAGC,WAAAA,CAAY,EAAEC,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,EAAA;QAC9D,MAAM,EAAER,UAAU,EAAES,IAAI,EAAE,GAAGC,0BAAAA,CAC3BL,aACAG,SACAhB,EAAAA,QAAAA,CAAAA,CAAAA;AAGF,QAAA,OAAOE,UAAUH,MAAQ,EAAA;YACvBS,UAAYA,EAAAA,UAAAA;AACZJ,YAAAA,OAAAA;AACAa,YAAAA,IAAAA;AACAH,YAAAA,MAAAA;AACAC,YAAAA,IAAAA;SACCI,CAAAA,CAAAA,IAAI,CAACC,yBAA2BC,EAAAA,yBAAAA,CAAAA,CAAAA;AACrC,KAAA,GACAC,SAAQ,CAAA,CAAA;;IAGd,OAAOZ,WAAW,CAACZ,iBAAAA,CAAkB,CAAC;AACpC,QAAA,GAAGW,OAAO;AACVH,QAAAA,OAAAA;QACAM,QACEH,EAAAA,OAAAA,CAAQG,QAAQ,KACfZ,QAAAA,GACGuB,wBAAwBxB,MAAQS,EAAAA,UAAAA,CAAAA,GAChCgB,eAAgBzB,CAAAA,MAAAA,EAAQS,UAAU,CAAA,CAAA;AAC1C,KAAA,CAAA,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { shelfMerge } from './shelfMerge.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Prepares parameters and body for requestFn calls, handling infinite query logic
|
|
5
|
+
* @param queryParams - The query parameters that may contain body
|
|
6
|
+
* @param pageParam - The page parameter for infinite queries
|
|
7
|
+
* @param infinite - Whether this is for an infinite query
|
|
8
|
+
* @returns Object with prepared parameters and body
|
|
9
|
+
*/ function prepareRequestFnParameters(queryParams, pageParam, infinite) {
|
|
10
|
+
const { body, ...parameters } = queryParams;
|
|
11
|
+
if (!infinite) {
|
|
12
|
+
return {
|
|
13
|
+
parameters: parameters,
|
|
14
|
+
body: body
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
// Handle infinite query parameters
|
|
18
|
+
const processedParameters = shelfMerge(2, parameters, omitBodyFromPageParam(pageParam));
|
|
19
|
+
const processedBody = mergeBodyWithPageParam(body, pageParam);
|
|
20
|
+
return {
|
|
21
|
+
parameters: processedParameters,
|
|
22
|
+
body: processedBody
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Remove body from pageParam if it exists
|
|
27
|
+
*/ function omitBodyFromPageParam(pageParam) {
|
|
28
|
+
if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {
|
|
29
|
+
const { body: _body, ...pageParameters } = pageParam;
|
|
30
|
+
return pageParameters;
|
|
31
|
+
}
|
|
32
|
+
return pageParam;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Merge body with pageParam.body if pageParam contains body
|
|
36
|
+
*/ function mergeBodyWithPageParam(body, pageParam) {
|
|
37
|
+
if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {
|
|
38
|
+
return shelfMerge(1, body, pageParam.body);
|
|
39
|
+
}
|
|
40
|
+
return body;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { prepareRequestFnParameters };
|
|
44
|
+
//# sourceMappingURL=prepareRequestFnParameters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareRequestFnParameters.js","sources":["../../../src/lib/prepareRequestFnParameters.ts"],"sourcesContent":["import { shelfMerge } from './shelfMerge.js';\n\n/**\n * Prepares parameters and body for requestFn calls, handling infinite query logic\n * @param queryParams - The query parameters that may contain body\n * @param pageParam - The page parameter for infinite queries\n * @param infinite - Whether this is for an infinite query\n * @returns Object with prepared parameters and body\n */\nexport function prepareRequestFnParameters<TQueryParams>(\n queryParams: TQueryParams,\n pageParam: unknown,\n infinite: boolean\n): {\n parameters: TQueryParams extends { body: any }\n ? Omit<TQueryParams, 'body'>\n : TQueryParams;\n body: BodyInit | undefined;\n} {\n const { body, ...parameters } = queryParams as {\n body?: BodyInit;\n } & TQueryParams;\n\n if (!infinite) {\n return {\n parameters: parameters as never,\n body: body as never,\n };\n }\n\n // Handle infinite query parameters\n const processedParameters = shelfMerge(\n 2,\n parameters,\n omitBodyFromPageParam(pageParam)\n ) as never;\n\n const processedBody = mergeBodyWithPageParam(body, pageParam) as never;\n\n return {\n parameters: processedParameters,\n body: processedBody,\n };\n}\n\n/**\n * Remove body from pageParam if it exists\n */\nfunction omitBodyFromPageParam(pageParam: unknown) {\n if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {\n const { body: _body, ...pageParameters } = pageParam;\n return pageParameters;\n }\n\n return pageParam;\n}\n\n/**\n * Merge body with pageParam.body if pageParam contains body\n */\nfunction mergeBodyWithPageParam(\n body: BodyInit | undefined,\n pageParam: unknown\n): BodyInit | undefined {\n if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {\n return shelfMerge(1, body, pageParam.body) as BodyInit;\n }\n\n return body;\n}\n"],"names":["prepareRequestFnParameters","queryParams","pageParam","infinite","body","parameters","processedParameters","shelfMerge","omitBodyFromPageParam","processedBody","mergeBodyWithPageParam","_body","pageParameters"],"mappings":";;AAEA;;;;;;AAMC,IACM,SAASA,0BAAAA,CACdC,WAAyB,EACzBC,SAAkB,EAClBC,QAAiB,EAAA;AAOjB,IAAA,MAAM,EAAEC,IAAI,EAAE,GAAGC,YAAY,GAAGJ,WAAAA,CAAAA;AAIhC,IAAA,IAAI,CAACE,QAAU,EAAA;QACb,OAAO;YACLE,UAAYA,EAAAA,UAAAA;YACZD,IAAMA,EAAAA,IAAAA;AACR,SAAA,CAAA;AACF,KAAA;;AAGA,IAAA,MAAME,mBAAsBC,GAAAA,UAAAA,CAC1B,CACAF,EAAAA,UAAAA,EACAG,qBAAsBN,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA;IAGxB,MAAMO,aAAAA,GAAgBC,uBAAuBN,IAAMF,EAAAA,SAAAA,CAAAA,CAAAA;IAEnD,OAAO;QACLG,UAAYC,EAAAA,mBAAAA;QACZF,IAAMK,EAAAA,aAAAA;AACR,KAAA,CAAA;AACF,CAAA;AAEA;;IAGA,SAASD,sBAAsBN,SAAkB,EAAA;AAC/C,IAAA,IAAIA,SAAa,IAAA,OAAOA,SAAc,KAAA,QAAA,IAAY,UAAUA,SAAW,EAAA;AACrE,QAAA,MAAM,EAAEE,IAAMO,EAAAA,KAAK,EAAE,GAAGC,gBAAgB,GAAGV,SAAAA,CAAAA;QAC3C,OAAOU,cAAAA,CAAAA;AACT,KAAA;IAEA,OAAOV,SAAAA,CAAAA;AACT,CAAA;AAEA;;AAEC,IACD,SAASQ,sBAAAA,CACPN,IAA0B,EAC1BF,SAAkB,EAAA;AAElB,IAAA,IAAIA,SAAa,IAAA,OAAOA,SAAc,KAAA,QAAA,IAAY,UAAUA,SAAW,EAAA;AACrE,QAAA,OAAOK,UAAW,CAAA,CAAA,EAAGH,IAAMF,EAAAA,SAAAA,CAAUE,IAAI,CAAA,CAAA;AAC3C,KAAA;IAEA,OAAOA,IAAAA,CAAAA;AACT;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';
|
|
3
3
|
import { composeQueryKey } from './composeQueryKey.js';
|
|
4
|
+
import { prepareRequestFnParameters } from './prepareRequestFnParameters.js';
|
|
4
5
|
import { requestFnResponseRejecter } from './requestFnResponseRejecter.js';
|
|
5
6
|
import { requestFnResponseResolver } from './requestFnResponseResolver.js';
|
|
6
|
-
import { shelfMerge } from './shelfMerge.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Composes the options for useQuery, useInfiniteQuery, useSuspenseQuery, and useSuspenseQueries.
|
|
@@ -11,10 +11,9 @@ import { shelfMerge } from './shelfMerge.js';
|
|
|
11
11
|
*/ function useComposeUseQueryOptions(qraftOptions, schema, args, infinite) {
|
|
12
12
|
const [parameters, options] = args;
|
|
13
13
|
const queryFn = options?.queryFn ?? function({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
14
|
-
const {
|
|
14
|
+
const { parameters, body } = prepareRequestFnParameters(queryParams, pageParam, infinite);
|
|
15
15
|
return qraftOptions.requestFn(schema, {
|
|
16
|
-
|
|
17
|
-
parameters: infinite ? shelfMerge(2, parameters, pageParam) : parameters,
|
|
16
|
+
parameters: parameters,
|
|
18
17
|
baseUrl: qraftOptions.baseUrl,
|
|
19
18
|
body,
|
|
20
19
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComposeUseQueryOptions.js","sources":["../../../src/lib/useComposeUseQueryOptions.ts"],"sourcesContent":["'use client';\n\nimport type { ServiceOperationQueryKey } from '@openapi-qraft/tanstack-query-react-types';\nimport type { QueryClient, UseQueryOptions } from '@tanstack/react-query';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema } from './requestFn.js';\nimport { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';\nimport { composeQueryKey } from './composeQueryKey.js';\nimport {
|
|
1
|
+
{"version":3,"file":"useComposeUseQueryOptions.js","sources":["../../../src/lib/useComposeUseQueryOptions.ts"],"sourcesContent":["'use client';\n\nimport type { ServiceOperationQueryKey } from '@openapi-qraft/tanstack-query-react-types';\nimport type { QueryClient, UseQueryOptions } from '@tanstack/react-query';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema } from './requestFn.js';\nimport { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';\nimport { composeQueryKey } from './composeQueryKey.js';\nimport { prepareRequestFnParameters } from './prepareRequestFnParameters.js';\nimport { requestFnResponseRejecter } from './requestFnResponseRejecter.js';\nimport { requestFnResponseResolver } from './requestFnResponseResolver.js';\n\n/**\n * Composes the options for useQuery, useInfiniteQuery, useSuspenseQuery, and useSuspenseQueries.\n * @internal\n */\nexport function useComposeUseQueryOptions(\n qraftOptions: CreateAPIQueryClientOptions,\n schema: OperationSchema,\n args: UseQueryOptionsArgs,\n infinite: boolean\n): never {\n const [parameters, options] = args;\n\n const queryFn =\n options?.queryFn ??\n function ({ queryKey: [, queryParams], signal, meta, pageParam }) {\n const { parameters, body } = prepareRequestFnParameters(\n queryParams,\n pageParam,\n infinite\n );\n\n return qraftOptions\n .requestFn(schema, {\n parameters: parameters as never,\n baseUrl: qraftOptions.baseUrl,\n body,\n signal,\n meta,\n })\n .then(requestFnResponseResolver, requestFnResponseRejecter);\n };\n\n const queryKey = Array.isArray(parameters)\n ? (parameters as ServiceOperationQueryKey<OperationSchema, unknown>)\n : infinite\n ? composeInfiniteQueryKey(schema, parameters)\n : composeQueryKey(schema, parameters);\n\n return [{ ...options, queryFn, queryKey }, qraftOptions.queryClient] as never;\n}\n\ntype UseQueryOptionsArgs = [\n parameters: unknown,\n options?: UseQueryOptions,\n queryClient?: QueryClient,\n];\n"],"names":["useComposeUseQueryOptions","qraftOptions","schema","args","infinite","parameters","options","queryFn","queryKey","queryParams","signal","meta","pageParam","body","prepareRequestFnParameters","requestFn","baseUrl","then","requestFnResponseResolver","requestFnResponseRejecter","Array","isArray","composeInfiniteQueryKey","composeQueryKey","queryClient"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callQueryClientFetchMethod.d.ts","sourceRoot":"","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAOjE;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,SAAS,eAAe,EAEhC,YAAY,EAAE,2BAA2B,EACzC,iBAAiB,EAAE,QAAQ,EAC3B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GACpC,UAAU,CAAC,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"callQueryClientFetchMethod.d.ts","sourceRoot":"","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAOjE;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,SAAS,eAAe,EAEhC,YAAY,EAAE,2BAA2B,EACzC,iBAAiB,EAAE,QAAQ,EAC3B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GACpC,UAAU,CAAC,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAyDtD;AAED,KAAK,qBAAqB,CAAC,OAAO,SAAS,MAAM,oBAAoB,IAAI;IACvE,OAAO,EAAE,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACtD,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACzC;IACD,WAAW,EAAE,WAAW;CACzB,CAAC;AAEF,KAAK,eAAe,GAChB,cAAc,CAAC,YAAY,CAAC,GAC5B,cAAc,CAAC,eAAe,CAAC,GAC/B,cAAc,CAAC,iBAAiB,CAAC,GACjC,cAAc,CAAC,oBAAoB,CAAC,GACpC,cAAc,CAAC,uBAAuB,CAAC,GACvC,cAAc,CAAC,yBAAyB,CAAC,CAAC;AAE9C,KAAK,oBAAoB,GAAG,OAAO,WAAW,CAAC,SAAS,CAAC;AAEzD,KAAK,cAAc,CAAC,QAAQ,SAAS,MAAM,OAAO,WAAW,CAAC,SAAS,IACrE,QAAQ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prepares parameters and body for requestFn calls, handling infinite query logic
|
|
3
|
+
* @param queryParams - The query parameters that may contain body
|
|
4
|
+
* @param pageParam - The page parameter for infinite queries
|
|
5
|
+
* @param infinite - Whether this is for an infinite query
|
|
6
|
+
* @returns Object with prepared parameters and body
|
|
7
|
+
*/
|
|
8
|
+
export declare function prepareRequestFnParameters<TQueryParams>(queryParams: TQueryParams, pageParam: unknown, infinite: boolean): {
|
|
9
|
+
parameters: TQueryParams extends {
|
|
10
|
+
body: any;
|
|
11
|
+
} ? Omit<TQueryParams, 'body'> : TQueryParams;
|
|
12
|
+
body: BodyInit | undefined;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=prepareRequestFnParameters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareRequestFnParameters.d.ts","sourceRoot":"","sources":["../../../src/lib/prepareRequestFnParameters.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,EACrD,WAAW,EAAE,YAAY,EACzB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,OAAO,GAChB;IACD,UAAU,EAAE,YAAY,SAAS;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,GAC1C,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAC1B,YAAY,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC5B,CAyBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComposeUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/useComposeUseQueryOptions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOtD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,OAAO,GAChB,KAAK,
|
|
1
|
+
{"version":3,"file":"useComposeUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/useComposeUseQueryOptions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOtD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,OAAO,GAChB,KAAK,CA8BP;AAED,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,OAAO;IACnB,OAAO,CAAC,EAAE,eAAe;IACzB,WAAW,CAAC,EAAE,WAAW;CAC1B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openapi-qraft/react",
|
|
3
|
-
"version": "2.10.
|
|
3
|
+
"version": "2.10.2",
|
|
4
4
|
"description": "OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "NODE_ENV=production rollup --config rollup.config.mjs && tsc --project tsconfig.build.json --emitDeclarationOnly",
|
|
@@ -15,18 +15,18 @@
|
|
|
15
15
|
},
|
|
16
16
|
"sideEffects": false,
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@openapi-qraft/tanstack-query-react-types": "2.10.
|
|
18
|
+
"@openapi-qraft/tanstack-query-react-types": "2.10.2"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"@tanstack/react-query": "^5.80.0",
|
|
22
22
|
"react": "^18 || ^19"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@openapi-qraft/cli": "2.10.
|
|
25
|
+
"@openapi-qraft/cli": "2.10.2",
|
|
26
26
|
"@openapi-qraft/eslint-config": "1.0.1",
|
|
27
|
-
"@openapi-qraft/openapi-typescript-plugin": "^1.2.
|
|
27
|
+
"@openapi-qraft/openapi-typescript-plugin": "^1.2.28",
|
|
28
28
|
"@openapi-qraft/rollup-config": "1.1.1",
|
|
29
|
-
"@openapi-qraft/tanstack-query-react-plugin": "2.10.
|
|
29
|
+
"@openapi-qraft/tanstack-query-react-plugin": "2.10.2",
|
|
30
30
|
"@openapi-qraft/test-fixtures": "1.1.1",
|
|
31
31
|
"@tanstack/react-query": "^5.80.6",
|
|
32
32
|
"@testing-library/dom": "^10.4.0",
|
|
@@ -3,9 +3,9 @@ import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';
|
|
|
3
3
|
import type { OperationSchema, RequestFn } from './requestFn.js';
|
|
4
4
|
import { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';
|
|
5
5
|
import { composeQueryKey } from './composeQueryKey.js';
|
|
6
|
+
import { prepareRequestFnParameters } from './prepareRequestFnParameters.js';
|
|
6
7
|
import { requestFnResponseRejecter } from './requestFnResponseRejecter.js';
|
|
7
8
|
import { requestFnResponseResolver } from './requestFnResponseResolver.js';
|
|
8
|
-
import { shelfMerge } from './shelfMerge.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Calls a query client fetch method with parameters and options,
|
|
@@ -50,11 +50,16 @@ export function callQueryClientMethodWithQueryKey<
|
|
|
50
50
|
(requestFn
|
|
51
51
|
? // @ts-expect-error - Too complex union to type
|
|
52
52
|
function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
53
|
+
const { parameters, body } = prepareRequestFnParameters(
|
|
54
|
+
queryParams,
|
|
55
|
+
pageParam,
|
|
56
|
+
infinite
|
|
57
|
+
);
|
|
58
|
+
|
|
53
59
|
return requestFn(schema, {
|
|
54
|
-
parameters:
|
|
55
|
-
? (shelfMerge(2, queryParams, pageParam) as never)
|
|
56
|
-
: queryParams,
|
|
60
|
+
parameters: parameters as never,
|
|
57
61
|
baseUrl,
|
|
62
|
+
body,
|
|
58
63
|
signal,
|
|
59
64
|
meta,
|
|
60
65
|
}).then(requestFnResponseResolver, requestFnResponseRejecter);
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { shelfMerge } from './shelfMerge.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Prepares parameters and body for requestFn calls, handling infinite query logic
|
|
5
|
+
* @param queryParams - The query parameters that may contain body
|
|
6
|
+
* @param pageParam - The page parameter for infinite queries
|
|
7
|
+
* @param infinite - Whether this is for an infinite query
|
|
8
|
+
* @returns Object with prepared parameters and body
|
|
9
|
+
*/
|
|
10
|
+
export function prepareRequestFnParameters<TQueryParams>(
|
|
11
|
+
queryParams: TQueryParams,
|
|
12
|
+
pageParam: unknown,
|
|
13
|
+
infinite: boolean
|
|
14
|
+
): {
|
|
15
|
+
parameters: TQueryParams extends { body: any }
|
|
16
|
+
? Omit<TQueryParams, 'body'>
|
|
17
|
+
: TQueryParams;
|
|
18
|
+
body: BodyInit | undefined;
|
|
19
|
+
} {
|
|
20
|
+
const { body, ...parameters } = queryParams as {
|
|
21
|
+
body?: BodyInit;
|
|
22
|
+
} & TQueryParams;
|
|
23
|
+
|
|
24
|
+
if (!infinite) {
|
|
25
|
+
return {
|
|
26
|
+
parameters: parameters as never,
|
|
27
|
+
body: body as never,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Handle infinite query parameters
|
|
32
|
+
const processedParameters = shelfMerge(
|
|
33
|
+
2,
|
|
34
|
+
parameters,
|
|
35
|
+
omitBodyFromPageParam(pageParam)
|
|
36
|
+
) as never;
|
|
37
|
+
|
|
38
|
+
const processedBody = mergeBodyWithPageParam(body, pageParam) as never;
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
parameters: processedParameters,
|
|
42
|
+
body: processedBody,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Remove body from pageParam if it exists
|
|
48
|
+
*/
|
|
49
|
+
function omitBodyFromPageParam(pageParam: unknown) {
|
|
50
|
+
if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {
|
|
51
|
+
const { body: _body, ...pageParameters } = pageParam;
|
|
52
|
+
return pageParameters;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return pageParam;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Merge body with pageParam.body if pageParam contains body
|
|
60
|
+
*/
|
|
61
|
+
function mergeBodyWithPageParam(
|
|
62
|
+
body: BodyInit | undefined,
|
|
63
|
+
pageParam: unknown
|
|
64
|
+
): BodyInit | undefined {
|
|
65
|
+
if (pageParam && typeof pageParam === 'object' && 'body' in pageParam) {
|
|
66
|
+
return shelfMerge(1, body, pageParam.body) as BodyInit;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return body;
|
|
70
|
+
}
|
|
@@ -6,9 +6,9 @@ import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';
|
|
|
6
6
|
import type { OperationSchema } from './requestFn.js';
|
|
7
7
|
import { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';
|
|
8
8
|
import { composeQueryKey } from './composeQueryKey.js';
|
|
9
|
+
import { prepareRequestFnParameters } from './prepareRequestFnParameters.js';
|
|
9
10
|
import { requestFnResponseRejecter } from './requestFnResponseRejecter.js';
|
|
10
11
|
import { requestFnResponseResolver } from './requestFnResponseResolver.js';
|
|
11
|
-
import { shelfMerge } from './shelfMerge.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Composes the options for useQuery, useInfiniteQuery, useSuspenseQuery, and useSuspenseQueries.
|
|
@@ -25,17 +25,15 @@ export function useComposeUseQueryOptions(
|
|
|
25
25
|
const queryFn =
|
|
26
26
|
options?.queryFn ??
|
|
27
27
|
function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
28
|
-
const {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
const { parameters, body } = prepareRequestFnParameters(
|
|
29
|
+
queryParams,
|
|
30
|
+
pageParam,
|
|
31
|
+
infinite
|
|
32
|
+
);
|
|
32
33
|
|
|
33
34
|
return qraftOptions
|
|
34
35
|
.requestFn(schema, {
|
|
35
|
-
|
|
36
|
-
parameters: infinite
|
|
37
|
-
? (shelfMerge(2, parameters, pageParam) as never)
|
|
38
|
-
: parameters,
|
|
36
|
+
parameters: parameters as never,
|
|
39
37
|
baseUrl: qraftOptions.baseUrl,
|
|
40
38
|
body,
|
|
41
39
|
signal,
|