@openapi-qraft/react 2.3.2 → 2.4.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 (46) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +167 -513
  3. package/dist/cjs/callbacks/useMutation.cjs +3 -2
  4. package/dist/cjs/callbacks/useMutation.cjs.map +1 -1
  5. package/dist/cjs/callbacks/useQueries.cjs +2 -1
  6. package/dist/cjs/callbacks/useQueries.cjs.map +1 -1
  7. package/dist/cjs/callbacks/useSuspenseQueries.cjs +2 -1
  8. package/dist/cjs/callbacks/useSuspenseQueries.cjs.map +1 -1
  9. package/dist/cjs/lib/callQueryClientFetchMethod.cjs +2 -1
  10. package/dist/cjs/lib/callQueryClientFetchMethod.cjs.map +1 -1
  11. package/dist/cjs/lib/requestFnResponseRejecter.cjs +12 -0
  12. package/dist/cjs/lib/requestFnResponseRejecter.cjs.map +1 -0
  13. package/dist/cjs/lib/useComposeUseQueryOptions.cjs +2 -1
  14. package/dist/cjs/lib/useComposeUseQueryOptions.cjs.map +1 -1
  15. package/dist/esm/callbacks/useMutation.js +3 -2
  16. package/dist/esm/callbacks/useMutation.js.map +1 -1
  17. package/dist/esm/callbacks/useQueries.js +2 -1
  18. package/dist/esm/callbacks/useQueries.js.map +1 -1
  19. package/dist/esm/callbacks/useSuspenseQueries.js +2 -1
  20. package/dist/esm/callbacks/useSuspenseQueries.js.map +1 -1
  21. package/dist/esm/lib/callQueryClientFetchMethod.js +2 -1
  22. package/dist/esm/lib/callQueryClientFetchMethod.js.map +1 -1
  23. package/dist/esm/lib/requestFnResponseRejecter.js +10 -0
  24. package/dist/esm/lib/requestFnResponseRejecter.js.map +1 -0
  25. package/dist/esm/lib/useComposeUseQueryOptions.js +2 -1
  26. package/dist/esm/lib/useComposeUseQueryOptions.js.map +1 -1
  27. package/dist/types/callbacks/useMutation.d.ts.map +1 -1
  28. package/dist/types/callbacks/useQueries.d.ts.map +1 -1
  29. package/dist/types/callbacks/useSuspenseQueries.d.ts.map +1 -1
  30. package/dist/types/lib/callQueryClientFetchMethod.d.ts.map +1 -1
  31. package/dist/types/lib/requestFn.test.d.ts +2 -0
  32. package/dist/types/lib/requestFn.test.d.ts.map +1 -0
  33. package/dist/types/lib/requestFnResponseRejecter.d.ts +3 -0
  34. package/dist/types/lib/requestFnResponseRejecter.d.ts.map +1 -0
  35. package/dist/types/lib/requestFnResponseRejecter.test.d.ts +2 -0
  36. package/dist/types/lib/requestFnResponseRejecter.test.d.ts.map +1 -0
  37. package/dist/types/lib/useComposeUseQueryOptions.d.ts.map +1 -1
  38. package/package.json +6 -6
  39. package/src/callbacks/useMutation.ts +3 -2
  40. package/src/callbacks/useQueries.ts +2 -1
  41. package/src/callbacks/useSuspenseQueries.ts +2 -1
  42. package/src/lib/callQueryClientFetchMethod.ts +2 -1
  43. package/src/lib/requestFn.test.ts +125 -0
  44. package/src/lib/requestFnResponseRejecter.test.ts +46 -0
  45. package/src/lib/requestFnResponseRejecter.ts +11 -0
  46. package/src/lib/useComposeUseQueryOptions.ts +2 -1
