@openapi-qraft/react 2.0.0-next.4 → 2.0.0-next.6
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 +12 -0
- package/dist/cjs/lib/callQueryClientFetchMethod.cjs +2 -3
- package/dist/cjs/lib/callQueryClientFetchMethod.cjs.map +1 -1
- package/dist/cjs/qraftAPIClient.cjs.map +1 -1
- package/dist/cjs/qraftPredefinedParametersRequestFn.cjs +39 -0
- package/dist/cjs/qraftPredefinedParametersRequestFn.cjs.map +1 -0
- package/dist/esm/lib/callQueryClientFetchMethod.js +2 -3
- package/dist/esm/lib/callQueryClientFetchMethod.js.map +1 -1
- package/dist/esm/qraftAPIClient.js.map +1 -1
- package/dist/esm/qraftPredefinedParametersRequestFn.js +37 -0
- package/dist/esm/qraftPredefinedParametersRequestFn.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/callQueryClientFetchMethod.d.ts.map +1 -1
- package/dist/types/qraftAPIClient.d.ts +6 -2
- package/dist/types/qraftAPIClient.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +2 -0
- package/src/lib/callQueryClientFetchMethod.ts +13 -11
- package/src/qraftAPIClient.ts +47 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @openapi-qraft/react
|
|
2
2
|
|
|
3
|
+
## 2.0.0-next.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d804cb6: Added missing dist file for `qraftPredefinedParametersRequestFn`.
|
|
8
|
+
|
|
9
|
+
## 2.0.0-next.5
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 56687f3: Added support for calling `qraftAPIClient(...)` with `{ queryClient }`, enabling non-fetching actions like `resetQueries()`.
|
|
14
|
+
|
|
3
15
|
## 2.0.0-next.4
|
|
4
16
|
|
|
5
17
|
## 2.0.0-next.3
|
|
@@ -19,15 +19,14 @@ var shelfMerge = require('./shelfMerge.cjs');
|
|
|
19
19
|
if (options.queryKey && parameters) {
|
|
20
20
|
throw new Error('callQueryClientMethodWithQueryKey: options.queryKey and options.parameters are mutually exclusive');
|
|
21
21
|
}
|
|
22
|
-
const queryFn = queryFnOption ??
|
|
23
|
-
function({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
22
|
+
const queryFn = queryFnOption ?? (requestFn ? function({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
24
23
|
return requestFn(schema, {
|
|
25
24
|
parameters: infinite ? shelfMerge.shelfMerge(2, queryParams, pageParam) : queryParams,
|
|
26
25
|
baseUrl,
|
|
27
26
|
signal,
|
|
28
27
|
meta
|
|
29
28
|
}).then(requestFnResponseResolver.requestFnResponseResolver, requestFnResponseResolver.requestFnResponseResolver);
|
|
30
|
-
};
|
|
29
|
+
} : undefined);
|
|
31
30
|
// @ts-expect-error - Too complex union to type
|
|
32
31
|
return queryClient[queryFilterMethod]({
|
|
33
32
|
...options,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callQueryClientFetchMethod.cjs","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/query-core';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema, RequestFn } 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 * 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 // @ts-expect-error - Too complex union to type\n
|
|
1
|
+
{"version":3,"file":"callQueryClientFetchMethod.cjs","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/query-core';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema, RequestFn } 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 * 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 return requestFn(schema, {\n parameters: infinite\n ? (shelfMerge(2, queryParams, pageParam) as never)\n : queryParams,\n baseUrl,\n signal,\n meta,\n }).then(requestFnResponseResolver, requestFnResponseResolver);\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<'fetchInfiniteQuery'>\n | QueryKeyMethod<'prefetchInfiniteQuery'>;\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","shelfMerge","then","requestFnResponseResolver","undefined","composeInfiniteQueryKey","composeQueryKey"],"mappings":";;;;;;;AAQA;;;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;AAC9D,QAAA,OAAOd,UAAUH,MAAQ,EAAA;AACvBS,YAAAA,UAAAA,EAAYR,QACPiB,GAAAA,qBAAAA,CAAW,CAAGJ,EAAAA,WAAAA,EAAaG,SAC5BH,CAAAA,GAAAA,WAAAA;AACJT,YAAAA,OAAAA;AACAU,YAAAA,MAAAA;AACAC,YAAAA,IAAAA;SACCG,CAAAA,CAAAA,IAAI,CAACC,mDAA2BA,EAAAA,mDAAAA,CAAAA,CAAAA;AACrC,KAAA,GACAC,SAAQ,CAAA,CAAA;;IAGd,OAAOV,WAAW,CAACZ,iBAAAA,CAAkB,CAAC;AACpC,QAAA,GAAGW,OAAO;AACVH,QAAAA,OAAAA;QACAM,QACEH,EAAAA,OAAAA,CAAQG,QAAQ,KACfZ,QAAAA,GACGqB,gDAAwBtB,MAAQS,EAAAA,UAAAA,CAAAA,GAChCc,+BAAgBvB,CAAAA,MAAAA,EAAQS,UAAU,CAAA,CAAA;AAC1C,KAAA,CAAA,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qraftAPIClient.cjs","sources":["../../src/qraftAPIClient.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/query-core';\nimport type * as callbacks from './callbacks/index.js';\nimport type * as operationInvokeModule from './callbacks/operationInvokeFn.js';\nimport type {\n OperationSchema,\n RequestFnInfo,\n RequestFnResponse,\n} from './lib/requestFn.js';\nimport type {\n ServiceOperationMutation,\n ServiceOperationQuery,\n} from './service-operation/index.js';\nimport type { ServiceOperationMutationFn } from './service-operation/ServiceOperationMutationFn.js';\nimport type { ServiceOperationQueryFn } from './service-operation/ServiceOperationQueryFn.js';\nimport { createRecursiveProxy } from './lib/createRecursiveProxy.js';\n\nexport interface CreateAPIBasicClientOptions {\n requestFn<TData, TError>(\n schema: OperationSchema,\n requestInfo: RequestFnInfo\n ): Promise<RequestFnResponse<TData, TError>>;\n baseUrl: string;\n}\n\nexport interface CreateAPIQueryClientOptions\n extends CreateAPIBasicClientOptions {\n queryClient: QueryClient;\n}\n\n/**\n * @deprecated use `CreateAPIClientOptions` instead\n */\nexport type QraftClientOptions =\n | CreateAPIBasicClientOptions\n | CreateAPIQueryClientOptions;\n\nexport type CreateAPIClientOptions =\n | CreateAPIBasicClientOptions\n | CreateAPIQueryClientOptions;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIBasicClientOptions\n): APIBasicClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Required<Callbacks>,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIQueryClientOptions\n): Services;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIQueryClientOptions\n): APIQueryClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks\n): APIUtilityClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options?: CreateAPIClientOptions\n): APIQueryClientServices<Services, TCallbacks> | Services {\n return createRecursiveProxy(\n function getCallback(getPath, key) {\n if (getPath.length !== 2 || key !== 'schema') return; // todo::maybe return callback?\n\n const serviceOperation = getByPath(services, getPath);\n if (!isServiceOperation(serviceOperation))\n throw new Error(`Service operation not found: ${getPath.join('.')}`);\n return serviceOperation.schema;\n },\n function applyCallback(applyPath, args) {\n const { path, callbackName } = extractCallbackDetails(applyPath);\n\n assertValidCallbackName(callbackName, callbacks);\n\n const serviceOperation = getByPath(services, path);\n\n if (!isServiceOperation(serviceOperation))\n throw new Error(`Service operation not found: ${path.join('.')}`);\n\n if (\n callbackName !== 'operationInvokeFn' &&\n callbackName !== 'getQueryKey' &&\n callbackName !== 'getMutationKey'\n )\n if (!options || !('queryClient' in options && options.queryClient))\n throw new Error(\n `'qraft.<service>.<operation>.${String(callbackName)}()' requires 'queryClient' in options.`\n );\n\n // @ts-expect-error - Too complex union type\n return callbacks[callbackName](options, serviceOperation.schema, args);\n },\n []\n ) as never;\n}\n\nfunction assertValidCallbackName<\n TCallbacks extends Record<string, (...rest: any[]) => unknown>,\n>(\n callbackName: string | number | symbol,\n callbacks: TCallbacks\n): asserts callbackName is keyof TCallbacks {\n if (!(callbackName in callbacks)) {\n if ((callbackName as OperationInvokeFnName) === 'operationInvokeFn')\n throw new Error(\n `Callback 'operationInvokeFn' is required for executing 'qraft.<service>.<operation>()', but it is not provided in the 'callbacks' object.`\n );\n throw new Error(\n `Callback for 'qraft.<service>.<operation>.${String(callbackName)}()' is not provided in the 'callbacks' object.`\n );\n }\n}\n\n/**\n * Extracts Callback details from the applyPath\n * @param applyPath\n */\nfunction extractCallbackDetails(applyPath: string[]) {\n // <service>.<operation>()\n if (applyPath.length === 2) {\n return {\n path: applyPath,\n callbackName: 'operationInvokeFn' satisfies OperationInvokeFnName,\n };\n } else {\n // <service>.<operation>.<method>()\n return {\n path: applyPath.slice(0, -1),\n // The last arg is for instance `.useMutation` or `.useQuery()`\n callbackName: applyPath[applyPath.length - 1],\n };\n }\n}\n\nfunction isServiceOperation(\n input: unknown\n): input is { schema: OperationSchema } {\n return input !== null && typeof input === 'object' && 'schema' in input;\n}\n\nfunction getByPath(obj: Record<string, unknown>, path: string[]) {\n return path.reduce<unknown>((acc, key) => {\n if (acc && typeof acc === 'object' && key in acc)\n return acc[key as keyof typeof acc];\n }, obj);\n}\n\ntype Callbacks = Partial<typeof callbacks>;\n\ntype ServicesDeclaration<Services> = {\n [service in keyof Services]: {\n [method in keyof Services[service]]: {\n schema: OperationSchema;\n types: {\n parameters?: any;\n data?: any;\n error?: any;\n body?: any;\n };\n };\n };\n};\n\ntype ServiceSchemasDeclaration<Services extends ServicesDeclaration<Services>> =\n {\n [service in keyof Services]: {\n [method in keyof Services[service]]: {\n schema: Services[service][method]['schema'];\n };\n };\n };\n\ntype QueryOperationCallbacks = Extract<\n keyof Callbacks,\n | 'cancelQueries'\n | 'fetchInfiniteQuery'\n | 'fetchQuery'\n | 'getInfiniteQueryData'\n | 'getInfiniteQueryKey'\n | 'getInfiniteQueryState'\n | 'getQueriesData'\n | 'getQueryData'\n | 'getQueryKey'\n | 'getQueryState'\n | 'invalidateQueries'\n | 'isFetching'\n | 'prefetchInfiniteQuery'\n | 'prefetchQuery'\n | 'refetchQueries'\n | 'removeQueries'\n | 'resetQueries'\n | 'setInfiniteQueryData'\n | 'setQueriesData'\n | 'setQueryData'\n | 'useInfiniteQuery'\n | 'useIsFetching'\n | 'useQueries'\n | 'useQuery'\n | 'useSuspenseInfiniteQuery'\n | 'useSuspenseQueries'\n | 'useSuspenseQuery'\n>;\n\ntype MutationOperationCallbacks = Extract<\n keyof Callbacks,\n | 'getMutationKey'\n | 'isMutating'\n | 'useIsMutating'\n | 'useMutation'\n | 'useMutationState'\n>;\n\nexport type APIQueryClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n TCallbacks,\n QueryOperationCallbacks,\n MutationOperationCallbacks\n>;\n\nexport type APIUtilityClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n Omit<TCallbacks, 'operationInvokeFn'>,\n Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>,\n Extract<MutationOperationCallbacks, 'getMutationKey'>\n>;\n\nexport type APIBasicClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n TCallbacks,\n Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>,\n Extract<MutationOperationCallbacks, 'getMutationKey'>\n>;\n\ntype ServicesFilteredByCallbacks<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n TQueryOperationCallbacks extends QueryOperationCallbacks,\n TMutationOperationCallbacks extends MutationOperationCallbacks,\n> = {\n [serviceName in keyof TServices]: {\n [method in keyof TServices[serviceName]]: TServices[serviceName][method]['schema']['method'] extends\n | 'get'\n | 'head'\n | 'options'\n ? Pick<\n ServiceOperationQuery<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >,\n | Extract<keyof TCallbacks, TQueryOperationCallbacks>\n | 'types'\n | 'schema'\n > &\n (OperationInvokeFnName extends keyof TCallbacks\n ? ServiceOperationQueryFn<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >\n : {})\n : Pick<\n ServiceOperationMutation<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['body'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >,\n | Extract<keyof TCallbacks, TMutationOperationCallbacks>\n | 'types'\n | 'schema'\n > &\n (OperationInvokeFnName extends keyof TCallbacks\n ? ServiceOperationMutationFn<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['body'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >\n : {});\n };\n};\n\ntype OperationInvokeFnName = Extract<\n keyof typeof operationInvokeModule,\n 'operationInvokeFn'\n>;\n"],"names":["qraftAPIClient","services","callbacks","options","createRecursiveProxy","getCallback","getPath","key","length","serviceOperation","getByPath","isServiceOperation","Error","join","schema","applyCallback","applyPath","args","path","callbackName","extractCallbackDetails","assertValidCallbackName","queryClient","String","slice","input","obj","reduce","acc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qraftAPIClient.cjs","sources":["../../src/qraftAPIClient.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/query-core';\nimport type * as callbacks from './callbacks/index.js';\nimport type * as operationInvokeModule from './callbacks/operationInvokeFn.js';\nimport type {\n OperationSchema,\n RequestFnInfo,\n RequestFnResponse,\n} from './lib/requestFn.js';\nimport type {\n ServiceOperationMutation,\n ServiceOperationQuery,\n} from './service-operation/index.js';\nimport type { ServiceOperationMutationFn } from './service-operation/ServiceOperationMutationFn.js';\nimport type { ServiceOperationQueryFn } from './service-operation/ServiceOperationQueryFn.js';\nimport { createRecursiveProxy } from './lib/createRecursiveProxy.js';\n\nexport interface CreateAPIBasicClientOptions {\n requestFn<TData, TError>(\n schema: OperationSchema,\n requestInfo: RequestFnInfo\n ): Promise<RequestFnResponse<TData, TError>>;\n baseUrl: string;\n}\n\nexport interface CreateAPIBasicQueryClientOptions {\n queryClient: QueryClient;\n}\n\nexport interface CreateAPIQueryClientOptions\n extends CreateAPIBasicClientOptions,\n CreateAPIBasicQueryClientOptions {}\n\n/**\n * @deprecated use `CreateAPIClientOptions` instead\n */\nexport type QraftClientOptions =\n | CreateAPIBasicClientOptions\n | CreateAPIQueryClientOptions;\n\nexport type CreateAPIClientOptions =\n | CreateAPIBasicClientOptions\n | CreateAPIBasicQueryClientOptions\n | CreateAPIQueryClientOptions;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIBasicClientOptions\n): APIBasicClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Required<Callbacks>,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIQueryClientOptions\n): Services;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIBasicQueryClientOptions\n): APIBasicQueryClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIQueryClientOptions\n): APIQueryClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks\n): APIUtilityClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options?: CreateAPIClientOptions\n): APIQueryClientServices<Services, TCallbacks> | Services {\n return createRecursiveProxy(\n function getCallback(getPath, key) {\n if (getPath.length !== 2 || key !== 'schema') return; // todo::maybe return callback?\n\n const serviceOperation = getByPath(services, getPath);\n if (!isServiceOperation(serviceOperation))\n throw new Error(`Service operation not found: ${getPath.join('.')}`);\n return serviceOperation.schema;\n },\n function applyCallback(applyPath, args) {\n const { path, callbackName } = extractCallbackDetails(applyPath);\n\n assertValidCallbackName(callbackName, callbacks);\n\n const serviceOperation = getByPath(services, path);\n\n if (!isServiceOperation(serviceOperation))\n throw new Error(`Service operation not found: ${path.join('.')}`);\n\n if (\n callbackName !== 'operationInvokeFn' &&\n callbackName !== 'getQueryKey' &&\n callbackName !== 'getMutationKey'\n )\n if (!options || !('queryClient' in options && options.queryClient))\n throw new Error(\n `'qraft.<service>.<operation>.${String(callbackName)}()' requires 'queryClient' in options.`\n );\n\n // @ts-expect-error - Too complex union type\n return callbacks[callbackName](options, serviceOperation.schema, args);\n },\n []\n ) as never;\n}\n\nfunction assertValidCallbackName<\n TCallbacks extends Record<string, (...rest: any[]) => unknown>,\n>(\n callbackName: string | number | symbol,\n callbacks: TCallbacks\n): asserts callbackName is keyof TCallbacks {\n if (!(callbackName in callbacks)) {\n if ((callbackName as OperationInvokeFnName) === 'operationInvokeFn')\n throw new Error(\n `Callback 'operationInvokeFn' is required for executing 'qraft.<service>.<operation>()', but it is not provided in the 'callbacks' object.`\n );\n throw new Error(\n `Callback for 'qraft.<service>.<operation>.${String(callbackName)}()' is not provided in the 'callbacks' object.`\n );\n }\n}\n\n/**\n * Extracts Callback details from the applyPath\n * @param applyPath\n */\nfunction extractCallbackDetails(applyPath: string[]) {\n // <service>.<operation>()\n if (applyPath.length === 2) {\n return {\n path: applyPath,\n callbackName: 'operationInvokeFn' satisfies OperationInvokeFnName,\n };\n } else {\n // <service>.<operation>.<method>()\n return {\n path: applyPath.slice(0, -1),\n // The last arg is for instance `.useMutation` or `.useQuery()`\n callbackName: applyPath[applyPath.length - 1],\n };\n }\n}\n\nfunction isServiceOperation(\n input: unknown\n): input is { schema: OperationSchema } {\n return input !== null && typeof input === 'object' && 'schema' in input;\n}\n\nfunction getByPath(obj: Record<string, unknown>, path: string[]) {\n return path.reduce<unknown>((acc, key) => {\n if (acc && typeof acc === 'object' && key in acc)\n return acc[key as keyof typeof acc];\n }, obj);\n}\n\ntype Callbacks = Partial<typeof callbacks>;\n\ntype ServicesDeclaration<Services> = {\n [service in keyof Services]: {\n [method in keyof Services[service]]: {\n schema: OperationSchema;\n types: {\n parameters?: any;\n data?: any;\n error?: any;\n body?: any;\n };\n };\n };\n};\n\ntype ServiceSchemasDeclaration<Services extends ServicesDeclaration<Services>> =\n {\n [service in keyof Services]: {\n [method in keyof Services[service]]: {\n schema: Services[service][method]['schema'];\n };\n };\n };\n\ntype QueryOperationCallbacks = Extract<\n keyof Callbacks,\n | 'cancelQueries'\n | 'fetchInfiniteQuery'\n | 'fetchQuery'\n | 'getInfiniteQueryData'\n | 'getInfiniteQueryKey'\n | 'getInfiniteQueryState'\n | 'getQueriesData'\n | 'getQueryData'\n | 'getQueryKey'\n | 'getQueryState'\n | 'invalidateQueries'\n | 'isFetching'\n | 'prefetchInfiniteQuery'\n | 'prefetchQuery'\n | 'refetchQueries'\n | 'removeQueries'\n | 'resetQueries'\n | 'setInfiniteQueryData'\n | 'setQueriesData'\n | 'setQueryData'\n | 'useInfiniteQuery'\n | 'useIsFetching'\n | 'useQueries'\n | 'useQuery'\n | 'useSuspenseInfiniteQuery'\n | 'useSuspenseQueries'\n | 'useSuspenseQuery'\n>;\n\ntype MutationOperationCallbacks = Extract<\n keyof Callbacks,\n | 'getMutationKey'\n | 'isMutating'\n | 'useIsMutating'\n | 'useMutation'\n | 'useMutationState'\n>;\n\nexport type APIQueryClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n TCallbacks,\n QueryOperationCallbacks,\n MutationOperationCallbacks\n>;\n\nexport type APIBasicQueryClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n Omit<TCallbacks, 'operationInvokeFn'>,\n Extract<\n QueryOperationCallbacks,\n | 'resetQueries'\n | 'removeQueries'\n | 'cancelQueries'\n | 'invalidateQueries'\n | 'refetchQueries'\n | 'getQueryKey'\n | 'getInfiniteQueryState'\n | 'getInfiniteQueryData'\n | 'getInfiniteQueryKey'\n | 'setInfiniteQueryData'\n | 'getQueriesData'\n | 'setQueriesData'\n | 'getQueryState'\n | 'getQueryData'\n | 'setQueryData'\n | 'useIsFetching'\n | 'isFetching'\n >,\n Extract<\n MutationOperationCallbacks,\n 'getMutationKey' | 'useMutationState' | 'useIsMutating' | 'isMutating'\n >\n>;\n\nexport type APIUtilityClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n Omit<TCallbacks, 'operationInvokeFn'>,\n Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>,\n Extract<MutationOperationCallbacks, 'getMutationKey'>\n>;\n\nexport type APIBasicClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n TCallbacks,\n Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>,\n Extract<MutationOperationCallbacks, 'getMutationKey'>\n>;\n\ntype ServicesFilteredByCallbacks<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n TQueryOperationCallbacks extends QueryOperationCallbacks,\n TMutationOperationCallbacks extends MutationOperationCallbacks,\n> = {\n [serviceName in keyof TServices]: {\n [method in keyof TServices[serviceName]]: TServices[serviceName][method]['schema']['method'] extends\n | 'get'\n | 'head'\n | 'options'\n ? Pick<\n ServiceOperationQuery<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >,\n | Extract<keyof TCallbacks, TQueryOperationCallbacks>\n | 'types'\n | 'schema'\n > &\n (OperationInvokeFnName extends keyof TCallbacks\n ? ServiceOperationQueryFn<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >\n : {})\n : Pick<\n ServiceOperationMutation<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['body'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >,\n | Extract<keyof TCallbacks, TMutationOperationCallbacks>\n | 'types'\n | 'schema'\n > &\n (OperationInvokeFnName extends keyof TCallbacks\n ? ServiceOperationMutationFn<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['body'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >\n : {});\n };\n};\n\ntype OperationInvokeFnName = Extract<\n keyof typeof operationInvokeModule,\n 'operationInvokeFn'\n>;\n"],"names":["qraftAPIClient","services","callbacks","options","createRecursiveProxy","getCallback","getPath","key","length","serviceOperation","getByPath","isServiceOperation","Error","join","schema","applyCallback","applyPath","args","path","callbackName","extractCallbackDetails","assertValidCallbackName","queryClient","String","slice","input","obj","reduce","acc"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var shelfMerge = require('./lib/shelfMerge.cjs');
|
|
4
|
+
|
|
5
|
+
function qraftPredefinedParametersRequestFn(inputPredefinedParameters, targetPredefinedParameters, requestFn) {
|
|
6
|
+
return function predefinedParametersRequestFn(schema, requestInfo, options) {
|
|
7
|
+
const matchingInputPredefinedParameters = targetPredefinedParameters.flatMap((targetParameter)=>targetParameter.paths.includes(schema.url) && (!targetParameter.methods.length || targetParameter.methods.includes(schema.method)) ? inputPredefinedParameters.filter((predefinedParameter)=>predefinedParameter.requestPattern === targetParameter.requestPattern) : []);
|
|
8
|
+
if (!matchingInputPredefinedParameters?.length) return requestFn(schema, requestInfo, options);
|
|
9
|
+
return Promise.all(matchingInputPredefinedParameters.map((item)=>resolveQraftPredefinedParameters(item.parameters))).then((resolvedPredefinedParameters)=>{
|
|
10
|
+
const mergedParameters = resolvedPredefinedParameters.reduce((acc, item)=>{
|
|
11
|
+
acc = shelfMerge.shelfMerge(2, acc, item);
|
|
12
|
+
return acc;
|
|
13
|
+
}, {});
|
|
14
|
+
return requestFn(schema, {
|
|
15
|
+
...requestInfo,
|
|
16
|
+
parameters: shelfMerge.shelfMerge(2, mergedParameters, requestInfo.parameters)
|
|
17
|
+
}, options);
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
async function resolveQraftPredefinedParameters(predefinedParameters) {
|
|
22
|
+
return Promise.all(predefinedParameters.map(async (predefinedParameter)=>{
|
|
23
|
+
return {
|
|
24
|
+
...predefinedParameter,
|
|
25
|
+
value: await resolveQraftPredefinedParameterValue(predefinedParameter.value)
|
|
26
|
+
};
|
|
27
|
+
})).then((resolvedPredefinedParameters)=>resolvedPredefinedParameters.filter((resolvedPredefinedParameter)=>resolvedPredefinedParameter.value !== undefined).reduce((acc, resolvedPredefinedParameter)=>{
|
|
28
|
+
acc[resolvedPredefinedParameter.in] = acc[resolvedPredefinedParameter.in] ?? {};
|
|
29
|
+
acc[resolvedPredefinedParameter.in][resolvedPredefinedParameter.name] = resolvedPredefinedParameter.value;
|
|
30
|
+
return acc;
|
|
31
|
+
}, {}));
|
|
32
|
+
}
|
|
33
|
+
async function resolveQraftPredefinedParameterValue(value) {
|
|
34
|
+
if (value && typeof value === 'function') return await value();
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
exports.qraftPredefinedParametersRequestFn = qraftPredefinedParametersRequestFn;
|
|
39
|
+
//# sourceMappingURL=qraftPredefinedParametersRequestFn.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qraftPredefinedParametersRequestFn.cjs","sources":["../../src/qraftPredefinedParametersRequestFn.ts"],"sourcesContent":["import type {\n OperationSchema,\n RequestFn,\n RequestFnInfo,\n RequestFnOptions,\n RequestFnResponse,\n} from './lib/requestFn.js';\nimport { shelfMerge } from './lib/shelfMerge.js';\n\nexport type QraftPredefinedParameterValue<TValue> =\n | TValue\n | (() => Promise<TValue | undefined>)\n | undefined;\n\nexport type InputPredefinedParametersItem<TValue> = {\n requestPattern: string;\n parameters: Array<{\n in: 'header' | 'query' | 'cookie';\n name: string;\n value: QraftPredefinedParameterValue<TValue>;\n }>;\n};\n\ntype TargetPredefinedParametersMethods =\n | 'get'\n | 'post'\n | 'put'\n | 'patch'\n | 'delete'\n | 'options'\n | 'head'\n | 'trace';\n\nexport type TargetPredefinedParametersItem = {\n requestPattern: string;\n methods:\n | Array<TargetPredefinedParametersMethods>\n | ReadonlyArray<Readonly<TargetPredefinedParametersMethods>>;\n paths: Array<string> | ReadonlyArray<Readonly<string>>;\n};\n\nexport function qraftPredefinedParametersRequestFn<\n TInputPredefinedParametersItem extends InputPredefinedParametersItem<any>,\n TData,\n TError,\n>(\n inputPredefinedParameters:\n | Array<TInputPredefinedParametersItem>\n | ReadonlyArray<Readonly<TInputPredefinedParametersItem>>,\n targetPredefinedParameters:\n | Array<TargetPredefinedParametersItem>\n | ReadonlyArray<Readonly<TargetPredefinedParametersItem>>,\n requestFn: RequestFn<TData, TError>\n): RequestFn<TData, TError> {\n return function predefinedParametersRequestFn(\n schema: OperationSchema,\n requestInfo: RequestFnInfo,\n options?: RequestFnOptions\n ): Promise<RequestFnResponse<TData, TError>> {\n const matchingInputPredefinedParameters =\n targetPredefinedParameters.flatMap((targetParameter) =>\n targetParameter.paths.includes(schema.url) &&\n (!targetParameter.methods.length ||\n targetParameter.methods.includes(schema.method))\n ? inputPredefinedParameters.filter(\n (predefinedParameter) =>\n predefinedParameter.requestPattern ===\n targetParameter.requestPattern\n )\n : []\n );\n\n if (!matchingInputPredefinedParameters?.length)\n return requestFn(schema, requestInfo, options);\n\n return Promise.all(\n matchingInputPredefinedParameters.map((item) =>\n resolveQraftPredefinedParameters(item.parameters)\n )\n ).then((resolvedPredefinedParameters) => {\n const mergedParameters = resolvedPredefinedParameters.reduce(\n (acc, item) => {\n acc = shelfMerge(2, acc, item);\n return acc;\n },\n {}\n );\n\n return requestFn(\n schema,\n {\n ...requestInfo,\n parameters: shelfMerge(2, mergedParameters, requestInfo.parameters),\n },\n options\n );\n });\n };\n}\n\nasync function resolveQraftPredefinedParameters<T>(\n predefinedParameters: InputPredefinedParametersItem<T>['parameters']\n) {\n return Promise.all(\n predefinedParameters.map(async (predefinedParameter) => {\n return {\n ...predefinedParameter,\n value: await resolveQraftPredefinedParameterValue(\n predefinedParameter.value\n ),\n };\n })\n ).then((resolvedPredefinedParameters) =>\n resolvedPredefinedParameters\n .filter(\n (resolvedPredefinedParameter) =>\n resolvedPredefinedParameter.value !== undefined\n )\n .reduce(\n (acc, resolvedPredefinedParameter) => {\n acc[resolvedPredefinedParameter.in] =\n acc[resolvedPredefinedParameter.in] ?? {};\n\n acc[resolvedPredefinedParameter.in][\n resolvedPredefinedParameter.name\n ] = resolvedPredefinedParameter.value;\n\n return acc;\n },\n {} as Record<string, Record<string, unknown>>\n )\n );\n}\n\ntype QraftPredefinedParameterResolvedValue<TData> = TData extends () => Promise<\n infer TAsyncData\n>\n ? TAsyncData\n : TData;\n\nasync function resolveQraftPredefinedParameterValue<TData>(\n value: QraftPredefinedParameterValue<TData>\n): Promise<QraftPredefinedParameterResolvedValue<TData>> {\n if (value && typeof value === 'function')\n return (await (\n value as () => Promise<TData | undefined>\n )()) as QraftPredefinedParameterResolvedValue<TData>;\n return value as QraftPredefinedParameterResolvedValue<TData>;\n}\n"],"names":["qraftPredefinedParametersRequestFn","inputPredefinedParameters","targetPredefinedParameters","requestFn","predefinedParametersRequestFn","schema","requestInfo","options","matchingInputPredefinedParameters","flatMap","targetParameter","paths","includes","url","methods","length","method","filter","predefinedParameter","requestPattern","Promise","all","map","item","resolveQraftPredefinedParameters","parameters","then","resolvedPredefinedParameters","mergedParameters","reduce","acc","shelfMerge","predefinedParameters","value","resolveQraftPredefinedParameterValue","resolvedPredefinedParameter","undefined","in","name"],"mappings":";;;;AAyCO,SAASA,kCAKdC,CAAAA,yBAE2D,EAC3DC,0BAE2D,EAC3DC,SAAmC,EAAA;AAEnC,IAAA,OAAO,SAASC,6BACdC,CAAAA,MAAuB,EACvBC,WAA0B,EAC1BC,OAA0B,EAAA;AAE1B,QAAA,MAAMC,oCACJN,0BAA2BO,CAAAA,OAAO,CAAC,CAACC,eAAAA,GAClCA,gBAAgBC,KAAK,CAACC,QAAQ,CAACP,OAAOQ,GAAG,CAAA,KACxC,CAACH,eAAAA,CAAgBI,OAAO,CAACC,MAAM,IAC9BL,eAAAA,CAAgBI,OAAO,CAACF,QAAQ,CAACP,MAAOW,CAAAA,MAAM,CAAA,CAC5Cf,GAAAA,yBAAAA,CAA0BgB,MAAM,CAC9B,CAACC,sBACCA,mBAAoBC,CAAAA,cAAc,KAClCT,eAAgBS,CAAAA,cAAc,IAElC,EAAE,CAAA,CAAA;AAGV,QAAA,IAAI,CAACX,iCAAmCO,EAAAA,MAAAA,EACtC,OAAOZ,SAAAA,CAAUE,QAAQC,WAAaC,EAAAA,OAAAA,CAAAA,CAAAA;AAExC,QAAA,OAAOa,OAAQC,CAAAA,GAAG,CAChBb,iCAAAA,CAAkCc,GAAG,CAAC,CAACC,IACrCC,GAAAA,gCAAAA,CAAiCD,IAAKE,CAAAA,UAAU,CAElDC,CAAAA,CAAAA,CAAAA,IAAI,CAAC,CAACC,4BAAAA,GAAAA;AACN,YAAA,MAAMC,gBAAmBD,GAAAA,4BAAAA,CAA6BE,MAAM,CAC1D,CAACC,GAAKP,EAAAA,IAAAA,GAAAA;gBACJO,GAAMC,GAAAA,qBAAAA,CAAW,GAAGD,GAAKP,EAAAA,IAAAA,CAAAA,CAAAA;gBACzB,OAAOO,GAAAA,CAAAA;AACT,aAAA,EACA,EAAC,CAAA,CAAA;AAGH,YAAA,OAAO3B,UACLE,MACA,EAAA;AACE,gBAAA,GAAGC,WAAW;AACdmB,gBAAAA,UAAAA,EAAYM,qBAAW,CAAA,CAAA,EAAGH,gBAAkBtB,EAAAA,WAAAA,CAAYmB,UAAU,CAAA;aAEpElB,EAAAA,OAAAA,CAAAA,CAAAA;AAEJ,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEA,eAAeiB,iCACbQ,oBAAoE,EAAA;AAEpE,IAAA,OAAOZ,QAAQC,GAAG,CAChBW,oBAAqBV,CAAAA,GAAG,CAAC,OAAOJ,mBAAAA,GAAAA;QAC9B,OAAO;AACL,YAAA,GAAGA,mBAAmB;YACtBe,KAAO,EAAA,MAAMC,oCACXhB,CAAAA,mBAAAA,CAAoBe,KAAK,CAAA;AAE7B,SAAA,CAAA;AACF,KAAA,CAAA,CAAA,CACAP,IAAI,CAAC,CAACC,4BACNA,GAAAA,4BAAAA,CACGV,MAAM,CACL,CAACkB,2BACCA,GAAAA,2BAAAA,CAA4BF,KAAK,KAAKG,SAAAA,CAAAA,CAEzCP,MAAM,CACL,CAACC,GAAKK,EAAAA,2BAAAA,GAAAA;YACJL,GAAG,CAACK,2BAA4BE,CAAAA,EAAE,CAAC,GACjCP,GAAG,CAACK,2BAA4BE,CAAAA,EAAE,CAAC,IAAI,EAAC,CAAA;YAE1CP,GAAG,CAACK,2BAA4BE,CAAAA,EAAE,CAAC,CACjCF,4BAA4BG,IAAI,CACjC,GAAGH,2BAAAA,CAA4BF,KAAK,CAAA;YAErC,OAAOH,GAAAA,CAAAA;AACT,SAAA,EACA,EAAC,CAAA,CAAA,CAAA;AAGT,CAAA;AAQA,eAAeI,qCACbD,KAA2C,EAAA;AAE3C,IAAA,IAAIA,SAAS,OAAOA,KAAAA,KAAU,UAC5B,EAAA,OAAQ,MAAM,KACZA,EAAAA,CAAAA;IAEJ,OAAOA,KAAAA,CAAAA;AACT;;;;"}
|
|
@@ -17,15 +17,14 @@ import { shelfMerge } from './shelfMerge.js';
|
|
|
17
17
|
if (options.queryKey && parameters) {
|
|
18
18
|
throw new Error('callQueryClientMethodWithQueryKey: options.queryKey and options.parameters are mutually exclusive');
|
|
19
19
|
}
|
|
20
|
-
const queryFn = queryFnOption ??
|
|
21
|
-
function({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
20
|
+
const queryFn = queryFnOption ?? (requestFn ? function({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
22
21
|
return requestFn(schema, {
|
|
23
22
|
parameters: infinite ? shelfMerge(2, queryParams, pageParam) : queryParams,
|
|
24
23
|
baseUrl,
|
|
25
24
|
signal,
|
|
26
25
|
meta
|
|
27
26
|
}).then(requestFnResponseResolver, requestFnResponseResolver);
|
|
28
|
-
};
|
|
27
|
+
} : undefined);
|
|
29
28
|
// @ts-expect-error - Too complex union to type
|
|
30
29
|
return queryClient[queryFilterMethod]({
|
|
31
30
|
...options,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callQueryClientFetchMethod.js","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/query-core';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema, RequestFn } 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 * 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 // @ts-expect-error - Too complex union to type\n
|
|
1
|
+
{"version":3,"file":"callQueryClientFetchMethod.js","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/query-core';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema, RequestFn } 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 * 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 return requestFn(schema, {\n parameters: infinite\n ? (shelfMerge(2, queryParams, pageParam) as never)\n : queryParams,\n baseUrl,\n signal,\n meta,\n }).then(requestFnResponseResolver, requestFnResponseResolver);\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<'fetchInfiniteQuery'>\n | QueryKeyMethod<'prefetchInfiniteQuery'>;\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","shelfMerge","then","requestFnResponseResolver","undefined","composeInfiniteQueryKey","composeQueryKey"],"mappings":";;;;;AAQA;;;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;AAC9D,QAAA,OAAOd,UAAUH,MAAQ,EAAA;AACvBS,YAAAA,UAAAA,EAAYR,QACPiB,GAAAA,UAAAA,CAAW,CAAGJ,EAAAA,WAAAA,EAAaG,SAC5BH,CAAAA,GAAAA,WAAAA;AACJT,YAAAA,OAAAA;AACAU,YAAAA,MAAAA;AACAC,YAAAA,IAAAA;SACCG,CAAAA,CAAAA,IAAI,CAACC,yBAA2BA,EAAAA,yBAAAA,CAAAA,CAAAA;AACrC,KAAA,GACAC,SAAQ,CAAA,CAAA;;IAGd,OAAOV,WAAW,CAACZ,iBAAAA,CAAkB,CAAC;AACpC,QAAA,GAAGW,OAAO;AACVH,QAAAA,OAAAA;QACAM,QACEH,EAAAA,OAAAA,CAAQG,QAAQ,KACfZ,QAAAA,GACGqB,wBAAwBtB,MAAQS,EAAAA,UAAAA,CAAAA,GAChCc,eAAgBvB,CAAAA,MAAAA,EAAQS,UAAU,CAAA,CAAA;AAC1C,KAAA,CAAA,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qraftAPIClient.js","sources":["../../src/qraftAPIClient.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/query-core';\nimport type * as callbacks from './callbacks/index.js';\nimport type * as operationInvokeModule from './callbacks/operationInvokeFn.js';\nimport type {\n OperationSchema,\n RequestFnInfo,\n RequestFnResponse,\n} from './lib/requestFn.js';\nimport type {\n ServiceOperationMutation,\n ServiceOperationQuery,\n} from './service-operation/index.js';\nimport type { ServiceOperationMutationFn } from './service-operation/ServiceOperationMutationFn.js';\nimport type { ServiceOperationQueryFn } from './service-operation/ServiceOperationQueryFn.js';\nimport { createRecursiveProxy } from './lib/createRecursiveProxy.js';\n\nexport interface CreateAPIBasicClientOptions {\n requestFn<TData, TError>(\n schema: OperationSchema,\n requestInfo: RequestFnInfo\n ): Promise<RequestFnResponse<TData, TError>>;\n baseUrl: string;\n}\n\nexport interface CreateAPIQueryClientOptions\n extends CreateAPIBasicClientOptions {\n queryClient: QueryClient;\n}\n\n/**\n * @deprecated use `CreateAPIClientOptions` instead\n */\nexport type QraftClientOptions =\n | CreateAPIBasicClientOptions\n | CreateAPIQueryClientOptions;\n\nexport type CreateAPIClientOptions =\n | CreateAPIBasicClientOptions\n | CreateAPIQueryClientOptions;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIBasicClientOptions\n): APIBasicClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Required<Callbacks>,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIQueryClientOptions\n): Services;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIQueryClientOptions\n): APIQueryClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks\n): APIUtilityClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options?: CreateAPIClientOptions\n): APIQueryClientServices<Services, TCallbacks> | Services {\n return createRecursiveProxy(\n function getCallback(getPath, key) {\n if (getPath.length !== 2 || key !== 'schema') return; // todo::maybe return callback?\n\n const serviceOperation = getByPath(services, getPath);\n if (!isServiceOperation(serviceOperation))\n throw new Error(`Service operation not found: ${getPath.join('.')}`);\n return serviceOperation.schema;\n },\n function applyCallback(applyPath, args) {\n const { path, callbackName } = extractCallbackDetails(applyPath);\n\n assertValidCallbackName(callbackName, callbacks);\n\n const serviceOperation = getByPath(services, path);\n\n if (!isServiceOperation(serviceOperation))\n throw new Error(`Service operation not found: ${path.join('.')}`);\n\n if (\n callbackName !== 'operationInvokeFn' &&\n callbackName !== 'getQueryKey' &&\n callbackName !== 'getMutationKey'\n )\n if (!options || !('queryClient' in options && options.queryClient))\n throw new Error(\n `'qraft.<service>.<operation>.${String(callbackName)}()' requires 'queryClient' in options.`\n );\n\n // @ts-expect-error - Too complex union type\n return callbacks[callbackName](options, serviceOperation.schema, args);\n },\n []\n ) as never;\n}\n\nfunction assertValidCallbackName<\n TCallbacks extends Record<string, (...rest: any[]) => unknown>,\n>(\n callbackName: string | number | symbol,\n callbacks: TCallbacks\n): asserts callbackName is keyof TCallbacks {\n if (!(callbackName in callbacks)) {\n if ((callbackName as OperationInvokeFnName) === 'operationInvokeFn')\n throw new Error(\n `Callback 'operationInvokeFn' is required for executing 'qraft.<service>.<operation>()', but it is not provided in the 'callbacks' object.`\n );\n throw new Error(\n `Callback for 'qraft.<service>.<operation>.${String(callbackName)}()' is not provided in the 'callbacks' object.`\n );\n }\n}\n\n/**\n * Extracts Callback details from the applyPath\n * @param applyPath\n */\nfunction extractCallbackDetails(applyPath: string[]) {\n // <service>.<operation>()\n if (applyPath.length === 2) {\n return {\n path: applyPath,\n callbackName: 'operationInvokeFn' satisfies OperationInvokeFnName,\n };\n } else {\n // <service>.<operation>.<method>()\n return {\n path: applyPath.slice(0, -1),\n // The last arg is for instance `.useMutation` or `.useQuery()`\n callbackName: applyPath[applyPath.length - 1],\n };\n }\n}\n\nfunction isServiceOperation(\n input: unknown\n): input is { schema: OperationSchema } {\n return input !== null && typeof input === 'object' && 'schema' in input;\n}\n\nfunction getByPath(obj: Record<string, unknown>, path: string[]) {\n return path.reduce<unknown>((acc, key) => {\n if (acc && typeof acc === 'object' && key in acc)\n return acc[key as keyof typeof acc];\n }, obj);\n}\n\ntype Callbacks = Partial<typeof callbacks>;\n\ntype ServicesDeclaration<Services> = {\n [service in keyof Services]: {\n [method in keyof Services[service]]: {\n schema: OperationSchema;\n types: {\n parameters?: any;\n data?: any;\n error?: any;\n body?: any;\n };\n };\n };\n};\n\ntype ServiceSchemasDeclaration<Services extends ServicesDeclaration<Services>> =\n {\n [service in keyof Services]: {\n [method in keyof Services[service]]: {\n schema: Services[service][method]['schema'];\n };\n };\n };\n\ntype QueryOperationCallbacks = Extract<\n keyof Callbacks,\n | 'cancelQueries'\n | 'fetchInfiniteQuery'\n | 'fetchQuery'\n | 'getInfiniteQueryData'\n | 'getInfiniteQueryKey'\n | 'getInfiniteQueryState'\n | 'getQueriesData'\n | 'getQueryData'\n | 'getQueryKey'\n | 'getQueryState'\n | 'invalidateQueries'\n | 'isFetching'\n | 'prefetchInfiniteQuery'\n | 'prefetchQuery'\n | 'refetchQueries'\n | 'removeQueries'\n | 'resetQueries'\n | 'setInfiniteQueryData'\n | 'setQueriesData'\n | 'setQueryData'\n | 'useInfiniteQuery'\n | 'useIsFetching'\n | 'useQueries'\n | 'useQuery'\n | 'useSuspenseInfiniteQuery'\n | 'useSuspenseQueries'\n | 'useSuspenseQuery'\n>;\n\ntype MutationOperationCallbacks = Extract<\n keyof Callbacks,\n | 'getMutationKey'\n | 'isMutating'\n | 'useIsMutating'\n | 'useMutation'\n | 'useMutationState'\n>;\n\nexport type APIQueryClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n TCallbacks,\n QueryOperationCallbacks,\n MutationOperationCallbacks\n>;\n\nexport type APIUtilityClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n Omit<TCallbacks, 'operationInvokeFn'>,\n Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>,\n Extract<MutationOperationCallbacks, 'getMutationKey'>\n>;\n\nexport type APIBasicClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n TCallbacks,\n Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>,\n Extract<MutationOperationCallbacks, 'getMutationKey'>\n>;\n\ntype ServicesFilteredByCallbacks<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n TQueryOperationCallbacks extends QueryOperationCallbacks,\n TMutationOperationCallbacks extends MutationOperationCallbacks,\n> = {\n [serviceName in keyof TServices]: {\n [method in keyof TServices[serviceName]]: TServices[serviceName][method]['schema']['method'] extends\n | 'get'\n | 'head'\n | 'options'\n ? Pick<\n ServiceOperationQuery<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >,\n | Extract<keyof TCallbacks, TQueryOperationCallbacks>\n | 'types'\n | 'schema'\n > &\n (OperationInvokeFnName extends keyof TCallbacks\n ? ServiceOperationQueryFn<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >\n : {})\n : Pick<\n ServiceOperationMutation<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['body'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >,\n | Extract<keyof TCallbacks, TMutationOperationCallbacks>\n | 'types'\n | 'schema'\n > &\n (OperationInvokeFnName extends keyof TCallbacks\n ? ServiceOperationMutationFn<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['body'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >\n : {});\n };\n};\n\ntype OperationInvokeFnName = Extract<\n keyof typeof operationInvokeModule,\n 'operationInvokeFn'\n>;\n"],"names":["qraftAPIClient","services","callbacks","options","createRecursiveProxy","getCallback","getPath","key","length","serviceOperation","getByPath","isServiceOperation","Error","join","schema","applyCallback","applyPath","args","path","callbackName","extractCallbackDetails","assertValidCallbackName","queryClient","String","slice","input","obj","reduce","acc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qraftAPIClient.js","sources":["../../src/qraftAPIClient.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/query-core';\nimport type * as callbacks from './callbacks/index.js';\nimport type * as operationInvokeModule from './callbacks/operationInvokeFn.js';\nimport type {\n OperationSchema,\n RequestFnInfo,\n RequestFnResponse,\n} from './lib/requestFn.js';\nimport type {\n ServiceOperationMutation,\n ServiceOperationQuery,\n} from './service-operation/index.js';\nimport type { ServiceOperationMutationFn } from './service-operation/ServiceOperationMutationFn.js';\nimport type { ServiceOperationQueryFn } from './service-operation/ServiceOperationQueryFn.js';\nimport { createRecursiveProxy } from './lib/createRecursiveProxy.js';\n\nexport interface CreateAPIBasicClientOptions {\n requestFn<TData, TError>(\n schema: OperationSchema,\n requestInfo: RequestFnInfo\n ): Promise<RequestFnResponse<TData, TError>>;\n baseUrl: string;\n}\n\nexport interface CreateAPIBasicQueryClientOptions {\n queryClient: QueryClient;\n}\n\nexport interface CreateAPIQueryClientOptions\n extends CreateAPIBasicClientOptions,\n CreateAPIBasicQueryClientOptions {}\n\n/**\n * @deprecated use `CreateAPIClientOptions` instead\n */\nexport type QraftClientOptions =\n | CreateAPIBasicClientOptions\n | CreateAPIQueryClientOptions;\n\nexport type CreateAPIClientOptions =\n | CreateAPIBasicClientOptions\n | CreateAPIBasicQueryClientOptions\n | CreateAPIQueryClientOptions;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIBasicClientOptions\n): APIBasicClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Required<Callbacks>,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIQueryClientOptions\n): Services;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIBasicQueryClientOptions\n): APIBasicQueryClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options: CreateAPIQueryClientOptions\n): APIQueryClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks\n): APIUtilityClientServices<Services, TCallbacks>;\n\nexport function qraftAPIClient<\n Services extends ServicesDeclaration<Services>,\n TCallbacks extends Callbacks,\n>(\n services: ServiceSchemasDeclaration<Services>,\n callbacks: TCallbacks,\n options?: CreateAPIClientOptions\n): APIQueryClientServices<Services, TCallbacks> | Services {\n return createRecursiveProxy(\n function getCallback(getPath, key) {\n if (getPath.length !== 2 || key !== 'schema') return; // todo::maybe return callback?\n\n const serviceOperation = getByPath(services, getPath);\n if (!isServiceOperation(serviceOperation))\n throw new Error(`Service operation not found: ${getPath.join('.')}`);\n return serviceOperation.schema;\n },\n function applyCallback(applyPath, args) {\n const { path, callbackName } = extractCallbackDetails(applyPath);\n\n assertValidCallbackName(callbackName, callbacks);\n\n const serviceOperation = getByPath(services, path);\n\n if (!isServiceOperation(serviceOperation))\n throw new Error(`Service operation not found: ${path.join('.')}`);\n\n if (\n callbackName !== 'operationInvokeFn' &&\n callbackName !== 'getQueryKey' &&\n callbackName !== 'getMutationKey'\n )\n if (!options || !('queryClient' in options && options.queryClient))\n throw new Error(\n `'qraft.<service>.<operation>.${String(callbackName)}()' requires 'queryClient' in options.`\n );\n\n // @ts-expect-error - Too complex union type\n return callbacks[callbackName](options, serviceOperation.schema, args);\n },\n []\n ) as never;\n}\n\nfunction assertValidCallbackName<\n TCallbacks extends Record<string, (...rest: any[]) => unknown>,\n>(\n callbackName: string | number | symbol,\n callbacks: TCallbacks\n): asserts callbackName is keyof TCallbacks {\n if (!(callbackName in callbacks)) {\n if ((callbackName as OperationInvokeFnName) === 'operationInvokeFn')\n throw new Error(\n `Callback 'operationInvokeFn' is required for executing 'qraft.<service>.<operation>()', but it is not provided in the 'callbacks' object.`\n );\n throw new Error(\n `Callback for 'qraft.<service>.<operation>.${String(callbackName)}()' is not provided in the 'callbacks' object.`\n );\n }\n}\n\n/**\n * Extracts Callback details from the applyPath\n * @param applyPath\n */\nfunction extractCallbackDetails(applyPath: string[]) {\n // <service>.<operation>()\n if (applyPath.length === 2) {\n return {\n path: applyPath,\n callbackName: 'operationInvokeFn' satisfies OperationInvokeFnName,\n };\n } else {\n // <service>.<operation>.<method>()\n return {\n path: applyPath.slice(0, -1),\n // The last arg is for instance `.useMutation` or `.useQuery()`\n callbackName: applyPath[applyPath.length - 1],\n };\n }\n}\n\nfunction isServiceOperation(\n input: unknown\n): input is { schema: OperationSchema } {\n return input !== null && typeof input === 'object' && 'schema' in input;\n}\n\nfunction getByPath(obj: Record<string, unknown>, path: string[]) {\n return path.reduce<unknown>((acc, key) => {\n if (acc && typeof acc === 'object' && key in acc)\n return acc[key as keyof typeof acc];\n }, obj);\n}\n\ntype Callbacks = Partial<typeof callbacks>;\n\ntype ServicesDeclaration<Services> = {\n [service in keyof Services]: {\n [method in keyof Services[service]]: {\n schema: OperationSchema;\n types: {\n parameters?: any;\n data?: any;\n error?: any;\n body?: any;\n };\n };\n };\n};\n\ntype ServiceSchemasDeclaration<Services extends ServicesDeclaration<Services>> =\n {\n [service in keyof Services]: {\n [method in keyof Services[service]]: {\n schema: Services[service][method]['schema'];\n };\n };\n };\n\ntype QueryOperationCallbacks = Extract<\n keyof Callbacks,\n | 'cancelQueries'\n | 'fetchInfiniteQuery'\n | 'fetchQuery'\n | 'getInfiniteQueryData'\n | 'getInfiniteQueryKey'\n | 'getInfiniteQueryState'\n | 'getQueriesData'\n | 'getQueryData'\n | 'getQueryKey'\n | 'getQueryState'\n | 'invalidateQueries'\n | 'isFetching'\n | 'prefetchInfiniteQuery'\n | 'prefetchQuery'\n | 'refetchQueries'\n | 'removeQueries'\n | 'resetQueries'\n | 'setInfiniteQueryData'\n | 'setQueriesData'\n | 'setQueryData'\n | 'useInfiniteQuery'\n | 'useIsFetching'\n | 'useQueries'\n | 'useQuery'\n | 'useSuspenseInfiniteQuery'\n | 'useSuspenseQueries'\n | 'useSuspenseQuery'\n>;\n\ntype MutationOperationCallbacks = Extract<\n keyof Callbacks,\n | 'getMutationKey'\n | 'isMutating'\n | 'useIsMutating'\n | 'useMutation'\n | 'useMutationState'\n>;\n\nexport type APIQueryClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n TCallbacks,\n QueryOperationCallbacks,\n MutationOperationCallbacks\n>;\n\nexport type APIBasicQueryClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n Omit<TCallbacks, 'operationInvokeFn'>,\n Extract<\n QueryOperationCallbacks,\n | 'resetQueries'\n | 'removeQueries'\n | 'cancelQueries'\n | 'invalidateQueries'\n | 'refetchQueries'\n | 'getQueryKey'\n | 'getInfiniteQueryState'\n | 'getInfiniteQueryData'\n | 'getInfiniteQueryKey'\n | 'setInfiniteQueryData'\n | 'getQueriesData'\n | 'setQueriesData'\n | 'getQueryState'\n | 'getQueryData'\n | 'setQueryData'\n | 'useIsFetching'\n | 'isFetching'\n >,\n Extract<\n MutationOperationCallbacks,\n 'getMutationKey' | 'useMutationState' | 'useIsMutating' | 'isMutating'\n >\n>;\n\nexport type APIUtilityClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n Omit<TCallbacks, 'operationInvokeFn'>,\n Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>,\n Extract<MutationOperationCallbacks, 'getMutationKey'>\n>;\n\nexport type APIBasicClientServices<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n> = ServicesFilteredByCallbacks<\n TServices,\n TCallbacks,\n Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>,\n Extract<MutationOperationCallbacks, 'getMutationKey'>\n>;\n\ntype ServicesFilteredByCallbacks<\n TServices extends ServicesDeclaration<TServices>,\n TCallbacks extends Callbacks,\n TQueryOperationCallbacks extends QueryOperationCallbacks,\n TMutationOperationCallbacks extends MutationOperationCallbacks,\n> = {\n [serviceName in keyof TServices]: {\n [method in keyof TServices[serviceName]]: TServices[serviceName][method]['schema']['method'] extends\n | 'get'\n | 'head'\n | 'options'\n ? Pick<\n ServiceOperationQuery<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >,\n | Extract<keyof TCallbacks, TQueryOperationCallbacks>\n | 'types'\n | 'schema'\n > &\n (OperationInvokeFnName extends keyof TCallbacks\n ? ServiceOperationQueryFn<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >\n : {})\n : Pick<\n ServiceOperationMutation<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['body'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >,\n | Extract<keyof TCallbacks, TMutationOperationCallbacks>\n | 'types'\n | 'schema'\n > &\n (OperationInvokeFnName extends keyof TCallbacks\n ? ServiceOperationMutationFn<\n TServices[serviceName][method]['schema'],\n TServices[serviceName][method]['types']['body'],\n TServices[serviceName][method]['types']['data'],\n TServices[serviceName][method]['types']['parameters'],\n TServices[serviceName][method]['types']['error']\n >\n : {});\n };\n};\n\ntype OperationInvokeFnName = Extract<\n keyof typeof operationInvokeModule,\n 'operationInvokeFn'\n>;\n"],"names":["qraftAPIClient","services","callbacks","options","createRecursiveProxy","getCallback","getPath","key","length","serviceOperation","getByPath","isServiceOperation","Error","join","schema","applyCallback","applyPath","args","path","callbackName","extractCallbackDetails","assertValidCallbackName","queryClient","String","slice","input","obj","reduce","acc"],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { shelfMerge } from './lib/shelfMerge.js';
|
|
2
|
+
|
|
3
|
+
function qraftPredefinedParametersRequestFn(inputPredefinedParameters, targetPredefinedParameters, requestFn) {
|
|
4
|
+
return function predefinedParametersRequestFn(schema, requestInfo, options) {
|
|
5
|
+
const matchingInputPredefinedParameters = targetPredefinedParameters.flatMap((targetParameter)=>targetParameter.paths.includes(schema.url) && (!targetParameter.methods.length || targetParameter.methods.includes(schema.method)) ? inputPredefinedParameters.filter((predefinedParameter)=>predefinedParameter.requestPattern === targetParameter.requestPattern) : []);
|
|
6
|
+
if (!matchingInputPredefinedParameters?.length) return requestFn(schema, requestInfo, options);
|
|
7
|
+
return Promise.all(matchingInputPredefinedParameters.map((item)=>resolveQraftPredefinedParameters(item.parameters))).then((resolvedPredefinedParameters)=>{
|
|
8
|
+
const mergedParameters = resolvedPredefinedParameters.reduce((acc, item)=>{
|
|
9
|
+
acc = shelfMerge(2, acc, item);
|
|
10
|
+
return acc;
|
|
11
|
+
}, {});
|
|
12
|
+
return requestFn(schema, {
|
|
13
|
+
...requestInfo,
|
|
14
|
+
parameters: shelfMerge(2, mergedParameters, requestInfo.parameters)
|
|
15
|
+
}, options);
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
async function resolveQraftPredefinedParameters(predefinedParameters) {
|
|
20
|
+
return Promise.all(predefinedParameters.map(async (predefinedParameter)=>{
|
|
21
|
+
return {
|
|
22
|
+
...predefinedParameter,
|
|
23
|
+
value: await resolveQraftPredefinedParameterValue(predefinedParameter.value)
|
|
24
|
+
};
|
|
25
|
+
})).then((resolvedPredefinedParameters)=>resolvedPredefinedParameters.filter((resolvedPredefinedParameter)=>resolvedPredefinedParameter.value !== undefined).reduce((acc, resolvedPredefinedParameter)=>{
|
|
26
|
+
acc[resolvedPredefinedParameter.in] = acc[resolvedPredefinedParameter.in] ?? {};
|
|
27
|
+
acc[resolvedPredefinedParameter.in][resolvedPredefinedParameter.name] = resolvedPredefinedParameter.value;
|
|
28
|
+
return acc;
|
|
29
|
+
}, {}));
|
|
30
|
+
}
|
|
31
|
+
async function resolveQraftPredefinedParameterValue(value) {
|
|
32
|
+
if (value && typeof value === 'function') return await value();
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { qraftPredefinedParametersRequestFn };
|
|
37
|
+
//# sourceMappingURL=qraftPredefinedParametersRequestFn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qraftPredefinedParametersRequestFn.js","sources":["../../src/qraftPredefinedParametersRequestFn.ts"],"sourcesContent":["import type {\n OperationSchema,\n RequestFn,\n RequestFnInfo,\n RequestFnOptions,\n RequestFnResponse,\n} from './lib/requestFn.js';\nimport { shelfMerge } from './lib/shelfMerge.js';\n\nexport type QraftPredefinedParameterValue<TValue> =\n | TValue\n | (() => Promise<TValue | undefined>)\n | undefined;\n\nexport type InputPredefinedParametersItem<TValue> = {\n requestPattern: string;\n parameters: Array<{\n in: 'header' | 'query' | 'cookie';\n name: string;\n value: QraftPredefinedParameterValue<TValue>;\n }>;\n};\n\ntype TargetPredefinedParametersMethods =\n | 'get'\n | 'post'\n | 'put'\n | 'patch'\n | 'delete'\n | 'options'\n | 'head'\n | 'trace';\n\nexport type TargetPredefinedParametersItem = {\n requestPattern: string;\n methods:\n | Array<TargetPredefinedParametersMethods>\n | ReadonlyArray<Readonly<TargetPredefinedParametersMethods>>;\n paths: Array<string> | ReadonlyArray<Readonly<string>>;\n};\n\nexport function qraftPredefinedParametersRequestFn<\n TInputPredefinedParametersItem extends InputPredefinedParametersItem<any>,\n TData,\n TError,\n>(\n inputPredefinedParameters:\n | Array<TInputPredefinedParametersItem>\n | ReadonlyArray<Readonly<TInputPredefinedParametersItem>>,\n targetPredefinedParameters:\n | Array<TargetPredefinedParametersItem>\n | ReadonlyArray<Readonly<TargetPredefinedParametersItem>>,\n requestFn: RequestFn<TData, TError>\n): RequestFn<TData, TError> {\n return function predefinedParametersRequestFn(\n schema: OperationSchema,\n requestInfo: RequestFnInfo,\n options?: RequestFnOptions\n ): Promise<RequestFnResponse<TData, TError>> {\n const matchingInputPredefinedParameters =\n targetPredefinedParameters.flatMap((targetParameter) =>\n targetParameter.paths.includes(schema.url) &&\n (!targetParameter.methods.length ||\n targetParameter.methods.includes(schema.method))\n ? inputPredefinedParameters.filter(\n (predefinedParameter) =>\n predefinedParameter.requestPattern ===\n targetParameter.requestPattern\n )\n : []\n );\n\n if (!matchingInputPredefinedParameters?.length)\n return requestFn(schema, requestInfo, options);\n\n return Promise.all(\n matchingInputPredefinedParameters.map((item) =>\n resolveQraftPredefinedParameters(item.parameters)\n )\n ).then((resolvedPredefinedParameters) => {\n const mergedParameters = resolvedPredefinedParameters.reduce(\n (acc, item) => {\n acc = shelfMerge(2, acc, item);\n return acc;\n },\n {}\n );\n\n return requestFn(\n schema,\n {\n ...requestInfo,\n parameters: shelfMerge(2, mergedParameters, requestInfo.parameters),\n },\n options\n );\n });\n };\n}\n\nasync function resolveQraftPredefinedParameters<T>(\n predefinedParameters: InputPredefinedParametersItem<T>['parameters']\n) {\n return Promise.all(\n predefinedParameters.map(async (predefinedParameter) => {\n return {\n ...predefinedParameter,\n value: await resolveQraftPredefinedParameterValue(\n predefinedParameter.value\n ),\n };\n })\n ).then((resolvedPredefinedParameters) =>\n resolvedPredefinedParameters\n .filter(\n (resolvedPredefinedParameter) =>\n resolvedPredefinedParameter.value !== undefined\n )\n .reduce(\n (acc, resolvedPredefinedParameter) => {\n acc[resolvedPredefinedParameter.in] =\n acc[resolvedPredefinedParameter.in] ?? {};\n\n acc[resolvedPredefinedParameter.in][\n resolvedPredefinedParameter.name\n ] = resolvedPredefinedParameter.value;\n\n return acc;\n },\n {} as Record<string, Record<string, unknown>>\n )\n );\n}\n\ntype QraftPredefinedParameterResolvedValue<TData> = TData extends () => Promise<\n infer TAsyncData\n>\n ? TAsyncData\n : TData;\n\nasync function resolveQraftPredefinedParameterValue<TData>(\n value: QraftPredefinedParameterValue<TData>\n): Promise<QraftPredefinedParameterResolvedValue<TData>> {\n if (value && typeof value === 'function')\n return (await (\n value as () => Promise<TData | undefined>\n )()) as QraftPredefinedParameterResolvedValue<TData>;\n return value as QraftPredefinedParameterResolvedValue<TData>;\n}\n"],"names":["qraftPredefinedParametersRequestFn","inputPredefinedParameters","targetPredefinedParameters","requestFn","predefinedParametersRequestFn","schema","requestInfo","options","matchingInputPredefinedParameters","flatMap","targetParameter","paths","includes","url","methods","length","method","filter","predefinedParameter","requestPattern","Promise","all","map","item","resolveQraftPredefinedParameters","parameters","then","resolvedPredefinedParameters","mergedParameters","reduce","acc","shelfMerge","predefinedParameters","value","resolveQraftPredefinedParameterValue","resolvedPredefinedParameter","undefined","in","name"],"mappings":";;AAyCO,SAASA,kCAKdC,CAAAA,yBAE2D,EAC3DC,0BAE2D,EAC3DC,SAAmC,EAAA;AAEnC,IAAA,OAAO,SAASC,6BACdC,CAAAA,MAAuB,EACvBC,WAA0B,EAC1BC,OAA0B,EAAA;AAE1B,QAAA,MAAMC,oCACJN,0BAA2BO,CAAAA,OAAO,CAAC,CAACC,eAAAA,GAClCA,gBAAgBC,KAAK,CAACC,QAAQ,CAACP,OAAOQ,GAAG,CAAA,KACxC,CAACH,eAAAA,CAAgBI,OAAO,CAACC,MAAM,IAC9BL,eAAAA,CAAgBI,OAAO,CAACF,QAAQ,CAACP,MAAOW,CAAAA,MAAM,CAAA,CAC5Cf,GAAAA,yBAAAA,CAA0BgB,MAAM,CAC9B,CAACC,sBACCA,mBAAoBC,CAAAA,cAAc,KAClCT,eAAgBS,CAAAA,cAAc,IAElC,EAAE,CAAA,CAAA;AAGV,QAAA,IAAI,CAACX,iCAAmCO,EAAAA,MAAAA,EACtC,OAAOZ,SAAAA,CAAUE,QAAQC,WAAaC,EAAAA,OAAAA,CAAAA,CAAAA;AAExC,QAAA,OAAOa,OAAQC,CAAAA,GAAG,CAChBb,iCAAAA,CAAkCc,GAAG,CAAC,CAACC,IACrCC,GAAAA,gCAAAA,CAAiCD,IAAKE,CAAAA,UAAU,CAElDC,CAAAA,CAAAA,CAAAA,IAAI,CAAC,CAACC,4BAAAA,GAAAA;AACN,YAAA,MAAMC,gBAAmBD,GAAAA,4BAAAA,CAA6BE,MAAM,CAC1D,CAACC,GAAKP,EAAAA,IAAAA,GAAAA;gBACJO,GAAMC,GAAAA,UAAAA,CAAW,GAAGD,GAAKP,EAAAA,IAAAA,CAAAA,CAAAA;gBACzB,OAAOO,GAAAA,CAAAA;AACT,aAAA,EACA,EAAC,CAAA,CAAA;AAGH,YAAA,OAAO3B,UACLE,MACA,EAAA;AACE,gBAAA,GAAGC,WAAW;AACdmB,gBAAAA,UAAAA,EAAYM,UAAW,CAAA,CAAA,EAAGH,gBAAkBtB,EAAAA,WAAAA,CAAYmB,UAAU,CAAA;aAEpElB,EAAAA,OAAAA,CAAAA,CAAAA;AAEJ,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEA,eAAeiB,iCACbQ,oBAAoE,EAAA;AAEpE,IAAA,OAAOZ,QAAQC,GAAG,CAChBW,oBAAqBV,CAAAA,GAAG,CAAC,OAAOJ,mBAAAA,GAAAA;QAC9B,OAAO;AACL,YAAA,GAAGA,mBAAmB;YACtBe,KAAO,EAAA,MAAMC,oCACXhB,CAAAA,mBAAAA,CAAoBe,KAAK,CAAA;AAE7B,SAAA,CAAA;AACF,KAAA,CAAA,CAAA,CACAP,IAAI,CAAC,CAACC,4BACNA,GAAAA,4BAAAA,CACGV,MAAM,CACL,CAACkB,2BACCA,GAAAA,2BAAAA,CAA4BF,KAAK,KAAKG,SAAAA,CAAAA,CAEzCP,MAAM,CACL,CAACC,GAAKK,EAAAA,2BAAAA,GAAAA;YACJL,GAAG,CAACK,2BAA4BE,CAAAA,EAAE,CAAC,GACjCP,GAAG,CAACK,2BAA4BE,CAAAA,EAAE,CAAC,IAAI,EAAC,CAAA;YAE1CP,GAAG,CAACK,2BAA4BE,CAAAA,EAAE,CAAC,CACjCF,4BAA4BG,IAAI,CACjC,GAAGH,2BAAAA,CAA4BF,KAAK,CAAA;YAErC,OAAOH,GAAAA,CAAAA;AACT,SAAA,EACA,EAAC,CAAA,CAAA,CAAA;AAGT,CAAA;AAQA,eAAeI,qCACbD,KAA2C,EAAA;AAE3C,IAAA,IAAIA,SAAS,OAAOA,KAAAA,KAAU,UAC5B,EAAA,OAAQ,MAAM,KACZA,EAAAA,CAAAA;IAEJ,OAAOA,KAAAA,CAAAA;AACT;;;;"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { qraftAPIClient, type CreateAPIClientOptions, type CreateAPIBasicClientOptions, type CreateAPIQueryClientOptions, type APIQueryClientServices, type APIBasicClientServices, type APIUtilityClientServices, type QraftClientOptions, } from './qraftAPIClient.js';
|
|
1
|
+
export { qraftAPIClient, type CreateAPIClientOptions, type CreateAPIBasicQueryClientOptions, type CreateAPIBasicClientOptions, type CreateAPIQueryClientOptions, type APIQueryClientServices, type APIBasicQueryClientServices, type APIBasicClientServices, type APIUtilityClientServices, type QraftClientOptions, } from './qraftAPIClient.js';
|
|
2
2
|
export { requestFn, baseRequestFn, urlSerializer, bodySerializer, mergeHeaders, type RequestFnResponse, } from './lib/requestFn.js';
|
|
3
3
|
export type { RequestFnPayload, RequestFnOptions, HeadersOptions, OperationSchema, RequestFn, } from './lib/requestFn.js';
|
|
4
4
|
export type * from './service-operation/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,SAAS,GACV,MAAM,oBAAoB,CAAC;AAE5B,mBAAmB,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,gCAAgC,EACrC,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,SAAS,GACV,MAAM,oBAAoB,CAAC;AAE5B,mBAAmB,8BAA8B,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,
|
|
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,oBAAoB,CAAC,GACpC,cAAc,CAAC,uBAAuB,CAAC,CAAC;AAE5C,KAAK,oBAAoB,GAAG,OAAO,WAAW,CAAC,SAAS,CAAC;AAEzD,KAAK,cAAc,CAAC,QAAQ,SAAS,MAAM,OAAO,WAAW,CAAC,SAAS,IACrE,QAAQ,CAAC"}
|
|
@@ -9,16 +9,19 @@ export interface CreateAPIBasicClientOptions {
|
|
|
9
9
|
requestFn<TData, TError>(schema: OperationSchema, requestInfo: RequestFnInfo): Promise<RequestFnResponse<TData, TError>>;
|
|
10
10
|
baseUrl: string;
|
|
11
11
|
}
|
|
12
|
-
export interface
|
|
12
|
+
export interface CreateAPIBasicQueryClientOptions {
|
|
13
13
|
queryClient: QueryClient;
|
|
14
14
|
}
|
|
15
|
+
export interface CreateAPIQueryClientOptions extends CreateAPIBasicClientOptions, CreateAPIBasicQueryClientOptions {
|
|
16
|
+
}
|
|
15
17
|
/**
|
|
16
18
|
* @deprecated use `CreateAPIClientOptions` instead
|
|
17
19
|
*/
|
|
18
20
|
export type QraftClientOptions = CreateAPIBasicClientOptions | CreateAPIQueryClientOptions;
|
|
19
|
-
export type CreateAPIClientOptions = CreateAPIBasicClientOptions | CreateAPIQueryClientOptions;
|
|
21
|
+
export type CreateAPIClientOptions = CreateAPIBasicClientOptions | CreateAPIBasicQueryClientOptions | CreateAPIQueryClientOptions;
|
|
20
22
|
export declare function qraftAPIClient<Services extends ServicesDeclaration<Services>, TCallbacks extends Callbacks>(services: ServiceSchemasDeclaration<Services>, callbacks: TCallbacks, options: CreateAPIBasicClientOptions): APIBasicClientServices<Services, TCallbacks>;
|
|
21
23
|
export declare function qraftAPIClient<Services extends ServicesDeclaration<Services>, TCallbacks extends Required<Callbacks>>(services: ServiceSchemasDeclaration<Services>, callbacks: TCallbacks, options: CreateAPIQueryClientOptions): Services;
|
|
24
|
+
export declare function qraftAPIClient<Services extends ServicesDeclaration<Services>, TCallbacks extends Callbacks>(services: ServiceSchemasDeclaration<Services>, callbacks: TCallbacks, options: CreateAPIBasicQueryClientOptions): APIBasicQueryClientServices<Services, TCallbacks>;
|
|
22
25
|
export declare function qraftAPIClient<Services extends ServicesDeclaration<Services>, TCallbacks extends Callbacks>(services: ServiceSchemasDeclaration<Services>, callbacks: TCallbacks, options: CreateAPIQueryClientOptions): APIQueryClientServices<Services, TCallbacks>;
|
|
23
26
|
export declare function qraftAPIClient<Services extends ServicesDeclaration<Services>, TCallbacks extends Callbacks>(services: ServiceSchemasDeclaration<Services>, callbacks: TCallbacks): APIUtilityClientServices<Services, TCallbacks>;
|
|
24
27
|
type Callbacks = Partial<typeof callbacks>;
|
|
@@ -45,6 +48,7 @@ type ServiceSchemasDeclaration<Services extends ServicesDeclaration<Services>> =
|
|
|
45
48
|
type QueryOperationCallbacks = Extract<keyof Callbacks, 'cancelQueries' | 'fetchInfiniteQuery' | 'fetchQuery' | 'getInfiniteQueryData' | 'getInfiniteQueryKey' | 'getInfiniteQueryState' | 'getQueriesData' | 'getQueryData' | 'getQueryKey' | 'getQueryState' | 'invalidateQueries' | 'isFetching' | 'prefetchInfiniteQuery' | 'prefetchQuery' | 'refetchQueries' | 'removeQueries' | 'resetQueries' | 'setInfiniteQueryData' | 'setQueriesData' | 'setQueryData' | 'useInfiniteQuery' | 'useIsFetching' | 'useQueries' | 'useQuery' | 'useSuspenseInfiniteQuery' | 'useSuspenseQueries' | 'useSuspenseQuery'>;
|
|
46
49
|
type MutationOperationCallbacks = Extract<keyof Callbacks, 'getMutationKey' | 'isMutating' | 'useIsMutating' | 'useMutation' | 'useMutationState'>;
|
|
47
50
|
export type APIQueryClientServices<TServices extends ServicesDeclaration<TServices>, TCallbacks extends Callbacks> = ServicesFilteredByCallbacks<TServices, TCallbacks, QueryOperationCallbacks, MutationOperationCallbacks>;
|
|
51
|
+
export type APIBasicQueryClientServices<TServices extends ServicesDeclaration<TServices>, TCallbacks extends Callbacks> = ServicesFilteredByCallbacks<TServices, Omit<TCallbacks, 'operationInvokeFn'>, Extract<QueryOperationCallbacks, 'resetQueries' | 'removeQueries' | 'cancelQueries' | 'invalidateQueries' | 'refetchQueries' | 'getQueryKey' | 'getInfiniteQueryState' | 'getInfiniteQueryData' | 'getInfiniteQueryKey' | 'setInfiniteQueryData' | 'getQueriesData' | 'setQueriesData' | 'getQueryState' | 'getQueryData' | 'setQueryData' | 'useIsFetching' | 'isFetching'>, Extract<MutationOperationCallbacks, 'getMutationKey' | 'useMutationState' | 'useIsMutating' | 'isMutating'>>;
|
|
48
52
|
export type APIUtilityClientServices<TServices extends ServicesDeclaration<TServices>, TCallbacks extends Callbacks> = ServicesFilteredByCallbacks<TServices, Omit<TCallbacks, 'operationInvokeFn'>, Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>, Extract<MutationOperationCallbacks, 'getMutationKey'>>;
|
|
49
53
|
export type APIBasicClientServices<TServices extends ServicesDeclaration<TServices>, TCallbacks extends Callbacks> = ServicesFilteredByCallbacks<TServices, TCallbacks, Extract<QueryOperationCallbacks, 'getQueryKey' | 'getInfiniteQueryKey'>, Extract<MutationOperationCallbacks, 'getMutationKey'>>;
|
|
50
54
|
type ServicesFilteredByCallbacks<TServices extends ServicesDeclaration<TServices>, TCallbacks extends Callbacks, TQueryOperationCallbacks extends QueryOperationCallbacks, TMutationOperationCallbacks extends MutationOperationCallbacks> = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qraftAPIClient.d.ts","sourceRoot":"","sources":["../../src/qraftAPIClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,KAAK,SAAS,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,KAAK,qBAAqB,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AACpG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAG9F,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,KAAK,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,aAAa,GACzB,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"qraftAPIClient.d.ts","sourceRoot":"","sources":["../../src/qraftAPIClient.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openapi-qraft/react",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.6",
|
|
4
4
|
"description": "API 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,9 +15,9 @@
|
|
|
15
15
|
},
|
|
16
16
|
"sideEffects": false,
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@openapi-qraft/cli": "2.0.0-next.
|
|
18
|
+
"@openapi-qraft/cli": "2.0.0-next.6",
|
|
19
19
|
"@openapi-qraft/eslint-config": "1.0.0",
|
|
20
|
-
"@openapi-qraft/openapi-typescript-plugin": "^1.2.0-next.
|
|
20
|
+
"@openapi-qraft/openapi-typescript-plugin": "^1.2.0-next.6",
|
|
21
21
|
"@openapi-qraft/rollup-config": "1.1.0-next.0",
|
|
22
22
|
"@openapi-qraft/test-fixtures": "1.0.0",
|
|
23
23
|
"@tanstack/react-query": "^5.17.3",
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export {
|
|
2
2
|
qraftAPIClient,
|
|
3
3
|
type CreateAPIClientOptions,
|
|
4
|
+
type CreateAPIBasicQueryClientOptions,
|
|
4
5
|
type CreateAPIBasicClientOptions,
|
|
5
6
|
type CreateAPIQueryClientOptions,
|
|
6
7
|
type APIQueryClientServices,
|
|
8
|
+
type APIBasicQueryClientServices,
|
|
7
9
|
type APIBasicClientServices,
|
|
8
10
|
type APIUtilityClientServices,
|
|
9
11
|
type QraftClientOptions,
|
|
@@ -46,17 +46,19 @@ export function callQueryClientMethodWithQueryKey<
|
|
|
46
46
|
|
|
47
47
|
const queryFn =
|
|
48
48
|
queryFnOption ??
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
49
|
+
(requestFn
|
|
50
|
+
? // @ts-expect-error - Too complex union to type
|
|
51
|
+
function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
|
|
52
|
+
return requestFn(schema, {
|
|
53
|
+
parameters: infinite
|
|
54
|
+
? (shelfMerge(2, queryParams, pageParam) as never)
|
|
55
|
+
: queryParams,
|
|
56
|
+
baseUrl,
|
|
57
|
+
signal,
|
|
58
|
+
meta,
|
|
59
|
+
}).then(requestFnResponseResolver, requestFnResponseResolver);
|
|
60
|
+
}
|
|
61
|
+
: undefined);
|
|
60
62
|
|
|
61
63
|
// @ts-expect-error - Too complex union to type
|
|
62
64
|
return queryClient[queryFilterMethod]({
|
package/src/qraftAPIClient.ts
CHANGED
|
@@ -22,11 +22,14 @@ export interface CreateAPIBasicClientOptions {
|
|
|
22
22
|
baseUrl: string;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export interface
|
|
26
|
-
extends CreateAPIBasicClientOptions {
|
|
25
|
+
export interface CreateAPIBasicQueryClientOptions {
|
|
27
26
|
queryClient: QueryClient;
|
|
28
27
|
}
|
|
29
28
|
|
|
29
|
+
export interface CreateAPIQueryClientOptions
|
|
30
|
+
extends CreateAPIBasicClientOptions,
|
|
31
|
+
CreateAPIBasicQueryClientOptions {}
|
|
32
|
+
|
|
30
33
|
/**
|
|
31
34
|
* @deprecated use `CreateAPIClientOptions` instead
|
|
32
35
|
*/
|
|
@@ -36,6 +39,7 @@ export type QraftClientOptions =
|
|
|
36
39
|
|
|
37
40
|
export type CreateAPIClientOptions =
|
|
38
41
|
| CreateAPIBasicClientOptions
|
|
42
|
+
| CreateAPIBasicQueryClientOptions
|
|
39
43
|
| CreateAPIQueryClientOptions;
|
|
40
44
|
|
|
41
45
|
export function qraftAPIClient<
|
|
@@ -56,6 +60,15 @@ export function qraftAPIClient<
|
|
|
56
60
|
options: CreateAPIQueryClientOptions
|
|
57
61
|
): Services;
|
|
58
62
|
|
|
63
|
+
export function qraftAPIClient<
|
|
64
|
+
Services extends ServicesDeclaration<Services>,
|
|
65
|
+
TCallbacks extends Callbacks,
|
|
66
|
+
>(
|
|
67
|
+
services: ServiceSchemasDeclaration<Services>,
|
|
68
|
+
callbacks: TCallbacks,
|
|
69
|
+
options: CreateAPIBasicQueryClientOptions
|
|
70
|
+
): APIBasicQueryClientServices<Services, TCallbacks>;
|
|
71
|
+
|
|
59
72
|
export function qraftAPIClient<
|
|
60
73
|
Services extends ServicesDeclaration<Services>,
|
|
61
74
|
TCallbacks extends Callbacks,
|
|
@@ -243,6 +256,38 @@ export type APIQueryClientServices<
|
|
|
243
256
|
MutationOperationCallbacks
|
|
244
257
|
>;
|
|
245
258
|
|
|
259
|
+
export type APIBasicQueryClientServices<
|
|
260
|
+
TServices extends ServicesDeclaration<TServices>,
|
|
261
|
+
TCallbacks extends Callbacks,
|
|
262
|
+
> = ServicesFilteredByCallbacks<
|
|
263
|
+
TServices,
|
|
264
|
+
Omit<TCallbacks, 'operationInvokeFn'>,
|
|
265
|
+
Extract<
|
|
266
|
+
QueryOperationCallbacks,
|
|
267
|
+
| 'resetQueries'
|
|
268
|
+
| 'removeQueries'
|
|
269
|
+
| 'cancelQueries'
|
|
270
|
+
| 'invalidateQueries'
|
|
271
|
+
| 'refetchQueries'
|
|
272
|
+
| 'getQueryKey'
|
|
273
|
+
| 'getInfiniteQueryState'
|
|
274
|
+
| 'getInfiniteQueryData'
|
|
275
|
+
| 'getInfiniteQueryKey'
|
|
276
|
+
| 'setInfiniteQueryData'
|
|
277
|
+
| 'getQueriesData'
|
|
278
|
+
| 'setQueriesData'
|
|
279
|
+
| 'getQueryState'
|
|
280
|
+
| 'getQueryData'
|
|
281
|
+
| 'setQueryData'
|
|
282
|
+
| 'useIsFetching'
|
|
283
|
+
| 'isFetching'
|
|
284
|
+
>,
|
|
285
|
+
Extract<
|
|
286
|
+
MutationOperationCallbacks,
|
|
287
|
+
'getMutationKey' | 'useMutationState' | 'useIsMutating' | 'isMutating'
|
|
288
|
+
>
|
|
289
|
+
>;
|
|
290
|
+
|
|
246
291
|
export type APIUtilityClientServices<
|
|
247
292
|
TServices extends ServicesDeclaration<TServices>,
|
|
248
293
|
TCallbacks extends Callbacks,
|