Skip to content

Commit f05c7d9

Browse files
fix(javascript): type definition and template cleanup (generated)
algolia/api-clients-automation#3656 Co-authored-by: algolia-bot <[email protected]> Co-authored-by: Clément Vannicatte <[email protected]>
1 parent d742815 commit f05c7d9

File tree

37 files changed

+729
-839
lines changed

37 files changed

+729
-839
lines changed

packages/algoliasearch/builds/browser.ts

Lines changed: 43 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -4,100 +4,75 @@ import type { AbtestingClient, Region as AbtestingRegion } from '@algolia/client
44
import { abtestingClient } from '@algolia/client-abtesting';
55
import type { AnalyticsClient, Region as AnalyticsRegion } from '@algolia/client-analytics';
66
import { analyticsClient } from '@algolia/client-analytics';
7-
import {
8-
DEFAULT_CONNECT_TIMEOUT_BROWSER,
9-
DEFAULT_READ_TIMEOUT_BROWSER,
10-
DEFAULT_WRITE_TIMEOUT_BROWSER,
11-
createBrowserLocalStorageCache,
12-
createFallbackableCache,
13-
createMemoryCache,
14-
} from '@algolia/client-common';
157
import type { ClientOptions } from '@algolia/client-common';
168
import type { PersonalizationClient, Region as PersonalizationRegion } from '@algolia/client-personalization';
179
import { personalizationClient } from '@algolia/client-personalization';
10+
import type { SearchClient } from '@algolia/client-search';
1811
import { searchClient } from '@algolia/client-search';
1912
import type { RecommendClient } from '@algolia/recommend';
2013
import { recommendClient } from '@algolia/recommend';
21-
import { createXhrRequester } from '@algolia/requester-browser-xhr';
2214

2315
import type { InitClientOptions, InitClientRegion } from './models';
24-
import { apiClientVersion } from './models';
2516

2617
export * from './models';
2718

28-
/**
29-
* The client type.
30-
*/
31-
export type Algoliasearch = ReturnType<typeof algoliasearch>;
19+
export type Algoliasearch = SearchClient & {
20+
initRecommend: (initOptions: InitClientOptions) => RecommendClient;
21+
initAnalytics: (initOptions: InitClientOptions & InitClientRegion<AnalyticsRegion>) => AnalyticsClient;
22+
initAbtesting: (initOptions: InitClientOptions & InitClientRegion<AbtestingRegion>) => AbtestingClient;
23+
initPersonalization: (
24+
initOptions: InitClientOptions & Required<InitClientRegion<PersonalizationRegion>>,
25+
) => PersonalizationClient;
26+
};
3227