@@ -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 } from '@tanstack/query-core';\nimport type { 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 { requestFnResponseResolver } from './requestFnResponseResolver.js';\nimport { shelfMerge } from './shelfMerge.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 return qraftOptions\n .requestFn(schema, {\n // @ts-expect-error - Too complex to type\n parameters: infinite\n ? (shelfMerge(2, queryParams, pageParam) as never)\n : queryParams,\n baseUrl: qraftOptions.baseUrl,\n signal,\n meta,\n })\n .then(requestFnResponseResolver, requestFnResponseResolver);\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","requestFn","shelfMerge","baseUrl","then","requestFnResponseResolver","Array","isArray","composeInfiniteQueryKey","composeQueryKey","queryClient"],"mappings":"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"}
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 } from '@tanstack/query-core';\nimport type { 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 { requestFnResponseRejecter } from './requestFnResponseRejecter.js';\nimport { requestFnResponseResolver } from './requestFnResponseResolver.js';\nimport { shelfMerge } from './shelfMerge.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 return qraftOptions\n .requestFn(schema, {\n // @ts-expect-error - Too complex to type\n parameters: infinite\n ? (shelfMerge(2, queryParams, pageParam) as never)\n : queryParams,\n baseUrl: qraftOptions.baseUrl,\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","requestFn","shelfMerge","baseUrl","then","requestFnResponseResolver","requestFnResponseRejecter","Array","isArray","composeInfiniteQueryKey","composeQueryKey","queryClient"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMutation.d.ts","sourceRoot":"","sources":["../../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EAEf,2BAA2B,EAC5B,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAKxE,eAAO,MAAM,WAAW,EAAE,CACxB,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,OAAO,EAElB,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,CACd,2BAA2B,CACzB,eAAe,EACf,MAAM,GAAG,SAAS,EAClB,UAAU,EACV,KAAK,EACL,YAAY,CACb,CAAC,aAAa,CAAC,CACjB,KACE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CA0DzD,CAAC"}
1
+ {"version":3,"file":"useMutation.d.ts","sourceRoot":"","sources":["../../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EAEf,2BAA2B,EAC5B,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAMxE,eAAO,MAAM,WAAW,EAAE,CACxB,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,OAAO,EAElB,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,CACd,2BAA2B,CACzB,eAAe,EACf,MAAM,GAAG,SAAS,EAClB,UAAU,EACV,KAAK,EACL,YAAY,CACb,CAAC,aAAa,CAAC,CACjB,KACE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CA0DzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useQueries.d.ts","sourceRoot":"","sources":["../../../src/callbacks/useQueries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC3B,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAKxE,eAAO,MAAM,UAAU,EAAE,CACvB,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,CACd,0BAA0B,CACxB,eAAe,EACf,OAAO,EACP,OAAO,EACP,YAAY,CACb,CAAC,YAAY,CAAC,CAChB,KACE,cAAc,CAAC,KAAK,CAyCxB,CAAC"}
1
+ {"version":3,"file":"useQueries.d.ts","sourceRoot":"","sources":["../../../src/callbacks/useQueries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC3B,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAMxE,eAAO,MAAM,UAAU,EAAE,CACvB,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,CACd,0BAA0B,CACxB,eAAe,EACf,OAAO,EACP,OAAO,EACP,YAAY,CACb,CAAC,YAAY,CAAC,CAChB,KACE,cAAc,CAAC,KAAK,CAyCxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSuspenseQueries.d.ts","sourceRoot":"","sources":["../../../src/callbacks/useSuspenseQueries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,kCAAkC,EACnC,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAKxE,eAAO,MAAM,kBAAkB,EAAE,CAC/B,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,CACd,kCAAkC,CAChC,eAAe,EACf,OAAO,EACP,OAAO,EACP,YAAY,CACb,CAAC,oBAAoB,CAAC,CACxB,KACE,sBAAsB,CAAC,KAAK,CAyChC,CAAC"}
1
+ {"version":3,"file":"useSuspenseQueries.d.ts","sourceRoot":"","sources":["../../../src/callbacks/useSuspenseQueries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,kCAAkC,EACnC,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAMxE,eAAO,MAAM,kBAAkB,EAAE,CAC/B,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,CACd,kCAAkC,CAChC,eAAe,EACf,OAAO,EACP,OAAO,EACP,YAAY,CACb,CAAC,oBAAoB,CAAC,CACxB,KACE,sBAAsB,CAAC,KAAK,CAyChC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"callQueryClientFetchMethod.d.ts","sourceRoot":"","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMjE;;;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,CAoDtD;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"}
1
+ {"version":3,"file":"callQueryClientFetchMethod.d.ts","sourceRoot":"","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,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,CAoDtD;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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=requestFn.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestFn.test.d.ts","sourceRoot":"","sources":["../../../src/lib/requestFn.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { RequestFnResponse } from './requestFn.js';
2
+ export declare function requestFnResponseRejecter<TData, TError>(requestFnResponseOrError: RequestFnResponse<TData, TError> | Error): TData | undefined;
3
+ //# sourceMappingURL=requestFnResponseRejecter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestFnResponseRejecter.d.ts","sourceRoot":"","sources":["../../../src/lib/requestFnResponseRejecter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EACrD,wBAAwB,EAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,GACjE,KAAK,GAAG,SAAS,CAMnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=requestFnResponseRejecter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestFnResponseRejecter.test.d.ts","sourceRoot":"","sources":["../../../src/lib/requestFnResponseRejecter.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"useComposeUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/useComposeUseQueryOptions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMtD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,OAAO,GAChB,KAAK,CA0BP;AAED,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,OAAO;IACnB,OAAO,CAAC,EAAE,eAAe;IACzB,WAAW,CAAC,EAAE,WAAW;CAC1B,CAAC"}
1
+ {"version":3,"file":"useComposeUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/useComposeUseQueryOptions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,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,CA0BP;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.3.2",
3
+ "version": "2.4.1",
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",
@@ -10,12 +10,12 @@
10
10
  "typecheck": "tsc --noEmit",
11
11
  "lint": "eslint",
12
12
  "clean": "rimraf dist/",
13
- "codegen": "openapi-qraft --plugin tanstack-query-react --plugin openapi-typescript ../test-fixtures/openapi.json -rm -o src/tests/fixtures/api --openapi-types-file-name openapi.ts --explicit-import-extensions --filter-services '/approval_policies/**,/entities/**,/files/**,!/internal/**' --operation-predefined-parameters '/approval_policies/{approval_policy_id}/**:header.x-monite-entity-id' '/entities/{entity_id}/documents:header.x-monite-version' --operation-name-modifier '/files/list:[a-zA-Z]+List ==> findAll' && yarn _prettify-api",
13
+ "codegen": "openapi-qraft --redocly && yarn _prettify-api",
14
14
  "_prettify-api": "prettier --write src/tests/fixtures/api/**/*.ts"
15
15
  },
16
16
  "sideEffects": false,
17
17
  "dependencies": {
18
- "@openapi-qraft/tanstack-query-react-types": "2.3.2"
18
+ "@openapi-qraft/tanstack-query-react-types": "2.4.1"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "@tanstack/query-core": "^5.0.0",
@@ -23,11 +23,11 @@
23
23
  "react": "^18 || ^19"
24
24
  },
25
25
  "devDependencies": {
26
- "@openapi-qraft/cli": "2.3.2",
26
+ "@openapi-qraft/cli": "2.4.1",
27
27
  "@openapi-qraft/eslint-config": "1.0.1",
28
- "@openapi-qraft/openapi-typescript-plugin": "^1.2.12",
28
+ "@openapi-qraft/openapi-typescript-plugin": "^1.2.14",
29
29
  "@openapi-qraft/rollup-config": "1.1.1",
30
- "@openapi-qraft/tanstack-query-react-plugin": "2.3.2",
30
+ "@openapi-qraft/tanstack-query-react-plugin": "2.4.1",
31
31
  "@openapi-qraft/test-fixtures": "1.0.1",
32
32
  "@tanstack/query-core": "^5.66.3",
33
33
  "@tanstack/react-query": "^5.66.3",
@@ -10,6 +10,7 @@ import type { UseMutationResult } from '@tanstack/react-query';
10
10
  import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';
11
11
  import { useMutation as useMutationBase } from '@tanstack/react-query';
12
12
  import { composeMutationKey } from '../lib/composeMutationKey.js';
13
+ import { requestFnResponseRejecter } from '../lib/requestFnResponseRejecter.js';
13
14
  import { requestFnResponseResolver } from '../lib/requestFnResponseResolver.js';
14
15
 
15
16
  export const useMutation: <
@@ -69,7 +70,7 @@ export const useMutation: <
69
70
  baseUrl: qraftOptions.baseUrl,
70
71
  body: bodyPayload as never,
71
72
  })
72
- .then(requestFnResponseResolver, requestFnResponseResolver);
73
+ .then(requestFnResponseResolver, requestFnResponseRejecter);
73
74
  }
74
75
  : function (parametersAndBodyPayload) {
75
76
  const { body, ...parameters } = parametersAndBodyPayload as {
@@ -82,7 +83,7 @@ export const useMutation: <
82
83
  baseUrl: qraftOptions.baseUrl,
83
84
  body,
84
85
  } as never)
85
- .then(requestFnResponseResolver, requestFnResponseResolver);
86
+ .then(requestFnResponseResolver, requestFnResponseRejecter);
86
87
  }),
87
88
  },
88
89
  qraftOptions.queryClient
@@ -9,6 +9,7 @@ import type { QueriesResults } from '@tanstack/react-query';
9
9
  import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';
10
10
  import { useQueries as useQueriesTanstack } from '@tanstack/react-query';
11
11
  import { composeQueryKey } from '../lib/composeQueryKey.js';
12
+ import { requestFnResponseRejecter } from '../lib/requestFnResponseRejecter.js';
12
13
  import { requestFnResponseResolver } from '../lib/requestFnResponseResolver.js';
13
14
 
14
15
  export const useQueries: (
@@ -56,7 +57,7 @@ export const useQueries: (
56
57
  signal,
57
58
  meta,
58
59
  })
59
- .then(requestFnResponseResolver, requestFnResponseResolver);
60
+ .then(requestFnResponseResolver, requestFnResponseRejecter);
60
61
  },
61
62
  };
62
63
  }),
