UNPKG

@openapi-qraft/react

Version:

OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.

1 lines 4.42 kB
{"version":3,"file":"responseUtils.cjs","sources":["../../../src/lib/responseUtils.ts"],"sourcesContent":["import type { RequestFnResponse } from '@openapi-qraft/tanstack-query-react-types';\n\n/**\n * Processes the response from the server.\n * @beta\n */\nexport async function processResponse<TData, TError>(\n response: Response\n): Promise<RequestFnResponse<TData, TError>> {\n if (response.status === 204 || response.headers.get('Content-Length') === '0')\n return (\n response.ok ? { data: null, response } : { error: null, response }\n ) as RequestFnResponse<TData, TError>;\n\n const contentType = response.headers.get('Content-Type')?.toLowerCase();\n\n const isJsonResponse =\n contentType?.includes('/json') || contentType?.includes('+json');\n\n if (isJsonResponse) {\n // clone response before parsing every time to allow multiple reads\n const jsonResponse = response.clone().json();\n return resolveResponse(\n response,\n response.ok ? jsonResponse : Promise.reject(await jsonResponse)\n );\n }\n\n const textResponse = response.clone().text() as Promise<TData>;\n\n return resolveResponse(\n response,\n response.ok ? textResponse : Promise.reject(await textResponse)\n );\n}\n\n/**\n * Resolves the response from the server.\n * @beta\n */\nexport function resolveResponse<TData, TError>(\n error: Error\n): Promise<RequestFnResponse<TData, TError>>;\nexport function resolveResponse<TData, TError>(\n responseToReturn: Response,\n responsePromise: Promise<TData>\n): Promise<RequestFnResponse<TData, TError>>;\nexport function resolveResponse<TData, TError>(\n responseToReturn: Response | Error,\n responsePromise?: Promise<TData>\n): Promise<RequestFnResponse<TData, TError>> {\n if (!responsePromise) {\n if (responseToReturn instanceof Response) {\n return Promise.resolve({\n error: new Error('Unhandled response without promise to resolve'),\n response: responseToReturn,\n data: undefined,\n });\n } else {\n return Promise.resolve({\n error: responseToReturn,\n response: undefined,\n data: undefined,\n });\n }\n }\n\n return responsePromise\n .then(\n (data) =>\n ({ data, response: responseToReturn }) as RequestFnResponse<\n TData,\n TError\n >\n )\n .catch(\n (error) =>\n ({ error, response: responseToReturn }) as RequestFnResponse<\n TData,\n TError\n >\n );\n}\n"],"names":["processResponse","response","status","headers","get","ok","data","error","contentType","toLowerCase","isJsonResponse","includes","jsonResponse","clone","json","resolveResponse","Promise","reject","textResponse","text","responseToReturn","responsePromise","Response","resolve","Error","undefined","then","catch"],"mappings":";;AAEA;;;IAIO,eAAeA,eAAAA,CACpBC,QAAkB,EAAA;AAElB,IAAA,IAAIA,QAASC,CAAAA,MAAM,KAAK,GAAA,IAAOD,SAASE,OAAO,CAACC,GAAG,CAAC,gBAAsB,CAAA,KAAA,GAAA,EACxE,OACEH,QAAAA,CAASI,EAAE,GAAG;QAAEC,IAAM,EAAA,IAAA;AAAML,QAAAA,QAAAA;KAAa,GAAA;QAAEM,KAAO,EAAA,IAAA;AAAMN,QAAAA,QAAAA;AAAS,KAAA,CAAA;AAGrE,IAAA,MAAMO,cAAcP,QAASE,CAAAA,OAAO,CAACC,GAAG,CAAC,cAAiBK,CAAAA,EAAAA,WAAAA,EAAAA,CAAAA;AAE1D,IAAA,MAAMC,cACJF,GAAAA,WAAAA,EAAaG,QAAS,CAAA,OAAA,CAAA,IAAYH,aAAaG,QAAS,CAAA,OAAA,CAAA,CAAA;AAE1D,IAAA,IAAID,cAAgB,EAAA;;AAElB,QAAA,MAAME,YAAeX,GAAAA,QAAAA,CAASY,KAAK,EAAA,CAAGC,IAAI,EAAA,CAAA;QAC1C,OAAOC,eAAAA,CACLd,UACAA,QAASI,CAAAA,EAAE,GAAGO,YAAeI,GAAAA,OAAAA,CAAQC,MAAM,CAAC,MAAML,YAAAA,CAAAA,CAAAA,CAAAA;AAEtD,KAAA;AAEA,IAAA,MAAMM,YAAejB,GAAAA,QAAAA,CAASY,KAAK,EAAA,CAAGM,IAAI,EAAA,CAAA;IAE1C,OAAOJ,eAAAA,CACLd,UACAA,QAASI,CAAAA,EAAE,GAAGa,YAAeF,GAAAA,OAAAA,CAAQC,MAAM,CAAC,MAAMC,YAAAA,CAAAA,CAAAA,CAAAA;AAEtD,CAAA;AAaO,SAASH,eAAAA,CACdK,gBAAkC,EAClCC,eAAgC,EAAA;AAEhC,IAAA,IAAI,CAACA,eAAiB,EAAA;AACpB,QAAA,IAAID,4BAA4BE,QAAU,EAAA;YACxC,OAAON,OAAAA,CAAQO,OAAO,CAAC;AACrBhB,gBAAAA,KAAAA,EAAO,IAAIiB,KAAM,CAAA,+CAAA,CAAA;gBACjBvB,QAAUmB,EAAAA,gBAAAA;gBACVd,IAAMmB,EAAAA,SAAAA;AACR,aAAA,CAAA,CAAA;SACK,MAAA;YACL,OAAOT,OAAAA,CAAQO,OAAO,CAAC;gBACrBhB,KAAOa,EAAAA,gBAAAA;gBACPnB,QAAUwB,EAAAA,SAAAA;gBACVnB,IAAMmB,EAAAA,SAAAA;AACR,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA;AAEA,IAAA,OAAOJ,eACJK,CAAAA,IAAI,CACH,CAACpB,QACE;AAAEA,YAAAA,IAAAA;YAAML,QAAUmB,EAAAA,gBAAAA;AAAiB,SAAA,CAKvCO,CAAAA,CAAAA,KAAK,CACJ,CAACpB,SACE;AAAEA,YAAAA,KAAAA;YAAON,QAAUmB,EAAAA,gBAAAA;SAAiB,CAAA,CAAA,CAAA;AAK7C;;;;;"}