algoliasearch 5.6.1 → 5.8.0

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.
Files changed (110) hide show
  1. package/README.md +6 -8
  2. package/builds/browser.ts +5 -4
  3. package/builds/fetch.ts +5 -4
  4. package/builds/models.ts +30 -16
  5. package/builds/node.ts +5 -4
  6. package/dist/algoliasearch.umd.js +1 -1
  7. package/dist/browser.d.ts +1 -1
  8. package/dist/browser.js +6 -6
  9. package/dist/browser.js.map +1 -1
  10. package/dist/browser.min.js +1 -1
  11. package/dist/browser.min.js.map +1 -1
  12. package/dist/fetch.d.ts +1 -1
  13. package/dist/fetch.js +6 -6
  14. package/dist/fetch.js.map +1 -1
  15. package/dist/lite/browser.d.ts +646 -583
  16. package/dist/lite/builds/browser.js +8 -11
  17. package/dist/lite/builds/browser.js.map +1 -1
  18. package/dist/lite/builds/browser.min.js +1 -1
  19. package/dist/lite/builds/browser.min.js.map +1 -1
  20. package/dist/lite/builds/browser.umd.js +2 -2
  21. package/dist/lite/builds/node.cjs +5 -8
  22. package/dist/lite/builds/node.cjs.map +1 -1
  23. package/dist/lite/builds/node.js +6 -9
  24. package/dist/lite/builds/node.js.map +1 -1
  25. package/dist/lite/node.d.cts +646 -582
  26. package/dist/lite/node.d.ts +646 -582
  27. package/dist/lite/src/liteClient.cjs +4 -7
  28. package/dist/lite/src/liteClient.cjs.map +1 -1
  29. package/dist/lite/src/liteClient.js +4 -7
  30. package/dist/lite/src/liteClient.js.map +1 -1
  31. package/dist/node.cjs +3 -3
  32. package/dist/node.cjs.map +1 -1
  33. package/dist/node.d.cts +1 -1
  34. package/dist/node.d.ts +1 -1
  35. package/dist/node.js +6 -6
  36. package/dist/node.js.map +1 -1
  37. package/index.js +1 -1
  38. package/lite/builds/browser.ts +11 -9
  39. package/lite/builds/node.ts +8 -6
  40. package/lite/model/acl.ts +1 -1
  41. package/lite/model/alternativesAsExact.ts +1 -1
  42. package/lite/model/apiKey.ts +4 -4
  43. package/lite/model/aroundPrecision.ts +1 -1
  44. package/lite/model/aroundRadius.ts +1 -1
  45. package/lite/model/automaticFacetFilters.ts +1 -1
  46. package/lite/model/banner.ts +13 -0
  47. package/lite/model/bannerImage.ts +12 -0
  48. package/lite/model/bannerImageUrl.ts +8 -0
  49. package/lite/model/bannerLink.ts +8 -0
  50. package/lite/model/banners.ts +10 -0
  51. package/lite/model/baseIndexSettings.ts +15 -15
  52. package/lite/model/baseRecommendIndexSettings.ts +14 -14
  53. package/lite/model/baseRecommendSearchParams.ts +8 -8
  54. package/lite/model/baseSearchParams.ts +1 -1
  55. package/lite/model/baseSearchParamsWithoutQuery.ts +8 -8
  56. package/lite/model/baseSearchResponse.ts +2 -2
  57. package/lite/model/booleanString.ts +1 -1
  58. package/lite/model/browseParamsObject.ts +1 -1
  59. package/lite/model/browseResponse.ts +1 -1
  60. package/lite/model/clientMethodProps.ts +2 -2
  61. package/lite/model/consequenceQueryObject.ts +2 -2
  62. package/lite/model/facetFilters.ts +1 -1
  63. package/lite/model/facetOrdering.ts +1 -1
  64. package/lite/model/getApiKeyResponse.ts +1 -1
  65. package/lite/model/getRecommendationsParams.ts +1 -1
  66. package/lite/model/getRecommendationsResponse.ts +1 -1
  67. package/lite/model/highlightResult.ts +1 -1
  68. package/lite/model/highlightResultOption.ts +1 -1
  69. package/lite/model/hit.ts +2 -2
  70. package/lite/model/ignorePlurals.ts +1 -1
  71. package/lite/model/index.ts +13 -7
  72. package/lite/model/indexSettingsAsSearchParams.ts +15 -15
  73. package/lite/model/indexSettingsFacets.ts +1 -1
  74. package/lite/model/matchLevel.ts +1 -1
  75. package/lite/model/mode.ts +1 -1
  76. package/lite/model/numericFilters.ts +2 -2
  77. package/lite/model/optionalFilters.ts +1 -1
  78. package/lite/model/queryType.ts +2 -2
  79. package/lite/model/reRankingApplyFilter.ts +1 -1
  80. package/lite/model/recommendHit.ts +2 -2
  81. package/lite/model/recommendSearchParams.ts +1 -1
  82. package/lite/model/recommendationsHit.ts +1 -0
  83. package/lite/model/recommendationsHits.ts +1 -1
  84. package/lite/model/recommendationsRequest.ts +5 -3
  85. package/lite/model/recommendationsResults.ts +1 -1
  86. package/lite/model/redirect.ts +1 -1
  87. package/lite/model/removeStopWords.ts +1 -1
  88. package/lite/model/removeWordsIfNoResults.ts +1 -1
  89. package/lite/model/renderingContent.ts +4 -1
  90. package/lite/model/searchForFacetValuesResponse.ts +1 -1
  91. package/lite/model/searchForFacets.ts +1 -1
  92. package/lite/model/searchForHits.ts +1 -1
  93. package/lite/model/searchHits.ts +1 -1
  94. package/lite/model/searchMethodParams.ts +1 -1
  95. package/lite/model/searchParams.ts +1 -1
  96. package/lite/model/searchQuery.ts +1 -1
  97. package/lite/model/searchResponse.ts +1 -1
  98. package/lite/model/searchResponses.ts +1 -1
  99. package/lite/model/searchResult.ts +1 -1
  100. package/lite/model/semanticSearch.ts +1 -1
  101. package/lite/model/snippetResult.ts +1 -1
  102. package/lite/model/sortRemainingBy.ts +1 -1
  103. package/lite/model/supportedLanguage.ts +1 -1
  104. package/lite/model/tagFilters.ts +1 -1
  105. package/lite/model/typoTolerance.ts +2 -2
  106. package/lite/model/value.ts +2 -2
  107. package/lite/model/widgets.ts +10 -0
  108. package/lite/src/liteClient.ts +15 -15
  109. package/lite.js +1 -1
  110. package/package.json +14 -14
package/README.md CHANGED
@@ -32,19 +32,17 @@
32
32
 
33
33
  ## 💡 Getting Started
34
34
 
35
-
36
35
  To get started, you first need to install algoliasearch (or any other available API client package).
37
36
  All of our clients comes with type definition, and are available for both browser and node environments.
38
37
 
39
38
  ### With a package manager
40
39
 
41
-
42
40
  ```bash
43
- yarn add algoliasearch@5.6.1
41
+ yarn add algoliasearch@5.8.0
44
42
  # or
45
- npm install algoliasearch@5.6.1
43
+ npm install algoliasearch@5.8.0
46
44
  # or
47
- pnpm add algoliasearch@5.6.1
45
+ pnpm add algoliasearch@5.8.0
48
46
  ```
49
47
 
50
48
  ### Without a package manager
@@ -53,10 +51,10 @@ Add the following JavaScript snippet to the <head> of your website:
53
51
 
54
52
  ```html
55
53
  // for the full client
56
- <script src="https://cdn.jsdelivr.net/npm/algoliasearch@5.6.1/dist/algoliasearch.umd.js"></script>
54
+ <script src="https://cdn.jsdelivr.net/npm/algoliasearch@5.8.0/dist/algoliasearch.umd.js"></script>
57
55
 
58
56
  // for the lite client
59
- <script src="https://cdn.jsdelivr.net/npm/algoliasearch@5.6.1/dist/lite/builds/browser.umd.js"></script>
57
+ <script src="https://cdn.jsdelivr.net/npm/algoliasearch@5.8.0/dist/lite/builds/browser.umd.js"></script>
60
58
  ```
61
59
 
62
60
  ### Usage
@@ -82,4 +80,4 @@ Encountering an issue? Before reaching out to support, we recommend heading to o
82
80
 
83
81
  ## 📄 License
84
82
 
85
- The Algolia JavaScript API Client is an open-sourced software licensed under the [MIT license](LICENSE).
83
+ The Algolia JavaScript API Client is an open-sourced software licensed under the [MIT license](LICENSE).
package/builds/browser.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  // Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
2
2
 
3
3
  import type { AbtestingClient, Region as AbtestingRegion } from '@algolia/client-abtesting';
4
- import { abtestingClient } from '@algolia/client-abtesting';
5
4
  import type { AnalyticsClient, Region as AnalyticsRegion } from '@algolia/client-analytics';
6
- import { analyticsClient } from '@algolia/client-analytics';
7
5
  import type { ClientOptions } from '@algolia/client-common';
8
6
  import type { PersonalizationClient, Region as PersonalizationRegion } from '@algolia/client-personalization';
9
- import { personalizationClient } from '@algolia/client-personalization';
10
7
  import type { SearchClient } from '@algolia/client-search';
11
- import { searchClient } from '@algolia/client-search';
12
8
  import type { RecommendClient } from '@algolia/recommend';
9
+
10
+ import { abtestingClient } from '@algolia/client-abtesting';
11
+ import { analyticsClient } from '@algolia/client-analytics';
12
+ import { personalizationClient } from '@algolia/client-personalization';
13
+ import { searchClient } from '@algolia/client-search';
13
14
  import { recommendClient } from '@algolia/recommend';
14
15
 
15
16
  import type { InitClientOptions, InitClientRegion } from './models';
package/builds/fetch.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  // Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
2
2
 
3
3
  import type { AbtestingClient, Region as AbtestingRegion } from '@algolia/client-abtesting';
4
- import { abtestingClient } from '@algolia/client-abtesting';
5
4
  import type { AnalyticsClient, Region as AnalyticsRegion } from '@algolia/client-analytics';
6
- import { analyticsClient } from '@algolia/client-analytics';
7
5
  import type { ClientOptions } from '@algolia/client-common';
8
6
  import type { PersonalizationClient, Region as PersonalizationRegion } from '@algolia/client-personalization';
9
- import { personalizationClient } from '@algolia/client-personalization';
10
7
  import type { SearchClient } from '@algolia/client-search';
11
- import { searchClient } from '@algolia/client-search';
12
8
  import type { RecommendClient } from '@algolia/recommend';
9
+
10
+ import { abtestingClient } from '@algolia/client-abtesting';
11
+ import { analyticsClient } from '@algolia/client-analytics';
12
+ import { personalizationClient } from '@algolia/client-personalization';
13
+ import { searchClient } from '@algolia/client-search';
13
14
  import { recommendClient } from '@algolia/recommend';
14
15
 
15
16
  import type { InitClientOptions, InitClientRegion } from './models';
