Skip to content

Commit 0a84faf

Browse files
authored
feat(javascript): assert algoliasearch bundle (#3991)
1 parent 681658d commit 0a84faf

File tree

16 files changed

+43
-140
lines changed

16 files changed

+43
-140
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,15 @@ private void setDefaultGeneratorOptions() {
165165
List<Map<String, Object>> packages = Helpers.getClientConfigList("javascript", "clients");
166166
for (Map<String, Object> pkg : packages) {
167167
String name = ((String) pkg.get("output")).replace("clients/algoliasearch-client-javascript/packages/", "");
168-
if (name.contains("search")) {
168+
if (name.contains("algoliasearch")) {
169169
continue;
170170
}
171171

172172
var dependency = new HashMap<String, Object>();
173173
dependency.put("dependencyName", Helpers.createClientName((String) pkg.get("name"), "javascript"));
174174
dependency.put("dependencyPackage", "@algolia/" + name);
175175
dependency.put("dependencyVersion", Helpers.getPackageJsonVersion(name));
176+
dependency.put("withInitMethod", !name.contains("search"));
176177
dependency.put(
177178
"dependencyHasRegionalHosts",
178179
!name.contains("search") && !name.contains("recommend") && !name.contains("monitoring")
@@ -181,7 +182,6 @@ private void setDefaultGeneratorOptions() {
181182
dependencies.add(dependency);
182183
}
183184
additionalProperties.put("dependencies", dependencies);
184-
additionalProperties.put("searchVersion", Helpers.getPackageJsonVersion("client-search"));
185185

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

generators/src/main/java/com/algolia/codegen/cts/AlgoliaCTSGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,8 @@ public Map<String, Object> postProcessSupportingFileData(Map<String, Object> obj
147147

148148
// We can put whatever we want in the bundle, and it will be accessible in the template
149149
bundle.put("mode", mode);
150+
bundle.put("is" + Helpers.capitalize(client) + "Client", true);
151+
bundle.put("isSearchClient", client.contains("search")); // just so algoliasearch is treated as a search client too
150152
bundle.put("client", Helpers.createClientName(importClientName, language) + "Client");
151153
bundle.put("clientPrefix", Helpers.createClientName(importClientName, language));
152154
bundle.put("hasRegionalHost", hasRegionalHost);

generators/src/main/java/com/algolia/codegen/cts/manager/JavascriptCTSManager.java

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.algolia.codegen.AlgoliaJavascriptGenerator;
44
import com.algolia.codegen.exceptions.GeneratorException;
55
import com.algolia.codegen.utils.*;
6-
import com.fasterxml.jackson.databind.JsonNode;
76
import java.util.*;
87
import org.openapitools.codegen.SupportingFile;
98

@@ -45,27 +44,9 @@ public void addSnippetsSupportingFiles(List<SupportingFile> supportingFiles, Str
4544
@Override
4645
public void addDataToBundle(Map<String, Object> bundle) throws GeneratorException {
4746
bundle.put("utilsPackageVersion", Helpers.getPackageJsonVersion("client-common"));
48-
49-
List<Map<String, String>> clients = new ArrayList<>();
50-
String importName = "";
51-
52-
Iterator<JsonNode> clientIterator = Helpers.getClientConfig("javascript").get("clients").elements();
53-
while (clientIterator.hasNext()) {
54-
JsonNode c = clientIterator.next();
55-
String output = c.get("output").asText();
56-
String packageName = output.substring(output.lastIndexOf("/") + 1);
57-
if (!packageName.equals("algoliasearch")) {
58-
packageName = "@algolia/" + packageName;
59-
}
60-
61-
clients.add(Map.of("packageName", packageName, "packagePath", "link:../../../" + output.replace("#{cwd}/", "")));
62-
63-
if (c.get("name").asText().equals(client)) {
64-
importName = packageName.replace("algoliasearch", "algoliasearch/lite");
65-
}
66-
}
67-
68-
bundle.put("packageDependencies", clients);
69-
bundle.put("import", importName);
47+
bundle.put("algoliasearchVersion", Helpers.getPackageJsonVersion("algoliasearch"));
48+
bundle.put("initMethod", "init" + Helpers.capitalize(Helpers.camelize(client)));
49+
bundle.put("clientName", client.equals("algoliasearch") ? "liteClient" : "algoliasearch");
50+
bundle.put("importPackage", client.equals("algoliasearch") ? "algoliasearch/lite" : "algoliasearch");
7051
}
7152
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"build": "yarn build:eslint && yarn scripts:build",
1515
"build:eslint": "yarn workspace eslint-plugin-automation-custom build && yarn install",
1616
"clean": "rm -rf **/dist **/build **/.build **/node_modules **/.gradle **/vendor **/bin **/obj **/__pycache__ || true",
17-
"cli": "yarn workspace scripts start",
17+
"cli": "cd scripts && yarn build:cli && yarn start",
1818
"docker:setup": "./scripts/docker/setup.sh",
1919
"fix:json": "eslint --ext=json . --fix",
2020
"fix:mustache": "eslint --ext=mustache templates/**/tests/ --fix",

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
// {{{generationBanner}}}
22

33
import type { ClientOptions } from '@algolia/client-common';
4-
import type { SearchClient } from '@algolia/client-search';
5-
import { searchClient } from '@algolia/client-search';
64

75
{{#dependencies}}
86
import { {{{dependencyName}}}Client } from '{{{dependencyPackage}}}';
@@ -23,7 +21,9 @@ export * from './models';
2321

2422
export type Algoliasearch = SearchClient & {
2523
{{#dependencies}}
26-
init{{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}: (initOptions: InitClientOptions {{#dependencyHasRegionalHosts}}& {{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}}{{/dependencyHasRegionalHosts}}) => {{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}Client;
24+
{{#withInitMethod}}
25+
init{{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}: (initOptions{{^dependencyHasRegionalHosts}}?{{/dependencyHasRegionalHosts}}: InitClientOptions {{#dependencyHasRegionalHosts}}& {{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}}{{/dependencyHasRegionalHosts}}) => {{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}Client;
26+
{{/withInitMethod}}
2727
{{/dependencies}}
2828
};
2929

@@ -49,9 +49,11 @@ export function algoliasearch(appId: string, apiKey: string, options?: ClientOpt
4949
},
5050

5151
{{#dependencies}}
52-
init{{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}: (initOptions: InitClientOptions {{#dependencyHasRegionalHosts}}& {{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}}{{/dependencyHasRegionalHosts}}): {{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}Client => {
52+
{{#withInitMethod}}
53+
init{{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}: (initOptions: InitClientOptions {{#dependencyHasRegionalHosts}}& {{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}}{{/dependencyHasRegionalHosts}}{{^dependencyHasRegionalHosts}}={}{{/dependencyHasRegionalHosts}}): {{#lambda.titlecase}}{{{dependencyName}}}{{/lambda.titlecase}}Client => {
5354
return {{{dependencyName}}}Client(initOptions.appId || appId, initOptions.apiKey || apiKey, {{#dependencyHasRegionalHosts}}initOptions.region,{{/dependencyHasRegionalHosts}}initOptions.options);
5455
},
56+
{{/withInitMethod}}
5557

5658
{{/dependencies}}
5759
}

templates/javascript/clients/package.mustache

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@
123123
{{#dependencies}}
124124
"{{{dependencyPackage}}}": "{{{dependencyVersion}}}",
125125
{{/dependencies}}
126-
"@algolia/client-search": "{{searchVersion}}",
127126
"@algolia/client-common": "{{utilsPackageVersion}}",
128127
"@algolia/requester-browser-xhr": "{{utilsPackageVersion}}",
129128
"@algolia/requester-node-http": "{{utilsPackageVersion}}",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
import { {{client}} } from '{{{import}}}';
1+
import { {{clientName}} } from '{{{importPackage}}}';
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
const client = {{client}}("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY", {{#hasRegionalHost}}'{{defaultRegion}}', {{/hasRegionalHost}});
1+
const client = {{{clientName}}}("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY"){{^isSearchClient}}.{{{initMethod}}}({{#hasRegionalHost}} {region: '{{defaultRegion}}'} {{/hasRegionalHost}}){{/isSearchClient}};

templates/javascript/snippets/package.mustache

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,7 @@
33
"version": "1.0.0",
44
"dependencies": {
55
"typescript": "5.6.3",
6-
"@algolia/client-abtesting": "link:../../../clients/algoliasearch-client-javascript/packages/client-abtesting",
7-
"@algolia/client-analytics": "link:../../../clients/algoliasearch-client-javascript/packages/client-analytics",
86
"@algolia/client-common": "link:../../../clients/algoliasearch-client-javascript/packages/client-common",
9-
"@algolia/client-insights": "link:../../../clients/algoliasearch-client-javascript/packages/client-insights",
10-
"@algolia/client-personalization": "link:../../../clients/algoliasearch-client-javascript/packages/client-personalization",
11-
"@algolia/client-query-suggestions": "link:../../../clients/algoliasearch-client-javascript/packages/client-query-suggestions",
12-
"@algolia/client-search": "link:../../../clients/algoliasearch-client-javascript/packages/client-search",
13-
"@algolia/ingestion": "link:../../../clients/algoliasearch-client-javascript/packages/ingestion",
14-
"@algolia/monitoring": "link:../../../clients/algoliasearch-client-javascript/packages/monitoring",
15-
"@algolia/recommend": "link:../../../clients/algoliasearch-client-javascript/packages/recommend",
167
"@algolia/requester-node-http": "link:../../../clients/algoliasearch-client-javascript/packages/requester-node-http",
178
"algoliasearch": "link:../../../clients/algoliasearch-client-javascript/packages/algoliasearch"
189
},

templates/javascript/tests/client/benchmark.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// {{generationBanner}}
22
import { describe, test, expect } from 'vitest';
33

4-
import { {{client}}, {{#lambda.titlecase}}{{client}}{{/lambda.titlecase}} } from '{{{import}}}';
4+
import { {{{clientName}}} } from '{{{importPackage}}}';
55

66
{{#blocksBenchmark}}
77
{{> tests/client/tests}}

0 commit comments

Comments
 (0)