@openapi-qraft/react 2.0.0-next.11 → 2.0.0-next.13

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/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @openapi-qraft/react
2
2
 
3
+ ## 2.0.0-next.13
4
+
5
+ ### Patch Changes
6
+
7
+ - @openapi-qraft/tanstack-query-react-types@2.0.0-next.13
8
+
9
+ ## 2.0.0-next.12
10
+
11
+ ### Minor Changes
12
+
13
+ - a50253a: Responses with the `text/plain` content type are now always processed as plain text, without attempting to fallback to `JSON.parse`.
14
+
15
+ ### Patch Changes
16
+
17
+ - @openapi-qraft/tanstack-query-react-types@2.0.0-next.12
18
+
3
19
  ## 2.0.0-next.11
4
20
 
5
21
  ### Patch Changes
@@ -11,14 +11,15 @@
11
11
  error: {},
12
12
  response
13
13
  };
14
- if (isJsonResponse(response)) {
14
+ const contentType = response.headers.get('Content-Type')?.toLowerCase();
15
+ const isJsonResponse = contentType?.includes('/json') || contentType?.includes('+json');
16
+ if (isJsonResponse) {
15
17
  // clone response before parsing every time to allow multiple reads
16
18
  const jsonResponse = response.clone().json();
17
19
  return resolveResponse(response, response.ok ? jsonResponse : Promise.reject(await jsonResponse));
18
20
  }
19
- const jsonResponse = new Promise((resolve, reject)=>// attempt to parse JSON for successful responses, otherwise fail
20
- response.clone().text().then(JSON.parse).then(resolve, reject));
21
- return resolveResponse(response, response.ok ? jsonResponse : Promise.reject(await jsonResponse));
21
+ const textResponse = response.clone().text();
22
+ return resolveResponse(response, response.ok ? textResponse : Promise.reject(await textResponse));
22
23
  }
23
24
  function resolveResponse(responseToReturn, responsePromise) {
24
25
  if (!responsePromise) return Promise.reject({
@@ -34,10 +35,6 @@ function resolveResponse(responseToReturn, responsePromise) {
34
35
  response: responseToReturn
35
36
  }));
36
37
  }
37
- function isJsonResponse(response) {
38
- const contentType = response.headers.get('Content-Type')?.toLowerCase();
39
- return contentType?.includes('/json') || contentType?.includes('+json');
40
- }
41
38
 
42
39
  exports.processResponse = processResponse;
43
40
  exports.resolveResponse = resolveResponse;
