Skip to content

Commit 83f188d

Browse files
e-krebsshortcutsmillotp
authored
feat(specs): rename composition to composition-full (private) and add composition (public) (#4357)
Co-authored-by: shortcuts <vannicattec@gmail.com> Co-authored-by: Pierre Millot <pierre.millot@algolia.com>
1 parent 01dd6a7 commit 83f188d

File tree

88 files changed

+554
-214
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+554
-214
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
targets:
2+
$default:
3+
builders:
4+
json_serializable:
5+
options:
6+
any_map: false
7+
checked: true
8+
create_factory: true
9+
create_to_json: true
10+
disallow_unrecognized_keys: false
11+
explicit_to_json: true
12+
field_rename: none
13+
ignore_unannotated: false
14+
include_if_null: false

clients/algoliasearch-client-javascript/yarn.lock

+17
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,23 @@ __metadata:
139139
languageName: unknown
140140
linkType: soft
141141

142+
"@algolia/composition@workspace:packages/composition":
143+
version: 0.0.0-use.local
144+
resolution: "@algolia/composition@workspace:packages/composition"
145+
dependencies:
146+
"@algolia/client-common": "npm:5.19.0"
147+
"@algolia/requester-browser-xhr": "npm:5.19.0"
148+
"@algolia/requester-fetch": "npm:5.19.0"
149+
"@algolia/requester-node-http": "npm:5.19.0"
150+
"@arethetypeswrong/cli": "npm:0.17.3"
151+
"@types/node": "npm:22.10.7"
152+
publint: "npm:0.3.2"
153+
rollup: "npm:4.30.1"
154+
tsup: "npm:8.3.5"
155+
typescript: "npm:5.7.3"
156+
languageName: unknown
157+
linkType: soft
158+
142159
"@algolia/ingestion@npm:1.19.0, @algolia/ingestion@workspace:packages/ingestion":
143160
version: 0.0.0-use.local
144161
resolution: "@algolia/ingestion@workspace:packages/ingestion"

config/clients.config.json

+17-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"clients": [
44
"abtesting",
55
"analytics",
6+
"composition",
67
"ingestion",
78
"insights",
89
"monitoring",
@@ -32,6 +33,10 @@
3233
"name": "algoliasearch",
3334
"output": "clients/algoliasearch-client-dart/packages/algoliasearch"
3435
},
36+
{
37+
"name": "composition",
38+
"output": "clients/algoliasearch-client-dart/packages/client_composition"
39+
},
3540
{
3641
"name": "insights",
3742
"output": "clients/algoliasearch-client-dart/packages/client_insights"
@@ -64,6 +69,7 @@
6469
"clients": [
6570
"abtesting",
6671
"analytics",
72+
"composition",
6773
"ingestion",
6874
"insights",
6975
"monitoring",
@@ -91,6 +97,7 @@
9197
"clients": [
9298
"abtesting",
9399
"analytics",
100+
"composition",
94101
"ingestion",
95102
"insights",
96103
"monitoring",
@@ -134,6 +141,10 @@
134141
"name": "analytics",
135142
"output": "clients/algoliasearch-client-javascript/packages/client-analytics"
136143
},
144+
{
145+
"name": "composition",
146+
"output": "clients/algoliasearch-client-javascript/packages/composition"
147+
},
137148
{
138149
"name": "ingestion",
139150
"output": "clients/algoliasearch-client-javascript/packages/ingestion"
@@ -163,7 +174,7 @@
163174
"output": "clients/algoliasearch-client-javascript/packages/client-search"
164175
},
165176
{
166-
"name": "composition",
177+
"name": "composition-full",
167178
"output": "clients/algoliasearch-client-javascript/packages/client-composition"
168179
}
169180
],
@@ -185,6 +196,7 @@
185196
"clients": [
186197
"abtesting",
187198
"analytics",
199+
"composition",
188200
"ingestion",
189201
"insights",
190202
"monitoring",
@@ -212,6 +224,7 @@
212224
"clients": [
213225
"abtesting",
214226
"analytics",
227+
"composition",
215228
"ingestion",
216229
"insights",
217230
"monitoring",
@@ -239,6 +252,7 @@
239252
"clients": [
240253
"abtesting",
241254
"analytics",
255+
"composition",
242256
"ingestion",
243257
"insights",
244258
"monitoring",
@@ -273,6 +287,7 @@
273287
"clients": [
274288
"abtesting",
275289
"analytics",
290+
"composition",
276291
"ingestion",
277292
"insights",
278293
"monitoring",
@@ -300,6 +315,7 @@
300315
"clients": [
301316
"abtesting",
302317
"analytics",
318+
"composition",
303319
"ingestion",
304320
"insights",
305321
"monitoring",

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void processOpts() {
4444
additionalProperties.put("sourceFolder", "");
4545
additionalProperties.put("netCoreProjectFile", true);
4646
additionalProperties.put("targetFramework", "netstandard2.1;netstandard2.0");
47-
additionalProperties.put("isSearchClient", client.equals("search"));
47+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
4848
additionalProperties.put("apiPackageName", getClientName(client));
4949
additionalProperties.put("equatable", false);
5050
additionalProperties.put("disallowAdditionalPropertiesIfNotPresent", true);

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

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public void processOpts() {
3636
isAlgoliasearchClient = client.equals("algoliasearch");
3737
String version = Helpers.getClientConfigField("dart", "packageVersion");
3838
additionalProperties.put("isAlgoliasearchClient", isAlgoliasearchClient);
39+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
3940

4041
// pubspec.yaml
4142
setPubAuthor("Algolia");

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public void processOpts() {
3030

3131
additionalProperties.put("packageName", client.equals("query-suggestions") ? "suggestions" : client);
3232
additionalProperties.put("enumClassPrefix", true);
33-
additionalProperties.put("isSearchClient", client.equals("search"));
33+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
3434

3535
String outputFolder = "algolia" + File.separator + client;
3636
setOutputDir(getOutputDir() + File.separator + outputFolder);

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void processOpts() {
4949
final String invokerFolder = (sourceFolder + '/' + invokerPackage).replace(".", "/");
5050
supportingFiles.add(new SupportingFile("build_config.mustache", invokerFolder, "BuildConfig.java"));
5151
supportingFiles.add(new SupportingFile("gradle.properties.mustache", "", "gradle.properties"));
52-
additionalProperties.put("isSearchClient", client.equals("search"));
52+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
5353

5454
Helpers.addCommonSupportingFiles(supportingFiles, "");
5555

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

+4-5
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ public class AlgoliaJavascriptGenerator extends TypeScriptNodeClientCodegen {
1818

1919
private String CLIENT;
2020
private boolean isAlgoliasearchClient;
21-
private boolean isAlgoliaCompositionClient;
2221

2322
@Override
2423
public String getName() {
@@ -31,7 +30,6 @@ public void processOpts() {
3130

3231
CLIENT = Helpers.camelize((String) additionalProperties.get("client"));
3332
isAlgoliasearchClient = CLIENT.equals("algoliasearch");
34-
isAlgoliaCompositionClient = CLIENT.equals("composition");
3533

3634
// generator specific options
3735
setSupportsES6(true);
@@ -154,9 +152,10 @@ private void setDefaultGeneratorOptions() {
154152
String packageName = getPackageName((String) additionalProperties.get("client"));
155153

156154
additionalProperties.put("apiName", CLIENT);
157-
additionalProperties.put("clientName", clientName);
155+
// Just so the full client doesn't have the weird Full naming
156+
additionalProperties.put("clientName", CLIENT.contains("composition") ? "composition" + Helpers.API_SUFFIX : clientName);
158157
additionalProperties.put("algoliaAgent", Helpers.capitalize(CLIENT));
159-
additionalProperties.put("is" + Helpers.capitalize(CLIENT) + "Client", true);
158+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
160159
additionalProperties.put("isSearchClient", CLIENT.equals("search") || isAlgoliasearchClient);
161160
additionalProperties.put("isAlgoliasearchClient", isAlgoliasearchClient);
162161
additionalProperties.put("packageVersion", Helpers.getPackageJsonVersion(packageName));
@@ -186,7 +185,7 @@ private void setDefaultGeneratorOptions() {
186185
dependency.put("withInitMethod", !name.contains("search"));
187186
dependency.put(
188187
"dependencyHasRegionalHosts",
189-
!name.contains("search") && !name.contains("recommend") && !name.contains("monitoring")
188+
!name.contains("search") && !name.contains("recommend") && !name.contains("monitoring") && !name.startsWith("composition")
190189
);
191190

192191
dependencies.add(dependency);

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void processOpts() {
4848
supportingFiles.removeIf(file -> file.getTemplateFile().contains("auth"));
4949

5050
// Search config
51-
additionalProperties.put("isSearchClient", client.equals("search"));
51+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
5252

5353
// We don't extend hashmap
5454
propertyAdditionalKeywords.clear();

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void processOpts() {
5656

5757
Helpers.addCommonSupportingFiles(supportingFiles, "");
5858

59-
additionalProperties.put("isSearchClient", client.equals("search"));
59+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
6060
additionalProperties.put("configClassname", getClientName(client) + "Config");
6161

6262
try {

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public String getName() {
2626
public void processOpts() {
2727
CLIENT = (String) additionalProperties.get("client");
2828

29-
additionalProperties.put("isSearchClient", CLIENT.equals("search"));
29+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
3030
additionalProperties.put("packageVersion", Helpers.getClientConfigField("python", "packageVersion"));
3131
additionalProperties.put(CodegenConstants.EXCLUDE_TESTS, true);
3232

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public String getName() {
2525
public void processOpts() {
2626
CLIENT = (String) additionalProperties.get("client");
2727

28-
additionalProperties.put("isSearchClient", CLIENT.equals("search"));
28+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
2929
additionalProperties.put("packageVersion", Helpers.getClientConfigField("ruby", "packageVersion"));
3030
setGemName("algolia");
3131
additionalProperties.put("modelModule", Helpers.capitalize(Helpers.camelize(CLIENT)));

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void processOpts() {
7777

7878
Helpers.addCommonSupportingFiles(supportingFiles, "");
7979

80-
additionalProperties.put("isSearchClient", client.equals("search"));
80+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
8181
typeMapping.put("AnyType", "Any");
8282

8383
nameMapping.putAll(NAME_MAPPING);

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ public void processOpts() {
179179
System.exit(1);
180180
}
181181

182-
additionalProperties.put("isSearchClient", CLIENT.equals("search"));
182+
additionalProperties.put("is" + Helpers.capitalize(Helpers.camelize((String) additionalProperties.get("client"))) + "Client", true);
183183
additionalProperties.put(CodegenConstants.EXCLUDE_TESTS, true);
184184

185185
additionalProperties.put(RESPONSE_AS, new String[] { RESPONSE_LIBRARY_ASYNC_AWAIT });
@@ -301,14 +301,14 @@ public void processOpenAPI(OpenAPI openAPI) {
301301
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> models) {
302302
OperationsMap operations = super.postProcessOperationsWithModels(objs, models);
303303
Helpers.removeHelpers(operations);
304-
GenericPropagator.propagateGenericsToOperations(operations, models);
304+
GenericPropagator.propagateGenericsToOperations("swift", CLIENT, operations, models);
305305
return operations;
306306
}
307307

308308
@Override
309309
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
310310
Map<String, ModelsMap> models = super.postProcessAllModels(objs);
311-
GenericPropagator.propagateGenericsToModels(models);
311+
GenericPropagator.propagateGenericsToModels("swift", CLIENT, models);
312312
OneOf.updateModelsOneOf(models, modelPackage);
313313
OneOf.addOneOfMetadata(models);
314314
return models;

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ public Map<String, Object> postProcessSupportingFileData(Map<String, Object> obj
143143

144144
// We can put whatever we want in the bundle, and it will be accessible in the template
145145
bundle.put("mode", mode);
146-
bundle.put("is" + Helpers.capitalize(client) + "Client", true);
147-
bundle.put("isStandaloneClient", client.contains("search") || client.equals("composition"));
146+
bundle.put("is" + Helpers.capitalize(Helpers.camelize(client)) + "Client", true);
147+
bundle.put("isStandaloneClient", client.contains("search") || client.contains("composition"));
148148
bundle.put("isSearchClient", client.contains("search")); // just so algoliasearch is treated as a search client too
149149
bundle.put("client", Helpers.createClientName(importClientName, language) + "Client");
150150
bundle.put("clientPrefix", Helpers.createClientName(importClientName, language));

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

+18-8
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,23 @@ public void addDataToBundle(Map<String, Object> bundle) throws GeneratorExceptio
4646
bundle.put("utilsPackageVersion", Helpers.getPackageJsonVersion("client-common"));
4747
bundle.put("algoliasearchVersion", Helpers.getPackageJsonVersion("algoliasearch"));
4848
bundle.put("initMethod", "init" + Helpers.capitalize(Helpers.camelize(client)));
49-
bundle.put(
50-
"clientName",
51-
client.equals("algoliasearch") ? "liteClient" : client.equals("composition") ? "compositionClient" : "algoliasearch"
52-
);
53-
bundle.put(
54-
"importPackage",
55-
client.equals("algoliasearch") ? "algoliasearch/lite" : client.equals("composition") ? "@algolia/client-composition" : "algoliasearch"
56-
);
49+
50+
switch (client) {
51+
case "composition":
52+
bundle.put("clientName", "compositionClient");
53+
bundle.put("importPackage", "@algolia/composition");
54+
break;
55+
case "composition-full":
56+
bundle.put("clientName", "compositionClient");
57+
bundle.put("importPackage", "@algolia/client-composition");
58+
break;
59+
case "algoliasearch":
60+
bundle.put("clientName", "liteClient");
61+
bundle.put("importPackage", "algoliasearch/lite");
62+
break;
63+
default:
64+
bundle.put("clientName", "algoliasearch");
65+
bundle.put("importPackage", "algoliasearch");
66+
}
5767
}
5868
}

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

+5
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@ public void run(Map<String, CodegenModel> models, Map<String, CodegenOperation>
107107
} else if (step.type.equals("method")) {
108108
ope = operations.get(step.method);
109109
if (ope == null) {
110+
// some clients don't have custom methods
111+
if (step.method.startsWith("custom") && client.equals("composition")) {
112+
continue skipTest;
113+
}
114+
110115
throw new CTSException("Cannot find operation for method: " + step.method, test.testName);
111116
}
112117
stepOut.put("stepTemplate", "tests/client/method.mustache");

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

+7-2
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,15 @@ protected <T> Map<String, T> loadCTS(String path, String clientName, Class<T> js
5151

5252
Map<String, T> cts = new TreeMap<>();
5353

54-
for (File f : allTests) {
54+
skipFile: for (File f : allTests) {
5555
String json = new String(Files.readAllBytes(Paths.get(f.getAbsolutePath())));
5656
json = injectVariables(json);
57-
cts.put(f.getName().replace(".json", ""), Json.mapper().readValue(json, jsonType));
57+
String key = f.getName().replace(".json", "");
58+
// some clients don't have custom methods
59+
if (clientName.equals("composition") && (key.equals("commonApi") || key.equals("setClientApiKey"))) {
60+
continue skipFile;
61+
}
62+
cts.put(key, Json.mapper().readValue(json, jsonType));
5863
}
5964
return cts;
6065
}

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ public void run(Map<String, CodegenModel> models, Map<String, CodegenOperation>
8181
List<Object> blocksE2E = new ArrayList<>();
8282
ParametersWithDataType paramsType = new ParametersWithDataType(models, language, client, false);
8383

84-
bundle.put("e2eAppID", client.equals("composition") ? "METIS_APPLICATION_ID" : "ALGOLIA_APPLICATION_ID");
84+
bundle.put("e2eAppID", client.startsWith("composition") ? "METIS_APPLICATION_ID" : "ALGOLIA_APPLICATION_ID");
8585
bundle.put(
8686
"e2eApiKey",
87-
client.equals("composition") ? "METIS_API_KEY" : (client.equals("monitoring") ? "MONITORING_API_KEY" : "ALGOLIA_ADMIN_KEY")
87+
client.startsWith("composition") ? "METIS_API_KEY" : (client.equals("monitoring") ? "MONITORING_API_KEY" : "ALGOLIA_ADMIN_KEY")
8888
);
8989
bundle.put("useEchoRequester", true);
9090

0 commit comments

Comments
 (0)