@orval/fetch 8.0.0-rc.2 → 8.0.0-rc.4
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/dist/index.d.mts +3 -2
- package/dist/index.mjs +74 -23
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ClientBuilder, ClientGeneratorsBuilder, ClientHeaderBuilder, GeneratorOptions, GeneratorVerbOptions } from "@orval/core";
|
|
1
|
+
import { ClientBuilder, ClientGeneratorsBuilder, ClientHeaderBuilder, GeneratorDependency, GeneratorOptions, GeneratorVerbOptions } from "@orval/core";
|
|
2
2
|
|
|
3
3
|
//#region src/index.d.ts
|
|
4
|
+
declare const getFetchDependencies: () => GeneratorDependency[];
|
|
4
5
|
declare const generateRequestFunction: ({
|
|
5
6
|
queryParams,
|
|
6
7
|
headers,
|
|
@@ -24,5 +25,5 @@ declare const generateClient: ClientBuilder;
|
|
|
24
25
|
declare const generateFetchHeader: ClientHeaderBuilder;
|
|
25
26
|
declare const builder: () => () => ClientGeneratorsBuilder;
|
|
26
27
|
//#endregion
|
|
27
|
-
export { builder, builder as default, fetchResponseTypeName, generateClient, generateFetchHeader, generateRequestFunction };
|
|
28
|
+
export { builder, builder as default, fetchResponseTypeName, generateClient, generateFetchHeader, generateRequestFunction, getFetchDependencies };
|
|
28
29
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.mjs
CHANGED
|
@@ -1,13 +1,35 @@
|
|
|
1
1
|
import { GetterPropType, camel, generateBodyOptions, generateFormDataAndUrlEncodedFunction, generateVerbImports, isObject, pascal, resolveRef, stringify, toObjectString } from "@orval/core";
|
|
2
|
+
import { isDereferenced } from "@scalar/openapi-types/helpers";
|
|
2
3
|
|
|
3
4
|
//#region src/index.ts
|
|
5
|
+
const WILDCARD_STATUS_CODE_REGEX = /^[1-5]XX$/i;
|
|
6
|
+
const getStatusCodeType = (key) => {
|
|
7
|
+
if (WILDCARD_STATUS_CODE_REGEX.test(key)) return `HTTPStatusCode${key[0]}xx`;
|
|
8
|
+
return key;
|
|
9
|
+
};
|
|
10
|
+
const FETCH_DEPENDENCIES = [{
|
|
11
|
+
exports: [{
|
|
12
|
+
name: "z",
|
|
13
|
+
alias: "zod",
|
|
14
|
+
values: true
|
|
15
|
+
}],
|
|
16
|
+
dependency: "zod"
|
|
17
|
+
}];
|
|
18
|
+
const getFetchDependencies = () => FETCH_DEPENDENCIES;
|
|
19
|
+
const PRIMITIVE_TYPES = new Set([
|
|
20
|
+
"string",
|
|
21
|
+
"number",
|
|
22
|
+
"boolean",
|
|
23
|
+
"void",
|
|
24
|
+
"unknown"
|
|
25
|
+
]);
|
|
4
26
|
const generateRequestFunction = ({ queryParams, headers, operationName, response, mutator, body, props, verb, fetchReviver, formData, formUrlEncoded, override }, { route, context, pathRoute }) => {
|
|
5
27
|
const isRequestOptions = override.requestOptions !== false;
|
|
6
28
|
const isFormData = !override.formData.disabled;
|
|
7
29
|
const isFormUrlEncoded = override.formUrlEncoded !== false;
|
|
8
30
|
const getUrlFnName = camel(`get-${operationName}-url`);
|
|
9
31
|
const getUrlFnProps = toObjectString(props.filter((prop) => prop.type === GetterPropType.PARAM || prop.type === GetterPropType.NAMED_PATH_PARAMS || prop.type === GetterPropType.QUERY_PARAM), "implementation");
|
|
10
|
-
const parameters = context.
|
|
32
|
+
const parameters = (context.spec.paths?.[pathRoute])?.[verb]?.parameters ?? [];
|
|
11
33
|
const explodeParameters = parameters.filter((parameter) => {
|
|
12
34
|
const { schema } = resolveRef(parameter, context);
|
|
13
35
|
const schemaObject = schema.schema;
|
|
@@ -17,25 +39,26 @@ const generateRequestFunction = ({ queryParams, headers, operationName, response
|
|
|
17
39
|
const { schema } = resolveRef(parameter, context);
|
|
18
40
|
return schema.name;
|
|
19
41
|
});
|
|
20
|
-
const
|
|
42
|
+
const hasExplodedDateParams = context.output.override.useDates && explodeParameters.some((p) => isDereferenced(p) && p.schema?.format === "date-time");
|
|
21
43
|
const explodeArrayImplementation = explodeParameters.length > 0 ? `const explodeParameters = ${JSON.stringify(explodeParametersNames)};
|
|
22
44
|
|
|
23
45
|
if (Array.isArray(value) && explodeParameters.includes(key)) {
|
|
24
46
|
value.forEach((v) => {
|
|
25
|
-
normalizedParams.append(key, v === null ? 'null' : ${
|
|
47
|
+
normalizedParams.append(key, v === null ? 'null' : ${hasExplodedDateParams ? "v instanceof Date ? v.toISOString() : " : ""}v.toString());
|
|
26
48
|
});
|
|
27
49
|
return;
|
|
28
50
|
}
|
|
29
51
|
` : "";
|
|
30
52
|
const isExplodeParametersOnly = explodeParameters.length === parameters.length;
|
|
53
|
+
const normalParamsImplementation = `if (value !== undefined) {
|
|
54
|
+
normalizedParams.append(key, value === null ? 'null' : ${context.output.override.useDates && parameters.some((p) => isDereferenced(p) && p.schema?.format === "date-time") ? "value instanceof Date ? value.toISOString() : " : ""}value.toString())
|
|
55
|
+
}`;
|
|
31
56
|
const getUrlFnImplementation = `export const ${getUrlFnName} = (${getUrlFnProps}) => {
|
|
32
57
|
${queryParams ? ` const normalizedParams = new URLSearchParams();
|
|
33
58
|
|
|
34
59
|
Object.entries(params || {}).forEach(([key, value]) => {
|
|
35
60
|
${explodeArrayImplementation}
|
|
36
|
-
${isExplodeParametersOnly ? "" :
|
|
37
|
-
normalizedParams.append(key, value === null ? 'null' : ${hasDateParams ? "value instanceof Date ? value.toISOString() : " : ""}value.toString())
|
|
38
|
-
}`}
|
|
61
|
+
${isExplodeParametersOnly ? "" : normalParamsImplementation}
|
|
39
62
|
});` : ""}
|
|
40
63
|
|
|
41
64
|
${queryParams ? `const stringifiedParams = normalizedParams.toString();` : ``}
|
|
@@ -45,6 +68,10 @@ ${queryParams ? ` const normalizedParams = new URLSearchParams();
|
|
|
45
68
|
const isContentTypeNdJson = (contentType) => contentType === "application/nd-json" || contentType === "application/x-ndjson";
|
|
46
69
|
const isNdJson = response.contentTypes.some((contentType) => isContentTypeNdJson(contentType));
|
|
47
70
|
const responseTypeName = fetchResponseTypeName(override.fetch.includeHttpResponseReturnType, isNdJson ? "Response" : response.definition.success, operationName);
|
|
71
|
+
const responseType = response.definition.success;
|
|
72
|
+
const isPrimitiveType = PRIMITIVE_TYPES.has(responseType);
|
|
73
|
+
const hasSchema = response.imports.some((imp) => imp.name === responseType);
|
|
74
|
+
const isValidateResponse = override.fetch.runtimeValidation && !isPrimitiveType && hasSchema && !isNdJson;
|
|
48
75
|
const allResponses = [...response.types.success, ...response.types.errors];
|
|
49
76
|
if (allResponses.length === 0) allResponses.push({
|
|
50
77
|
contentType: "",
|
|
@@ -55,20 +82,23 @@ ${queryParams ? ` const normalizedParams = new URLSearchParams();
|
|
|
55
82
|
key: "default",
|
|
56
83
|
schemas: [],
|
|
57
84
|
type: "unknown",
|
|
58
|
-
value: "unknown"
|
|
85
|
+
value: "unknown",
|
|
86
|
+
dependencies: []
|
|
59
87
|
});
|
|
60
|
-
const nonDefaultStatuses = allResponses.filter((r) => r.key !== "default").map((r) => r.key);
|
|
88
|
+
const nonDefaultStatuses = allResponses.filter((r) => r.key !== "default").map((r) => getStatusCodeType(r.key));
|
|
61
89
|
const responseDataTypes = allResponses.map((r) => allResponses.filter((r2) => r2.key === r.key).length > 1 ? {
|
|
62
90
|
...r,
|
|
63
91
|
suffix: pascal(r.contentType)
|
|
64
92
|
} : r).map((r) => {
|
|
65
93
|
const name = `${responseTypeName}${pascal(r.key)}${"suffix" in r ? r.suffix : ""}`;
|
|
94
|
+
const hasValidZodSchema = r.value && !PRIMITIVE_TYPES.has(r.value);
|
|
95
|
+
const dataType = override.fetch.useZodSchemaResponse && hasValidZodSchema ? `zod.infer<typeof ${r.value}>` : r.value || "unknown";
|
|
66
96
|
return {
|
|
67
97
|
name,
|
|
68
98
|
success: response.types.success.some((s) => s.key === r.key),
|
|
69
99
|
value: `export type ${name} = {
|
|
70
|
-
${isContentTypeNdJson(r.contentType) ? `stream: TypedResponse<${
|
|
71
|
-
status: ${r.key === "default" ? nonDefaultStatuses.length > 0 ? `Exclude<HTTPStatusCodes, ${nonDefaultStatuses.join(" | ")}>` : "number" : r.key}
|
|
100
|
+
${isContentTypeNdJson(r.contentType) ? `stream: TypedResponse<${dataType}>` : `data: ${dataType}`}
|
|
101
|
+
status: ${r.key === "default" ? nonDefaultStatuses.length > 0 ? `Exclude<HTTPStatusCodes, ${nonDefaultStatuses.join(" | ")}>` : "number" : getStatusCodeType(r.key)}
|
|
72
102
|
}`
|
|
73
103
|
};
|
|
74
104
|
});
|
|
@@ -92,20 +122,19 @@ ${override.fetch.forceSuccessResponse && hasSuccess ? "" : `export type ${respon
|
|
|
92
122
|
const args = `${toObjectString(props, "implementation")} ${isRequestOptions ? `options?: RequestInit` : ""}`;
|
|
93
123
|
const returnType = override.fetch.forceSuccessResponse && hasSuccess ? `Promise<${successName}>` : `Promise<${responseTypeName}>`;
|
|
94
124
|
const fetchMethodOption = `method: '${verb.toUpperCase()}'`;
|
|
125
|
+
const ignoreContentTypes = ["multipart/form-data"];
|
|
126
|
+
const overrideHeaders = isObject(override.requestOptions) && override.requestOptions.headers ? Object.entries(override.requestOptions.headers).map(([key, value]) => `'${key}': \`${value}\``) : [];
|
|
95
127
|
const headersToAdd = [
|
|
96
|
-
...body.contentType && !
|
|
128
|
+
...body.contentType && !ignoreContentTypes.includes(body.contentType) ? [`'Content-Type': '${body.contentType}'`] : [],
|
|
97
129
|
...isNdJson && response.contentTypes.length === 1 ? [`Accept: ${response.contentTypes[0] === "application/x-ndjson" ? "'application/x-ndjson'" : "'application/nd-json'"}`] : [],
|
|
130
|
+
...overrideHeaders,
|
|
98
131
|
...headers ? ["...headers"] : []
|
|
99
132
|
];
|
|
100
133
|
let globalFetchOptions;
|
|
101
134
|
if (isObject(override.requestOptions)) {
|
|
102
135
|
const shouldMergeFetchOptionHeaders = headersToAdd.length > 0 && "headers" in override.requestOptions;
|
|
103
136
|
const globalFetchOptionsObject = { ...override.requestOptions };
|
|
104
|
-
if (shouldMergeFetchOptionHeaders && override.requestOptions.headers)
|
|
105
|
-
delete globalFetchOptionsObject.headers;
|
|
106
|
-
const stringifiedHeaders = stringify(override.requestOptions.headers);
|
|
107
|
-
if (stringifiedHeaders) headersToAdd.unshift("..." + stringifiedHeaders);
|
|
108
|
-
}
|
|
137
|
+
if (shouldMergeFetchOptionHeaders && override.requestOptions.headers) delete globalFetchOptionsObject.headers;
|
|
109
138
|
globalFetchOptions = stringify(globalFetchOptionsObject)?.slice(1, -1).trim();
|
|
110
139
|
} else globalFetchOptions = "";
|
|
111
140
|
const fetchHeadersOption = headersToAdd.length > 0 ? `headers: { ${headersToAdd.join(",")}, ...options?.headers }` : "";
|
|
@@ -135,7 +164,8 @@ ${override.fetch.forceSuccessResponse && hasSuccess ? "" : `export type ${respon
|
|
|
135
164
|
|
|
136
165
|
const body = [204, 205, 304].includes(res.status) ? null : await res.text();
|
|
137
166
|
${override.fetch.forceSuccessResponse ? throwOnErrorImplementation : ""}
|
|
138
|
-
|
|
167
|
+
${isValidateResponse ? `const parsedBody = body ? JSON.parse(body${reviver}) : {}
|
|
168
|
+
const data = ${responseType}.parse(parsedBody)` : `const data: ${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}${override.fetch.includeHttpResponseReturnType ? `['data']` : ""} = body ? JSON.parse(body${reviver}) : {}`}
|
|
139
169
|
${override.fetch.includeHttpResponseReturnType ? `return { data, status: res.status, headers: res.headers } as ${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}` : "return data"}
|
|
140
170
|
`;
|
|
141
171
|
const customFetchResponseImplementation = `return ${mutator?.name}<${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}>(${fetchFnOptions});`;
|
|
@@ -155,11 +185,32 @@ ${override.fetch.forceSuccessResponse && hasSuccess ? "" : `export type ${respon
|
|
|
155
185
|
const fetchResponseTypeName = (includeHttpResponseReturnType, definitionSuccessResponse, operationName) => {
|
|
156
186
|
return includeHttpResponseReturnType ? `${operationName}Response` : definitionSuccessResponse;
|
|
157
187
|
};
|
|
158
|
-
const generateClient = (verbOptions, options) => {
|
|
188
|
+
const generateClient = (verbOptions, options, outputClient, output) => {
|
|
159
189
|
const imports = generateVerbImports(verbOptions);
|
|
190
|
+
const functionImplementation = generateRequestFunction(verbOptions, options);
|
|
191
|
+
const isZodSchemaImportsRequired = verbOptions.override.fetch.useZodSchemaResponse || verbOptions.override.fetch.runtimeValidation;
|
|
192
|
+
const responseImports = isZodSchemaImportsRequired ? [...verbOptions.response.types.success, ...verbOptions.response.types.errors].flatMap((response) => response.imports.map((imp) => ({
|
|
193
|
+
name: imp.name,
|
|
194
|
+
schemaName: imp.name,
|
|
195
|
+
isZodSchema: true,
|
|
196
|
+
values: true
|
|
197
|
+
}))) : [];
|
|
198
|
+
const requestImports = isZodSchemaImportsRequired ? [
|
|
199
|
+
...verbOptions.body.imports,
|
|
200
|
+
...verbOptions.queryParams ? [{ name: `${pascal(verbOptions.operationName)}QueryParams` }] : [],
|
|
201
|
+
...verbOptions.headers ? [{ name: `${pascal(verbOptions.operationName)}Header` }] : []
|
|
202
|
+
].map((imp) => ({
|
|
203
|
+
name: imp.name,
|
|
204
|
+
schemaName: imp.name,
|
|
205
|
+
isZodSchema: true,
|
|
206
|
+
values: true
|
|
207
|
+
})) : [];
|
|
208
|
+
const zodSchemaImports = [...responseImports, ...requestImports];
|
|
209
|
+
const zodSchemaNames = new Set(zodSchemaImports.map((imp) => imp.name));
|
|
210
|
+
const filteredImports = imports.filter((imp) => !zodSchemaNames.has(imp.name));
|
|
160
211
|
return {
|
|
161
|
-
implementation: `${
|
|
162
|
-
imports
|
|
212
|
+
implementation: `${functionImplementation}\n`,
|
|
213
|
+
imports: [...filteredImports, ...zodSchemaImports]
|
|
163
214
|
};
|
|
164
215
|
};
|
|
165
216
|
const getHTTPStatusCodes = () => `
|
|
@@ -172,16 +223,16 @@ export type HTTPStatusCodes = HTTPStatusCode1xx | HTTPStatusCode2xx | HTTPStatus
|
|
|
172
223
|
|
|
173
224
|
`;
|
|
174
225
|
const generateFetchHeader = ({ clientImplementation }) => {
|
|
175
|
-
return clientImplementation
|
|
226
|
+
return /HTTPStatusCode[1-5]xx|<HTTPStatusCodes,/.test(clientImplementation) ? getHTTPStatusCodes() : "";
|
|
176
227
|
};
|
|
177
228
|
const fetchClientBuilder = {
|
|
178
229
|
client: generateClient,
|
|
179
230
|
header: generateFetchHeader,
|
|
180
|
-
dependencies:
|
|
231
|
+
dependencies: getFetchDependencies
|
|
181
232
|
};
|
|
182
233
|
const builder = () => () => fetchClientBuilder;
|
|
183
234
|
var src_default = builder;
|
|
184
235
|
|
|
185
236
|
//#endregion
|
|
186
|
-
export { builder, src_default as default, fetchResponseTypeName, generateClient, generateFetchHeader, generateRequestFunction };
|
|
237
|
+
export { builder, src_default as default, fetchResponseTypeName, generateClient, generateFetchHeader, generateRequestFunction, getFetchDependencies };
|
|
187
238
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["headersToAdd: string[]","generateClient: ClientBuilder","generateFetchHeader: ClientHeaderBuilder","fetchClientBuilder: ClientGeneratorsBuilder"],"sources":["../src/index.ts"],"sourcesContent":["import {\n camel,\n type ClientBuilder,\n type ClientGeneratorsBuilder,\n type ClientHeaderBuilder,\n generateBodyOptions,\n generateFormDataAndUrlEncodedFunction,\n generateVerbImports,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n GetterPropType,\n isObject,\n pascal,\n resolveRef,\n stringify,\n toObjectString,\n} from '@orval/core';\nimport type {\n ParameterObject,\n PathItemObject,\n ReferenceObject,\n} from 'openapi3-ts/oas30';\nimport type { SchemaObject } from 'openapi3-ts/oas31';\n\nexport const generateRequestFunction = (\n {\n queryParams,\n headers,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n fetchReviver,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route, context, pathRoute }: GeneratorOptions,\n) => {\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\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\n const spec = context.specs[context.specKey].paths[pathRoute] as\n | PathItemObject\n | undefined;\n const parameters =\n spec?.[verb]?.parameters ?? ([] as (ParameterObject | ReferenceObject)[]);\n\n const explodeParameters = parameters.filter((parameter) => {\n const { schema } = resolveRef<ParameterObject>(parameter, context);\n const schemaObject = schema.schema as SchemaObject;\n\n return (\n schema.in === 'query' && schemaObject.type === 'array' && schema.explode\n );\n });\n\n const explodeParametersNames = explodeParameters.map((parameter) => {\n const { schema } = resolveRef<ParameterObject>(parameter, context);\n\n return schema.name;\n });\n const hasDateParams =\n context.output.override.useDates &&\n parameters.some(\n (p) =>\n 'schema' in p &&\n p.schema &&\n 'format' in p.schema &&\n p.schema.format === 'date-time',\n );\n\n const explodeArrayImplementation =\n explodeParameters.length > 0\n ? `const explodeParameters = ${JSON.stringify(explodeParametersNames)};\n\n if (Array.isArray(value) && explodeParameters.includes(key)) {\n value.forEach((v) => {\n normalizedParams.append(key, v === null ? 'null' : ${hasDateParams ? 'v instanceof Date ? v.toISOString() : ' : ''}v.toString());\n });\n return;\n }\n `\n : '';\n\n const isExplodeParametersOnly =\n explodeParameters.length === parameters.length;\n\n const nomalParamsImplementation = `if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : ${hasDateParams ? 'value instanceof Date ? value.toISOString() : ' : ''}value.toString())\n }`;\n\n const getUrlFnImplementation = `export const ${getUrlFnName} = (${getUrlFnProps}) => {\n${\n queryParams\n ? ` const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n ${explodeArrayImplementation}\n ${isExplodeParametersOnly ? '' : nomalParamsImplementation}\n });`\n : ''\n}\n\n ${queryParams ? `const stringifiedParams = normalizedParams.toString();` : ``}\n\n ${\n queryParams\n ? `return stringifiedParams.length > 0 ? \\`${route}?\\${stringifiedParams}\\` : \\`${route}\\``\n : `return \\`${route}\\``\n }\n}\\n`;\n\n const isContentTypeNdJson = (contentType: string) =>\n contentType === 'application/nd-json' ||\n contentType === 'application/x-ndjson';\n\n const isNdJson = response.contentTypes.some((contentType) =>\n isContentTypeNdJson(contentType),\n );\n const responseTypeName = fetchResponseTypeName(\n override.fetch.includeHttpResponseReturnType,\n isNdJson ? 'Response' : response.definition.success,\n operationName,\n );\n\n const allResponses = [...response.types.success, ...response.types.errors];\n if (allResponses.length === 0) {\n allResponses.push({\n contentType: '',\n hasReadonlyProps: false,\n imports: [],\n isEnum: false,\n isRef: false,\n key: 'default',\n schemas: [],\n type: 'unknown',\n value: 'unknown',\n });\n }\n const nonDefaultStatuses = allResponses\n .filter((r) => r.key !== 'default')\n .map((r) => r.key);\n const responseDataTypes = allResponses\n .map((r) =>\n allResponses.filter((r2) => r2.key === r.key).length > 1\n ? { ...r, suffix: pascal(r.contentType) }\n : r,\n )\n .map((r) => {\n const name = `${responseTypeName}${pascal(r.key)}${'suffix' in r ? r.suffix : ''}`;\n return {\n name,\n success: response.types.success.some((s) => s.key === r.key),\n value: `export type ${name} = {\n ${isContentTypeNdJson(r.contentType) ? `stream: TypedResponse<${r.value}>` : `data: ${r.value || 'unknown'}`}\n status: ${\n r.key === 'default'\n ? nonDefaultStatuses.length > 0\n ? `Exclude<HTTPStatusCodes, ${nonDefaultStatuses.join(' | ')}>`\n : 'number'\n : r.key\n }\n}`,\n };\n });\n\n const successName = `${responseTypeName}Success`;\n const errorName = `${responseTypeName}Error`;\n const hasSuccess = responseDataTypes.some((r) => r.success);\n const hasError = responseDataTypes.some((r) => !r.success);\n\n const responseTypeImplementation = override.fetch\n .includeHttpResponseReturnType\n ? `${responseDataTypes.map((r) => r.value).join('\\n\\n')}\n \n${\n hasSuccess\n ? `export type ${successName} = (${responseDataTypes\n .filter((r) => r.success)\n .map((r) => r.name)\n .join(' | ')}) & {\n headers: Headers;\n}`\n : ''\n};\n${\n hasError\n ? `export type ${errorName} = (${responseDataTypes\n .filter((r) => !r.success)\n .map((r) => r.name)\n .join(' | ')}) & {\n headers: Headers;\n}`\n : ''\n};\n\n${override.fetch.forceSuccessResponse && hasSuccess ? '' : `export type ${responseTypeName} = (${hasError && hasSuccess ? `${successName} | ${errorName}` : hasSuccess ? successName : errorName})\\n\\n`}`\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 return param.type === GetterPropType.NAMED_PATH_PARAMS\n ? param.destructured\n : param.name;\n })\n .join(',');\n\n const args = `${toObjectString(props, 'implementation')} ${isRequestOptions ? `options?: RequestInit` : ''}`;\n const returnType =\n override.fetch.forceSuccessResponse && hasSuccess\n ? `Promise<${successName}>`\n : `Promise<${responseTypeName}>`;\n\n const fetchMethodOption = `method: '${verb.toUpperCase()}'`;\n const ignoreContentTypes = ['multipart/form-data'];\n const headersToAdd: string[] = [\n ...(body.contentType && !ignoreContentTypes.includes(body.contentType)\n ? [`'Content-Type': '${body.contentType}'`]\n : []),\n ...(isNdJson && response.contentTypes.length === 1\n ? [\n `Accept: ${\n response.contentTypes[0] === 'application/x-ndjson'\n ? \"'application/x-ndjson'\"\n : \"'application/nd-json'\"\n }`,\n ]\n : []),\n ...(headers ? ['...headers'] : []),\n ];\n\n let globalFetchOptions;\n if (isObject(override.requestOptions)) {\n // If both requestOptions and fetchHeadersOptions will be adding a header, we must merge them to avoid multiple properties with the same name\n const shouldMergeFetchOptionHeaders =\n headersToAdd.length > 0 && 'headers' in override.requestOptions;\n const globalFetchOptionsObject = { ...override.requestOptions };\n if (shouldMergeFetchOptionHeaders && override.requestOptions.headers) {\n // Remove the headers from the object going into globalFetchOptions\n delete globalFetchOptionsObject.headers;\n // Add it to the dedicated headers object\n const stringifiedHeaders = stringify(override.requestOptions.headers);\n if (stringifiedHeaders) {\n headersToAdd.unshift('...' + stringifiedHeaders);\n }\n }\n globalFetchOptions = stringify(globalFetchOptionsObject)\n ?.slice(1, -1)\n .trim();\n } else {\n globalFetchOptions = '';\n }\n const fetchHeadersOption =\n headersToAdd.length > 0\n ? `headers: { ${headersToAdd.join(',')}, ...options?.headers }`\n : '';\n const requestBodyParams = generateBodyOptions(\n body,\n isFormData,\n isFormUrlEncoded,\n );\n const fetchBodyOption = requestBodyParams\n ? (isFormData && body.formData) ||\n (isFormUrlEncoded && body.formUrlEncoded) ||\n body.contentType === 'text/plain'\n ? `body: ${requestBodyParams}`\n : `body: JSON.stringify(${requestBodyParams})`\n : '';\n const fetchFnOptions = `${getUrlFnName}(${getUrlFnProperties}),\n {${globalFetchOptions ? '\\n' : ''} ${globalFetchOptions}\n ${isRequestOptions ? '...options,' : ''}\n ${fetchMethodOption}${fetchHeadersOption ? ',' : ''}\n ${fetchHeadersOption}${fetchBodyOption ? ',' : ''}\n ${fetchBodyOption}\n }\n`;\n const reviver = fetchReviver ? `, ${fetchReviver.name}` : '';\n const throwOnErrorImplementation = `if (!${isNdJson ? 'stream' : 'res'}.ok) {\n ${isNdJson ? 'const body = [204, 205, 304].includes(stream.status) ? null : await stream.text();' : ''}\n const err: globalThis.Error & {info?: ${hasError ? `${errorName}${override.fetch.includeHttpResponseReturnType ? \"['data']\" : ''}` : 'any'}, status?: number} = new globalThis.Error();\n const data ${hasError ? `: ${errorName}${override.fetch.includeHttpResponseReturnType ? `['data']` : ''}` : ''} = body ? JSON.parse(body${reviver}) : {}\n err.info = data;\n err.status = ${isNdJson ? 'stream' : 'res'}.status;\n throw err;\n }`;\n const fetchResponseImplementation = isNdJson\n ? ` const stream = await fetch(${fetchFnOptions});\n ${override.fetch.forceSuccessResponse ? throwOnErrorImplementation : ''}\n ${override.fetch.includeHttpResponseReturnType ? `return { status: stream.status, stream, headers: stream.headers } as ${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}` : `return stream`}\n `\n : `const res = await fetch(${fetchFnOptions})\n\n const body = [204, 205, 304].includes(res.status) ? null : await res.text();\n ${override.fetch.forceSuccessResponse ? throwOnErrorImplementation : ''}\n const data: ${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}${override.fetch.includeHttpResponseReturnType ? `['data']` : ''} = body ? JSON.parse(body${reviver}) : {}\n ${override.fetch.includeHttpResponseReturnType ? `return { data, status: res.status, headers: res.headers } as ${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}` : 'return data'}\n`;\n const customFetchResponseImplementation = `return ${mutator?.name}<${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}>(${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 : fetchResponseImplementation;\n\n const fetchImplementation = `export const ${operationName} = async (${args}): ${returnType} => {\n ${bodyForm ? ` ${bodyForm}` : ''}\n ${fetchImplementationBody}}\n`;\n\n const implementation =\n responseTypeImplementation +\n `${getUrlFnImplementation}\\n` +\n `${fetchImplementation}\\n`;\n\n return implementation;\n};\n\nexport const fetchResponseTypeName = (\n includeHttpResponseReturnType: boolean | undefined,\n definitionSuccessResponse: string,\n operationName: string,\n) => {\n return includeHttpResponseReturnType\n ? `${operationName}Response`\n : definitionSuccessResponse;\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 getHTTPStatusCodes = () => `\nexport type HTTPStatusCode1xx = 100 | 101 | 102 | 103;\nexport type HTTPStatusCode2xx = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207;\nexport type HTTPStatusCode3xx = 300 | 301 | 302 | 303 | 304 | 305 | 307 | 308;\nexport type HTTPStatusCode4xx = 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 426 | 428 | 429 | 431 | 451;\nexport type HTTPStatusCode5xx = 500 | 501 | 502 | 503 | 504 | 505 | 507 | 511;\nexport type HTTPStatusCodes = HTTPStatusCode1xx | HTTPStatusCode2xx | HTTPStatusCode3xx | HTTPStatusCode4xx | HTTPStatusCode5xx;\n\n`;\n\nexport const generateFetchHeader: ClientHeaderBuilder = ({\n clientImplementation,\n}) => {\n return clientImplementation.includes('<HTTPStatusCodes,')\n ? getHTTPStatusCodes()\n : '';\n};\n\nconst fetchClientBuilder: ClientGeneratorsBuilder = {\n client: generateClient,\n header: generateFetchHeader,\n dependencies: () => [],\n};\n\nexport const builder = () => () => fetchClientBuilder;\n\nexport default builder;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["FETCH_DEPENDENCIES: GeneratorDependency[]","headersToAdd: string[]","generateClient: ClientBuilder","generateFetchHeader: ClientHeaderBuilder","fetchClientBuilder: ClientGeneratorsBuilder"],"sources":["../src/index.ts"],"sourcesContent":["import {\n camel,\n type ClientBuilder,\n type ClientGeneratorsBuilder,\n type ClientHeaderBuilder,\n generateBodyOptions,\n generateFormDataAndUrlEncodedFunction,\n generateVerbImports,\n type GeneratorDependency,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n GetterPropType,\n isObject,\n type OpenApiParameterObject,\n type OpenApiSchemaObject,\n pascal,\n resolveRef,\n stringify,\n toObjectString,\n} from '@orval/core';\nimport { isDereferenced } from '@scalar/openapi-types/helpers';\n\nconst WILDCARD_STATUS_CODE_REGEX = /^[1-5]XX$/i;\n\nconst getStatusCodeType = (key: string): string => {\n if (WILDCARD_STATUS_CODE_REGEX.test(key)) {\n const prefix = key[0];\n return `HTTPStatusCode${prefix}xx`;\n }\n return key;\n};\n\nconst FETCH_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'z',\n alias: 'zod',\n values: true,\n },\n ],\n dependency: 'zod',\n },\n];\n\nexport const getFetchDependencies = () => FETCH_DEPENDENCIES;\n\nconst PRIMITIVE_TYPES = new Set([\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n]);\n\nexport const generateRequestFunction = (\n {\n queryParams,\n headers,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n fetchReviver,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route, context, pathRoute }: GeneratorOptions,\n) => {\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\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\n const spec = context.spec.paths?.[pathRoute];\n const parameters = spec?.[verb]?.parameters ?? [];\n\n const explodeParameters = parameters.filter((parameter) => {\n const { schema } = resolveRef<OpenApiParameterObject>(parameter, context);\n const schemaObject = schema.schema as OpenApiSchemaObject;\n\n return (\n schema.in === 'query' && schemaObject.type === 'array' && schema.explode\n );\n });\n\n const explodeParametersNames = explodeParameters.map((parameter) => {\n const { schema } = resolveRef<OpenApiParameterObject>(parameter, context);\n\n return schema.name;\n });\n const hasExplodedDateParams =\n context.output.override.useDates &&\n explodeParameters.some(\n (p) => isDereferenced(p) && p.schema?.format === 'date-time',\n );\n\n const explodeArrayImplementation =\n explodeParameters.length > 0\n ? `const explodeParameters = ${JSON.stringify(explodeParametersNames)};\n\n if (Array.isArray(value) && explodeParameters.includes(key)) {\n value.forEach((v) => {\n normalizedParams.append(key, v === null ? 'null' : ${hasExplodedDateParams ? 'v instanceof Date ? v.toISOString() : ' : ''}v.toString());\n });\n return;\n }\n `\n : '';\n\n const isExplodeParametersOnly =\n explodeParameters.length === parameters.length;\n\n const hasDateParams =\n context.output.override.useDates &&\n parameters.some(\n (p) => isDereferenced(p) && p.schema?.format === 'date-time',\n );\n\n const normalParamsImplementation = `if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : ${hasDateParams ? 'value instanceof Date ? value.toISOString() : ' : ''}value.toString())\n }`;\n\n const getUrlFnImplementation = `export const ${getUrlFnName} = (${getUrlFnProps}) => {\n${\n queryParams\n ? ` const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n ${explodeArrayImplementation}\n ${isExplodeParametersOnly ? '' : normalParamsImplementation}\n });`\n : ''\n}\n\n ${queryParams ? `const stringifiedParams = normalizedParams.toString();` : ``}\n\n ${\n queryParams\n ? `return stringifiedParams.length > 0 ? \\`${route}?\\${stringifiedParams}\\` : \\`${route}\\``\n : `return \\`${route}\\``\n }\n}\\n`;\n\n const isContentTypeNdJson = (contentType: string) =>\n contentType === 'application/nd-json' ||\n contentType === 'application/x-ndjson';\n\n const isNdJson = response.contentTypes.some((contentType) =>\n isContentTypeNdJson(contentType),\n );\n const responseTypeName = fetchResponseTypeName(\n override.fetch.includeHttpResponseReturnType,\n isNdJson ? 'Response' : response.definition.success,\n operationName,\n );\n\n const responseType = response.definition.success;\n const isPrimitiveType = PRIMITIVE_TYPES.has(responseType);\n const hasSchema = response.imports.some((imp) => imp.name === responseType);\n\n const isValidateResponse =\n override.fetch.runtimeValidation &&\n !isPrimitiveType &&\n hasSchema &&\n !isNdJson;\n\n const allResponses = [...response.types.success, ...response.types.errors];\n if (allResponses.length === 0) {\n allResponses.push({\n contentType: '',\n hasReadonlyProps: false,\n imports: [],\n isEnum: false,\n isRef: false,\n key: 'default',\n schemas: [],\n type: 'unknown',\n value: 'unknown',\n dependencies: [],\n });\n }\n const nonDefaultStatuses = allResponses\n .filter((r) => r.key !== 'default')\n .map((r) => getStatusCodeType(r.key));\n const responseDataTypes = allResponses\n .map((r) =>\n allResponses.filter((r2) => r2.key === r.key).length > 1\n ? { ...r, suffix: pascal(r.contentType) }\n : r,\n )\n .map((r) => {\n const name = `${responseTypeName}${pascal(r.key)}${'suffix' in r ? r.suffix : ''}`;\n\n const hasValidZodSchema = r.value && !PRIMITIVE_TYPES.has(r.value);\n const dataType =\n override.fetch.useZodSchemaResponse && hasValidZodSchema\n ? `zod.infer<typeof ${r.value}>`\n : r.value || 'unknown';\n\n return {\n name,\n success: response.types.success.some((s) => s.key === r.key),\n value: `export type ${name} = {\n ${isContentTypeNdJson(r.contentType) ? `stream: TypedResponse<${dataType}>` : `data: ${dataType}`}\n status: ${\n r.key === 'default'\n ? nonDefaultStatuses.length > 0\n ? `Exclude<HTTPStatusCodes, ${nonDefaultStatuses.join(' | ')}>`\n : 'number'\n : getStatusCodeType(r.key)\n }\n}`,\n };\n });\n\n const successName = `${responseTypeName}Success`;\n const errorName = `${responseTypeName}Error`;\n const hasSuccess = responseDataTypes.some((r) => r.success);\n const hasError = responseDataTypes.some((r) => !r.success);\n\n const responseTypeImplementation = override.fetch\n .includeHttpResponseReturnType\n ? `${responseDataTypes.map((r) => r.value).join('\\n\\n')}\n \n${\n hasSuccess\n ? `export type ${successName} = (${responseDataTypes\n .filter((r) => r.success)\n .map((r) => r.name)\n .join(' | ')}) & {\n headers: Headers;\n}`\n : ''\n};\n${\n hasError\n ? `export type ${errorName} = (${responseDataTypes\n .filter((r) => !r.success)\n .map((r) => r.name)\n .join(' | ')}) & {\n headers: Headers;\n}`\n : ''\n};\n\n${override.fetch.forceSuccessResponse && hasSuccess ? '' : `export type ${responseTypeName} = (${hasError && hasSuccess ? `${successName} | ${errorName}` : hasSuccess ? successName : errorName})\\n\\n`}`\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 return param.type === GetterPropType.NAMED_PATH_PARAMS\n ? param.destructured\n : param.name;\n })\n .join(',');\n\n const args = `${toObjectString(props, 'implementation')} ${isRequestOptions ? `options?: RequestInit` : ''}`;\n const returnType =\n override.fetch.forceSuccessResponse && hasSuccess\n ? `Promise<${successName}>`\n : `Promise<${responseTypeName}>`;\n\n const fetchMethodOption = `method: '${verb.toUpperCase()}'`;\n const ignoreContentTypes = ['multipart/form-data'];\n const overrideHeaders =\n isObject(override.requestOptions) && override.requestOptions.headers\n ? Object.entries(override.requestOptions.headers).map(\n ([key, value]) => `'${key}': \\`${value}\\``,\n )\n : [];\n\n const headersToAdd: string[] = [\n ...(body.contentType && !ignoreContentTypes.includes(body.contentType)\n ? [`'Content-Type': '${body.contentType}'`]\n : []),\n ...(isNdJson && response.contentTypes.length === 1\n ? [\n `Accept: ${\n response.contentTypes[0] === 'application/x-ndjson'\n ? \"'application/x-ndjson'\"\n : \"'application/nd-json'\"\n }`,\n ]\n : []),\n ...overrideHeaders,\n ...(headers ? ['...headers'] : []),\n ];\n\n let globalFetchOptions;\n if (isObject(override.requestOptions)) {\n // If both requestOptions and fetchHeadersOptions will be adding a header, we must merge them to avoid multiple properties with the same name\n const shouldMergeFetchOptionHeaders =\n headersToAdd.length > 0 && 'headers' in override.requestOptions;\n const globalFetchOptionsObject = { ...override.requestOptions };\n if (shouldMergeFetchOptionHeaders && override.requestOptions.headers) {\n // Remove the headers from the object going into globalFetchOptions\n delete globalFetchOptionsObject.headers;\n // Add it to the dedicated headers object\n }\n globalFetchOptions = stringify(globalFetchOptionsObject)\n ?.slice(1, -1)\n .trim();\n } else {\n globalFetchOptions = '';\n }\n const fetchHeadersOption =\n headersToAdd.length > 0\n ? `headers: { ${headersToAdd.join(',')}, ...options?.headers }`\n : '';\n const requestBodyParams = generateBodyOptions(\n body,\n isFormData,\n isFormUrlEncoded,\n );\n const fetchBodyOption = requestBodyParams\n ? (isFormData && body.formData) ||\n (isFormUrlEncoded && body.formUrlEncoded) ||\n body.contentType === 'text/plain'\n ? `body: ${requestBodyParams}`\n : `body: JSON.stringify(${requestBodyParams})`\n : '';\n const fetchFnOptions = `${getUrlFnName}(${getUrlFnProperties}),\n {${globalFetchOptions ? '\\n' : ''} ${globalFetchOptions}\n ${isRequestOptions ? '...options,' : ''}\n ${fetchMethodOption}${fetchHeadersOption ? ',' : ''}\n ${fetchHeadersOption}${fetchBodyOption ? ',' : ''}\n ${fetchBodyOption}\n }\n`;\n const reviver = fetchReviver ? `, ${fetchReviver.name}` : '';\n const throwOnErrorImplementation = `if (!${isNdJson ? 'stream' : 'res'}.ok) {\n ${isNdJson ? 'const body = [204, 205, 304].includes(stream.status) ? null : await stream.text();' : ''}\n const err: globalThis.Error & {info?: ${hasError ? `${errorName}${override.fetch.includeHttpResponseReturnType ? \"['data']\" : ''}` : 'any'}, status?: number} = new globalThis.Error();\n const data ${hasError ? `: ${errorName}${override.fetch.includeHttpResponseReturnType ? `['data']` : ''}` : ''} = body ? JSON.parse(body${reviver}) : {}\n err.info = data;\n err.status = ${isNdJson ? 'stream' : 'res'}.status;\n throw err;\n }`;\n const fetchResponseImplementation = isNdJson\n ? ` const stream = await fetch(${fetchFnOptions});\n ${override.fetch.forceSuccessResponse ? throwOnErrorImplementation : ''}\n ${override.fetch.includeHttpResponseReturnType ? `return { status: stream.status, stream, headers: stream.headers } as ${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}` : `return stream`}\n `\n : `const res = await fetch(${fetchFnOptions})\n\n const body = [204, 205, 304].includes(res.status) ? null : await res.text();\n ${override.fetch.forceSuccessResponse ? throwOnErrorImplementation : ''}\n ${\n isValidateResponse\n ? `const parsedBody = body ? JSON.parse(body${reviver}) : {}\n const data = ${responseType}.parse(parsedBody)`\n : `const data: ${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}${override.fetch.includeHttpResponseReturnType ? `['data']` : ''} = body ? JSON.parse(body${reviver}) : {}`\n }\n ${override.fetch.includeHttpResponseReturnType ? `return { data, status: res.status, headers: res.headers } as ${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}` : 'return data'}\n`;\n const customFetchResponseImplementation = `return ${mutator?.name}<${override.fetch.forceSuccessResponse && hasSuccess ? successName : responseTypeName}>(${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 : fetchResponseImplementation;\n\n const fetchImplementation = `export const ${operationName} = async (${args}): ${returnType} => {\n ${bodyForm ? ` ${bodyForm}` : ''}\n ${fetchImplementationBody}}\n`;\n\n const implementation =\n responseTypeImplementation +\n `${getUrlFnImplementation}\\n` +\n `${fetchImplementation}\\n`;\n\n return implementation;\n};\n\nexport const fetchResponseTypeName = (\n includeHttpResponseReturnType: boolean | undefined,\n definitionSuccessResponse: string,\n operationName: string,\n) => {\n return includeHttpResponseReturnType\n ? `${operationName}Response`\n : definitionSuccessResponse;\n};\n\nexport const generateClient: ClientBuilder = (\n verbOptions,\n options,\n outputClient,\n output,\n) => {\n const imports = generateVerbImports(verbOptions);\n const functionImplementation = generateRequestFunction(verbOptions, options);\n\n const isZodSchemaImportsRequired =\n verbOptions.override.fetch.useZodSchemaResponse ||\n verbOptions.override.fetch.runtimeValidation;\n\n const responseImports = isZodSchemaImportsRequired\n ? [\n ...verbOptions.response.types.success,\n ...verbOptions.response.types.errors,\n ].flatMap((response) =>\n response.imports.map((imp) => ({\n name: imp.name,\n schemaName: imp.name,\n isZodSchema: true,\n values: true,\n })),\n )\n : [];\n\n const requestImports = isZodSchemaImportsRequired\n ? [\n ...verbOptions.body.imports,\n ...(verbOptions.queryParams\n ? [{ name: `${pascal(verbOptions.operationName)}QueryParams` }]\n : []),\n ...(verbOptions.headers\n ? [{ name: `${pascal(verbOptions.operationName)}Header` }]\n : []),\n ].map((imp) => ({\n name: imp.name,\n schemaName: imp.name,\n isZodSchema: true,\n values: true,\n }))\n : [];\n\n const zodSchemaImports = [...responseImports, ...requestImports];\n\n const zodSchemaNames = new Set(zodSchemaImports.map((imp) => imp.name));\n const filteredImports = imports.filter(\n (imp) => !zodSchemaNames.has(imp.name),\n );\n\n return {\n implementation: `${functionImplementation}\\n`,\n imports: [...filteredImports, ...zodSchemaImports],\n };\n};\n\nconst getHTTPStatusCodes = () => `\nexport type HTTPStatusCode1xx = 100 | 101 | 102 | 103;\nexport type HTTPStatusCode2xx = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207;\nexport type HTTPStatusCode3xx = 300 | 301 | 302 | 303 | 304 | 305 | 307 | 308;\nexport type HTTPStatusCode4xx = 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 426 | 428 | 429 | 431 | 451;\nexport type HTTPStatusCode5xx = 500 | 501 | 502 | 503 | 504 | 505 | 507 | 511;\nexport type HTTPStatusCodes = HTTPStatusCode1xx | HTTPStatusCode2xx | HTTPStatusCode3xx | HTTPStatusCode4xx | HTTPStatusCode5xx;\n\n`;\n\nexport const generateFetchHeader: ClientHeaderBuilder = ({\n clientImplementation,\n}) => {\n const needsStatusCodeTypes = /HTTPStatusCode[1-5]xx|<HTTPStatusCodes,/.test(\n clientImplementation,\n );\n return needsStatusCodeTypes ? getHTTPStatusCodes() : '';\n};\n\nconst fetchClientBuilder: ClientGeneratorsBuilder = {\n client: generateClient,\n header: generateFetchHeader,\n dependencies: getFetchDependencies,\n};\n\nexport const builder = () => () => fetchClientBuilder;\n\nexport default builder;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/fetch",
|
|
3
|
-
"version": "8.0.0-rc.
|
|
3
|
+
"version": "8.0.0-rc.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"nuke": "rimraf .turbo dist node_modules"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@orval/core": "8.0.0-rc.
|
|
26
|
-
"
|
|
25
|
+
"@orval/core": "8.0.0-rc.4",
|
|
26
|
+
"@scalar/openapi-types": "0.5.2"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"eslint": "9.39.1",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"tsdown": "0.16.4",
|
|
32
32
|
"typescript": "5.9.3"
|
|
33
33
|
},
|
|
34
|
-
"stableVersion": "8.0.0-rc.
|
|
34
|
+
"stableVersion": "8.0.0-rc.4"
|
|
35
35
|
}
|