@@ -1 +1 @@
1
- {"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: {}, response } : { error: {}, response }\n ) as RequestFnResponse<TData, TError>;\n\n if (isJsonResponse(response)) {\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 jsonResponse = new Promise<TData>((resolve, reject) =>\n // attempt to parse JSON for successful responses, otherwise fail\n response.clone().text().then(JSON.parse).then(resolve, reject)\n );\n\n return resolveResponse(\n response,\n response.ok ? jsonResponse : Promise.reject(await jsonResponse)\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 return Promise.reject({\n error: responseToReturn,\n response: undefined,\n data: undefined,\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\nfunction isJsonResponse(response: Response) {\n const contentType = response.headers.get('Content-Type')?.toLowerCase();\n return contentType?.includes('/json') || contentType?.includes('+json');\n}\n"],"names":["processResponse","response","status","headers","get","ok","data","error","isJsonResponse","jsonResponse","clone","json","resolveResponse","Promise","reject","resolve","text","then","JSON","parse","responseToReturn","responsePromise","undefined","catch","contentType","toLowerCase","includes"],"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;AAAEC,QAAAA,IAAAA,EAAM,EAAC;AAAGL,QAAAA,QAAAA;KAAa,GAAA;AAAEM,QAAAA,KAAAA,EAAO,EAAC;AAAGN,QAAAA,QAAAA;AAAS,KAAA,CAAA;AAGjE,IAAA,IAAIO,eAAeP,QAAW,CAAA,EAAA;;AAE5B,QAAA,MAAMQ,YAAeR,GAAAA,QAAAA,CAASS,KAAK,EAAA,CAAGC,IAAI,EAAA,CAAA;QAC1C,OAAOC,eAAAA,CACLX,UACAA,QAASI,CAAAA,EAAE,GAAGI,YAAeI,GAAAA,OAAAA,CAAQC,MAAM,CAAC,MAAML,YAAAA,CAAAA,CAAAA,CAAAA;AAEtD,KAAA;AAEA,IAAA,MAAMA,eAAe,IAAII,OAAAA,CAAe,CAACE,OAAAA,EAASD;QAEhDb,QAASS,CAAAA,KAAK,EAAGM,CAAAA,IAAI,EAAGC,CAAAA,IAAI,CAACC,IAAAA,CAAKC,KAAK,CAAA,CAAEF,IAAI,CAACF,OAASD,EAAAA,MAAAA,CAAAA,CAAAA,CAAAA;IAGzD,OAAOF,eAAAA,CACLX,UACAA,QAASI,CAAAA,EAAE,GAAGI,YAAeI,GAAAA,OAAAA,CAAQC,MAAM,CAAC,MAAML,YAAAA,CAAAA,CAAAA,CAAAA;AAEtD,CAAA;AAaO,SAASG,eAAAA,CACdQ,gBAAkC,EAClCC,eAAgC,EAAA;AAEhC,IAAA,IAAI,CAACA,eAAAA,EACH,OAAOR,OAAAA,CAAQC,MAAM,CAAC;QACpBP,KAAOa,EAAAA,gBAAAA;QACPnB,QAAUqB,EAAAA,SAAAA;QACVhB,IAAMgB,EAAAA,SAAAA;AACR,KAAA,CAAA,CAAA;AAEF,IAAA,OAAOD,eACJJ,CAAAA,IAAI,CACH,CAACX,QACE;AAAEA,YAAAA,IAAAA;YAAML,QAAUmB,EAAAA,gBAAAA;AAAiB,SAAA,CAKvCG,CAAAA,CAAAA,KAAK,CACJ,CAAChB,SACE;AAAEA,YAAAA,KAAAA;YAAON,QAAUmB,EAAAA,gBAAAA;SAAiB,CAAA,CAAA,CAAA;AAK7C,CAAA;AAEA,SAASZ,eAAeP,QAAkB,EAAA;AACxC,IAAA,MAAMuB,cAAcvB,QAASE,CAAAA,OAAO,CAACC,GAAG,CAAC,cAAiBqB,CAAAA,EAAAA,WAAAA,EAAAA,CAAAA;AAC1D,IAAA,OAAOD,WAAaE,EAAAA,QAAAA,CAAS,OAAYF,CAAAA,IAAAA,WAAAA,EAAaE,QAAS,CAAA,OAAA,CAAA,CAAA;AACjE;;;;;"}
1
+ {"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: {}, response } : { error: {}, 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 return Promise.reject({\n error: responseToReturn,\n response: undefined,\n data: undefined,\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","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;AAAEC,QAAAA,IAAAA,EAAM,EAAC;AAAGL,QAAAA,QAAAA;KAAa,GAAA;AAAEM,QAAAA,KAAAA,EAAO,EAAC;AAAGN,QAAAA,QAAAA;AAAS,KAAA,CAAA;AAGjE,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,eAAAA,EACH,OAAOL,OAAAA,CAAQC,MAAM,CAAC;QACpBV,KAAOa,EAAAA,gBAAAA;QACPnB,QAAUqB,EAAAA,SAAAA;QACVhB,IAAMgB,EAAAA,SAAAA;AACR,KAAA,CAAA,CAAA;AAEF,IAAA,OAAOD,eACJE,CAAAA,IAAI,CACH,CAACjB,QACE;AAAEA,YAAAA,IAAAA;YAAML,QAAUmB,EAAAA,gBAAAA;AAAiB,SAAA,CAKvCI,CAAAA,CAAAA,KAAK,CACJ,CAACjB,SACE;AAAEA,YAAAA,KAAAA;YAAON,QAAUmB,EAAAA,gBAAAA;SAAiB,CAAA,CAAA,CAAA;AAK7C;;;;;"}
@@ -9,14 +9,15 @@
9
9
  error: {},