@@ -9,6 +9,7 @@ import type { SuspenseQueriesResults } from '@tanstack/react-query';
9
9
  import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';
10
10
  import { useSuspenseQueries as useSuspenseQueriesTanstack } from '@tanstack/react-query';
11
11
  import { composeQueryKey } from '../lib/composeQueryKey.js';
12
+ import { requestFnResponseRejecter } from '../lib/requestFnResponseRejecter.js';
12
13
  import { requestFnResponseResolver } from '../lib/requestFnResponseResolver.js';
13
14
 
14
15
  export const useSuspenseQueries: (
@@ -56,7 +57,7 @@ export const useSuspenseQueries: (
56
57
  signal,
57
58
  meta,
58
59
  })
59
- .then(requestFnResponseResolver, requestFnResponseResolver);
60
+ .then(requestFnResponseResolver, requestFnResponseRejecter);
60
61
  },
61
62
  };
62
63
  }),
@@ -3,6 +3,7 @@ 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 { requestFnResponseRejecter } from './requestFnResponseRejecter.js';
6
7
  import { requestFnResponseResolver } from './requestFnResponseResolver.js';
7
8
  import { shelfMerge } from './shelfMerge.js';
8
9
 
@@ -56,7 +57,7 @@ export function callQueryClientMethodWithQueryKey<
56
57
  baseUrl,
