Skip to content

Commit 509ca0b

Browse files
authored
fix(javascript): convert timeouts to ms APIC-512 (#643)
1 parent 4225a43 commit 509ca0b

File tree

18 files changed

+64
-37
lines changed

18 files changed

+64
-37
lines changed

clients/algoliasearch-client-javascript/packages/algoliasearch/builds/browser.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import {
1212
createMemoryCache,
1313
createFallbackableCache,
1414
createBrowserLocalStorageCache,
15+
DEFAULT_CONNECT_TIMEOUT_BROWSER,
16+
DEFAULT_READ_TIMEOUT_BROWSER,
17+
DEFAULT_WRITE_TIMEOUT_BROWSER,
1518
} from '@experimental-api-clients-automation/client-common';
1619
import type {
1720
PersonalizationClient,
@@ -32,19 +35,19 @@ export function algoliasearch(
3235
apiKey: string,
3336
options?: { requester?: Requester; hosts?: Host[] }
3437
) {
35-
if (!appId) {
38+
if (!appId || typeof appId !== 'string') {
3639
throw new Error('`appId` is missing.');
3740
}
3841

39-
if (!apiKey) {
42+
if (!apiKey || typeof apiKey !== 'string') {
4043
throw new Error('`apiKey` is missing.');
4144
}
4245

4346
const commonOptions: Omit<CreateClientOptions, 'apiKey' | 'appId'> = {
4447
timeouts: {
45-
connect: 1,
46-
read: 2,
47-
write: 30,
48+
connect: DEFAULT_CONNECT_TIMEOUT_BROWSER,
49+
read: DEFAULT_READ_TIMEOUT_BROWSER,
50+
write: DEFAULT_WRITE_TIMEOUT_BROWSER,
4851
},
4952
requester: options?.requester ?? createXhrRequester(),
5053
algoliaAgents: [{ segment: 'Browser' }],

clients/algoliasearch-client-javascript/packages/algoliasearch/builds/node.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import type {
99
Requester,
1010
} from '@experimental-api-clients-automation/client-common';
1111
import {
12+
DEFAULT_CONNECT_TIMEOUT_NODE,
13+
DEFAULT_READ_TIMEOUT_NODE,
14+
DEFAULT_WRITE_TIMEOUT_NODE,
1215
createMemoryCache,
1316
createNullCache,
1417
} from '@experimental-api-clients-automation/client-common';
@@ -31,19 +34,19 @@ export function algoliasearch(
3134
apiKey: string,
3235
options?: { requester?: Requester; hosts?: Host[] }
3336
) {
34-
if (!appId) {
37+
if (!appId || typeof appId !== 'string') {
3538
throw new Error('`appId` is missing.');
3639
}
3740

38-
if (!apiKey) {
41+
if (!apiKey || typeof apiKey !== 'string') {
3942
throw new Error('`apiKey` is missing.');
4043
}
4144

4245
const commonOptions: Omit<CreateClientOptions, 'apiKey' | 'appId'> = {
4346
timeouts: {
44-
connect: 2,
45-
read: 5,
46-
write: 30,
47+
connect: DEFAULT_CONNECT_TIMEOUT_NODE,
48+
read: DEFAULT_READ_TIMEOUT_NODE,
49+
write: DEFAULT_WRITE_TIMEOUT_NODE,
4750
},
4851
requester: options?.requester ?? createHttpRequester(),
4952
algoliaAgents: [{ segment: 'Node.js', version: process.versions.node }],

clients/algoliasearch-client-javascript/packages/client-common/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ export * from './src/transporter';
66
export * from './src/createAlgoliaAgent';
77
export * from './src/getAlgoliaAgent';
88
export * from './src/types';
9+
export * from './src/constants';
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export const DEFAULT_CONNECT_TIMEOUT_BROWSER = 1000;
2+
export const DEFAULT_READ_TIMEOUT_BROWSER = 2000;
3+
export const DEFAULT_WRITE_TIMEOUT_BROWSER = 30000;
4+
5+
export const DEFAULT_CONNECT_TIMEOUT_NODE = 2000;
6+
export const DEFAULT_READ_TIMEOUT_NODE = 5000;
7+
export const DEFAULT_WRITE_TIMEOUT_NODE = 30000;

clients/algoliasearch-client-javascript/packages/client-common/src/types/Transporter.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,19 @@ export type AlgoliaAgent = {
7070
};
7171

7272
export type Timeouts = {
73+
/**
74+
* Timeout in milliseconds before the connection is established.
75+
*/
7376
connect: number;
77+
78+
/**
79+
* Timeout in milliseconds before reading the response on a read request.
80+
*/
7481
read: number;
82+
83+
/**
84+
* Timeout in milliseconds before reading the response on a write request.
85+
*/
7586
write: number;
7687
};
7788

@@ -166,7 +177,7 @@ export type Transporter = {
166177
responsesCache: Cache;
167178

168179
/**
169-
* The timeouts used by the requester. The transporter
180+
* The timeouts used by the requester (in milliseconds). The transporter
170181
* layer may increase this timeouts as defined on the
171182
* retry strategy.
172183
*/

clients/algoliasearch-client-javascript/packages/requester-browser-xhr/src/createXhrRequester.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export function createXhrRequester(): Requester {
2525
content,
2626
isTimedOut: true,
2727
});
28-
}, timeout * 1000);
28+
}, timeout);
2929
};
3030

3131
const connectTimeout = createTimeout(

clients/algoliasearch-client-javascript/packages/requester-node-http/src/createHttpRequester.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export function createHttpRequester(): Requester {
6565
content,
6666
isTimedOut: true,
6767
});
68-
}, timeout * 1000);
68+
}, timeout);
6969
};
7070