10
10
  response
11
11
  };
12
- if (isJsonResponse(response)) {
12
+ const contentType = response.headers.get('Content-Type')?.toLowerCase();
13
+ const isJsonResponse = contentType?.includes('/json') || contentType?.includes('+json');
14
+ if (isJsonResponse) {
13
15
  // clone response before parsing every time to allow multiple reads
14
16
  const jsonResponse = response.clone().json();
15
17
  return resolveResponse(response, response.ok ? jsonResponse : Promise.reject(await jsonResponse));
16
18
  }
17
- const jsonResponse = new Promise((resolve, reject)=>// attempt to parse JSON for successful responses, otherwise fail
18
- response.clone().text().then(JSON.parse).then(resolve, reject));
19
- return resolveResponse(response, response.ok ? jsonResponse : Promise.reject(await jsonResponse));
19
+ const textResponse = response.clone().text();
20
+ return resolveResponse(response, response.ok ? textResponse : Promise.reject(await textResponse));
20
21
  }
21
22
  function resolveResponse(responseToReturn, responsePromise) {
22
23
  if (!responsePromise) return Promise.reject({
@@ -32,10 +33,6 @@ function resolveResponse(responseToReturn, responsePromise) {
32
33
  response: responseToReturn
33
34
  }));
34
35
  }
35
- function isJsonResponse(response) {
36
- const contentType = response.headers.get('Content-Type')?.toLowerCase();
37
- return contentType?.includes('/json') || contentType?.includes('+json');
38
- }
39
36
 
40
37
  export { processResponse, resolveResponse };
41
38
  //# sourceMappingURL=responseUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"responseUtils.js","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: {}, response } : { error: {}, response }\n ) as RequestFnResponse<TData, TError>;\n\n if (isJsonResponse(response)) {\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 jsonResponse = new Promise<TData>((resolve, reject) =>\n // attempt to parse JSON for successful responses, otherwise fail\n response.clone().text().then(JSON.parse).then(resolve, reject)\n );\n\n return resolveResponse(\n response,\n response.ok ? jsonResponse : Promise.reject(await jsonResponse)\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 return Promise.reject({\n error: responseToReturn,\n response: undefined,\n data: undefined,\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\nfunction isJsonResponse(response: Response) {\n const contentType = response.headers.get('Content-Type')?.toLowerCase();\n return contentType?.includes('/json') || contentType?.includes('+json');\n}\n"],"names":["processResponse","response","status","headers","get","ok","data","error","isJsonResponse","jsonResponse","clone","json","resolveResponse","Promise","reject","resolve","text","then","JSON","parse","responseToReturn","responsePromise","undefined","catch","contentType","toLowerCase","includes"],"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;AAAEC,QAAAA,IAAAA,EAAM,EAAC;AAAGL,QAAAA,QAAAA;KAAa,GAAA;AAAEM,QAAAA,KAAAA,EAAO,EAAC;AAAGN,QAAAA,QAAAA;AAAS,KAAA,CAAA;AAGjE,IAAA,IAAIO,eAAeP,QAAW,CAAA,EAAA;;AAE5B,QAAA,MAAMQ,YAAeR,GAAAA,QAAAA,CAASS,KAAK,EAAA,CAAGC,IAAI,EAAA,CAAA;QAC1C,OAAOC,eAAAA,CACLX,UACAA,QAASI,CAAAA,EAAE,GAAGI,YAAeI,GAAAA,OAAAA,CAAQC,MAAM,CAAC,MAAML,YAAAA,CAAAA,CAAAA,CAAAA;AAEtD,KAAA;AAEA,IAAA,MAAMA,eAAe,IAAII,OAAAA,CAAe,CAACE,OAAAA,EAASD;QAEhDb,QAASS,CAAAA,KAAK,EAAGM,CAAAA,IAAI,EAAGC,CAAAA,IAAI,CAACC,IAAAA,CAAKC,KAAK,CAAA,CAAEF,IAAI,CAACF,OAASD,EAAAA,MAAAA,CAAAA,CAAAA,CAAAA;IAGzD,OAAOF,eAAAA,CACLX,UACAA,QAASI,CAAAA,EAAE,GAAGI,YAAeI,GAAAA,OAAAA,CAAQC,MAAM,CAAC,MAAML,YAAAA,CAAAA,CAAAA,CAAAA;AAEtD,CAAA;AAaO,SAASG,eAAAA,CACdQ,gBAAkC,EAClCC,eAAgC,EAAA;AAEhC,IAAA,IAAI,CAACA,eAAAA,EACH,OAAOR,OAAAA,CAAQC,MAAM,CAAC;QACpBP,KAAOa,EAAAA,gBAAAA;QACPnB,QAAUqB,EAAAA,SAAAA;QACVhB,IAAMgB,EAAAA,SAAAA;AACR,KAAA,CAAA,CAAA;AAEF,IAAA,OAAOD,eACJJ,CAAAA,IAAI,CACH,CAACX,QACE;AAAEA,YAAAA,IAAAA;YAAML,QAAUmB,EAAAA,gBAAAA;AAAiB,SAAA,CAKvCG,CAAAA,CAAAA,KAAK,CACJ,CAAChB,SACE;AAAEA,YAAAA,KAAAA;YAAON,QAAUmB,EAAAA,gBAAAA;SAAiB,CAAA,CAAA,CAAA;AAK7C,CAAA;AAEA,SAASZ,eAAeP,QAAkB,EAAA;AACxC,IAAA,MAAMuB,cAAcvB,QAASE,CAAAA,OAAO,CAACC,GAAG,CAAC,cAAiBqB,CAAAA,EAAAA,WAAAA,EAAAA,CAAAA;AAC1D,IAAA,OAAOD,WAAaE,EAAAA,QAAAA,CAAS,OAAYF,CAAAA,IAAAA,WAAAA,EAAaE,QAAS,CAAA,OAAA,CAAA,CAAA;AACjE;;;;"}
