Skip to content

Commit 407c82e

Browse files
committed
chore: dynamic template dependencies
1 parent d0f06d1 commit 407c82e

File tree

8 files changed

+87
-83
lines changed

8 files changed

+87
-83
lines changed

clients/algoliasearch-client-javascript/yarn.lock

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ __metadata:
5454
languageName: unknown
5555
linkType: soft
5656

57-
"@algolia/client-insights@workspace:packages/client-insights":
57+
"@algolia/client-insights@npm:5.8.0, @algolia/client-insights@workspace:packages/client-insights":
5858
version: 0.0.0-use.local
5959
resolution: "@algolia/client-insights@workspace:packages/client-insights"
6060
dependencies:
@@ -88,7 +88,7 @@ __metadata:
8888
languageName: unknown
8989
linkType: soft
9090

91-
"@algolia/client-query-suggestions@workspace:packages/client-query-suggestions":
91+
"@algolia/client-query-suggestions@npm:5.8.0, @algolia/client-query-suggestions@workspace:packages/client-query-suggestions":
9292
version: 0.0.0-use.local
9393
resolution: "@algolia/client-query-suggestions@workspace:packages/client-query-suggestions"
9494
dependencies:
@@ -122,7 +122,7 @@ __metadata:
122122
languageName: unknown
123123
linkType: soft
124124

125-
"@algolia/ingestion@workspace:packages/ingestion":
125+
"@algolia/ingestion@npm:1.8.0, @algolia/ingestion@workspace:packages/ingestion":
126126
version: 0.0.0-use.local
127127
resolution: "@algolia/ingestion@workspace:packages/ingestion"
128128
dependencies:
@@ -155,7 +155,7 @@ __metadata:
155155
languageName: unknown
156156
linkType: soft
157157

158-
"@algolia/monitoring@workspace:packages/monitoring":
158+
"@algolia/monitoring@npm:1.8.0, @algolia/monitoring@workspace:packages/monitoring":
159159
version: 0.0.0-use.local
160160
resolution: "@algolia/monitoring@workspace:packages/monitoring"
161161
dependencies:
@@ -2088,8 +2088,12 @@ __metadata:
20882088
"@algolia/client-abtesting": "npm:5.8.0"
20892089
"@algolia/client-analytics": "npm:5.8.0"
20902090
"@algolia/client-common": "npm:5.8.0"
2091+
"@algolia/client-insights": "npm:5.8.0"
20912092
"@algolia/client-personalization": "npm:5.8.0"
2093+
"@algolia/client-query-suggestions": "npm:5.8.0"
20922094
"@algolia/client-search": "npm:5.8.0"
2095+
"@algolia/ingestion": "npm:1.8.0"
2096+
"@algolia/monitoring": "npm:1.8.0"
20932097
"@algolia/recommend": "npm:5.8.0"
20942098
"@algolia/requester-browser-xhr": "npm:5.8.0"
20952099
"@algolia/requester-fetch": "npm:5.8.0"