7171
connectTimeout = createTimeout(

templates/javascript/browser.mustache

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { InitClientOptions } from '@experimental-api-clients-automation/client-common';
2+
import { DEFAULT_CONNECT_TIMEOUT_BROWSER, DEFAULT_READ_TIMEOUT_BROWSER, DEFAULT_WRITE_TIMEOUT_BROWSER } from '@experimental-api-clients-automation/client-common';
23
import { createMemoryCache, createFallbackableCache, createBrowserLocalStorageCache } from '@experimental-api-clients-automation/client-common';
34
import { createXhrRequester } from '@experimental-api-clients-automation/requester-browser-xhr';
45

@@ -43,9 +44,9 @@ export function {{apiName}}(
4344
appId,
4445
apiKey,{{#hasRegionalHost}}region,{{/hasRegionalHost}}
4546
timeouts: {
46-
connect: 1,
47-
read: 2,
48-
write: 30,
47+
connect: DEFAULT_CONNECT_TIMEOUT_BROWSER,
48+
read: DEFAULT_READ_TIMEOUT_BROWSER,
49+
write: DEFAULT_WRITE_TIMEOUT_BROWSER,
4950
},
5051
requester: createXhrRequester(),
5152
algoliaAgents: [{ segment: 'Browser' }],

templates/javascript/node.mustache

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { InitClientOptions } from '@experimental-api-clients-automation/client-common';
2+
import { DEFAULT_CONNECT_TIMEOUT_NODE, DEFAULT_READ_TIMEOUT_NODE, DEFAULT_WRITE_TIMEOUT_NODE } from '@experimental-api-clients-automation/client-common';
23
import { createMemoryCache, createNullCache } from '@experimental-api-clients-automation/client-common';
34
import { createHttpRequester } from '@experimental-api-clients-automation/requester-node-http';
45

@@ -43,9 +44,9 @@ export function {{apiName}}(
4344
appId,
4445
apiKey,{{#hasRegionalHost}}region,{{/hasRegionalHost}}
4546
timeouts: {
46-
connect: 2,
47-
read: 5,
48-
write: 30,
47+
connect: DEFAULT_CONNECT_TIMEOUT_NODE,
48+
read: DEFAULT_READ_TIMEOUT_NODE,
49+
write: DEFAULT_WRITE_TIMEOUT_NODE,
4950
},
5051
requester: createHttpRequester(),
5152
algoliaAgents: [{ segment: 'Node.js', version: process.versions.node }],

tests/CTS/client/abtesting/api.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
"expected": {
4646
"match": {
4747
"objectContaining": {
48-
"connectTimeout": 2,
49-
"responseTimeout": 30
48+
"connectTimeout": 2000,
49+
"responseTimeout": 30000
5050
}
5151
}
5252
}

0 commit comments

Comments
 (0)