33-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
34-
export function algoliasearch(appId: string, apiKey: string, options?: ClientOptions) {
28+
export function algoliasearch(appId: string, apiKey: string, options?: ClientOptions): Algoliasearch {
3529
if (!appId || typeof appId !== 'string') {
3630
throw new Error('`appId` is missing.');
3731
}
3832

3933
if (!apiKey || typeof apiKey !== 'string') {
4034
throw new Error('`apiKey` is missing.');
4135
}
42-
function initRecommend(initOptions: InitClientOptions = {}): RecommendClient {
43-
return recommendClient(initOptions.appId || appId, initOptions.apiKey || apiKey, initOptions.options);
44-
}
45-
46-
function initAnalytics(initOptions: InitClientOptions & InitClientRegion<AnalyticsRegion> = {}): AnalyticsClient {
47-
return analyticsClient(
48-
initOptions.appId || appId,
49-
initOptions.apiKey || apiKey,
50-
initOptions.region,
51-
initOptions.options,
52-
);
53-
}
54-
55-
function initAbtesting(initOptions: InitClientOptions & InitClientRegion<AbtestingRegion> = {}): AbtestingClient {
56-
return abtestingClient(
57-
initOptions.appId || appId,
58-
initOptions.apiKey || apiKey,
59-
initOptions.region,
60-
initOptions.options,
61-
);
62-
}
63-
64-
function initPersonalization(
65-
initOptions: InitClientOptions & Required<InitClientRegion<PersonalizationRegion>>,
66-
): PersonalizationClient {
67-
return personalizationClient(
68-
initOptions.appId || appId,
69-
initOptions.apiKey || apiKey,
70-
initOptions.region,
71-
initOptions.options,
72-
);
73-
}
7436

7537
return {
76-
...searchClient(appId, apiKey, {
77-
timeouts: {
78-
connect: DEFAULT_CONNECT_TIMEOUT_BROWSER,
79-
read: DEFAULT_READ_TIMEOUT_BROWSER,
80-
write: DEFAULT_WRITE_TIMEOUT_BROWSER,
81-
},
82-
requester: createXhrRequester(),
83-
algoliaAgents: [{ segment: 'Browser' }],
84-
authMode: 'WithinQueryParameters',
85-
responsesCache: createMemoryCache(),
86-
requestsCache: createMemoryCache({ serializable: false }),
87-
hostsCache: createFallbackableCache({
88-
caches: [createBrowserLocalStorageCache({ key: `${apiClientVersion}-${appId}` }), createMemoryCache()],
89-
}),
90-
...options,
91-
}),
38+
...searchClient(appId, apiKey, options),
9239
/**
9340
* Get the value of the `algoliaAgent`, used by our libraries internally and telemetry system.
9441
*/
9542
get _ua(): string {
9643
return this.transporter.algoliaAgent.value;
9744
},
98-
initAbtesting,
99-
initAnalytics,
100-
initPersonalization,
101-
initRecommend,
45+
initRecommend: (initOptions: InitClientOptions = {}): RecommendClient => {
46+
return recommendClient(initOptions.appId || appId, initOptions.apiKey || apiKey, initOptions.options);
47+
},
48+
49+
initAnalytics: (initOptions: InitClientOptions & InitClientRegion<AnalyticsRegion> = {}): AnalyticsClient => {
50+
return analyticsClient(
51+
initOptions.appId || appId,
52+
initOptions.apiKey || apiKey,
53+
initOptions.region,
54+
initOptions.options,
55+
);
56+
},
57+
58+
initAbtesting: (initOptions: InitClientOptions & InitClientRegion<AbtestingRegion> = {}): AbtestingClient => {
59+
return abtestingClient(
60+
initOptions.appId || appId,
61+
initOptions.apiKey || apiKey,
62+
initOptions.region,
63+
initOptions.options,
64+
);
65+
},
66+
67+
initPersonalization: (
68+
initOptions: InitClientOptions & Required<InitClientRegion<PersonalizationRegion>>,
69+
): PersonalizationClient => {
70+
return personalizationClient(
71+
initOptions.appId || appId,
72+
initOptions.apiKey || apiKey,
73+
initOptions.region,
74+
initOptions.options,
75+
);
76+
},
10277
};
10378
}

packages/algoliasearch/builds/models.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
22

3-
import type { Region as ABTestingRegion } from '@algolia/client-abtesting';
3+
import type { Region as AbTestingRegion } from '@algolia/client-abtesting';
44
import type { Region as AnalyticsRegion } from '@algolia/client-analytics';
55
import type { ClientOptions } from '@algolia/client-common';
66
import type {
@@ -79,7 +79,7 @@ import type {
7979
} from '@algolia/client-search';
8080
import { apiClientVersion } from '@algolia/client-search';
8181

82-
type Region = ABTestingRegion | AnalyticsRegion;
82+
type Region = AbTestingRegion | AnalyticsRegion;
8383

8484
export * from '@algolia/client-search';
8585
export * from '@algolia/recommend';
@@ -161,7 +161,7 @@ export {
161161
TypoToleranceEnum,
162162
Value,
163163
AnalyticsRegion,
164-
ABTestingRegion,
164+
AbTestingRegion,
165165
Region,
166166
apiClientVersion,
167167
};

packages/algoliasearch/builds/node.ts

Lines changed: 39 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,161 +1,78 @@
11
// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
22

3-
import { createHmac } from 'node:crypto';
4-
53
import type { AbtestingClient, Region as AbtestingRegion } from '@algolia/client-abtesting';
64
import { abtestingClient } from '@algolia/client-abtesting';
75
import type { AnalyticsClient, Region as AnalyticsRegion } from '@algolia/client-analytics';
86
import { analyticsClient } from '@algolia/client-analytics';
9-
import {
10-
DEFAULT_CONNECT_TIMEOUT_NODE,
11-
DEFAULT_READ_TIMEOUT_NODE,
12-
DEFAULT_WRITE_TIMEOUT_NODE,
13-
createMemoryCache,
14-
createNullCache,
15-
serializeQueryParameters,
16-
} from '@algolia/client-common';
177
import type { ClientOptions } from '@algolia/client-common';
188
import type { PersonalizationClient, Region as PersonalizationRegion } from '@algolia/client-personalization';
199
import { personalizationClient } from '@algolia/client-personalization';
10+
import type { SearchClient } from '@algolia/client-search';
2011
import { searchClient } from '@algolia/client-search';
2112
import type { RecommendClient } from '@algolia/recommend';
2213
import { recommendClient } from '@algolia/recommend';
23-
import { createHttpRequester } from '@algolia/requester-node-http';
2414

25-
import type {
26-
InitClientOptions,
27-
InitClientRegion,
28-
GenerateSecuredApiKeyOptions,
29-
GetSecuredApiKeyRemainingValidityOptions,
30-
} from './models';
15+
import type { InitClientOptions, InitClientRegion } from './models';
3116

3217
export * from './models';
3318

34-
/**
35-
* The client type.
36-
*/
37-
export type Algoliasearch = ReturnType<typeof algoliasearch>;
19+
export type Algoliasearch = SearchClient & {
20+
initRecommend: (initOptions: InitClientOptions) => RecommendClient;
21+
initAnalytics: (initOptions: InitClientOptions & InitClientRegion<AnalyticsRegion>) => AnalyticsClient;
22+
initAbtesting: (initOptions: InitClientOptions & InitClientRegion<AbtestingRegion>) => AbtestingClient;
23+
initPersonalization: (
24+
initOptions: InitClientOptions & Required<InitClientRegion<PersonalizationRegion>>,
25+
) => PersonalizationClient;
26+
};
3827

39-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
40-
export function algoliasearch(appId: string, apiKey: string, options?: ClientOptions) {
28+
export function algoliasearch(appId: string, apiKey: string, options?: ClientOptions): Algoliasearch {
4129
if (!appId || typeof appId !== 'string') {
4230
throw new Error('`appId` is missing.');
4331
}
4432

4533
if (!apiKey || typeof apiKey !== 'string') {
4634
throw new Error('`apiKey` is missing.');
4735
}
48-
function initRecommend(initOptions: InitClientOptions = {}): RecommendClient {
49-
return recommendClient(initOptions.appId || appId, initOptions.apiKey || apiKey, initOptions.options);
50-
}
51-
52-
function initAnalytics(initOptions: InitClientOptions & InitClientRegion<AnalyticsRegion> = {}): AnalyticsClient {
53-
return analyticsClient(
54-
initOptions.appId || appId,
55-
initOptions.apiKey || apiKey,
56-
initOptions.region,
57-
initOptions.options,
58-
);
59-
}
60-
61-
function initAbtesting(initOptions: InitClientOptions & InitClientRegion<AbtestingRegion> = {}): AbtestingClient {
62-
return abtestingClient(
63-
initOptions.appId || appId,
64-
initOptions.apiKey || apiKey,
65-
initOptions.region,
66-
initOptions.options,
67-
);
68-
}
69-
70-
function initPersonalization(
71-
initOptions: InitClientOptions & Required<InitClientRegion<PersonalizationRegion>>,
72-
): PersonalizationClient {
73-
return personalizationClient(
74-
initOptions.appId || appId,
75-
initOptions.apiKey || apiKey,
76-
initOptions.region,
77-
initOptions.options,
78-
);
79-
}
8036

8137
return {
82-
...searchClient(appId, apiKey, {
83-
timeouts: {
84-
connect: DEFAULT_CONNECT_TIMEOUT_NODE,
85-
read: DEFAULT_READ_TIMEOUT_NODE,
86-
write: DEFAULT_WRITE_TIMEOUT_NODE,
87-
},
88-
requester: createHttpRequester(),
89-
algoliaAgents: [{ segment: 'Node.js', version: process.versions.node }],
90-
responsesCache: createNullCache(),
91-
requestsCache: createNullCache(),
92-
hostsCache: createMemoryCache(),
93-
...options,
94-
}),
38+
...searchClient(appId, apiKey, options),
9539
/**
9640
* Get the value of the `algoliaAgent`, used by our libraries internally and telemetry system.
9741
*/
9842
get _ua(): string {
9943
return this.transporter.algoliaAgent.value;
10044
},
101-
initAbtesting,
102-
initAnalytics,
103-
initPersonalization,
104-
initRecommend,
105-
/**
106-
* Helper: Generates a secured API key based on the given `parentApiKey` and given `restrictions`.
107-
*
108-
* @summary Helper: Generates a secured API key based on the given `parentApiKey` and given `restrictions`.
109-
* @param generateSecuredApiKey - The `generateSecuredApiKey` object.
110-
* @param generateSecuredApiKey.parentApiKey - The base API key from which to generate the new secured one.
111-
* @param generateSecuredApiKey.restrictions - A set of properties defining the restrictions of the secured API key.
112-
*/
113-
generateSecuredApiKey({ parentApiKey, restrictions = {} }: GenerateSecuredApiKeyOptions): string {
114-
let mergedRestrictions = restrictions;
115-
if (restrictions.searchParams) {
116-
// merge searchParams with the root restrictions
117-
mergedRestrictions = {
118-
...restrictions,
119-
...restrictions.searchParams,
120-
};
121-
122-
delete mergedRestrictions.searchParams;
123-
}
124-
125-
mergedRestrictions = Object.keys(mergedRestrictions)
126-
.sort()
127-
.reduce(
128-
(acc, key) => {
129-
// eslint-disable-next-line no-param-reassign
130-
acc[key] = (mergedRestrictions as any)[key];
131-
return acc;
132-
},
133-
{} as Record<string, unknown>,
134-
);
135-
136-
const queryParameters = serializeQueryParameters(mergedRestrictions);
137-
return Buffer.from(
138-
createHmac('sha256', parentApiKey).update(queryParameters).digest('hex') + queryParameters,
139-
).toString('base64');
45+
initRecommend: (initOptions: InitClientOptions = {}): RecommendClient => {
46+
return recommendClient(initOptions.appId || appId, initOptions.apiKey || apiKey, initOptions.options);
14047
},
14148

142-
/**
143-
* Helper: Retrieves the remaining validity of the previous generated `securedApiKey`, the `ValidUntil` parameter must have been provided.
144-
*
145-
* @summary Helper: Retrieves the remaining validity of the previous generated `secured_api_key`, the `ValidUntil` parameter must have been provided.
146-
* @param getSecuredApiKeyRemainingValidity - The `getSecuredApiKeyRemainingValidity` object.
147-
* @param getSecuredApiKeyRemainingValidity.securedApiKey - The secured API key generated with the `generateSecuredApiKey` method.
148-
*/
149-
getSecuredApiKeyRemainingValidity({ securedApiKey }: GetSecuredApiKeyRemainingValidityOptions): number {
150-
const decodedString = Buffer.from(securedApiKey, 'base64').toString('ascii');
151-
const regex = /validUntil=(\d+)/;
152-
const match = decodedString.match(regex);
49+
initAnalytics: (initOptions: InitClientOptions & InitClientRegion<AnalyticsRegion> = {}): AnalyticsClient => {
50+
return analyticsClient(
51+
initOptions.appId || appId,
52+
initOptions.apiKey || apiKey,
53+
initOptions.region,
54+
initOptions.options,
55+
);
56+
},
15357

154-
if (match === null) {
155-
throw new Error('validUntil not found in given secured api key.');
156-
}
58+
initAbtesting: (initOptions: InitClientOptions & InitClientRegion<AbtestingRegion> = {}): AbtestingClient => {
59+
return abtestingClient(
60+
initOptions.appId || appId,
61+
initOptions.apiKey || apiKey,
62+
initOptions.region,
63+
initOptions.options,
64+
);
65+
},
15766

158-
return parseInt(match[1], 10) - Math.round(new Date().getTime() / 1000);
67+
initPersonalization: (
68+
initOptions: InitClientOptions & Required<InitClientRegion<PersonalizationRegion>>,
69+
): PersonalizationClient => {
70+
return personalizationClient(
71+
initOptions.appId || appId,
72+
initOptions.apiKey || apiKey,
73+
initOptions.region,
74+
initOptions.options,
75+
);
15976
},
16077
};
16178
}

packages/algoliasearch/lite/builds/browser.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,12 @@ import { createXhrRequester } from '@algolia/requester-browser-xhr';
1313

1414
import { createLiteClient, apiClientVersion } from '../src/liteClient';
1515

16+
export type LiteClient = ReturnType<typeof createLiteClient>;
17+
1618
export { apiClientVersion } from '../src/liteClient';
1719
export * from '../model';
1820

19-
/**
20-
* The client type.
21-
*/
22-
export type LiteClient = ReturnType<typeof liteClient>;
23-
24-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
25-
export function liteClient(appId: string, apiKey: string, options?: ClientOptions) {
21+
export function liteClient(appId: string, apiKey: string, options?: ClientOptions): LiteClient {
2622
if (!appId || typeof appId !== 'string') {
2723
throw new Error('`appId` is missing.');
2824
}

0 commit comments

Comments
 (0)