Skip to content

Commit 3cea192

Browse files
authored
feat: add custom request function (#1312)
increase bundle size for lite package to 4.4ko
1 parent 7c38e64 commit 3cea192

7 files changed

Lines changed: 44 additions & 5 deletions

File tree

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102
},
103103
{
104104
"path": "packages/algoliasearch/dist/algoliasearch-lite.umd.js",
105-
"maxSize": "4.35KB"
105+
"maxSize": "4.4KB"
106106
},
107107
{
108108
"path": "packages/recommend/dist/recommend.umd.js",

‎packages/algoliasearch/src/builds/browser.ts‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import {
5757
copySettings,
5858
copySynonyms,
5959
createSearchClient,
60+
customRequest,
6061
deleteApiKey,
6162
DeleteApiKeyResponse,
6263
deleteBy,
@@ -190,7 +191,7 @@ import {
190191
import{LogLevelEnum}from'@algolia/logger-common';
191192
import{createConsoleLogger}from'@algolia/logger-console';
192193
import{createBrowserXhrRequester}from'@algolia/requester-browser-xhr';
193-
import{createUserAgent,RequestOptions}from'@algolia/transporter';
194+
import{createUserAgent,Request,RequestOptions}from'@algolia/transporter';
194195

195196
import{AlgoliaSearchOptions,InitAnalyticsOptions,InitPersonalizationOptions}from'../types';
196197

@@ -273,6 +274,7 @@ export default function algoliasearch(
273274
searchDictionaryEntries,
274275
setDictionarySettings,
275276
waitAppTask,
277+
customRequest,
276278
initIndex: base=>(indexName: string): SearchIndex=>{
277279
returninitIndex(base)(indexName,{
278280
methods: {
@@ -677,6 +679,10 @@ export type SearchClient = BaseSearchClient & {
677679
taskID: number,
678680
requestOptions?: RequestOptions
679681
)=>Readonly<Promise<TaskStatusResponse>>;
682+
readonlycustomRequest: <TResponse>(
683+
request: Request,
684+
requestOptions?: RequestOptions
685+
)=>Readonly<Promise<TResponse>>;
680686
readonlyinitAnalytics: (options?: InitAnalyticsOptions)=>AnalyticsClient;
681687
readonlyinitPersonalization: (options?: InitPersonalizationOptions)=>PersonalizationClient;
682688
/**

‎packages/algoliasearch/src/builds/browserLite.ts‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { createInMemoryCache } from '@algolia/cache-in-memory';
44
import{AuthMode,version}from'@algolia/client-common';
55
import{
66
createSearchClient,
7+
customRequest,
78
findAnswers,
89
FindAnswersOptions,
910
FindAnswersResponse,
@@ -25,7 +26,7 @@ import {
2526
import{LogLevelEnum}from'@algolia/logger-common';
2627
import{createConsoleLogger}from'@algolia/logger-console';
2728
import{createBrowserXhrRequester}from'@algolia/requester-browser-xhr';
28-
import{createUserAgent,RequestOptions}from'@algolia/transporter';
29+
import{createUserAgent,Request,RequestOptions}from'@algolia/transporter';
2930

3031
import{AlgoliaSearchOptions}from'../types';
3132

@@ -67,6 +68,7 @@ export default function algoliasearch(
6768
searchForFacetValues: multipleSearchForFacetValues,
6869
multipleQueries,
6970
multipleSearchForFacetValues,
71+
customRequest,
7072
initIndex: base=>(indexName: string): SearchIndex=>{
7173
returninitIndex(base)(indexName,{
7274
methods: { search, searchForFacetValues, findAnswers },
@@ -109,6 +111,10 @@ export type SearchClient = BaseSearchClient & {
109111
}>,
110112
requestOptions?: RequestOptions
111113
)=>Readonly<Promise<readonlySearchForFacetValuesResponse[]>>;
114+
readonlycustomRequest: <TResponse>(
115+
request: Request,
116+
requestOptions?: RequestOptions
117+
)=>Readonly<Promise<TResponse>>;
112118
};
113119

114120
export{WithoutCredentials,AlgoliaSearchOptions}from'../types';

‎packages/algoliasearch/src/builds/node.ts‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import {
5656
copySettings,
5757
copySynonyms,
5858
createSearchClient,
59+
customRequest,
5960
deleteApiKey,
6061
DeleteApiKeyResponse,
6162
deleteBy,
@@ -192,7 +193,7 @@ import {
192193
import{createNullLogger}from'@algolia/logger-common';
193194
import{Destroyable}from'@algolia/requester-common';
194195
import{createNodeHttpRequester}from'@algolia/requester-node-http';
195-
import{createUserAgent,RequestOptions}from'@algolia/transporter';
196+
import{createUserAgent,Request,RequestOptions}from'@algolia/transporter';
196197

197198
import{AlgoliaSearchOptions,InitAnalyticsOptions,InitPersonalizationOptions}from'../types';
198199

@@ -276,6 +277,7 @@ export default function algoliasearch(
276277
searchDictionaryEntries,
277278
setDictionarySettings,
278279
waitAppTask,
280+
customRequest,
279281
initIndex: base=>(indexName: string): SearchIndex=>{
280282
returninitIndex(base)(indexName,{
281283
methods: {
@@ -685,6 +687,10 @@ export type SearchClient = BaseSearchClient & {
685687
taskID: number,
686688
requestOptions?: RequestOptions
687689
)=>Readonly<Promise<TaskStatusResponse>>;
690+
readonlycustomRequest: <TResponse>(
691+
request: Request,
692+
requestOptions?: RequestOptions
693+
)=>Readonly<Promise<TResponse>>;
688694
readonlyinitAnalytics: (options?: InitAnalyticsOptions)=>AnalyticsClient;
689695
readonlyinitPersonalization: (options?: InitPersonalizationOptions)=>PersonalizationClient;
690696
/**

‎packages/client-search/src/__tests__/integration/search.test.ts‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import{createObjectNotFoundError,SearchResponse}from'../..';
1+
import{createObjectNotFoundError,ListApiKeysResponse,SearchResponse}from'../..';
22
import{waitResponses}from'../../../../client-common/src/__tests__/helpers';
33
import{TestSuite}from'../../../../client-common/src/__tests__/TestSuite';
44

@@ -263,3 +263,9 @@ test('decompounding at query time', async () => {
263263

264264
expect(results.explain).toMatchObject(explain);
265265
});
266+
267+
it('allows custom request',async()=>{
268+
constclient=testSuite.makeSearchClient();
269+
constres=awaitclient.customRequest<ListApiKeysResponse>({method: 'GET',path: '/1/keys'});
270+
expect(res.keys.length).toBeGreaterThan(0);
271+
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import{MethodEnum}from'@algolia/requester-common';
2+
import{Request,RequestOptions}from'@algolia/transporter';
3+
4+
import{SearchClient}from'../..';
5+
6+
exportconstcustomRequest=<TResponse=any>(base: SearchClient)=>{
7+
return(request: Request,requestOptions?: RequestOptions): Readonly<Promise<TResponse>>=>{
8+
if(request.method===MethodEnum.Get){
9+
returnbase.transporter.read(request,requestOptions);
10+
}
11+
12+
returnbase.transporter.write(request,requestOptions);
13+
};
14+
};

‎packages/client-search/src/methods/client/index.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export * from './copyIndex';
1010
export*from'./copyRules';
1111
export*from'./copySettings';
1212
export*from'./copySynonyms';
13+
export*from'./customRequest';
1314
export*from'./deleteApiKey';
1415
export*from'./deleteDictionaryEntries';
1516
export*from'./generateSecuredApiKey';

0 commit comments

Comments
 (0)