Skip to content

Commit 5cafcf2

Browse files
committedNov 21, 2023
[fix] Response Type compatibility of Fetch API
[optimize] update Upstream packages & reduce Dependency size
1 parent adf29a3 commit 5cafcf2

File tree

4 files changed

+829
-813
lines changed

4 files changed

+829
-813
lines changed
 

‎.npmrc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
auto-install-peers = false

‎package.json

+18-18
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "koajax",
3-
"version": "0.9.4",
3+
"version": "0.9.5",
44
"license": "LGPL-3.0",
55
"author": "shiy2008@gmail.com",
66
"description": "HTTP Client based on Koa-like middlewares",
@@ -25,35 +25,35 @@
2525
"main": "dist/index.js",
2626
"module": "dist/index.esm.js",
2727
"dependencies": {
28-
"@swc/helpers": "^0.5.1",
29-
"iterable-observer": "^1.0.0",
28+
"@swc/helpers": "^0.5.3",
29+
"iterable-observer": "^1.0.1",
3030
"regenerator-runtime": "^0.14.0",
3131
"web-utility": "^4.1.3"
3232
},
3333
"peerDependencies": {
3434
"jsdom": ">=21"
3535
},
3636
"devDependencies": {
37-
"@parcel/packager-ts": "~2.9.3",
38-
"@parcel/transformer-typescript-types": "~2.9.3",
39-
"@types/core-js": "^2.5.6",
40-
"@types/jest": "^29.5.4",
41-
"@types/jsdom": "^21.1.2",
42-
"@types/node": "^18.17.14",
43-
"core-js": "^3.32.1",
37+
"@parcel/packager-ts": "~2.10.3",
38+
"@parcel/transformer-typescript-types": "~2.10.3",
39+
"@types/core-js": "^2.5.8",
40+
"@types/jest": "^29.5.9",
41+
"@types/jsdom": "^21.1.6",
42+
"@types/node": "^18.18.11",
43+
"core-js": "^3.33.3",
4444
"cross-env": "^7.0.3",
4545
"husky": "^8.0.3",
46-
"jest": "^29.6.4",
47-
"jest-environment-jsdom": "^29.6.4",
46+
"jest": "^29.7.0",
47+
"jest-environment-jsdom": "^29.7.0",
4848
"jsdom": "^22.1.0",
49-
"lint-staged": "^14.0.1",
49+
"lint-staged": "^15.1.0",
5050
"open-cli": "^7.2.0",
51-
"parcel": "~2.9.3",
52-
"prettier": "^3.0.3",
51+
"parcel": "~2.10.3",
52+
"prettier": "^3.1.0",
5353
"ts-jest": "^29.1.1",
54-
"typedoc": "^0.25.1",
55-
"typedoc-plugin-mdn-links": "^3.1.0",
56-
"typescript": "~5.2.2"
54+
"typedoc": "^0.25.3",
55+
"typedoc-plugin-mdn-links": "^3.1.4",
56+
"typescript": "~5.3.2"
5757
},
5858
"prettier": {
5959
"singleQuote": true,

‎pnpm-lock.yaml

+782-787
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎source/HTTPRequest.ts

+28-8
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ export function requestXHR<B>({
104104
headers instanceof Array
105105
? headers
106106
: headers?.[Symbol.iterator] instanceof Function
107-
? [...(headers as Iterable<string[]>)]
108-
: Object.entries(headers);
107+
? [...(headers as Iterable<string[]>)]
108+
: Object.entries(headers);
109109

110110
const response = new Promise<Response<B>>((resolve, reject) => {
111111
request.onload = () =>
@@ -158,6 +158,26 @@ export async function requestFetch<B>({
158158

159159
throw new RangeError('Timed out');
160160
});
161+
headers =
162+
headers instanceof Headers
163+
? Object.fromEntries(headers.entries())
164+
: headers instanceof Array
165+
? Object.fromEntries(headers)
166+
: headers;
167+
headers =
168+
responseType === 'text'
169+
? { ...headers, Accept: 'text/plain' }
170+
: responseType === 'json'
171+
? { ...headers, Accept: 'application/json' }
172+
: responseType === 'document'
173+
? {
174+
...headers,
175+
Accept: 'text/html, application/xhtml+xml, application/xml'
176+
}
177+
: responseType === 'arraybuffer' || responseType === 'blob'
178+
? { ...headers, Accept: 'application/octet-stream' }
179+
: headers;
180+
161181
const fetchResult = fetch(path + '', {
162182
method,
163183
headers,
@@ -182,12 +202,12 @@ export async function requestFetch<B>({
182202
var data: B = await (responseType === 'text'
183203
? response.text()
184204
: responseType === 'document'
185-
? parseDocument(await response.text(), contentType)
186-
: responseType === 'json'
187-
? response.json()
188-
: responseType === 'arraybuffer'
189-
? response.arrayBuffer()
190-
: response.blob());
205+
? parseDocument(await response.text(), contentType)
206+
: responseType === 'json'
207+
? response.json()
208+
: responseType === 'arraybuffer'
209+
? response.arrayBuffer()
210+
: response.blob());
191211
} catch {
192212
const text = await backup.text();
193213

0 commit comments

Comments
 (0)
Please sign in to comment.