@algolia/client-common 5.0.0-alpha.99 → 5.0.0-beta.2
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/client-common.cjs +27 -16
- package/dist/client-common.esm.node.js +27 -16
- package/dist/src/createEchoRequester.d.ts.map +1 -1
- package/dist/src/transporter/createTransporter.d.ts.map +1 -1
- package/dist/src/types/host.d.ts +4 -0
- package/dist/src/types/host.d.ts.map +1 -1
- package/dist/src/types/transporter.d.ts +1 -1
- package/dist/src/types/transporter.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/createEchoRequester.ts +23 -8
- package/src/transporter/createTransporter.ts +2 -5
- package/src/transporter/helpers.ts +3 -3
- package/src/types/host.ts +5 -0
- package/src/types/transporter.ts +1 -1
package/dist/client-common.cjs
CHANGED
|
@@ -17,16 +17,30 @@ function createAuth(appId, apiKey, authMode = 'WithinHeaders') {
|
|
|
17
17
|
|
|
18
18
|
function getUrlParams({
|
|
19
19
|
host,
|
|
20
|
-
|
|
20
|
+
search,
|
|
21
21
|
pathname
|
|
22
22
|
}) {
|
|
23
|
-
const
|
|
23
|
+
const urlSearchParams = search.split('?');
|
|
24
|
+
if (urlSearchParams.length === 1) {
|
|
25
|
+
return {
|
|
26
|
+
host,
|
|
27
|
+
algoliaAgent: '',
|
|
28
|
+
searchParams: undefined,
|
|
29
|
+
path: pathname
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const splitSearchParams = urlSearchParams[1].split('&');
|
|
33
|
+
let algoliaAgent = '';
|
|
24
34
|
const searchParams = {};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
if (splitSearchParams.length > 0) {
|
|
36
|
+
splitSearchParams.forEach(param => {
|
|
37
|
+
const [key, value] = param.split('=');
|
|
38
|
+
if (key === 'x-algolia-agent') {
|
|
39
|
+
algoliaAgent = value;
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
searchParams[key] = value;
|
|
43
|
+
});
|
|
30
44
|
}
|
|
31
45
|
return {
|
|
32
46
|
host,
|
|
@@ -51,7 +65,7 @@ function createEchoRequester({
|
|
|
51
65
|
data: request.data ? JSON.parse(request.data) : undefined,
|
|
52
66
|
path,
|
|
53
67
|
host,
|
|
54
|
-
algoliaAgent
|
|
68
|
+
algoliaAgent,
|
|
55
69
|
searchParams
|
|
56
70
|
};
|
|
57
71
|
return Promise.resolve({
|
|
@@ -299,7 +313,7 @@ function _toPrimitive(t, r) {
|
|
|
299
313
|
}
|
|
300
314
|
function _toPropertyKey(t) {
|
|
301
315
|
var i = _toPrimitive(t, "string");
|
|
302
|
-
return "symbol" == typeof i ? i :
|
|
316
|
+
return "symbol" == typeof i ? i : i + "";
|
|
303
317
|
}
|
|
304
318
|
function _defineProperty(obj, key, value) {
|
|
305
319
|
key = _toPropertyKey(key);
|
|
@@ -373,7 +387,7 @@ function shuffle(array) {
|
|
|
373
387
|
}
|
|
374
388
|
function serializeUrl(host, path, queryParameters) {
|
|
375
389
|
const queryParametersAsString = serializeQueryParameters(queryParameters);
|
|
376
|
-
let url = `${host.protocol}://${host.url}/${path.charAt(0) === '/' ? path.
|
|
390
|
+
let url = `${host.protocol}://${host.url}${host.port ? `:${host.port}` : ''}/${path.charAt(0) === '/' ? path.substring(1) : path}`;
|
|
377
391
|
if (queryParametersAsString.length) {
|
|
378
392
|
url += `?${queryParametersAsString}`;
|
|
379
393
|
}
|
|
@@ -381,7 +395,7 @@ function serializeUrl(host, path, queryParameters) {
|
|
|
381
395
|
}
|
|
382
396
|
function serializeQueryParameters(parameters) {
|
|
383
397
|
const isObjectOrArray = value => Object.prototype.toString.call(value) === '[object Object]' || Object.prototype.toString.call(value) === '[object Array]';
|
|
384
|
-
return Object.keys(parameters).map(key => `${key}=${encodeURIComponent(isObjectOrArray(parameters[key]) ? JSON.stringify(parameters[key]) : parameters[key])}`).join('&');
|
|
398
|
+
return Object.keys(parameters).map(key => `${key}=${encodeURIComponent(isObjectOrArray(parameters[key]) ? JSON.stringify(parameters[key]) : parameters[key]).replaceAll('+', '%20')}`).join('&');
|
|
385
399
|
}
|
|
386
400
|
function serializeData(request, requestOptions) {
|
|
387
401
|
if (request.method === 'GET' || request.data === undefined && requestOptions.data === undefined) {
|
|
@@ -552,16 +566,13 @@ function createTransporter({
|
|
|
552
566
|
if (host === undefined) {
|
|
553
567
|
throw new RetryError(stackTraceWithoutCredentials(stackTrace));
|
|
554
568
|
}
|
|
555
|
-
let responseTimeout = requestOptions.
|
|
556
|
-
if (responseTimeout === undefined) {
|
|
557
|
-
responseTimeout = isRead ? timeouts.read : timeouts.write;
|
|
558
|
-
}
|
|
569
|
+
let responseTimeout = isRead ? requestOptions.timeouts?.read || timeouts.read : requestOptions.timeouts?.write || timeouts.write;
|
|
559
570
|
const payload = {
|
|
560
571
|
data,
|
|
561
572
|
headers,
|
|
562
573
|
method: request.method,
|
|
563
574
|
url: serializeUrl(host, request.path, queryParameters),
|
|
564
|
-
connectTimeout: getTimeout(timeoutsCount, timeouts.connect),
|
|
575
|
+
connectTimeout: getTimeout(timeoutsCount, requestOptions.timeouts?.connect || timeouts.connect),
|
|
565
576
|
responseTimeout: getTimeout(timeoutsCount, responseTimeout)
|
|
566
577
|
};
|
|
567
578
|
/**
|
|
@@ -15,16 +15,30 @@ function createAuth(appId, apiKey, authMode = 'WithinHeaders') {
|
|
|
15
15
|
|
|
16
16
|
function getUrlParams({
|
|
17
17
|
host,
|
|
18
|
-
|
|
18
|
+
search,
|
|
19
19
|
pathname
|
|
20
20
|
}) {
|
|
21
|
-
const
|
|
21
|
+
const urlSearchParams = search.split('?');
|
|
22
|
+
if (urlSearchParams.length === 1) {
|
|
23
|
+
return {
|
|
24
|
+
host,
|
|
25
|
+
algoliaAgent: '',
|
|
26
|
+
searchParams: undefined,
|
|
27
|
+
path: pathname
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const splitSearchParams = urlSearchParams[1].split('&');
|
|
31
|
+
let algoliaAgent = '';
|
|
22
32
|
const searchParams = {};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
if (splitSearchParams.length > 0) {
|
|
34
|
+
splitSearchParams.forEach(param => {
|
|
35
|
+
const [key, value] = param.split('=');
|
|
36
|
+
if (key === 'x-algolia-agent') {
|
|
37
|
+
algoliaAgent = value;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
searchParams[key] = value;
|
|
41
|
+
});
|
|
28
42
|
}
|
|
29
43
|
return {
|
|
30
44
|
host,
|
|
@@ -49,7 +63,7 @@ function createEchoRequester({
|
|
|
49
63
|
data: request.data ? JSON.parse(request.data) : undefined,
|
|
50
64
|
path,
|
|
51
65
|
host,
|
|
52
|
-
algoliaAgent
|
|
66
|
+
algoliaAgent,
|
|
53
67
|
searchParams
|
|
54
68
|
};
|
|
55
69
|
return Promise.resolve({
|
|
@@ -297,7 +311,7 @@ function _toPrimitive(t, r) {
|
|
|
297
311
|
}
|
|
298
312
|
function _toPropertyKey(t) {
|
|
299
313
|
var i = _toPrimitive(t, "string");
|
|
300
|
-
return "symbol" == typeof i ? i :
|
|
314
|
+
return "symbol" == typeof i ? i : i + "";
|
|
301
315
|
}
|
|
302
316
|
function _defineProperty(obj, key, value) {
|
|
303
317
|
key = _toPropertyKey(key);
|
|
@@ -371,7 +385,7 @@ function shuffle(array) {
|
|
|
371
385
|
}
|
|
372
386
|
function serializeUrl(host, path, queryParameters) {
|
|
373
387
|
const queryParametersAsString = serializeQueryParameters(queryParameters);
|
|
374
|
-
let url = `${host.protocol}://${host.url}/${path.charAt(0) === '/' ? path.
|
|
388
|
+
let url = `${host.protocol}://${host.url}${host.port ? `:${host.port}` : ''}/${path.charAt(0) === '/' ? path.substring(1) : path}`;
|
|
375
389
|
if (queryParametersAsString.length) {
|
|
376
390
|
url += `?${queryParametersAsString}`;
|
|
377
391
|
}
|
|
@@ -379,7 +393,7 @@ function serializeUrl(host, path, queryParameters) {
|
|
|
379
393
|
}
|
|
380
394
|
function serializeQueryParameters(parameters) {
|
|
381
395
|
const isObjectOrArray = value => Object.prototype.toString.call(value) === '[object Object]' || Object.prototype.toString.call(value) === '[object Array]';
|
|
382
|
-
return Object.keys(parameters).map(key => `${key}=${encodeURIComponent(isObjectOrArray(parameters[key]) ? JSON.stringify(parameters[key]) : parameters[key])}`).join('&');
|
|
396
|
+
return Object.keys(parameters).map(key => `${key}=${encodeURIComponent(isObjectOrArray(parameters[key]) ? JSON.stringify(parameters[key]) : parameters[key]).replaceAll('+', '%20')}`).join('&');
|
|
383
397
|
}
|
|
384
398
|
function serializeData(request, requestOptions) {
|
|
385
399
|
if (request.method === 'GET' || request.data === undefined && requestOptions.data === undefined) {
|
|
@@ -550,16 +564,13 @@ function createTransporter({
|
|
|
550
564
|
if (host === undefined) {
|
|
551
565
|
throw new RetryError(stackTraceWithoutCredentials(stackTrace));
|
|
552
566
|
}
|
|
553
|
-
let responseTimeout = requestOptions.
|
|
554
|
-
if (responseTimeout === undefined) {
|
|
555
|
-
responseTimeout = isRead ? timeouts.read : timeouts.write;
|
|
556
|
-
}
|
|
567
|
+
let responseTimeout = isRead ? requestOptions.timeouts?.read || timeouts.read : requestOptions.timeouts?.write || timeouts.write;
|
|
557
568
|
const payload = {
|
|
558
569
|
data,
|
|
559
570
|
headers,
|
|
560
571
|
method: request.method,
|
|
561
572
|
url: serializeUrl(host, request.path, queryParameters),
|
|
562
|
-
connectTimeout: getTimeout(timeoutsCount, timeouts.connect),
|
|
573
|
+
connectTimeout: getTimeout(timeoutsCount, requestOptions.timeouts?.connect || timeouts.connect),
|
|
563
574
|
responseTimeout: getTimeout(timeoutsCount, responseTimeout)
|
|
564
575
|
};
|
|
565
576
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createEchoRequester.d.ts","sourceRoot":"","sources":["../../src/createEchoRequester.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,SAAS,EAAY,MAAM,SAAS,CAAC;AAE7E,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"createEchoRequester.d.ts","sourceRoot":"","sources":["../../src/createEchoRequester.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,SAAS,EAAY,MAAM,SAAS,CAAC;AAE7E,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AA0CF,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,MAAY,GACb,EAAE,mBAAmB,GAAG,SAAS,CAuBjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTransporter.d.ts","sourceRoot":"","sources":["../../../src/transporter/createTransporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,kBAAkB,EAClB,WAAW,EAEZ,MAAM,UAAU,CAAC;AAsBlB,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,cAAc,GACf,EAAE,kBAAkB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"createTransporter.d.ts","sourceRoot":"","sources":["../../../src/transporter/createTransporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,kBAAkB,EAClB,WAAW,EAEZ,MAAM,UAAU,CAAC;AAsBlB,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,cAAc,GACf,EAAE,kBAAkB,GAAG,WAAW,CAgTlC"}
|
package/dist/src/types/host.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/types/host.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAEvC;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/types/host.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAEvC;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAE3B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAEpC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC;CAC3B,CAAC"}
|
|
@@ -9,7 +9,7 @@ export type RequestOptions = Pick<Request, 'cacheable'> & {
|
|
|
9
9
|
* the given timeout will be applied. But the transporter layer may
|
|
10
10
|
* increase this timeout if there is need for it.
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
timeouts?: Partial<Timeouts>;
|
|
13
13
|
/**
|
|
14
14
|
* Custom headers for the request. This headers are
|
|
15
15
|
* going to be merged the transporter headers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transporter.d.ts","sourceRoot":"","sources":["../../../src/types/transporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG;IACxD;;;;OAIG;IACH,
|
|
1
|
+
{"version":3,"file":"transporter.d.ts","sourceRoot":"","sources":["../../../src/types/transporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG;IACxD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,GAAG,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,YAAY,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,UAAU,EAAE,KAAK,CAAC;IAElB;;;;OAIG;IACH,SAAS,EAAE,SAAS,CAAC;IAErB;;;;;OAKG;IACH,aAAa,EAAE,KAAK,CAAC;IAErB;;;;OAIG;IACH,cAAc,EAAE,KAAK,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,KAAK,EAAE,IAAI,EAAE,CAAC;IAEd;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,mBAAmB,EAAE,eAAe,CAAC;IAErC;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG;IAC7C;;;OAGG;IACH,OAAO,EAAE,CAAC,SAAS,EACjB,WAAW,EAAE,OAAO,EACpB,kBAAkB,CAAC,EAAE,cAAc,KAChC,OAAO,CAAC,SAAS,CAAC,CAAC;CACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@algolia/client-common",
|
|
3
|
-
"version": "5.0.0-
|
|
3
|
+
"version": "5.0.0-beta.2",
|
|
4
4
|
"description": "Common package for the Algolia JavaScript API client.",
|
|
5
5
|
"repository": "algolia/algoliasearch-client-javascript",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,14 +20,14 @@
|
|
|
20
20
|
"test": "jest"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@babel/preset-env": "7.
|
|
24
|
-
"@babel/preset-typescript": "7.
|
|
25
|
-
"@types/jest": "29.5.
|
|
26
|
-
"@types/node": "20.11
|
|
23
|
+
"@babel/preset-env": "7.24.5",
|
|
24
|
+
"@babel/preset-typescript": "7.24.1",
|
|
25
|
+
"@types/jest": "29.5.12",
|
|
26
|
+
"@types/node": "20.12.11",
|
|
27
27
|
"jest": "29.7.0",
|
|
28
28
|
"jest-environment-jsdom": "29.7.0",
|
|
29
|
-
"ts-jest": "29.1.
|
|
30
|
-
"typescript": "5.
|
|
29
|
+
"ts-jest": "29.1.2",
|
|
30
|
+
"typescript": "5.4.5"
|
|
31
31
|
},
|
|
32
32
|
"engines": {
|
|
33
33
|
"node": ">= 14.0.0"
|
|
@@ -7,18 +7,33 @@ export type EchoRequesterParams = {
|
|
|
7
7
|
|
|
8
8
|
function getUrlParams({
|
|
9
9
|
host,
|
|
10
|
-
|
|
10
|
+
search,
|
|
11
11
|
pathname,
|
|
12
12
|
}: URL): Pick<EchoResponse, 'algoliaAgent' | 'host' | 'path' | 'searchParams'> {
|
|
13
|
-
const
|
|
13
|
+
const urlSearchParams = search.split('?');
|
|
14
|
+
if (urlSearchParams.length === 1) {
|
|
15
|
+
return {
|
|
16
|
+
host,
|
|
17
|
+
algoliaAgent: '',
|
|
18
|
+
searchParams: undefined,
|
|
19
|
+
path: pathname,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const splitSearchParams = urlSearchParams[1].split('&');
|
|
24
|
+
let algoliaAgent = '';
|
|
14
25
|
const searchParams: Record<string, string> = {};
|
|
15
26
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
if (splitSearchParams.length > 0) {
|
|
28
|
+
splitSearchParams.forEach((param) => {
|
|
29
|
+
const [key, value] = param.split('=');
|
|
30
|
+
if (key === 'x-algolia-agent') {
|
|
31
|
+
algoliaAgent = value;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
20
34
|
|
|
21
|
-
|
|
35
|
+
searchParams[key] = value;
|
|
36
|
+
});
|
|
22
37
|
}
|
|
23
38
|
|
|
24
39
|
return {
|
|
@@ -44,7 +59,7 @@ export function createEchoRequester({
|
|
|
44
59
|
data: request.data ? JSON.parse(request.data) : undefined,
|
|
45
60
|
path,
|
|
46
61
|
host,
|
|
47
|
-
algoliaAgent
|
|
62
|
+
algoliaAgent,
|
|
48
63
|
searchParams,
|
|
49
64
|
};
|
|
50
65
|
|
|
@@ -151,17 +151,14 @@ export function createTransporter({
|
|
|
151
151
|
throw new RetryError(stackTraceWithoutCredentials(stackTrace));
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
let responseTimeout = requestOptions.
|
|
155
|
-
if (responseTimeout === undefined) {
|
|
156
|
-
responseTimeout = isRead ? timeouts.read : timeouts.write;
|
|
157
|
-
}
|
|
154
|
+
let responseTimeout = isRead ? requestOptions.timeouts?.read || timeouts.read : requestOptions.timeouts?.write || timeouts.write;
|
|
158
155
|
|
|
159
156
|
const payload: EndRequest = {
|
|
160
157
|
data,
|
|
161
158
|
headers,
|
|
162
159
|
method: request.method,
|
|
163
160
|
url: serializeUrl(host, request.path, queryParameters),
|
|
164
|
-
connectTimeout: getTimeout(timeoutsCount, timeouts.connect),
|
|
161
|
+
connectTimeout: getTimeout(timeoutsCount, requestOptions.timeouts?.connect || timeouts.connect),
|
|
165
162
|
responseTimeout: getTimeout(timeoutsCount, responseTimeout),
|
|
166
163
|
};
|
|
167
164
|
|
|
@@ -30,8 +30,8 @@ export function serializeUrl(
|
|
|
30
30
|
queryParameters: QueryParameters
|
|
31
31
|
): string {
|
|
32
32
|
const queryParametersAsString = serializeQueryParameters(queryParameters);
|
|
33
|
-
let url = `${host.protocol}://${host.url}/${
|
|
34
|
-
path.charAt(0) === '/' ? path.
|
|
33
|
+
let url = `${host.protocol}://${host.url}${host.port ? `:${host.port}` : ''}/${
|
|
34
|
+
path.charAt(0) === '/' ? path.substring(1) : path
|
|
35
35
|
}`;
|
|
36
36
|
|
|
37
37
|
if (queryParametersAsString.length) {
|
|
@@ -53,7 +53,7 @@ export function serializeQueryParameters(parameters: QueryParameters): string {
|
|
|
53
53
|
isObjectOrArray(parameters[key])
|
|
54
54
|
? JSON.stringify(parameters[key])
|
|
55
55
|
: parameters[key]
|
|
56
|
-
)}`
|
|
56
|
+
).replaceAll('+', '%20')}`
|
|
57
57
|
)
|
|
58
58
|
.join('&');
|
|
59
59
|
}
|
package/src/types/host.ts
CHANGED
package/src/types/transporter.ts
CHANGED
|
@@ -11,7 +11,7 @@ export type RequestOptions = Pick<Request, 'cacheable'> & {
|
|
|
11
11
|
* the given timeout will be applied. But the transporter layer may
|
|
12
12
|
* increase this timeout if there is need for it.
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
timeouts?: Partial<Timeouts>;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Custom headers for the request. This headers are
|