@openapi-qraft/react 1.0.0-beta.5 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @openapi-qraft/react
2
2
 
3
+ ## 1.0.1
4
+
5
+ ### Major Changes
6
+
7
+ - c545cb2: chore: First release of the `@openapi-qraft/*` packages.
8
+
9
+ ### Patch Changes
10
+
11
+ - 269e464: feature: Add support for `useSuspenseQuery(..)` hook
12
+ - 8f0359d: Add a 'use client' header for compatibility with Next.js /app
13
+ - 0640daf: feature: Add support for `useMutationState(..)` hook
14
+ - ddb4d87: docs: Update README
15
+ - cc93fc3: feature: Add support for `useSuspenseInfiniteQuery(..)` hook
16
+ - 2509822: refactor: `getMutationKey` type, and change key composition logic if parameters are `undefined`
17
+ - fb6b450: chore: Bump
18
+
19
+ ## 1.0.0-beta.6
20
+
21
+ ### Patch Changes
22
+
23
+ - 75dbf6f: feature: add support of `useMutationState(..)` hook
24
+ - 1ae85df: refactor: `getMutationKey` type and composed key if parameters are `undefined`
25
+
3
26
  ## 1.0.0-beta.5
4
27
 
5
28
  ### Patch Changes
package/README.md CHANGED
@@ -21,7 +21,7 @@ hooks with typed parameters, ensuring that your API requests are both type-safe
21
21
  First, install the core package for your project:
22
22
 
23
23
  ```bash
24
- npm install @openapi-qraft/react@beta
24
+ npm install @openapi-qraft/react
25
25
  ```
26
26
 
27
27
  If your project doesn't already include `@tanstack/react-query`, you'll also need to install it. This package is
@@ -60,7 +60,7 @@ Next, use `@openapi-qraft/cli` to generate the services and typed Tanstack Query
60
60
  to the TypeScript definitions generated in the previous step.
61
61
 
62
62
  ```bash
63
- npx @openapi-qraft/cli@beta https://api.dev.monite.com/openapi.json?version=2023-09-01 --output-dir src/api --openapi-types-import-path '../openapi.d.ts'
63
+ npx @openapi-qraft/cli https://api.dev.monite.com/openapi.json?version=2023-09-01 --output-dir src/api --openapi-types-import-path '../openapi.d.ts'
64
64
  ```
65
65
 
66
66
  By completing these steps, you will generate `openapi.d.ts`, which serves as a TypeScript representation of the
@@ -243,6 +243,34 @@ mutation.mutate({
243
243
  });
