@orval/swr 6.11.0-alpha.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/README.md +28 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +57 -0
- package/package.json +18 -0
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
[](https://badge.fury.io/js/orval)
|
|
2
|
+
[](https://opensource.org/licenses/MIT)
|
|
3
|
+
[](https://github.com/anymaniax/orval/actions/workflows/tests.yaml)
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="./logo/orval-logo-horizontal.svg?raw=true" width="500" height="160" alt="orval - Restfull Client Generator" />
|
|
7
|
+
</p>
|
|
8
|
+
<h1 align="center">
|
|
9
|
+
Visit <a href="https://orval.dev" target="_blank">orval.dev</a> for docs, guides, API and beer!
|
|
10
|
+
</h1>
|
|
11
|
+
|
|
12
|
+
### Code Generation
|
|
13
|
+
|
|
14
|
+
`orval` is able to generate client with appropriate type-signatures (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in `yaml` or `json` formats.
|
|
15
|
+
|
|
16
|
+
`Generate`, `valid`, `cache` and `mock` in your React, Vue, Svelte and Angular applications all with your OpenAPI specification.
|
|
17
|
+
|
|
18
|
+
### Samples
|
|
19
|
+
|
|
20
|
+
You can find below some samples
|
|
21
|
+
|
|
22
|
+
- [react app](https://github.com/anymaniax/orval/tree/master/samples/react-app)
|
|
23
|
+
- [react query](https://github.com/anymaniax/orval/tree/master/samples/react-query)
|
|
24
|
+
- [svelte query](https://github.com/anymaniax/orval/tree/master/samples/svelte-query)
|
|
25
|
+
- [vue query](https://github.com/anymaniax/orval/tree/master/samples/vue-query)
|
|
26
|
+
- [react app with swr](https://github.com/anymaniax/orval/tree/master/samples/react-app-with-swr)
|
|
27
|
+
- [nx fastify react](https://github.com/anymaniax/orval/tree/master/samples/nx-fastify-react)
|
|
28
|
+
- [angular app](https://github.com/anymaniax/orval/tree/master/samples/angular-app)
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ClientDependenciesBuilder, ClientTitleBuilder, ClientHeaderBuilder, ClientFooterBuilder, ClientBuilder, ClientGeneratorsBuilder } from '@orval/core';
|
|
2
|
+
|
|
3
|
+
declare const getSwrDependencies: ClientDependenciesBuilder;
|
|
4
|
+
declare const generateSwrTitle: ClientTitleBuilder;
|
|
5
|
+
declare const generateSwrHeader: ClientHeaderBuilder;
|
|
6
|
+
declare const generateSwrFooter: ClientFooterBuilder;
|
|
7
|
+
declare const generateSwr: ClientBuilder;
|
|
8
|
+
declare const builder: () => ClientGeneratorsBuilder;
|
|
9
|
+
|
|
10
|
+
export { builder, builder as default, generateSwr, generateSwrFooter, generateSwrHeader, generateSwrTitle, getSwrDependencies };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _core = require('@orval/core');var V=[{exports:[{name:"axios",default:!0,values:!0,syntheticDefaultImport:!0},{name:"AxiosRequestConfig"},{name:"AxiosResponse"},{name:"AxiosError"}],dependency:"axios"}],M=[{exports:[{name:"useSwr",values:!0,default:!0},{name:"SWRConfiguration"},{name:"Key"}],dependency:"swr"}],N= exports.getSwrDependencies =e=>[...e?[]:V,...M],j=({headers:e,queryParams:s,operationName:i,response:o,mutator:r,body:n,props:a,verb:l,formData:w,formUrlEncoded:g,override:t},{route:$,context:y})=>{var O,S;let c=(t==null?void 0:t.requestOptions)!==!1,u=(t==null?void 0:t.formData)!==!1,p=(t==null?void 0:t.formUrlEncoded)!==!1,f=!!((S=(O=y.tsconfig)==null?void 0:O.compilerOptions)!=null&&S.exactOptionalPropertyTypes),A=_core.VERBS_WITH_BODY.includes(l),C=_core.isSyntheticDefaultImportsAllow.call(void 0, y.tsconfig),x=_core.generateFormDataAndUrlEncodedFunction.call(void 0, {formData:w,formUrlEncoded:g,body:n,isFormData:u,isFormUrlEncoded:p});if(r){let P=_core.generateMutatorConfig.call(void 0, {route:$,body:n,headers:e,queryParams:s,response:o,verb:l,isFormData:u,isFormUrlEncoded:p,hasSignal:!1,isBodyVerb:A,isExactOptionalPropertyTypes:f}),R=(r==null?void 0:r.bodyTypeName)&&n.definition?_core.toObjectString.call(void 0, a,"implementation").replace(new RegExp(`(\\w*):\\s?${n.definition}`),`$1: ${r.bodyTypeName}<${n.definition}>`):_core.toObjectString.call(void 0, a,"implementation"),D=c?_core.generateMutatorRequestOptions.call(void 0, t==null?void 0:t.requestOptions,r.hasSecondArg):"";return`export const ${i} = (
|
|
2
|
+
${R}
|
|
3
|
+
${c&&r.hasSecondArg?`options?: SecondParameter<typeof ${r.name}>`:""}) => {${x}
|
|
4
|
+
return ${r.name}<${o.definition.success||"unknown"}>(
|
|
5
|
+
${P},
|
|
6
|
+
${D});
|
|
7
|
+
}
|
|
8
|
+
`}let G=_core.generateOptions.call(void 0, {route:$,body:n,headers:e,queryParams:s,response:o,verb:l,requestOptions:t==null?void 0:t.requestOptions,isFormData:u,isFormUrlEncoded:p,isExactOptionalPropertyTypes:f,hasSignal:!1});return`export const ${i} = (
|
|
9
|
+
${_core.toObjectString.call(void 0, a,"implementation")} ${c?`options?: AxiosRequestConfig
|
|
10
|
+
`:""} ): Promise<AxiosResponse<${o.definition.success||"unknown"}>> => {${x}
|
|
11
|
+
return axios${C?"":".default"}.${l}(${G});
|
|
12
|
+
}
|
|
13
|
+
`},W=({operationName:e,mutator:s,isRequestOptions:i})=>{let o=`SWRConfiguration<Awaited<ReturnType<typeof ${e}>>, TError> & { swrKey?: Key, enabled?: boolean }`;return i?`options?: { swr?:${o}, ${s?s!=null&&s.hasSecondArg?`request?: SecondParameter<typeof ${s.name}>`:"":"axios?: AxiosRequestConfig"} }
|
|
14
|
+
`:`swrOptions?: ${o}`},_=({operationName:e,swrKeyFnName:s,swrProperties:i,swrKeyProperties:o,params:r,mutator:n,isRequestOptions:a,response:l,swrOptions:w,props:g})=>{var u;let t=_core.toObjectString.call(void 0, g,"implementation"),$=i,y=`const isEnabled = swrOptions?.enabled !== false${r.length?` && !!(${r.map(({name:p})=>p).join(" && ")})`:""}
|
|
15
|
+
const swrKey = swrOptions?.swrKey ?? (() => isEnabled ? ${s}(${o}) : null);`,c=`AxiosError<${l.definition.errors||"unknown"}>`;return n&&(c=n.hasErrorType?`ErrorType<${l.definition.errors||"unknown"}>`:l.definition.errors||"unknown"),`
|
|
16
|
+
export type ${_core.pascal.call(void 0, e)}QueryResult = NonNullable<Awaited<ReturnType<typeof ${e}>>>
|
|
17
|
+
export type ${_core.pascal.call(void 0, e)}QueryError = ${c}
|
|
18
|
+
|
|
19
|
+
export const ${_core.camel.call(void 0, `use-${e}`)} = <TError = ${c}>(
|
|
20
|
+
${t} ${W({operationName:e,mutator:n,isRequestOptions:a})}
|
|
21
|
+
) => {
|
|
22
|
+
|
|
23
|
+
${a?`const {swr: swrOptions${n?n!=null&&n.hasSecondArg?", request: requestOptions":"":", axios: axiosOptions"}} = options ?? {}`:""}
|
|
24
|
+
|
|
25
|
+
${y}
|
|
26
|
+
const swrFn = () => ${e}(${$}${$?", ":""}${a?n?n!=null&&n.hasSecondArg?"requestOptions":"":"axiosOptions":""});
|
|
27
|
+
|
|
28
|
+
const query = useSwr<Awaited<ReturnType<typeof swrFn>>, TError>(swrKey, swrFn, ${w.options?`{
|
|
29
|
+
${(u=_core.stringify.call(void 0, w.options))==null?void 0:u.slice(1,-1)}
|
|
30
|
+
...swrOptions
|
|
31
|
+
}`:"swrOptions"})
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
swrKey,
|
|
35
|
+
...query
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
`},U=({queryParams:e,operationName:s,body:i,props:o,verb:r,params:n,override:a,mutator:l,response:w},{route:g})=>{let t=(a==null?void 0:a.requestOptions)!==!1;if(r!==_core.Verbs.GET)return"";let $=o.map(({name:p,type:f})=>f===_core.GetterPropType.BODY?i.implementation:p).join(","),y=o.filter(p=>p.type!==_core.GetterPropType.HEADER).map(({name:p,type:f})=>f===_core.GetterPropType.BODY?i.implementation:p).join(","),c=_core.camel.call(void 0, `get-${s}-key`),u=_core.toObjectString.call(void 0, o.filter(p=>p.type!==_core.GetterPropType.HEADER),"implementation");return`export const ${c} = (${u}) => [\`${g}\`${e?", ...(params ? [params]: [])":""}${i.implementation?`, ${i.implementation}`:""}];
|
|
39
|
+
|
|
40
|
+
${_({operationName:s,swrKeyFnName:c,swrProperties:$,swrKeyProperties:y,params:n,props:o,mutator:l,isRequestOptions:t,response:w,swrOptions:a.swr})}
|
|
41
|
+
`},Y= exports.generateSwrTitle =()=>"",Q= exports.generateSwrHeader =({isRequestOptions:e,isMutator:s,hasAwaitedType:i})=>`
|
|
42
|
+
${i?"":`type AwaitedInput<T> = PromiseLike<T> | T;
|
|
43
|
+
|
|
44
|
+
type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;
|
|
45
|
+
|
|
46
|
+
`}
|
|
47
|
+
${e&&s?`// eslint-disable-next-line
|
|
48
|
+
type SecondParameter<T extends (...args: any) => any> = T extends (
|
|
49
|
+
config: any,
|
|
50
|
+
args: infer P,
|
|
51
|
+
) => any
|
|
52
|
+
? P
|
|
53
|
+
: never;
|
|
54
|
+
|
|
55
|
+
`:""}`,L= exports.generateSwrFooter =()=>"",X= exports.generateSwr =(e,s)=>{let i=_core.generateVerbImports.call(void 0, e),o=j(e,s),r=U(e,s);return{implementation:`${o}
|
|
56
|
+
|
|
57
|
+
${r}`,imports:i}},z={client:X,header:Q,dependencies:N,footer:L,title:Y},J= exports.builder =()=>z,$e= exports.default =J;exports.builder = J; exports.default = $e; exports.generateSwr = X; exports.generateSwrFooter = L; exports.generateSwrHeader = Q; exports.generateSwrTitle = Y; exports.getSwrDependencies = N;
|
package/package.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@orval/swr",
|
|
3
|
+
"version": "6.11.0-alpha.1",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsup ./src/index.ts --target node12 --minify --clean --dts --splitting",
|
|
12
|
+
"dev": "tsup ./src/index.ts --target node12 --clean --watch src",
|
|
13
|
+
"lint": "eslint src/**/*.ts"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@orval/core": "6.11.0-alpha.1"
|
|
17
|
+
}
|
|
18
|
+
}
|