Skip to content

Commit 7366a58

Browse files
committed
fix JavaScript echoRequester
1 parent 9bdedf1 commit 7366a58

File tree

5 files changed

+36
-42
lines changed

5 files changed

+36
-42
lines changed
Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { EchoResponse, EndRequest, Request, Response } from './types';
1+
import type { EchoResponse, EndRequest, Requester, Response } from './types';
22

33
export type EchoRequesterParams = {
44
getURL: (url: string) => URL;
@@ -8,7 +8,8 @@ export type EchoRequesterParams = {
88
function getUrlParams({
99
host,
1010
searchParams: urlSearchParams,
11-
}: URL): Pick<EchoResponse, 'algoliaAgent' | 'host' | 'searchParams'> {
11+
pathname,
12+
}: URL): Pick<EchoResponse, 'algoliaAgent' | 'host' | 'path' | 'searchParams'> {
1213
const algoliaAgent = urlSearchParams.get('x-algolia-agent') || '';
1314
const searchParams = {};
1415

@@ -25,39 +26,34 @@ function getUrlParams({
2526
algoliaAgent,
2627
searchParams:
2728
Object.keys(searchParams).length === 0 ? undefined : searchParams,
29+
path: pathname,
2830
};
2931
}
3032

31-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
3233
export function createEchoRequester({
3334
getURL,
3435
status = 200,
35-
}: EchoRequesterParams) {
36-
function send(
37-
{ headers, url, connectTimeout, responseTimeout }: EndRequest,
38-
{ data, ...originalRequest }: Request
39-
): Promise<Response> {
40-
const { host, searchParams, algoliaAgent } = getUrlParams(getURL(url));
41-
const originalData =
42-
data && Object.keys(data).length > 0 ? data : undefined;
36+
}: EchoRequesterParams): Requester {
37+
function send(request: EndRequest): Promise<Response> {
38+
const { host, searchParams, algoliaAgent, path } = getUrlParams(
39+
getURL(request.url)
40+
);
41+
42+
const content: EchoResponse = {
43+
...request,
44+
data: request.data ? JSON.parse(request.data) : undefined,
45+
path,
46+
host,
47+
algoliaAgent: encodeURI(algoliaAgent),
48+
searchParams,
49+
};
4350

4451
return Promise.resolve({
45-
content: JSON.stringify({
46-
...originalRequest,
47-
host,
48-
headers,
49-
connectTimeout,
50-
responseTimeout,
51-
algoliaAgent: encodeURI(algoliaAgent),
52-
searchParams,
53-
data: originalData,
54-
}),
52+
content: JSON.stringify(content),
5553
isTimedOut: false,
5654
status,
5755
});
5856
}
5957

6058
return { send };
6159
}
62-
63-
export type EchoRequester = ReturnType<typeof createEchoRequester>;

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,9 @@ export type Requester = {
4242
send: (request: EndRequest, originalRequest: Request) => Promise<Response>;
4343
};
4444

45-
export type EchoResponse = Request & {
46-
connectTimeout: number;
47-
host: string;
48-
headers: Headers;
49-
responseTimeout: number;
50-
algoliaAgent: string;
51-
searchParams?: Record<string, string>;
52-
};
45+
export type EchoResponse = Omit<EndRequest, 'data'> &
46+
Pick<Request, 'data' | 'path'> & {
47+
host: string;
48+
algoliaAgent: string;
49+
searchParams?: Record<string, string>;
50+
};
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { createEchoRequester } from '@algolia/client-common';
2-
import type { EchoRequester } from '@algolia/client-common';
2+
import type { Requester } from '@algolia/client-common';
33

4-
export function echoRequester(status: number = 200): EchoRequester {
4+
export function echoRequester(status: number = 200): Requester {
55
return createEchoRequester({ getURL: (url: string) => new URL(url), status });
66
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { URL } from 'url';
22

33
import { createEchoRequester } from '@algolia/client-common';
4-
import type { EchoRequester } from '@algolia/client-common';
4+
import type { Requester } from '@algolia/client-common';
55

6-
export function echoRequester(status: number = 200): EchoRequester {
6+
export function echoRequester(status: number = 200): Requester {
77
return createEchoRequester({ getURL: (url: string) => new URL(url), status });
88
}

tests/output/javascript/yarn.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,6 @@ __metadata:
3535
languageName: node
3636
linkType: soft
3737

38-
"@algolia/client-predict@link:../../../clients/algoliasearch-client-javascript/packages/client-predict::locator=javascript-tests%40workspace%3A.":
39-
version: 0.0.0-use.local
40-
resolution: "@algolia/client-predict@link:../../../clients/algoliasearch-client-javascript/packages/client-predict::locator=javascript-tests%40workspace%3A."
41-
languageName: node
42-
linkType: soft
43-
4438
"@algolia/client-query-suggestions@link:../../../clients/algoliasearch-client-javascript/packages/client-query-suggestions::locator=javascript-tests%40workspace%3A.":
4539
version: 0.0.0-use.local
4640
resolution: "@algolia/client-query-suggestions@link:../../../clients/algoliasearch-client-javascript/packages/client-query-suggestions::locator=javascript-tests%40workspace%3A."
@@ -59,6 +53,12 @@ __metadata:
5953
languageName: node
6054
linkType: soft
6155

56+
"@algolia/predict@link:../../../clients/algoliasearch-client-javascript/packages/predict::locator=javascript-tests%40workspace%3A.":
57+
version: 0.0.0-use.local
58+
resolution: "@algolia/predict@link:../../../clients/algoliasearch-client-javascript/packages/predict::locator=javascript-tests%40workspace%3A."
59+
languageName: node
60+
linkType: soft
61+
6262
"@algolia/recommend@link:../../../clients/algoliasearch-client-javascript/packages/recommend::locator=javascript-tests%40workspace%3A.":
6363
version: 0.0.0-use.local
6464
resolution: "@algolia/recommend@link:../../../clients/algoliasearch-client-javascript/packages/recommend::locator=javascript-tests%40workspace%3A."
@@ -2120,10 +2120,10 @@ __metadata:
21202120
"@algolia/client-common": "link:../../../clients/algoliasearch-client-javascript/packages/client-common"
21212121
"@algolia/client-insights": "link:../../../clients/algoliasearch-client-javascript/packages/client-insights"
21222122
"@algolia/client-personalization": "link:../../../clients/algoliasearch-client-javascript/packages/client-personalization"
2123-
"@algolia/client-predict": "link:../../../clients/algoliasearch-client-javascript/packages/client-predict"
21242123
"@algolia/client-query-suggestions": "link:../../../clients/algoliasearch-client-javascript/packages/client-query-suggestions"
21252124
"@algolia/client-search": "link:../../../clients/algoliasearch-client-javascript/packages/client-search"
21262125
"@algolia/client-sources": "link:../../../clients/algoliasearch-client-javascript/packages/client-sources"
2126+
"@algolia/predict": "link:../../../clients/algoliasearch-client-javascript/packages/predict"
21272127
"@algolia/recommend": "link:../../../clients/algoliasearch-client-javascript/packages/recommend"
21282128
"@algolia/requester-node-http": "link:../../../clients/algoliasearch-client-javascript/packages/requester-node-http"
21292129
"@types/jest": 28.1.1

0 commit comments

Comments
 (0)