1
+ {"version":3,"file":"responseUtils.js","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: {}, response } : { error: {}, 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 return Promise.reject({\n error: responseToReturn,\n response: undefined,\n data: undefined,\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","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;AAAEC,QAAAA,IAAAA,EAAM,EAAC;AAAGL,QAAAA,QAAAA;KAAa,GAAA;AAAEM,QAAAA,KAAAA,EAAO,EAAC;AAAGN,QAAAA,QAAAA;AAAS,KAAA,CAAA;AAGjE,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,eAAAA,EACH,OAAOL,OAAAA,CAAQC,MAAM,CAAC;QACpBV,KAAOa,EAAAA,gBAAAA;QACPnB,QAAUqB,EAAAA,SAAAA;QACVhB,IAAMgB,EAAAA,SAAAA;AACR,KAAA,CAAA,CAAA;AAEF,IAAA,OAAOD,eACJE,CAAAA,IAAI,CACH,CAACjB,QACE;AAAEA,YAAAA,IAAAA;YAAML,QAAUmB,EAAAA,gBAAAA;AAAiB,SAAA,CAKvCI,CAAAA,CAAAA,KAAK,CACJ,CAACjB,SACE;AAAEA,YAAAA,KAAAA;YAAON,QAAUmB,EAAAA,gBAAAA;SAAiB,CAAA,CAAA,CAAA;AAK7C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"responseUtils.d.ts","sourceRoot":"","sources":["../../../src/lib/responseUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAEnF;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EACjD,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAwB3C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAC3C,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAC3C,gBAAgB,EAAE,QAAQ,EAC1B,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,GAC9B,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"responseUtils.d.ts","sourceRoot":"","sources":["../../../src/lib/responseUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAEnF;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EACjD,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CA0B3C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAC3C,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAC3C,gBAAgB,EAAE,QAAQ,EAC1B,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,GAC9B,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openapi-qraft/react",
3
- "version": "2.0.0-next.11",
3
+ "version": "2.0.0-next.13",
4
4
  "description": "OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.",
5
5
  "scripts": {
6
6
  "build": "NODE_ENV=production rollup --config rollup.config.mjs && tsc --project tsconfig.build.json --emitDeclarationOnly",
@@ -11,19 +11,18 @@
11
11
  "lint": "eslint",
12
12
  "clean": "rimraf dist/",
13
13
  "codegen": "openapi-qraft --plugin tanstack-query-react --plugin openapi-typescript ../test-fixtures/openapi.json -rm -o src/tests/fixtures/api --openapi-types-file-name openapi.ts --explicit-import-extensions --filter-services '/approval_policies/**,/entities/**,/files/**,!/internal/**' --operation-predefined-parameters '/approval_policies/{approval_policy_id}/**:header.x-monite-entity-id' '/entities/{entity_id}/documents:header.x-monite-version' --operation-name-modifier '/files/list:[a-zA-Z]+List ==> findAll' && yarn _prettify-api",
14
- "codegen2": "openapi-qraft --plugin tanstack-query-react --plugin openapi-typescript http://localhost:3000/api/doc -rm -o src/tests/fixtures/api --openapi-types-file-name openapi.ts --explicit-import-extensions && yarn _prettify-api",
15
14
  "_prettify-api": "prettier --write src/tests/fixtures/api/**/*.ts"
16
15
  },
17
16
  "sideEffects": false,
18
17
  "dependencies": {
19
- "@openapi-qraft/tanstack-query-react-types": "2.0.0-next.11"
18
+ "@openapi-qraft/tanstack-query-react-types": "2.0.0-next.13"
20
19
  },
21
20
  "devDependencies": {
22
- "@openapi-qraft/cli": "2.0.0-next.11",
21
+ "@openapi-qraft/cli": "2.0.0-next.13",
23
22
  "@openapi-qraft/eslint-config": "1.0.0",
24
- "@openapi-qraft/openapi-typescript-plugin": "^1.2.0-next.11",
23
+ "@openapi-qraft/openapi-typescript-plugin": "^1.2.0-next.13",
25
24
  "@openapi-qraft/rollup-config": "1.1.0-next.0",
26
- "@openapi-qraft/tanstack-query-react-plugin": "2.0.0-next.11",
25
+ "@openapi-qraft/tanstack-query-react-plugin": "2.0.0-next.13",
27
26
  "@openapi-qraft/test-fixtures": "1.0.0",
28
27
  "@tanstack/react-query": "^5.56.2",
29
28
  "@testing-library/jest-dom": "^5.17.0",
@@ -12,7 +12,12 @@ export async function processResponse<TData, TError>(
12
12
  response.ok ? { data: {}, response } : { error: {}, response }
13
13
  ) as RequestFnResponse<TData, TError>;
14
14
 
15
- if (isJsonResponse(response)) {
15
+ const contentType = response.headers.get('Content-Type')?.toLowerCase();
16
+
17
+ const isJsonResponse =
18
+ contentType?.includes('/json') || contentType?.includes('+json');
19
+
20
+ if (isJsonResponse) {
16
21
  // clone response before parsing every time to allow multiple reads
17
22
  const jsonResponse = response.clone().json();
18
23
  return resolveResponse(
@@ -21,14 +26,11 @@ export async function processResponse<TData, TError>(
21
26
  );
22
27
  }
23
28
 
24
- const jsonResponse = new Promise<TData>((resolve, reject) =>
25
- // attempt to parse JSON for successful responses, otherwise fail
26
- response.clone().text().then(JSON.parse).then(resolve, reject)
27
- );
29
+ const textResponse = response.clone().text() as Promise<TData>;
28
30
 
29
31
  return resolveResponse(
30
32
  response,
31
- response.ok ? jsonResponse : Promise.reject(await jsonResponse)
33
+ response.ok ? textResponse : Promise.reject(await textResponse)
32
34
  );
33
35
  }
34
36
 
@@ -70,8 +72,3 @@ export function resolveResponse<TData, TError>(
70
72
  >
71
73
  );
72
74
  }
73
-
74
- function isJsonResponse(response: Response) {
75
- const contentType = response.headers.get('Content-Type')?.toLowerCase();
76
- return contentType?.includes('/json') || contentType?.includes('+json');
77
- }