@orval/fetch 6.30.2 → 6.31.0
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 +1 -0
- package/dist/index.js +23 -12
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -27,3 +27,4 @@ You can find below some samples
|
|
|
27
27
|
- [nx fastify react](https://github.com/anymaniax/orval/tree/master/samples/nx-fastify-react)
|
|
28
28
|
- [angular app](https://github.com/anymaniax/orval/tree/master/samples/angular-app)
|
|
29
29
|
- [hono](https://github.com/anymaniax/orval/tree/master/samples/hono)
|
|
30
|
+
- [next app with fetch](https://github.com/anymaniax/orval/tree/master/samples/next-app-with-fetch)
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,7 @@ var generateRequestFunction = ({
|
|
|
30
30
|
queryParams,
|
|
31
31
|
operationName,
|
|
32
32
|
response,
|
|
33
|
+
mutator,
|
|
33
34
|
body,
|
|
34
35
|
props,
|
|
35
36
|
verb,
|
|
@@ -63,6 +64,11 @@ ${queryParams ? `
|
|
|
63
64
|
return \`${route}${queryParams ? "?${normalizedParams.toString()}" : ""}\`
|
|
64
65
|
}
|
|
65
66
|
`;
|
|
67
|
+
const responseTypeName = `${operationName}Response`;
|
|
68
|
+
const responseTypeImplementation = `export type ${operationName}Response = {
|
|
69
|
+
data: ${response.definition.success || "unknown"};
|
|
70
|
+
status: number;
|
|
71
|
+
}`;
|
|
66
72
|
const getUrlFnProperties = props.filter(
|
|
67
73
|
(prop) => prop.type === import_core.GetterPropType.PARAM || prop.type === import_core.GetterPropType.QUERY_PARAM || prop.type === import_core.GetterPropType.NAMED_PATH_PARAMS
|
|
68
74
|
).map((param) => {
|
|
@@ -73,7 +79,7 @@ ${queryParams ? `
|
|
|
73
79
|
}
|
|
74
80
|
}).join(",");
|
|
75
81
|
const args = `${(0, import_core.toObjectString)(props, "implementation")} ${isRequestOptions ? `options?: RequestInit` : ""}`;
|
|
76
|
-
const retrunType = `Promise<${
|
|
82
|
+
const retrunType = `Promise<${responseTypeName}>`;
|
|
77
83
|
const globalFetchOptions = (0, import_core.isObject)(override == null ? void 0 : override.requestOptions) ? `${(_b = (_a = (0, import_core.stringify)(override == null ? void 0 : override.requestOptions)) == null ? void 0 : _a.slice(1, -1)) == null ? void 0 : _b.trim()}` : "";
|
|
78
84
|
const fetchMethodOption = `method: '${verb.toUpperCase()}'`;
|
|
79
85
|
const requestBodyParams = (0, import_core.generateBodyOptions)(
|
|
@@ -82,17 +88,20 @@ ${queryParams ? `
|
|
|
82
88
|
isFormUrlEncoded
|
|
83
89
|
);
|
|
84
90
|
const fetchBodyOption = requestBodyParams ? `body: JSON.stringify(${requestBodyParams})` : "";
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
const fetchFnOptions = `${getUrlFnName}(${getUrlFnProperties}),
|
|
92
|
+
{${globalFetchOptions ? "\n" : ""} ${globalFetchOptions}
|
|
93
|
+
${isRequestOptions ? "...options," : ""}
|
|
94
|
+
${fetchMethodOption}${fetchBodyOption ? "," : ""}
|
|
95
|
+
${fetchBodyOption}
|
|
96
|
+
}
|
|
97
|
+
`;
|
|
98
|
+
const fetchResponseImplementation = `const res = await fetch(${fetchFnOptions}
|
|
92
99
|
)
|
|
93
|
-
|
|
94
|
-
|
|
100
|
+
const data = await res.json()
|
|
101
|
+
|
|
102
|
+
return { status: res.status, data }
|
|
95
103
|
`;
|
|
104
|
+
const customFetchResponseImplementation = `return ${mutator == null ? void 0 : mutator.name}<${retrunType}>(${fetchFnOptions});`;
|
|
96
105
|
const bodyForm = (0, import_core.generateFormDataAndUrlEncodedFunction)({
|
|
97
106
|
formData,
|
|
98
107
|
formUrlEncoded,
|
|
@@ -100,11 +109,13 @@ ${queryParams ? `
|
|
|
100
109
|
isFormData,
|
|
101
110
|
isFormUrlEncoded
|
|
102
111
|
});
|
|
103
|
-
const fetchImplementationBody = `${bodyForm ? ` ${bodyForm}
|
|
112
|
+
const fetchImplementationBody = mutator ? customFetchResponseImplementation : `${bodyForm ? ` ${bodyForm}
|
|
104
113
|
` : ""} ${fetchResponseImplementation}`;
|
|
105
114
|
const fetchImplementation = `export const ${operationName} = async (${args}): ${retrunType} => {
|
|
106
115
|
${fetchImplementationBody}}`;
|
|
107
|
-
const implementation = `${
|
|
116
|
+
const implementation = `${responseTypeImplementation}
|
|
117
|
+
|
|
118
|
+
${getUrlFnImplementation}
|
|
108
119
|
${fetchImplementation}
|
|
109
120
|
`;
|
|
110
121
|
return implementation;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n camel,\n ClientBuilder,\n ClientDependenciesBuilder,\n ClientGeneratorsBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateVerbImports,\n GeneratorDependency,\n GeneratorOptions,\n GeneratorVerbOptions,\n GetterPropType,\n stringify,\n toObjectString,\n generateBodyOptions,\n isObject,\n} from '@orval/core';\n\nconst generateRequestFunction = (\n {\n queryParams,\n operationName,\n response,\n body,\n props,\n verb,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route }: GeneratorOptions,\n) => {\n const isRequestOptions = override?.requestOptions !== false;\n const isFormData = override?.formData !== false;\n const isFormUrlEncoded = override?.formUrlEncoded !== false;\n\n const getUrlFnName = camel(`get-${operationName}-url`);\n const getUrlFnProps = toObjectString(\n props.filter(\n (prop) =>\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS ||\n prop.type === GetterPropType.QUERY_PARAM,\n ),\n 'implementation',\n );\n const getUrlFnImplementation = `export const ${getUrlFnName} = (${getUrlFnProps}) => {\n${\n queryParams\n ? `\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });`\n : ''\n}\n\n return \\`${route}${queryParams ? '?${normalizedParams.toString()}' : ''}\\`\n}\\n`;\n const getUrlFnProperties = props\n .filter(\n (prop) =>\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.QUERY_PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS,\n )\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS) {\n return param.destructured;\n } else {\n return param.name;\n }\n })\n .join(',');\n\n const args = `${toObjectString(props, 'implementation')} ${isRequestOptions ? `options?: RequestInit` : ''}`;\n const retrunType = `Promise<${
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n camel,\n ClientBuilder,\n ClientDependenciesBuilder,\n ClientGeneratorsBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateVerbImports,\n GeneratorDependency,\n GeneratorOptions,\n GeneratorVerbOptions,\n GetterPropType,\n stringify,\n toObjectString,\n generateBodyOptions,\n isObject,\n} from '@orval/core';\n\nconst generateRequestFunction = (\n {\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route }: GeneratorOptions,\n) => {\n const isRequestOptions = override?.requestOptions !== false;\n const isFormData = override?.formData !== false;\n const isFormUrlEncoded = override?.formUrlEncoded !== false;\n\n const getUrlFnName = camel(`get-${operationName}-url`);\n const getUrlFnProps = toObjectString(\n props.filter(\n (prop) =>\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS ||\n prop.type === GetterPropType.QUERY_PARAM,\n ),\n 'implementation',\n );\n const getUrlFnImplementation = `export const ${getUrlFnName} = (${getUrlFnProps}) => {\n${\n queryParams\n ? `\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });`\n : ''\n}\n\n return \\`${route}${queryParams ? '?${normalizedParams.toString()}' : ''}\\`\n}\\n`;\n\n const responseTypeName = `${operationName}Response`;\n const responseTypeImplementation = `export type ${operationName}Response = {\n data: ${response.definition.success || 'unknown'};\n status: number;\n}`;\n\n const getUrlFnProperties = props\n .filter(\n (prop) =>\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.QUERY_PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS,\n )\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS) {\n return param.destructured;\n } else {\n return param.name;\n }\n })\n .join(',');\n\n const args = `${toObjectString(props, 'implementation')} ${isRequestOptions ? `options?: RequestInit` : ''}`;\n const retrunType = `Promise<${responseTypeName}>`;\n\n const globalFetchOptions = isObject(override?.requestOptions)\n ? `${stringify(override?.requestOptions)?.slice(1, -1)?.trim()}`\n : '';\n const fetchMethodOption = `method: '${verb.toUpperCase()}'`;\n\n const requestBodyParams = generateBodyOptions(\n body,\n isFormData,\n isFormUrlEncoded,\n );\n const fetchBodyOption = requestBodyParams\n ? `body: JSON.stringify(${requestBodyParams})`\n : '';\n\n const fetchFnOptions = `${getUrlFnName}(${getUrlFnProperties}),\n {${globalFetchOptions ? '\\n' : ''} ${globalFetchOptions}\n ${isRequestOptions ? '...options,' : ''}\n ${fetchMethodOption}${fetchBodyOption ? ',' : ''}\n ${fetchBodyOption}\n }\n`;\n const fetchResponseImplementation = `const res = await fetch(${fetchFnOptions}\n )\n const data = await res.json()\n\n return { status: res.status, data }\n`;\n const customFetchResponseImplementation = `return ${mutator?.name}<${retrunType}>(${fetchFnOptions});`;\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n const fetchImplementationBody = mutator\n ? customFetchResponseImplementation\n : `${bodyForm ? ` ${bodyForm}\\n` : ''}` +\n ` ${fetchResponseImplementation}`;\n const fetchImplementation = `export const ${operationName} = async (${args}): ${retrunType} => {\\n${fetchImplementationBody}}`;\n\n const implementation =\n `${responseTypeImplementation}\\n\\n` +\n `${getUrlFnImplementation}\\n` +\n `${fetchImplementation}\\n`;\n\n return implementation;\n};\n\nexport const generateClient: ClientBuilder = (verbOptions, options) => {\n const imports = generateVerbImports(verbOptions);\n const functionImplementation = generateRequestFunction(verbOptions, options);\n\n return {\n implementation: `${functionImplementation}\\n`,\n imports,\n };\n};\n\nconst fetchClientBuilder: ClientGeneratorsBuilder = {\n client: generateClient,\n dependencies: () => [],\n};\n\nexport const builder = () => () => fetchClientBuilder;\n\nexport default builder;\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/fetch",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.31.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -13,6 +13,6 @@
|
|
|
13
13
|
"lint": "eslint src/**/*.ts"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@orval/core": "6.
|
|
16
|
+
"@orval/core": "6.31.0"
|
|
17
17
|
}
|
|
18
18
|
}
|