generators/src/main/java/com/algolia/codegen/AlgoliaJavascriptGenerator.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -148,16 +148,14 @@ public static String getPackageName(String client) throws ConfigException {
148148
private void setDefaultGeneratorOptions() {
149149
String clientName = CLIENT + Helpers.API_SUFFIX;
150150
String packageName = getPackageName((String) additionalProperties.get("client"));
151-
List<String> clientList = Helpers.getClientListForLanguage("javascript");
152-
clientList.removeIf(c -> c.equals("algoliasearch"));
153151

154152
additionalProperties.put("apiName", CLIENT);
155153
additionalProperties.put("clientName", clientName);
156154
additionalProperties.put("algoliaAgent", Helpers.capitalize(CLIENT));
157155
additionalProperties.put("isSearchClient", CLIENT.equals("search") || isAlgoliasearchClient);
158156
additionalProperties.put("isIngestionClient", CLIENT.equals("ingestion"));
159157
additionalProperties.put("isAlgoliasearchClient", isAlgoliasearchClient);
160-
additionalProperties.put("isAvailableInAlgoliasearch", clientList.contains(CLIENT));
158+
additionalProperties.put("isAvailableInAlgoliasearch", !CLIENT.equals("algoliasearch"));
161159
additionalProperties.put("packageVersion", Helpers.getPackageJsonVersion(packageName));
162160
additionalProperties.put("packageName", packageName);
163161
additionalProperties.put("npmPackageName", isAlgoliasearchClient ? packageName : "@algolia/" + packageName);
@@ -168,14 +166,18 @@ private void setDefaultGeneratorOptions() {
168166
List<Map<String, Object>> packages = Helpers.getClientConfigList("javascript", "clients");
169167
for (Map<String, Object> pkg : packages) {
170168
String name = ((String) pkg.get("output")).replace("clients/algoliasearch-client-javascript/packages/", "");
171-
if (name.equals("algoliasearch")) {
169+
if (name.contains("search")) {
172170
continue;
173171
}
174172

175173
var dependency = new HashMap<String, Object>();
176-
dependency.put("name", name);
177-
dependency.put("package", "@algolia/" + name);
178-
dependency.put("version", Helpers.getPackageJsonVersion(name));
174+
dependency.put("dependencyName", Helpers.createClientName((String) pkg.get("name"), "javascript"));
175+
dependency.put("dependencyPackage", "@algolia/" + name);
176+
dependency.put("dependencyVersion", Helpers.getPackageJsonVersion(name));
177+
dependency.put(
178+
"dependencyHasRegionalHosts",
179+
!name.contains("search") && !name.contains("recommend") && !name.contains("monitoring")
180+
);
179181

180182
dependencies.add(dependency);
181183
}
Lines changed: 18 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
11
// {{{generationBanner}}}
22

33
import type { ClientOptions } from '@algolia/client-common';
4-
import type { AbtestingClient, Region as AbtestingRegion } from "@algolia/client-abtesting"
5-
import type { AnalyticsClient, Region as AnalyticsRegion } from "@algolia/client-analytics"
6-
import type { PersonalizationClient, Region as PersonalizationRegion } from "@algolia/client-personalization"
7-
import type { RecommendClient } from "@algolia/recommend"
8-
import type { SearchClient } from "@algolia/client-search"
94

10-
import { abtestingClient } from '@algolia/client-abtesting';
11-
import { analyticsClient } from '@algolia/client-analytics';
12-
import { personalizationClient } from '@algolia/client-personalization';
13-
import { searchClient } from '@algolia/client-search';
14-
import { recommendClient } from '@algolia/recommend';
5+
{{#dependencies}}
6+
import { {{{dependencyName}}}Client } from '{{{dependencyPackage}}}';
7+
import type { {{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}Client } from '{{{dependencyPackage}}}';
8+
{{/dependencies}}
159

1610
import type {
1711
InitClientOptions,
18-
InitClientRegion,
12+
{{#dependencies}}
13+
{{#dependencyHasRegionalHosts}}
14+
{{#lambda.titlecase}}{{{dependencyName}}}Region{{/lambda.titlecase}},
15+
{{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}},
16+
{{/dependencyHasRegionalHosts}}
17+
{{/dependencies}}
1918
} from './models';
2019

2120
export * from './models';
2221

2322
export type Algoliasearch = SearchClient & {
24-
initRecommend: (initOptions?: InitClientOptions)=> RecommendClient;
25-
initAnalytics: (initOptions?: InitClientOptions & InitClientRegion<AnalyticsRegion>)=> AnalyticsClient;
26-
initAbtesting: (initOptions?: InitClientOptions & InitClientRegion<AbtestingRegion>)=> AbtestingClient;
27-
initPersonalization: (initOptions: InitClientOptions & Required<InitClientRegion<PersonalizationRegion>>)=> PersonalizationClient;
23+
{{#dependencies}}
24+
init{{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}: (initOptions: InitClientOptions {{#dependencyHasRegionalHosts}}& {{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}}{{/dependencyHasRegionalHosts}}) => {{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}Client;
25+
{{/dependencies}}
2826
};
2927

3028
export function algoliasearch(appId: string, apiKey: string, options?: ClientOptions): Algoliasearch {
@@ -40,43 +38,19 @@ export function algoliasearch(appId: string, apiKey: string, options?: ClientOpt
4038

4139
return {
4240
...client,
41+
4342
/**
4443
* Get the value of the `algoliaAgent`, used by our libraries internally and telemetry system.
4544
*/
4645
get _ua(): string {
4746
return client.transporter.algoliaAgent.value;
4847
},
49-
initRecommend: (initOptions: InitClientOptions = {}): RecommendClient => {
50-
return recommendClient(initOptions.appId || appId, initOptions.apiKey || apiKey, initOptions.options);
51-
},
5248

53-
initAnalytics: (initOptions: InitClientOptions & InitClientRegion<AnalyticsRegion> = {}): AnalyticsClient => {
54-
return analyticsClient(
55-
initOptions.appId || appId,
56-
initOptions.apiKey || apiKey,
57-
initOptions.region,
58-
initOptions.options,
59-
);
49+
{{#dependencies}}
50+
init{{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}: (initOptions: InitClientOptions {{#dependencyHasRegionalHosts}}& {{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}}{{/dependencyHasRegionalHosts}}): {{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}Client => {
51+
return {{{dependencyName}}}Client(initOptions.appId || appId, initOptions.apiKey || apiKey, {{#dependencyHasRegionalHosts}}initOptions.region,{{/dependencyHasRegionalHosts}}initOptions.options);
6052
},
6153

62-
initAbtesting: (initOptions: InitClientOptions & InitClientRegion<AbtestingRegion> = {}): AbtestingClient => {
63-
return abtestingClient(
64-
initOptions.appId || appId,
65-
initOptions.apiKey || apiKey,
66-
initOptions.region,
67-
initOptions.options,
68-
);
69-
},
70-
71-
initPersonalization: (
72-
initOptions: InitClientOptions & Required<InitClientRegion<PersonalizationRegion>>,
73-
): PersonalizationClient => {
74-
return personalizationClient(
75-
initOptions.appId || appId,
76-
initOptions.apiKey || apiKey,
77-
initOptions.region,
78-
initOptions.options,
79-
);
80-
},
54+
{{/dependencies}}
8155
}
8256
}

templates/javascript/clients/algoliasearch/builds/models.mustache

Lines changed: 47 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
// {{{generationBanner}}}
22

3-
import type { AbtestingClient, Region as AbTestingRegion } from '@algolia/client-abtesting';
4-
import type { AnalyticsClient, Region as AnalyticsRegion } from '@algolia/client-analytics';
3+
{{#dependencies}}
4+
import type {
5+
{{#lambda.titlecase}}{{{dependencyName}}}Client{{/lambda.titlecase}},
6+
{{#dependencyHasRegionalHosts}}
7+
Region as {{#lambda.titlecase}}{{{dependencyName}}}Region{{/lambda.titlecase}},
8+
RegionOptions as {{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}},
9+
{{/dependencyHasRegionalHosts}}
10+
} from '{{{dependencyPackage}}}';
11+
{{/dependencies}}
12+
513
import type { ClientOptions } from '@algolia/client-common';
614
import type {
15+
Action,
716
AdvancedSyntaxFeatures,
817
AlternativesAsExact,
918
Anchoring,
@@ -32,6 +41,7 @@ import type {
3241
CustomGetProps,
3342
CustomPostProps,
3443
CustomPutProps,
44+
DeleteSourceProps,
3545
DeletedAtResponse,
3646
Distinct,
3747
Edit,
@@ -41,14 +51,16 @@ import type {
4151
Exhaustive,
4252
FacetFilters,
4353
FacetOrdering,
44-
Facets,
4554
FacetStats,
55+
Facets,
56+
GetTaskProps,
4657
HighlightResult,
4758
HighlightResultOption,
4859
IgnorePlurals,
4960
IndexSettingsAsSearchParams,
50-
MatchedGeoLocation,
61+
Languages,
5162
MatchLevel,
63+
MatchedGeoLocation,
5264
Mode,
5365
NumericFilters,
5466
OptionalFilters,
@@ -60,14 +72,14 @@ import type {
6072
QueryType,
6173
Range,
6274
RankingInfo,
75+
ReRankingApplyFilter,
6376
Redirect,
6477
RedirectRuleIndexData,
6578
RedirectRuleIndexMetadata,
6679
RedirectURL,
6780
RemoveStopWords,
6881
RemoveWordsIfNoResults,
6982
RenderingContent,
70-
ReRankingApplyFilter,
7183
SearchPagination,
7284
SearchParams,
7385
SearchParamsObject,
@@ -76,6 +88,7 @@ import type {
7688
SnippetResult,
7789
SnippetResultOption,
7890
SortRemainingBy,
91+
Source,
7992
SupportedLanguage,
8093
TagFilters,
8194
TaskStatus,
@@ -86,23 +99,25 @@ import type {
8699
Widgets,
87100
} from '@algolia/client-search';
88101
import { apiClientVersion } from '@algolia/client-search';
89-
import type { RecommendClient } from '@algolia/recommend';
102+
import {
103+
Status,
104+
} from '@algolia/client-abtesting';
105+
import {
106+
EventType,
107+
} from '@algolia/client-personalization';
90108

91-
type Region = AbTestingRegion | AnalyticsRegion;
109+
type Region = {{#dependencies}} {{#dependencyHasRegionalHosts}}{{^-first}}|{{/-first}}{{#lambda.titlecase}}{{{dependencyName}}}Region{{/lambda.titlecase}} {{/dependencyHasRegionalHosts}}{{/dependencies}};
110+
type RegionOptions = {{#dependencies}} {{#dependencyHasRegionalHosts}}{{^-first}}|{{/-first}}{{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}} {{/dependencyHasRegionalHosts}}{{/dependencies}};
92111

93-
export * from '@algolia/client-search';
94-
export * from '@algolia/recommend';
95-
export * from '@algolia/client-personalization';
96-
export * from '@algolia/client-analytics';
97-
export * from '@algolia/client-abtesting';
112+
{{#dependencies}}
113+
export * from '{{{dependencyPackage}}}';
114+
{{/dependencies}}
98115

99116
export {
100-
AbTestingRegion,
117+
Action,
101118
AdvancedSyntaxFeatures,
102119
AlternativesAsExact,
103-
AnalyticsRegion,
104120
Anchoring,
105-
apiClientVersion,
106121
AroundPrecision,
107122
AroundRadius,
108123
AroundRadiusAll,
@@ -128,23 +143,27 @@ export {
128143
CustomGetProps,
129144
CustomPostProps,
130145
CustomPutProps,
146+
DeleteSourceProps,
131147
DeletedAtResponse,
132148
Distinct,
133149
Edit,
134150
EditType,
135151
ErrorBase,
152+
EventType,
136153
ExactOnSingleWordQuery,
137154
Exhaustive,
138155
FacetFilters,
139156
FacetOrdering,
140-
Facets,
141157
FacetStats,
158+
Facets,
159+
GetTaskProps,
142160
HighlightResult,
143161
HighlightResultOption,
144162
IgnorePlurals,
145163
IndexSettingsAsSearchParams,
146-
MatchedGeoLocation,
164+
Languages,
147165
MatchLevel,
166+
MatchedGeoLocation,
148167
Mode,
149168
NumericFilters,
150169
OptionalFilters,
@@ -156,15 +175,16 @@ export {
156175
QueryType,
157176
Range,
158177
RankingInfo,
178+
ReRankingApplyFilter,
159179
Redirect,
160180
RedirectRuleIndexData,
161181
RedirectRuleIndexMetadata,
162182
RedirectURL,
163183
Region,
184+
RegionOptions,
164185
RemoveStopWords,
165186
RemoveWordsIfNoResults,
166187
RenderingContent,
167-
ReRankingApplyFilter,
168188
SearchPagination,
169189
SearchParams,
170190
SearchParamsObject,
@@ -173,6 +193,8 @@ export {
173193
SnippetResult,
174194
SnippetResultOption,
175195
SortRemainingBy,
196+
Source,
197+
Status,
176198
SupportedLanguage,
177199
TagFilters,
178200
TaskStatus,
@@ -181,6 +203,13 @@ export {
181203
TypoToleranceEnum,
182204
Value,
183205
Widgets,
206+
apiClientVersion,
207+
{{#dependencies}}
208+
{{#dependencyHasRegionalHosts}}
209+
{{#lambda.titlecase}}{{{dependencyName}}}Region{{/lambda.titlecase}},
210+
{{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}},
211+
{{/dependencyHasRegionalHosts}}
212+
{{/dependencies}}
184213
};
185214

186215
/**
@@ -196,11 +225,4 @@ export type InitClientOptions = Partial<{
196225
*/
197226
apiKey: string;
198227
options: ClientOptions;
199-
}>;
200-
201-
export type InitClientRegion<TRegion> = Partial<{
202-
/**
203-
* Available regions of the initialized client.
204-
*/
205-
region: TRegion;
206228
}>;

templates/javascript/clients/api-single.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export function create{{#lambda.titlecase}}{{clientName}}{{/lambda.titlecase}}({
1818
authMode,
1919
algoliaAgents,{{#hasRegionalHost}} region: regionOption,{{/hasRegionalHost}}
2020
...options
21-
}: CreateClientOptions{{#hasRegionalHost}} & {region{{#fallbackToAliasHost}}?{{/fallbackToAliasHost}}: Region }{{/hasRegionalHost}}) {
21+
}: CreateClientOptions{{#hasRegionalHost}} & RegionOptions{{/hasRegionalHost}}) {
2222
const auth = createAuth(appIdOption, apiKeyOption, authMode);
2323
const transporter = createTransporter({
2424
hosts: getDefaultHosts({{#hostWithAppID}}appIdOption{{/hostWithAppID}}{{#hasRegionalHost}}regionOption{{/hasRegionalHost}}),

templates/javascript/clients/client/api/hosts.mustache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{{#hasRegionalHost}}
22
export const REGIONS = [{{#allowedRegions}}'{{.}}'{{^-last}},{{/-last}}{{/allowedRegions}}] as const;
33
export type Region = (typeof REGIONS)[number];
4+
export type RegionOptions = {region{{#fallbackToAliasHost}}?{{/fallbackToAliasHost}}: Region };
45
{{/hasRegionalHost}}
56

67
{{^hasRegionalHost}}

0 commit comments

Comments
 (0)