@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 ADDED
@@ -0,0 +1,28 @@
1
+ [![npm version](https://badge.fury.io/js/orval.svg)](https://badge.fury.io/js/orval)
2
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
3
+ [![tests](https://github.com/anymaniax/orval/actions/workflows/tests.yaml/badge.svg)](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)
@@ -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
+ }