57
58
  signal,
58
59
  meta,
59
- }).then(requestFnResponseResolver, requestFnResponseResolver);
60
+ }).then(requestFnResponseResolver, requestFnResponseRejecter);
60
61
  }
61
62
  : undefined);
62
63
 
@@ -0,0 +1,125 @@
1
+ import type { OperationSchema } from '@openapi-qraft/tanstack-query-react-types';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { bodySerializer } from './requestFn.js';
4
+
5
+ describe('requestFn', () => {
6
+ describe('bodySerializer', () => {
7
+ const createSchema = (
8
+ method: OperationSchema['method'],
9
+ mediaType?: string[]
10
+ ): OperationSchema => ({
11
+ method,
12
+ url: '/test',
13
+ mediaType,
14
+ });
15
+
16
+ it('should return undefined for GET, HEAD, and OPTIONS methods', () => {
17
+ const methods = ['get', 'head', 'options'] as const;
18
+ methods.forEach((method) => {
19
+ const schema = createSchema(method);
20
+ expect(bodySerializer(schema, { data: 'test' })).toBeUndefined();
21
+ });
22
+ });
23
+
24
+ it('should return undefined for null or undefined body', () => {
25
+ const schema = createSchema('post');
26
+ expect(bodySerializer(schema, null)).toBeUndefined();
27
+ expect(bodySerializer(schema, undefined)).toBeUndefined();
28
+ });
29
+
30
+ it('should handle string body', () => {
31
+ const schema = createSchema('post', ['text/plain']);
32
+ const result = bodySerializer(schema, 'test string');
33
+ expect(result).toEqual({
34
+ body: 'test string',
35
+ headers: {
36
+ 'Content-Type': 'text/plain',
37
+ },
38
+ });
39
+ });
40
+
41
+ it('should handle FormData body', () => {
42
+ const schema = createSchema('post');
43
+ const formData = new FormData();
44
+ formData.append('test', 'value');
45
+
46
+ const result = bodySerializer(schema, formData);
47
+ expect(result).toEqual({
48
+ body: formData,
49
+ headers: {
50
+ // If the serialized body is FormData, remove the 'Content-Type' header.
51
+ // The browser will automatically set the correct `Content-Type` and boundary expression.
52
+ 'Content-Type': null,
53
+ },
54
+ });
55
+ });
56
+
57
+ it('should handle Blob body', () => {
58
+ const schema = createSchema('post', ['application/octet-stream']);
59
+ const blob = new Blob(['test'], { type: 'text/plain' });
60
+
61
+ const result = bodySerializer(schema, blob);
62
+ expect(result).toEqual({
63
+ body: blob,
64
+ headers: {
65
+ 'Content-Type': 'text/plain',
66
+ },
67
+ });
68
+ });
69
+
70
+ it('should handle JSON body with form-data media type', () => {
71
+ const schema = createSchema('post', ['multipart/form-data']);
72
+ const body = { test: 'value', file: new Blob(['test']) };
73
+
74
+ const result = bodySerializer(schema, body)!;
75
+ expect(result).toEqual({
76
+ body: expect.any(FormData),
77
+ headers: {
78
+ 'Content-Type': null,
79
+ },
80
+ });
81
+
82
+ const formData = result.body as FormData;
83
+ expect(formData.get('test')).toBe('value');
84
+ expect(formData.get('file')).toBeInstanceOf(Blob);
85
+ });
86
+
87
+ it('should handle JSON body with JSON media type', () => {
88
+ const schema = createSchema('post', ['application/json']);
89
+ const body = { test: 'value' };
90
+
91
+ const result = bodySerializer(schema, body);
92
+ expect(result).toEqual({
93
+ body: JSON.stringify(body),
94
+ headers: {
95
+ 'Content-Type': 'application/json',
96
+ },
97
+ });
98
+ });
99
+
100
+ it('should handle complex nested objects in form-data', () => {
101
+ const schema = createSchema('post', ['multipart/form-data']);
102
+ const body = {
103
+ simple: 'value',
104
+ array: [1, 2, 3],
105
+ nested: { key: 'value' },
106
+ file: new Blob(['test']),
107
+ };
108
+
109
+ const result = bodySerializer(schema, body)!;
110
+ expect(result).toEqual({
111
+ body: expect.any(FormData),
112
+ headers: {
113
+ 'Content-Type': null,
114
+ },
115
+ });
116
+
117
+ const formData = result.body as FormData;
118
+
119
+ expect(formData.get('simple')).toBe('value');
120
+ expect(formData.getAll('array')).toEqual(['1', '2', '3']);
121
+ expect(formData.get('nested')).toBe(JSON.stringify({ key: 'value' }));
122
+ expect(formData.get('file')).toBeInstanceOf(Blob);
123
+ });
124
+ });
125
+ });
@@ -0,0 +1,46 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { requestFnResponseRejecter } from './requestFnResponseRejecter.js';
3
+
4
+ describe('requestFnResponseRejecter', () => {
5
+ it('should throw error if input is an Error instance', () => {
6
+ const error = new Error('Test error');
7
+ expect(() => requestFnResponseRejecter(error)).toThrow(error);
8
+ });
9
+
10
+ it('should throw error from error property if input contains error field', () => {
11
+ const customError = new Error('Error from error property');
12
+ const responseWithError = { error: customError };
13
+ expect(() => requestFnResponseRejecter(responseWithError)).toThrow(
14
+ customError
15
+ );
16
+ });
17
+
18
+ it('should throw generic "Unhandled `requestFn` response" if input does not match known formats', () => {
19
+ const unknownResponse = { data: 'some data' };
20
+ expect(() =>
21
+ requestFnResponseRejecter(
22
+ // @ts-expect-error - invalid test case
23
+ unknownResponse
24
+ )
25
+ ).toThrow('Unhandled `requestFn` response');
26
+ });
27
+
28
+ it('should add source data to cause property when throwing unhandled response error', () => {
29
+ const unknownResponse = { data: 'some data' };
30
+
31
+ try {
32
+ requestFnResponseRejecter(
33
+ // @ts-expect-error - invalid test case
34
+ unknownResponse
35
+ );
36
+ expect.fail('Expected an error to be thrown');
37
+ } catch (error) {
38
+ if (error instanceof Error) {
39
+ expect(error.message).toBe('Unhandled `requestFn` response');
40
+ expect(error.cause).toBe(unknownResponse);
41
+ } else {
42
+ expect.fail('Thrown error should be an instance of Error');
43
+ }
44
+ }
45
+ });
46
+ });
@@ -0,0 +1,11 @@
1
+ import type { RequestFnResponse } from './requestFn.js';
2
+
3
+ export function requestFnResponseRejecter<TData, TError>(
4
+ requestFnResponseOrError: RequestFnResponse<TData, TError> | Error
5
+ ): TData | undefined {
6
+ if (requestFnResponseOrError instanceof Error) throw requestFnResponseOrError;
7
+ if ('error' in requestFnResponseOrError) throw requestFnResponseOrError.error;
8
+ throw new Error('Unhandled `requestFn` response', {
9
+ cause: requestFnResponseOrError,
10
+ });
11
+ }
@@ -7,6 +7,7 @@ import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';
7
7
  import type { OperationSchema } from './requestFn.js';
8
8
  import { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';
9
9
  import { composeQueryKey } from './composeQueryKey.js';
10
+ import { requestFnResponseRejecter } from './requestFnResponseRejecter.js';
10
11
  import { requestFnResponseResolver } from './requestFnResponseResolver.js';
11
12
  import { shelfMerge } from './shelfMerge.js';
12
13
 
@@ -35,7 +36,7 @@ export function useComposeUseQueryOptions(
35
36
  signal,
36
37
  meta,
37
38
  })
38
- .then(requestFnResponseResolver, requestFnResponseResolver);
39
+ .then(requestFnResponseResolver, requestFnResponseRejecter);
39
40
  };
40
41
 
41
42
  const queryKey = Array.isArray(parameters)