Skip to content

Commit d0f06d1

Browse files
committed
feat(javascript): add every APIs
1 parent 0b2d1f5 commit d0f06d1

File tree

4 files changed

+41
-25
lines changed

4 files changed

+41
-25
lines changed

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

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55
import io.swagger.v3.oas.models.OpenAPI;
66
import io.swagger.v3.oas.models.Operation;
77
import io.swagger.v3.oas.models.servers.Server;
8-
import java.util.List;
9-
import java.util.Map;
10-
import java.util.Spliterator;
11-
import java.util.Spliterators;
8+
import java.util.*;
129
import java.util.stream.StreamSupport;
1310
import org.openapitools.codegen.CodegenOperation;
1411
import org.openapitools.codegen.SupportingFile;
@@ -151,33 +148,38 @@ public static String getPackageName(String client) throws ConfigException {
151148
private void setDefaultGeneratorOptions() {
152149
String clientName = CLIENT + Helpers.API_SUFFIX;
153150
String packageName = getPackageName((String) additionalProperties.get("client"));
151+
List<String> clientList = Helpers.getClientListForLanguage("javascript");
152+
clientList.removeIf(c -> c.equals("algoliasearch"));
154153

155154
additionalProperties.put("apiName", CLIENT);
156155
additionalProperties.put("clientName", clientName);
157156
additionalProperties.put("algoliaAgent", Helpers.capitalize(CLIENT));
158157
additionalProperties.put("isSearchClient", CLIENT.equals("search") || isAlgoliasearchClient);
159158
additionalProperties.put("isIngestionClient", CLIENT.equals("ingestion"));
160159
additionalProperties.put("isAlgoliasearchClient", isAlgoliasearchClient);
161-
additionalProperties.put(
162-
"isAvailableInAlgoliasearch",
163-
CLIENT.equals("search") ||
164-
CLIENT.equals("recommend") ||
165-
CLIENT.equals("personalization") ||
166-
CLIENT.equals("analytics") ||
167-
CLIENT.equals("abtesting")
168-
);
160+
additionalProperties.put("isAvailableInAlgoliasearch", clientList.contains(CLIENT));
169161
additionalProperties.put("packageVersion", Helpers.getPackageJsonVersion(packageName));
170162
additionalProperties.put("packageName", packageName);
171163
additionalProperties.put("npmPackageName", isAlgoliasearchClient ? packageName : "@algolia/" + packageName);
172164
additionalProperties.put("nodeSearchHelpers", CLIENT.equals("search") || isAlgoliasearchClient);
173165

174166
if (isAlgoliasearchClient) {
175-
// Files used to create the package.json of the algoliasearch package
176-
additionalProperties.put("analyticsVersion", Helpers.getPackageJsonVersion("client-analytics"));
177-
additionalProperties.put("abtestingVersion", Helpers.getPackageJsonVersion("client-abtesting"));
178-
additionalProperties.put("personalizationVersion", Helpers.getPackageJsonVersion("client-personalization"));
179-
additionalProperties.put("searchVersion", Helpers.getPackageJsonVersion("client-search"));
180-
additionalProperties.put("recommendVersion", Helpers.getPackageJsonVersion("recommend"));
167+
var dependencies = new ArrayList<Map<String, Object>>();
168+
List<Map<String, Object>> packages = Helpers.getClientConfigList("javascript", "clients");
169+
for (Map<String, Object> pkg : packages) {
170+
String name = ((String) pkg.get("output")).replace("clients/algoliasearch-client-javascript/packages/", "");
171+
if (name.equals("algoliasearch")) {
172+
continue;
173+
}
174+
175+
var dependency = new HashMap<String, Object>();
176+
dependency.put("name", name);
177+
dependency.put("package", "@algolia/" + name);
178+
dependency.put("version", Helpers.getPackageJsonVersion(name));
179+
180+
dependencies.add(dependency);
181+
}
182+
additionalProperties.put("dependencies", dependencies);
181183

182184
// Files used to generate the `lite` client
183185
clientName = "lite" + Helpers.API_SUFFIX;

generators/src/main/java/com/algolia/codegen/utils/Helpers.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,22 @@ public static String getClientConfigField(String language, String... fields) thr
198198
return value.asText();
199199
}
200200

201+
/** Get the `field` value in the `config/clients.config.json` file for the given language */
202+
public static List<Map<String, Object>> getClientConfigList(String language, String... fields) throws ConfigException {
203+
if (fields.length == 0) {
204+
throw new ConfigException("getClientConfigList requires at least one field");
205+
}
206+
JsonNode value = getClientConfig(language);
207+
for (String field : fields) {
208+
value = value.get(field);
209+
}
210+
try {
211+
return new ObjectMapper().readerForListOf(Map.class).readValue(value);
212+
} catch (IOException e) {
213+
throw new ConfigException("Cannot convert value", e);
214+
}
215+
}
216+
201217
public static List<String> getClientListForLanguage(String language) throws ConfigException {
202218
JsonNode value = getClientConfig(language);
203219
value = value.get("clients");

templates/javascript/clients/README.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@
3232

3333
## 💡 Getting Started
3434

35-
{{#isAvailableInAlgoliasearch}}
35+
{{^isAlgoliasearchClient}}
3636
> [!TIP]
3737
> This API client is already a dependency of [the algoliasearch client](https://www.npmjs.com/package/algoliasearch), you don't need to manually install `{{{npmPackageName}}}` if you already have `algoliasearch` installed.
38-
{{/isAvailableInAlgoliasearch}}
38+
{{/isAlgoliasearchClient}}
3939

4040
To get started, you first need to install {{npmPackageName}} (or any other available API client package).
4141
All of our clients comes with type definition, and are available for both browser and node environments.

templates/javascript/clients/package.mustache

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,10 @@
120120
"lite.d.ts"
121121
],
122122
"dependencies": {
123-
"@algolia/client-analytics": "{{analyticsVersion}}",
124-
"@algolia/client-abtesting": "{{abtestingVersion}}",
125-
"@algolia/client-personalization": "{{personalizationVersion}}",
126-
"@algolia/client-search": "{{searchVersion}}",
123+
{{#dependencies}}
124+
"{{{package}}}": "{{{version}}}",
125+
{{/dependencies}}
127126
"@algolia/client-common": "{{utilsPackageVersion}}",
128-
"@algolia/recommend": "{{recommendVersion}}",
129127
"@algolia/requester-browser-xhr": "{{utilsPackageVersion}}",
130128
"@algolia/requester-node-http": "{{utilsPackageVersion}}",
131129
"@algolia/requester-fetch": "{{utilsPackageVersion}}"

0 commit comments

Comments
 (0)