Skip to content

Commit 36d583e

Browse files
authoredNov 15, 2024··
fix(specs): make the searchParams compatible with v4 [skip-bc] (#4108)
1 parent 1ed8dad commit 36d583e

File tree

13 files changed

+279
-259
lines changed

13 files changed

+279
-259
lines changed
 

‎clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/extensions/SearchForHits.kt

-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ public fun SearchForHits.Companion.from(
8484
replaceSynonymsInHighlight = searchParamsObject.replaceSynonymsInHighlight,
8585
minProximity = searchParamsObject.minProximity,
8686
responseFields = searchParamsObject.responseFields,
87-
maxFacetHits = searchParamsObject.maxFacetHits,
8887
maxValuesPerFacet = searchParamsObject.maxValuesPerFacet,
8988
sortFacetValuesBy = searchParamsObject.sortFacetValuesBy,
9089
attributeCriteriaComputedByMinProximity = searchParamsObject.attributeCriteriaComputedByMinProximity,

‎clients/algoliasearch-client-swift/Sources/Search/Extra/SearchQueryExtension.swift

-2
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ public extension SearchForHits {
8787
self.replaceSynonymsInHighlight = searchParamsObject.replaceSynonymsInHighlight
8888
self.minProximity = searchParamsObject.minProximity
8989
self.responseFields = searchParamsObject.responseFields
90-
self.maxFacetHits = searchParamsObject.maxFacetHits
9190
self.maxValuesPerFacet = searchParamsObject.maxValuesPerFacet
9291
self.sortFacetValuesBy = searchParamsObject.sortFacetValuesBy
9392
self.attributeCriteriaComputedByMinProximity = searchParamsObject.attributeCriteriaComputedByMinProximity
@@ -175,7 +174,6 @@ public extension SearchForFacets {
175174
self.replaceSynonymsInHighlight = searchParamsObject.replaceSynonymsInHighlight
176175
self.minProximity = searchParamsObject.minProximity
177176
self.responseFields = searchParamsObject.responseFields
178-
self.maxFacetHits = searchParamsObject.maxFacetHits
179177
self.maxValuesPerFacet = searchParamsObject.maxValuesPerFacet
180178
self.sortFacetValuesBy = searchParamsObject.sortFacetValuesBy
181179
self.attributeCriteriaComputedByMinProximity = searchParamsObject.attributeCriteriaComputedByMinProximity

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

+22
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import com.algolia.codegen.exceptions.*;
44
import com.algolia.codegen.utils.*;
5+
import com.google.common.collect.ImmutableMap.Builder;
56
import com.samskivert.mustache.Mustache;
7+
import com.samskivert.mustache.Mustache.Lambda;
68
import io.swagger.v3.oas.models.OpenAPI;
79
import io.swagger.v3.oas.models.Operation;
810
import io.swagger.v3.oas.models.servers.Server;
@@ -156,4 +158,24 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
156158
public CodegenOperation fromOperation(String path, String httpMethod, Operation operation, List<Server> servers) {
157159
return Helpers.specifyCustomRequest(super.fromOperation(path, httpMethod, operation, servers));
158160
}
161+
162+
/** Convert a Seq type to a valid class name. */
163+
private String typeToName(String content) {
164+
// for dictionary, remove the key type
165+
String[] parts = content.replace("string, ", "").split("<");
166+
String name = "";
167+
for (int i = 0; i < parts.length; i++) {
168+
name += Helpers.capitalize(parts[i].replace(">", "").replace(",", "").replace(" ", ""));
169+
}
170+
return name;
171+
}
172+
173+
@Override
174+
protected Builder<String, Lambda> addMustacheLambdas() {
175+
Builder<String, Lambda> lambdas = super.addMustacheLambdas();
176+
177+
lambdas.put("type-to-name", (Mustache.Lambda) (fragment, writer) -> writer.write(typeToName(fragment.execute())));
178+
179+
return lambdas;
180+
}
159181
}

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

+2
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,14 @@ public class AlgoliaSwiftGenerator extends Swift5ClientCodegen {
7373
"highlightresultoption",
7474
"ignoreplurals",
7575
"indexsettingsassearchparams",
76+
"insideboundingbox",
7677
"languages",
7778
"matchedgeolocation",
7879
"matchlevel",
7980
"mode",
8081
"numericfilters",
8182
"optionalfilters",
83+
"optionalwords",
8284
"params",
8385
"personalization",
8486
"promote",

‎playground/java/src/main/java/com/algolia/playground/Insights.java

+19-24
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,31 @@
55
import com.algolia.config.LogLevel;
66
import com.algolia.model.insights.ClickEvent;
77
import com.algolia.model.insights.ClickedObjectIDs;
8-
import com.algolia.model.insights.EventsItems;
98
import com.algolia.model.insights.InsightsEvents;
109
import io.github.cdimascio.dotenv.Dotenv;
11-
1210
import java.util.List;
1311

1412
public class Insights {
1513

16-
public static void main(String[] args) throws Exception {
17-
var dotenv = Dotenv.configure().directory("../").load();
18-
var appId = dotenv.get("ALGOLIA_APPLICATION_ID");
19-
var apiKey = dotenv.get("ALGOLIA_SEARCH_KEY");
20-
var indexName = dotenv.get("SEARCH_INDEX");
14+
public static void main(String[] args) throws Exception {
15+
var dotenv = Dotenv.configure().directory("../").load();
16+
var appId = dotenv.get("ALGOLIA_APPLICATION_ID");
17+
var apiKey = dotenv.get("ALGOLIA_SEARCH_KEY");
18+
var indexName = dotenv.get("SEARCH_INDEX");
2119

22-
var options = new ClientOptions.Builder()
23-
.addAlgoliaAgentSegment("Playground")
24-
.setLogLevel(LogLevel.BODY)
25-
.build();
20+
var options = new ClientOptions.Builder().addAlgoliaAgentSegment("Playground").setLogLevel(LogLevel.BODY).build();
2621

27-
var client = new InsightsClient(appId, apiKey, options);
28-
var params = new InsightsEvents();
29-
var event = new ClickedObjectIDs()
30-
.setEventType(ClickEvent.CLICK)
31-
.setUserToken("user")
32-
.setIndex(indexName)
33-
.setObjectIDs(List.of("id123"))
34-
.setEventName("click");
35-
params.addEvents(event);
36-
var result = client.pushEvents(params);
37-
System.out.println(result);
38-
client.close();
39-
}
22+
var client = new InsightsClient(appId, apiKey, options);
23+
var params = new InsightsEvents();
24+
var event = new ClickedObjectIDs()
25+
.setEventType(ClickEvent.CLICK)
26+
.setUserToken("user")
27+
.setIndex(indexName)
28+
.setObjectIDs(List.of("id123"))
29+
.setEventName("click");
30+
params.addEvents(event);
31+
var result = client.pushEvents(params);
32+
System.out.println(result);
33+
client.close();
34+
}
4035
}

‎playground/java/src/main/java/com/algolia/playground/Search.java

+58-63
Original file line numberDiff line numberDiff line change
@@ -2,90 +2,85 @@
22

33
import com.algolia.api.SearchClient;
44
import com.algolia.config.ClientOptions;
5-
import com.algolia.config.LogLevel;
65
import com.algolia.model.search.*;
76
import io.github.cdimascio.dotenv.Dotenv;
8-
97
import java.util.Arrays;
108
import java.util.List;
119
import java.util.Map;
1210

1311
class Actor extends Hit {
1412

15-
public String name;
13+
public String name;
1614

17-
public Actor() {
18-
}
15+
public Actor() {}
1916

20-
public Actor(String name) {
21-
this.name = name;
22-
}
17+
public Actor(String name) {
18+
this.name = name;
19+
}
2320
}
2421

2522
public class Search {
2623

27-
public static void main(String[] args) throws Exception {
28-
var dotenv = Dotenv.configure().directory("../").load();
29-
var appId = dotenv.get("ALGOLIA_APPLICATION_ID");
30-
var apiKey = dotenv.get("ALGOLIA_ADMIN_KEY");
31-
var indexName = dotenv.get("SEARCH_INDEX");
32-
var query = dotenv.get("SEARCH_QUERY");
24+
public static void main(String[] args) throws Exception {
25+
var dotenv = Dotenv.configure().directory("../").load();
26+
var appId = dotenv.get("ALGOLIA_APPLICATION_ID");
27+
var apiKey = dotenv.get("ALGOLIA_ADMIN_KEY");
28+
var indexName = dotenv.get("SEARCH_INDEX");
29+
var query = dotenv.get("SEARCH_QUERY");
3330

34-
var options = new ClientOptions.Builder()
35-
.addAlgoliaAgentSegment("Playground", "1.0.0")
36-
//.setLogLevel(LogLevel.BODY)
37-
.build();
31+
var options = new ClientOptions.Builder()
32+
.addAlgoliaAgentSegment("Playground", "1.0.0")
33+
// .setLogLevel(LogLevel.BODY)
34+
.build();
3835

39-
var client = new SearchClient(appId, apiKey, options);
40-
var records = Arrays.asList(new Actor("Tom Cruise"), new Actor("Scarlett Johansson"));
41-
var batch = records.stream()
42-
.map(entry -> new BatchRequest().setAction(Action.ADD_OBJECT).setBody(entry))
43-
.toList();
44-
var response = client.batch(indexName, new BatchWriteParams().setRequests(batch));
45-
client.waitForTask(indexName, response.getTaskID());
36+
var client = new SearchClient(appId, apiKey, options);
37+
var records = Arrays.asList(new Actor("Tom Cruise"), new Actor("Scarlett Johansson"));
38+
var batch = records.stream().map(entry -> new BatchRequest().setAction(Action.ADD_OBJECT).setBody(entry)).toList();
39+
var response = client.batch(indexName, new BatchWriteParams().setRequests(batch));
40+
client.waitForTask(indexName, response.getTaskID());
4641

47-
var browse = client.browseObjects(indexName, new BrowseParamsObject().setQuery("tom"), Actor.class);
48-
System.out.println("-> Browse Objects:");
49-
for (var hit : browse) {
50-
System.out.println("> " + hit.name);
51-
}
52-
53-
singleSearch(client, indexName, query);
54-
multiSearch(indexName, query, client);
55-
client.close();
42+
var browse = client.browseObjects(indexName, new BrowseParamsObject().setQuery("tom"), Actor.class);
43+
System.out.println("-> Browse Objects:");
44+
for (var hit : browse) {
45+
System.out.println("> " + hit.name);
5646
}
5747

58-
private static void singleSearch(SearchClient client, String indexName, String query) {
59-
SearchParamsObject params = new SearchParamsObject()
60-
.setQuery(query)
61-
.setAroundPrecision(AroundPrecision.of(1000))
62-
.setAroundRadius(AroundRadiusAll.ALL);
63-
SearchResponse<Actor> actorSearchResponse = client.searchSingleIndex(indexName, params, Actor.class);
64-
System.out.println("-> Single Index Search:");
65-
for (var hit : actorSearchResponse.getHits()) {
66-
System.out.println("> " + hit.name);
67-
}
48+
singleSearch(client, indexName, query);
49+
multiSearch(indexName, query, client);
50+
client.close();
51+
}
52+
53+
private static void singleSearch(SearchClient client, String indexName, String query) {
54+
SearchParamsObject params = new SearchParamsObject()
55+
.setQuery(query)
56+
.setAroundPrecision(AroundPrecision.of(1000))
57+
.setAroundRadius(AroundRadiusAll.ALL);
58+
SearchResponse<Actor> actorSearchResponse = client.searchSingleIndex(indexName, params, Actor.class);
59+
System.out.println("-> Single Index Search:");
60+
for (var hit : actorSearchResponse.getHits()) {
61+
System.out.println("> " + hit.name);
6862
}
63+
}
6964

70-
private static void multiSearch(String indexName, String query, SearchClient client) {
71-
var searchMethodParams = new SearchMethodParams();
72-
var searchQuery = new SearchForHits()
73-
.setIndexName(indexName)
74-
.setQuery(query)
75-
.addAttributesToSnippet("title")
76-
.addAttributesToSnippet("alternative_titles");
77-
List<SearchQuery> requests = List.of(searchQuery);
78-
searchMethodParams.setRequests(requests);
65+
private static void multiSearch(String indexName, String query, SearchClient client) {
66+
var searchMethodParams = new SearchMethodParams();
67+
var searchQuery = new SearchForHits()
68+
.setIndexName(indexName)
69+
.setQuery(query)
70+
.addAttributesToSnippet("title")
71+
.addAttributesToSnippet("alternative_titles");
72+
List<SearchQuery> requests = List.of(searchQuery);
73+
searchMethodParams.setRequests(requests);
7974

80-
var responses = client.search(searchMethodParams, Actor.class);
81-
var results = responses.getResults();
82-
System.out.println("-> Multi Index Search:");
83-
for (var result : results) {
84-
var response = (SearchResponse) result;
85-
for (var hit : response.getHits()) {
86-
var record = (Map) hit;
87-
System.out.println("> " + record.get("name"));
88-
}
89-
}
75+
var responses = client.search(searchMethodParams, Actor.class);
76+
var results = responses.getResults();
77+
System.out.println("-> Multi Index Search:");
78+
for (var result : results) {
79+
var response = (SearchResponse) result;
80+
for (var hit : response.getHits()) {
81+
var record = (Map) hit;
82+
System.out.println("> " + record.get("name"));
83+
}
9084
}
85+
}
9186
}

‎specs/common/schemas/IndexSettings.yml

+38-29
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,8 @@ baseIndexSettings:
283283
This applies faceting _after_ deduplication, which will result in accurate facet counts.
284284
example: url
285285
type: string
286+
maxFacetHits:
287+
$ref: '#/maxFacetHits'
286288

287289
indexSettingsAsSearchParams:
288290
type: object
@@ -570,33 +572,7 @@ indexSettingsAsSearchParams:
570572
x-categories:
571573
- Query strategy
572574
optionalWords:
573-
type: array
574-
items:
575-
type: string
576-
example:
577-
- blue
578-
- iphone case
579-
description: |
580-
Words that should be considered optional when found in the query.
581-
582-
By default, records must match all words in the search query to be included in the search results.
583-
Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words.
584-
For example, if the search query is "action video" and "video" is an optional word,
585-
the search engine runs two queries. One for "action video" and one for "action".
586-
Records that match all words are ranked higher.
587-
588-
For a search query with 4 or more words **and** all its words are optional,
589-
the number of matched words required for a record to be included in the search results increases for every 1,000 records:
590-
591-
- If `optionalWords` has less than 10 words, the required number of matched words increases by 1:
592-
results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words.
593-
- If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down).
594-
For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words.
595-
596-
For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words).
597-
default: []
598-
x-categories:
599-
- Query strategy
575+
$ref: '#/optionalWords'
600576
disableExactOnAttributes:
601577
type: array
602578
items:
@@ -708,8 +684,6 @@ indexSettingsAsSearchParams:
708684
default: ['*']
709685
x-categories:
710686
- Advanced
711-
maxFacetHits:
712-
$ref: '#/maxFacetHits'
713687
maxValuesPerFacet:
714688
type: integer
715689
description: Maximum number of facet values to return for each facet.
@@ -1238,3 +1212,38 @@ booleanString:
12381212
enum:
12391213
- 'true'
12401214
- 'false'
1215+
1216+
optionalWords:
1217+
oneOf:
1218+
- type: string
1219+
- type: 'null'
1220+
- $ref: '#/optionalWordsArray'
1221+
1222+
optionalWordsArray:
1223+
type: array
1224+
items:
1225+
type: string
1226+
example:
1227+
- blue
1228+
- iphone case
1229+
description: |
1230+
Words that should be considered optional when found in the query.
1231+
1232+
By default, records must match all words in the search query to be included in the search results.
1233+
Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words.
1234+
For example, if the search query is "action video" and "video" is an optional word,
1235+
the search engine runs two queries. One for "action video" and one for "action".
1236+
Records that match all words are ranked higher.
1237+
1238+
For a search query with 4 or more words **and** all its words are optional,
1239+
the number of matched words required for a record to be included in the search results increases for every 1,000 records:
1240+
1241+
- If `optionalWords` has less than 10 words, the required number of matched words increases by 1:
1242+
results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words.
1243+
- If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down).
1244+
For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words.
1245+
1246+
For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words).
1247+
default: []
1248+
x-categories:
1249+
- Query strategy

‎specs/common/schemas/SearchParams.yml

+6
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,12 @@ aroundLatLngViaIP:
337337
- Geo-Search
338338

339339
insideBoundingBox:
340+
oneOf:
341+
- type: string
342+
- type: 'null'
343+
- $ref: '#/insideBoundingBoxArray'
344+
345+
insideBoundingBoxArray:
340346
type: array
341347
items:
342348
type: array

‎specs/composition/common/schemas/SearchParams.yml

+1-27
Original file line numberDiff line numberDiff line change
@@ -908,33 +908,7 @@ InsetsQueryParameters:
908908
x-categories:
909909
- Query strategy
910910
optionalWords:
911-
type: array
912-
items:
913-
type: string
914-
example:
915-
- blue
916-
- iphone case
917-
description: |
918-
Words that should be considered optional when found in the query.
919-
920-
By default, records must match all words in the search query to be included in the search results.
921-
Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words.
922-
For example, if the search query is "action video" and "video" is an optional word,
923-
the search engine runs two queries. One for "action video" and one for "action".
924-
Records that match all words are ranked higher.
925-
926-
For a search query with 4 or more words **and** all its words are optional,
927-
the number of matched words required for a record to be included in the search results increases for every 1,000 records:
928-
929-
- If `optionalWords` has less than 10 words, the required number of matched words increases by 1:
930-
results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words.
931-
- If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down).
932-
For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words.
933-
934-
For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words).
935-
default: []
936-
x-categories:
937-
- Query strategy
911+
$ref: '../../../common/schemas/IndexSettings.yml#/optionalWords'
938912
disableExactOnAttributes:
939913
type: array
940914
items:

‎specs/recommend/common/schemas/IndexSettings.yml

-2
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ baseRecommendIndexSettings:
7272
$ref: '../../../common/schemas/IndexSettings.yml#/indexSettingsAsSearchParams/properties/minProximity'
7373
responseFields:
7474
$ref: '../../../common/schemas/IndexSettings.yml#/indexSettingsAsSearchParams/properties/responseFields'
75-
maxFacetHits:
76-
$ref: '../../../common/schemas/IndexSettings.yml#/indexSettingsAsSearchParams/properties/maxFacetHits'
7775
maxValuesPerFacet:
7876
$ref: '../../../common/schemas/IndexSettings.yml#/indexSettingsAsSearchParams/properties/maxValuesPerFacet'
7977
sortFacetValuesBy:

‎templates/csharp/modelOneOf.mustache

+4-4
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
/// Initializes a new instance of the {{classname}} class
3131
/// with a {{#lambdaCref}}{{{dataType}}}{{/lambdaCref}}
3232
/// </summary>
33-
/// <param name="actualInstance">An instance of {{dataType}}.</param>
33+
/// <param name="actualInstance">An instance of {{{dataType}}}.</param>
3434
public {{classname}}({{{dataType}}} actualInstance)
3535
{
3636
ActualInstance = actualInstance{{^model.isNullable}}{{^isPrimitiveType}}{{^allowableValues}} ?? throw new ArgumentException("Invalid instance found. Must not be null."){{/allowableValues}}{{/isPrimitiveType}}{{#isPrimitiveType}}{{#isArray}} ?? throw new ArgumentException("Invalid instance found. Must not be null."){{/isArray}}{{#isFreeFormObject}} ?? throw new ArgumentException("Invalid instance found. Must not be null."){{/isFreeFormObject}}{{#isString}} ?? throw new ArgumentException("Invalid instance found. Must not be null."){{/isString}}{{/isPrimitiveType}}{{/model.isNullable}};
@@ -44,7 +44,7 @@
4444
/// Initializes a new instance of the {{classname}} class
4545
/// with a {{#lambdaCref}}{{{dataType}}}{{/lambdaCref}}
4646
/// </summary>
47-
/// <param name="actualInstance">An instance of {{dataType}}.</param>
47+
/// <param name="actualInstance">An instance of {{{dataType}}}.</param>
4848
public {{classname}}(object actualInstance)
4949
{
5050
ActualInstance = actualInstance{{^model.isNullable}}{{^isPrimitiveType}}{{^allowableValues}} ?? throw new ArgumentException("Invalid instance found. Must not be null."){{/allowableValues}}{{/isPrimitiveType}}{{#isPrimitiveType}}{{#isArray}} ?? throw new ArgumentException("Invalid instance found. Must not be null."){{/isArray}}{{#isFreeFormObject}} ?? throw new ArgumentException("Invalid instance found. Must not be null."){{/isFreeFormObject}}{{#isString}} ?? throw new ArgumentException("Invalid instance found. Must not be null."){{/isString}}{{/isPrimitiveType}}{{/model.isNullable}};
@@ -65,7 +65,7 @@
6565
/// the InvalidClassException will be thrown{{/lambda.escape-generic}}
6666
/// </summary>
6767
/// <returns>An instance of {{#lambda.escape-generic}}{{dataType}}{{/lambda.escape-generic}}</returns>
68-
public {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}<T>{{/vendorExtensions.x-has-child-generic}} As{{#lambda.titlecase}}{{baseType}}{{/lambda.titlecase}}{{#lambda.titlecase}}{{{items.dataType}}}{{/lambda.titlecase}}()
68+
public {{{dataType}}}{{#vendorExtensions.x-has-child-generic}}<T>{{/vendorExtensions.x-has-child-generic}} As{{#lambda.type-to-name}}{{{datatypeWithEnum}}}{{/lambda.type-to-name}}()
6969
{
7070
return ({{{dataType}}}{{#vendorExtensions.x-has-child-generic}}<T>{{/vendorExtensions.x-has-child-generic}})ActualInstance;
7171
}
@@ -81,7 +81,7 @@
8181
/// {{#lambda.escape-generic}}Check if the actual instance is of `{{{dataType}}}` type.{{/lambda.escape-generic}}
8282
/// </summary>
8383
/// <returns>Whether or not the instance is the type</returns>
84-
public bool Is{{#lambda.titlecase}}{{baseType}}{{/lambda.titlecase}}{{#lambda.titlecase}}{{{items.dataType}}}{{/lambda.titlecase}}()
84+
public bool Is{{#lambda.type-to-name}}{{{datatypeWithEnum}}}{{/lambda.type-to-name}}()
8585
{
8686
return ActualInstance.GetType() == typeof({{{dataType}}}{{#vendorExtensions.x-has-child-generic}}<T>{{/vendorExtensions.x-has-child-generic}});
8787
}

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

+28-22
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ import type {
4040
CustomGetProps,
4141
CustomPostProps,
4242
CustomPutProps,
43-
DeleteSourceProps,
4443
DeletedAtResponse,
44+
DeleteSourceProps,
4545
Distinct,
4646
Edit,
4747
EditType,
@@ -50,19 +50,21 @@ import type {
5050
Exhaustive,
5151
FacetFilters,
5252
FacetOrdering,
53-
FacetStats,
5453
Facets,
54+
FacetStats,
5555
GetTaskProps,
5656
HighlightResult,
5757
HighlightResultOption,
5858
IgnorePlurals,
5959
IndexSettingsAsSearchParams,
60+
InsideBoundingBox,
6061
Languages,
61-
MatchLevel,
6262
MatchedGeoLocation,
63+
MatchLevel,
6364
Mode,
6465
NumericFilters,
6566
OptionalFilters,
67+
OptionalWords,
6668
Params,
6769
Personalization,
6870
Promote,
@@ -71,14 +73,14 @@ import type {
7173
QueryType,
7274
Range,
7375
RankingInfo,
74-
ReRankingApplyFilter,
7576
Redirect,
7677
RedirectRuleIndexData,
7778
RedirectRuleIndexMetadata,
7879
RedirectURL,
7980
RemoveStopWords,
8081
RemoveWordsIfNoResults,
8182
RenderingContent,
83+
ReRankingApplyFilter,
8284
SearchPagination,
8385
SearchParams,
8486
SearchParamsObject,
@@ -105,14 +107,25 @@ import type {
105107
EventType,
106108
} from '@algolia/client-personalization';
107109

108-
type Region = {{#dependencies}} {{#dependencyHasRegionalHosts}}{{^-first}}|{{/-first}}{{#lambda.titlecase}}{{{dependencyName}}}Region{{/lambda.titlecase}} {{/dependencyHasRegionalHosts}}{{/dependencies}};
109-
type RegionOptions = {{#dependencies}} {{#dependencyHasRegionalHosts}}{{^-first}}|{{/-first}}{{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}} {{/dependencyHasRegionalHosts}}{{/dependencies}};
110-
111110
{{#dependencies}}
112111
export * from '{{{dependencyPackage}}}';
113112
{{/dependencies}}
114113
export * from '@algolia/client-search';
115114

115+
export type Region = {{#dependencies}} {{#dependencyHasRegionalHosts}}{{^-first}}|{{/-first}}{{#lambda.titlecase}}{{{dependencyName}}}Region{{/lambda.titlecase}} {{/dependencyHasRegionalHosts}}{{/dependencies}};
116+
export type RegionOptions = {{#dependencies}} {{#dependencyHasRegionalHosts}}{{^-first}}|{{/-first}}{{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}} {{/dependencyHasRegionalHosts}}{{/dependencies}};
117+
118+
export type {
119+
Status,
120+
EventType,
121+
{{#dependencies}}
122+
{{#dependencyHasRegionalHosts}}
123+
{{#lambda.titlecase}}{{{dependencyName}}}Region{{/lambda.titlecase}},
124+
{{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}},
125+
{{/dependencyHasRegionalHosts}}
126+
{{/dependencies}}
127+
};
128+
116129
export type {
117130
Action,
118131
AdvancedSyntaxFeatures,
@@ -142,30 +155,31 @@ export type {
142155
CustomGetProps,
143156
CustomPostProps,
144157
CustomPutProps,
145-
DeleteSourceProps,
146158
DeletedAtResponse,
159+
DeleteSourceProps,
147160
Distinct,
148161
Edit,
149162
EditType,
150163
ErrorBase,
151-
EventType,
152164
ExactOnSingleWordQuery,
153165
Exhaustive,
154166
FacetFilters,
155167
FacetOrdering,
156-
FacetStats,
157168
Facets,
169+
FacetStats,
158170
GetTaskProps,
159171
HighlightResult,
160172
HighlightResultOption,
161173
IgnorePlurals,
162174
IndexSettingsAsSearchParams,
175+
InsideBoundingBox,
163176
Languages,
164-
MatchLevel,
165177
MatchedGeoLocation,
178+
MatchLevel,
166179
Mode,
167180
NumericFilters,
168181
OptionalFilters,
182+
OptionalWords,
169183
Params,
170184
Personalization,
171185
Promote,
@@ -174,16 +188,14 @@ export type {
174188
QueryType,
175189
Range,
176190
RankingInfo,
177-
ReRankingApplyFilter,
178191
Redirect,
179192
RedirectRuleIndexData,
180193
RedirectRuleIndexMetadata,
181194
RedirectURL,
182-
Region,
183-
RegionOptions,
184195
RemoveStopWords,
185196
RemoveWordsIfNoResults,
186197
RenderingContent,
198+
ReRankingApplyFilter,
187199
SearchPagination,
188200
SearchParams,
189201
SearchParamsObject,
@@ -193,7 +205,6 @@ export type {
193205
SnippetResultOption,
194206
SortRemainingBy,
195207
Source,
196-
Status,
197208
SupportedLanguage,
198209
TagFilters,
199210
TaskStatus,
@@ -202,15 +213,10 @@ export type {
202213
TypoToleranceEnum,
203214
Value,
204215
Widgets,
205-
apiClientVersion,
206-
{{#dependencies}}
207-
{{#dependencyHasRegionalHosts}}
208-
{{#lambda.titlecase}}{{{dependencyName}}}Region{{/lambda.titlecase}},
209-
{{#lambda.titlecase}}{{{dependencyName}}}RegionOptions{{/lambda.titlecase}},
210-
{{/dependencyHasRegionalHosts}}
211-
{{/dependencies}}
212216
};
213217

218+
export { apiClientVersion };
219+
214220
/**
215221
* Options forwarded to the client initialized via the `init` method.
216222
*/

‎tests/output/javascript/yarn.lock

+101-85
Original file line numberDiff line numberDiff line change
@@ -347,94 +347,102 @@ __metadata:
347347
languageName: node
348348
linkType: hard
349349

350-
"@types/node@npm:22.8.1":
351-
version: 22.8.1
352-
resolution: "@types/node@npm:22.8.1"
350+
"@types/node@npm:22.9.0":
351+
version: 22.9.0
352+
resolution: "@types/node@npm:22.9.0"
353353
dependencies:
354354
undici-types: "npm:~6.19.8"
355-
checksum: 10/ae969e3d956dead1422c35d568ea5d48dd124a38a1a337cbd120fec6e13cc92b45c7308f91f1139fcd2337a67d4704d5614d6a2c444b1fb268f85e9f1d24c713
355+
checksum: 10/a7df3426891868b0f5fb03e46aeddd8446178233521c624a44531c92a040cf08a82d8235f7e1e02af731fd16984665d4d71f3418caf9c2788313b10f040d615d
356356
languageName: node
357357
linkType: hard
358358

359-
"@vitest/expect@npm:2.1.3":
360-
version: 2.1.3
361-
resolution: "@vitest/expect@npm:2.1.3"
359+
"@vitest/expect@npm:2.1.4":
360+
version: 2.1.4
361+
resolution: "@vitest/expect@npm:2.1.4"
362362
dependencies:
363-
"@vitest/spy": "npm:2.1.3"
364-
"@vitest/utils": "npm:2.1.3"
365-
chai: "npm:^5.1.1"
363+
"@vitest/spy": "npm:2.1.4"
364+
"@vitest/utils": "npm:2.1.4"
365+
chai: "npm:^5.1.2"
366366
tinyrainbow: "npm:^1.2.0"
367-
checksum: 10/94e61e01f14cfcd9ced0e7ac1bbdeee55ff4bf68f09d8f244fd7d73f97b106f35d10cba3fe7a0132464c312206f2eee9e83b16a8d761101b61da053890062858
367+
checksum: 10/0b3806d39233843a9661f6d5ccde489c9b6d278426f889198a862d601dcc186f107398487374195eb0dae90c9f69628f3f216200d644f817fa25d64ae1bc537e
368368
languageName: node
369369
linkType: hard
370370

371-
"@vitest/mocker@npm:2.1.3":
372-
version: 2.1.3
373-
resolution: "@vitest/mocker@npm:2.1.3"
371+
"@vitest/mocker@npm:2.1.4":
372+
version: 2.1.4
373+
resolution: "@vitest/mocker@npm:2.1.4"
374374
dependencies:
375-
"@vitest/spy": "npm:2.1.3"
375+
"@vitest/spy": "npm:2.1.4"
376376
estree-walker: "npm:^3.0.3"
377-
magic-string: "npm:^0.30.11"
377+
magic-string: "npm:^0.30.12"
378378
peerDependencies:
379-
"@vitest/spy": 2.1.3
380-
msw: ^2.3.5
379+
msw: ^2.4.9
381380
vite: ^5.0.0
382381
peerDependenciesMeta:
383382
msw:
384383
optional: true
385384
vite:
386385
optional: true
387-
checksum: 10/84be8830d6e965109730257d7a84b3d7594db0998ae55decdbfc304857c1c7d29b49f1f5b23f2addcbce1bd7e8bb33832407737a9bb3f95cb3bf7bb312db4d9d
386+
checksum: 10/00f323cc184977b247a1f0b9c51fdcceb97377031d728c69ef0bd14ebf0256742a94c68c6caa90eb073ed3de4277febd7d54715508bff05bb2fb7767ce11afbe
388387
languageName: node
389388
linkType: hard
390389

391-
"@vitest/pretty-format@npm:2.1.3, @vitest/pretty-format@npm:^2.1.3":
392-
version: 2.1.3
393-
resolution: "@vitest/pretty-format@npm:2.1.3"
390+
"@vitest/pretty-format@npm:2.1.4":
391+
version: 2.1.4
392+
resolution: "@vitest/pretty-format@npm:2.1.4"
394393
dependencies:
395394
tinyrainbow: "npm:^1.2.0"
396-
checksum: 10/d9382ee93f0f32e2ef8fe03bda818e5277f052a50ddb05b6a6cf0864b2ccb228484f12f130c05faf62dc2140292ffafc213f2941b0fa24058b3ee2943daa286c
395+
checksum: 10/434e6a7903f72a3796f26516ad728aca92724909e18fd3f2cd4b9b8b0ae2cc7b4cd86e92ab9f2ac7bc005c7a7ef0bcb9d768c0264b4b0625f1f0748cc615f1f6
397396
languageName: node
398397
linkType: hard
399398

400-
"@vitest/runner@npm:2.1.3":
401-
version: 2.1.3
402-
resolution: "@vitest/runner@npm:2.1.3"
399+
"@vitest/pretty-format@npm:^2.1.4":
400+
version: 2.1.5
401+
resolution: "@vitest/pretty-format@npm:2.1.5"
403402
dependencies:
404-
"@vitest/utils": "npm:2.1.3"
403+
tinyrainbow: "npm:^1.2.0"
404+
checksum: 10/98bf4e20c0efb893ffb2fe7713f84ccafd362d5022222ce097aab2368c2b0eccf3578d7ef4c26ea2f3d52e3c95f5fc7185ba36d7475d95537aab31ec4ac55d3a
405+
languageName: node
406+
linkType: hard
407+
408+
"@vitest/runner@npm:2.1.4":
409+
version: 2.1.4
410+
resolution: "@vitest/runner@npm:2.1.4"
411+
dependencies:
412+
"@vitest/utils": "npm:2.1.4"
405413
pathe: "npm:^1.1.2"
406-
checksum: 10/cdf9b82d388c1cc148753f4a8632dfcadf9c4a1c0e065fdcd485d5af824af62507fd7eab9efb21244009775c05773ccb59547043af522a5ab6d216433321066e
414+
checksum: 10/51dbea968ace6edefb058d88c9736fa524a64f4dc750ec163b43f5015a31b31f2d80a7b20de4c2a819fbfb172162ad4d0f8428c78fa7ca832c1a1b135161ac4b
407415
languageName: node
408416
linkType: hard
409417

410-
"@vitest/snapshot@npm:2.1.3":
411-
version: 2.1.3
412-
resolution: "@vitest/snapshot@npm:2.1.3"
418+
"@vitest/snapshot@npm:2.1.4":
419+
version: 2.1.4
420+
resolution: "@vitest/snapshot@npm:2.1.4"
413421
dependencies:
414-
"@vitest/pretty-format": "npm:2.1.3"
415-
magic-string: "npm:^0.30.11"
422+
"@vitest/pretty-format": "npm:2.1.4"
423+
magic-string: "npm:^0.30.12"
416424
pathe: "npm:^1.1.2"
417-
checksum: 10/2c0c4ad8abb758f2f76d1d6094f8928360437e09d0a59e0c6a85a544c892cc41a5324ebbc5657a66c8a3793e51cbf58e357c7f71e899f4e5c5eb76e8c9745abf
425+
checksum: 10/785f74cf5f7745eb0dcb73fe3c628bc1f687c6341e8ba63d722fa83609d21465302ebd208405b9f91ce87fb36720a0f361c949983d5caccbcb8ec2119f995483
418426
languageName: node
419427
linkType: hard
420428

421-
"@vitest/spy@npm:2.1.3":
422-
version: 2.1.3
423-
resolution: "@vitest/spy@npm:2.1.3"
429+
"@vitest/spy@npm:2.1.4":
430+
version: 2.1.4
431+
resolution: "@vitest/spy@npm:2.1.4"
424432
dependencies:
425-
tinyspy: "npm:^3.0.0"
426-
checksum: 10/94d6f1bc34da5d0c973d9382c133b938e555fcf2d238edf0aaad3de1a98dd57ebf7c104ba229c6beec48122d2e6f55386d8d2cf96a5804dc95ac683a54754cc7
433+
tinyspy: "npm:^3.0.2"
434+
checksum: 10/4dd3e7c28928abb047c567b3711d1cbccd59aaae294c57efaab83cdd723b568882de5376fc086c919a4cb6d1df5e6cc0502b3171cce06dfce87863c731fd5d36
427435
languageName: node
428436
linkType: hard
429437

430-
"@vitest/utils@npm:2.1.3":
431-
version: 2.1.3
432-
resolution: "@vitest/utils@npm:2.1.3"
438+
"@vitest/utils@npm:2.1.4":
439+
version: 2.1.4
440+
resolution: "@vitest/utils@npm:2.1.4"
433441
dependencies:
434-
"@vitest/pretty-format": "npm:2.1.3"
435-
loupe: "npm:^3.1.1"
442+
"@vitest/pretty-format": "npm:2.1.4"
443+
loupe: "npm:^3.1.2"
436444
tinyrainbow: "npm:^1.2.0"
437-
checksum: 10/f064e6634cb84c925a17d8937df7441d150c3e24fa5bbd6304151d11dab6cdeb0cb3d5a95a9aacb8b416c87fb0d9aa8c6b9cc5e174191784231e8345948d6d18
445+
checksum: 10/aaaf5310943abca0f0080d9638e67838f7e519d5670ec32e61184915efdfa5ec61d9b495cad6cb7dc492e8caeed14593e78dda77c8ea59c1671a231661f57142
438446
languageName: node
439447
linkType: hard
440448

@@ -550,16 +558,16 @@ __metadata:
550558
languageName: node
551559
linkType: hard
552560

553-
"chai@npm:^5.1.1":
554-
version: 5.1.1
555-
resolution: "chai@npm:5.1.1"
561+
"chai@npm:^5.1.2":
562+
version: 5.1.2
563+
resolution: "chai@npm:5.1.2"
556564
dependencies:
557565
assertion-error: "npm:^2.0.1"
558566
check-error: "npm:^2.1.1"
559567
deep-eql: "npm:^5.0.1"
560568
loupe: "npm:^3.1.0"
561569
pathval: "npm:^2.0.0"
562-
checksum: 10/ee67279a5613bd36dc1dc13660042429ae2f1dc5a9030a6abcf381345866dfb5bce7bc10b9d74c8de86b6f656489f654bbbef3f3361e06925591e6a00c72afff
570+
checksum: 10/e8c2bbc83cb5a2f87130d93056d4cfbbe04106e12aa798b504816dbe3fa538a9f68541b472e56cbf0f54558b501d7e31867d74b8218abcd5a8cc8ba536fba46c
563571
languageName: node
564572
linkType: hard
565573

@@ -611,7 +619,7 @@ __metadata:
611619
languageName: node
612620
linkType: hard
613621

614-
"debug@npm:4, debug@npm:^4.3.4, debug@npm:^4.3.6":
622+
"debug@npm:4, debug@npm:^4.3.4, debug@npm:^4.3.7":
615623
version: 4.3.7
616624
resolution: "debug@npm:4.3.7"
617625
dependencies:
@@ -770,6 +778,13 @@ __metadata:
770778
languageName: node
771779
linkType: hard
772780

781+
"expect-type@npm:^1.1.0":
782+
version: 1.1.0
783+
resolution: "expect-type@npm:1.1.0"
784+
checksum: 10/05fca80ddc7d493a89361f783c6b000750fa04a8226bc24701f3b90adb0efc2fb467f2a0baaed4015a02d8b9034ef5bb87521df9dba980f50b1105bd596ef833
785+
languageName: node
786+
linkType: hard
787+
773788
"exponential-backoff@npm:^3.1.1":
774789
version: 3.1.1
775790
resolution: "exponential-backoff@npm:3.1.1"
@@ -954,11 +969,11 @@ __metadata:
954969
dependencies:
955970
"@algolia/client-composition": "link:../../../clients/algoliasearch-client-javascript/packages/client-composition"
956971
"@algolia/requester-testing": "link:../../../clients/algoliasearch-client-javascript/packages/requester-testing"
957-
"@types/node": "npm:22.8.1"
972+
"@types/node": "npm:22.9.0"
958973
algoliasearch: "link:../../../clients/algoliasearch-client-javascript/packages/algoliasearch"
959974
dotenv: "npm:16.4.5"
960975
typescript: "npm:5.6.3"
961-
vitest: "npm:2.1.3"
976+
vitest: "npm:2.1.4"
962977
languageName: unknown
963978
linkType: soft
964979

@@ -969,7 +984,7 @@ __metadata:
969984
languageName: node
970985
linkType: hard
971986

972-
"loupe@npm:^3.1.0, loupe@npm:^3.1.1":
987+
"loupe@npm:^3.1.0, loupe@npm:^3.1.2":
973988
version: 3.1.2
974989
resolution: "loupe@npm:3.1.2"
975990
checksum: 10/8f5734e53fb64cd914aa7d986e01b6d4c2e3c6c56dcbd5428d71c2703f0ab46b5ab9f9eeaaf2b485e8a1c43f865bdd16ec08ae1a661c8f55acdbd9f4d59c607a
@@ -983,7 +998,7 @@ __metadata:
983998
languageName: node
984999
linkType: hard
9851000

986-
"magic-string@npm:^0.30.11":
1001+
"magic-string@npm:^0.30.12":
9871002
version: 0.30.12
9881003
resolution: "magic-string@npm:0.30.12"
9891004
dependencies:
@@ -1492,17 +1507,17 @@ __metadata:
14921507
languageName: node
14931508
linkType: hard
14941509

1495-
"tinyexec@npm:^0.3.0":
1510+
"tinyexec@npm:^0.3.1":
14961511
version: 0.3.1
14971512
resolution: "tinyexec@npm:0.3.1"
14981513
checksum: 10/0537c70590d52d354f40c0255ff0f654a3d18ddb3812b440ddf9d436edf516c8057838ad5a38744c0c59670ec03e3cf23fbe04ae3d49f031d948274e99002569
14991514
languageName: node
15001515
linkType: hard
15011516

1502-
"tinypool@npm:^1.0.0":
1503-
version: 1.0.1
1504-
resolution: "tinypool@npm:1.0.1"
1505-
checksum: 10/eaceb93784b8e27e60c0e3e2c7d11c29e1e79b2a025b2c232215db73b90fe22bd4753ad53fc8e801c2b5a63b94a823af549555d8361272bc98271de7dd4a9925
1517+
"tinypool@npm:^1.0.1":
1518+
version: 1.0.2
1519+
resolution: "tinypool@npm:1.0.2"
1520+
checksum: 10/6109322f14b3763f65c8fa49fddab72cd3edd96b82dd50e05e63de74867329ff5353bff4377281ec963213d9314f37f4a353e9ee34bbac85fd4c1e4a568d6076
15061521
languageName: node
15071522
linkType: hard
15081523

@@ -1513,7 +1528,7 @@ __metadata:
15131528
languageName: node
15141529
linkType: hard
15151530

1516-
"tinyspy@npm:^3.0.0":
1531+
"tinyspy@npm:^3.0.2":
15171532
version: 3.0.2
15181533
resolution: "tinyspy@npm:3.0.2"
15191534
checksum: 10/5db671b2ff5cd309de650c8c4761ca945459d7204afb1776db9a04fb4efa28a75f08517a8620c01ee32a577748802231ad92f7d5b194dc003ee7f987a2a06337
@@ -1565,17 +1580,17 @@ __metadata:
15651580
languageName: node
15661581
linkType: hard
15671582

1568-
"vite-node@npm:2.1.3":
1569-
version: 2.1.3
1570-
resolution: "vite-node@npm:2.1.3"
1583+
"vite-node@npm:2.1.4":
1584+
version: 2.1.4
1585+
resolution: "vite-node@npm:2.1.4"
15711586
dependencies:
15721587
cac: "npm:^6.7.14"
1573-
debug: "npm:^4.3.6"
1588+
debug: "npm:^4.3.7"
15741589
pathe: "npm:^1.1.2"
15751590
vite: "npm:^5.0.0"
15761591
bin:
15771592
vite-node: vite-node.mjs
1578-
checksum: 10/8ba6b145cbb02a492c7bb1f0490d02383000462f234ed61d24f650547163825c16f14e6908ee1eb661403bd0a7a3fb3cdbedf116cc015b1e5cdf7bb992872a01
1593+
checksum: 10/3c3fbe6e41ab1716f4e6e0b52dcb80e027cb481df03e31d9bb5d16bb0ffabc5c884cca705ef8a5dea60f787e5eb78a428977d0d40e61e1f331bfb8c3d486d3e2
15791594
languageName: node
15801595
linkType: hard
15811596

@@ -1622,34 +1637,35 @@ __metadata:
16221637
languageName: node
16231638
linkType: hard
16241639

1625-
"vitest@npm:2.1.3":
1626-
version: 2.1.3
1627-
resolution: "vitest@npm:2.1.3"
1628-
dependencies:
1629-
"@vitest/expect": "npm:2.1.3"
1630-
"@vitest/mocker": "npm:2.1.3"
1631-
"@vitest/pretty-format": "npm:^2.1.3"
1632-
"@vitest/runner": "npm:2.1.3"
1633-
"@vitest/snapshot": "npm:2.1.3"
1634-
"@vitest/spy": "npm:2.1.3"
1635-
"@vitest/utils": "npm:2.1.3"
1636-
chai: "npm:^5.1.1"
1637-
debug: "npm:^4.3.6"
1638-
magic-string: "npm:^0.30.11"
1640+
"vitest@npm:2.1.4":
1641+
version: 2.1.4
1642+
resolution: "vitest@npm:2.1.4"
1643+
dependencies:
1644+
"@vitest/expect": "npm:2.1.4"
1645+
"@vitest/mocker": "npm:2.1.4"
1646+
"@vitest/pretty-format": "npm:^2.1.4"
1647+
"@vitest/runner": "npm:2.1.4"
1648+
"@vitest/snapshot": "npm:2.1.4"
1649+
"@vitest/spy": "npm:2.1.4"
1650+
"@vitest/utils": "npm:2.1.4"
1651+
chai: "npm:^5.1.2"
1652+
debug: "npm:^4.3.7"
1653+
expect-type: "npm:^1.1.0"
1654+
magic-string: "npm:^0.30.12"
16391655
pathe: "npm:^1.1.2"
16401656
std-env: "npm:^3.7.0"
16411657
tinybench: "npm:^2.9.0"
1642-
tinyexec: "npm:^0.3.0"
1643-
tinypool: "npm:^1.0.0"
1658+
tinyexec: "npm:^0.3.1"
1659+
tinypool: "npm:^1.0.1"
16441660
tinyrainbow: "npm:^1.2.0"
16451661
vite: "npm:^5.0.0"
1646-
vite-node: "npm:2.1.3"
1662+
vite-node: "npm:2.1.4"
16471663
why-is-node-running: "npm:^2.3.0"
16481664
peerDependencies:
16491665
"@edge-runtime/vm": "*"
16501666
"@types/node": ^18.0.0 || >=20.0.0
1651-
"@vitest/browser": 2.1.3
1652-
"@vitest/ui": 2.1.3
1667+
"@vitest/browser": 2.1.4
1668+
"@vitest/ui": 2.1.4
16531669
happy-dom: "*"
16541670
jsdom: "*"
16551671
peerDependenciesMeta:
@@ -1667,7 +1683,7 @@ __metadata:
16671683
optional: true
16681684
bin:
16691685
vitest: vitest.mjs
1670-
checksum: 10/f6079a88583045b551e6526c08774aeac4a9cf85b132793a03f9470c013326abd7fce3985e3c2217dc0dac2fadeee3506e3dc51e215f10862b2fe9da9289af0f
1686+
checksum: 10/bf0bb39e6148678ccc0d856a6a08e99458e80266558f97757bd20980812cd439f51599bcb64c807805594bf6fdb2111fdca688bc8884524819cc4a84a4598109
16711687
languageName: node
16721688
linkType: hard
16731689

0 commit comments

Comments
 (0)
Please sign in to comment.