@algolia/requester-fetch 5.0.0-alpha.9 → 5.0.0-alpha.90
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.d.ts +1 -1
- package/dist/{requester-fetch.cjs.js → requester-fetch.cjs} +59 -62
- package/dist/requester-fetch.esm.node.js +59 -60
- package/dist/src/createFetchRequester.d.ts +5 -5
- package/dist/src/createFetchRequester.d.ts.map +1 -1
- package/package.json +13 -10
- package/src/__tests__/fetch-requester.test.ts +4 -4
- package/src/createFetchRequester.ts +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './src/createFetchRequester';
|
|
1
|
+
export * from './src/createFetchRequester';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,67 +1,64 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return { send };
|
|
3
|
+
function isAbortError(error) {
|
|
4
|
+
return error instanceof Error && error.name === 'AbortError';
|
|
5
|
+
}
|
|
6
|
+
function getErrorMessage(error, abortContent) {
|
|
7
|
+
if (isAbortError(error)) {
|
|
8
|
+
return abortContent;
|
|
9
|
+
}
|
|
10
|
+
return error instanceof Error ? error.message : 'Network request failed';
|
|
11
|
+
}
|
|
12
|
+
function createFetchRequester({ requesterOptions = {}, } = {}) {
|
|
13
|
+
async function send(request) {
|
|
14
|
+
const abortController = new AbortController();
|
|
15
|
+
const signal = abortController.signal;
|
|
16
|
+
const createTimeout = (timeout) => {
|
|
17
|
+
return setTimeout(() => {
|
|
18
|
+
abortController.abort();
|
|
19
|
+
}, timeout);
|
|
20
|
+
};
|
|
21
|
+
const connectTimeout = createTimeout(request.connectTimeout);
|
|
22
|
+
let fetchRes;
|
|
23
|
+
try {
|
|
24
|
+
fetchRes = await fetch(request.url, {
|
|
25
|
+
method: request.method,
|
|
26
|
+
body: request.data || null,
|
|
27
|
+
redirect: 'manual',
|
|
28
|
+
signal,
|
|
29
|
+
...requesterOptions,
|
|
30
|
+
headers: {
|
|
31
|
+
...requesterOptions.headers,
|
|
32
|
+
...request.headers,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
return {
|
|
38
|
+
status: 0,
|
|
39
|
+
content: getErrorMessage(error, 'Connection timeout'),
|
|
40
|
+
isTimedOut: isAbortError(error),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
clearTimeout(connectTimeout);
|
|
44
|
+
createTimeout(request.responseTimeout);
|
|
45
|
+
try {
|
|
46
|
+
const content = await fetchRes.text();
|
|
47
|
+
return {
|
|
48
|
+
content,
|
|
49
|
+
isTimedOut: false,
|
|
50
|
+
status: fetchRes.status,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
return {
|
|
55
|
+
status: 0,
|
|
56
|
+
content: getErrorMessage(error, 'Socket timeout'),
|
|
57
|
+
isTimedOut: isAbortError(error),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return { send };
|
|
65
62
|
}
|
|
66
63
|
|
|
67
64
|
exports.createFetchRequester = createFetchRequester;
|
|
@@ -1,63 +1,62 @@
|
|
|
1
|
-
function isAbortError(error) {
|
|
2
|
-
return error instanceof Error && error.name === 'AbortError';
|
|
3
|
-
}
|
|
4
|
-
function getErrorMessage(error, abortContent) {
|
|
5
|
-
if (isAbortError(error)) {
|
|
6
|
-
return abortContent;
|
|
7
|
-
}
|
|
8
|
-
return error instanceof Error ? error.message : 'Network request failed';
|
|
9
|
-
}
|
|
10
|
-
function createFetchRequester({ requesterOptions = {}, } = {}) {
|
|
11
|
-
async function send(request) {
|
|
12
|
-
const abortController = new AbortController();
|
|
13
|
-
const signal = abortController.signal;
|
|
14
|
-
const createTimeout = (timeout) => {
|
|
15
|
-
return setTimeout(() => {
|
|
16
|
-
abortController.abort();
|
|
17
|
-
}, timeout);
|
|
18
|
-
};
|
|
19
|
-
const connectTimeout = createTimeout(request.connectTimeout);
|
|
20
|
-
let fetchRes;
|
|
21
|
-
try {
|
|
22
|
-
fetchRes = await fetch(request.url, {
|
|
23
|
-
method: request.method,
|
|
24
|
-
body: request.data || null,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
...
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
return { send };
|
|
1
|
+
function isAbortError(error) {
|
|
2
|
+
return error instanceof Error && error.name === 'AbortError';
|
|
3
|
+
}
|
|
4
|
+
function getErrorMessage(error, abortContent) {
|
|
5
|
+
if (isAbortError(error)) {
|
|
6
|
+
return abortContent;
|
|
7
|
+
}
|
|
8
|
+
return error instanceof Error ? error.message : 'Network request failed';
|
|
9
|
+
}
|
|
10
|
+
function createFetchRequester({ requesterOptions = {}, } = {}) {
|
|
11
|
+
async function send(request) {
|
|
12
|
+
const abortController = new AbortController();
|
|
13
|
+
const signal = abortController.signal;
|
|
14
|
+
const createTimeout = (timeout) => {
|
|
15
|
+
return setTimeout(() => {
|
|
16
|
+
abortController.abort();
|
|
17
|
+
}, timeout);
|
|
18
|
+
};
|
|
19
|
+
const connectTimeout = createTimeout(request.connectTimeout);
|
|
20
|
+
let fetchRes;
|
|
21
|
+
try {
|
|
22
|
+
fetchRes = await fetch(request.url, {
|
|
23
|
+
method: request.method,
|
|
24
|
+
body: request.data || null,
|
|
25
|
+
redirect: 'manual',
|
|
26
|
+
signal,
|
|
27
|
+
...requesterOptions,
|
|
28
|
+
headers: {
|
|
29
|
+
...requesterOptions.headers,
|
|
30
|
+
...request.headers,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return {
|
|
36
|
+
status: 0,
|
|
37
|
+
content: getErrorMessage(error, 'Connection timeout'),
|
|
38
|
+
isTimedOut: isAbortError(error),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
clearTimeout(connectTimeout);
|
|
42
|
+
createTimeout(request.responseTimeout);
|
|
43
|
+
try {
|
|
44
|
+
const content = await fetchRes.text();
|
|
45
|
+
return {
|
|
46
|
+
content,
|
|
47
|
+
isTimedOut: false,
|
|
48
|
+
status: fetchRes.status,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return {
|
|
53
|
+
status: 0,
|
|
54
|
+
content: getErrorMessage(error, 'Socket timeout'),
|
|
55
|
+
isTimedOut: isAbortError(error),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return { send };
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
export { createFetchRequester };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Requester } from '@algolia/client-common';
|
|
2
|
-
export
|
|
3
|
-
readonly requesterOptions?: RequestInit;
|
|
4
|
-
};
|
|
5
|
-
export declare function createFetchRequester({ requesterOptions, }?: FetchRequesterOptions): Requester;
|
|
1
|
+
import type { Requester } from '@algolia/client-common';
|
|
2
|
+
export type FetchRequesterOptions = {
|
|
3
|
+
readonly requesterOptions?: RequestInit;
|
|
4
|
+
};
|
|
5
|
+
export declare function createFetchRequester({ requesterOptions, }?: FetchRequesterOptions): Requester;
|
|
6
6
|
//# sourceMappingURL=createFetchRequester.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFetchRequester.d.ts","sourceRoot":"","sources":["../../src/createFetchRequester.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAEV,MAAM,wBAAwB,CAAC;AAahC,
|
|
1
|
+
{"version":3,"file":"createFetchRequester.d.ts","sourceRoot":"","sources":["../../src/createFetchRequester.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAEV,MAAM,wBAAwB,CAAC;AAahC,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC;CACzC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,gBAAqB,GACtB,GAAE,qBAA0B,GAAG,SAAS,CAwDxC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@algolia/requester-fetch",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.90",
|
|
4
4
|
"description": "Promise-based request library using Fetch.",
|
|
5
5
|
"repository": "algolia/algoliasearch-client-javascript",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Algolia",
|
|
8
|
-
"
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "dist/requester-fetch.cjs",
|
|
9
10
|
"module": "dist/requester-fetch.esm.node.js",
|
|
10
11
|
"types": "dist/index.d.ts",
|
|
11
12
|
"files": [
|
|
@@ -19,16 +20,18 @@
|
|
|
19
20
|
"test": "jest"
|
|
20
21
|
},
|
|
21
22
|
"dependencies": {
|
|
22
|
-
"@algolia/client-common": "5.0.0-alpha.
|
|
23
|
+
"@algolia/client-common": "5.0.0-alpha.90"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
|
-
"@
|
|
26
|
-
"@
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
26
|
+
"@babel/preset-env": "7.23.2",
|
|
27
|
+
"@babel/preset-typescript": "7.23.2",
|
|
28
|
+
"@types/jest": "29.5.7",
|
|
29
|
+
"@types/node": "20.8.10",
|
|
30
|
+
"cross-fetch": "4.0.0",
|
|
31
|
+
"jest": "29.7.0",
|
|
32
|
+
"nock": "13.3.8",
|
|
33
|
+
"ts-jest": "29.1.1",
|
|
34
|
+
"typescript": "5.2.2"
|
|
32
35
|
},
|
|
33
36
|
"engines": {
|
|
34
37
|
"node": ">= 14.0.0"
|
|
@@ -95,8 +95,8 @@ describe('status code handling', () => {
|
|
|
95
95
|
// create a test response stream that is chunked inside a unicode character
|
|
96
96
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
97
97
|
function* generate() {
|
|
98
|
-
yield data.
|
|
99
|
-
yield data.
|
|
98
|
+
yield data.subarray(0, 3);
|
|
99
|
+
yield data.subarray(3);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
const testStream = Readable.from(generate());
|
|
@@ -130,7 +130,7 @@ describe('timeout handling', () => {
|
|
|
130
130
|
const response = await requester.send({
|
|
131
131
|
...timeoutRequest,
|
|
132
132
|
connectTimeout: 1000,
|
|
133
|
-
url: 'http://
|
|
133
|
+
url: 'http://localhost:1111/connection_timeout',
|
|
134
134
|
});
|
|
135
135
|
|
|
136
136
|
const now = Date.now();
|
|
@@ -145,7 +145,7 @@ describe('timeout handling', () => {
|
|
|
145
145
|
const response = await requester.send({
|
|
146
146
|
...timeoutRequest,
|
|
147
147
|
connectTimeout: 2000,
|
|
148
|
-
url: 'http://
|
|
148
|
+
url: 'http://localhost:1111/connection_timeout',
|
|
149
149
|
});
|
|
150
150
|
|
|
151
151
|
const now = Date.now();
|