@openapi-qraft/react 2.0.0-next.0 → 2.0.0-next.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 +12 -0
- package/README.md +3 -6
- package/dist/types/Unstable_QraftSecureRequestFn.d.ts +1 -1
- package/dist/types/Unstable_QraftSecureRequestFn.d.ts.map +1 -1
- package/dist/types/callbacks/getInfiniteQueryKey.d.ts +1 -1
- package/dist/types/callbacks/getInfiniteQueryKey.d.ts.map +1 -1
- package/dist/types/callbacks/getMutationKey.d.ts +1 -1
- package/dist/types/callbacks/getMutationKey.d.ts.map +1 -1
- package/dist/types/callbacks/getQueryKey.d.ts +1 -1
- package/dist/types/callbacks/getQueryKey.d.ts.map +1 -1
- package/dist/types/qraftPredefinedParametersRequestFn.d.ts +19 -0
- package/dist/types/qraftPredefinedParametersRequestFn.d.ts.map +1 -0
- package/package.json +9 -4
- package/src/qraftPredefinedParametersRequestFn.ts +140 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @openapi-qraft/react
|
|
2
2
|
|
|
3
|
+
## 2.0.0-next.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 76634bf: ### Changeset: `createPredefinedParametersRequestFn`
|
|
8
|
+
|
|
9
|
+
Introduced `createPredefinedParametersRequestFn`, generated by the `@openapi-qraft/cli` using
|
|
10
|
+
the `--operation-predefined-parameters` option.
|
|
11
|
+
This function allows for the automatic application of predefined
|
|
12
|
+
parameters to selected API operations by wrapping the base `requestFn`. It simplifies managing parameters, reducing
|
|
13
|
+
boilerplate code, and supports both static and dynamic values, enhancing flexibility in API request handling.
|
|
14
|
+
|
|
3
15
|
## 2.0.0-next.0
|
|
4
16
|
|
|
5
17
|
### Major Changes
|
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ Read the full documentation at [openapi-qraft.github.io/openapi-qraft](https://o
|
|
|
23
23
|
First, install the core package for your project:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
npm install @openapi-qraft/react
|
|
26
|
+
npm install @openapi-qraft/react@next
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
If your project doesn't already include `@tanstack/react-query`, you'll also need to install it. This package is
|
|
@@ -47,7 +47,7 @@ and schemas from your OpenAPI Document.
|
|
|
47
47
|
To generate both TypeScript definitions and services using `openapi-qraft`, run the following command in the root directory of your project:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
npx @openapi-qraft/cli --plugin tanstack-query-react --plugin openapi-typescript https://api.dev.monite.com/openapi.json?version=2023-09-01 --output-dir src/api
|
|
50
|
+
npx @openapi-qraft/cli@next --plugin tanstack-query-react --plugin openapi-typescript https://api.dev.monite.com/openapi.json?version=2023-09-01 --output-dir src/api
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
By completing this step, you will generate `src/api/schema.d.ts`, which serves as a TypeScript representation of the specified OpenAPI,
|
|
@@ -75,11 +75,9 @@ Finally, provide the request client to the `QraftContext` to enable the generate
|
|
|
75
75
|
Every request will be handled by `request` function, which can be customized to fit your project's needs.
|
|
76
76
|
|
|
77
77
|
```tsx
|
|
78
|
-
import { useMemo } from 'react';
|
|
79
|
-
|
|
80
78
|
import { QraftContext, requestFn } from '@openapi-qraft/react';
|
|
81
79
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
82
|
-
|
|
80
|
+
import { useMemo } from 'react';
|
|
83
81
|
// where `./api` is the '--output-dir' path to the services you generated with `@openapi-qraft/cli`
|
|
84
82
|
import { createAPIClient } from './api';
|
|
85
83
|
|
|
@@ -599,7 +597,6 @@ using a custom `fetchToken` async function.
|
|
|
599
597
|
|
|
600
598
|
```tsx
|
|
601
599
|
import { QraftContext, requestFn } from '@openapi-qraft/react';
|
|
602
|
-
|
|
603
600
|
import { fetchToken } from './auth';
|
|
604
601
|
|
|
605
602
|
function QraftProvider({ children }: { children: React.ReactNode }) {
|
|
@@ -11,7 +11,7 @@ export interface QraftSecureRequestFnProps extends QraftSecureRequestFnBaseProps
|
|
|
11
11
|
queryClient?: QueryClient;
|
|
12
12
|
}
|
|
13
13
|
export declare function QraftSecureRequestFn({ children, requestFn, securitySchemes, queryClient: inQueryClient, }: QraftSecureRequestFnProps): import("react").FunctionComponentElement<{
|
|
14
|
-
children?: ReactNode;
|
|
14
|
+
children?: ReactNode | undefined;
|
|
15
15
|
}>;
|
|
16
16
|
export declare const useSecuritySchemeAuth: ({ securitySchemes, requestFn, queryClient, }: QraftSecureRequestFnBaseProps & {
|
|
17
17
|
queryClient: QueryClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Unstable_QraftSecureRequestFn.d.ts","sourceRoot":"","sources":["../../src/Unstable_QraftSecureRequestFn.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAc,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAA2B,SAAS,EAAsB,MAAM,OAAO,CAAC;AAG/E,UAAU,6BAA6B;IACrC,SAAS,CAAC,KAAK,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,aAAa,EAC1B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,eAAe,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,KAAK,SAAS,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;AAE5D,MAAM,WAAW,yBACf,SAAQ,6BAA6B;IACrC,QAAQ,CACN,eAAe,EAAE,6BAA6B,CAAC,WAAW,CAAC,GAC1D,SAAS,CAAC;IACb,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,SAAS,EACT,eAAe,EACf,WAAW,EAAE,aAAa,GAC3B,EAAE,yBAAyB;;GAkC3B;AAED,eAAO,MAAM,qBAAqB;
|
|
1
|
+
{"version":3,"file":"Unstable_QraftSecureRequestFn.d.ts","sourceRoot":"","sources":["../../src/Unstable_QraftSecureRequestFn.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAc,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAA2B,SAAS,EAAsB,MAAM,OAAO,CAAC;AAG/E,UAAU,6BAA6B;IACrC,SAAS,CAAC,KAAK,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,aAAa,EAC1B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,eAAe,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,KAAK,SAAS,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;AAE5D,MAAM,WAAW,yBACf,SAAQ,6BAA6B;IACrC,QAAQ,CACN,eAAe,EAAE,6BAA6B,CAAC,WAAW,CAAC,GAC1D,SAAS,CAAC;IACb,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,SAAS,EACT,eAAe,EACf,WAAW,EAAE,aAAa,GAC3B,EAAE,yBAAyB;;GAkC3B;AAED,eAAO,MAAM,qBAAqB,iDAI/B,6BAA6B,GAAG;IACjC,WAAW,EAAE,WAAW,CAAC;CAC1B,KAAG,SAwBH,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAC/C,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,GACvB,SAAS,CA+BX;AA6HD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,WAmBlD;AAED,KAAK,cAAc,GACf,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,oBAAoB,GAC5B,MAAM,CAAC,yBAAyB,GAChC;IACE,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,yCAAyC;IACzC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC;IACvB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,yCAAyC;IACzC,EAAE,EAAE,QAAQ,CAAC;IACb,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,KAAK,qBAAqB,GAAG,CAAC,KAAK,EAAE;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;CACrB,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE/C,MAAM,MAAM,sBAAsB,CAAC,kBAAkB,SAAS,MAAM,IAAI;KACrE,GAAG,IAAI,kBAAkB,GAAG,qBAAqB;CACnD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OperationSchema } from '../lib/requestFn.js';
|
|
2
2
|
import { CreateAPIBasicClientOptions } from '../qraftAPIClient.js';
|
|
3
3
|
import { ServiceOperationQuery } from '../service-operation/ServiceOperation.js';
|
|
4
|
-
export declare const getInfiniteQueryKey: (_qraftOptions: CreateAPIBasicClientOptions, schema: OperationSchema, args: Parameters<ServiceOperationQuery<OperationSchema, unknown, unknown>[
|
|
4
|
+
export declare const getInfiniteQueryKey: (_qraftOptions: CreateAPIBasicClientOptions, schema: OperationSchema, args: Parameters<ServiceOperationQuery<OperationSchema, unknown, unknown>["getInfiniteQueryKey"]>) => import("../service-operation/ServiceOperationKey.js").ServiceOperationInfiniteQueryKey<OperationSchema, unknown>;
|
|
5
5
|
//# sourceMappingURL=getInfiniteQueryKey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInfiniteQueryKey.d.ts","sourceRoot":"","sources":["../../../src/callbacks/getInfiniteQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,eAAO,MAAM,mBAAmB,kBACf,2BAA2B,UAClC,eAAe,QACjB,
|
|
1
|
+
{"version":3,"file":"getInfiniteQueryKey.d.ts","sourceRoot":"","sources":["../../../src/callbacks/getInfiniteQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,eAAO,MAAM,mBAAmB,kBACf,2BAA2B,UAClC,eAAe,QACjB,UAAU,CACd,qBAAqB,CACnB,eAAe,EACf,OAAO,EACP,OAAO,CACR,CAAC,qBAAqB,CAAC,CACzB,qHAGF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OperationSchema } from '../lib/requestFn.js';
|
|
2
2
|
import type { CreateAPIBasicClientOptions } from '../qraftAPIClient.js';
|
|
3
3
|
import type { ServiceOperationMutation } from '../service-operation/ServiceOperation.js';
|
|
4
|
-
export declare const getMutationKey: (_qraftOptions: CreateAPIBasicClientOptions, schema: OperationSchema, args: Parameters<ServiceOperationMutation<OperationSchema, unknown, unknown, unknown>[
|
|
4
|
+
export declare const getMutationKey: (_qraftOptions: CreateAPIBasicClientOptions, schema: OperationSchema, args: Parameters<ServiceOperationMutation<OperationSchema, unknown, unknown, unknown>["getMutationKey"]>) => [OperationSchema, 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,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAGzF,eAAO,MAAM,cAAc,kBACV,2BAA2B,UAClC,eAAe,QACjB,
|
|
1
|
+
{"version":3,"file":"getMutationKey.d.ts","sourceRoot":"","sources":["../../../src/callbacks/getMutationKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAGzF,eAAO,MAAM,cAAc,kBACV,2BAA2B,UAClC,eAAe,QACjB,UAAU,CACd,wBAAwB,CACtB,eAAe,EACf,OAAO,EACP,OAAO,EACP,OAAO,CACR,CAAC,gBAAgB,CAAC,CACpB,+BAGF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OperationSchema } from '../lib/requestFn.js';
|
|
2
2
|
import type { CreateAPIBasicClientOptions } from '../qraftAPIClient.js';
|
|
3
3
|
import type { ServiceOperationQuery } from '../service-operation/ServiceOperation.js';
|
|
4
|
-
export declare const getQueryKey: (_qraftOptions: CreateAPIBasicClientOptions, schema: OperationSchema, args: Parameters<ServiceOperationQuery<OperationSchema, unknown, unknown>[
|
|
4
|
+
export declare const getQueryKey: (_qraftOptions: CreateAPIBasicClientOptions, schema: OperationSchema, args: Parameters<ServiceOperationQuery<OperationSchema, unknown, unknown>["getQueryKey"]>) => import("../service-operation/ServiceOperationKey.js").ServiceOperationQueryKey<OperationSchema, unknown>;
|
|
5
5
|
//# sourceMappingURL=getQueryKey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getQueryKey.d.ts","sourceRoot":"","sources":["../../../src/callbacks/getQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAGtF,eAAO,MAAM,WAAW,kBACP,2BAA2B,UAClC,eAAe,QACjB,
|
|
1
|
+
{"version":3,"file":"getQueryKey.d.ts","sourceRoot":"","sources":["../../../src/callbacks/getQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAGtF,eAAO,MAAM,WAAW,kBACP,2BAA2B,UAClC,eAAe,QACjB,UAAU,CACd,qBAAqB,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,CACxE,6GAGF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RequestFn } from './lib/requestFn.js';
|
|
2
|
+
export type QraftPredefinedParameterValue<T> = T extends () => Promise<infer R> ? R | undefined : T | undefined;
|
|
3
|
+
export type InputPredefinedParametersItem<TValue> = {
|
|
4
|
+
requestPattern: string;
|
|
5
|
+
parameters: Array<{
|
|
6
|
+
in: 'header' | 'query' | 'cookie';
|
|
7
|
+
name: string;
|
|
8
|
+
value: QraftPredefinedParameterValue<TValue>;
|
|
9
|
+
}>;
|
|
10
|
+
};
|
|
11
|
+
type TargetPredefinedParametersMethods = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'options' | 'head' | 'trace';
|
|
12
|
+
export type TargetPredefinedParametersItem = {
|
|
13
|
+
requestPattern: string;
|
|
14
|
+
methods: Array<TargetPredefinedParametersMethods> | ReadonlyArray<Readonly<TargetPredefinedParametersMethods>>;
|
|
15
|
+
paths: Array<string> | ReadonlyArray<Readonly<string>>;
|
|
16
|
+
};
|
|
17
|
+
export declare function qraftPredefinedParametersRequestFn<TInputPredefinedParametersItem extends InputPredefinedParametersItem<any>, TData, TError>(inputPredefinedParameters: Array<TInputPredefinedParametersItem> | ReadonlyArray<Readonly<TInputPredefinedParametersItem>>, targetPredefinedParameters: Array<TargetPredefinedParametersItem> | ReadonlyArray<Readonly<TargetPredefinedParametersItem>>, requestFn: RequestFn<TData, TError>): RequestFn<TData, TError>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=qraftPredefinedParametersRequestFn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qraftPredefinedParametersRequestFn.d.ts","sourceRoot":"","sources":["../../src/qraftPredefinedParametersRequestFn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAIV,MAAM,oBAAoB,CAAC;AAG5B,MAAM,MAAM,6BAA6B,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAC3E,CAAC,GAAG,SAAS,GACb,CAAC,GAAG,SAAS,CAAC;AAElB,MAAM,MAAM,6BAA6B,CAAC,MAAM,IAAI;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,6BAA6B,CAAC,MAAM,CAAC,CAAC;KAC9C,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,iCAAiC,GAClC,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,MAAM,8BAA8B,GAAG;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EACH,KAAK,CAAC,iCAAiC,CAAC,GACxC,aAAa,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC/D,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;CACxD,CAAC;AAEF,wBAAgB,kCAAkC,CAChD,8BAA8B,SAAS,6BAA6B,CAAC,GAAG,CAAC,EACzE,KAAK,EACL,MAAM,EAEN,yBAAyB,EACrB,KAAK,CAAC,8BAA8B,CAAC,GACrC,aAAa,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,EAC3D,0BAA0B,EACtB,KAAK,CAAC,8BAA8B,CAAC,GACrC,aAAa,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,EAC3D,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAClC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CA6C1B"}
|
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.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": "NODE_ENV=production rollup --config rollup.config.mjs && tsc --project tsconfig.build.json --emitDeclarationOnly",
|
|
@@ -15,10 +15,10 @@
|
|
|
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.1",
|
|
19
19
|
"@openapi-qraft/eslint-config": "1.0.0",
|
|
20
|
-
"@openapi-qraft/openapi-typescript-plugin": "^1.
|
|
21
|
-
"@openapi-qraft/rollup-config": "1.0.0",
|
|
20
|
+
"@openapi-qraft/openapi-typescript-plugin": "^1.2.0-next.1",
|
|
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",
|
|
24
24
|
"@testing-library/jest-dom": "^5.17.0",
|
|
@@ -66,6 +66,11 @@
|
|
|
66
66
|
"require": "./dist/cjs/Unstable_QraftSecureRequestFn.cjs",
|
|
67
67
|
"types": "./dist/types/Unstable_QraftSecureRequestFn.d.ts"
|
|
68
68
|
},
|
|
69
|
+
"./qraftPredefinedParametersRequestFn": {
|
|
70
|
+
"import": "./dist/esm/qraftPredefinedParametersRequestFn.js",
|
|
71
|
+
"require": "./dist/cjs/qraftPredefinedParametersRequestFn.cjs",
|
|
72
|
+
"types": "./dist/types/qraftPredefinedParametersRequestFn.d.ts"
|
|
73
|
+
},
|
|
69
74
|
"./package.json": "./package.json"
|
|
70
75
|
},
|
|
71
76
|
"typesVersions": {
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
OperationSchema,
|
|
3
|
+
RequestFn,
|
|
4
|
+
RequestFnInfo,
|
|
5
|
+
RequestFnOptions,
|
|
6
|
+
RequestFnResponse,
|
|
7
|
+
} from './lib/requestFn.js';
|
|
8
|
+
import { shelfMerge } from './lib/shelfMerge.js';
|
|
9
|
+
|
|
10
|
+
export type QraftPredefinedParameterValue<T> = T extends () => Promise<infer R>
|
|
11
|
+
? R | undefined
|
|
12
|
+
: T | undefined;
|
|
13
|
+
|
|
14
|
+
export type InputPredefinedParametersItem<TValue> = {
|
|
15
|
+
requestPattern: string;
|
|
16
|
+
parameters: Array<{
|
|
17
|
+
in: 'header' | 'query' | 'cookie';
|
|
18
|
+
name: string;
|
|
19
|
+
value: QraftPredefinedParameterValue<TValue>;
|
|
20
|
+
}>;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
type TargetPredefinedParametersMethods =
|
|
24
|
+
| 'get'
|
|
25
|
+
| 'post'
|
|
26
|
+
| 'put'
|
|
27
|
+
| 'patch'
|
|
28
|
+
| 'delete'
|
|
29
|
+
| 'options'
|
|
30
|
+
| 'head'
|
|
31
|
+
| 'trace';
|
|
32
|
+
|
|
33
|
+
export type TargetPredefinedParametersItem = {
|
|
34
|
+
requestPattern: string;
|
|
35
|
+
methods:
|
|
36
|
+
| Array<TargetPredefinedParametersMethods>
|
|
37
|
+
| ReadonlyArray<Readonly<TargetPredefinedParametersMethods>>;
|
|
38
|
+
paths: Array<string> | ReadonlyArray<Readonly<string>>;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export function qraftPredefinedParametersRequestFn<
|
|
42
|
+
TInputPredefinedParametersItem extends InputPredefinedParametersItem<any>,
|
|
43
|
+
TData,
|
|
44
|
+
TError,
|
|
45
|
+
>(
|
|
46
|
+
inputPredefinedParameters:
|
|
47
|
+
| Array<TInputPredefinedParametersItem>
|
|
48
|
+
| ReadonlyArray<Readonly<TInputPredefinedParametersItem>>,
|
|
49
|
+
targetPredefinedParameters:
|
|
50
|
+
| Array<TargetPredefinedParametersItem>
|
|
51
|
+
| ReadonlyArray<Readonly<TargetPredefinedParametersItem>>,
|
|
52
|
+
requestFn: RequestFn<TData, TError>
|
|
53
|
+
): RequestFn<TData, TError> {
|
|
54
|
+
return function predefinedParametersRequestFn(
|
|
55
|
+
schema: OperationSchema,
|
|
56
|
+
requestInfo: RequestFnInfo,
|
|
57
|
+
options?: RequestFnOptions
|
|
58
|
+
): Promise<RequestFnResponse<TData, TError>> {
|
|
59
|
+
const matchingInputPredefinedParameters =
|
|
60
|
+
targetPredefinedParameters.flatMap((targetParameter) =>
|
|
61
|
+
targetParameter.paths.includes(schema.url) &&
|
|
62
|
+
(!targetParameter.methods.length ||
|
|
63
|
+
targetParameter.methods.includes(schema.method))
|
|
64
|
+
? inputPredefinedParameters.filter(
|
|
65
|
+
(predefinedParameter) =>
|
|
66
|
+
predefinedParameter.requestPattern ===
|
|
67
|
+
targetParameter.requestPattern
|
|
68
|
+
)
|
|
69
|
+
: []
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
if (!matchingInputPredefinedParameters?.length)
|
|
73
|
+
return requestFn(schema, requestInfo, options);
|
|
74
|
+
|
|
75
|
+
return Promise.all(
|
|
76
|
+
matchingInputPredefinedParameters.map((item) =>
|
|
77
|
+
resolveQraftPredefinedParameters(item.parameters)
|
|
78
|
+
)
|
|
79
|
+
).then((resolvedPredefinedParameters) => {
|
|
80
|
+
const mergedParameters = resolvedPredefinedParameters.reduce(
|
|
81
|
+
(acc, item) => {
|
|
82
|
+
acc = shelfMerge(2, acc, item);
|
|
83
|
+
return acc;
|
|
84
|
+
},
|
|
85
|
+
{}
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
return requestFn(
|
|
89
|
+
schema,
|
|
90
|
+
{
|
|
91
|
+
...requestInfo,
|
|
92
|
+
parameters: shelfMerge(2, mergedParameters, requestInfo.parameters),
|
|
93
|
+
},
|
|
94
|
+
options
|
|
95
|
+
);
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async function resolveQraftPredefinedParameters<T>(
|
|
101
|
+
predefinedParameters: InputPredefinedParametersItem<T>['parameters']
|
|
102
|
+
) {
|
|
103
|
+
return Promise.all(
|
|
104
|
+
predefinedParameters.map(async (predefinedParameter) => {
|
|
105
|
+
return {
|
|
106
|
+
...predefinedParameter,
|
|
107
|
+
value: await resolveQraftPredefinedParameterValue(
|
|
108
|
+
predefinedParameter.value
|
|
109
|
+
),
|
|
110
|
+
};
|
|
111
|
+
})
|
|
112
|
+
).then((resolvedPredefinedParameters) =>
|
|
113
|
+
resolvedPredefinedParameters
|
|
114
|
+
.filter(
|
|
115
|
+
(resolvedPredefinedParameter) =>
|
|
116
|
+
resolvedPredefinedParameter.value !== undefined
|
|
117
|
+
)
|
|
118
|
+
.reduce(
|
|
119
|
+
(acc, resolvedPredefinedParameter) => {
|
|
120
|
+
acc[resolvedPredefinedParameter.in] =
|
|
121
|
+
acc[resolvedPredefinedParameter.in] ?? {};
|
|
122
|
+
|
|
123
|
+
acc[resolvedPredefinedParameter.in][
|
|
124
|
+
resolvedPredefinedParameter.name
|
|
125
|
+
] = resolvedPredefinedParameter.value;
|
|
126
|
+
|
|
127
|
+
return acc;
|
|
128
|
+
},
|
|
129
|
+
{} as Record<string, Record<string, unknown>>
|
|
130
|
+
)
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
async function resolveQraftPredefinedParameterValue<T>(
|
|
135
|
+
value: QraftPredefinedParameterValue<T>
|
|
136
|
+
): Promise<T | undefined> {
|
|
137
|
+
if (value && typeof value === 'function')
|
|
138
|
+
return (await value()) as T | undefined;
|
|
139
|
+
return value as T | undefined;
|
|
140
|
+
}
|