algoliasearch
Version:
A fully-featured and blazing-fast JavaScript API client to interact with Algolia API.
1 lines • 109 kB
JavaScript
function I(c){let d,l=`algolia-client-js-${c.key}`;function m(){return d===void 0&&(d=c.localStorage||window.localStorage),d}function P(){return JSON.parse(m().getItem(l)||"{}")}function p(e){m().setItem(l,JSON.stringify(e))}function h(){return new Promise(e=>setTimeout(e,0))}function t(){let e=c.timeToLive?c.timeToLive*1e3:null,r=P(),a=new Date().getTime(),s=!1;return{namespace:Object.fromEntries(Object.entries(r).filter(([,n])=>!n||n.timestamp===void 0||e&&n.timestamp+e<a?(s=!0,!1):!0)),changed:s}}return{get(e,r,a={miss:()=>Promise.resolve()}){return h().then(()=>{let{namespace:s,changed:o}=t(),n=s[JSON.stringify(e)];return o&&p(s),n?n.value:r().then(i=>a.miss(i).then(()=>i))})},set(e,r){return h().then(()=>{let a=P();return a[JSON.stringify(e)]={timestamp:new Date().getTime(),value:r},m().setItem(l,JSON.stringify(a)),r})},delete(e){return h().then(()=>{let r=P();delete r[JSON.stringify(e)],m().setItem(l,JSON.stringify(r))})},clear(){return Promise.resolve().then(()=>{m().removeItem(l)})}}}function Ae(){return{get(c,d,l={miss:()=>Promise.resolve()}){return d().then(P=>Promise.all([P,l.miss(P)])).then(([P])=>P)},set(c,d){return Promise.resolve(d)},delete(c){return Promise.resolve()},clear(){return Promise.resolve()}}}function T(c){let d=[...c.caches],l=d.shift();return l===void 0?Ae():{get(m,P,p={miss:()=>Promise.resolve()}){return l.get(m,P,p).catch(()=>T({caches:d}).get(m,P,p))},set(m,P){return l.set(m,P).catch(()=>T({caches:d}).set(m,P))},delete(m){return l.delete(m).catch(()=>T({caches:d}).delete(m))},clear(){return l.clear().catch(()=>T({caches:d}).clear())}}}function S(c={serializable:!0}){let d={};return{get(l,m,P={miss:()=>Promise.resolve()}){let p=JSON.stringify(l);if(p in d)return Promise.resolve(c.serializable?JSON.parse(d[p]):d[p]);let h=m();return h.then(t=>P.miss(t)).then(()=>h)},set(l,m){return d[JSON.stringify(l)]=c.serializable?JSON.stringify(m):m,Promise.resolve(m)},delete(l){return delete d[JSON.stringify(l)],Promise.resolve()},clear(){return d={},Promise.resolve()}}}function be(c){let d={value:`Algolia for JavaScript (${c})`,add(l){let m=`; ${l.segment}${l.version!==void 0?` (${l.version})`:""}`;return d.value.indexOf(m)===-1&&(d.value=`${d.value}${m}`),d}};return d}function R(c,d,l="WithinHeaders"){let m={"x-algolia-api-key":d,"x-algolia-application-id":c};return{headers(){return l==="WithinHeaders"?m:{}},queryParameters(){return l==="WithinQueryParameters"?m:{}}}}function x({func:c,validate:d,aggregator:l,error:m,timeout:P=()=>0}){let p=h=>new Promise((t,e)=>{c(h).then(async r=>(l&&await l(r),await d(r)?t(r):m&&await m.validate(r)?e(new Error(await m.message(r))):setTimeout(()=>{p(r).then(t).catch(e)},await P()))).catch(r=>{e(r)})});return p()}function C({algoliaAgents:c,client:d,version:l}){let m=be(l).add({segment:d,version:l});return c.forEach(P=>m.add(P)),m}function A(){return{debug(c,d){return Promise.resolve()},info(c,d){return Promise.resolve()},error(c,d){return Promise.resolve()}}}var De=750,X=120*1e3;function Y(c,d="up"){let l=Date.now();function m(){return d==="up"||Date.now()-l>X}function P(){return d==="timed out"&&Date.now()-l<=X}return{...c,status:d,lastUpdate:l,isUp:m,isTimedOut:P}}var Z=class extends Error{name="AlgoliaError";constructor(c,d){super(c),d&&(this.name=d)}};var ee=class extends Z{stackTrace;constructor(c,d,l){super(c,l),this.stackTrace=d}},ke=class extends ee{constructor(c){super("Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support",c,"RetryError")}},j=class extends ee{status;constructor(c,d,l,m="ApiError"){super(c,l,m),this.status=d}},Oe=class extends Z{response;constructor(c,d){super(c,"DeserializationError"),this.response=d}},xe=class extends j{error;constructor(c,d,l,m){super(c,d,m,"DetailedApiError"),this.error=l}};function F(c){let d=c;for(let l=c.length-1;l>0;l--){let m=Math.floor(Math.random()*(l+1)),P=c[l];d[l]=c[m],d[m]=P}return d}function Ue(c,d,l){let m=Ne(l),P=`${c.protocol}://${c.url}${c.port?`:${c.port}`:""}/${d.charAt(0)==="/"?d.substring(1):d}`;return m.length&&(P+=`?${m}`),P}function Ne(c){return Object.keys(c).filter(d=>c[d]!==void 0).sort().map(d=>`${d}=${encodeURIComponent(Object.prototype.toString.call(c[d])==="[object Array]"?c[d].join(","):c[d]).replace(/\+/g,"%20")}`).join("&")}function Be(c,d){if(c.method==="GET"||c.data===void 0&&d.data===void 0)return;let l=Array.isArray(c.data)?c.data:{...c.data,...d.data};return JSON.stringify(l)}function Ge(c,d,l){let m={Accept:"application/json",...c,...d,...l},P={};return Object.keys(m).forEach(p=>{let h=m[p];P[p.toLowerCase()]=h}),P}function je(c){try{return JSON.parse(c.content)}catch(d){throw new Oe(d.message,c)}}function Fe({content:c,status:d},l){try{let m=JSON.parse(c);return"error"in m?new xe(m.message,d,m.error,l):new j(m.message,d,l)}catch{}return new j(c,d,l)}function Le({isTimedOut:c,status:d}){return!c&&~~d===0}function He({isTimedOut:c,status:d}){return c||Le({isTimedOut:c,status:d})||~~(d/100)!==2&&~~(d/100)!==4}function We({status:c}){return~~(c/100)===2}function Qe(c){return c.map(d=>re(d))}function re(c){let d=c.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...c,request:{...c.request,headers:{...c.request.headers,...d}}}}function b({hosts:c,hostsCache:d,baseHeaders:l,logger:m,baseQueryParameters:P,algoliaAgent:p,timeouts:h,requester:t,requestsCache:e,responsesCache:r,compress:a,compression:s}){async function o(u){let q=await Promise.all(u.map(y=>d.get(y,()=>Promise.resolve(Y(y))))),g=q.filter(y=>y.isUp()),w=q.filter(y=>y.isTimedOut()),E=[...g,...w];return{hosts:E.length>0?E:u,getTimeout(y,v){return(w.length===0&&y===0?1:w.length+3+y)*v}}}async function n(u,q,g){let w=[],E=Be(u,q),f=Ge(l,u.headers,q.headers),y=s==="gzip"&&E!==void 0&&E.length>De&&(u.method==="POST"||u.method==="PUT");y&&a===void 0&&m.info("Compression is disabled because no compress method is available.");let v=y&&a!==void 0,O=v?await a(E):E;v&&(f["content-encoding"]="gzip");let B=u.method==="GET"?{...u.data,...q.data}:{},U={...P,...u.queryParameters,...B};if(p.value&&(U["x-algolia-agent"]=p.value),q&&q.queryParameters)for(let k of Object.keys(q.queryParameters))!q.queryParameters[k]||Object.prototype.toString.call(q.queryParameters[k])==="[object Object]"?U[k]=q.queryParameters[k]:U[k]=q.queryParameters[k].toString();let L=0,z=async(k,H)=>{let G=k.pop();if(G===void 0)throw new ke(Qe(w));let W={...h,...q.timeouts},M={data:O,headers:f,method:u.method,url:Ue(G,u.path,U),connectTimeout:H(L,W.connect),responseTimeout:H(L,g?W.read:W.write)},J=Q=>{let K={request:M,response:Q,host:G,triesLeft:k.length};return w.push(K),K},N=await t.send(M);if(He(N)){let Q=J(N);return N.isTimedOut&&L++,m.info("Retryable failure",re(Q)),await d.set(G,Y(G,N.isTimedOut?"timed out":"down")),z(k,H)}if(We(N))return je(N);throw J(N),Fe(N,w)},Ce=c.filter(k=>k.accept==="readWrite"||(g?k.accept==="read":k.accept==="write")),_=await o(Ce);return z([..._.hosts].reverse(),_.getTimeout)}function i(u,q={}){let g=()=>n(u,q,w),w=u.useReadTransporter||u.method==="GET";if((q.cacheable||u.cacheable)!==!0)return g();let f={request:u,requestOptions:q,transporter:{queryParameters:P,headers:l}};return r.get(f,()=>e.get(f,()=>e.set(f,g()).then(y=>Promise.all([e.delete(f),y]),y=>Promise.all([e.delete(f),Promise.reject(y)])).then(([y,v])=>v)),{miss:y=>r.set(f,y)})}return{hostsCache:d,requester:t,timeouts:h,logger:m,algoliaAgent:p,baseHeaders:l,baseQueryParameters:P,hosts:c,request:i,requestsCache:e,responsesCache:r}}function D(){function c(d){return new Promise(l=>{let m=new XMLHttpRequest;m.open(d.method,d.url,!0),Object.keys(d.headers).forEach(t=>m.setRequestHeader(t,d.headers[t]));let P=(t,e)=>setTimeout(()=>{m.abort(),l({status:0,content:e,isTimedOut:!0})},t),p=P(d.connectTimeout,"Connection timeout"),h;m.onreadystatechange=()=>{m.readyState>m.OPENED&&h===void 0&&(clearTimeout(p),h=P(d.responseTimeout,"Socket timeout"))},m.onerror=()=>{m.status===0&&(clearTimeout(p),clearTimeout(h),l({content:m.responseText||"Network request failed",status:m.status,isTimedOut:!1}))},m.onload=()=>{clearTimeout(p),clearTimeout(h),l({content:m.responseText,status:m.status,isTimedOut:!1})},m.send(d.data)})}return{send:c}}var ae="1.19.0",te=["de","us"];function Ve(c){return[{url:c?"analytics.{region}.algolia.com".replace("{region}",c):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function $e({appId:c,apiKey:d,authMode:l,algoliaAgents:m,region:P,...p}){let h=R(c,d,l),t=b({hosts:Ve(P),...p,algoliaAgent:C({algoliaAgents:m,client:"AbtestingV3",version:ae}),baseHeaders:{"content-type":"text/plain",...h.headers(),...p.baseHeaders},baseQueryParameters:{...h.queryParameters(),...p.baseQueryParameters}});return{transporter:t,appId:c,apiKey:d,clearCache(){return Promise.all([t.requestsCache.clear(),t.responsesCache.clear()]).then(()=>{})},get _ua(){return t.algoliaAgent.value},addAlgoliaAgent(e,r){t.algoliaAgent.add({segment:e,version:r})},setClientApiKey({apiKey:e}){!l||l==="WithinHeaders"?t.baseHeaders["x-algolia-api-key"]=e:t.baseQueryParameters["x-algolia-api-key"]=e},addABTests(e,r){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.metrics)throw new Error("Parameter `addABTestsRequest.metrics` is required when calling `addABTests`.");if(!e.endAt)throw new Error("Parameter `addABTestsRequest.endAt` is required when calling `addABTests`.");let n={method:"POST",path:"/3/abtests",queryParameters:{},headers:{},data:e};return t.request(n,r)},customDelete({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let i={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customGet({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let i={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customPost({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let u={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},customPut({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let u={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},deleteABTest({id:e},r){if(!e)throw new Error("Parameter `id` is required when calling `deleteABTest`.");let n={method:"DELETE",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},estimateABTest(e,r){if(!e)throw new Error("Parameter `estimateABTestRequest` is required when calling `estimateABTest`.");if(!e.configuration)throw new Error("Parameter `estimateABTestRequest.configuration` is required when calling `estimateABTest`.");if(!e.variants)throw new Error("Parameter `estimateABTestRequest.variants` is required when calling `estimateABTest`.");let n={method:"POST",path:"/3/abtests/estimate",queryParameters:{},headers:{},data:e};return t.request(n,r)},getABTest({id:e},r){if(!e)throw new Error("Parameter `id` is required when calling `getABTest`.");let n={method:"GET",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},getTimeseries({id:e,startDate:r,endDate:a,metric:s},o){if(!e)throw new Error("Parameter `id` is required when calling `getTimeseries`.");let n="/3/abtests/{id}/timeseries".replace("{id}",encodeURIComponent(e)),i={},u={};r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.metric=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},listABTests({offset:e,limit:r,indexPrefix:a,indexSuffix:s,direction:o}={},n=void 0){let i="/3/abtests",u={},q={};e!==void 0&&(q.offset=e.toString()),r!==void 0&&(q.limit=r.toString()),a!==void 0&&(q.indexPrefix=a.toString()),s!==void 0&&(q.indexSuffix=s.toString()),o!==void 0&&(q.direction=o.toString());let g={method:"GET",path:i,queryParameters:q,headers:u};return t.request(g,n)},stopABTest({id:e},r){if(!e)throw new Error("Parameter `id` is required when calling `stopABTest`.");let n={method:"POST",path:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)}}}function se(c,d,l,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!d||typeof d!="string")throw new Error("`apiKey` is missing.");if(l&&(typeof l!="string"||!te.includes(l)))throw new Error(`\`region\` must be one of the following: ${te.join(", ")}`);let{compression:P,...p}=m||{};return $e({appId:c,apiKey:d,region:l,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:S(),requestsCache:S({serializable:!1}),hostsCache:T({caches:[I({key:`${ae}-${c}`}),S()]}),...p})}var oe="5.53.0",ne=["de","us"];function ze(c){return[{url:c?"analytics.{region}.algolia.com".replace("{region}",c):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function _e({appId:c,apiKey:d,authMode:l,algoliaAgents:m,region:P,...p}){let h=R(c,d,l),t=b({hosts:ze(P),...p,algoliaAgent:C({algoliaAgents:m,client:"Abtesting",version:oe}),baseHeaders:{"content-type":"text/plain",...h.headers(),...p.baseHeaders},baseQueryParameters:{...h.queryParameters(),...p.baseQueryParameters}});return{transporter:t,appId:c,apiKey:d,clearCache(){return Promise.all([t.requestsCache.clear(),t.responsesCache.clear()]).then(()=>{})},get _ua(){return t.algoliaAgent.value},addAlgoliaAgent(e,r){t.algoliaAgent.add({segment:e,version:r})},setClientApiKey({apiKey:e}){!l||l==="WithinHeaders"?t.baseHeaders["x-algolia-api-key"]=e:t.baseQueryParameters["x-algolia-api-key"]=e},addABTests(e,r){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 n={method:"POST",path:"/2/abtests",queryParameters:{},headers:{},data:e};return t.request(n,r)},customDelete({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let i={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customGet({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let i={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customPost({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let u={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},customPut({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let u={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},deleteABTest({id:e},r){if(!e)throw new Error("Parameter `id` is required when calling `deleteABTest`.");let n={method:"DELETE",path:"/2/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},estimateABTest(e,r){if(!e)throw new Error("Parameter `estimateABTestRequest` is required when calling `estimateABTest`.");if(!e.configuration)throw new Error("Parameter `estimateABTestRequest.configuration` is required when calling `estimateABTest`.");if(!e.variants)throw new Error("Parameter `estimateABTestRequest.variants` is required when calling `estimateABTest`.");let n={method:"POST",path:"/2/abtests/estimate",queryParameters:{},headers:{},data:e};return t.request(n,r)},getABTest({id:e},r){if(!e)throw new Error("Parameter `id` is required when calling `getABTest`.");let n={method:"GET",path:"/2/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},listABTests({offset:e,limit:r,indexPrefix:a,indexSuffix:s}={},o=void 0){let n="/2/abtests",i={},u={};e!==void 0&&(u.offset=e.toString()),r!==void 0&&(u.limit=r.toString()),a!==void 0&&(u.indexPrefix=a.toString()),s!==void 0&&(u.indexSuffix=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},stopABTest({id:e},r){if(!e)throw new Error("Parameter `id` is required when calling `stopABTest`.");let n={method:"POST",path:"/2/abtests/{id}/stop".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)}}}function ie(c,d,l,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!d||typeof d!="string")throw new Error("`apiKey` is missing.");if(l&&(typeof l!="string"||!ne.includes(l)))throw new Error(`\`region\` must be one of the following: ${ne.join(", ")}`);let{compression:P,...p}=m||{};return _e({appId:c,apiKey:d,region:l,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:S(),requestsCache:S({serializable:!1}),hostsCache:T({caches:[I({key:`${oe}-${c}`}),S()]}),...p})}var ue="5.53.0",ce=["de","us"];function Me(c){return[{url:c?"analytics.{region}.algolia.com".replace("{region}",c):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function Je({appId:c,apiKey:d,authMode:l,algoliaAgents:m,region:P,...p}){let h=R(c,d,l),t=b({hosts:Me(P),...p,algoliaAgent:C({algoliaAgents:m,client:"Analytics",version:ue}),baseHeaders:{"content-type":"text/plain",...h.headers(),...p.baseHeaders},baseQueryParameters:{...h.queryParameters(),...p.baseQueryParameters}});return{transporter:t,appId:c,apiKey:d,clearCache(){return Promise.all([t.requestsCache.clear(),t.responsesCache.clear()]).then(()=>{})},get _ua(){return t.algoliaAgent.value},addAlgoliaAgent(e,r){t.algoliaAgent.add({segment:e,version:r})},setClientApiKey({apiKey:e}){!l||l==="WithinHeaders"?t.baseHeaders["x-algolia-api-key"]=e:t.baseQueryParameters["x-algolia-api-key"]=e},customDelete({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let i={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customGet({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let i={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customPost({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let u={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},customPut({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let u={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},getAddToCartRate({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getAddToCartRate`.");let n="/2/conversions/addToCartRate",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getAverageClickPosition({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getAverageClickPosition`.");let n="/2/clicks/averageClickPosition",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getClickPositions({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getClickPositions`.");let n="/2/clicks/positions",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getClickThroughRate({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getClickThroughRate`.");let n="/2/clicks/clickThroughRate",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getConversionRate({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getConversionRate`.");let n="/2/conversions/conversionRate",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getNoClickRate({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getNoClickRate`.");let n="/2/searches/noClickRate",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getNoResultsRate({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getNoResultsRate`.");let n="/2/searches/noResultRate",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getPurchaseRate({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getPurchaseRate`.");let n="/2/conversions/purchaseRate",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getRevenue({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getRevenue`.");let n="/2/conversions/revenue",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getSearchesCount({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getSearchesCount`.");let n="/2/searches/count",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)},getSearchesNoClicks({index:e,startDate:r,endDate:a,limit:s,offset:o,tags:n},i){if(!e)throw new Error("Parameter `index` is required when calling `getSearchesNoClicks`.");let u="/2/searches/noClicks",q={},g={};e!==void 0&&(g.index=e.toString()),r!==void 0&&(g.startDate=r.toString()),a!==void 0&&(g.endDate=a.toString()),s!==void 0&&(g.limit=s.toString()),o!==void 0&&(g.offset=o.toString()),n!==void 0&&(g.tags=n.toString());let w={method:"GET",path:u,queryParameters:g,headers:q};return t.request(w,i)},getSearchesNoResults({index:e,startDate:r,endDate:a,limit:s,offset:o,tags:n},i){if(!e)throw new Error("Parameter `index` is required when calling `getSearchesNoResults`.");let u="/2/searches/noResults",q={},g={};e!==void 0&&(g.index=e.toString()),r!==void 0&&(g.startDate=r.toString()),a!==void 0&&(g.endDate=a.toString()),s!==void 0&&(g.limit=s.toString()),o!==void 0&&(g.offset=o.toString()),n!==void 0&&(g.tags=n.toString());let w={method:"GET",path:u,queryParameters:g,headers:q};return t.request(w,i)},getStatus({index:e},r){if(!e)throw new Error("Parameter `index` is required when calling `getStatus`.");let a="/2/status",s={},o={};e!==void 0&&(o.index=e.toString());let n={method:"GET",path:a,queryParameters:o,headers:s};return t.request(n,r)},getTopCountries({index:e,startDate:r,endDate:a,limit:s,offset:o,tags:n},i){if(!e)throw new Error("Parameter `index` is required when calling `getTopCountries`.");let u="/2/countries",q={},g={};e!==void 0&&(g.index=e.toString()),r!==void 0&&(g.startDate=r.toString()),a!==void 0&&(g.endDate=a.toString()),s!==void 0&&(g.limit=s.toString()),o!==void 0&&(g.offset=o.toString()),n!==void 0&&(g.tags=n.toString());let w={method:"GET",path:u,queryParameters:g,headers:q};return t.request(w,i)},getTopFilterAttributes({index:e,search:r,startDate:a,endDate:s,limit:o,offset:n,tags:i},u){if(!e)throw new Error("Parameter `index` is required when calling `getTopFilterAttributes`.");let q="/2/filters",g={},w={};e!==void 0&&(w.index=e.toString()),r!==void 0&&(w.search=r.toString()),a!==void 0&&(w.startDate=a.toString()),s!==void 0&&(w.endDate=s.toString()),o!==void 0&&(w.limit=o.toString()),n!==void 0&&(w.offset=n.toString()),i!==void 0&&(w.tags=i.toString());let E={method:"GET",path:q,queryParameters:w,headers:g};return t.request(E,u)},getTopFilterForAttribute({attribute:e,index:r,search:a,startDate:s,endDate:o,limit:n,offset:i,tags:u},q){if(!e)throw new Error("Parameter `attribute` is required when calling `getTopFilterForAttribute`.");if(!r)throw new Error("Parameter `index` is required when calling `getTopFilterForAttribute`.");let g="/2/filters/{attribute}".replace("{attribute}",encodeURIComponent(e)),w={},E={};r!==void 0&&(E.index=r.toString()),a!==void 0&&(E.search=a.toString()),s!==void 0&&(E.startDate=s.toString()),o!==void 0&&(E.endDate=o.toString()),n!==void 0&&(E.limit=n.toString()),i!==void 0&&(E.offset=i.toString()),u!==void 0&&(E.tags=u.toString());let f={method:"GET",path:g,queryParameters:E,headers:w};return t.request(f,q)},getTopFiltersNoResults({index:e,search:r,startDate:a,endDate:s,limit:o,offset:n,tags:i},u){if(!e)throw new Error("Parameter `index` is required when calling `getTopFiltersNoResults`.");let q="/2/filters/noResults",g={},w={};e!==void 0&&(w.index=e.toString()),r!==void 0&&(w.search=r.toString()),a!==void 0&&(w.startDate=a.toString()),s!==void 0&&(w.endDate=s.toString()),o!==void 0&&(w.limit=o.toString()),n!==void 0&&(w.offset=n.toString()),i!==void 0&&(w.tags=i.toString());let E={method:"GET",path:q,queryParameters:w,headers:g};return t.request(E,u)},getTopHits({index:e,search:r,clickAnalytics:a,revenueAnalytics:s,startDate:o,endDate:n,limit:i,offset:u,tags:q},g){if(!e)throw new Error("Parameter `index` is required when calling `getTopHits`.");let w="/2/hits",E={},f={};e!==void 0&&(f.index=e.toString()),r!==void 0&&(f.search=r.toString()),a!==void 0&&(f.clickAnalytics=a.toString()),s!==void 0&&(f.revenueAnalytics=s.toString()),o!==void 0&&(f.startDate=o.toString()),n!==void 0&&(f.endDate=n.toString()),i!==void 0&&(f.limit=i.toString()),u!==void 0&&(f.offset=u.toString()),q!==void 0&&(f.tags=q.toString());let y={method:"GET",path:w,queryParameters:f,headers:E};return t.request(y,g)},getTopSearches({index:e,clickAnalytics:r,revenueAnalytics:a,startDate:s,endDate:o,orderBy:n,direction:i,limit:u,offset:q,tags:g},w){if(!e)throw new Error("Parameter `index` is required when calling `getTopSearches`.");let E="/2/searches",f={},y={};e!==void 0&&(y.index=e.toString()),r!==void 0&&(y.clickAnalytics=r.toString()),a!==void 0&&(y.revenueAnalytics=a.toString()),s!==void 0&&(y.startDate=s.toString()),o!==void 0&&(y.endDate=o.toString()),n!==void 0&&(y.orderBy=n.toString()),i!==void 0&&(y.direction=i.toString()),u!==void 0&&(y.limit=u.toString()),q!==void 0&&(y.offset=q.toString()),g!==void 0&&(y.tags=g.toString());let v={method:"GET",path:E,queryParameters:y,headers:f};return t.request(v,w)},getUsersCount({index:e,startDate:r,endDate:a,tags:s},o){if(!e)throw new Error("Parameter `index` is required when calling `getUsersCount`.");let n="/2/users/count",i={},u={};e!==void 0&&(u.index=e.toString()),r!==void 0&&(u.startDate=r.toString()),a!==void 0&&(u.endDate=a.toString()),s!==void 0&&(u.tags=s.toString());let q={method:"GET",path:n,queryParameters:u,headers:i};return t.request(q,o)}}}function he(c,d,l,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!d||typeof d!="string")throw new Error("`apiKey` is missing.");if(l&&(typeof l!="string"||!ce.includes(l)))throw new Error(`\`region\` must be one of the following: ${ce.join(", ")}`);let{compression:P,...p}=m||{};return Je({appId:c,apiKey:d,region:l,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:S(),requestsCache:S({serializable:!1}),hostsCache:T({caches:[I({key:`${ue}-${c}`}),S()]}),...p})}var le="5.53.0",de=["de","us"];function Ke(c){return[{url:c?"insights.{region}.algolia.io".replace("{region}",c):"insights.algolia.io",accept:"readWrite",protocol:"https"}]}function Xe({appId:c,apiKey:d,authMode:l,algoliaAgents:m,region:P,...p}){let h=R(c,d,l),t=b({hosts:Ke(P),...p,algoliaAgent:C({algoliaAgents:m,client:"Insights",version:le}),baseHeaders:{"content-type":"text/plain",...h.headers(),...p.baseHeaders},baseQueryParameters:{...h.queryParameters(),...p.baseQueryParameters}});return{transporter:t,appId:c,apiKey:d,clearCache(){return Promise.all([t.requestsCache.clear(),t.responsesCache.clear()]).then(()=>{})},get _ua(){return t.algoliaAgent.value},addAlgoliaAgent(e,r){t.algoliaAgent.add({segment:e,version:r})},setClientApiKey({apiKey:e}){!l||l==="WithinHeaders"?t.baseHeaders["x-algolia-api-key"]=e:t.baseQueryParameters["x-algolia-api-key"]=e},customDelete({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let i={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customGet({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let i={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customPost({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let u={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},customPut({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let u={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},deleteUserToken({userToken:e},r){if(!e)throw new Error("Parameter `userToken` is required when calling `deleteUserToken`.");let n={method:"DELETE",path:"/1/usertokens/{userToken}".replace("{userToken}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},pushEvents(e,r){if(!e)throw new Error("Parameter `insightsEvents` is required when calling `pushEvents`.");if(!e.events)throw new Error("Parameter `insightsEvents.events` is required when calling `pushEvents`.");let n={method:"POST",path:"/1/events",queryParameters:{},headers:{},data:e};return t.request(n,r)}}}function me(c,d,l,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!d||typeof d!="string")throw new Error("`apiKey` is missing.");if(l&&(typeof l!="string"||!de.includes(l)))throw new Error(`\`region\` must be one of the following: ${de.join(", ")}`);let{compression:P,...p}=m||{};return Xe({appId:c,apiKey:d,region:l,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:S(),requestsCache:S({serializable:!1}),hostsCache:T({caches:[I({key:`${le}-${c}`}),S()]}),...p})}var ge="5.53.0",qe=["eu","us"];function Ye(c){return[{url:"personalization.{region}.algolia.com".replace("{region}",c),accept:"readWrite",protocol:"https"}]}function Ze({appId:c,apiKey:d,authMode:l,algoliaAgents:m,region:P,...p}){let h=R(c,d,l),t=b({hosts:Ye(P),...p,algoliaAgent:C({algoliaAgents:m,client:"Personalization",version:ge}),baseHeaders:{"content-type":"text/plain",...h.headers(),...p.baseHeaders},baseQueryParameters:{...h.queryParameters(),...p.baseQueryParameters}});return{transporter:t,appId:c,apiKey:d,clearCache(){return Promise.all([t.requestsCache.clear(),t.responsesCache.clear()]).then(()=>{})},get _ua(){return t.algoliaAgent.value},addAlgoliaAgent(e,r){t.algoliaAgent.add({segment:e,version:r})},setClientApiKey({apiKey:e}){!l||l==="WithinHeaders"?t.baseHeaders["x-algolia-api-key"]=e:t.baseQueryParameters["x-algolia-api-key"]=e},customDelete({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let i={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customGet({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let i={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customPost({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let u={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},customPut({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let u={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},deleteUserProfile({userToken:e},r){if(!e)throw new Error("Parameter `userToken` is required when calling `deleteUserProfile`.");let n={method:"DELETE",path:"/1/profiles/{userToken}".replace("{userToken}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},getPersonalizationStrategy(e){let o={method:"GET",path:"/1/strategies/personalization",queryParameters:{},headers:{}};return t.request(o,e)},getUserTokenProfile({userToken:e},r){if(!e)throw new Error("Parameter `userToken` is required when calling `getUserTokenProfile`.");let n={method:"GET",path:"/1/profiles/personalization/{userToken}".replace("{userToken}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},setPersonalizationStrategy(e,r){if(!e)throw new Error("Parameter `personalizationStrategyParams` is required when calling `setPersonalizationStrategy`.");if(!e.eventsScoring)throw new Error("Parameter `personalizationStrategyParams.eventsScoring` is required when calling `setPersonalizationStrategy`.");if(!e.facetsScoring)throw new Error("Parameter `personalizationStrategyParams.facetsScoring` is required when calling `setPersonalizationStrategy`.");if(!e.personalizationImpact)throw new Error("Parameter `personalizationStrategyParams.personalizationImpact` is required when calling `setPersonalizationStrategy`.");let n={method:"POST",path:"/1/strategies/personalization",queryParameters:{},headers:{},data:e};return t.request(n,r)}}}function Pe(c,d,l,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!d||typeof d!="string")throw new Error("`apiKey` is missing.");if(!l||l&&(typeof l!="string"||!qe.includes(l)))throw new Error(`\`region\` is required and must be one of the following: ${qe.join(", ")}`);let{compression:P,...p}=m||{};return Ze({appId:c,apiKey:d,region:l,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:S(),requestsCache:S({serializable:!1}),hostsCache:T({caches:[I({key:`${ge}-${c}`}),S()]}),...p})}var we="5.53.0",pe=["eu","us"];function er(c){return[{url:"query-suggestions.{region}.algolia.com".replace("{region}",c),accept:"readWrite",protocol:"https"}]}function rr({appId:c,apiKey:d,authMode:l,algoliaAgents:m,region:P,...p}){let h=R(c,d,l),t=b({hosts:er(P),...p,algoliaAgent:C({algoliaAgents:m,client:"QuerySuggestions",version:we}),baseHeaders:{"content-type":"text/plain",...h.headers(),...p.baseHeaders},baseQueryParameters:{...h.queryParameters(),...p.baseQueryParameters}});return{transporter:t,appId:c,apiKey:d,clearCache(){return Promise.all([t.requestsCache.clear(),t.responsesCache.clear()]).then(()=>{})},get _ua(){return t.algoliaAgent.value},addAlgoliaAgent(e,r){t.algoliaAgent.add({segment:e,version:r})},setClientApiKey({apiKey:e}){!l||l==="WithinHeaders"?t.baseHeaders["x-algolia-api-key"]=e:t.baseQueryParameters["x-algolia-api-key"]=e},createConfig(e,r){if(!e)throw new Error("Parameter `configurationWithIndex` is required when calling `createConfig`.");let n={method:"POST",path:"/1/configs",queryParameters:{},headers:{},data:e};return t.request(n,r)},customDelete({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let i={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customGet({path:e,parameters:r},a){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let i={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{}};return t.request(i,a)},customPost({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let u={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},customPut({path:e,parameters:r,body:a},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let u={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(u,s)},deleteConfig({indexName:e},r){if(!e)throw new Error("Parameter `indexName` is required when calling `deleteConfig`.");let n={method:"DELETE",path:"/1/configs/{indexName}".replace("{indexName}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},getAllConfigs(e){let o={method:"GET",path:"/1/configs",queryParameters:{},headers:{}};return t.request(o,e)},getConfig({indexName:e},r){if(!e)throw new Error("Parameter `indexName` is required when calling `getConfig`.");let n={method:"GET",path:"/1/configs/{indexName}".replace("{indexName}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},getConfigStatus({indexName:e},r){if(!e)throw new Error("Parameter `indexName` is required when calling `getConfigStatus`.");let n={method:"GET",path:"/1/configs/{indexName}/status".replace("{indexName}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},getLogFile({indexName:e},r){if(!e)throw new Error("Parameter `indexName` is required when calling `getLogFile`.");let n={method:"GET",path:"/1/logs/{indexName}".replace("{indexName}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)},updateConfig({indexName:e,configuration:r},a){if(!e)throw new Error("Parameter `indexName` is required when calling `updateConfig`.");if(!r)throw new Error("Parameter `configuration` is required when calling `updateConfig`.");if(!r.sourceIndices)throw new Error("Parameter `configuration.sourceIndices` is required when calling `updateConfig`.");let i={method:"PUT",path:"/1/configs/{indexName}".replace("{indexName}",encodeURIComponent(e)),queryParameters:{},headers:{},data:r};return t.request(i,a)}}}function fe(c,d,l,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!d||typeof d!="string")throw new Error("`apiKey` is missing.");if(!l||l&&(typeof l!="string"||!pe.includes(l)))throw new Error(`\`region\` is required and must be one of the following: ${pe.join(", ")}`);let{compression:P,...p}=m||{};return rr({appId:c,apiKey:d,region:l,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:D(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:S(),requestsCache:S({serializable:!1}),hostsCache:T({caches:[I({key:`${we}-${c}`}),S()]}),...p})}var V="5.53.0";function tr(c){return[{url:`${c}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${c}.algolia.net`,accept:"write",protocol:"https"}].concat(F([{url:`${c}-1.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${c}-2.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${c}-3.algolianet.com`,accept:"readWrite",protocol:"https"}]))}function ar({appId:c,apiKey:d,authMode:l,algoliaAgents:m,...P}){let p=R(c,d,l),h=b({hosts:tr(c),...P,algoliaAgent:C({algoliaAgents:m,client:"Search",version:V}),baseHeaders:{"content-type":"text/plain",...p.headers(),...P.baseHeaders},baseQueryParameters:{...p.queryParameters(),...P.baseQueryParameters}});return{transporter:h,appId:c,apiKey:d,clearCache(){return Promise.all([h.requestsCache.clear(),h.responsesCache.clear()]).then(()=>{})},get _ua(){return h.algoliaAgent.value},addAlgoliaAgent(t,e){h.algoliaAgent.add({segment:t,version:e})},setClientApiKey({apiKey:t}){!l||l==="WithinHeaders"?h.baseHeaders["x-algolia-api-key"]=t:h.baseQueryParameters["x-algolia-api-key"]=t},waitForTask({indexName:t,taskID:e,maxRetries:r=100,timeout:a=o=>Math.min(o*200,5e3)},s){let o=0;return x({func:()=>this.getTask({indexName:t,taskID:e},s),validate:n=>n.status==="published",aggregator:()=>o+=1,error:{validate:()=>o>=r,message:()=>`Stopped waiting for the task after ${r} retries. This does not mean the operation failed; it may still complete. If you need to keep polling, retry with a higher maxRetries.`},timeout:()=>a(o)})},waitForAppTask({taskID:t,maxRetries:e=100,timeout:r=s=>Math.min(s*200,5e3)},a){let s=0;return x({func:()=>this.getAppTask({taskID:t},a),validate:o=>o.status==="published",aggregator:()=>s+=1,error:{validate:()=>s>=e,message:()=>`Stopped waiting for the task after ${e} retries. This does not mean the operation failed; it may still complete. If you need to keep polling, retry with a higher maxRetries.`},timeout:()=>r(s)})},waitForApiKey({operation:t,key:e,apiKey:r,maxRetries:a=100,timeout:s=n=>Math.min(n*200,5e3)},o){let n=0,i={aggregator:()=>n+=1,error:{validate:()=>n>=a,message:()=>`Stopped waiting for the API key operation after ${a} retries. This does not mean the operation failed; it may still complete. If you need to keep polling, retry with a higher maxRetries.`},timeout:()=>s(n)};if(t==="update"){if(!r)throw new Error("`apiKey` is required when waiting for an `update` operation.");return x({...i,func:()=>this.getApiKey({key:e},o),validate:u=>{for(let q of Object.keys(r)){let g=r[q],w=u[q];if(Array.isArray(g)&&Array.isArray(w)){if(g.length!==w.length||g.some((E,f)=>E!==w[f]))return!1}else if(g!==w)return!1}return!0}})}return x({...i,func:()=>this.getApiKey({key:e},o).catch(u=>{if(u.status!==404)throw u}),validate:u=>t==="add"?u!==void 0:u===void 0})},browseObjects({indexName:t,browseParams:e,...r},a){return x({func:s=>this.browse({indexName:t,browseParams:{cursor:s?s.cursor:void 0,hitsPerPage:1e3,...e}},a),validate:s=>s.cursor===void 0,...r})},browseRules({indexName:t,searchRulesParams:e,...r},a){let s={...e,hitsPerPage:e?.hitsPerPage||1e3};return x({func:o=>this.searchRules({indexName:t,searchRulesParams:{...s,page:o?o.page+1:s.page||0}},a),validate:o=>o.hits.length<s.hitsPerPage,...r})},browseSynonyms({indexName:t,searchSynonymsParams:e,...r},a){let s={...e,page:e?.page||0,hitsPerPage:1e3};return x({func:o=>{let n=this.searchSynonyms({indexName:t,searchSynonymsParams:{...s,page:s.page}},a);return s.page+=1,n},validate:o=>o.hits.length<s.hitsPerPage,...r})},async chunkedBatch({indexName:t,objects:e,action:r="addObject",waitForTasks:a,batchSize:s=1e3,maxRetries:o=100},n){let i=[],u=[],q=e.entries();for(let[g,w]of q)i.push({action:r,body:w}),(i.length===s||g===e.length-1)&&(u.push(await this.batch({indexName:t,batchWriteParams:{requests:i}},n)),i=[]);if(a)for(let g of u)await this.waitForTask({indexName:t,taskID:g.taskID,maxRetries:o});return u},async saveObjects({indexName:t,objects:e,waitForTasks:r,batchSize:a,maxRetries:s},o){return await this.chunkedBatch({indexName:t,objects:e,action:"addObject",waitForTasks:r,batchSize:a,maxRetries:s},o)},async deleteObjects({indexName:t,objectIDs:e,waitForTasks:r,batchSize:a,maxRetries:s},o){return await this.chunkedBatch({indexName:t,objects:e.map(n=>({objectID:n})),action:"deleteObject",waitForTasks:r,batchSize:a,maxRetries:s},o)},async partialUpdateObjects({indexName:t,objects:e,createIfNotExists:r,waitForTasks:a,batchSize:s,maxRetries:o},n){return await this.chunkedBatch({indexName:t,objects:e,action:r?"partialUpdateObject":"partialUpdateObjectNoCreate",batchSize:s,waitForTasks:a,maxRetries:o},n)},async replaceAllObjects({indexName:t,objects:e,batchSize:r,scopes:a,maxRetries:s=100},o){let n=Math.floor(Math.random()*1e6)+1e5,i=`${t}_tmp_${n}`;a===void 0&&(a=["settings","rules","synonyms"]);try{let u=await this.operationIndex({indexName:t,operationIndexParams:{operation:"copy",destination:i,scope:a}},o),q=await this.chunkedBatch({indexName:i,objects:e,waitForTasks:!0,batchSize:r,maxRetries:s},o);await this.waitForTask({indexName:i,taskID:u.taskID,maxRetries:s}),u=await this.operationIndex({indexName:t,operationIndexParams:{operation:"copy",destination:i,scope:a}},o),await this.waitForTask({indexName:i,taskID:u.taskID,maxRetries:s});let g=await this.operationIndex({indexName:i,operationIndexParams:{operation:"move",destination:t}},o);return await this.waitForTask({indexName:i,taskID:g.taskID,maxRetries:s}),{copyOperationResponse:u,batchResponses:q,moveOperationResponse:g}}catch(u){throw await this.deleteIndex({indexName:i}),u}},async indexExists({indexName:t}){try{await this.getSettings({indexName:t})}catch(e){if(e instanceof j&&e.status===404)return!1;throw e}return!0},searchForHits(t,e){return this.search(t,e)},searchForFacets(t,e){return this.search(t,e)},addApiKey(t,e){if(!t)throw new Error("Parameter `apiKey` is required when calling `addApiKey`.");if(!t.acl)throw new Error("Parameter `apiKey.acl` is required when calling `addApiKey`.");let o={method:"POST",path:"/1/keys",queryParameters:{},headers:{},data:t};return h.request(o,e)},addOrUpdateObject({indexName:t,objectID:e,body:r},a){if(!t)throw new Error("Parameter `indexName` is required when calling `addOrUpdateObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `addOrUpdateObject`.");if(!r)throw new Error("Parameter `body` is required when calling `addOrUpdateObject`.");let i={method:"PUT",path:"/1/indexes/{indexName}/{objectID}".replace("{indexName}",encodeURIComponent(t)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{},data:r};return h.request(i,a)},appendSource(t,e){if(!t)throw new Error("Parameter `source` is required when calling `appendSource`.");if(!t.source)throw new Error("Parameter `source.source` is required when calling `appendSource`.");let o={method:"POST",path:"/1/security/sources/append",queryParameters:{},headers:{},data:t};return h.request(o,e)},assignUserId({xAlgoliaUserID:t,assignUserIdParams:e},r){if(!t)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={},o={};t!==void 0&&(s["X-Algolia-User-ID"]=t.toString());let n={method:"POST",path:a,queryParameters:o,headers:s,data:e};return h.request(n,r)},batch({indexName:t,batchWriteParams:e},r){if(!t)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 n={method:"POST",path:"/1/indexes/{indexName}/batch".replace("{indexName}",encodeURIComponent(t)),queryParameters:{},headers:{},data:e};return h.request(n,r)},batchAssignUserIds({xAlgoliaUserID:t,batchAssignUserIdsParams:e},r){if(!t)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={},o={};t!==void 0&&(s["X-Algolia-User-ID"]=t.toString());let n={method:"POST",path:a,queryParameters:o,headers:s,data:e};return h.request(n,r)},batchDictionaryEntries({dictionaryName:t,batchDictionaryEntriesParams:e},r){if(!t)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 n={method:"POS