244
244
  ```
245
245
 
246
+ ### [useMutationState 🔗](https://tanstack.com/query/latest/docs/framework/react/reference/useMutationState)
247
+
248
+ Mutation state is a helper hook that provides the current state of a mutation globally.
249
+ It could be used to track the status of a mutation in any component, which is useful for showing loading spinners or
250
+ disabling buttons.
251
+
252
+ ```ts
253
+ const { mutate } = qraft.entities.postEntitiesIdDocuments.useMutation({
254
+ path: {
255
+ entity_id: '3e3e-3e3e-3e3e',
256
+ },
257
+ header: {
258
+ 'x-monite-version': '2023-09-01',
259
+ },
260
+ });
261
+
262
+ const mutationState = qraft.entities.postEntitiesIdDocuments
263
+ // You can pass Partial parameters, or even `undefined` to specify filters
264
+ .useMutationState({ path: { entity_id: '3e3e-3e3e-3e3e' } })
265
+ ?.at(0);
266
+
267
+ useEffect(() => {
268
+ if (!mutationState || mutationState.status === 'iddle') {
269
+ mutate({ company_tax_id_verification: ['verification-id'] });
270
+ }
271
+ }, [mutate, mutationState?.status]);
272
+ ```
273
+
246
274
  ### [useInfiniteQuery 🔗](https://tanstack.com/query/latest/docs/framework/react/reference/useInfiniteQuery)
247
275
 
248
276
  #### _Offset-based_
@@ -257,6 +285,7 @@ mutation.mutate({
257
285
  const infiniteQuery = qraft.posts.getPosts.useInfiniteQuery(
258
286
  { query: { limit: 10 } },
259
287
  {
288
+ // * required by Tanstack Query
260
289
  getNextPageParam: (lastPage, allPages, lastPageParams) => {
261
290
  if (lastPage.length < 10) return; // if less than 10 items, there are no more pages
262
291
  return {
@@ -265,6 +294,7 @@ const infiniteQuery = qraft.posts.getPosts.useInfiniteQuery(
265
294
  },
266
295
  };
267
296
  },
297
+ // * required by Tanstack Query
268
298
  initialPageParam: {
269
299
  query: {
270
300
  page: 1, // will be used in initial request
@@ -1,4 +1,4 @@
1
- import { DefaultError, InfiniteData, InfiniteQueryPageParamsOptions, NoInfer, QueryClient, SetDataOptions, Updater } from '@tanstack/query-core';
1
+ import { DefaultError, InfiniteData, InfiniteQueryPageParamsOptions, Mutation, MutationState, MutationStatus, NoInfer, QueryClient, SetDataOptions, Updater } from '@tanstack/query-core';
2
2
  import { DefinedInitialDataInfiniteOptions, DefinedInitialDataOptions, DefinedUseInfiniteQueryResult, DefinedUseQueryResult, UndefinedInitialDataInfiniteOptions, UndefinedInitialDataOptions, UseInfiniteQueryResult, UseMutationOptions, UseMutationResult, UseQueryResult, UseSuspenseInfiniteQueryOptions, UseSuspenseInfiniteQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult } from '@tanstack/react-query';
3
3
  export type ServiceOperationQueryKey<S extends {
4
4
  url: string;
@@ -14,7 +14,7 @@ export type ServiceOperationInfiniteQueryKey<S extends {
14
14
  },
15
15
  T
16
16
  ];
17
- export type ServiceOperationMutationKey<S extends Record<'url' | 'method', string>, T> = [Pick<S, 'url' | 'method'>, T];
17
+ export type ServiceOperationMutationKey<S extends Record<'url' | 'method', string>, T extends unknown> = NonNullable<T> extends never ? [Pick<S, 'url' | 'method'>] : [Pick<S, 'url' | 'method'>, T];
18
18
  export interface ServiceOperationQuery<TSchema extends {
19
19
  url: string;
20
20
  method: string;
@@ -55,21 +55,58 @@ interface ServiceOperationUseSuspenseQueryQuery<TSchema extends {
55
55
  export interface ServiceOperationMutation<TSchema extends {
56
56
  url: string;
57
57
  method: string;
58
- }, TBody, TData, TParams, TError = DefaultError> extends ServiceOperationUseMutation<TSchema, TBody, TData, TParams, TError>, ServiceOperationMutationFn<TSchema, TBody, TData, TParams>, ServiceOperationSetQueryData<TData, TParams> {
58
+ }, TBody, TData, TParams, TError = DefaultError> extends ServiceOperationUseMutation<TSchema, TBody, TData, TParams, TError>, ServiceOperationUseMutationState<TSchema, TBody, TData, TParams, TError>, ServiceOperationMutationFn<TSchema, TBody, TData, TParams>, ServiceOperationSetQueryData<TData, TParams> {
59
59
  schema: TSchema;
60
60
  }
61
61
  interface ServiceOperationUseMutation<TSchema extends {
62
62
  url: string;
63
63
  method: string;
64
64
  }, TBody, TData, TParams, TError = DefaultError> {
65
- getMutationKey<T extends TParams>(params: T): ServiceOperationMutationKey<TSchema, T>;
66
- useMutation<TVariables extends {
67
- body: TBody;
68
- } & (NonNullable<TParams> extends never ? {} : TParams), TContext = unknown>(params?: undefined, options?: Omit<UseMutationOptions<TData, TError, TVariables, TContext>, 'mutationKey'> & {
65
+ getMutationKey<T extends TParams>(params: T | undefined): ServiceOperationMutationKey<TSchema, T>;
66
+ useMutation<TVariables extends MutationVariables<TBody, TParams>, TContext = unknown>(params?: undefined, options?: Omit<UseMutationOptions<TData, TError, TVariables, TContext>, 'mutationKey'> & {
69
67
  mutationKey?: ServiceOperationMutationKey<TSchema, NonNullable<TParams> extends never ? {} : TParams>;
70
68
  }, queryClient?: QueryClient): UseMutationResult<TData, TError | Error, TVariables, TContext>;
71
69
  useMutation<TVariables extends TBody, TContext = unknown>(params: TParams, options?: Omit<UseMutationOptions<TData, TError, TVariables, TContext>, 'mutationKey'>, queryClient?: QueryClient): UseMutationResult<TData, TError | Error, TVariables, TContext>;
72
70
  }
71
+ type MutationFilters<TSchema extends {
72
+ url: string;
73
+ method: string;
74
+ }, TBody, TData, TParams, TError = DefaultError, TContext = unknown> = {
75
+ /**
76
+ * Match mutation key exactly
77
+ */
78
+ exact?: boolean;
79
+ /**
80
+ * Include mutations matching this predicate function
81
+ */
82
+ predicate?: (mutation: Mutation<TData, TError, MutationVariables<TBody, TParams>, TContext>) => boolean;
83
+ /**
84
+ * Filter by mutation status
85
+ */
86
+ status?: MutationStatus;
87
+ } & ({
88
+ /**
89
+ * Include mutations matching this mutation key
90
+ */
91
+ mutationKey?: ServiceOperationMutationKey<TSchema, PartialParams<TParams>>;
92
+ } | {
93
+ /**
94
+ * Include mutations matching these parameters
95
+ */
96
+ parameters?: PartialParams<TParams>;
97
+ });
98
+ type MutationVariables<TBody, TParams> = {
99
+ body: TBody;
100
+ } & (NonNullable<TParams> extends never ? {} : TParams);
101
+ interface ServiceOperationUseMutationState<TSchema extends {
102
+ url: string;
103
+ method: string;
104
+ }, TBody, TData, TParams, TError = DefaultError> {
105
+ useMutationState<TContext = unknown, TResult = MutationState<TData, TError, MutationVariables<TBody, TParams>, TContext>>(options?: {
106
+ filters?: MutationFilters<TSchema, TBody, TData, TParams, TError, TContext>;
107
+ select?: (mutation: Mutation<TData, TError, MutationVariables<TBody, TParams>, TContext>) => TResult;
108
+ }, queryClient?: QueryClient): Array<TResult>;
109
+ }
73
110
  interface ServiceOperationQueryFn<TSchema extends {
74
111
  url: string;
75
112
  method: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceOperation.d.ts","sourceRoot":"","sources":["../src/ServiceOperation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServiceOperation.d.ts","sourceRoot":"","sources":["../src/ServiceOperation.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { QraftClientOptions } from '../qraftAPIClient.js';
2
2
  import type { RequestClientSchema } from '../RequestClient.js';
3
- import { ServiceOperationMutationKey } from '../ServiceOperation.js';
4
- export declare const getMutationKey: (qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: unknown) => ServiceOperationMutationKey<RequestClientSchema, unknown>;
3
+ import { ServiceOperationMutation } from '../ServiceOperation.js';
4
+ export declare const getMutationKey: (qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationMutation<RequestClientSchema, unknown, unknown, unknown>['getMutationKey']>) => [Pick<RequestClientSchema, "url" | "method">, unknown];
5
5
  //# sourceMappingURL=getMutationKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMutationKey.d.ts","sourceRoot":"","sources":["../../src/callbacks/getMutationKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,cAAc,iBACX,kBAAkB,GAAG,SAAS,UACpC,mBAAmB,QACrB,OAAO,8DAoBd,CAAC"}
1
+ {"version":3,"file":"getMutationKey.d.ts","sourceRoot":"","sources":["../../src/callbacks/getMutationKey.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAO,MAAM,cAAc,iBACX,kBAAkB,GAAG,SAAS,UACpC,mBAAmB,QACrB,WACJ,yBACE,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,OAAO,CACR,CAAC,gBAAgB,CAAC,CACpB,2DAGF,CAAC"}
@@ -1,22 +1,5 @@
1
+ import { composeMutationKey } from '../lib/composeMutationKey.js';
1
2
  export const getMutationKey = (qraftOptions, schema, args) => {
2
- const [parameters] = args;
3
- const key = [
4
- {
5
- url: schema.url,
6
- method: schema.method,
7
- },
8
- omitMutationPayload(parameters),
9
- ];
10
- return key;
3
+ return composeMutationKey(schema, args[0]);
11
4
  };
12
- function omitMutationPayload(params) {
13
- if (!params || typeof params !== 'object')
14
- throw new Error('`params` must be object');
15
- if ('body' in params || 'requestBody' in params) {
16
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
- const { body, requestBody, ...paramsRest } = params;
18
- return paramsRest;
19
- }
20
- return params;
21
- }
22
5
  //# sourceMappingURL=getMutationKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMutationKey.js","sourceRoot":"","sources":["../../src/callbacks/getMutationKey.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,YAA4C,EAC5C,MAA2B,EAC3B,IAAa,EACb,EAAE;IACF,MAAM,CAAC,UAAU,CAAC,GAAG,IAOpB,CAAC;IAEF,MAAM,GAAG,GAA8D;QACrE;YACE,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB;QACD,mBAAmB,CAAC,UAAU,CAAC;KAChC,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,SAAS,mBAAmB,CAAI,MAAS;IACvC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAE7C,IAAI,MAAM,IAAI,MAAM,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;QAChD,6DAA6D;QAC7D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,MAG5C,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,MAAyC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"getMutationKey.js","sourceRoot":"","sources":["../../src/callbacks/getMutationKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAKlE,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,YAA4C,EAC5C,MAA2B,EAC3B,IAOC,EACD,EAAE;IACF,OAAO,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMutation.d.ts","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,wBAAwB,EAEzB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,WAAW,EAAE,CACxB,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,OAAO,EAElB,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,wBAAwB,CACtB,mBAAmB,EACnB,MAAM,GAAG,SAAS,EAClB,UAAU,EACV,KAAK,CACN,CAAC,aAAa,CAAC,CACjB,KACE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAqEzD,CAAC"}
1
+ {"version":3,"file":"useMutation.d.ts","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,wBAAwB,EAEzB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,WAAW,EAAE,CACxB,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,OAAO,EAElB,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,wBAAwB,CACtB,mBAAmB,EACnB,MAAM,GAAG,SAAS,EAClB,UAAU,EACV,KAAK,CACN,CAAC,aAAa,CAAC,CACjB,KACE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAwDzD,CAAC"}
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
  import { useContext } from 'react';
3
3
  import { useMutation as useMutationBase } from '@tanstack/react-query';
4
+ import { composeMutationKey } from '../lib/composeMutationKey.js';
4
5
  import { QraftContext } from '../QraftContext.js';
5
6
  export const useMutation = (qraftOptions, schema, args) => {
6
7
  const [parameters, options, ...restArgs] = args;
@@ -13,22 +14,9 @@ export const useMutation = (qraftOptions, schema, args) => {
13
14
  ?.requestClient;
14
15
  if (!requestClient)
15
16
  throw new Error(`QraftContext.requestClient not found`);
16
- const mutationKey = parameters && typeof parameters === 'object'
17
- ? [
18
- {
19
- url: schema.url,
20
- method: schema.method,
21
- },
22
- parameters,
23
- ]
24
- : options && 'mutationKey' in options
25
- ? options.mutationKey
26
- : [
27
- {
28
- url: schema.url,
29
- method: schema.method,
30
- },
31
- ];
17
+ const mutationKey = options && 'mutationKey' in options
18
+ ? options.mutationKey
19
+ : composeMutationKey(schema, parameters);
32
20
  return useMutationBase({
33
21
  ...options,
34
22
  mutationKey,
@@ -1 +1 @@
1
- {"version":3,"file":"useMutation.js","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,WAAW,GAgBsC,CAC5D,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,EAAE;IACF,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEhD,IACE,UAAU;QACV,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO;QACP,aAAa,IAAI,OAAO;QAExB,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IAEJ,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,WAAW,GACf,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC1C,CAAC,CAAE;YACC;gBACE,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;YACD,UAAU;SACD;QACb,CAAC,CAAC,OAAO,IAAI,aAAa,IAAI,OAAO;YACnC,CAAC,CAAE,OAAO,CAAC,WAGP;YACJ,CAAC,CAAE;gBACC;oBACE,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACQ,CAAC;IAEpB,OAAO,eAAe,CACpB;QACE,GAAG,OAAO;QACV,WAAW;QACX,UAAU,EACR,OAAO,EAAE,UAAU;YACnB,CAAC,UAAU;gBACT,CAAC,CAAC,UAAU,WAAW;oBACnB,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,UAAU;wBACV,IAAI,EAAE,WAAoB;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBACH,CAAC,CAAC,UAAU,wBAAwB;oBAChC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,wBAE/B,CAAC;oBAEF,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,IAAI;wBACJ,UAAU;qBACF,CAAC,CAAC;gBACd,CAAC,CAAC;KACT,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
1
+ {"version":3,"file":"useMutation.js","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,WAAW,GAgBsC,CAC5D,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,EAAE;IACF,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEhD,IACE,UAAU;QACV,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO;QACP,aAAa,IAAI,OAAO;QAExB,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IAEJ,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,WAAW,GACf,OAAO,IAAI,aAAa,IAAI,OAAO;QACjC,CAAC,CAAE,OAAO,CAAC,WAGP;QACJ,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAE7C,OAAO,eAAe,CACpB;QACE,GAAG,OAAO;QACV,WAAW;QACX,UAAU,EACR,OAAO,EAAE,UAAU;YACnB,CAAC,UAAU;gBACT,CAAC,CAAC,UAAU,WAAW;oBACnB,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,UAAU;wBACV,IAAI,EAAE,WAAoB;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBACH,CAAC,CAAC,UAAU,wBAAwB;oBAChC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,wBAE/B,CAAC;oBAEF,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,IAAI;wBACJ,UAAU;qBACF,CAAC,CAAC;gBACd,CAAC,CAAC;KACT,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { DefaultError } from '@tanstack/query-core';
2
+ import type { UseMutationResult } from '@tanstack/react-query';
3
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
4
+ import type { RequestClientSchema } from '../RequestClient.js';
5
+ import { ServiceOperationMutation } from '../ServiceOperation.js';
6
+ export declare const useMutationState: <TData = unknown, TError = DefaultError, TVariables = unknown, TContext = unknown>(qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationMutation<RequestClientSchema, object | undefined, TVariables, TData>['useMutationState']>) => UseMutationResult<TData, TError, TVariables, TContext>;
7
+ //# sourceMappingURL=useMutationState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMutationState.d.ts","sourceRoot":"","sources":["../../src/callbacks/useMutationState.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,CAC7B,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,OAAO,EAElB,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,wBAAwB,CACtB,mBAAmB,EACnB,MAAM,GAAG,SAAS,EAClB,UAAU,EACV,KAAK,CACN,CAAC,kBAAkB,CAAC,CACtB,KACE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CA0CzD,CAAC"}
@@ -0,0 +1,30 @@
1
+ 'use client';
2
+ import { useContext } from 'react';
3
+ import { useMutationState as useMutationStateTanstack } from '@tanstack/react-query';
4
+ import { composeMutationKey } from '../lib/composeMutationKey.js';
5
+ import { QraftContext } from '../QraftContext.js';
6
+ export const useMutationState = (qraftOptions, schema, args) => {
7
+ const [options, ...restArgs] = args;
8
+ if (options?.filters &&
9
+ 'parameters' in options.filters &&
10
+ 'mutationKey' in options.filters) {
11
+ throw new Error(`'useMutationState': 'parameters' and 'mutationKey' cannot be used together`);
12
+ }
13
+ const requestClient = useContext(qraftOptions?.context ?? QraftContext)
14
+ ?.requestClient;
15
+ if (!requestClient)
16
+ throw new Error(`QraftContext.requestClient not found`);
17
+ const filters = options?.filters;
18
+ return useMutationStateTanstack({
19
+ ...options,
20
+ filters: filters && 'mutationKey' in filters
21
+ ? filters
22
+ : {
23
+ ...filters,
24
+ mutationKey: composeMutationKey(schema, filters && 'parameters' in filters
25
+ ? filters.parameters
26
+ : undefined),
27
+ },
28
+ }, ...restArgs);
29
+ };
30
+ //# sourceMappingURL=useMutationState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMutationState.js","sourceRoot":"","sources":["../../src/callbacks/useMutationState.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,MAAM,CAAC,MAAM,gBAAgB,GAgBiC,CAC5D,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,EAAE;IACF,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEpC,IACE,OAAO,EAAE,OAAO;QAChB,YAAY,IAAI,OAAO,CAAC,OAAO;QAC/B,aAAa,IAAI,OAAO,CAAC,OAAO,EAChC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IAEjC,OAAO,wBAAwB,CAC7B;QACE,GAAG,OAAO;QACV,OAAO,EACL,OAAO,IAAI,aAAa,IAAI,OAAO;YACjC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC;gBACE,GAAG,OAAO;gBACV,WAAW,EAAE,kBAAkB,CAC7B,MAAM,EACN,OAAO,IAAI,YAAY,IAAI,OAAO;oBAChC,CAAC,CAAC,OAAO,CAAC,UAAU;oBACpB,CAAC,CAAC,SAAS,CACd;aACF;KACC,EACV,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { RequestClientSchema } from '../RequestClient.js';
2
+ import { ServiceOperationMutationKey } from '../ServiceOperation.js';
3
+ /**
4
+ * Omit `body` or `requestBody` from mutation parameters if exists
5
+ * and return the rest of the parameters
6
+ */
7
+ export declare function composeMutationKey<TSchema extends RequestClientSchema, TParams = undefined>(schema: TSchema, parameters: undefined): ServiceOperationMutationKey<TSchema, undefined>;
8
+ export declare function composeMutationKey<TSchema extends RequestClientSchema, TParams>(schema: TSchema, parameters: TParams): ServiceOperationMutationKey<TSchema, TParams>;
9
+ export declare function omitMutationPayload<T>(params: T): {};
10
+ //# sourceMappingURL=composeMutationKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeMutationKey.d.ts","sourceRoot":"","sources":["../../src/lib/composeMutationKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAErE;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,SAAS,mBAAmB,EACnC,OAAO,GAAG,SAAS,EAEnB,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,SAAS,GACpB,2BAA2B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACnD,wBAAgB,kBAAkB,CAChC,OAAO,SAAS,mBAAmB,EACnC,OAAO,EAEP,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,OAAO,GAClB,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAgBjD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,MAa/C"}
@@ -0,0 +1,21 @@
1
+ export function composeMutationKey(schema, parameters) {
2
+ return parameters === undefined
3
+ ? [{ url: schema.url, method: schema.method }]
4
+ : [
5
+ {
6
+ url: schema.url,
7
+ method: schema.method,
8
+ },
9
+ omitMutationPayload(parameters),
10
+ ];
11
+ }
12
+ export function omitMutationPayload(params) {
13
+ if (!params || typeof params !== 'object')
14
+ throw new Error('`params` must be object');
15
+ if ('body' in params || 'requestBody' in params) {
16
+ const { body, requestBody, ...paramsRest } = params;
17
+ return paramsRest;
18
+ }
19
+ return params;
20
+ }
21
+ //# sourceMappingURL=composeMutationKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeMutationKey.js","sourceRoot":"","sources":["../../src/lib/composeMutationKey.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,kBAAkB,CAGhC,MAAe,EAAE,UAA+B;IAChD,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9C,CAAC,CAAC;YACE;gBACE,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;YACD,mBAAmB,CAAC,UAAU,CAAC;SAChC,CAAC;AACR,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,MAAS;IAC9C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAE7C,IAAI,MAAM,IAAI,MAAM,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;QAChD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,MAG5C,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,MAAyC,CAAC;AACnD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openapi-qraft/react",
3
- "version": "1.0.0-beta.5",
3
+ "version": "1.0.1",
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": "rimraf dist/ && tsc --project tsconfig.build.json",
@@ -13,8 +13,8 @@
13
13
  "type": "module",
14
14
  "sideEffects": false,
15
15
  "devDependencies": {
16
- "@openapi-qraft/cli": "~1.0.0-beta.3",
17
- "@openapi-qraft/openapi-typescript": "^1.0.0-beta.1",
16
+ "@openapi-qraft/cli": "~1.0.1",
17
+ "@openapi-qraft/openapi-typescript": "^1.0.0",
18
18
  "@tanstack/react-query": "^5.17.3",
19
19
  "@testing-library/jest-dom": "^5.17.0",
20
20
  "@testing-library/react": "^13.4.0",
@@ -2,6 +2,9 @@ import {
2
2
  DefaultError,
3
3
  InfiniteData,
4
4
  InfiniteQueryPageParamsOptions,
5
+ Mutation,
6
+ MutationState,
7
+ MutationStatus,
5
8
  NoInfer,
6
9
  QueryClient,
7
10
  SetDataOptions,
@@ -36,8 +39,10 @@ export type ServiceOperationInfiniteQueryKey<S extends { url: string }, T> = [
36
39
 
37
40
  export type ServiceOperationMutationKey<
38
41
  S extends Record<'url' | 'method', string>,
39
- T,
40
- > = [Pick<S, 'url' | 'method'>, T];
42
+ T extends unknown,
43
+ > = NonNullable<T> extends never
44
+ ? [Pick<S, 'url' | 'method'>]
45
+ : [Pick<S, 'url' | 'method'>, T];
41
46
 
42
47
  export interface ServiceOperationQuery<
43
48
  TSchema extends { url: string; method: string },
@@ -207,6 +212,7 @@ export interface ServiceOperationMutation<
207
212
  TParams,
208
213
  TError = DefaultError,
209
214
  > extends ServiceOperationUseMutation<TSchema, TBody, TData, TParams, TError>,
215
+ ServiceOperationUseMutationState<TSchema, TBody, TData, TParams, TError>,
210
216
  ServiceOperationMutationFn<TSchema, TBody, TData, TParams>,
211
217
  ServiceOperationSetQueryData<TData, TParams> {
212
218
  schema: TSchema;
@@ -220,13 +226,11 @@ interface ServiceOperationUseMutation<
220
226
  TError = DefaultError,
221
227
  > {
222
228
  getMutationKey<T extends TParams>(
223
- params: T
229
+ params: T | undefined
224
230
  ): ServiceOperationMutationKey<TSchema, T>;
225
231
 
226
232
  useMutation<
227
- TVariables extends { body: TBody } & (NonNullable<TParams> extends never
228
- ? {}
229
- : TParams),
233
+ TVariables extends MutationVariables<TBody, TParams>,
230
234
  TContext = unknown,
231
235
  >(
232
236
  params?: undefined,
@@ -252,6 +256,94 @@ interface ServiceOperationUseMutation<
252
256
  ): UseMutationResult<TData, TError | Error, TVariables, TContext>;
253
257
  }
254
258
 
259
+ type MutationFilters<
260
+ TSchema extends { url: string; method: string },
261
+ TBody,
262
+ TData,
263
+ TParams,
264
+ TError = DefaultError,
265
+ TContext = unknown,
266
+ > = {
267
+ /**
268
+ * Match mutation key exactly
269
+ */
270
+ exact?: boolean;
271
+ /**
272
+ * Include mutations matching this predicate function
273
+ */
274
+ predicate?: (
275
+ mutation: Mutation<
276
+ TData,
277
+ TError,
278
+ MutationVariables<TBody, TParams>,
279
+ TContext
280
+ >
281
+ ) => boolean;
282
+
283
+ /**
284
+ * Filter by mutation status
285
+ */
286
+ status?: MutationStatus;
287
+ } & (
288
+ | {
289
+ /**
290
+ * Include mutations matching this mutation key
291
+ */
292
+ mutationKey?: ServiceOperationMutationKey<
293
+ TSchema,
294
+ PartialParams<TParams>
295
+ >;
296
+ }
297
+ | {
298
+ /**
299
+ * Include mutations matching these parameters
300
+ */
301
+ parameters?: PartialParams<TParams>;
302
+ }
303
+ );
304
+
305
+ type MutationVariables<TBody, TParams> = {
306
+ body: TBody;
307
+ } & (NonNullable<TParams> extends never ? {} : TParams);
308
+
309
+ interface ServiceOperationUseMutationState<
310
+ TSchema extends { url: string; method: string },
311
+ TBody,
312
+ TData,
313
+ TParams,
314
+ TError = DefaultError,
315
+ > {
316
+ useMutationState<
317
+ TContext = unknown,
318
+ TResult = MutationState<
319
+ TData,
320
+ TError,
321
+ MutationVariables<TBody, TParams>,
322
+ TContext
323
+ >,
324
+ >(
325
+ options?: {
326
+ filters?: MutationFilters<
327
+ TSchema,
328
+ TBody,
329
+ TData,
330
+ TParams,
331
+ TError,
332
+ TContext
333
+ >;
334
+ select?: (
335
+ mutation: Mutation<
336
+ TData,
337
+ TError,
338
+ MutationVariables<TBody, TParams>,
339
+ TContext
340
+ >
341
+ ) => TResult;
342
+ },
343
+ queryClient?: QueryClient
344
+ ): Array<TResult>;
345
+ }
346
+
255
347
  interface ServiceOperationQueryFn<
256
348
  TSchema extends { url: string; method: string },
257
349
  TData,
@@ -1,47 +1,19 @@
1
+ import { composeMutationKey } from '../lib/composeMutationKey.js';
1
2
  import type { QraftClientOptions } from '../qraftAPIClient.js';
2
3
  import type { RequestClientSchema } from '../RequestClient.js';
3
- import {
4
- ServiceOperationMutation,
5
- ServiceOperationMutationKey,
6
- } from '../ServiceOperation.js';
4
+ import { ServiceOperationMutation } from '../ServiceOperation.js';
7
5
 
8
6
  export const getMutationKey = (
9
7
  qraftOptions: QraftClientOptions | undefined,
10
8
  schema: RequestClientSchema,
11
- args: unknown
12
- ) => {
13
- const [parameters] = args as Parameters<
9
+ args: Parameters<
14
10
  ServiceOperationMutation<
15
11
  RequestClientSchema,
16
12
  unknown,
17
13
  unknown,
18
14
  unknown
19
15
  >['getMutationKey']
20
- >;
21
-
22
- const key: ServiceOperationMutationKey<RequestClientSchema, unknown> = [
23
- {
24
- url: schema.url,
25
- method: schema.method,
26
- },
27
- omitMutationPayload(parameters),
28
- ];
29
-
30
- return key;
16
+ >
17
+ ) => {
18
+ return composeMutationKey(schema, args[0]);
31
19
  };
32
-
33
- function omitMutationPayload<T>(params: T) {
34
- if (!params || typeof params !== 'object')
35
- throw new Error('`params` must be object');
36
-
37
- if ('body' in params || 'requestBody' in params) {
38
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
39
- const { body, requestBody, ...paramsRest } = params as Record<
40
- 'body' | 'requestBody',
41
- unknown
42
- >;
43
- return paramsRest;
44
- }
45
-
46
- return params as Omit<T, 'body' | 'requestBody'>;
47
- }
@@ -6,6 +6,7 @@ import type { DefaultError } from '@tanstack/query-core';
6
6
  import type { UseMutationResult } from '@tanstack/react-query';
7
7
  import { useMutation as useMutationBase } from '@tanstack/react-query';
8
8
 
9
+ import { composeMutationKey } from '../lib/composeMutationKey.js';
9
10
  import type { QraftClientOptions } from '../qraftAPIClient.js';
10
11
  import { QraftContext } from '../QraftContext.js';
11
12
  import type { RequestClientSchema } from '../RequestClient.js';
@@ -53,25 +54,12 @@ export const useMutation: <
53
54
  if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
54
55
 
55
56
  const mutationKey =
56
- parameters && typeof parameters === 'object'
57
- ? ([
58
- {
59
- url: schema.url,
60
- method: schema.method,
61
- },
62
- parameters,
63
- ] as const)
64
- : options && 'mutationKey' in options
65
- ? (options.mutationKey as ServiceOperationMutationKey<
66
- typeof schema,
67
- unknown
68
- >)
69
- : ([
70
- {
71
- url: schema.url,
72
- method: schema.method,
73
- },
74
- ] as const);
57
+ options && 'mutationKey' in options
58
+ ? (options.mutationKey as ServiceOperationMutationKey<
59
+ typeof schema,
60
+ unknown
61
+ >)
62
+ : composeMutationKey(schema, parameters);
75
63
 
76
64
  return useMutationBase(
77
65
  {
@@ -0,0 +1,73 @@
1
+ 'use client';
2
+
3
+ import { useContext } from 'react';
4
+
5
+ import type { DefaultError } from '@tanstack/query-core';
6
+ import type { UseMutationResult } from '@tanstack/react-query';
7
+ import { useMutationState as useMutationStateTanstack } from '@tanstack/react-query';
8
+
9
+ import { composeMutationKey } from '../lib/composeMutationKey.js';
10
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
11
+ import { QraftContext } from '../QraftContext.js';
12
+ import type { RequestClientSchema } from '../RequestClient.js';
13
+ import { ServiceOperationMutation } from '../ServiceOperation.js';
14
+
15
+ export const useMutationState: <
16
+ TData = unknown,
17
+ TError = DefaultError,
18
+ TVariables = unknown,
19
+ TContext = unknown,
20
+ >(
21
+ qraftOptions: QraftClientOptions | undefined,
22
+ schema: RequestClientSchema,
23
+ args: Parameters<
24
+ ServiceOperationMutation<
25
+ RequestClientSchema,
26
+ object | undefined,
27
+ TVariables,
28
+ TData
29
+ >['useMutationState']
30
+ >
31
+ ) => UseMutationResult<TData, TError, TVariables, TContext> = (
32
+ qraftOptions,
33
+ schema,
34
+ args
35
+ ) => {
36
+ const [options, ...restArgs] = args;
37
+
38
+ if (
39
+ options?.filters &&
40
+ 'parameters' in options.filters &&
41
+ 'mutationKey' in options.filters
42
+ ) {
43
+ throw new Error(
44
+ `'useMutationState': 'parameters' and 'mutationKey' cannot be used together`
45
+ );
46
+ }
47
+
48
+ const requestClient = useContext(qraftOptions?.context ?? QraftContext)
49
+ ?.requestClient;
50
+
51
+ if (!requestClient) throw new Error(`QraftContext.requestClient not found`);
52
+
53
+ const filters = options?.filters;
54
+
55
+ return useMutationStateTanstack(
56
+ {
57
+ ...options,
58
+ filters:
59
+ filters && 'mutationKey' in filters
60
+ ? filters
61
+ : {
62
+ ...filters,
63
+ mutationKey: composeMutationKey(
64
+ schema,
65
+ filters && 'parameters' in filters
66
+ ? filters.parameters
67
+ : undefined
68
+ ),
69
+ },
70
+ } as never,
71
+ ...restArgs
72
+ ) as never;
73
+ };
@@ -0,0 +1,43 @@
1
+ import { composeMutationKey } from './composeMutationKey.js';
2
+
3
+ describe('composeMutationKey', () => {
4
+ it('should return mutation key with parameters', () => {
5
+ const schema = {
6
+ url: 'https://example.com',
7
+ method: 'get',
8
+ } as const;
9
+
10
+ const parameters = {
11
+ body: 'body',
12
+ requestBody: 'requestBody',
13
+ other: 'other',
14
+ };
15
+ const result = composeMutationKey(schema, parameters);
16
+
17
+ expect(result).toEqual([
18
+ {
19
+ url: schema.url,
20
+ method: schema.method,
21
+ },
22
+ {
23
+ other: 'other',
24
+ },
25
+ ]);
26
+ });
27
+
28
+ it('should return mutation key without parameters', () => {
29
+ const schema = {
30
+ url: 'https://example.com',
31
+ method: 'get',
32
+ } as const;
33
+
34
+ const result = composeMutationKey(schema, undefined);
35
+
36
+ expect(result).toEqual([
37
+ {
38
+ url: schema.url,
39
+ method: schema.method,
40
+ },
41
+ ]);
42
+ });
43
+ });
@@ -0,0 +1,50 @@
1
+ import type { RequestClientSchema } from '../RequestClient.js';
2
+ import { ServiceOperationMutationKey } from '../ServiceOperation.js';
3
+
4
+ /**
5
+ * Omit `body` or `requestBody` from mutation parameters if exists
6
+ * and return the rest of the parameters
7
+ */
8
+ export function composeMutationKey<
9
+ TSchema extends RequestClientSchema,
10
+ TParams = undefined,
11
+ >(
12
+ schema: TSchema,
13
+ parameters: undefined
14
+ ): ServiceOperationMutationKey<TSchema, undefined>;
15
+ export function composeMutationKey<
16
+ TSchema extends RequestClientSchema,
17
+ TParams,
18
+ >(
19
+ schema: TSchema,
20
+ parameters: TParams
21
+ ): ServiceOperationMutationKey<TSchema, TParams>;
22
+ export function composeMutationKey<
23
+ TSchema extends RequestClientSchema,
24
+ TParams = unknown,
25
+ >(schema: TSchema, parameters: TParams | undefined) {
26
+ return parameters === undefined
27
+ ? [{ url: schema.url, method: schema.method }]
28
+ : [
29
+ {
30
+ url: schema.url,
31
+ method: schema.method,
32
+ },
33
+ omitMutationPayload(parameters),
34
+ ];
35
+ }
36
+
37
+ export function omitMutationPayload<T>(params: T) {
38
+ if (!params || typeof params !== 'object')
39
+ throw new Error('`params` must be object');
40
+
41
+ if ('body' in params || 'requestBody' in params) {
42
+ const { body, requestBody, ...paramsRest } = params as Record<
43
+ 'body' | 'requestBody',
44
+ unknown
45
+ >;
46
+ return paramsRest;
47
+ }
48
+
49
+ return params as Omit<T, 'body' | 'requestBody'>;
50
+ }
@@ -540,6 +540,230 @@ describe('Qraft uses Mutations', () => {
540
540
  });
541
541
  });
542
542
 
543
+ describe('Qraft uses Mutation State', () => {
544
+ const parameters = {
545
+ header: {
546
+ 'x-monite-version': '1.0.0',
547
+ },
548
+ path: {
549
+ entity_id: '1',
550
+ },
551
+ query: {
552
+ referer: 'https://example.com',
553
+ },
554
+ } as const;
555
+
556
+ it('supports useMutationState with filter', async () => {
557
+ const queryClient = new QueryClient();
558
+
559
+ const { result: mutationResult } = renderHook(
560
+ () => qraft.entities.postEntitiesIdDocuments.useMutation(parameters),
561
+ {
562
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
563
+ }
564
+ );
565
+
566
+ act(() => {
567
+ mutationResult.current.mutate({
568
+ verification_document_back: 'back',
569
+ verification_document_front: 'front',
570
+ });
571
+ });
572
+
573
+ await waitFor(() => {
574
+ expect(mutationResult.current.data).toBeDefined();
575
+ });
576
+
577
+ const { result: mutationStateResult } = renderHook(
578
+ () =>
579
+ qraft.entities.postEntitiesIdDocuments.useMutationState({
580
+ filters: {
581
+ parameters,
582
+ },
583
+ }),
584
+ {
585
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
586
+ }
587
+ );
588
+
589
+ expect(mutationStateResult.current.at(0)?.data).toEqual({
590
+ body: {
591
+ verification_document_back: 'back',
592
+ verification_document_front: 'front',
593
+ },
594
+ ...parameters,
595
+ });
596
+ });
597
+
598
+ it('supports useMutationState with filter and select', async () => {
599
+ const queryClient = new QueryClient();
600
+
601
+ const { result: mutationResult } = renderHook(
602
+ () => qraft.entities.postEntitiesIdDocuments.useMutation(parameters),
603
+ {
604
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
605
+ }
606
+ );
607
+
608
+ act(() => {
609
+ mutationResult.current.mutate({
610
+ verification_document_back: 'back',
611
+ verification_document_front: 'front',
612
+ });
613
+ });
614
+
615
+ await waitFor(() => {
616
+ expect(mutationResult.current.data).toBeDefined();
617
+ });
618
+
619
+ const { result: mutationStateResult } = renderHook(
620
+ () =>
621
+ qraft.entities.postEntitiesIdDocuments.useMutationState({
622
+ filters: {
623
+ parameters,
624
+ },
625
+ select(mutation) {
626
+ return (
627
+ mutation.state.data?.header?.['x-monite-version'] ===
628
+ parameters.header['x-monite-version']
629
+ );
630
+ },
631
+ }),
632
+ {
633
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
634
+ }
635
+ );
636
+
637
+ expect(mutationStateResult.current.at(0)).toEqual(true);
638
+ });
639
+
640
+ it('supports useMutationState with without filter', async () => {
641
+ const queryClient = new QueryClient();
642
+
643
+ const { result: mutationResult } = renderHook(
644
+ () => qraft.entities.postEntitiesIdDocuments.useMutation(parameters),
645
+ {
646
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
647
+ }
648
+ );
649
+
650
+ act(() => {
651
+ mutationResult.current.mutate({
652
+ verification_document_back: 'back',
653
+ verification_document_front: 'front',
654
+ });
655
+ });
656
+
657
+ await waitFor(() => {
658
+ expect(mutationResult.current.data).toBeDefined();
659
+ });
660
+
661
+ const { result: mutationStateResult } = renderHook(
662
+ () => qraft.entities.postEntitiesIdDocuments.useMutationState(),
663
+ {
664
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
665
+ }
666
+ );
667
+
668
+ expect(mutationStateResult.current.at(0)?.data).toEqual({
669
+ body: {
670
+ verification_document_back: 'back',
671
+ verification_document_front: 'front',
672
+ },
673
+ ...parameters,
674
+ });
675
+ });
676
+
677
+ it('supports useMutationState with mutationKey and select', async () => {
678
+ const queryClient = new QueryClient();
679
+
680
+ const { result: mutationHookResultToMatch } = renderHook(
681
+ () => qraft.entities.postEntitiesIdDocuments.useMutation(parameters),
682
+ {
683
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
684
+ }
685
+ );
686
+
687
+ act(() => {
688
+ mutationHookResultToMatch.current.mutate({
689
+ verification_document_back: 'back',
690
+ verification_document_front: 'front',
691
+ });
692
+ });
693
+
694
+ await waitFor(() => {
695
+ expect(mutationHookResultToMatch.current.data).toBeDefined();
696
+ });
697
+
698
+ const { result: mutationStateHookResult } = renderHook(
699
+ () =>
700
+ qraft.entities.postEntitiesIdDocuments.useMutationState({
701
+ filters: {
702
+ mutationKey:
703
+ qraft.entities.postEntitiesIdDocuments.getMutationKey(parameters),
704
+ },
705
+ select(mutation) {
706
+ return (
707
+ mutation.state.data?.header?.['x-monite-version'] ===
708
+ parameters.header['x-monite-version']
709
+ );
710
+ },
711
+ }),
712
+ {
713
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
714
+ }
715
+ );
716
+
717
+ expect(mutationStateHookResult.current.length).toEqual(1);
718
+ expect(mutationStateHookResult.current.at(0)).toEqual(true);
719
+ });
720
+
721
+ it('supports useMutationState with not partial parameters', async () => {
722
+ const queryClient = new QueryClient();
723
+
724
+ const { result: mutationHookResultToMatch } = renderHook(
725
+ () => qraft.entities.postEntitiesIdDocuments.useMutation(parameters),
726
+ {
727
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
728
+ }
729
+ );
730
+
731
+ act(() => {
732
+ mutationHookResultToMatch.current.mutate({
733
+ verification_document_back: 'back',
734
+ verification_document_front: 'front',
735
+ });
736
+ });
737
+
738
+ await waitFor(() => {
739
+ expect(mutationHookResultToMatch.current.data).toBeDefined();
740
+ });
741
+
742
+ const { result: mutationStateResult } = renderHook(
743
+ () =>
744
+ qraft.entities.postEntitiesIdDocuments.useMutationState({
745
+ filters: {
746
+ parameters: {
747
+ header: parameters.header,
748
+ },
749
+ },
750
+ select(mutation) {
751
+ return (
752
+ mutation.state.data?.header?.['x-monite-version'] ===
753
+ parameters.header['x-monite-version']
754
+ );
755
+ },
756
+ }),
757
+ {
758
+ wrapper: (props) => <Providers {...props} queryClient={queryClient} />,
759
+ }
760
+ );
761
+
762
+ expect(mutationStateResult.current.length).toEqual(1);
763
+ expect(mutationStateResult.current.at(0)).toEqual(true);
764
+ });
765
+ });
766
+
543
767
  describe('Qraft uses Query Function', () => {
544
768
  it('uses queryFn', async () => {
545
769
  const result = await qraft.approvalPolicies.getApprovalPoliciesId.queryFn(