Skip to content

Commit 07e0748

Browse files
feat(clients): add recommend to algoliasearch (#2860)
Co-authored-by: Aymeric Giraudet <[email protected]>
1 parent fbd508e commit 07e0748

File tree

24 files changed

+371
-135
lines changed

24 files changed

+371
-135
lines changed

clients/algoliasearch-client-javascript/yarn.lock

Lines changed: 63 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3067,7 +3067,16 @@ __metadata:
30673067
languageName: node
30683068
linkType: hard
30693069

3070-
"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2":
3070+
"acorn@npm:^8.1.0, acorn@npm:^8.8.1, acorn@npm:^8.8.2":
3071+
version: 8.11.3
3072+
resolution: "acorn@npm:8.11.3"
3073+
bin:
3074+
acorn: bin/acorn
3075+
checksum: 10/b688e7e3c64d9bfb17b596e1b35e4da9d50553713b3b3630cf5690f2b023a84eac90c56851e6912b483fe60e8b4ea28b254c07e92f17ef83d72d78745a8352dd
3076+
languageName: node
3077+
linkType: hard
3078+
3079+
"acorn@npm:^8.11.0":
30713080
version: 8.12.0
30723081
resolution: "acorn@npm:8.12.0"
30733082
bin:
@@ -4460,9 +4469,9 @@ __metadata:
44604469
linkType: hard
44614470

44624471
"electron-to-chromium@npm:^1.4.796":
4463-
version: 1.4.810
4464-
resolution: "electron-to-chromium@npm:1.4.810"
4465-
checksum: 10/425de710336094330fd026cc2cfa0b383bfc9a49a2f575ceec2ac76198663ff95d0109bb45b243a43f0bf0f91a2e9c2768693a136d0968ae59728d5e8eea22ef
4472+
version: 1.4.805
4473+
resolution: "electron-to-chromium@npm:1.4.805"
4474+
checksum: 10/69ff2b7098ec80666c7cfed3ae045894b1bf8ae72a77233c37b4496698a1c20a24e9b97822df7fe5dad226d32ca52defa10dee4b36438da35af6d51810d652d3
44664475
languageName: node
44674476
linkType: hard
44684477

@@ -5153,18 +5162,17 @@ __metadata:
51535162
linkType: hard
51545163

51555164
"glob@npm:^10.2.2, glob@npm:^10.3.10":
5156-
version: 10.4.2
5157-
resolution: "glob@npm:10.4.2"
5165+
version: 10.4.1
5166+
resolution: "glob@npm:10.4.1"
51585167
dependencies:
51595168
foreground-child: "npm:^3.1.0"
51605169
jackspeak: "npm:^3.1.2"
51615170
minimatch: "npm:^9.0.4"
51625171
minipass: "npm:^7.1.2"
5163-
package-json-from-dist: "npm:^1.0.0"
51645172
path-scurry: "npm:^1.11.1"
51655173
bin:
51665174
glob: dist/esm/bin.mjs
5167-
checksum: 10/e412776b5952a818eba790c830bea161c9a56813fd767d8c4c49f855603b1fb962b3e73f1f627a47298a57d2992b9f0f2fe15cf93e74ecaaa63fb45d63fdd090
5175+
checksum: 10/d7bb49d2b413f77bdd59fea4ca86dcc12450deee221af0ca93e09534b81b9ef68fe341345751d8ff0c5b54bad422307e0e44266ff8ad7fbbd0c200e8ec258b16
51685176
languageName: node
51695177
linkType: hard
51705178

@@ -5333,7 +5341,7 @@ __metadata:
53335341
languageName: node
53345342
linkType: hard
53355343

5336-
"hasown@npm:^2.0.0, hasown@npm:^2.0.2":
5344+
"hasown@npm:^2.0.0":
53375345
version: 2.0.2
53385346
resolution: "hasown@npm:2.0.2"
53395347
dependencies:
@@ -5675,11 +5683,11 @@ __metadata:
56755683
linkType: hard
56765684

56775685
"is-core-module@npm:^2.13.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1":
5678-
version: 2.14.0
5679-
resolution: "is-core-module@npm:2.14.0"
5686+
version: 2.13.1
5687+
resolution: "is-core-module@npm:2.13.1"
56805688
dependencies:
5681-
hasown: "npm:^2.0.2"
5682-
checksum: 10/1e0d1a16cb3a94746f6a28db09ccab4562860c94c74bacedb3a6729736d61cfb97001d2052f9622637aa7ea8e0643a3f0f4f16965c70ba6ce30a8ccfe8074af8
5689+
hasown: "npm:^2.0.0"
5690+
checksum: 10/d53bd0cc24b0a0351fb4b206ee3908f71b9bbf1c47e9c9e14e5f06d292af1663704d2abd7e67700d6487b2b7864e0d0f6f10a1edf1892864bdffcb197d1845a2
56835691
languageName: node
56845692
linkType: hard
56855693

@@ -7350,7 +7358,7 @@ __metadata:
73507358
languageName: node
73517359
linkType: hard
73527360

7353-
"node-gyp@npm:^10.0.0, node-gyp@npm:latest":
7361+
"node-gyp@npm:^10.0.0":
73547362
version: 10.1.0
73557363
resolution: "node-gyp@npm:10.1.0"
73567364
dependencies:
@@ -7370,6 +7378,26 @@ __metadata:
73707378
languageName: node
73717379
linkType: hard
73727380

7381+
"node-gyp@npm:latest":
7382+
version: 10.0.1
7383+
resolution: "node-gyp@npm:10.0.1"
7384+
dependencies:
7385+
env-paths: "npm:^2.2.0"
7386+
exponential-backoff: "npm:^3.1.1"
7387+
glob: "npm:^10.3.10"
7388+
graceful-fs: "npm:^4.2.6"
7389+
make-fetch-happen: "npm:^13.0.0"
7390+
nopt: "npm:^7.0.0"
7391+
proc-log: "npm:^3.0.0"
7392+
semver: "npm:^7.3.5"
7393+
tar: "npm:^6.1.2"
7394+
which: "npm:^4.0.0"
7395+
bin:
7396+
node-gyp: bin/node-gyp.js
7397+
checksum: 10/578cf0c821f258ce4b6ebce4461eca4c991a4df2dee163c0624f2fe09c7d6d37240be4942285a0048d307230248ee0b18382d6623b9a0136ce9533486deddfa8
7398+
languageName: node
7399+
linkType: hard
7400+
73737401
"node-int64@npm:^0.4.0":
73747402
version: 0.4.0
73757403
resolution: "node-int64@npm:0.4.0"
@@ -7721,9 +7749,9 @@ __metadata:
77217749
linkType: hard
77227750

77237751
"object-inspect@npm:^1.13.1":
7724-
version: 1.13.2
7725-
resolution: "object-inspect@npm:1.13.2"
7726-
checksum: 10/7ef65583b6397570a17c56f0c1841e0920e83900f2c94638927abb7b81ac08a19c7aae135bd9dcca96208cac0c7332b4650fb927f027b0cf92d71df2990d0561
7752+
version: 1.13.1
7753+
resolution: "object-inspect@npm:1.13.1"
7754+
checksum: 10/92f4989ed83422d56431bc39656d4c780348eb15d397ce352ade6b7fec08f973b53744bd41b94af021901e61acaf78fcc19e65bf464ecc0df958586a672700f0
77277755
languageName: node
77287756
linkType: hard
77297757

@@ -7920,13 +7948,6 @@ __metadata:
79207948
languageName: node
79217949
linkType: hard
79227950

7923-
"package-json-from-dist@npm:^1.0.0":
7924-
version: 1.0.0
7925-
resolution: "package-json-from-dist@npm:1.0.0"
7926-
checksum: 10/ac706ec856a5a03f5261e4e48fa974f24feb044d51f84f8332e2af0af04fbdbdd5bbbfb9cbbe354190409bc8307c83a9e38c6672c3c8855f709afb0006a009ea
7927-
languageName: node
7928-
linkType: hard
7929-
79307951
"pacote@npm:^17.0.5":
79317952
version: 17.0.7
79327953
resolution: "pacote@npm:17.0.7"
@@ -9330,7 +9351,7 @@ __metadata:
93309351
languageName: node
93319352
linkType: hard
93329353

9333-
"tar@npm:6.2.1, tar@npm:^6.1.11, tar@npm:^6.1.2":
9354+
"tar@npm:6.2.1":
93349355
version: 6.2.1
93359356
resolution: "tar@npm:6.2.1"
93369357
dependencies:
@@ -9344,6 +9365,20 @@ __metadata:
93449365
languageName: node
93459366
linkType: hard
93469367

9368+
"tar@npm:^6.1.11, tar@npm:^6.1.2":
9369+
version: 6.2.0
9370+
resolution: "tar@npm:6.2.0"
9371+
dependencies:
9372+
chownr: "npm:^2.0.0"
9373+
fs-minipass: "npm:^2.0.0"
9374+
minipass: "npm:^5.0.0"
9375+
minizlib: "npm:^2.1.1"
9376+
mkdirp: "npm:^1.0.3"
9377+
yallist: "npm:^4.0.0"
9378+
checksum: 10/2042bbb14830b5cd0d584007db0eb0a7e933e66d1397e72a4293768d2332449bc3e312c266a0887ec20156dea388d8965e53b4fc5097f42d78593549016da089
9379+
languageName: node
9380+
linkType: hard
9381+
93479382
"temp-dir@npm:1.0.0":
93489383
version: 1.0.0
93499384
resolution: "temp-dir@npm:1.0.0"
@@ -9763,13 +9798,13 @@ __metadata:
97639798
linkType: hard
97649799

97659800
"v8-to-istanbul@npm:^9.0.1":
9766-
version: 9.3.0
9767-
resolution: "v8-to-istanbul@npm:9.3.0"
9801+
version: 9.2.0
9802+
resolution: "v8-to-istanbul@npm:9.2.0"
97689803
dependencies:
97699804
"@jridgewell/trace-mapping": "npm:^0.3.12"
97709805
"@types/istanbul-lib-coverage": "npm:^2.0.1"
97719806
convert-source-map: "npm:^2.0.0"
9772-
checksum: 10/fb1d70f1176cb9dc46cabbb3fd5c52c8f3e8738b61877b6e7266029aed0870b04140e3f9f4550ac32aebcfe1d0f38b0bac57e1e8fb97d68fec82f2b416148166
9807+
checksum: 10/18dd8cebfb6790f27f4e41e7cff77c7ab1c8904085f354dd7875e2eb65f4261c4cf40939132502875779d92304bfea46b8336346ecb40b6f33c3a3979e6f5729
97739808
languageName: node
97749809
linkType: hard
97759810

config/clients.config.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@
165165
}
166166
],
167167
"folder": "clients/algoliasearch-client-javascript",
168-
"npmNamespace": "@algolia",
169168
"gitRepoId": "algoliasearch-client-javascript",
170169
"packageVersion": "5.0.0-beta.5",
171170
"modelFolder": "model",

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ private void setDefaultGeneratorOptions() {
155155
additionalProperties.put("abtestingVersion", Helpers.getPackageJsonVersion("client-abtesting"));
156156
additionalProperties.put("personalizationVersion", Helpers.getPackageJsonVersion("client-personalization"));
157157
additionalProperties.put("searchVersion", Helpers.getPackageJsonVersion("client-search"));
158+
additionalProperties.put("recommendVersion", Helpers.getPackageJsonVersion("recommend"));
158159

159160
// Files used to generate the `lite` client
160161
apiName = "lite" + Helpers.API_SUFFIX;
@@ -185,7 +186,6 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
185186
setDefaultGeneratorOptions();
186187
try {
187188
additionalProperties.put("utilsPackageVersion", Helpers.getPackageJsonVersion("client-common"));
188-
additionalProperties.put("npmNamespace", Helpers.getClientConfigField("javascript", "npmNamespace"));
189189
} catch (GeneratorException e) {
190190
e.printStackTrace();
191191
System.exit(1);

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ public void addTestsSupportingFiles(List<SupportingFile> supportingFiles) {
2121

2222
@Override
2323
public void addDataToBundle(Map<String, Object> bundle) throws GeneratorException {
24-
String npmNamespace = Helpers.getClientConfigField("javascript", "npmNamespace");
25-
2624
bundle.put("utilsPackageVersion", Helpers.getPackageJsonVersion("client-common"));
27-
bundle.put("npmNamespace", npmNamespace);
2825

2926
List<Map<String, String>> clients = new ArrayList<>();
3027
String importName = "";
@@ -35,7 +32,7 @@ public void addDataToBundle(Map<String, Object> bundle) throws GeneratorExceptio
3532
String output = c.get("output").asText();
3633
String packageName = output.substring(output.lastIndexOf("/") + 1);
3734
if (!packageName.equals("algoliasearch")) {
38-
packageName = npmNamespace + "/" + packageName;
35+
packageName = "@algolia/" + packageName;
3936
}
4037

4138
clients.add(Map.of("packageName", packageName, "packagePath", "link:../../../" + output.replace("#{cwd}/", "")));

generators/src/main/java/com/algolia/codegen/cts/tests/TestsRequest.java

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.algolia.codegen.utils.*;
77
import java.io.File;
88
import java.util.*;
9+
import org.apache.commons.lang3.ArrayUtils;
910
import org.openapitools.codegen.CodegenModel;
1011
import org.openapitools.codegen.CodegenOperation;
1112
import org.openapitools.codegen.CodegenResponse;
@@ -24,10 +25,32 @@ protected Map<String, Request[]> loadRequestCTS() throws Exception {
2425
String clientName = client;
2526
// This special case allow us to read the `search` CTS to generated the tests for the
2627
// `lite` client, which is only available in Javascript
27-
if ((language.equals("javascript") || language.equals("dart")) && client.equals("algoliasearch")) {
28+
if (client.equals("algoliasearch")) {
2829
clientName = "search";
2930
}
30-
return super.loadCTS("requests", clientName, Request[].class);
31+
32+
Map<String, Request[]> baseCTS = super.loadCTS("requests", clientName, Request[].class);
33+
34+
// The algoliasearch client bundles many client and therefore should provide tests for all the
35+
// subsequent specs
36+
if (client.equals("algoliasearch")) {
37+
Map<String, Request[]> recommendCTS = super.loadCTS("requests", "recommend", Request[].class);
38+
for (Map.Entry<String, Request[]> entry : recommendCTS.entrySet()) {
39+
String operation = entry.getKey();
40+
// custom methods are common to every clients, we don't want duplicate tests
41+
if (operation.startsWith("custom")) {
42+
continue;
43+
}
44+
45+
if (baseCTS.containsKey(operation)) {
46+
baseCTS.put(operation, ArrayUtils.addAll(baseCTS.get(operation), entry.getValue()));
47+
} else {
48+
baseCTS.put(operation, entry.getValue());
49+
}
50+
}
51+
}
52+
53+
return baseCTS;
3154
}
3255

3356
@Override
@@ -75,7 +98,9 @@ public void run(Map<String, CodegenModel> models, Map<String, CodegenOperation>
7598
throw new CTSException(
7699
"operationId '" +
77100
operationId +
78-
"' does not exist in the tests suite, please create the file:" +
101+
"' does not exist in the " +
102+
client +
103+
" tests suite, please create the file:" +
79104
" 'tests/CTS/requests/" +
80105
client +
81106
"/" +

scripts/buildClients.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import * as fsp from 'fs/promises';
33

44
import { run, toAbsolutePath } from './common.js';
5-
import { getClientsConfigField, getLanguageFolder } from './config.js';
5+
import { getLanguageFolder } from './config.js';
66
import { createSpinner } from './spinners.js';
77
import type { Generator, Language } from './types.js';
88

@@ -17,9 +17,8 @@ async function buildClient(language: Language, gens: Generator[]): Promise<void>
1717
await run('dotnet build --configuration Release', { cwd, language });
1818
break;
1919
case 'javascript':
20-
const npmNamespace = getClientsConfigField('javascript', 'npmNamespace');
2120
const packageNames = gens.map(({ additionalProperties: { packageName } }) =>
22-
packageName === 'algoliasearch' ? packageName : `${npmNamespace}/${packageName}`,
21+
packageName === 'algoliasearch' ? packageName : `@algolia/${packageName}`,
2322
);
2423

2524
await run('YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn install', { cwd });

scripts/ci/githubActions/createMatrix.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,7 @@
22
import * as core from '@actions/core';
33

44
import { CLIENTS, createClientName, GENERATORS, LANGUAGES } from '../../common.js';
5-
import {
6-
getClientsConfigField,
7-
getLanguageFolder,
8-
getTestExtension,
9-
getTestOutputFolder,
10-
} from '../../config.js';
5+
import { getLanguageFolder, getTestExtension, getTestOutputFolder } from '../../config.js';
116

127
import { COMMON_DEPENDENCIES, DEPENDENCIES } from './setRunVariables.js';
138
import type { ClientMatrix, CreateMatrix, ToRunMatrix } from './types.js';
@@ -102,12 +97,11 @@ async function createClientMatrix(baseBranch: string): Promise<void> {
10297
testsToStore = `${testsToStore} ${testsRootFolder}/build.gradle`;
10398
break;
10499
case 'javascript':
105-
const npmNamespace = getClientsConfigField('javascript', 'npmNamespace');
106100
const packageNames = matrix[language].toRun.map((client) => {
107101
const packageName = GENERATORS[`${language}-${client}`].additionalProperties.packageName;
108102

109103
// `algoliasearch` is not preceded by `@algolia`
110-
return client === 'algoliasearch' ? packageName : `${npmNamespace}/${packageName}`;
104+
return client === 'algoliasearch' ? packageName : `@algolia/${packageName}`;
111105
});
112106

113107
buildCommand = `cd ${matrix[language].path} && yarn build:many '{${packageNames.join(

0 commit comments

Comments
 (0)