@orval/fetch 7.7.0 → 7.8.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/dist/index.js CHANGED
@@ -96,6 +96,19 @@ ${queryParams ? ` const normalizedParams = new URLSearchParams();
96
96
  operationName
97
97
  );
98
98
  const allResponses = [...response.types.success, ...response.types.errors];
99
+ if (allResponses.length === 0) {
100
+ allResponses.push({
101
+ contentType: "",
102
+ hasReadonlyProps: false,
103
+ imports: [],
104
+ isEnum: false,
105
+ isRef: false,
106
+ key: "default",
107
+ schemas: [],
108
+ type: "unknown",
109
+ value: "unknown"
110
+ });
111
+ }
99
112
  const nonDefaultStatuses = allResponses.filter((r) => r.key !== "default").map((r) => r.key);
100
113
  const responseDataTypes = allResponses.map(
101
114
  (r) => `export type ${responseTypeName}${(0, import_core.pascal)(r.key)} = {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { ClientHeaderBuilder, pascal } from '@orval/core';\nimport {\n camel,\n ClientBuilder,\n ClientGeneratorsBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateVerbImports,\n GeneratorOptions,\n GeneratorVerbOptions,\n GetterPropType,\n stringify,\n toObjectString,\n generateBodyOptions,\n isObject,\n resolveRef,\n} from '@orval/core';\nimport {\n PathItemObject,\n ParameterObject,\n ReferenceObject,\n} from 'openapi3-ts/oas30';\n\nexport const generateRequestFunction = (\n {\n queryParams,\n headers,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\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 !== 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\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\n return schema.in === 'query' && schema.explode;\n });\n\n const explodeParametersNames = explodeParameters.map((parameter) => {\n const { schema } = resolveRef<ParameterObject>(parameter, context);\n\n return schema.name;\n });\n\n const explodeArrayImplementation =\n explodeParameters.length > 0\n ? `const explodeParameters = ${JSON.stringify(explodeParametersNames)};\n\n if (value instanceof Array && explodeParameters.includes(key)) {\n value.forEach((v) => normalizedParams.append(key, v === null ? 'null' : v.toString()));\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' : 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(isContentTypeNdJson);\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 const nonDefaultStatuses = allResponses\n .filter((r) => r.key !== 'default')\n .map((r) => r.key);\n const responseDataTypes = allResponses\n .map(\n (r) => `export type ${responseTypeName}${pascal(r.key)} = {\n ${isContentTypeNdJson(r.contentType) ? 'stream: Response' : `data: ${r.value || 'unknown'}`}\n status: ${\n r.key === 'default'\n ? nonDefaultStatuses.length\n ? `Exclude<HTTPStatusCodes, ${nonDefaultStatuses.join(' | ')}>`\n : 'number'\n : r.key\n }\n}`,\n )\n .join('\\n\\n');\n\n const compositeName = `${responseTypeName}Composite`;\n const compositeResponse = `${compositeName} = ${allResponses.map((r) => `${responseTypeName}${pascal(r.key)}`).join(' | ')}`;\n\n const responseTypeImplementation = override.fetch\n .includeHttpResponseReturnType\n ? `${responseDataTypes}\n \nexport type ${compositeResponse};\n \nexport type ${responseTypeName} = ${compositeName} & {\n headers: Headers;\n}\\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 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 returnType = `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 const ignoreContentTypes = ['multipart/form-data'];\n const fetchHeadersOption =\n body.contentType && !ignoreContentTypes.includes(body.contentType)\n ? `headers: { 'Content-Type': '${body.contentType}',${headers ? '...headers,' : ''} ...options?.headers }`\n : headers\n ? 'headers: {...headers, ...options?.headers}'\n : '';\n const requestBodyParams = generateBodyOptions(\n body,\n isFormData,\n isFormUrlEncoded,\n );\n const fetchBodyOption = requestBodyParams\n ? (isFormData && body.formData) || (isFormUrlEncoded && body.formUrlEncoded)\n ? `body: ${requestBodyParams}`\n : `body: JSON.stringify(${requestBodyParams})`\n : '';\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 fetchResponseImplementation = isNdJson\n ? `const stream = await fetch(${fetchFnOptions})\n\n ${override.fetch.includeHttpResponseReturnType ? 'return { status: stream.status, stream, headers: stream.headers }' : `return stream`}\n `\n : `const res = await fetch(${fetchFnOptions})\n\n const body = [204, 205, 304].includes(res.status) ? null : await res.text()\n const data: ${responseTypeName}${override.fetch.includeHttpResponseReturnType ? `['data']` : ''} = body ? JSON.parse(body) : {}\n\n ${override.fetch.includeHttpResponseReturnType ? `return { data, status: res.status, headers: res.headers } as ${responseTypeName}` : 'return data'}\n`;\n const customFetchResponseImplementation = `return ${mutator?.name}<${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,\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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","names":["import_core"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { ClientHeaderBuilder, pascal } from '@orval/core';\nimport {\n camel,\n ClientBuilder,\n ClientGeneratorsBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateVerbImports,\n GeneratorOptions,\n GeneratorVerbOptions,\n GetterPropType,\n stringify,\n toObjectString,\n generateBodyOptions,\n isObject,\n resolveRef,\n} from '@orval/core';\nimport {\n PathItemObject,\n ParameterObject,\n ReferenceObject,\n} from 'openapi3-ts/oas30';\n\nexport const generateRequestFunction = (\n {\n queryParams,\n headers,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\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 !== 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\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\n return schema.in === 'query' && schema.explode;\n });\n\n const explodeParametersNames = explodeParameters.map((parameter) => {\n const { schema } = resolveRef<ParameterObject>(parameter, context);\n\n return schema.name;\n });\n\n const explodeArrayImplementation =\n explodeParameters.length > 0\n ? `const explodeParameters = ${JSON.stringify(explodeParametersNames)};\n\n if (value instanceof Array && explodeParameters.includes(key)) {\n value.forEach((v) => normalizedParams.append(key, v === null ? 'null' : v.toString()));\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' : 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(isContentTypeNdJson);\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(\n (r) => `export type ${responseTypeName}${pascal(r.key)} = {\n ${isContentTypeNdJson(r.contentType) ? 'stream: Response' : `data: ${r.value || 'unknown'}`}\n status: ${\n r.key === 'default'\n ? nonDefaultStatuses.length\n ? `Exclude<HTTPStatusCodes, ${nonDefaultStatuses.join(' | ')}>`\n : 'number'\n : r.key\n }\n}`,\n )\n .join('\\n\\n');\n\n const compositeName = `${responseTypeName}Composite`;\n const compositeResponse = `${compositeName} = ${allResponses.map((r) => `${responseTypeName}${pascal(r.key)}`).join(' | ')}`;\n\n const responseTypeImplementation = override.fetch\n .includeHttpResponseReturnType\n ? `${responseDataTypes}\n \nexport type ${compositeResponse};\n \nexport type ${responseTypeName} = ${compositeName} & {\n headers: Headers;\n}\\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 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 returnType = `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 const ignoreContentTypes = ['multipart/form-data'];\n const fetchHeadersOption =\n body.contentType && !ignoreContentTypes.includes(body.contentType)\n ? `headers: { 'Content-Type': '${body.contentType}',${headers ? '...headers,' : ''} ...options?.headers }`\n : headers\n ? 'headers: {...headers, ...options?.headers}'\n : '';\n const requestBodyParams = generateBodyOptions(\n body,\n isFormData,\n isFormUrlEncoded,\n );\n const fetchBodyOption = requestBodyParams\n ? (isFormData && body.formData) || (isFormUrlEncoded && body.formUrlEncoded)\n ? `body: ${requestBodyParams}`\n : `body: JSON.stringify(${requestBodyParams})`\n : '';\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 fetchResponseImplementation = isNdJson\n ? `const stream = await fetch(${fetchFnOptions})\n\n ${override.fetch.includeHttpResponseReturnType ? 'return { status: stream.status, stream, headers: stream.headers }' : `return stream`}\n `\n : `const res = await fetch(${fetchFnOptions})\n\n const body = [204, 205, 304].includes(res.status) ? null : await res.text()\n const data: ${responseTypeName}${override.fetch.includeHttpResponseReturnType ? `['data']` : ''} = body ? JSON.parse(body) : {}\n\n ${override.fetch.includeHttpResponseReturnType ? `return { data, status: res.status, headers: res.headers } as ${responseTypeName}` : 'return data'}\n`;\n const customFetchResponseImplementation = `return ${mutator?.name}<${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,\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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","names":["import_core"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orval/fetch",
3
- "version": "7.7.0",
3
+ "version": "7.8.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": "7.7.0"
16
+ "@orval/core": "7.8.0"
17
17
  }
18
18
  }