@algolia/client-search 5.0.0-alpha.2 → 5.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builds/browser.d.ts +2 -2
- package/dist/builds/browser.d.ts.map +1 -1
- package/dist/builds/node.d.ts +2 -2
- package/dist/builds/node.d.ts.map +1 -1
- package/dist/client-search.cjs.js +163 -38
- package/dist/client-search.esm.browser.js +192 -67
- package/dist/client-search.esm.node.js +164 -39
- package/dist/client-search.umd.js +2 -2
- package/dist/model/acl.d.ts +3 -0
- package/dist/model/acl.d.ts.map +1 -1
- package/dist/model/action.d.ts.map +1 -1
- package/dist/model/addApiKeyResponse.d.ts +1 -1
- package/dist/model/addApiKeyResponse.d.ts.map +1 -1
- package/dist/model/advancedSyntaxFeatures.d.ts.map +1 -1
- package/dist/model/alternativesAsExact.d.ts.map +1 -1
- package/dist/model/anchoring.d.ts.map +1 -1
- package/dist/model/apiKey.d.ts.map +1 -1
- package/dist/model/aroundRadius.d.ts.map +1 -1
- package/dist/model/aroundRadiusAll.d.ts.map +1 -1
- package/dist/model/assignUserIdParams.d.ts.map +1 -1
- package/dist/model/attributeToUpdate.d.ts +3 -0
- package/dist/model/attributeToUpdate.d.ts.map +1 -0
- package/dist/model/automaticFacetFilter.d.ts.map +1 -1
- package/dist/model/automaticFacetFilters.d.ts.map +1 -1
- package/dist/model/baseGetApiKeyResponse.d.ts +11 -0
- package/dist/model/baseGetApiKeyResponse.d.ts.map +1 -0
- package/dist/model/baseIndexSettings.d.ts +4 -0
- package/dist/model/baseIndexSettings.d.ts.map +1 -1
- package/dist/model/baseSearchParams.d.ts.map +1 -1
- package/dist/model/baseSearchParamsWithoutQuery.d.ts.map +1 -1
- package/dist/model/baseSearchResponse.d.ts +1 -1
- package/dist/model/baseSearchResponse.d.ts.map +1 -1
- package/dist/model/batchAssignUserIdsParams.d.ts.map +1 -1
- package/dist/model/batchDictionaryEntriesParams.d.ts.map +1 -1
- package/dist/model/batchDictionaryEntriesRequest.d.ts.map +1 -1
- package/dist/model/batchParams.d.ts +2 -2
- package/dist/model/batchParams.d.ts.map +1 -1
- package/dist/model/batchRequest.d.ts +9 -0
- package/dist/model/batchRequest.d.ts.map +1 -0
- package/dist/model/batchResponse.d.ts.map +1 -1
- package/dist/model/batchWriteParams.d.ts +2 -2
- package/dist/model/batchWriteParams.d.ts.map +1 -1
- package/dist/model/browseParams.d.ts +4 -0
- package/dist/model/browseParams.d.ts.map +1 -0
- package/dist/model/browseParamsObject.d.ts +4 -0
- package/dist/model/browseParamsObject.d.ts.map +1 -0
- package/dist/model/browseResponse.d.ts +2 -2
- package/dist/model/browseResponse.d.ts.map +1 -1
- package/dist/model/builtInOperation.d.ts.map +1 -1
- package/dist/model/builtInOperationType.d.ts.map +1 -1
- package/dist/model/clientMethodProps.d.ts +26 -14
- package/dist/model/clientMethodProps.d.ts.map +1 -1
- package/dist/model/condition.d.ts.map +1 -1
- package/dist/model/consequence.d.ts.map +1 -1
- package/dist/model/consequenceHide.d.ts.map +1 -1
- package/dist/model/consequenceParams.d.ts.map +1 -1
- package/dist/model/consequenceQuery.d.ts.map +1 -1
- package/dist/model/consequenceQueryObject.d.ts.map +1 -1
- package/dist/model/createdAtResponse.d.ts.map +1 -1
- package/dist/model/{baseBrowseResponse.d.ts → cursor.d.ts} +3 -3
- package/dist/model/cursor.d.ts.map +1 -0
- package/dist/model/deleteApiKeyResponse.d.ts.map +1 -1
- package/dist/model/deleteByParams.d.ts +27 -0
- package/dist/model/deleteByParams.d.ts.map +1 -0
- package/dist/model/deleteSourceResponse.d.ts.map +1 -1
- package/dist/model/deletedAtResponse.d.ts.map +1 -1
- package/dist/model/dictionaryAction.d.ts.map +1 -1
- package/dist/model/dictionaryEntry.d.ts.map +1 -1
- package/dist/model/dictionaryEntryState.d.ts.map +1 -1
- package/dist/model/dictionaryLanguage.d.ts.map +1 -1
- package/dist/model/dictionarySettingsParams.d.ts.map +1 -1
- package/dist/model/dictionaryType.d.ts.map +1 -1
- package/dist/model/distinct.d.ts +5 -0
- package/dist/model/distinct.d.ts.map +1 -0
- package/dist/model/edit.d.ts.map +1 -1
- package/dist/model/editType.d.ts.map +1 -1
- package/dist/model/errorBase.d.ts.map +1 -1
- package/dist/model/exactOnSingleWordQuery.d.ts.map +1 -1
- package/dist/model/facetFilters.d.ts.map +1 -1
- package/dist/model/facetHits.d.ts.map +1 -1
- package/dist/model/facetOrdering.d.ts.map +1 -1
- package/dist/model/facets.d.ts.map +1 -1
- package/dist/model/facetsStats.d.ts.map +1 -1
- package/dist/model/fetchedIndex.d.ts.map +1 -1
- package/dist/model/getApiKeyResponse.d.ts +4 -0
- package/dist/model/getApiKeyResponse.d.ts.map +1 -0
- package/dist/model/getDictionarySettingsResponse.d.ts.map +1 -1
- package/dist/model/getLogsResponse.d.ts.map +1 -1
- package/dist/model/getObjectsParams.d.ts +2 -2
- package/dist/model/getObjectsParams.d.ts.map +1 -1
- package/dist/model/{multipleGetObjectsParams.d.ts → getObjectsRequest.d.ts} +2 -2
- package/dist/model/getObjectsRequest.d.ts.map +1 -0
- package/dist/model/getObjectsResponse.d.ts +2 -2
- package/dist/model/getObjectsResponse.d.ts.map +1 -1
- package/dist/model/getTaskResponse.d.ts.map +1 -1
- package/dist/model/getTopUserIdsResponse.d.ts.map +1 -1
- package/dist/model/hasPendingMappingsResponse.d.ts.map +1 -1
- package/dist/model/highlightResult.d.ts.map +1 -1
- package/dist/model/highlightResultOption.d.ts.map +1 -1
- package/dist/model/hit.d.ts +1 -1
- package/dist/model/hit.d.ts.map +1 -1
- package/dist/model/ignorePlurals.d.ts.map +1 -1
- package/dist/model/index.d.ts +11 -9
- package/dist/model/index.d.ts.map +1 -1
- package/dist/model/indexSettings.d.ts.map +1 -1
- package/dist/model/indexSettingsAsSearchParams.d.ts +4 -6
- package/dist/model/indexSettingsAsSearchParams.d.ts.map +1 -1
- package/dist/model/languages.d.ts.map +1 -1
- package/dist/model/listApiKeysResponse.d.ts +2 -2
- package/dist/model/listApiKeysResponse.d.ts.map +1 -1
- package/dist/model/listClustersResponse.d.ts.map +1 -1
- package/dist/model/listIndicesResponse.d.ts +1 -1
- package/dist/model/listIndicesResponse.d.ts.map +1 -1
- package/dist/model/listUserIdsResponse.d.ts.map +1 -1
- package/dist/model/log.d.ts.map +1 -1
- package/dist/model/logQuery.d.ts.map +1 -1
- package/dist/model/logType.d.ts.map +1 -1
- package/dist/model/matchLevel.d.ts.map +1 -1
- package/dist/model/matchedGeoLocation.d.ts.map +1 -1
- package/dist/model/mixedSearchFilters.d.ts.map +1 -1
- package/dist/model/{multipleBatchOperation.d.ts → multipleBatchRequest.d.ts} +5 -5
- package/dist/model/multipleBatchRequest.d.ts.map +1 -0
- package/dist/model/multipleBatchResponse.d.ts +2 -2
- package/dist/model/multipleBatchResponse.d.ts.map +1 -1
- package/dist/model/numericFilters.d.ts.map +1 -1
- package/dist/model/operationIndexParams.d.ts.map +1 -1
- package/dist/model/operationType.d.ts.map +1 -1
- package/dist/model/optionalFilters.d.ts.map +1 -1
- package/dist/model/params.d.ts.map +1 -1
- package/dist/model/personalization.d.ts.map +1 -1
- package/dist/model/promote.d.ts.map +1 -1
- package/dist/model/promoteObjectID.d.ts.map +1 -1
- package/dist/model/promoteObjectIDs.d.ts.map +1 -1
- package/dist/model/queryType.d.ts.map +1 -1
- package/dist/model/rankingInfo.d.ts.map +1 -1
- package/dist/model/reRankingApplyFilter.d.ts.map +1 -1
- package/dist/model/removeStopWords.d.ts.map +1 -1
- package/dist/model/removeUserIdResponse.d.ts.map +1 -1
- package/dist/model/removeWordsIfNoResults.d.ts.map +1 -1
- package/dist/model/renderingContent.d.ts.map +1 -1
- package/dist/model/replaceSourceResponse.d.ts.map +1 -1
- package/dist/model/rule.d.ts.map +1 -1
- package/dist/model/saveObjectResponse.d.ts +2 -2
- package/dist/model/saveObjectResponse.d.ts.map +1 -1
- package/dist/model/saveSynonymResponse.d.ts.map +1 -1
- package/dist/model/scopeType.d.ts.map +1 -1
- package/dist/model/searchDictionaryEntriesParams.d.ts.map +1 -1
- package/dist/model/searchForFacetValuesRequest.d.ts.map +1 -1
- package/dist/model/searchForFacetValuesResponse.d.ts.map +1 -1
- package/dist/model/searchForFacets.d.ts.map +1 -1
- package/dist/model/searchForFacetsOptions.d.ts.map +1 -1
- package/dist/model/searchForHits.d.ts.map +1 -1
- package/dist/model/searchForHitsOptions.d.ts.map +1 -1
- package/dist/model/searchHits.d.ts +1 -1
- package/dist/model/searchHits.d.ts.map +1 -1
- package/dist/model/searchMethodParams.d.ts.map +1 -1
- package/dist/model/searchParams.d.ts.map +1 -1
- package/dist/model/searchParamsObject.d.ts.map +1 -1
- package/dist/model/searchParamsQuery.d.ts.map +1 -1
- package/dist/model/searchParamsString.d.ts.map +1 -1
- package/dist/model/searchQuery.d.ts.map +1 -1
- package/dist/model/searchResponse.d.ts +1 -1
- package/dist/model/searchResponse.d.ts.map +1 -1
- package/dist/model/searchResponses.d.ts +1 -1
- package/dist/model/searchResponses.d.ts.map +1 -1
- package/dist/model/searchRulesParams.d.ts.map +1 -1
- package/dist/model/searchRulesResponse.d.ts.map +1 -1
- package/dist/model/searchStrategy.d.ts.map +1 -1
- package/dist/model/searchSynonymsParams.d.ts.map +1 -1
- package/dist/model/searchSynonymsResponse.d.ts.map +1 -1
- package/dist/model/searchTypeDefault.d.ts.map +1 -1
- package/dist/model/searchTypeFacet.d.ts.map +1 -1
- package/dist/model/searchUserIdsParams.d.ts.map +1 -1
- package/dist/model/searchUserIdsResponse.d.ts.map +1 -1
- package/dist/model/snippetResult.d.ts.map +1 -1
- package/dist/model/snippetResultOption.d.ts.map +1 -1
- package/dist/model/sortRemainingBy.d.ts.map +1 -1
- package/dist/model/source.d.ts.map +1 -1
- package/dist/model/standardEntries.d.ts.map +1 -1
- package/dist/model/synonymHit.d.ts +0 -2
- package/dist/model/synonymHit.d.ts.map +1 -1
- package/dist/model/synonymType.d.ts.map +1 -1
- package/dist/model/tagFilters.d.ts.map +1 -1
- package/dist/model/taskStatus.d.ts.map +1 -1
- package/dist/model/timeRange.d.ts.map +1 -1
- package/dist/model/typoTolerance.d.ts.map +1 -1
- package/dist/model/typoToleranceEnum.d.ts.map +1 -1
- package/dist/model/updateApiKeyResponse.d.ts +1 -1
- package/dist/model/updateApiKeyResponse.d.ts.map +1 -1
- package/dist/model/updatedAtResponse.d.ts.map +1 -1
- package/dist/model/updatedAtWithObjectIdResponse.d.ts.map +1 -1
- package/dist/model/updatedRuleResponse.d.ts.map +1 -1
- package/dist/model/userHighlightResult.d.ts.map +1 -1
- package/dist/model/userHit.d.ts.map +1 -1
- package/dist/model/userId.d.ts.map +1 -1
- package/dist/model/value.d.ts.map +1 -1
- package/dist/src/searchClient.d.ts +71 -24
- package/dist/src/searchClient.d.ts.map +1 -1
- package/model/acl.ts +3 -0
- package/model/addApiKeyResponse.ts +2 -1
- package/model/apiKey.ts +7 -0
- package/model/{attributeOrBuiltInOperation.ts → attributeToUpdate.ts} +1 -1
- package/model/automaticFacetFilter.ts +2 -0
- package/model/baseGetApiKeyResponse.ts +13 -0
- package/model/baseIndexSettings.ts +18 -0
- package/model/baseSearchParamsWithoutQuery.ts +32 -0
- package/model/baseSearchResponse.ts +25 -1
- package/model/batchAssignUserIdsParams.ts +1 -0
- package/model/batchDictionaryEntriesParams.ts +1 -0
- package/model/batchDictionaryEntriesRequest.ts +1 -0
- package/model/batchParams.ts +2 -2
- package/model/{batchOperation.ts → batchRequest.ts} +4 -3
- package/model/batchResponse.ts +1 -0
- package/model/batchWriteParams.ts +2 -2
- package/model/browseParams.ts +6 -0
- package/model/browseParamsObject.ts +6 -0
- package/model/browseResponse.ts +3 -3
- package/model/builtInOperation.ts +1 -0
- package/model/clientMethodProps.ts +31 -19
- package/model/condition.ts +3 -0
- package/model/consequence.ts +4 -0
- package/model/consequenceQueryObject.ts +1 -0
- package/model/{baseBrowseResponse.ts → cursor.ts} +2 -2
- package/model/deleteByParams.ts +36 -0
- package/model/deletedAtResponse.ts +1 -0
- package/model/dictionaryEntry.ts +5 -0
- package/model/{createdAtObject.ts → distinct.ts} +4 -6
- package/model/edit.ts +2 -0
- package/model/facetHits.ts +2 -0
- package/model/facetOrdering.ts +1 -0
- package/model/facetsStats.ts +3 -0
- package/model/fetchedIndex.ts +10 -0
- package/model/{key.ts → getApiKeyResponse.ts} +2 -2
- package/model/getObjectsParams.ts +2 -2
- package/model/{multipleGetObjectsParams.ts → getObjectsRequest.ts} +3 -1
- package/model/getObjectsResponse.ts +2 -2
- package/model/hasPendingMappingsResponse.ts +1 -0
- package/model/highlightResultOption.ts +3 -0
- package/model/hit.ts +5 -1
- package/model/index.ts +11 -9
- package/model/indexSettingsAsSearchParams.ts +45 -6
- package/model/languages.ts +2 -0
- package/model/listApiKeysResponse.ts +2 -2
- package/model/listIndicesResponse.ts +2 -1
- package/model/log.ts +14 -0
- package/model/logQuery.ts +2 -0
- package/model/matchedGeoLocation.ts +2 -0
- package/model/{multipleBatchOperation.ts → multipleBatchRequest.ts} +6 -4
- package/model/multipleBatchResponse.ts +3 -2
- package/model/operationIndexParams.ts +2 -0
- package/model/params.ts +3 -0
- package/model/personalization.ts +2 -0
- package/model/promoteObjectID.ts +1 -0
- package/model/promoteObjectIDs.ts +1 -0
- package/model/rankingInfo.ts +12 -0
- package/model/rule.ts +5 -0
- package/model/saveObjectResponse.ts +4 -2
- package/model/saveSynonymResponse.ts +2 -0
- package/model/searchDictionaryEntriesParams.ts +3 -0
- package/model/searchForFacetValuesRequest.ts +2 -0
- package/model/searchForFacetsOptions.ts +4 -0
- package/model/searchForHitsOptions.ts +1 -0
- package/model/searchHits.ts +1 -1
- package/model/searchMethodParams.ts +1 -0
- package/model/searchResponse.ts +2 -1
- package/model/searchResponses.ts +1 -1
- package/model/searchRulesParams.ts +6 -0
- package/model/searchRulesResponse.ts +3 -0
- package/model/searchSynonymsResponse.ts +1 -0
- package/model/searchUserIdsParams.ts +3 -0
- package/model/searchUserIdsResponse.ts +4 -0
- package/model/snippetResultOption.ts +1 -0
- package/model/source.ts +1 -0
- package/model/standardEntries.ts +2 -0
- package/model/synonymHit.ts +7 -2
- package/model/timeRange.ts +1 -0
- package/model/updateApiKeyResponse.ts +2 -1
- package/model/updatedAtResponse.ts +1 -0
- package/model/updatedAtWithObjectIdResponse.ts +2 -0
- package/model/updatedRuleResponse.ts +2 -0
- package/model/userHighlightResult.ts +1 -0
- package/model/userHit.ts +5 -0
- package/model/userId.ts +3 -0
- package/model/value.ts +1 -0
- package/package.json +31 -13
- package/dist/model/attributeOrBuiltInOperation.d.ts +0 -3
- package/dist/model/attributeOrBuiltInOperation.d.ts.map +0 -1
- package/dist/model/baseBrowseResponse.d.ts.map +0 -1
- package/dist/model/batchOperation.d.ts +0 -9
- package/dist/model/batchOperation.d.ts.map +0 -1
- package/dist/model/browseRequest.d.ts +0 -11
- package/dist/model/browseRequest.d.ts.map +0 -1
- package/dist/model/createdAtObject.d.ts +0 -7
- package/dist/model/createdAtObject.d.ts.map +0 -1
- package/dist/model/key.d.ts +0 -4
- package/dist/model/key.d.ts.map +0 -1
- package/dist/model/multipleBatchOperation.d.ts.map +0 -1
- package/dist/model/multipleGetObjectsParams.d.ts.map +0 -1
- package/dist/model/synonymHitHighlightResult.d.ts +0 -12
- package/dist/model/synonymHitHighlightResult.d.ts.map +0 -1
- package/model/browseRequest.ts +0 -12
- package/model/synonymHitHighlightResult.ts +0 -14
package/dist/builds/browser.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ClientOptions } from '@algolia/client-common';
|
|
2
2
|
import type { SearchClient } from '../src/searchClient';
|
|
3
3
|
export { apiClientVersion, SearchClient } from '../src/searchClient';
|
|
4
4
|
export * from '../model';
|
|
5
|
-
export declare function searchClient(appId: string, apiKey: string, options?:
|
|
5
|
+
export declare function searchClient(appId: string, apiKey: string, options?: ClientOptions): SearchClient;
|
|
6
6
|
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../builds/browser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAY5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrE,cAAc,UAAU,CAAC;AAEzB,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,aAAa,GACtB,YAAY,CA8Bd"}
|
package/dist/builds/node.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ClientOptions } from '@algolia/client-common';
|
|
2
2
|
import type { SearchClient } from '../src/searchClient';
|
|
3
3
|
export { apiClientVersion, SearchClient } from '../src/searchClient';
|
|
4
4
|
export * from '../model';
|
|
5
|
-
export declare function searchClient(appId: string, apiKey: string, options?:
|
|
5
|
+
export declare function searchClient(appId: string, apiKey: string, options?: ClientOptions): SearchClient;
|
|
6
6
|
//# sourceMappingURL=node.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../builds/node.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAW5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrE,cAAc,UAAU,CAAC;AAEzB,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,aAAa,GACtB,YAAY,CAwBd"}
|
|
@@ -6,7 +6,7 @@ var clientCommon = require('@algolia/client-common');
|
|
|
6
6
|
var requesterNodeHttp = require('@algolia/requester-node-http');
|
|
7
7
|
|
|
8
8
|
// This file is generated, manual changes will be lost - read more on https://github.com/algolia/api-clients-automation.
|
|
9
|
-
const apiClientVersion = '5.0.0-alpha.
|
|
9
|
+
const apiClientVersion = '5.0.0-alpha.21';
|
|
10
10
|
function getDefaultHosts(appId) {
|
|
11
11
|
return [
|
|
12
12
|
{
|
|
@@ -60,6 +60,19 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
60
60
|
});
|
|
61
61
|
return {
|
|
62
62
|
transporter,
|
|
63
|
+
/**
|
|
64
|
+
* The `appId` currently in use.
|
|
65
|
+
*/
|
|
66
|
+
appId: appIdOption,
|
|
67
|
+
/**
|
|
68
|
+
* Clears the cache of the transporter for the `requestsCache` and `responsesCache` properties.
|
|
69
|
+
*/
|
|
70
|
+
clearCache() {
|
|
71
|
+
return Promise.all([
|
|
72
|
+
transporter.requestsCache.clear(),
|
|
73
|
+
transporter.responsesCache.clear(),
|
|
74
|
+
]).then(() => undefined);
|
|
75
|
+
},
|
|
63
76
|
/**
|
|
64
77
|
* Get the value of the `algoliaAgent`, used by our libraries internally and telemetry system.
|
|
65
78
|
*/
|
|
@@ -76,38 +89,57 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
76
89
|
transporter.algoliaAgent.add({ segment, version });
|
|
77
90
|
},
|
|
78
91
|
/**
|
|
79
|
-
* Helper: Wait for a task to
|
|
92
|
+
* Helper: Wait for a task to be published (completed) for a given `indexName` and `taskID`.
|
|
80
93
|
*
|
|
81
|
-
* @summary
|
|
94
|
+
* @summary Helper method that waits for a task to be published (completed).
|
|
82
95
|
* @param waitForTaskOptions - The waitForTaskOptions object.
|
|
83
96
|
* @param waitForTaskOptions.indexName - The `indexName` where the operation was performed.
|
|
84
97
|
* @param waitForTaskOptions.taskID - The `taskID` returned in the method response.
|
|
98
|
+
* @param waitForTaskOptions.maxRetries - The maximum number of retries. 50 by default.
|
|
99
|
+
* @param waitForTaskOptions.timeout - The function to decide how long to wait between retries.
|
|
85
100
|
* @param requestOptions - The requestOptions to send along with the query, they will be forwarded to the `getTask` method and merged with the transporter requestOptions.
|
|
86
101
|
*/
|
|
87
|
-
waitForTask({ indexName, taskID,
|
|
88
|
-
|
|
89
|
-
|
|
102
|
+
waitForTask({ indexName, taskID, maxRetries = 50, timeout = (retryCount) => Math.min(retryCount * 200, 5000), }, requestOptions) {
|
|
103
|
+
let retryCount = 0;
|
|
104
|
+
return clientCommon.createIterablePromise({
|
|
90
105
|
func: () => this.getTask({ indexName, taskID }, requestOptions),
|
|
91
106
|
validate: (response) => response.status === 'published',
|
|
107
|
+
aggregator: () => (retryCount += 1),
|
|
108
|
+
error: {
|
|
109
|
+
validate: () => retryCount >= maxRetries,
|
|
110
|
+
message: () => `The maximum number of retries exceeded. (${retryCount}/${maxRetries})`,
|
|
111
|
+
},
|
|
112
|
+
timeout: () => timeout(retryCount),
|
|
92
113
|
});
|
|
93
114
|
},
|
|
94
115
|
/**
|
|
95
116
|
* Helper: Wait for an API key to be added, updated or deleted based on a given `operation`.
|
|
96
117
|
*
|
|
97
|
-
* @summary
|
|
118
|
+
* @summary Helper method that waits for an API key task to be processed.
|
|
98
119
|
* @param waitForApiKeyOptions - The waitForApiKeyOptions object.
|
|
99
120
|
* @param waitForApiKeyOptions.operation - The `operation` that was done on a `key`.
|
|
100
121
|
* @param waitForApiKeyOptions.key - The `key` that has been added, deleted or updated.
|
|
101
122
|
* @param waitForApiKeyOptions.apiKey - Necessary to know if an `update` operation has been processed, compare fields of the response with it.
|
|
123
|
+
* @param waitForApiKeyOptions.maxRetries - The maximum number of retries. 50 by default.
|
|
124
|
+
* @param waitForApiKeyOptions.timeout - The function to decide how long to wait between retries.
|
|
102
125
|
* @param requestOptions - The requestOptions to send along with the query, they will be forwarded to the `getApikey` method and merged with the transporter requestOptions.
|
|
103
126
|
*/
|
|
104
|
-
waitForApiKey({ operation, key, apiKey,
|
|
127
|
+
waitForApiKey({ operation, key, apiKey, maxRetries = 50, timeout = (retryCount) => Math.min(retryCount * 200, 5000), }, requestOptions) {
|
|
128
|
+
let retryCount = 0;
|
|
129
|
+
const baseIteratorOptions = {
|
|
130
|
+
aggregator: () => (retryCount += 1),
|
|
131
|
+
error: {
|
|
132
|
+
validate: () => retryCount >= maxRetries,
|
|
133
|
+
message: () => `The maximum number of retries exceeded. (${retryCount}/${maxRetries})`,
|
|
134
|
+
},
|
|
135
|
+
timeout: () => timeout(retryCount),
|
|
136
|
+
};
|
|
105
137
|
if (operation === 'update') {
|
|
106
138
|
if (!apiKey) {
|
|
107
139
|
throw new Error('`apiKey` is required when waiting for an `update` operation.');
|
|
108
140
|
}
|
|
109
|
-
return clientCommon.
|
|
110
|
-
...
|
|
141
|
+
return clientCommon.createIterablePromise({
|
|
142
|
+
...baseIteratorOptions,
|
|
111
143
|
func: () => this.getApiKey({ key }, requestOptions),
|
|
112
144
|
validate: (response) => {
|
|
113
145
|
for (const field of Object.keys(apiKey)) {
|
|
@@ -125,12 +157,99 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
125
157
|
},
|
|
126
158
|
});
|
|
127
159
|
}
|
|
128
|
-
return clientCommon.
|
|
129
|
-
...
|
|
160
|
+
return clientCommon.createIterablePromise({
|
|
161
|
+
...baseIteratorOptions,
|
|
130
162
|
func: () => this.getApiKey({ key }, requestOptions).catch((error) => error),
|
|
131
163
|
validate: (error) => operation === 'add' ? error.status !== 404 : error.status === 404,
|
|
132
164
|
});
|
|
133
165
|
},
|
|
166
|
+
/**
|
|
167
|
+
* Helper: Iterate on the `browse` method of the client to allow aggregating objects of an index.
|
|
168
|
+
*
|
|
169
|
+
* @summary Helper method that iterates on the `browse` method.
|
|
170
|
+
* @param browseObjects - The browseObjects object.
|
|
171
|
+
* @param browseObjects.indexName - The index in which to perform the request.
|
|
172
|
+
* @param browseObjects.browseParams - The `browse` parameters.
|
|
173
|
+
* @param browseObjects.validate - The validator function. It receive the resolved return of the API call. By default, stops when there is no `cursor` in the response.
|
|
174
|
+
* @param browseObjects.aggregator - The function that runs right after the API call has been resolved, allows you to do anything with the response before `validate`.
|
|
175
|
+
* @param requestOptions - The requestOptions to send along with the query, they will be forwarded to the `browse` method and merged with the transporter requestOptions.
|
|
176
|
+
*/
|
|
177
|
+
browseObjects({ indexName, browseParams, ...browseObjectsOptions }, requestOptions) {
|
|
178
|
+
return clientCommon.createIterablePromise({
|
|
179
|
+
func: (previousResponse) => {
|
|
180
|
+
return this.browse({
|
|
181
|
+
indexName,
|
|
182
|
+
browseParams: {
|
|
183
|
+
cursor: previousResponse ? previousResponse.cursor : undefined,
|
|
184
|
+
...browseParams,
|
|
185
|
+
},
|
|
186
|
+
}, requestOptions);
|
|
187
|
+
},
|
|
188
|
+
validate: (response) => response.cursor === undefined,
|
|
189
|
+
...browseObjectsOptions,
|
|
190
|
+
});
|
|
191
|
+
},
|
|
192
|
+
/**
|
|
193
|
+
* Helper: Iterate on the `searchRules` method of the client to allow aggregating rules of an index.
|
|
194
|
+
*
|
|
195
|
+
* @summary Helper method that iterates on the `searchRules` method.
|
|
196
|
+
* @param browseObjects - The browseObjects object.
|
|
197
|
+
* @param browseObjects.indexName - The index in which to perform the request.
|
|
198
|
+
* @param browseObjects.searchRulesParams - The `searchRules` method parameters.
|
|
199
|
+
* @param browseObjects.validate - The validator function. It receive the resolved return of the API call. By default, stops when there is less hits returned than the number of maximum hits (1000).
|
|
200
|
+
* @param browseObjects.aggregator - The function that runs right after the API call has been resolved, allows you to do anything with the response before `validate`.
|
|
201
|
+
* @param requestOptions - The requestOptions to send along with the query, they will be forwarded to the `searchRules` method and merged with the transporter requestOptions.
|
|
202
|
+
*/
|
|
203
|
+
browseRules({ indexName, searchRulesParams, ...browseRulesOptions }, requestOptions) {
|
|
204
|
+
const params = {
|
|
205
|
+
hitsPerPage: 1000,
|
|
206
|
+
...searchRulesParams,
|
|
207
|
+
};
|
|
208
|
+
return clientCommon.createIterablePromise({
|
|
209
|
+
func: (previousResponse) => {
|
|
210
|
+
return this.searchRules({
|
|
211
|
+
indexName,
|
|
212
|
+
searchRulesParams: {
|
|
213
|
+
...params,
|
|
214
|
+
page: previousResponse
|
|
215
|
+
? previousResponse.page + 1
|
|
216
|
+
: params.page || 0,
|
|
217
|
+
},
|
|
218
|
+
}, requestOptions);
|
|
219
|
+
},
|
|
220
|
+
validate: (response) => response.nbHits < params.hitsPerPage,
|
|
221
|
+
...browseRulesOptions,
|
|
222
|
+
});
|
|
223
|
+
},
|
|
224
|
+
/**
|
|
225
|
+
* Helper: Iterate on the `searchSynonyms` method of the client to allow aggregating rules of an index.
|
|
226
|
+
*
|
|
227
|
+
* @summary Helper method that iterates on the `searchSynonyms` method.
|
|
228
|
+
* @param browseObjects - The browseObjects object.
|
|
229
|
+
* @param browseObjects.indexName - The index in which to perform the request.
|
|
230
|
+
* @param browseObjects.validate - The validator function. It receive the resolved return of the API call. By default, stops when there is less hits returned than the number of maximum hits (1000).
|
|
231
|
+
* @param browseObjects.aggregator - The function that runs right after the API call has been resolved, allows you to do anything with the response before `validate`.
|
|
232
|
+
* @param requestOptions - The requestOptions to send along with the query, they will be forwarded to the `searchSynonyms` method and merged with the transporter requestOptions.
|
|
233
|
+
*/
|
|
234
|
+
browseSynonyms({ indexName, validate, aggregator, ...browseSynonymsOptions }, requestOptions) {
|
|
235
|
+
const params = {
|
|
236
|
+
hitsPerPage: 1000,
|
|
237
|
+
...browseSynonymsOptions,
|
|
238
|
+
};
|
|
239
|
+
return clientCommon.createIterablePromise({
|
|
240
|
+
func: (previousResponse) => {
|
|
241
|
+
return this.searchSynonyms({
|
|
242
|
+
...params,
|
|
243
|
+
indexName,
|
|
244
|
+
page: previousResponse
|
|
245
|
+
? previousResponse.page + 1
|
|
246
|
+
: browseSynonymsOptions.page || 0,
|
|
247
|
+
}, requestOptions);
|
|
248
|
+
},
|
|
249
|
+
validate: (response) => response.nbHits < params.hitsPerPage,
|
|
250
|
+
...browseSynonymsOptions,
|
|
251
|
+
});
|
|
252
|
+
},
|
|
134
253
|
/**
|
|
135
254
|
* Add a new API Key with specific permissions/restrictions.
|
|
136
255
|
*
|
|
@@ -264,6 +383,9 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
264
383
|
if (!batchWriteParams) {
|
|
265
384
|
throw new Error('Parameter `batchWriteParams` is required when calling `batch`.');
|
|
266
385
|
}
|
|
386
|
+
if (!batchWriteParams.requests) {
|
|
387
|
+
throw new Error('Parameter `batchWriteParams.requests` is required when calling `batch`.');
|
|
388
|
+
}
|
|
267
389
|
const requestPath = '/1/indexes/{indexName}/batch'.replace('{indexName}', encodeURIComponent(indexName));
|
|
268
390
|
const headers = {};
|
|
269
391
|
const queryParameters = {};
|
|
@@ -350,10 +472,10 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
350
472
|
* @summary Retrieve all index content.
|
|
351
473
|
* @param browse - The browse object.
|
|
352
474
|
* @param browse.indexName - The index in which to perform the request.
|
|
353
|
-
* @param browse.
|
|
475
|
+
* @param browse.browseParams - The browseParams object.
|
|
354
476
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
355
477
|
*/
|
|
356
|
-
browse({ indexName,
|
|
478
|
+
browse({ indexName, browseParams }, requestOptions) {
|
|
357
479
|
if (!indexName) {
|
|
358
480
|
throw new Error('Parameter `indexName` is required when calling `browse`.');
|
|
359
481
|
}
|
|
@@ -365,7 +487,7 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
365
487
|
path: requestPath,
|
|
366
488
|
queryParameters,
|
|
367
489
|
headers,
|
|
368
|
-
data:
|
|
490
|
+
data: browseParams ? browseParams : {},
|
|
369
491
|
};
|
|
370
492
|
return transporter.request(request, requestOptions);
|
|
371
493
|
},
|
|
@@ -499,15 +621,15 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
499
621
|
* @summary Delete all records matching the query.
|
|
500
622
|
* @param deleteBy - The deleteBy object.
|
|
501
623
|
* @param deleteBy.indexName - The index in which to perform the request.
|
|
502
|
-
* @param deleteBy.
|
|
624
|
+
* @param deleteBy.deleteByParams - The deleteByParams object.
|
|
503
625
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
504
626
|
*/
|
|
505
|
-
deleteBy({ indexName,
|
|
627
|
+
deleteBy({ indexName, deleteByParams }, requestOptions) {
|
|
506
628
|
if (!indexName) {
|
|
507
629
|
throw new Error('Parameter `indexName` is required when calling `deleteBy`.');
|
|
508
630
|
}
|
|
509
|
-
if (!
|
|
510
|
-
throw new Error('Parameter `
|
|
631
|
+
if (!deleteByParams) {
|
|
632
|
+
throw new Error('Parameter `deleteByParams` is required when calling `deleteBy`.');
|
|
511
633
|
}
|
|
512
634
|
const requestPath = '/1/indexes/{indexName}/deleteByQuery'.replace('{indexName}', encodeURIComponent(indexName));
|
|
513
635
|
const headers = {};
|
|
@@ -517,7 +639,7 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
517
639
|
path: requestPath,
|
|
518
640
|
queryParameters,
|
|
519
641
|
headers,
|
|
520
|
-
data:
|
|
642
|
+
data: deleteByParams,
|
|
521
643
|
};
|
|
522
644
|
return transporter.request(request, requestOptions);
|
|
523
645
|
},
|
|
@@ -756,7 +878,7 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
756
878
|
* @param getLogs.type - Type of log entries to retrieve. When omitted, all log entries are retrieved.
|
|
757
879
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
758
880
|
*/
|
|
759
|
-
getLogs({ offset, length, indexName, type }, requestOptions) {
|
|
881
|
+
getLogs({ offset, length, indexName, type } = {}, requestOptions = undefined) {
|
|
760
882
|
const requestPath = '/1/logs';
|
|
761
883
|
const headers = {};
|
|
762
884
|
const queryParameters = {};
|
|
@@ -824,6 +946,9 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
824
946
|
if (!getObjectsParams) {
|
|
825
947
|
throw new Error('Parameter `getObjectsParams` is required when calling `getObjects`.');
|
|
826
948
|
}
|
|
949
|
+
if (!getObjectsParams.requests) {
|
|
950
|
+
throw new Error('Parameter `getObjectsParams.requests` is required when calling `getObjects`.');
|
|
951
|
+
}
|
|
827
952
|
const requestPath = '/1/indexes/*/objects';
|
|
828
953
|
const headers = {};
|
|
829
954
|
const queryParameters = {};
|
|
@@ -1015,7 +1140,7 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1015
1140
|
* @param hasPendingMappings.getClusters - If the clusters pending mapping state should be on the response.
|
|
1016
1141
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
1017
1142
|
*/
|
|
1018
|
-
hasPendingMappings({ getClusters }, requestOptions) {
|
|
1143
|
+
hasPendingMappings({ getClusters } = {}, requestOptions = undefined) {
|
|
1019
1144
|
const requestPath = '/1/clusters/mapping/pending';
|
|
1020
1145
|
const headers = {};
|
|
1021
1146
|
const queryParameters = {};
|
|
@@ -1074,7 +1199,7 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1074
1199
|
* @param listIndices.page - Requested page (zero-based). When specified, will retrieve a specific page; the page size is implicitly set to 100. When null, will retrieve all indices (no pagination).
|
|
1075
1200
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
1076
1201
|
*/
|
|
1077
|
-
listIndices({ page }, requestOptions) {
|
|
1202
|
+
listIndices({ page } = {}, requestOptions = undefined) {
|
|
1078
1203
|
const requestPath = '/1/indexes';
|
|
1079
1204
|
const headers = {};
|
|
1080
1205
|
const queryParameters = {};
|
|
@@ -1098,7 +1223,7 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1098
1223
|
* @param listUserIds.hitsPerPage - Maximum number of objects to retrieve.
|
|
1099
1224
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
1100
1225
|
*/
|
|
1101
|
-
listUserIds({ page, hitsPerPage }, requestOptions) {
|
|
1226
|
+
listUserIds({ page, hitsPerPage } = {}, requestOptions = undefined) {
|
|
1102
1227
|
const requestPath = '/1/clusters/mapping';
|
|
1103
1228
|
const headers = {};
|
|
1104
1229
|
const queryParameters = {};
|
|
@@ -1127,6 +1252,9 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1127
1252
|
if (!batchParams) {
|
|
1128
1253
|
throw new Error('Parameter `batchParams` is required when calling `multipleBatch`.');
|
|
1129
1254
|
}
|
|
1255
|
+
if (!batchParams.requests) {
|
|
1256
|
+
throw new Error('Parameter `batchParams.requests` is required when calling `multipleBatch`.');
|
|
1257
|
+
}
|
|
1130
1258
|
const requestPath = '/1/indexes/*/batch';
|
|
1131
1259
|
const headers = {};
|
|
1132
1260
|
const queryParameters = {};
|
|
@@ -1180,19 +1308,19 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1180
1308
|
* @param partialUpdateObject - The partialUpdateObject object.
|
|
1181
1309
|
* @param partialUpdateObject.indexName - The index in which to perform the request.
|
|
1182
1310
|
* @param partialUpdateObject.objectID - Unique identifier of an object.
|
|
1183
|
-
* @param partialUpdateObject.
|
|
1311
|
+
* @param partialUpdateObject.attributesToUpdate - Map of attribute(s) to update.
|
|
1184
1312
|
* @param partialUpdateObject.createIfNotExists - Creates the record if it does not exist yet.
|
|
1185
1313
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
1186
1314
|
*/
|
|
1187
|
-
partialUpdateObject({ indexName, objectID,
|
|
1315
|
+
partialUpdateObject({ indexName, objectID, attributesToUpdate, createIfNotExists, }, requestOptions) {
|
|
1188
1316
|
if (!indexName) {
|
|
1189
1317
|
throw new Error('Parameter `indexName` is required when calling `partialUpdateObject`.');
|
|
1190
1318
|
}
|
|
1191
1319
|
if (!objectID) {
|
|
1192
1320
|
throw new Error('Parameter `objectID` is required when calling `partialUpdateObject`.');
|
|
1193
1321
|
}
|
|
1194
|
-
if (!
|
|
1195
|
-
throw new Error('Parameter `
|
|
1322
|
+
if (!attributesToUpdate) {
|
|
1323
|
+
throw new Error('Parameter `attributesToUpdate` is required when calling `partialUpdateObject`.');
|
|
1196
1324
|
}
|
|
1197
1325
|
const requestPath = '/1/indexes/{indexName}/{objectID}/partial'
|
|
1198
1326
|
.replace('{indexName}', encodeURIComponent(indexName))
|
|
@@ -1207,7 +1335,7 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1207
1335
|
path: requestPath,
|
|
1208
1336
|
queryParameters,
|
|
1209
1337
|
headers,
|
|
1210
|
-
data:
|
|
1338
|
+
data: attributesToUpdate,
|
|
1211
1339
|
};
|
|
1212
1340
|
return transporter.request(request, requestOptions);
|
|
1213
1341
|
},
|
|
@@ -1408,17 +1536,17 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1408
1536
|
* @summary Save a batch of rules.
|
|
1409
1537
|
* @param saveRules - The saveRules object.
|
|
1410
1538
|
* @param saveRules.indexName - The index in which to perform the request.
|
|
1411
|
-
* @param saveRules.
|
|
1539
|
+
* @param saveRules.rules - The rules object.
|
|
1412
1540
|
* @param saveRules.forwardToReplicas - When true, changes are also propagated to replicas of the given indexName.
|
|
1413
1541
|
* @param saveRules.clearExistingRules - When true, existing Rules are cleared before adding this batch. When false, existing Rules are kept.
|
|
1414
1542
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
1415
1543
|
*/
|
|
1416
|
-
saveRules({ indexName,
|
|
1544
|
+
saveRules({ indexName, rules, forwardToReplicas, clearExistingRules, }, requestOptions) {
|
|
1417
1545
|
if (!indexName) {
|
|
1418
1546
|
throw new Error('Parameter `indexName` is required when calling `saveRules`.');
|
|
1419
1547
|
}
|
|
1420
|
-
if (!
|
|
1421
|
-
throw new Error('Parameter `
|
|
1548
|
+
if (!rules) {
|
|
1549
|
+
throw new Error('Parameter `rules` is required when calling `saveRules`.');
|
|
1422
1550
|
}
|
|
1423
1551
|
const requestPath = '/1/indexes/{indexName}/rules/batch'.replace('{indexName}', encodeURIComponent(indexName));
|
|
1424
1552
|
const headers = {};
|
|
@@ -1434,7 +1562,7 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1434
1562
|
path: requestPath,
|
|
1435
1563
|
queryParameters,
|
|
1436
1564
|
headers,
|
|
1437
|
-
data:
|
|
1565
|
+
data: rules,
|
|
1438
1566
|
};
|
|
1439
1567
|
return transporter.request(request, requestOptions);
|
|
1440
1568
|
},
|
|
@@ -1645,9 +1773,6 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1645
1773
|
if (!indexName) {
|
|
1646
1774
|
throw new Error('Parameter `indexName` is required when calling `searchRules`.');
|
|
1647
1775
|
}
|
|
1648
|
-
if (!searchRulesParams) {
|
|
1649
|
-
throw new Error('Parameter `searchRulesParams` is required when calling `searchRules`.');
|
|
1650
|
-
}
|
|
1651
1776
|
const requestPath = '/1/indexes/{indexName}/rules/search'.replace('{indexName}', encodeURIComponent(indexName));
|
|
1652
1777
|
const headers = {};
|
|
1653
1778
|
const queryParameters = {};
|
|
@@ -1656,7 +1781,7 @@ function createSearchClient({ appId: appIdOption, apiKey: apiKeyOption, authMode
|
|
|
1656
1781
|
path: requestPath,
|
|
1657
1782
|
queryParameters,
|
|
1658
1783
|
headers,
|
|
1659
|
-
data: searchRulesParams,
|
|
1784
|
+
data: searchRulesParams ? searchRulesParams : {},
|
|
1660
1785
|
useReadTransporter: true,
|
|
1661
1786
|
cacheable: true,
|
|
1662
1787
|
};
|