package/builds/models.ts CHANGED
@@ -12,8 +12,13 @@ import type {
12
12
  AroundRadiusAll,
13
13
  AutomaticFacetFilter,
14
14
  AutomaticFacetFilters,
15
- BaseSearchParams,
15
+ Banner,
16
+ BannerImage,
17
+ BannerImageUrl,
18
+ BannerLink,
19
+ Banners,
16
20
  BaseIndexSettings,
21
+ BaseSearchParams,
17
22
  BaseSearchParamsWithoutQuery,
18
23
  BaseSearchResponse,
19
24
  BooleanString,
@@ -42,8 +47,8 @@ import type {
42
47
  HighlightResultOption,
43
48
  IgnorePlurals,
44
49
  IndexSettingsAsSearchParams,
45
- MatchLevel,
46
50
  MatchedGeoLocation,
51
+ MatchLevel,
47
52
  Mode,
48
53
  NumericFilters,
49
54
  OptionalFilters,
@@ -55,14 +60,14 @@ import type {
55
60
  QueryType,
56
61
  Range,
57
62
  RankingInfo,
58
- ReRankingApplyFilter,
59
63
  Redirect,
60
- RedirectRuleIndexMetadata,
61
64
  RedirectRuleIndexData,
65
+ RedirectRuleIndexMetadata,
62
66
  RedirectURL,
63
67
  RemoveStopWords,
64
68
  RemoveWordsIfNoResults,
65
69
  RenderingContent,
70
+ ReRankingApplyFilter,
66
71
  SearchPagination,
67
72
  SearchParams,
68
73
  SearchParamsObject,
@@ -74,31 +79,41 @@ import type {
74
79
  SupportedLanguage,
75
80
  TagFilters,
76
81
  TaskStatus,
82
+ TimeRange,
77
83
  TypoTolerance,
78
84
  TypoToleranceEnum,
79
85
  Value,
86
+ Widgets,
80
87
  } from '@algolia/client-search';
81
88
  import { apiClientVersion } from '@algolia/client-search';
82
89
 
83
90
  type Region = AbTestingRegion | AnalyticsRegion;
84
91
 
92
+ export * from '@algolia/client-abtesting';
93
+ export * from '@algolia/client-analytics';
94
+ export * from '@algolia/client-personalization';
85
95
  export * from '@algolia/client-search';
86
96
  export * from '@algolia/recommend';
87
- export * from '@algolia/client-personalization';
88
- export * from '@algolia/client-analytics';
89
- export * from '@algolia/client-abtesting';
90
97
 
91
98
  export {
99
+ AbTestingRegion,
92
100
  AdvancedSyntaxFeatures,
93
101
  AlternativesAsExact,
102
+ AnalyticsRegion,
94
103
  Anchoring,
104
+ apiClientVersion,
95
105
  AroundPrecision,
96
106
  AroundRadius,
97
107
  AroundRadiusAll,
98
108
  AutomaticFacetFilter,
99
109
  AutomaticFacetFilters,
100
- BaseSearchParams,
110
+ Banner,
111
+ BannerImage,
112
+ BannerImageUrl,
113
+ BannerLink,
114
+ Banners,
101
115
  BaseIndexSettings,
116
+ BaseSearchParams,
102
117
  BaseSearchParamsWithoutQuery,
103
118
  BaseSearchResponse,
104
119
  BooleanString,
@@ -127,8 +142,8 @@ export {
127
142
  HighlightResultOption,
128
143
  IgnorePlurals,
129
144
  IndexSettingsAsSearchParams,
130
- MatchLevel,
131
145
  MatchedGeoLocation,
146
+ MatchLevel,
132
147
  Mode,
133
148
  NumericFilters,
134
149
  OptionalFilters,
@@ -140,32 +155,31 @@ export {
140
155
  QueryType,
141
156
  Range,
142
157
  RankingInfo,
143
- ReRankingApplyFilter,
144
158
  Redirect,
145
- RedirectRuleIndexMetadata,
146
159
  RedirectRuleIndexData,
160
+ RedirectRuleIndexMetadata,
147
161
  RedirectURL,
162
+ Region,
148
163
  RemoveStopWords,
149
164
  RemoveWordsIfNoResults,
150
165
  RenderingContent,
166
+ ReRankingApplyFilter,
167
+ SearchPagination,
151
168
  SearchParams,
152
169
  SearchParamsObject,
153
170
  SearchParamsQuery,
154
171
  SemanticSearch,
155
- SearchPagination,
156
172
  SnippetResult,
157
173
  SnippetResultOption,
158
174
  SortRemainingBy,
159
175
  SupportedLanguage,
160
176
  TagFilters,
161
177
  TaskStatus,
178
+ TimeRange,
162
179
  TypoTolerance,
163
180
  TypoToleranceEnum,
164
181
  Value,
165
- AnalyticsRegion,
166
- AbTestingRegion,
167
- Region,
168
- apiClientVersion,
182
+ Widgets,
169
183
  };
170
184
 
171
185
  /**
package/builds/node.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  // Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
2
2
 
3
3
  import type { AbtestingClient, Region as AbtestingRegion } from '@algolia/client-abtesting';
4
- import { abtestingClient } from '@algolia/client-abtesting';
5
4
  import type { AnalyticsClient, Region as AnalyticsRegion } from '@algolia/client-analytics';
6
- import { analyticsClient } from '@algolia/client-analytics';
7
5
  import type { ClientOptions } from '@algolia/client-common';
8
6
  import type { PersonalizationClient, Region as PersonalizationRegion } from '@algolia/client-personalization';
9
- import { personalizationClient } from '@algolia/client-personalization';
10
7
  import type { SearchClient } from '@algolia/client-search';
11
- import { searchClient } from '@algolia/client-search';
12
8
  import type { RecommendClient } from '@algolia/recommend';
9
+
10
+ import { abtestingClient } from '@algolia/client-abtesting';
11
+ import { analyticsClient } from '@algolia/client-analytics';
12
+ import { personalizationClient } from '@algolia/client-personalization';
13
+ import { searchClient } from '@algolia/client-search';
13
14
  import { recommendClient } from '@algolia/recommend';
14
15
 
15
16
  import type { InitClientOptions, InitClientRegion } from './models';
@@ -4,7 +4,7 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.algoliasearch = {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
- function v(i){let u,d=`algolia-client-js-${i.key}`;function m(){return u===void 0&&(u=i.localStorage||window.localStorage),u}function g(){return JSON.parse(m().getItem(d)||"{}")}function w(r){m().setItem(d,JSON.stringify(r));}function l(){let r=i.timeToLive?i.timeToLive*1e3:null,e=g(),t=Object.fromEntries(Object.entries(e).filter(([,s])=>s.timestamp!==void 0));if(w(t),!r)return;let a=Object.fromEntries(Object.entries(t).filter(([,s])=>{let n=new Date().getTime();return !(s.timestamp+r<n)}));w(a);}return {get(r,e,t={miss:()=>Promise.resolve()}){return Promise.resolve().then(()=>(l(),g()[JSON.stringify(r)])).then(a=>Promise.all([a?a.value:e(),a!==void 0])).then(([a,s])=>Promise.all([a,s||t.miss(a)])).then(([a])=>a)},set(r,e){return Promise.resolve().then(()=>{let t=g();return t[JSON.stringify(r)]={timestamp:new Date().getTime(),value:e},m().setItem(d,JSON.stringify(t)),e})},delete(r){return Promise.resolve().then(()=>{let e=g();delete e[JSON.stringify(r)],m().setItem(d,JSON.stringify(e));})},clear(){return Promise.resolve().then(()=>{m().removeItem(d);})}}}function de(){return {get(i,u,d={miss:()=>Promise.resolve()}){return u().then(g=>Promise.all([g,d.miss(g)])).then(([g])=>g)},set(i,u){return Promise.resolve(u)},delete(i){return Promise.resolve()},clear(){return Promise.resolve()}}}function R(i){let u=[...i.caches],d=u.shift();return d===void 0?de():{get(m,g,w={miss:()=>Promise.resolve()}){return d.get(m,g,w).catch(()=>R({caches:u}).get(m,g,w))},set(m,g){return d.set(m,g).catch(()=>R({caches:u}).set(m,g))},delete(m){return d.delete(m).catch(()=>R({caches:u}).delete(m))},clear(){return d.clear().catch(()=>R({caches:u}).clear())}}}function E(i={serializable:!0}){let u={};return {get(d,m,g={miss:()=>Promise.resolve()}){let w=JSON.stringify(d);if(w in u)return Promise.resolve(i.serializable?JSON.parse(u[w]):u[w]);let l=m();return l.then(r=>g.miss(r)).then(()=>l)},set(d,m){return u[JSON.stringify(d)]=i.serializable?JSON.stringify(m):m,Promise.resolve(m)},delete(d){return delete u[JSON.stringify(d)],Promise.resolve()},clear(){return u={},Promise.resolve()}}}var C=1e3,A=2e3,b=3e4;function me(i){let u={value:`Algolia for JavaScript (${i})`,add(d){let m=`; ${d.segment}${d.version!==void 0?` (${d.version})`:""}`;return u.value.indexOf(m)===-1&&(u.value=`${u.value}${m}`),u}};return u}function I(i,u,d="WithinHeaders"){let m={"x-algolia-api-key":u,"x-algolia-application-id":i};return {headers(){return d==="WithinHeaders"?m:{}},queryParameters(){return d==="WithinQueryParameters"?m:{}}}}function k({func:i,validate:u,aggregator:d,error:m,timeout:g=()=>0}){let w=l=>new Promise((r,e)=>{i(l).then(t=>(d&&d(t),u(t)?r(t):m&&m.validate(t)?e(new Error(m.message(t))):setTimeout(()=>{w(t).then(r).catch(e);},g()))).catch(t=>{e(t);});});return w()}function x({algoliaAgents:i,client:u,version:d}){let m=me(d).add({segment:u,version:d});return i.forEach(g=>m.add(g)),m}function O(){return {debug(i,u){return Promise.resolve()},info(i,u){return Promise.resolve()},error(i,u){return Promise.resolve()}}}var K=2*60*1e3;function J(i,u="up"){let d=Date.now();function m(){return u==="up"||Date.now()-d>K}function g(){return u==="timed out"&&Date.now()-d<=K}return {...i,status:u,lastUpdate:d,isUp:m,isTimedOut:g}}var V=class extends Error{name="AlgoliaError";constructor(i,u){super(i),u&&(this.name=u);}},X=class extends V{stackTrace;constructor(i,u,d){super(i,d),this.stackTrace=u;}},ge=class extends X{constructor(i){super("Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support.",i,"RetryError");}},_=class extends X{status;constructor(i,u,d,m="ApiError"){super(i,d,m),this.status=u;}},qe=class extends V{response;constructor(i,u){super(i,"DeserializationError"),this.response=u;}},Pe=class extends _{error;constructor(i,u,d,m){super(i,u,m,"DetailedApiError"),this.error=d;}};function B(i){let u=i;for(let d=i.length-1;d>0;d--){let m=Math.floor(Math.random()*(d+1)),g=i[d];u[d]=i[m],u[m]=g;}return u}function pe(i,u,d){let m=we(d),g=`${i.protocol}://${i.url}${i.port?`:${i.port}`:""}/${u.charAt(0)==="/"?u.substring(1):u}`;return m.length&&(g+=`?${m}`),g}function we(i){return Object.keys(i).filter(u=>i[u]!==void 0).sort().map(u=>`${u}=${encodeURIComponent(Object.prototype.toString.call(i[u])==="[object Array]"?i[u].join(","):i[u]).replaceAll("+","%20")}`).join("&")}function fe(i,u){if(i.method==="GET"||i.data===void 0&&u.data===void 0)return;let d=Array.isArray(i.data)?i.data:{...i.data,...u.data};return JSON.stringify(d)}function ye(i,u,d){let m={Accept:"application/json",...i,...u,...d},g={};return Object.keys(m).forEach(w=>{let l=m[w];g[w.toLowerCase()]=l;}),g}function Ee(i){try{return JSON.parse(i.content)}catch(u){throw new qe(u.message,i)}}function Se({content:i,status:u},d){try{let m=JSON.parse(i);return "error"in m?new Pe(m.message,u,m.error,d):new _(m.message,u,d)}catch{}return new _(i,u,d)}function Te({isTimedOut:i,status:u}){return !i&&~~u===0}function Re({isTimedOut:i,status:u}){return i||Te({isTimedOut:i,status:u})||~~(u/100)!==2&&~~(u/100)!==4}function ve({status:i}){return ~~(i/100)===2}function Ce(i){return i.map(u=>Y(u))}function Y(i){let u=i.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return {...i,request:{...i.request,headers:{...i.request.headers,...u}}}}function U({hosts:i,hostsCache:u,baseHeaders:d,logger:m,baseQueryParameters:g,algoliaAgent:w,timeouts:l,requester:r,requestsCache:e,responsesCache:t}){async function a(o){let c=await Promise.all(o.map(f=>u.get(f,()=>Promise.resolve(J(f))))),h=c.filter(f=>f.isUp()),q=c.filter(f=>f.isTimedOut()),P=[...h,...q];return {hosts:P.length>0?P:o,getTimeout(f,y){return (q.length===0&&f===0?1:q.length+3+f)*y}}}async function s(o,c,h=!0){let q=[],P=fe(o,c),p=ye(d,o.headers,c.headers),f=o.method==="GET"?{...o.data,...c.data}:{},y={...g,...o.queryParameters,...f};if(w.value&&(y["x-algolia-agent"]=w.value),c&&c.queryParameters)for(let T of Object.keys(c.queryParameters))!c.queryParameters[T]||Object.prototype.toString.call(c.queryParameters[T])==="[object Object]"?y[T]=c.queryParameters[T]:y[T]=c.queryParameters[T].toString();let S=0,F=async(T,G)=>{let j=T.pop();if(j===void 0)throw new ge(Ce(q));let L={...l,...c.timeouts},H={data:P,headers:p,method:o.method,url:pe(j,o.path,y),connectTimeout:G(S,L.connect),responseTimeout:G(S,h?L.read:L.write)},M=W=>{let Q={request:H,response:W,host:j,triesLeft:T.length};return q.push(Q),Q},N=await r.send(H);if(Re(N)){let W=M(N);return N.isTimedOut&&S++,m.info("Retryable failure",Y(W)),await u.set(j,J(j,N.isTimedOut?"timed out":"down")),F(T,G)}if(ve(N))return Ee(N);throw M(N),Se(N,q)},le=i.filter(T=>T.accept==="readWrite"||(h?T.accept==="read":T.accept==="write")),z=await a(le);return F([...z.hosts].reverse(),z.getTimeout)}function n(o,c={}){let h=o.useReadTransporter||o.method==="GET";if(!h)return s(o,c,h);let q=()=>s(o,c);if((c.cacheable||o.cacheable)!==!0)return q();let p={request:o,requestOptions:c,transporter:{queryParameters:g,headers:d}};return t.get(p,()=>e.get(p,()=>e.set(p,q()).then(f=>Promise.all([e.delete(p),f]),f=>Promise.all([e.delete(p),Promise.reject(f)])).then(([f,y])=>y)),{miss:f=>t.set(p,f)})}return {hostsCache:u,requester:r,timeouts:l,logger:m,algoliaAgent:w,baseHeaders:d,baseQueryParameters:g,hosts:i,request:n,requestsCache:e,responsesCache:t}}function D(){function i(u){return new Promise(d=>{let m=new XMLHttpRequest;m.open(u.method,u.url,!0),Object.keys(u.headers).forEach(r=>m.setRequestHeader(r,u.headers[r]));let g=(r,e)=>setTimeout(()=>{m.abort(),d({status:0,content:e,isTimedOut:!0});},r),w=g(u.connectTimeout,"Connection timeout"),l;m.onreadystatechange=()=>{m.readyState>m.OPENED&&l===void 0&&(clearTimeout(w),l=g(u.responseTimeout,"Socket timeout"));},m.onerror=()=>{m.status===0&&(clearTimeout(w),clearTimeout(l),d({content:m.responseText||"Network request failed",status:m.status,isTimedOut:!1}));},m.onload=()=>{clearTimeout(w),clearTimeout(l),d({content:m.responseText,status:m.status,isTimedOut:!1});},m.send(u.data);})}return {send:i}}var ee="5.6.1",Z=["de","us"];function Ae(i){return [{url:i?"analytics.{region}.algolia.com".replace("{region}",i):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function be({appId:i,apiKey:u,authMode:d,algoliaAgents:m,region:g,...w}){let l=I(i,u,d),r=U({hosts:Ae(g),...w,algoliaAgent:x({algoliaAgents:m,client:"Abtesting",version:ee}),baseHeaders:{"content-type":"text/plain",...l.headers(),...w.baseHeaders},baseQueryParameters:{...l.queryParameters(),...w.baseQueryParameters}});return {transporter:r,appId:i,clearCache(){return Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then(()=>{})},get _ua(){return r.algoliaAgent.value},addAlgoliaAgent(e,t){r.algoliaAgent.add({segment:e,version:t});},setClientApiKey({apiKey:e}){!d||d==="WithinHeaders"?r.baseHeaders["x-algolia-api-key"]=e:r.baseQueryParameters["x-algolia-api-key"]=e;},addABTests(e,t){if(!e)throw new Error("Parameter `addABTestsRequest` is required when calling `addABTests`.");if(!e.name)throw new Error("Parameter `addABTestsRequest.name` is required when calling `addABTests`.");if(!e.variants)throw new Error("Parameter `addABTestsRequest.variants` is required when calling `addABTests`.");if(!e.endAt)throw new Error("Parameter `addABTestsRequest.endAt` is required when calling `addABTests`.");let o={method:"POST",path:"/2/abtests",queryParameters:{},headers:{},data:e};return r.request(o,t)},customDelete({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let c={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customGet({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let c={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customPost({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},customPut({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let h={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},deleteABTest({id:e},t){if(!e)throw new Error("Parameter `id` is required when calling `deleteABTest`.");let o={method:"DELETE",path:"/2/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)},getABTest({id:e},t){if(!e)throw new Error("Parameter `id` is required when calling `getABTest`.");let o={method:"GET",path:"/2/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)},listABTests({offset:e,limit:t,indexPrefix:a,indexSuffix:s}={},n=void 0){let o="/2/abtests",c={},h={};e!==void 0&&(h.offset=e.toString()),t!==void 0&&(h.limit=t.toString()),a!==void 0&&(h.indexPrefix=a.toString()),s!==void 0&&(h.indexSuffix=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},scheduleABTest(e,t){if(!e)throw new Error("Parameter `scheduleABTestsRequest` is required when calling `scheduleABTest`.");if(!e.name)throw new Error("Parameter `scheduleABTestsRequest.name` is required when calling `scheduleABTest`.");if(!e.variants)throw new Error("Parameter `scheduleABTestsRequest.variants` is required when calling `scheduleABTest`.");if(!e.scheduledAt)throw new Error("Parameter `scheduleABTestsRequest.scheduledAt` is required when calling `scheduleABTest`.");if(!e.endAt)throw new Error("Parameter `scheduleABTestsRequest.endAt` is required when calling `scheduleABTest`.");let o={method:"POST",path:"/2/abtests/schedule",queryParameters:{},headers:{},data:e};return r.request(o,t)},stopABTest({id:e},t){if(!e)throw new Error("Parameter `id` is required when calling `stopABTest`.");let o={method:"POST",path:"/2/abtests/{id}/stop".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)}}}function re(i,u,d,m){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!Z.includes(d)))throw new Error(`\`region\` must be one of the following: ${Z.join(", ")}`);return be({appId:i,apiKey:u,region:d,timeouts:{connect:C,read:A,write:b},logger:O(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[v({key:`${ee}-${i}`}),E()]}),...m})}var ae="5.6.1",te=["de","us"];function Ie(i){return [{url:i?"analytics.{region}.algolia.com".replace("{region}",i):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function xe({appId:i,apiKey:u,authMode:d,algoliaAgents:m,region:g,...w}){let l=I(i,u,d),r=U({hosts:Ie(g),...w,algoliaAgent:x({algoliaAgents:m,client:"Analytics",version:ae}),baseHeaders:{"content-type":"text/plain",...l.headers(),...w.baseHeaders},baseQueryParameters:{...l.queryParameters(),...w.baseQueryParameters}});return {transporter:r,appId:i,clearCache(){return Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then(()=>{})},get _ua(){return r.algoliaAgent.value},addAlgoliaAgent(e,t){r.algoliaAgent.add({segment:e,version:t});},setClientApiKey({apiKey:e}){!d||d==="WithinHeaders"?r.baseHeaders["x-algolia-api-key"]=e:r.baseQueryParameters["x-algolia-api-key"]=e;},customDelete({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let c={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customGet({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let c={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customPost({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},customPut({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let h={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},getAddToCartRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getAddToCartRate`.");let o="/2/conversions/addToCartRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getAverageClickPosition({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getAverageClickPosition`.");let o="/2/clicks/averageClickPosition",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getClickPositions({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getClickPositions`.");let o="/2/clicks/positions",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getClickThroughRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getClickThroughRate`.");let o="/2/clicks/clickThroughRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getConversionRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getConversionRate`.");let o="/2/conversions/conversionRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getNoClickRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getNoClickRate`.");let o="/2/searches/noClickRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getNoResultsRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getNoResultsRate`.");let o="/2/searches/noResultRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getPurchaseRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getPurchaseRate`.");let o="/2/conversions/purchaseRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getRevenue({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getRevenue`.");let o="/2/conversions/revenue",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getSearchesCount({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getSearchesCount`.");let o="/2/searches/count",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getSearchesNoClicks({index:e,startDate:t,endDate:a,limit:s,offset:n,tags:o},c){if(!e)throw new Error("Parameter `index` is required when calling `getSearchesNoClicks`.");let h="/2/searches/noClicks",q={},P={};e!==void 0&&(P.index=e.toString()),t!==void 0&&(P.startDate=t.toString()),a!==void 0&&(P.endDate=a.toString()),s!==void 0&&(P.limit=s.toString()),n!==void 0&&(P.offset=n.toString()),o!==void 0&&(P.tags=o.toString());let p={method:"GET",path:h,queryParameters:P,headers:q};return r.request(p,c)},getSearchesNoResults({index:e,startDate:t,endDate:a,limit:s,offset:n,tags:o},c){if(!e)throw new Error("Parameter `index` is required when calling `getSearchesNoResults`.");let h="/2/searches/noResults",q={},P={};e!==void 0&&(P.index=e.toString()),t!==void 0&&(P.startDate=t.toString()),a!==void 0&&(P.endDate=a.toString()),s!==void 0&&(P.limit=s.toString()),n!==void 0&&(P.offset=n.toString()),o!==void 0&&(P.tags=o.toString());let p={method:"GET",path:h,queryParameters:P,headers:q};return r.request(p,c)},getStatus({index:e},t){if(!e)throw new Error("Parameter `index` is required when calling `getStatus`.");let a="/2/status",s={},n={};e!==void 0&&(n.index=e.toString());let o={method:"GET",path:a,queryParameters:n,headers:s};return r.request(o,t)},getTopCountries({index:e,startDate:t,endDate:a,limit:s,offset:n,tags:o},c){if(!e)throw new Error("Parameter `index` is required when calling `getTopCountries`.");let h="/2/countries",q={},P={};e!==void 0&&(P.index=e.toString()),t!==void 0&&(P.startDate=t.toString()),a!==void 0&&(P.endDate=a.toString()),s!==void 0&&(P.limit=s.toString()),n!==void 0&&(P.offset=n.toString()),o!==void 0&&(P.tags=o.toString());let p={method:"GET",path:h,queryParameters:P,headers:q};return r.request(p,c)},getTopFilterAttributes({index:e,search:t,startDate:a,endDate:s,limit:n,offset:o,tags:c},h){if(!e)throw new Error("Parameter `index` is required when calling `getTopFilterAttributes`.");let q="/2/filters",P={},p={};e!==void 0&&(p.index=e.toString()),t!==void 0&&(p.search=t.toString()),a!==void 0&&(p.startDate=a.toString()),s!==void 0&&(p.endDate=s.toString()),n!==void 0&&(p.limit=n.toString()),o!==void 0&&(p.offset=o.toString()),c!==void 0&&(p.tags=c.toString());let f={method:"GET",path:q,queryParameters:p,headers:P};return r.request(f,h)},getTopFilterForAttribute({attribute:e,index:t,search:a,startDate:s,endDate:n,limit:o,offset:c,tags:h},q){if(!e)throw new Error("Parameter `attribute` is required when calling `getTopFilterForAttribute`.");if(!t)throw new Error("Parameter `index` is required when calling `getTopFilterForAttribute`.");let P="/2/filters/{attribute}".replace("{attribute}",encodeURIComponent(e)),p={},f={};t!==void 0&&(f.index=t.toString()),a!==void 0&&(f.search=a.toString()),s!==void 0&&(f.startDate=s.toString()),n!==void 0&&(f.endDate=n.toString()),o!==void 0&&(f.limit=o.toString()),c!==void 0&&(f.offset=c.toString()),h!==void 0&&(f.tags=h.toString());let y={method:"GET",path:P,queryParameters:f,headers:p};return r.request(y,q)},getTopFiltersNoResults({index:e,search:t,startDate:a,endDate:s,limit:n,offset:o,tags:c},h){if(!e)throw new Error("Parameter `index` is required when calling `getTopFiltersNoResults`.");let q="/2/filters/noResults",P={},p={};e!==void 0&&(p.index=e.toString()),t!==void 0&&(p.search=t.toString()),a!==void 0&&(p.startDate=a.toString()),s!==void 0&&(p.endDate=s.toString()),n!==void 0&&(p.limit=n.toString()),o!==void 0&&(p.offset=o.toString()),c!==void 0&&(p.tags=c.toString());let f={method:"GET",path:q,queryParameters:p,headers:P};return r.request(f,h)},getTopHits({index:e,search:t,clickAnalytics:a,revenueAnalytics:s,startDate:n,endDate:o,limit:c,offset:h,tags:q},P){if(!e)throw new Error("Parameter `index` is required when calling `getTopHits`.");let p="/2/hits",f={},y={};e!==void 0&&(y.index=e.toString()),t!==void 0&&(y.search=t.toString()),a!==void 0&&(y.clickAnalytics=a.toString()),s!==void 0&&(y.revenueAnalytics=s.toString()),n!==void 0&&(y.startDate=n.toString()),o!==void 0&&(y.endDate=o.toString()),c!==void 0&&(y.limit=c.toString()),h!==void 0&&(y.offset=h.toString()),q!==void 0&&(y.tags=q.toString());let S={method:"GET",path:p,queryParameters:y,headers:f};return r.request(S,P)},getTopSearches({index:e,clickAnalytics:t,revenueAnalytics:a,startDate:s,endDate:n,orderBy:o,direction:c,limit:h,offset:q,tags:P},p){if(!e)throw new Error("Parameter `index` is required when calling `getTopSearches`.");let f="/2/searches",y={},S={};e!==void 0&&(S.index=e.toString()),t!==void 0&&(S.clickAnalytics=t.toString()),a!==void 0&&(S.revenueAnalytics=a.toString()),s!==void 0&&(S.startDate=s.toString()),n!==void 0&&(S.endDate=n.toString()),o!==void 0&&(S.orderBy=o.toString()),c!==void 0&&(S.direction=c.toString()),h!==void 0&&(S.limit=h.toString()),q!==void 0&&(S.offset=q.toString()),P!==void 0&&(S.tags=P.toString());let F={method:"GET",path:f,queryParameters:S,headers:y};return r.request(F,p)},getUsersCount({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getUsersCount`.");let o="/2/users/count",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)}}}function se(i,u,d,m){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!te.includes(d)))throw new Error(`\`region\` must be one of the following: ${te.join(", ")}`);return xe({appId:i,apiKey:u,region:d,timeouts:{connect:C,read:A,write:b},logger:O(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[v({key:`${ae}-${i}`}),E()]}),...m})}var oe="5.6.1",ne=["eu","us"];function Oe(i){return [{url:"personalization.{region}.algolia.com".replace("{region}",i),accept:"readWrite",protocol:"https"}]}function Ue({appId:i,apiKey:u,authMode:d,algoliaAgents:m,region:g,...w}){let l=I(i,u,d),r=U({hosts:Oe(g),...w,algoliaAgent:x({algoliaAgents:m,client:"Personalization",version:oe}),baseHeaders:{"content-type":"text/plain",...l.headers(),...w.baseHeaders},baseQueryParameters:{...l.queryParameters(),...w.baseQueryParameters}});return {transporter:r,appId:i,clearCache(){return Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then(()=>{})},get _ua(){return r.algoliaAgent.value},addAlgoliaAgent(e,t){r.algoliaAgent.add({segment:e,version:t});},setClientApiKey({apiKey:e}){!d||d==="WithinHeaders"?r.baseHeaders["x-algolia-api-key"]=e:r.baseQueryParameters["x-algolia-api-key"]=e;},customDelete({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let c={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customGet({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let c={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customPost({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},customPut({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let h={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},deleteUserProfile({userToken:e},t){if(!e)throw new Error("Parameter `userToken` is required when calling `deleteUserProfile`.");let o={method:"DELETE",path:"/1/profiles/{userToken}".replace("{userToken}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)},getPersonalizationStrategy(e){let n={method:"GET",path:"/1/strategies/personalization",queryParameters:{},headers:{}};return r.request(n,e)},getUserTokenProfile({userToken:e},t){if(!e)throw new Error("Parameter `userToken` is required when calling `getUserTokenProfile`.");let o={method:"GET",path:"/1/profiles/personalization/{userToken}".replace("{userToken}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)},setPersonalizationStrategy(e,t){if(!e)throw new Error("Parameter `personalizationStrategyParams` is required when calling `setPersonalizationStrategy`.");if(!e.eventScoring)throw new Error("Parameter `personalizationStrategyParams.eventScoring` is required when calling `setPersonalizationStrategy`.");if(!e.facetScoring)throw new Error("Parameter `personalizationStrategyParams.facetScoring` is required when calling `setPersonalizationStrategy`.");if(!e.personalizationImpact)throw new Error("Parameter `personalizationStrategyParams.personalizationImpact` is required when calling `setPersonalizationStrategy`.");let o={method:"POST",path:"/1/strategies/personalization",queryParameters:{},headers:{},data:e};return r.request(o,t)}}}function ie(i,u,d,m){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(!d||d&&(typeof d!="string"||!ne.includes(d)))throw new Error(`\`region\` is required and must be one of the following: ${ne.join(", ")}`);return Ue({appId:i,apiKey:u,region:d,timeouts:{connect:C,read:A,write:b},logger:O(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[v({key:`${oe}-${i}`}),E()]}),...m})}var $="5.6.1";function De(i){return [{url:`${i}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${i}.algolia.net`,accept:"write",protocol:"https"}].concat(B([{url:`${i}-1.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${i}-2.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${i}-3.algolianet.com`,accept:"readWrite",protocol:"https"}]))}function Ne({appId:i,apiKey:u,authMode:d,algoliaAgents:m,...g}){let w=I(i,u,d),l=U({hosts:De(i),...g,algoliaAgent:x({algoliaAgents:m,client:"Search",version:$}),baseHeaders:{"content-type":"text/plain",...w.headers(),...g.baseHeaders},baseQueryParameters:{...w.queryParameters(),...g.baseQueryParameters}});return {transporter:l,appId:i,clearCache(){return Promise.all([l.requestsCache.clear(),l.responsesCache.clear()]).then(()=>{})},get _ua(){return l.algoliaAgent.value},addAlgoliaAgent(r,e){l.algoliaAgent.add({segment:r,version:e});},setClientApiKey({apiKey:r}){!d||d==="WithinHeaders"?l.baseHeaders["x-algolia-api-key"]=r:l.baseQueryParameters["x-algolia-api-key"]=r;},waitForTask({indexName:r,taskID:e,maxRetries:t=50,timeout:a=n=>Math.min(n*200,5e3)},s){let n=0;return k({func:()=>this.getTask({indexName:r,taskID:e},s),validate:o=>o.status==="published",aggregator:()=>n+=1,error:{validate:()=>n>=t,message:()=>`The maximum number of retries exceeded. (${n}/${t})`},timeout:()=>a(n)})},waitForAppTask({taskID:r,maxRetries:e=50,timeout:t=s=>Math.min(s*200,5e3)},a){let s=0;return k({func:()=>this.getAppTask({taskID:r},a),validate:n=>n.status==="published",aggregator:()=>s+=1,error:{validate:()=>s>=e,message:()=>`The maximum number of retries exceeded. (${s}/${e})`},timeout:()=>t(s)})},waitForApiKey({operation:r,key:e,apiKey:t,maxRetries:a=50,timeout:s=o=>Math.min(o*200,5e3)},n){let o=0,c={aggregator:()=>o+=1,error:{validate:()=>o>=a,message:()=>`The maximum number of retries exceeded. (${o}/${a})`},timeout:()=>s(o)};if(r==="update"){if(!t)throw new Error("`apiKey` is required when waiting for an `update` operation.");return k({...c,func:()=>this.getApiKey({key:e},n),validate:h=>{for(let q of Object.keys(t)){let P=t[q],p=h[q];if(Array.isArray(P)&&Array.isArray(p)){if(P.length!==p.length||P.some((f,y)=>f!==p[y]))return !1}else if(P!==p)return !1}return !0}})}return k({...c,func:()=>this.getApiKey({key:e},n).catch(h=>{if(h.status!==404)throw h}),validate:h=>r==="add"?h!==void 0:h===void 0})},browseObjects({indexName:r,browseParams:e,...t},a){return k({func:s=>this.browse({indexName:r,browseParams:{cursor:s?s.cursor:void 0,...e}},a),validate:s=>s.cursor===void 0,...t})},browseRules({indexName:r,searchRulesParams:e,...t},a){let s={hitsPerPage:1e3,...e};return k({func:n=>this.searchRules({indexName:r,searchRulesParams:{...s,page:n?n.page+1:s.page||0}},a),validate:n=>n.nbHits<s.hitsPerPage,...t})},browseSynonyms({indexName:r,searchSynonymsParams:e,...t},a){let s={page:0,...e,hitsPerPage:1e3};return k({func:n=>{let o=this.searchSynonyms({indexName:r,searchSynonymsParams:{...s,page:s.page}},a);return s.page+=1,o},validate:n=>n.nbHits<s.hitsPerPage,...t})},async chunkedBatch({indexName:r,objects:e,action:t="addObject",waitForTasks:a,batchSize:s=1e3},n){let o=[],c=[],h=e.entries();for(let[q,P]of h)o.push({action:t,body:P}),(o.length===s||q===e.length-1)&&(c.push(await this.batch({indexName:r,batchWriteParams:{requests:o}},n)),o=[]);if(a)for(let q of c)await this.waitForTask({indexName:r,taskID:q.taskID});return c},async saveObjects({indexName:r,objects:e},t){return await this.chunkedBatch({indexName:r,objects:e,action:"addObject"},t)},async deleteObjects({indexName:r,objectIDs:e},t){return await this.chunkedBatch({indexName:r,objects:e.map(a=>({objectID:a})),action:"deleteObject"},t)},async partialUpdateObjects({indexName:r,objects:e,createIfNotExists:t},a){return await this.chunkedBatch({indexName:r,objects:e,action:t?"partialUpdateObject":"partialUpdateObjectNoCreate"},a)},async replaceAllObjects({indexName:r,objects:e,batchSize:t},a){let s=Math.floor(Math.random()*1e6)+1e5,n=`${r}_tmp_${s}`,o=await this.operationIndex({indexName:r,operationIndexParams:{operation:"copy",destination:n,scope:["settings","rules","synonyms"]}},a),c=await this.chunkedBatch({indexName:n,objects:e,waitForTasks:!0,batchSize:t},a);await this.waitForTask({indexName:n,taskID:o.taskID}),o=await this.operationIndex({indexName:r,operationIndexParams:{operation:"copy",destination:n,scope:["settings","rules","synonyms"]}},a),await this.waitForTask({indexName:n,taskID:o.taskID});let h=await this.operationIndex({indexName:n,operationIndexParams:{operation:"move",destination:r}},a);return await this.waitForTask({indexName:n,taskID:h.taskID}),{copyOperationResponse:o,batchResponses:c,moveOperationResponse:h}},async indexExists({indexName:r}){try{await this.getSettings({indexName:r});}catch(e){if(e instanceof _&&e.status===404)return !1;throw e}return !0},searchForHits(r,e){return this.search(r,e)},searchForFacets(r,e){return this.search(r,e)},addApiKey(r,e){if(!r)throw new Error("Parameter `apiKey` is required when calling `addApiKey`.");if(!r.acl)throw new Error("Parameter `apiKey.acl` is required when calling `addApiKey`.");let n={method:"POST",path:"/1/keys",queryParameters:{},headers:{},data:r};return l.request(n,e)},addOrUpdateObject({indexName:r,objectID:e,body:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `addOrUpdateObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `addOrUpdateObject`.");if(!t)throw new Error("Parameter `body` is required when calling `addOrUpdateObject`.");let c={method:"PUT",path:"/1/indexes/{indexName}/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{},data:t};return l.request(c,a)},appendSource(r,e){if(!r)throw new Error("Parameter `source` is required when calling `appendSource`.");if(!r.source)throw new Error("Parameter `source.source` is required when calling `appendSource`.");let n={method:"POST",path:"/1/security/sources/append",queryParameters:{},headers:{},data:r};return l.request(n,e)},assignUserId({xAlgoliaUserID:r,assignUserIdParams:e},t){if(!r)throw new Error("Parameter `xAlgoliaUserID` is required when calling `assignUserId`.");if(!e)throw new Error("Parameter `assignUserIdParams` is required when calling `assignUserId`.");if(!e.cluster)throw new Error("Parameter `assignUserIdParams.cluster` is required when calling `assignUserId`.");let a="/1/clusters/mapping",s={},n={};r!==void 0&&(s["X-Algolia-User-ID"]=r.toString());let o={method:"POST",path:a,queryParameters:n,headers:s,data:e};return l.request(o,t)},batch({indexName:r,batchWriteParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `batch`.");if(!e)throw new Error("Parameter `batchWriteParams` is required when calling `batch`.");if(!e.requests)throw new Error("Parameter `batchWriteParams.requests` is required when calling `batch`.");let o={method:"POST",path:"/1/indexes/{indexName}/batch".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},batchAssignUserIds({xAlgoliaUserID:r,batchAssignUserIdsParams:e},t){if(!r)throw new Error("Parameter `xAlgoliaUserID` is required when calling `batchAssignUserIds`.");if(!e)throw new Error("Parameter `batchAssignUserIdsParams` is required when calling `batchAssignUserIds`.");if(!e.cluster)throw new Error("Parameter `batchAssignUserIdsParams.cluster` is required when calling `batchAssignUserIds`.");if(!e.users)throw new Error("Parameter `batchAssignUserIdsParams.users` is required when calling `batchAssignUserIds`.");let a="/1/clusters/mapping/batch",s={},n={};r!==void 0&&(s["X-Algolia-User-ID"]=r.toString());let o={method:"POST",path:a,queryParameters:n,headers:s,data:e};return l.request(o,t)},batchDictionaryEntries({dictionaryName:r,batchDictionaryEntriesParams:e},t){if(!r)throw new Error("Parameter `dictionaryName` is required when calling `batchDictionaryEntries`.");if(!e)throw new Error("Parameter `batchDictionaryEntriesParams` is required when calling `batchDictionaryEntries`.");if(!e.requests)throw new Error("Parameter `batchDictionaryEntriesParams.requests` is required when calling `batchDictionaryEntries`.");let o={method:"POST",path:"/1/dictionaries/{dictionaryName}/batch".replace("{dictionaryName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},browse({indexName:r,browseParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `browse`.");let o={method:"POST",path:"/1/indexes/{indexName}/browse".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e||{}};return l.request(o,t)},clearObjects({indexName:r},e){if(!r)throw new Error("Parameter `indexName` is required when calling `clearObjects`.");let n={method:"POST",path:"/1/indexes/{indexName}/clear".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},clearRules({indexName:r,forwardToReplicas:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `clearRules`.");let a="/1/indexes/{indexName}/rules/clear".replace("{indexName}",encodeURIComponent(r)),s={},n={};e!==void 0&&(n.forwardToReplicas=e.toString());let o={method:"POST",path:a,queryParameters:n,headers:s};return l.request(o,t)},clearSynonyms({indexName:r,forwardToReplicas:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `clearSynonyms`.");let a="/1/indexes/{indexName}/synonyms/clear".replace("{indexName}",encodeURIComponent(r)),s={},n={};e!==void 0&&(n.forwardToReplicas=e.toString());let o={method:"POST",path:a,queryParameters:n,headers:s};return l.request(o,t)},customDelete({path:r,parameters:e},t){if(!r)throw new Error("Parameter `path` is required when calling `customDelete`.");let o={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{}};return l.request(o,t)},customGet({path:r,parameters:e},t){if(!r)throw new Error("Parameter `path` is required when calling `customGet`.");let o={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{}};return l.request(o,t)},customPost({path:r,parameters:e,body:t},a){if(!r)throw new Error("Parameter `path` is required when calling `customPost`.");let c={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{},data:t||{}};return l.request(c,a)},customPut({path:r,parameters:e,body:t},a){if(!r)throw new Error("Parameter `path` is required when calling `customPut`.");let c={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{},data:t||{}};return l.request(c,a)},deleteApiKey({key:r},e){if(!r)throw new Error("Parameter `key` is required when calling `deleteApiKey`.");let n={method:"DELETE",path:"/1/keys/{key}".replace("{key}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},deleteBy({indexName:r,deleteByParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteBy`.");if(!e)throw new Error("Parameter `deleteByParams` is required when calling `deleteBy`.");let o={method:"POST",path:"/1/indexes/{indexName}/deleteByQuery".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},deleteIndex({indexName:r},e){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteIndex`.");let n={method:"DELETE",path:"/1/indexes/{indexName}".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},deleteObject({indexName:r,objectID:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `deleteObject`.");let o={method:"DELETE",path:"/1/indexes/{indexName}/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(o,t)},deleteRule({indexName:r,objectID:e,forwardToReplicas:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteRule`.");if(!e)throw new Error("Parameter `objectID` is required when calling `deleteRule`.");let s="/1/indexes/{indexName}/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),n={},o={};t!==void 0&&(o.forwardToReplicas=t.toString());let c={method:"DELETE",path:s,queryParameters:o,headers:n};return l.request(c,a)},deleteSource({source:r},e){if(!r)throw new Error("Parameter `source` is required when calling `deleteSource`.");let n={method:"DELETE",path:"/1/security/sources/{source}".replace("{source}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},deleteSynonym({indexName:r,objectID:e,forwardToReplicas:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteSynonym`.");if(!e)throw new Error("Parameter `objectID` is required when calling `deleteSynonym`.");let s="/1/indexes/{indexName}/synonyms/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),n={},o={};t!==void 0&&(o.forwardToReplicas=t.toString());let c={method:"DELETE",path:s,queryParameters:o,headers:n};return l.request(c,a)},getApiKey({key:r},e){if(!r)throw new Error("Parameter `key` is required when calling `getApiKey`.");let n={method:"GET",path:"/1/keys/{key}".replace("{key}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},getAppTask({taskID:r},e){if(!r)throw new Error("Parameter `taskID` is required when calling `getAppTask`.");let n={method:"GET",path:"/1/task/{taskID}".replace("{taskID}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},getDictionaryLanguages(r){let s={method:"GET",path:"/1/dictionaries/*/languages",queryParameters:{},headers:{}};return l.request(s,r)},getDictionarySettings(r){let s={method:"GET",path:"/1/dictionaries/*/settings",queryParameters:{},headers:{}};return l.request(s,r)},getLogs({offset:r,length:e,indexName:t,type:a}={},s=void 0){let n="/1/logs",o={},c={};r!==void 0&&(c.offset=r.toString()),e!==void 0&&(c.length=e.toString()),t!==void 0&&(c.indexName=t.toString()),a!==void 0&&(c.type=a.toString());let h={method:"GET",path:n,queryParameters:c,headers:o};return l.request(h,s)},getObject({indexName:r,objectID:e,attributesToRetrieve:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `getObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `getObject`.");let s="/1/indexes/{indexName}/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),n={},o={};t!==void 0&&(o.attributesToRetrieve=t.toString());let c={method:"GET",path:s,queryParameters:o,headers:n};return l.request(c,a)},getObjects(r,e){if(!r)throw new Error("Parameter `getObjectsParams` is required when calling `getObjects`.");if(!r.requests)throw new Error("Parameter `getObjectsParams.requests` is required when calling `getObjects`.");let n={method:"POST",path:"/1/indexes/*/objects",queryParameters:{},headers:{},data:r,useReadTransporter:!0,cacheable:!0};return l.request(n,e)},getRule({indexName:r,objectID:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `getRule`.");if(!e)throw new Error("Parameter `objectID` is required when calling `getRule`.");let o={method:"GET",path:"/1/indexes/{indexName}/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(o,t)},getSettings({indexName:r},e){if(!r)throw new Error("Parameter `indexName` is required when calling `getSettings`.");let n={method:"GET",path:"/1/indexes/{indexName}/settings".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},getSources(r){let s={method:"GET",path:"/1/security/sources",queryParameters:{},headers:{}};return l.request(s,r)},getSynonym({indexName:r,objectID:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `getSynonym`.");if(!e)throw new Error("Parameter `objectID` is required when calling `getSynonym`.");let o={method:"GET",path:"/1/indexes/{indexName}/synonyms/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(o,t)},getTask({indexName:r,taskID:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `getTask`.");if(!e)throw new Error("Parameter `taskID` is required when calling `getTask`.");let o={method:"GET",path:"/1/indexes/{indexName}/task/{taskID}".replace("{indexName}",encodeURIComponent(r)).replace("{taskID}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(o,t)},getTopUserIds(r){let s={method:"GET",path:"/1/clusters/mapping/top",queryParameters:{},headers:{}};return l.request(s,r)},getUserId({userID:r},e){if(!r)throw new Error("Parameter `userID` is required when calling `getUserId`.");let n={method:"GET",path:"/1/clusters/mapping/{userID}".replace("{userID}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},hasPendingMappings({getClusters:r}={},e=void 0){let t="/1/clusters/mapping/pending",a={},s={};r!==void 0&&(s.getClusters=r.toString());let n={method:"GET",path:t,queryParameters:s,headers:a};return l.request(n,e)},listApiKeys(r){let s={method:"GET",path:"/1/keys",queryParameters:{},headers:{}};return l.request(s,r)},listClusters(r){let s={method:"GET",path:"/1/clusters",queryParameters:{},headers:{}};return l.request(s,r)},listIndices({page:r,hitsPerPage:e}={},t=void 0){let a="/1/indexes",s={},n={};r!==void 0&&(n.page=r.toString()),e!==void 0&&(n.hitsPerPage=e.toString());let o={method:"GET",path:a,queryParameters:n,headers:s};return l.request(o,t)},listUserIds({page:r,hitsPerPage:e}={},t=void 0){let a="/1/clusters/mapping",s={},n={};r!==void 0&&(n.page=r.toString()),e!==void 0&&(n.hitsPerPage=e.toString());let o={method:"GET",path:a,queryParameters:n,headers:s};return l.request(o,t)},multipleBatch(r,e){if(!r)throw new Error("Parameter `batchParams` is required when calling `multipleBatch`.");if(!r.requests)throw new Error("Parameter `batchParams.requests` is required when calling `multipleBatch`.");let n={method:"POST",path:"/1/indexes/*/batch",queryParameters:{},headers:{},data:r};return l.request(n,e)},operationIndex({indexName:r,operationIndexParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `operationIndex`.");if(!e)throw new Error("Parameter `operationIndexParams` is required when calling `operationIndex`.");if(!e.operation)throw new Error("Parameter `operationIndexParams.operation` is required when calling `operationIndex`.");if(!e.destination)throw new Error("Parameter `operationIndexParams.destination` is required when calling `operationIndex`.");let o={method:"POST",path:"/1/indexes/{indexName}/operation".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},partialUpdateObject({indexName:r,objectID:e,attributesToUpdate:t,createIfNotExists:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `partialUpdateObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `partialUpdateObject`.");if(!t)throw new Error("Parameter `attributesToUpdate` is required when calling `partialUpdateObject`.");let n="/1/indexes/{indexName}/{objectID}/partial".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),o={},c={};a!==void 0&&(c.createIfNotExists=a.toString());let h={method:"POST",path:n,queryParameters:c,headers:o,data:t};return l.request(h,s)},removeUserId({userID:r},e){if(!r)throw new Error("Parameter `userID` is required when calling `removeUserId`.");let n={method:"DELETE",path:"/1/clusters/mapping/{userID}".replace("{userID}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},replaceSources({source:r},e){if(!r)throw new Error("Parameter `source` is required when calling `replaceSources`.");let n={method:"PUT",path:"/1/security/sources",queryParameters:{},headers:{},data:r};return l.request(n,e)},restoreApiKey({key:r},e){if(!r)throw new Error("Parameter `key` is required when calling `restoreApiKey`.");let n={method:"POST",path:"/1/keys/{key}/restore".replace("{key}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},saveObject({indexName:r,body:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `saveObject`.");if(!e)throw new Error("Parameter `body` is required when calling `saveObject`.");let o={method:"POST",path:"/1/indexes/{indexName}".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},saveRule({indexName:r,objectID:e,rule:t,forwardToReplicas:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `saveRule`.");if(!e)throw new Error("Parameter `objectID` is required when calling `saveRule`.");if(!t)throw new Error("Parameter `rule` is required when calling `saveRule`.");if(!t.objectID)throw new Error("Parameter `rule.objectID` is required when calling `saveRule`.");let n="/1/indexes/{indexName}/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),o={},c={};a!==void 0&&(c.forwardToReplicas=a.toString());let h={method:"PUT",path:n,queryParameters:c,headers:o,data:t};return l.request(h,s)},saveRules({indexName:r,rules:e,forwardToReplicas:t,clearExistingRules:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `saveRules`.");if(!e)throw new Error("Parameter `rules` is required when calling `saveRules`.");let n="/1/indexes/{indexName}/rules/batch".replace("{indexName}",encodeURIComponent(r)),o={},c={};t!==void 0&&(c.forwardToReplicas=t.toString()),a!==void 0&&(c.clearExistingRules=a.toString());let h={method:"POST",path:n,queryParameters:c,headers:o,data:e};return l.request(h,s)},saveSynonym({indexName:r,objectID:e,synonymHit:t,forwardToReplicas:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `saveSynonym`.");if(!e)throw new Error("Parameter `objectID` is required when calling `saveSynonym`.");if(!t)throw new Error("Parameter `synonymHit` is required when calling `saveSynonym`.");if(!t.objectID)throw new Error("Parameter `synonymHit.objectID` is required when calling `saveSynonym`.");if(!t.type)throw new Error("Parameter `synonymHit.type` is required when calling `saveSynonym`.");let n="/1/indexes/{indexName}/synonyms/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),o={},c={};a!==void 0&&(c.forwardToReplicas=a.toString());let h={method:"PUT",path:n,queryParameters:c,headers:o,data:t};return l.request(h,s)},saveSynonyms({indexName:r,synonymHit:e,forwardToReplicas:t,replaceExistingSynonyms:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `saveSynonyms`.");if(!e)throw new Error("Parameter `synonymHit` is required when calling `saveSynonyms`.");let n="/1/indexes/{indexName}/synonyms/batch".replace("{indexName}",encodeURIComponent(r)),o={},c={};t!==void 0&&(c.forwardToReplicas=t.toString()),a!==void 0&&(c.replaceExistingSynonyms=a.toString());let h={method:"POST",path:n,queryParameters:c,headers:o,data:e};return l.request(h,s)},search(r,e){if(r&&Array.isArray(r)&&(r={requests:r.map(({params:c,...h})=>h.type==="facet"?{...h,...c,type:"facet"}:{...h,...c,facet:void 0,maxFacetHits:void 0,facetQuery:void 0})}),!r)throw new Error("Parameter `searchMethodParams` is required when calling `search`.");if(!r.requests)throw new Error("Parameter `searchMethodParams.requests` is required when calling `search`.");let n={method:"POST",path:"/1/indexes/*/queries",queryParameters:{},headers:{},data:r,useReadTransporter:!0,cacheable:!0};return l.request(n,e)},searchDictionaryEntries({dictionaryName:r,searchDictionaryEntriesParams:e},t){if(!r)throw new Error("Parameter `dictionaryName` is required when calling `searchDictionaryEntries`.");if(!e)throw new Error("Parameter `searchDictionaryEntriesParams` is required when calling `searchDictionaryEntries`.");if(!e.query)throw new Error("Parameter `searchDictionaryEntriesParams.query` is required when calling `searchDictionaryEntries`.");let o={method:"POST",path:"/1/dictionaries/{dictionaryName}/search".replace("{dictionaryName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return l.request(o,t)},searchForFacetValues({indexName:r,facetName:e,searchForFacetValuesRequest:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `searchForFacetValues`.");if(!e)throw new Error("Parameter `facetName` is required when calling `searchForFacetValues`.");let c={method:"POST",path:"/1/indexes/{indexName}/facets/{facetName}/query".replace("{indexName}",encodeURIComponent(r)).replace("{facetName}",encodeURIComponent(e)),queryParameters:{},headers:{},data:t||{},useReadTransporter:!0,cacheable:!0};return l.request(c,a)},searchRules({indexName:r,searchRulesParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `searchRules`.");let o={method:"POST",path:"/1/indexes/{indexName}/rules/search".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e||{},useReadTransporter:!0,cacheable:!0};return l.request(o,t)},searchSingleIndex({indexName:r,searchParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `searchSingleIndex`.");let o={method:"POST",path:"/1/indexes/{indexName}/query".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e||{},useReadTransporter:!0,cacheable:!0};return l.request(o,t)},searchSynonyms({indexName:r,searchSynonymsParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `searchSynonyms`.");let o={method:"POST",path:"/1/indexes/{indexName}/synonyms/search".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e||{},useReadTransporter:!0,cacheable:!0};return l.request(o,t)},searchUserIds(r,e){if(!r)throw new Error("Parameter `searchUserIdsParams` is required when calling `searchUserIds`.");if(!r.query)throw new Error("Parameter `searchUserIdsParams.query` is required when calling `searchUserIds`.");let n={method:"POST",path:"/1/clusters/mapping/search",queryParameters:{},headers:{},data:r,useReadTransporter:!0,cacheable:!0};return l.request(n,e)},setDictionarySettings(r,e){if(!r)throw new Error("Parameter `dictionarySettingsParams` is required when calling `setDictionarySettings`.");if(!r.disableStandardEntries)throw new Error("Parameter `dictionarySettingsParams.disableStandardEntries` is required when calling `setDictionarySettings`.");let n={method:"PUT",path:"/1/dictionaries/*/settings",queryParameters:{},headers:{},data:r};return l.request(n,e)},setSettings({indexName:r,indexSettings:e,forwardToReplicas:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `setSettings`.");if(!e)throw new Error("Parameter `indexSettings` is required when calling `setSettings`.");let s="/1/indexes/{indexName}/settings".replace("{indexName}",encodeURIComponent(r)),n={},o={};t!==void 0&&(o.forwardToReplicas=t.toString());let c={method:"PUT",path:s,queryParameters:o,headers:n,data:e};return l.request(c,a)},updateApiKey({key:r,apiKey:e},t){if(!r)throw new Error("Parameter `key` is required when calling `updateApiKey`.");if(!e)throw new Error("Parameter `apiKey` is required when calling `updateApiKey`.");if(!e.acl)throw new Error("Parameter `apiKey.acl` is required when calling `updateApiKey`.");let o={method:"PUT",path:"/1/keys/{key}".replace("{key}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)}}}function ce(i,u,d){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");return Ne({appId:i,apiKey:u,timeouts:{connect:C,read:A,write:b},logger:O(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[v({key:`${$}-${i}`}),E()]}),...d})}var ue="5.6.1";function ke(i){return [{url:`${i}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${i}.algolia.net`,accept:"write",protocol:"https"}].concat(B([{url:`${i}-1.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${i}-2.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${i}-3.algolianet.com`,accept:"readWrite",protocol:"https"}]))}function je({appId:i,apiKey:u,authMode:d,algoliaAgents:m,...g}){let w=I(i,u,d),l=U({hosts:ke(i),...g,algoliaAgent:x({algoliaAgents:m,client:"Recommend",version:ue}),baseHeaders:{"content-type":"text/plain",...w.headers(),...g.baseHeaders},baseQueryParameters:{...w.queryParameters(),...g.baseQueryParameters}});return {transporter:l,appId:i,clearCache(){return Promise.all([l.requestsCache.clear(),l.responsesCache.clear()]).then(()=>{})},get _ua(){return l.algoliaAgent.value},addAlgoliaAgent(r,e){l.algoliaAgent.add({segment:r,version:e});},setClientApiKey({apiKey:r}){!d||d==="WithinHeaders"?l.baseHeaders["x-algolia-api-key"]=r:l.baseQueryParameters["x-algolia-api-key"]=r;},customDelete({path:r,parameters:e},t){if(!r)throw new Error("Parameter `path` is required when calling `customDelete`.");let o={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{}};return l.request(o,t)},customGet({path:r,parameters:e},t){if(!r)throw new Error("Parameter `path` is required when calling `customGet`.");let o={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{}};return l.request(o,t)},customPost({path:r,parameters:e,body:t},a){if(!r)throw new Error("Parameter `path` is required when calling `customPost`.");let c={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{},data:t||{}};return l.request(c,a)},customPut({path:r,parameters:e,body:t},a){if(!r)throw new Error("Parameter `path` is required when calling `customPut`.");let c={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{},data:t||{}};return l.request(c,a)},deleteRecommendRule({indexName:r,model:e,objectID:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteRecommendRule`.");if(!e)throw new Error("Parameter `model` is required when calling `deleteRecommendRule`.");if(!t)throw new Error("Parameter `objectID` is required when calling `deleteRecommendRule`.");let c={method:"DELETE",path:"/1/indexes/{indexName}/{model}/recommend/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{model}",encodeURIComponent(e)).replace("{objectID}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(c,a)},getRecommendRule({indexName:r,model:e,objectID:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `getRecommendRule`.");if(!e)throw new Error("Parameter `model` is required when calling `getRecommendRule`.");if(!t)throw new Error("Parameter `objectID` is required when calling `getRecommendRule`.");let c={method:"GET",path:"/1/indexes/{indexName}/{model}/recommend/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{model}",encodeURIComponent(e)).replace("{objectID}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(c,a)},getRecommendStatus({indexName:r,model:e,taskID:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `getRecommendStatus`.");if(!e)throw new Error("Parameter `model` is required when calling `getRecommendStatus`.");if(!t)throw new Error("Parameter `taskID` is required when calling `getRecommendStatus`.");let c={method:"GET",path:"/1/indexes/{indexName}/{model}/task/{taskID}".replace("{indexName}",encodeURIComponent(r)).replace("{model}",encodeURIComponent(e)).replace("{taskID}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(c,a)},getRecommendations(r,e){if(r&&Array.isArray(r)&&(r={requests:r}),!r)throw new Error("Parameter `getRecommendationsParams` is required when calling `getRecommendations`.");if(!r.requests)throw new Error("Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.");let n={method:"POST",path:"/1/indexes/*/recommendations",queryParameters:{},headers:{},data:r,useReadTransporter:!0,cacheable:!0};return l.request(n,e)},searchRecommendRules({indexName:r,model:e,searchRecommendRulesParams:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `searchRecommendRules`.");if(!e)throw new Error("Parameter `model` is required when calling `searchRecommendRules`.");let c={method:"POST",path:"/1/indexes/{indexName}/{model}/recommend/rules/search".replace("{indexName}",encodeURIComponent(r)).replace("{model}",encodeURIComponent(e)),queryParameters:{},headers:{},data:t||{},useReadTransporter:!0,cacheable:!0};return l.request(c,a)}}}function he(i,u,d){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");return je({appId:i,apiKey:u,timeouts:{connect:C,read:A,write:b},logger:O(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[v({key:`${ue}-${i}`}),E()]}),...d})}function Tr(i,u,d){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");let m=ce(i,u,d);return {...m,get _ua(){return m.transporter.algoliaAgent.value},initRecommend:(g={})=>he(g.appId||i,g.apiKey||u,g.options),initAnalytics:(g={})=>se(g.appId||i,g.apiKey||u,g.region,g.options),initAbtesting:(g={})=>re(g.appId||i,g.apiKey||u,g.region,g.options),initPersonalization:g=>ie(g.appId||i,g.apiKey||u,g.region,g.options)}}
7
+ function v(){function i(u){return new Promise(d=>{let m=new XMLHttpRequest;m.open(u.method,u.url,!0),Object.keys(u.headers).forEach(r=>m.setRequestHeader(r,u.headers[r]));let g=(r,e)=>setTimeout(()=>{m.abort(),d({status:0,content:e,isTimedOut:!0});},r),w=g(u.connectTimeout,"Connection timeout"),l;m.onreadystatechange=()=>{m.readyState>m.OPENED&&l===void 0&&(clearTimeout(w),l=g(u.responseTimeout,"Socket timeout"));},m.onerror=()=>{m.status===0&&(clearTimeout(w),clearTimeout(l),d({content:m.responseText||"Network request failed",status:m.status,isTimedOut:!1}));},m.onload=()=>{clearTimeout(w),clearTimeout(l),d({content:m.responseText,status:m.status,isTimedOut:!1});},m.send(u.data);})}return {send:i}}function C(i){let u,d=`algolia-client-js-${i.key}`;function m(){return u===void 0&&(u=i.localStorage||window.localStorage),u}function g(){return JSON.parse(m().getItem(d)||"{}")}function w(r){m().setItem(d,JSON.stringify(r));}function l(){let r=i.timeToLive?i.timeToLive*1e3:null,e=g(),t=Object.fromEntries(Object.entries(e).filter(([,s])=>s.timestamp!==void 0));if(w(t),!r)return;let a=Object.fromEntries(Object.entries(t).filter(([,s])=>{let n=new Date().getTime();return !(s.timestamp+r<n)}));w(a);}return {get(r,e,t={miss:()=>Promise.resolve()}){return Promise.resolve().then(()=>(l(),g()[JSON.stringify(r)])).then(a=>Promise.all([a?a.value:e(),a!==void 0])).then(([a,s])=>Promise.all([a,s||t.miss(a)])).then(([a])=>a)},set(r,e){return Promise.resolve().then(()=>{let t=g();return t[JSON.stringify(r)]={timestamp:new Date().getTime(),value:e},m().setItem(d,JSON.stringify(t)),e})},delete(r){return Promise.resolve().then(()=>{let e=g();delete e[JSON.stringify(r)],m().setItem(d,JSON.stringify(e));})},clear(){return Promise.resolve().then(()=>{m().removeItem(d);})}}}function de(){return {get(i,u,d={miss:()=>Promise.resolve()}){return u().then(g=>Promise.all([g,d.miss(g)])).then(([g])=>g)},set(i,u){return Promise.resolve(u)},delete(i){return Promise.resolve()},clear(){return Promise.resolve()}}}function R(i){let u=[...i.caches],d=u.shift();return d===void 0?de():{get(m,g,w={miss:()=>Promise.resolve()}){return d.get(m,g,w).catch(()=>R({caches:u}).get(m,g,w))},set(m,g){return d.set(m,g).catch(()=>R({caches:u}).set(m,g))},delete(m){return d.delete(m).catch(()=>R({caches:u}).delete(m))},clear(){return d.clear().catch(()=>R({caches:u}).clear())}}}function E(i={serializable:!0}){let u={};return {get(d,m,g={miss:()=>Promise.resolve()}){let w=JSON.stringify(d);if(w in u)return Promise.resolve(i.serializable?JSON.parse(u[w]):u[w]);let l=m();return l.then(r=>g.miss(r)).then(()=>l)},set(d,m){return u[JSON.stringify(d)]=i.serializable?JSON.stringify(m):m,Promise.resolve(m)},delete(d){return delete u[JSON.stringify(d)],Promise.resolve()},clear(){return u={},Promise.resolve()}}}var A=1e3,b=2e3,I=3e4;function me(i){let u={value:`Algolia for JavaScript (${i})`,add(d){let m=`; ${d.segment}${d.version!==void 0?` (${d.version})`:""}`;return u.value.indexOf(m)===-1&&(u.value=`${u.value}${m}`),u}};return u}function x(i,u,d="WithinHeaders"){let m={"x-algolia-api-key":u,"x-algolia-application-id":i};return {headers(){return d==="WithinHeaders"?m:{}},queryParameters(){return d==="WithinQueryParameters"?m:{}}}}function k({func:i,validate:u,aggregator:d,error:m,timeout:g=()=>0}){let w=l=>new Promise((r,e)=>{i(l).then(t=>(d&&d(t),u(t)?r(t):m&&m.validate(t)?e(new Error(m.message(t))):setTimeout(()=>{w(t).then(r).catch(e);},g()))).catch(t=>{e(t);});});return w()}function O({algoliaAgents:i,client:u,version:d}){let m=me(d).add({segment:u,version:d});return i.forEach(g=>m.add(g)),m}function U(){return {debug(i,u){return Promise.resolve()},info(i,u){return Promise.resolve()},error(i,u){return Promise.resolve()}}}var K=2*60*1e3;function J(i,u="up"){let d=Date.now();function m(){return u==="up"||Date.now()-d>K}function g(){return u==="timed out"&&Date.now()-d<=K}return {...i,status:u,lastUpdate:d,isUp:m,isTimedOut:g}}var V=class extends Error{name="AlgoliaError";constructor(i,u){super(i),u&&(this.name=u);}},X=class extends V{stackTrace;constructor(i,u,d){super(i,d),this.stackTrace=u;}},ge=class extends X{constructor(i){super("Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support.",i,"RetryError");}},B=class extends X{status;constructor(i,u,d,m="ApiError"){super(i,d,m),this.status=u;}},qe=class extends V{response;constructor(i,u){super(i,"DeserializationError"),this.response=u;}},Pe=class extends B{error;constructor(i,u,d,m){super(i,u,m,"DetailedApiError"),this.error=d;}};function F(i){let u=i;for(let d=i.length-1;d>0;d--){let m=Math.floor(Math.random()*(d+1)),g=i[d];u[d]=i[m],u[m]=g;}return u}function pe(i,u,d){let m=we(d),g=`${i.protocol}://${i.url}${i.port?`:${i.port}`:""}/${u.charAt(0)==="/"?u.substring(1):u}`;return m.length&&(g+=`?${m}`),g}function we(i){return Object.keys(i).filter(u=>i[u]!==void 0).sort().map(u=>`${u}=${encodeURIComponent(Object.prototype.toString.call(i[u])==="[object Array]"?i[u].join(","):i[u]).replace(/\+/g,"%20")}`).join("&")}function fe(i,u){if(i.method==="GET"||i.data===void 0&&u.data===void 0)return;let d=Array.isArray(i.data)?i.data:{...i.data,...u.data};return JSON.stringify(d)}function ye(i,u,d){let m={Accept:"application/json",...i,...u,...d},g={};return Object.keys(m).forEach(w=>{let l=m[w];g[w.toLowerCase()]=l;}),g}function Ee(i){try{return JSON.parse(i.content)}catch(u){throw new qe(u.message,i)}}function Se({content:i,status:u},d){try{let m=JSON.parse(i);return "error"in m?new Pe(m.message,u,m.error,d):new B(m.message,u,d)}catch{}return new B(i,u,d)}function Te({isTimedOut:i,status:u}){return !i&&~~u===0}function Re({isTimedOut:i,status:u}){return i||Te({isTimedOut:i,status:u})||~~(u/100)!==2&&~~(u/100)!==4}function ve({status:i}){return ~~(i/100)===2}function Ce(i){return i.map(u=>Y(u))}function Y(i){let u=i.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return {...i,request:{...i.request,headers:{...i.request.headers,...u}}}}function D({hosts:i,hostsCache:u,baseHeaders:d,logger:m,baseQueryParameters:g,algoliaAgent:w,timeouts:l,requester:r,requestsCache:e,responsesCache:t}){async function a(o){let c=await Promise.all(o.map(f=>u.get(f,()=>Promise.resolve(J(f))))),h=c.filter(f=>f.isUp()),q=c.filter(f=>f.isTimedOut()),P=[...h,...q];return {hosts:P.length>0?P:o,getTimeout(f,y){return (q.length===0&&f===0?1:q.length+3+f)*y}}}async function s(o,c,h=!0){let q=[],P=fe(o,c),p=ye(d,o.headers,c.headers),f=o.method==="GET"?{...o.data,...c.data}:{},y={...g,...o.queryParameters,...f};if(w.value&&(y["x-algolia-agent"]=w.value),c&&c.queryParameters)for(let T of Object.keys(c.queryParameters))!c.queryParameters[T]||Object.prototype.toString.call(c.queryParameters[T])==="[object Object]"?y[T]=c.queryParameters[T]:y[T]=c.queryParameters[T].toString();let S=0,_=async(T,G)=>{let j=T.pop();if(j===void 0)throw new ge(Ce(q));let L={...l,...c.timeouts},H={data:P,headers:p,method:o.method,url:pe(j,o.path,y),connectTimeout:G(S,L.connect),responseTimeout:G(S,h?L.read:L.write)},M=W=>{let Q={request:H,response:W,host:j,triesLeft:T.length};return q.push(Q),Q},N=await r.send(H);if(Re(N)){let W=M(N);return N.isTimedOut&&S++,m.info("Retryable failure",Y(W)),await u.set(j,J(j,N.isTimedOut?"timed out":"down")),_(T,G)}if(ve(N))return Ee(N);throw M(N),Se(N,q)},le=i.filter(T=>T.accept==="readWrite"||(h?T.accept==="read":T.accept==="write")),z=await a(le);return _([...z.hosts].reverse(),z.getTimeout)}function n(o,c={}){let h=o.useReadTransporter||o.method==="GET";if(!h)return s(o,c,h);let q=()=>s(o,c);if((c.cacheable||o.cacheable)!==!0)return q();let p={request:o,requestOptions:c,transporter:{queryParameters:g,headers:d}};return t.get(p,()=>e.get(p,()=>e.set(p,q()).then(f=>Promise.all([e.delete(p),f]),f=>Promise.all([e.delete(p),Promise.reject(f)])).then(([f,y])=>y)),{miss:f=>t.set(p,f)})}return {hostsCache:u,requester:r,timeouts:l,logger:m,algoliaAgent:w,baseHeaders:d,baseQueryParameters:g,hosts:i,request:n,requestsCache:e,responsesCache:t}}var ee="5.8.0",Z=["de","us"];function Ae(i){return [{url:i?"analytics.{region}.algolia.com".replace("{region}",i):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function be({appId:i,apiKey:u,authMode:d,algoliaAgents:m,region:g,...w}){let l=x(i,u,d),r=D({hosts:Ae(g),...w,algoliaAgent:O({algoliaAgents:m,client:"Abtesting",version:ee}),baseHeaders:{"content-type":"text/plain",...l.headers(),...w.baseHeaders},baseQueryParameters:{...l.queryParameters(),...w.baseQueryParameters}});return {transporter:r,appId:i,clearCache(){return Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then(()=>{})},get _ua(){return r.algoliaAgent.value},addAlgoliaAgent(e,t){r.algoliaAgent.add({segment:e,version:t});},setClientApiKey({apiKey:e}){!d||d==="WithinHeaders"?r.baseHeaders["x-algolia-api-key"]=e:r.baseQueryParameters["x-algolia-api-key"]=e;},addABTests(e,t){if(!e)throw new Error("Parameter `addABTestsRequest` is required when calling `addABTests`.");if(!e.name)throw new Error("Parameter `addABTestsRequest.name` is required when calling `addABTests`.");if(!e.variants)throw new Error("Parameter `addABTestsRequest.variants` is required when calling `addABTests`.");if(!e.endAt)throw new Error("Parameter `addABTestsRequest.endAt` is required when calling `addABTests`.");let o={method:"POST",path:"/2/abtests",queryParameters:{},headers:{},data:e};return r.request(o,t)},customDelete({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let c={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customGet({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let c={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customPost({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},customPut({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let h={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},deleteABTest({id:e},t){if(!e)throw new Error("Parameter `id` is required when calling `deleteABTest`.");let o={method:"DELETE",path:"/2/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)},getABTest({id:e},t){if(!e)throw new Error("Parameter `id` is required when calling `getABTest`.");let o={method:"GET",path:"/2/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)},listABTests({offset:e,limit:t,indexPrefix:a,indexSuffix:s}={},n=void 0){let o="/2/abtests",c={},h={};e!==void 0&&(h.offset=e.toString()),t!==void 0&&(h.limit=t.toString()),a!==void 0&&(h.indexPrefix=a.toString()),s!==void 0&&(h.indexSuffix=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},scheduleABTest(e,t){if(!e)throw new Error("Parameter `scheduleABTestsRequest` is required when calling `scheduleABTest`.");if(!e.name)throw new Error("Parameter `scheduleABTestsRequest.name` is required when calling `scheduleABTest`.");if(!e.variants)throw new Error("Parameter `scheduleABTestsRequest.variants` is required when calling `scheduleABTest`.");if(!e.scheduledAt)throw new Error("Parameter `scheduleABTestsRequest.scheduledAt` is required when calling `scheduleABTest`.");if(!e.endAt)throw new Error("Parameter `scheduleABTestsRequest.endAt` is required when calling `scheduleABTest`.");let o={method:"POST",path:"/2/abtests/schedule",queryParameters:{},headers:{},data:e};return r.request(o,t)},stopABTest({id:e},t){if(!e)throw new Error("Parameter `id` is required when calling `stopABTest`.");let o={method:"POST",path:"/2/abtests/{id}/stop".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)}}}function re(i,u,d,m){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!Z.includes(d)))throw new Error(`\`region\` must be one of the following: ${Z.join(", ")}`);return be({appId:i,apiKey:u,region:d,timeouts:{connect:A,read:b,write:I},logger:U(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[C({key:`${ee}-${i}`}),E()]}),...m})}var ae="5.8.0",te=["de","us"];function Ie(i){return [{url:i?"analytics.{region}.algolia.com".replace("{region}",i):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function xe({appId:i,apiKey:u,authMode:d,algoliaAgents:m,region:g,...w}){let l=x(i,u,d),r=D({hosts:Ie(g),...w,algoliaAgent:O({algoliaAgents:m,client:"Analytics",version:ae}),baseHeaders:{"content-type":"text/plain",...l.headers(),...w.baseHeaders},baseQueryParameters:{...l.queryParameters(),...w.baseQueryParameters}});return {transporter:r,appId:i,clearCache(){return Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then(()=>{})},get _ua(){return r.algoliaAgent.value},addAlgoliaAgent(e,t){r.algoliaAgent.add({segment:e,version:t});},setClientApiKey({apiKey:e}){!d||d==="WithinHeaders"?r.baseHeaders["x-algolia-api-key"]=e:r.baseQueryParameters["x-algolia-api-key"]=e;},customDelete({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let c={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customGet({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let c={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customPost({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},customPut({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let h={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},getAddToCartRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getAddToCartRate`.");let o="/2/conversions/addToCartRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getAverageClickPosition({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getAverageClickPosition`.");let o="/2/clicks/averageClickPosition",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getClickPositions({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getClickPositions`.");let o="/2/clicks/positions",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getClickThroughRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getClickThroughRate`.");let o="/2/clicks/clickThroughRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getConversionRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getConversionRate`.");let o="/2/conversions/conversionRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getNoClickRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getNoClickRate`.");let o="/2/searches/noClickRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getNoResultsRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getNoResultsRate`.");let o="/2/searches/noResultRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getPurchaseRate({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getPurchaseRate`.");let o="/2/conversions/purchaseRate",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getRevenue({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getRevenue`.");let o="/2/conversions/revenue",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getSearchesCount({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getSearchesCount`.");let o="/2/searches/count",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)},getSearchesNoClicks({index:e,startDate:t,endDate:a,limit:s,offset:n,tags:o},c){if(!e)throw new Error("Parameter `index` is required when calling `getSearchesNoClicks`.");let h="/2/searches/noClicks",q={},P={};e!==void 0&&(P.index=e.toString()),t!==void 0&&(P.startDate=t.toString()),a!==void 0&&(P.endDate=a.toString()),s!==void 0&&(P.limit=s.toString()),n!==void 0&&(P.offset=n.toString()),o!==void 0&&(P.tags=o.toString());let p={method:"GET",path:h,queryParameters:P,headers:q};return r.request(p,c)},getSearchesNoResults({index:e,startDate:t,endDate:a,limit:s,offset:n,tags:o},c){if(!e)throw new Error("Parameter `index` is required when calling `getSearchesNoResults`.");let h="/2/searches/noResults",q={},P={};e!==void 0&&(P.index=e.toString()),t!==void 0&&(P.startDate=t.toString()),a!==void 0&&(P.endDate=a.toString()),s!==void 0&&(P.limit=s.toString()),n!==void 0&&(P.offset=n.toString()),o!==void 0&&(P.tags=o.toString());let p={method:"GET",path:h,queryParameters:P,headers:q};return r.request(p,c)},getStatus({index:e},t){if(!e)throw new Error("Parameter `index` is required when calling `getStatus`.");let a="/2/status",s={},n={};e!==void 0&&(n.index=e.toString());let o={method:"GET",path:a,queryParameters:n,headers:s};return r.request(o,t)},getTopCountries({index:e,startDate:t,endDate:a,limit:s,offset:n,tags:o},c){if(!e)throw new Error("Parameter `index` is required when calling `getTopCountries`.");let h="/2/countries",q={},P={};e!==void 0&&(P.index=e.toString()),t!==void 0&&(P.startDate=t.toString()),a!==void 0&&(P.endDate=a.toString()),s!==void 0&&(P.limit=s.toString()),n!==void 0&&(P.offset=n.toString()),o!==void 0&&(P.tags=o.toString());let p={method:"GET",path:h,queryParameters:P,headers:q};return r.request(p,c)},getTopFilterAttributes({index:e,search:t,startDate:a,endDate:s,limit:n,offset:o,tags:c},h){if(!e)throw new Error("Parameter `index` is required when calling `getTopFilterAttributes`.");let q="/2/filters",P={},p={};e!==void 0&&(p.index=e.toString()),t!==void 0&&(p.search=t.toString()),a!==void 0&&(p.startDate=a.toString()),s!==void 0&&(p.endDate=s.toString()),n!==void 0&&(p.limit=n.toString()),o!==void 0&&(p.offset=o.toString()),c!==void 0&&(p.tags=c.toString());let f={method:"GET",path:q,queryParameters:p,headers:P};return r.request(f,h)},getTopFilterForAttribute({attribute:e,index:t,search:a,startDate:s,endDate:n,limit:o,offset:c,tags:h},q){if(!e)throw new Error("Parameter `attribute` is required when calling `getTopFilterForAttribute`.");if(!t)throw new Error("Parameter `index` is required when calling `getTopFilterForAttribute`.");let P="/2/filters/{attribute}".replace("{attribute}",encodeURIComponent(e)),p={},f={};t!==void 0&&(f.index=t.toString()),a!==void 0&&(f.search=a.toString()),s!==void 0&&(f.startDate=s.toString()),n!==void 0&&(f.endDate=n.toString()),o!==void 0&&(f.limit=o.toString()),c!==void 0&&(f.offset=c.toString()),h!==void 0&&(f.tags=h.toString());let y={method:"GET",path:P,queryParameters:f,headers:p};return r.request(y,q)},getTopFiltersNoResults({index:e,search:t,startDate:a,endDate:s,limit:n,offset:o,tags:c},h){if(!e)throw new Error("Parameter `index` is required when calling `getTopFiltersNoResults`.");let q="/2/filters/noResults",P={},p={};e!==void 0&&(p.index=e.toString()),t!==void 0&&(p.search=t.toString()),a!==void 0&&(p.startDate=a.toString()),s!==void 0&&(p.endDate=s.toString()),n!==void 0&&(p.limit=n.toString()),o!==void 0&&(p.offset=o.toString()),c!==void 0&&(p.tags=c.toString());let f={method:"GET",path:q,queryParameters:p,headers:P};return r.request(f,h)},getTopHits({index:e,search:t,clickAnalytics:a,revenueAnalytics:s,startDate:n,endDate:o,limit:c,offset:h,tags:q},P){if(!e)throw new Error("Parameter `index` is required when calling `getTopHits`.");let p="/2/hits",f={},y={};e!==void 0&&(y.index=e.toString()),t!==void 0&&(y.search=t.toString()),a!==void 0&&(y.clickAnalytics=a.toString()),s!==void 0&&(y.revenueAnalytics=s.toString()),n!==void 0&&(y.startDate=n.toString()),o!==void 0&&(y.endDate=o.toString()),c!==void 0&&(y.limit=c.toString()),h!==void 0&&(y.offset=h.toString()),q!==void 0&&(y.tags=q.toString());let S={method:"GET",path:p,queryParameters:y,headers:f};return r.request(S,P)},getTopSearches({index:e,clickAnalytics:t,revenueAnalytics:a,startDate:s,endDate:n,orderBy:o,direction:c,limit:h,offset:q,tags:P},p){if(!e)throw new Error("Parameter `index` is required when calling `getTopSearches`.");let f="/2/searches",y={},S={};e!==void 0&&(S.index=e.toString()),t!==void 0&&(S.clickAnalytics=t.toString()),a!==void 0&&(S.revenueAnalytics=a.toString()),s!==void 0&&(S.startDate=s.toString()),n!==void 0&&(S.endDate=n.toString()),o!==void 0&&(S.orderBy=o.toString()),c!==void 0&&(S.direction=c.toString()),h!==void 0&&(S.limit=h.toString()),q!==void 0&&(S.offset=q.toString()),P!==void 0&&(S.tags=P.toString());let _={method:"GET",path:f,queryParameters:S,headers:y};return r.request(_,p)},getUsersCount({index:e,startDate:t,endDate:a,tags:s},n){if(!e)throw new Error("Parameter `index` is required when calling `getUsersCount`.");let o="/2/users/count",c={},h={};e!==void 0&&(h.index=e.toString()),t!==void 0&&(h.startDate=t.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let q={method:"GET",path:o,queryParameters:h,headers:c};return r.request(q,n)}}}function se(i,u,d,m){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!te.includes(d)))throw new Error(`\`region\` must be one of the following: ${te.join(", ")}`);return xe({appId:i,apiKey:u,region:d,timeouts:{connect:A,read:b,write:I},logger:U(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[C({key:`${ae}-${i}`}),E()]}),...m})}var oe="5.8.0",ne=["eu","us"];function Oe(i){return [{url:"personalization.{region}.algolia.com".replace("{region}",i),accept:"readWrite",protocol:"https"}]}function Ue({appId:i,apiKey:u,authMode:d,algoliaAgents:m,region:g,...w}){let l=x(i,u,d),r=D({hosts:Oe(g),...w,algoliaAgent:O({algoliaAgents:m,client:"Personalization",version:oe}),baseHeaders:{"content-type":"text/plain",...l.headers(),...w.baseHeaders},baseQueryParameters:{...l.queryParameters(),...w.baseQueryParameters}});return {transporter:r,appId:i,clearCache(){return Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then(()=>{})},get _ua(){return r.algoliaAgent.value},addAlgoliaAgent(e,t){r.algoliaAgent.add({segment:e,version:t});},setClientApiKey({apiKey:e}){!d||d==="WithinHeaders"?r.baseHeaders["x-algolia-api-key"]=e:r.baseQueryParameters["x-algolia-api-key"]=e;},customDelete({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let c={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customGet({path:e,parameters:t},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let c={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return r.request(c,a)},customPost({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},customPut({path:e,parameters:t,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let h={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:a||{}};return r.request(h,s)},deleteUserProfile({userToken:e},t){if(!e)throw new Error("Parameter `userToken` is required when calling `deleteUserProfile`.");let o={method:"DELETE",path:"/1/profiles/{userToken}".replace("{userToken}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)},getPersonalizationStrategy(e){let n={method:"GET",path:"/1/strategies/personalization",queryParameters:{},headers:{}};return r.request(n,e)},getUserTokenProfile({userToken:e},t){if(!e)throw new Error("Parameter `userToken` is required when calling `getUserTokenProfile`.");let o={method:"GET",path:"/1/profiles/personalization/{userToken}".replace("{userToken}",encodeURIComponent(e)),queryParameters:{},headers:{}};return r.request(o,t)},setPersonalizationStrategy(e,t){if(!e)throw new Error("Parameter `personalizationStrategyParams` is required when calling `setPersonalizationStrategy`.");if(!e.eventScoring)throw new Error("Parameter `personalizationStrategyParams.eventScoring` is required when calling `setPersonalizationStrategy`.");if(!e.facetScoring)throw new Error("Parameter `personalizationStrategyParams.facetScoring` is required when calling `setPersonalizationStrategy`.");if(!e.personalizationImpact)throw new Error("Parameter `personalizationStrategyParams.personalizationImpact` is required when calling `setPersonalizationStrategy`.");let o={method:"POST",path:"/1/strategies/personalization",queryParameters:{},headers:{},data:e};return r.request(o,t)}}}function ie(i,u,d,m){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(!d||d&&(typeof d!="string"||!ne.includes(d)))throw new Error(`\`region\` is required and must be one of the following: ${ne.join(", ")}`);return Ue({appId:i,apiKey:u,region:d,timeouts:{connect:A,read:b,write:I},logger:U(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[C({key:`${oe}-${i}`}),E()]}),...m})}var $="5.8.0";function De(i){return [{url:`${i}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${i}.algolia.net`,accept:"write",protocol:"https"}].concat(F([{url:`${i}-1.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${i}-2.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${i}-3.algolianet.com`,accept:"readWrite",protocol:"https"}]))}function Ne({appId:i,apiKey:u,authMode:d,algoliaAgents:m,...g}){let w=x(i,u,d),l=D({hosts:De(i),...g,algoliaAgent:O({algoliaAgents:m,client:"Search",version:$}),baseHeaders:{"content-type":"text/plain",...w.headers(),...g.baseHeaders},baseQueryParameters:{...w.queryParameters(),...g.baseQueryParameters}});return {transporter:l,appId:i,clearCache(){return Promise.all([l.requestsCache.clear(),l.responsesCache.clear()]).then(()=>{})},get _ua(){return l.algoliaAgent.value},addAlgoliaAgent(r,e){l.algoliaAgent.add({segment:r,version:e});},setClientApiKey({apiKey:r}){!d||d==="WithinHeaders"?l.baseHeaders["x-algolia-api-key"]=r:l.baseQueryParameters["x-algolia-api-key"]=r;},waitForTask({indexName:r,taskID:e,maxRetries:t=50,timeout:a=n=>Math.min(n*200,5e3)},s){let n=0;return k({func:()=>this.getTask({indexName:r,taskID:e},s),validate:o=>o.status==="published",aggregator:()=>n+=1,error:{validate:()=>n>=t,message:()=>`The maximum number of retries exceeded. (${n}/${t})`},timeout:()=>a(n)})},waitForAppTask({taskID:r,maxRetries:e=50,timeout:t=s=>Math.min(s*200,5e3)},a){let s=0;return k({func:()=>this.getAppTask({taskID:r},a),validate:n=>n.status==="published",aggregator:()=>s+=1,error:{validate:()=>s>=e,message:()=>`The maximum number of retries exceeded. (${s}/${e})`},timeout:()=>t(s)})},waitForApiKey({operation:r,key:e,apiKey:t,maxRetries:a=50,timeout:s=o=>Math.min(o*200,5e3)},n){let o=0,c={aggregator:()=>o+=1,error:{validate:()=>o>=a,message:()=>`The maximum number of retries exceeded. (${o}/${a})`},timeout:()=>s(o)};if(r==="update"){if(!t)throw new Error("`apiKey` is required when waiting for an `update` operation.");return k({...c,func:()=>this.getApiKey({key:e},n),validate:h=>{for(let q of Object.keys(t)){let P=t[q],p=h[q];if(Array.isArray(P)&&Array.isArray(p)){if(P.length!==p.length||P.some((f,y)=>f!==p[y]))return !1}else if(P!==p)return !1}return !0}})}return k({...c,func:()=>this.getApiKey({key:e},n).catch(h=>{if(h.status!==404)throw h}),validate:h=>r==="add"?h!==void 0:h===void 0})},browseObjects({indexName:r,browseParams:e,...t},a){return k({func:s=>this.browse({indexName:r,browseParams:{cursor:s?s.cursor:void 0,...e}},a),validate:s=>s.cursor===void 0,...t})},browseRules({indexName:r,searchRulesParams:e,...t},a){let s={hitsPerPage:1e3,...e};return k({func:n=>this.searchRules({indexName:r,searchRulesParams:{...s,page:n?n.page+1:s.page||0}},a),validate:n=>n.nbHits<s.hitsPerPage,...t})},browseSynonyms({indexName:r,searchSynonymsParams:e,...t},a){let s={page:0,...e,hitsPerPage:1e3};return k({func:n=>{let o=this.searchSynonyms({indexName:r,searchSynonymsParams:{...s,page:s.page}},a);return s.page+=1,o},validate:n=>n.nbHits<s.hitsPerPage,...t})},async chunkedBatch({indexName:r,objects:e,action:t="addObject",waitForTasks:a,batchSize:s=1e3},n){let o=[],c=[],h=e.entries();for(let[q,P]of h)o.push({action:t,body:P}),(o.length===s||q===e.length-1)&&(c.push(await this.batch({indexName:r,batchWriteParams:{requests:o}},n)),o=[]);if(a)for(let q of c)await this.waitForTask({indexName:r,taskID:q.taskID});return c},async saveObjects({indexName:r,objects:e},t){return await this.chunkedBatch({indexName:r,objects:e,action:"addObject"},t)},async deleteObjects({indexName:r,objectIDs:e},t){return await this.chunkedBatch({indexName:r,objects:e.map(a=>({objectID:a})),action:"deleteObject"},t)},async partialUpdateObjects({indexName:r,objects:e,createIfNotExists:t},a){return await this.chunkedBatch({indexName:r,objects:e,action:t?"partialUpdateObject":"partialUpdateObjectNoCreate"},a)},async replaceAllObjects({indexName:r,objects:e,batchSize:t},a){let s=Math.floor(Math.random()*1e6)+1e5,n=`${r}_tmp_${s}`,o=await this.operationIndex({indexName:r,operationIndexParams:{operation:"copy",destination:n,scope:["settings","rules","synonyms"]}},a),c=await this.chunkedBatch({indexName:n,objects:e,waitForTasks:!0,batchSize:t},a);await this.waitForTask({indexName:n,taskID:o.taskID}),o=await this.operationIndex({indexName:r,operationIndexParams:{operation:"copy",destination:n,scope:["settings","rules","synonyms"]}},a),await this.waitForTask({indexName:n,taskID:o.taskID});let h=await this.operationIndex({indexName:n,operationIndexParams:{operation:"move",destination:r}},a);return await this.waitForTask({indexName:n,taskID:h.taskID}),{copyOperationResponse:o,batchResponses:c,moveOperationResponse:h}},async indexExists({indexName:r}){try{await this.getSettings({indexName:r});}catch(e){if(e instanceof B&&e.status===404)return !1;throw e}return !0},searchForHits(r,e){return this.search(r,e)},searchForFacets(r,e){return this.search(r,e)},addApiKey(r,e){if(!r)throw new Error("Parameter `apiKey` is required when calling `addApiKey`.");if(!r.acl)throw new Error("Parameter `apiKey.acl` is required when calling `addApiKey`.");let n={method:"POST",path:"/1/keys",queryParameters:{},headers:{},data:r};return l.request(n,e)},addOrUpdateObject({indexName:r,objectID:e,body:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `addOrUpdateObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `addOrUpdateObject`.");if(!t)throw new Error("Parameter `body` is required when calling `addOrUpdateObject`.");let c={method:"PUT",path:"/1/indexes/{indexName}/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{},data:t};return l.request(c,a)},appendSource(r,e){if(!r)throw new Error("Parameter `source` is required when calling `appendSource`.");if(!r.source)throw new Error("Parameter `source.source` is required when calling `appendSource`.");let n={method:"POST",path:"/1/security/sources/append",queryParameters:{},headers:{},data:r};return l.request(n,e)},assignUserId({xAlgoliaUserID:r,assignUserIdParams:e},t){if(!r)throw new Error("Parameter `xAlgoliaUserID` is required when calling `assignUserId`.");if(!e)throw new Error("Parameter `assignUserIdParams` is required when calling `assignUserId`.");if(!e.cluster)throw new Error("Parameter `assignUserIdParams.cluster` is required when calling `assignUserId`.");let a="/1/clusters/mapping",s={},n={};r!==void 0&&(s["X-Algolia-User-ID"]=r.toString());let o={method:"POST",path:a,queryParameters:n,headers:s,data:e};return l.request(o,t)},batch({indexName:r,batchWriteParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `batch`.");if(!e)throw new Error("Parameter `batchWriteParams` is required when calling `batch`.");if(!e.requests)throw new Error("Parameter `batchWriteParams.requests` is required when calling `batch`.");let o={method:"POST",path:"/1/indexes/{indexName}/batch".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},batchAssignUserIds({xAlgoliaUserID:r,batchAssignUserIdsParams:e},t){if(!r)throw new Error("Parameter `xAlgoliaUserID` is required when calling `batchAssignUserIds`.");if(!e)throw new Error("Parameter `batchAssignUserIdsParams` is required when calling `batchAssignUserIds`.");if(!e.cluster)throw new Error("Parameter `batchAssignUserIdsParams.cluster` is required when calling `batchAssignUserIds`.");if(!e.users)throw new Error("Parameter `batchAssignUserIdsParams.users` is required when calling `batchAssignUserIds`.");let a="/1/clusters/mapping/batch",s={},n={};r!==void 0&&(s["X-Algolia-User-ID"]=r.toString());let o={method:"POST",path:a,queryParameters:n,headers:s,data:e};return l.request(o,t)},batchDictionaryEntries({dictionaryName:r,batchDictionaryEntriesParams:e},t){if(!r)throw new Error("Parameter `dictionaryName` is required when calling `batchDictionaryEntries`.");if(!e)throw new Error("Parameter `batchDictionaryEntriesParams` is required when calling `batchDictionaryEntries`.");if(!e.requests)throw new Error("Parameter `batchDictionaryEntriesParams.requests` is required when calling `batchDictionaryEntries`.");let o={method:"POST",path:"/1/dictionaries/{dictionaryName}/batch".replace("{dictionaryName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},browse({indexName:r,browseParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `browse`.");let o={method:"POST",path:"/1/indexes/{indexName}/browse".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e||{}};return l.request(o,t)},clearObjects({indexName:r},e){if(!r)throw new Error("Parameter `indexName` is required when calling `clearObjects`.");let n={method:"POST",path:"/1/indexes/{indexName}/clear".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},clearRules({indexName:r,forwardToReplicas:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `clearRules`.");let a="/1/indexes/{indexName}/rules/clear".replace("{indexName}",encodeURIComponent(r)),s={},n={};e!==void 0&&(n.forwardToReplicas=e.toString());let o={method:"POST",path:a,queryParameters:n,headers:s};return l.request(o,t)},clearSynonyms({indexName:r,forwardToReplicas:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `clearSynonyms`.");let a="/1/indexes/{indexName}/synonyms/clear".replace("{indexName}",encodeURIComponent(r)),s={},n={};e!==void 0&&(n.forwardToReplicas=e.toString());let o={method:"POST",path:a,queryParameters:n,headers:s};return l.request(o,t)},customDelete({path:r,parameters:e},t){if(!r)throw new Error("Parameter `path` is required when calling `customDelete`.");let o={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{}};return l.request(o,t)},customGet({path:r,parameters:e},t){if(!r)throw new Error("Parameter `path` is required when calling `customGet`.");let o={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{}};return l.request(o,t)},customPost({path:r,parameters:e,body:t},a){if(!r)throw new Error("Parameter `path` is required when calling `customPost`.");let c={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{},data:t||{}};return l.request(c,a)},customPut({path:r,parameters:e,body:t},a){if(!r)throw new Error("Parameter `path` is required when calling `customPut`.");let c={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{},data:t||{}};return l.request(c,a)},deleteApiKey({key:r},e){if(!r)throw new Error("Parameter `key` is required when calling `deleteApiKey`.");let n={method:"DELETE",path:"/1/keys/{key}".replace("{key}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},deleteBy({indexName:r,deleteByParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteBy`.");if(!e)throw new Error("Parameter `deleteByParams` is required when calling `deleteBy`.");let o={method:"POST",path:"/1/indexes/{indexName}/deleteByQuery".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},deleteIndex({indexName:r},e){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteIndex`.");let n={method:"DELETE",path:"/1/indexes/{indexName}".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},deleteObject({indexName:r,objectID:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `deleteObject`.");let o={method:"DELETE",path:"/1/indexes/{indexName}/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(o,t)},deleteRule({indexName:r,objectID:e,forwardToReplicas:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteRule`.");if(!e)throw new Error("Parameter `objectID` is required when calling `deleteRule`.");let s="/1/indexes/{indexName}/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),n={},o={};t!==void 0&&(o.forwardToReplicas=t.toString());let c={method:"DELETE",path:s,queryParameters:o,headers:n};return l.request(c,a)},deleteSource({source:r},e){if(!r)throw new Error("Parameter `source` is required when calling `deleteSource`.");let n={method:"DELETE",path:"/1/security/sources/{source}".replace("{source}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},deleteSynonym({indexName:r,objectID:e,forwardToReplicas:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteSynonym`.");if(!e)throw new Error("Parameter `objectID` is required when calling `deleteSynonym`.");let s="/1/indexes/{indexName}/synonyms/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),n={},o={};t!==void 0&&(o.forwardToReplicas=t.toString());let c={method:"DELETE",path:s,queryParameters:o,headers:n};return l.request(c,a)},getApiKey({key:r},e){if(!r)throw new Error("Parameter `key` is required when calling `getApiKey`.");let n={method:"GET",path:"/1/keys/{key}".replace("{key}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},getAppTask({taskID:r},e){if(!r)throw new Error("Parameter `taskID` is required when calling `getAppTask`.");let n={method:"GET",path:"/1/task/{taskID}".replace("{taskID}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},getDictionaryLanguages(r){let s={method:"GET",path:"/1/dictionaries/*/languages",queryParameters:{},headers:{}};return l.request(s,r)},getDictionarySettings(r){let s={method:"GET",path:"/1/dictionaries/*/settings",queryParameters:{},headers:{}};return l.request(s,r)},getLogs({offset:r,length:e,indexName:t,type:a}={},s=void 0){let n="/1/logs",o={},c={};r!==void 0&&(c.offset=r.toString()),e!==void 0&&(c.length=e.toString()),t!==void 0&&(c.indexName=t.toString()),a!==void 0&&(c.type=a.toString());let h={method:"GET",path:n,queryParameters:c,headers:o};return l.request(h,s)},getObject({indexName:r,objectID:e,attributesToRetrieve:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `getObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `getObject`.");let s="/1/indexes/{indexName}/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),n={},o={};t!==void 0&&(o.attributesToRetrieve=t.toString());let c={method:"GET",path:s,queryParameters:o,headers:n};return l.request(c,a)},getObjects(r,e){if(!r)throw new Error("Parameter `getObjectsParams` is required when calling `getObjects`.");if(!r.requests)throw new Error("Parameter `getObjectsParams.requests` is required when calling `getObjects`.");let n={method:"POST",path:"/1/indexes/*/objects",queryParameters:{},headers:{},data:r,useReadTransporter:!0,cacheable:!0};return l.request(n,e)},getRule({indexName:r,objectID:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `getRule`.");if(!e)throw new Error("Parameter `objectID` is required when calling `getRule`.");let o={method:"GET",path:"/1/indexes/{indexName}/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(o,t)},getSettings({indexName:r},e){if(!r)throw new Error("Parameter `indexName` is required when calling `getSettings`.");let n={method:"GET",path:"/1/indexes/{indexName}/settings".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},getSources(r){let s={method:"GET",path:"/1/security/sources",queryParameters:{},headers:{}};return l.request(s,r)},getSynonym({indexName:r,objectID:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `getSynonym`.");if(!e)throw new Error("Parameter `objectID` is required when calling `getSynonym`.");let o={method:"GET",path:"/1/indexes/{indexName}/synonyms/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(o,t)},getTask({indexName:r,taskID:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `getTask`.");if(!e)throw new Error("Parameter `taskID` is required when calling `getTask`.");let o={method:"GET",path:"/1/indexes/{indexName}/task/{taskID}".replace("{indexName}",encodeURIComponent(r)).replace("{taskID}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(o,t)},getTopUserIds(r){let s={method:"GET",path:"/1/clusters/mapping/top",queryParameters:{},headers:{}};return l.request(s,r)},getUserId({userID:r},e){if(!r)throw new Error("Parameter `userID` is required when calling `getUserId`.");let n={method:"GET",path:"/1/clusters/mapping/{userID}".replace("{userID}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},hasPendingMappings({getClusters:r}={},e=void 0){let t="/1/clusters/mapping/pending",a={},s={};r!==void 0&&(s.getClusters=r.toString());let n={method:"GET",path:t,queryParameters:s,headers:a};return l.request(n,e)},listApiKeys(r){let s={method:"GET",path:"/1/keys",queryParameters:{},headers:{}};return l.request(s,r)},listClusters(r){let s={method:"GET",path:"/1/clusters",queryParameters:{},headers:{}};return l.request(s,r)},listIndices({page:r,hitsPerPage:e}={},t=void 0){let a="/1/indexes",s={},n={};r!==void 0&&(n.page=r.toString()),e!==void 0&&(n.hitsPerPage=e.toString());let o={method:"GET",path:a,queryParameters:n,headers:s};return l.request(o,t)},listUserIds({page:r,hitsPerPage:e}={},t=void 0){let a="/1/clusters/mapping",s={},n={};r!==void 0&&(n.page=r.toString()),e!==void 0&&(n.hitsPerPage=e.toString());let o={method:"GET",path:a,queryParameters:n,headers:s};return l.request(o,t)},multipleBatch(r,e){if(!r)throw new Error("Parameter `batchParams` is required when calling `multipleBatch`.");if(!r.requests)throw new Error("Parameter `batchParams.requests` is required when calling `multipleBatch`.");let n={method:"POST",path:"/1/indexes/*/batch",queryParameters:{},headers:{},data:r};return l.request(n,e)},operationIndex({indexName:r,operationIndexParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `operationIndex`.");if(!e)throw new Error("Parameter `operationIndexParams` is required when calling `operationIndex`.");if(!e.operation)throw new Error("Parameter `operationIndexParams.operation` is required when calling `operationIndex`.");if(!e.destination)throw new Error("Parameter `operationIndexParams.destination` is required when calling `operationIndex`.");let o={method:"POST",path:"/1/indexes/{indexName}/operation".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},partialUpdateObject({indexName:r,objectID:e,attributesToUpdate:t,createIfNotExists:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `partialUpdateObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `partialUpdateObject`.");if(!t)throw new Error("Parameter `attributesToUpdate` is required when calling `partialUpdateObject`.");let n="/1/indexes/{indexName}/{objectID}/partial".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),o={},c={};a!==void 0&&(c.createIfNotExists=a.toString());let h={method:"POST",path:n,queryParameters:c,headers:o,data:t};return l.request(h,s)},removeUserId({userID:r},e){if(!r)throw new Error("Parameter `userID` is required when calling `removeUserId`.");let n={method:"DELETE",path:"/1/clusters/mapping/{userID}".replace("{userID}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},replaceSources({source:r},e){if(!r)throw new Error("Parameter `source` is required when calling `replaceSources`.");let n={method:"PUT",path:"/1/security/sources",queryParameters:{},headers:{},data:r};return l.request(n,e)},restoreApiKey({key:r},e){if(!r)throw new Error("Parameter `key` is required when calling `restoreApiKey`.");let n={method:"POST",path:"/1/keys/{key}/restore".replace("{key}",encodeURIComponent(r)),queryParameters:{},headers:{}};return l.request(n,e)},saveObject({indexName:r,body:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `saveObject`.");if(!e)throw new Error("Parameter `body` is required when calling `saveObject`.");let o={method:"POST",path:"/1/indexes/{indexName}".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)},saveRule({indexName:r,objectID:e,rule:t,forwardToReplicas:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `saveRule`.");if(!e)throw new Error("Parameter `objectID` is required when calling `saveRule`.");if(!t)throw new Error("Parameter `rule` is required when calling `saveRule`.");if(!t.objectID)throw new Error("Parameter `rule.objectID` is required when calling `saveRule`.");let n="/1/indexes/{indexName}/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),o={},c={};a!==void 0&&(c.forwardToReplicas=a.toString());let h={method:"PUT",path:n,queryParameters:c,headers:o,data:t};return l.request(h,s)},saveRules({indexName:r,rules:e,forwardToReplicas:t,clearExistingRules:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `saveRules`.");if(!e)throw new Error("Parameter `rules` is required when calling `saveRules`.");let n="/1/indexes/{indexName}/rules/batch".replace("{indexName}",encodeURIComponent(r)),o={},c={};t!==void 0&&(c.forwardToReplicas=t.toString()),a!==void 0&&(c.clearExistingRules=a.toString());let h={method:"POST",path:n,queryParameters:c,headers:o,data:e};return l.request(h,s)},saveSynonym({indexName:r,objectID:e,synonymHit:t,forwardToReplicas:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `saveSynonym`.");if(!e)throw new Error("Parameter `objectID` is required when calling `saveSynonym`.");if(!t)throw new Error("Parameter `synonymHit` is required when calling `saveSynonym`.");if(!t.objectID)throw new Error("Parameter `synonymHit.objectID` is required when calling `saveSynonym`.");if(!t.type)throw new Error("Parameter `synonymHit.type` is required when calling `saveSynonym`.");let n="/1/indexes/{indexName}/synonyms/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{objectID}",encodeURIComponent(e)),o={},c={};a!==void 0&&(c.forwardToReplicas=a.toString());let h={method:"PUT",path:n,queryParameters:c,headers:o,data:t};return l.request(h,s)},saveSynonyms({indexName:r,synonymHit:e,forwardToReplicas:t,replaceExistingSynonyms:a},s){if(!r)throw new Error("Parameter `indexName` is required when calling `saveSynonyms`.");if(!e)throw new Error("Parameter `synonymHit` is required when calling `saveSynonyms`.");let n="/1/indexes/{indexName}/synonyms/batch".replace("{indexName}",encodeURIComponent(r)),o={},c={};t!==void 0&&(c.forwardToReplicas=t.toString()),a!==void 0&&(c.replaceExistingSynonyms=a.toString());let h={method:"POST",path:n,queryParameters:c,headers:o,data:e};return l.request(h,s)},search(r,e){if(r&&Array.isArray(r)&&(r={requests:r.map(({params:c,...h})=>h.type==="facet"?{...h,...c,type:"facet"}:{...h,...c,facet:void 0,maxFacetHits:void 0,facetQuery:void 0})}),!r)throw new Error("Parameter `searchMethodParams` is required when calling `search`.");if(!r.requests)throw new Error("Parameter `searchMethodParams.requests` is required when calling `search`.");let n={method:"POST",path:"/1/indexes/*/queries",queryParameters:{},headers:{},data:r,useReadTransporter:!0,cacheable:!0};return l.request(n,e)},searchDictionaryEntries({dictionaryName:r,searchDictionaryEntriesParams:e},t){if(!r)throw new Error("Parameter `dictionaryName` is required when calling `searchDictionaryEntries`.");if(!e)throw new Error("Parameter `searchDictionaryEntriesParams` is required when calling `searchDictionaryEntries`.");if(!e.query)throw new Error("Parameter `searchDictionaryEntriesParams.query` is required when calling `searchDictionaryEntries`.");let o={method:"POST",path:"/1/dictionaries/{dictionaryName}/search".replace("{dictionaryName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return l.request(o,t)},searchForFacetValues({indexName:r,facetName:e,searchForFacetValuesRequest:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `searchForFacetValues`.");if(!e)throw new Error("Parameter `facetName` is required when calling `searchForFacetValues`.");let c={method:"POST",path:"/1/indexes/{indexName}/facets/{facetName}/query".replace("{indexName}",encodeURIComponent(r)).replace("{facetName}",encodeURIComponent(e)),queryParameters:{},headers:{},data:t||{},useReadTransporter:!0,cacheable:!0};return l.request(c,a)},searchRules({indexName:r,searchRulesParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `searchRules`.");let o={method:"POST",path:"/1/indexes/{indexName}/rules/search".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e||{},useReadTransporter:!0,cacheable:!0};return l.request(o,t)},searchSingleIndex({indexName:r,searchParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `searchSingleIndex`.");let o={method:"POST",path:"/1/indexes/{indexName}/query".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e||{},useReadTransporter:!0,cacheable:!0};return l.request(o,t)},searchSynonyms({indexName:r,searchSynonymsParams:e},t){if(!r)throw new Error("Parameter `indexName` is required when calling `searchSynonyms`.");let o={method:"POST",path:"/1/indexes/{indexName}/synonyms/search".replace("{indexName}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e||{},useReadTransporter:!0,cacheable:!0};return l.request(o,t)},searchUserIds(r,e){if(!r)throw new Error("Parameter `searchUserIdsParams` is required when calling `searchUserIds`.");if(!r.query)throw new Error("Parameter `searchUserIdsParams.query` is required when calling `searchUserIds`.");let n={method:"POST",path:"/1/clusters/mapping/search",queryParameters:{},headers:{},data:r,useReadTransporter:!0,cacheable:!0};return l.request(n,e)},setDictionarySettings(r,e){if(!r)throw new Error("Parameter `dictionarySettingsParams` is required when calling `setDictionarySettings`.");if(!r.disableStandardEntries)throw new Error("Parameter `dictionarySettingsParams.disableStandardEntries` is required when calling `setDictionarySettings`.");let n={method:"PUT",path:"/1/dictionaries/*/settings",queryParameters:{},headers:{},data:r};return l.request(n,e)},setSettings({indexName:r,indexSettings:e,forwardToReplicas:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `setSettings`.");if(!e)throw new Error("Parameter `indexSettings` is required when calling `setSettings`.");let s="/1/indexes/{indexName}/settings".replace("{indexName}",encodeURIComponent(r)),n={},o={};t!==void 0&&(o.forwardToReplicas=t.toString());let c={method:"PUT",path:s,queryParameters:o,headers:n,data:e};return l.request(c,a)},updateApiKey({key:r,apiKey:e},t){if(!r)throw new Error("Parameter `key` is required when calling `updateApiKey`.");if(!e)throw new Error("Parameter `apiKey` is required when calling `updateApiKey`.");if(!e.acl)throw new Error("Parameter `apiKey.acl` is required when calling `updateApiKey`.");let o={method:"PUT",path:"/1/keys/{key}".replace("{key}",encodeURIComponent(r)),queryParameters:{},headers:{},data:e};return l.request(o,t)}}}function ce(i,u,d){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");return Ne({appId:i,apiKey:u,timeouts:{connect:A,read:b,write:I},logger:U(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[C({key:`${$}-${i}`}),E()]}),...d})}var ue="5.8.0";function ke(i){return [{url:`${i}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${i}.algolia.net`,accept:"write",protocol:"https"}].concat(F([{url:`${i}-1.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${i}-2.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${i}-3.algolianet.com`,accept:"readWrite",protocol:"https"}]))}function je({appId:i,apiKey:u,authMode:d,algoliaAgents:m,...g}){let w=x(i,u,d),l=D({hosts:ke(i),...g,algoliaAgent:O({algoliaAgents:m,client:"Recommend",version:ue}),baseHeaders:{"content-type":"text/plain",...w.headers(),...g.baseHeaders},baseQueryParameters:{...w.queryParameters(),...g.baseQueryParameters}});return {transporter:l,appId:i,clearCache(){return Promise.all([l.requestsCache.clear(),l.responsesCache.clear()]).then(()=>{})},get _ua(){return l.algoliaAgent.value},addAlgoliaAgent(r,e){l.algoliaAgent.add({segment:r,version:e});},setClientApiKey({apiKey:r}){!d||d==="WithinHeaders"?l.baseHeaders["x-algolia-api-key"]=r:l.baseQueryParameters["x-algolia-api-key"]=r;},batchRecommendRules({indexName:r,model:e,recommendRule:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `batchRecommendRules`.");if(!e)throw new Error("Parameter `model` is required when calling `batchRecommendRules`.");let c={method:"POST",path:"/1/indexes/{indexName}/{model}/recommend/rules/batch".replace("{indexName}",encodeURIComponent(r)).replace("{model}",encodeURIComponent(e)),queryParameters:{},headers:{},data:t||{}};return l.request(c,a)},customDelete({path:r,parameters:e},t){if(!r)throw new Error("Parameter `path` is required when calling `customDelete`.");let o={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{}};return l.request(o,t)},customGet({path:r,parameters:e},t){if(!r)throw new Error("Parameter `path` is required when calling `customGet`.");let o={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{}};return l.request(o,t)},customPost({path:r,parameters:e,body:t},a){if(!r)throw new Error("Parameter `path` is required when calling `customPost`.");let c={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{},data:t||{}};return l.request(c,a)},customPut({path:r,parameters:e,body:t},a){if(!r)throw new Error("Parameter `path` is required when calling `customPut`.");let c={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:e||{},headers:{},data:t||{}};return l.request(c,a)},deleteRecommendRule({indexName:r,model:e,objectID:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `deleteRecommendRule`.");if(!e)throw new Error("Parameter `model` is required when calling `deleteRecommendRule`.");if(!t)throw new Error("Parameter `objectID` is required when calling `deleteRecommendRule`.");let c={method:"DELETE",path:"/1/indexes/{indexName}/{model}/recommend/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{model}",encodeURIComponent(e)).replace("{objectID}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(c,a)},getRecommendRule({indexName:r,model:e,objectID:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `getRecommendRule`.");if(!e)throw new Error("Parameter `model` is required when calling `getRecommendRule`.");if(!t)throw new Error("Parameter `objectID` is required when calling `getRecommendRule`.");let c={method:"GET",path:"/1/indexes/{indexName}/{model}/recommend/rules/{objectID}".replace("{indexName}",encodeURIComponent(r)).replace("{model}",encodeURIComponent(e)).replace("{objectID}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(c,a)},getRecommendStatus({indexName:r,model:e,taskID:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `getRecommendStatus`.");if(!e)throw new Error("Parameter `model` is required when calling `getRecommendStatus`.");if(!t)throw new Error("Parameter `taskID` is required when calling `getRecommendStatus`.");let c={method:"GET",path:"/1/indexes/{indexName}/{model}/task/{taskID}".replace("{indexName}",encodeURIComponent(r)).replace("{model}",encodeURIComponent(e)).replace("{taskID}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(c,a)},getRecommendations(r,e){if(r&&Array.isArray(r)&&(r={requests:r}),!r)throw new Error("Parameter `getRecommendationsParams` is required when calling `getRecommendations`.");if(!r.requests)throw new Error("Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.");let n={method:"POST",path:"/1/indexes/*/recommendations",queryParameters:{},headers:{},data:r,useReadTransporter:!0,cacheable:!0};return l.request(n,e)},searchRecommendRules({indexName:r,model:e,searchRecommendRulesParams:t},a){if(!r)throw new Error("Parameter `indexName` is required when calling `searchRecommendRules`.");if(!e)throw new Error("Parameter `model` is required when calling `searchRecommendRules`.");let c={method:"POST",path:"/1/indexes/{indexName}/{model}/recommend/rules/search".replace("{indexName}",encodeURIComponent(r)).replace("{model}",encodeURIComponent(e)),queryParameters:{},headers:{},data:t||{},useReadTransporter:!0,cacheable:!0};return l.request(c,a)}}}function he(i,u,d){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");return je({appId:i,apiKey:u,timeouts:{connect:A,read:b,write:I},logger:U(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:R({caches:[C({key:`${ue}-${i}`}),E()]}),...d})}function Tr(i,u,d){if(!i||typeof i!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");let m=ce(i,u,d);return {...m,get _ua(){return m.transporter.algoliaAgent.value},initRecommend:(g={})=>he(g.appId||i,g.apiKey||u,g.options),initAnalytics:(g={})=>se(g.appId||i,g.apiKey||u,g.region,g.options),initAbtesting:(g={})=>re(g.appId||i,g.apiKey||u,g.region,g.options),initPersonalization:g=>ie(g.appId||i,g.apiKey||u,g.region,g.options)}}
8
8
 
9
9
  exports.abtestingClient = re;
10
10
  exports.algoliasearch = Tr;
package/dist/browser.d.ts CHANGED
@@ -9,7 +9,7 @@ import { Region as Region$3, PersonalizationClient } from '@algolia/client-perso
9
9
  export * from '@algolia/client-personalization';
10
10
  import { SearchClient } from '@algolia/client-search';
11
11
  export * from '@algolia/client-search';
12
- export { AdvancedSyntaxFeatures, AlternativesAsExact, Anchoring, AroundPrecision, AroundRadius, AroundRadiusAll, AutomaticFacetFilter, AutomaticFacetFilters, BaseIndexSettings, BaseSearchParams, BaseSearchParamsWithoutQuery, BaseSearchResponse, BooleanString, Condition, Consequence, ConsequenceHide, ConsequenceParams, ConsequenceQuery, ConsequenceQueryObject, CustomDeleteProps, CustomGetProps, CustomPostProps, CustomPutProps, DeletedAtResponse, Distinct, Edit, EditType, ErrorBase, ExactOnSingleWordQuery, Exhaustive, FacetFilters, FacetOrdering, FacetStats, Facets, HighlightResult, HighlightResultOption, IgnorePlurals, IndexSettingsAsSearchParams, MatchLevel, MatchedGeoLocation, Mode, NumericFilters, OptionalFilters, Params, Personalization, Promote, PromoteObjectID, PromoteObjectIDs, QueryType, Range, RankingInfo, ReRankingApplyFilter, Redirect, RedirectRuleIndexData, RedirectRuleIndexMetadata, RedirectURL, RemoveStopWords, RemoveWordsIfNoResults, RenderingContent, SearchPagination, SearchParams, SearchParamsObject, SearchParamsQuery, SemanticSearch, SnippetResult, SnippetResultOption, SortRemainingBy, SupportedLanguage, TagFilters, TaskStatus, TypoTolerance, TypoToleranceEnum, Value, apiClientVersion } from '@algolia/client-search';
12
+ export { AdvancedSyntaxFeatures, AlternativesAsExact, Anchoring, AroundPrecision, AroundRadius, AroundRadiusAll, AutomaticFacetFilter, AutomaticFacetFilters, Banner, BannerImage, BannerImageUrl, BannerLink, Banners, BaseIndexSettings, BaseSearchParams, BaseSearchParamsWithoutQuery, BaseSearchResponse, BooleanString, Condition, Consequence, ConsequenceHide, ConsequenceParams, ConsequenceQuery, ConsequenceQueryObject, CustomDeleteProps, CustomGetProps, CustomPostProps, CustomPutProps, DeletedAtResponse, Distinct, Edit, EditType, ErrorBase, ExactOnSingleWordQuery, Exhaustive, FacetFilters, FacetOrdering, FacetStats, Facets, HighlightResult, HighlightResultOption, IgnorePlurals, IndexSettingsAsSearchParams, MatchLevel, MatchedGeoLocation, Mode, NumericFilters, OptionalFilters, Params, Personalization, Promote, PromoteObjectID, PromoteObjectIDs, QueryType, Range, RankingInfo, ReRankingApplyFilter, Redirect, RedirectRuleIndexData, RedirectRuleIndexMetadata, RedirectURL, RemoveStopWords, RemoveWordsIfNoResults, RenderingContent, SearchPagination, SearchParams, SearchParamsObject, SearchParamsQuery, SemanticSearch, SnippetResult, SnippetResultOption, SortRemainingBy, SupportedLanguage, TagFilters, TaskStatus, TimeRange, TypoTolerance, TypoToleranceEnum, Value, Widgets, apiClientVersion } from '@algolia/client-search';
13
13
  import { RecommendClient } from '@algolia/recommend';
14
14
  export * from '@algolia/recommend';
15
15
 
package/dist/browser.js CHANGED
@@ -33,17 +33,17 @@ var models_exports = {};
33
33
  __export(models_exports, {
34
34
  apiClientVersion: () => apiClientVersion
35
35
  });
36
+ __reExport(models_exports, client_abtesting_star);
37
+ __reExport(models_exports, client_analytics_star);
38
+ __reExport(models_exports, client_personalization_star);
36
39
  __reExport(models_exports, client_search_star);
37
40
  __reExport(models_exports, recommend_star);
38
- __reExport(models_exports, client_personalization_star);
39
- __reExport(models_exports, client_analytics_star);
40
- __reExport(models_exports, client_abtesting_star);
41
41
  import { apiClientVersion } from "@algolia/client-search";
42
+ import * as client_abtesting_star from "@algolia/client-abtesting";
43
+ import * as client_analytics_star from "@algolia/client-analytics";
44
+ import * as client_personalization_star from "@algolia/client-personalization";
42
45
  import * as client_search_star from "@algolia/client-search";
43
46
  import * as recommend_star from "@algolia/recommend";
44
- import * as client_personalization_star from "@algolia/client-personalization";
45
- import * as client_analytics_star from "@algolia/client-analytics";
46
- import * as client_abtesting_star from "@algolia/client-abtesting";
47
47
 
48
48
  // builds/browser.ts
49
49
  __reExport(browser_exports, models_exports);