Skip to content

Commit 8329812

Browse files
committed
Reduce size by 20b
1 parent 9de6183 commit 8329812

File tree

1 file changed

+31
-37
lines changed

1 file changed

+31
-37
lines changed

src/index.mjs

Lines changed: 31 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,47 @@
11
export default function(url, options) {
22
options = options || {};
33
return new Promise( (resolve, reject) => {
4-
let request = new XMLHttpRequest();
4+
const request = new XMLHttpRequest();
5+
const keys = [];
6+
const all = [];
7+
const headers = {};
8+
9+
const response = () => ({
10+
ok: (request.status/100|0) == 2, // 200-299
11+
statusText: request.statusText,
12+
status: request.status,
13+
url: request.responseURL,
14+
text: () => Promise.resolve(request.responseText),
15+
json: () => Promise.resolve(JSON.parse(request.responseText)),
16+
blob: () => Promise.resolve(new Blob([request.response])),
17+
clone: response,
18+
headers: {
19+
keys: () => keys,
20+
entries: () => all,
21+
get: n => headers[n.toLowerCase()],
22+
has: n => n.toLowerCase() in headers
23+
}
24+
});
525

626
request.open(options.method || 'get', url, true);
727

8-
for (let i in options.headers) {
9-
request.setRequestHeader(i, options.headers[i]);
10-
}
11-
12-
request.withCredentials = options.credentials=='include';
13-
1428
request.onload = () => {
29+
request.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, (m, key, value) => {
30+
keys.push(key = key.toLowerCase());
31+
all.push([key, value]);
32+
headers[key] = headers[key] ? `${headers[key]},${value}` : value;
33+
});
1534
resolve(response());
1635
};
1736

1837
request.onerror = reject;
1938

20-
request.send(options.body || null);
21-
22-
function response() {
23-
let keys = [],
24-
all = [],
25-
headers = {},
26-
header;
27-
28-
request.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, (m, key, value) => {
29-
keys.push(key = key.toLowerCase());
30-
all.push([key, value]);
31-
header = headers[key];
32-
headers[key] = header ? `${header},${value}` : value;
33-
});
39+
request.withCredentials = options.credentials=='include';
3440

35-
return {
36-
ok: (request.status/100|0) == 2, // 200-299
37-
status: request.status,
38-
statusText: request.statusText,
39-
url: request.responseURL,
40-
clone: response,
41-
text: () => Promise.resolve(request.responseText),
42-
json: () => Promise.resolve(request.responseText).then(JSON.parse),
43-
blob: () => Promise.resolve(new Blob([request.response])),
44-
headers: {
45-
keys: () => keys,
46-
entries: () => all,
47-
get: n => headers[n.toLowerCase()],
48-
has: n => n.toLowerCase() in headers
49-
}
50-
};
41+
for (const i in options.headers) {
42+
request.setRequestHeader(i, options.headers[i]);
5143
}
44+
45+
request.send(options.body || null);
5246
});
5347
}

0 commit comments

Comments
 (0)