UNPKG

algoliasearch

Version:

A fully-featured and blazing-fast JavaScript API client to interact with Algolia API.

1 lines 99.3 kB
function v(){function c(u){return new Promise(d=>{let m=new XMLHttpRequest;m.open(u.method,u.url,!0),Object.keys(u.headers).forEach(t=>m.setRequestHeader(t,u.headers[t]));let q=(t,e)=>setTimeout(()=>{m.abort(),d({status:0,content:e,isTimedOut:!0})},t),f=q(u.connectTimeout,"Connection timeout"),l;m.onreadystatechange=()=>{m.readyState>m.OPENED&&l===void 0&&(clearTimeout(f),l=q(u.responseTimeout,"Socket timeout"))},m.onerror=()=>{m.status===0&&(clearTimeout(f),clearTimeout(l),d({content:m.responseText||"Network request failed",status:m.status,isTimedOut:!1}))},m.onload=()=>{clearTimeout(f),clearTimeout(l),d({content:m.responseText,status:m.status,isTimedOut:!1})},m.send(u.data)})}return{send:c}}function R(c){let u,d=`algolia-client-js-${c.key}`;function m(){return u===void 0&&(u=c.localStorage||window.localStorage),u}function q(){return JSON.parse(m().getItem(d)||"{}")}function f(t){m().setItem(d,JSON.stringify(t))}function l(){let t=c.timeToLive?c.timeToLive*1e3:null,e=q(),r=Object.fromEntries(Object.entries(e).filter(([,s])=>s.timestamp!==void 0));if(f(r),!t)return;let a=Object.fromEntries(Object.entries(r).filter(([,s])=>{let o=new Date().getTime();return!(s.timestamp+t<o)}));f(a)}return{get(t,e,r={miss:()=>Promise.resolve()}){return Promise.resolve().then(()=>(l(),q()[JSON.stringify(t)])).then(a=>Promise.all([a?a.value:e(),a!==void 0])).then(([a,s])=>Promise.all([a,s||r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve().then(()=>{let r=q();return r[JSON.stringify(t)]={timestamp:new Date().getTime(),value:e},m().setItem(d,JSON.stringify(r)),e})},delete(t){return Promise.resolve().then(()=>{let e=q();delete e[JSON.stringify(t)],m().setItem(d,JSON.stringify(e))})},clear(){return Promise.resolve().then(()=>{m().removeItem(d)})}}}function ye(){return{get(c,u,d={miss:()=>Promise.resolve()}){return u().then(q=>Promise.all([q,d.miss(q)])).then(([q])=>q)},set(c,u){return Promise.resolve(u)},delete(c){return Promise.resolve()},clear(){return Promise.resolve()}}}function T(c){let u=[...c.caches],d=u.shift();return d===void 0?ye():{get(m,q,f={miss:()=>Promise.resolve()}){return d.get(m,q,f).catch(()=>T({caches:u}).get(m,q,f))},set(m,q){return d.set(m,q).catch(()=>T({caches:u}).set(m,q))},delete(m){return d.delete(m).catch(()=>T({caches:u}).delete(m))},clear(){return d.clear().catch(()=>T({caches:u}).clear())}}}function E(c={serializable:!0}){let u={};return{get(d,m,q={miss:()=>Promise.resolve()}){let f=JSON.stringify(d);if(f in u)return Promise.resolve(c.serializable?JSON.parse(u[f]):u[f]);let l=m();return l.then(t=>q.miss(t)).then(()=>l)},set(d,m){return u[JSON.stringify(d)]=c.serializable?JSON.stringify(m):m,Promise.resolve(m)},delete(d){return delete u[JSON.stringify(d)],Promise.resolve()},clear(){return u={},Promise.resolve()}}}function Ee(c){let u={value:`Algolia for JavaScript (${c})`,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(c,u,d="WithinHeaders"){let m={"x-algolia-api-key":u,"x-algolia-application-id":c};return{headers(){return d==="WithinHeaders"?m:{}},queryParameters(){return d==="WithinQueryParameters"?m:{}}}}function U({func:c,validate:u,aggregator:d,error:m,timeout:q=()=>0}){let f=l=>new Promise((t,e)=>{c(l).then(async r=>(d&&await d(r),await u(r)?t(r):m&&await m.validate(r)?e(new Error(await m.message(r))):setTimeout(()=>{f(r).then(t).catch(e)},await q()))).catch(r=>{e(r)})});return f()}function C({algoliaAgents:c,client:u,version:d}){let m=Ee(d).add({segment:u,version:d});return c.forEach(q=>m.add(q)),m}function A(){return{debug(c,u){return Promise.resolve()},info(c,u){return Promise.resolve()},error(c,u){return Promise.resolve()}}}var V=2*60*1e3;function _(c,u="up"){let d=Date.now();function m(){return u==="up"||Date.now()-d>V}function q(){return u==="timed out"&&Date.now()-d<=V}return{...c,status:u,lastUpdate:d,isUp:m,isTimedOut:q}}var M=class extends Error{name="AlgoliaError";constructor(c,u){super(c),u&&(this.name=u)}},K=class extends M{stackTrace;constructor(c,u,d){super(c,d),this.stackTrace=u}},Se=class extends K{constructor(c){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.",c,"RetryError")}},N=class extends K{status;constructor(c,u,d,m="ApiError"){super(c,d,m),this.status=u}},Te=class extends M{response;constructor(c,u){super(c,"DeserializationError"),this.response=u}},ve=class extends N{error;constructor(c,u,d,m){super(c,u,m,"DetailedApiError"),this.error=d}};function G(c){let u=c;for(let d=c.length-1;d>0;d--){let m=Math.floor(Math.random()*(d+1)),q=c[d];u[d]=c[m],u[m]=q}return u}function Re(c,u,d){let m=Ie(d),q=`${c.protocol}://${c.url}${c.port?`:${c.port}`:""}/${u.charAt(0)==="/"?u.substring(1):u}`;return m.length&&(q+=`?${m}`),q}function Ie(c){return Object.keys(c).filter(u=>c[u]!==void 0).sort().map(u=>`${u}=${encodeURIComponent(Object.prototype.toString.call(c[u])==="[object Array]"?c[u].join(","):c[u]).replace(/\+/g,"%20")}`).join("&")}function Ce(c,u){if(c.method==="GET"||c.data===void 0&&u.data===void 0)return;let d=Array.isArray(c.data)?c.data:{...c.data,...u.data};return JSON.stringify(d)}function Ae(c,u,d){let m={Accept:"application/json",...c,...u,...d},q={};return Object.keys(m).forEach(f=>{let l=m[f];q[f.toLowerCase()]=l}),q}function be(c){try{return JSON.parse(c.content)}catch(u){throw new Te(u.message,c)}}function De({content:c,status:u},d){try{let m=JSON.parse(c);return"error"in m?new ve(m.message,u,m.error,d):new N(m.message,u,d)}catch{}return new N(c,u,d)}function ke({isTimedOut:c,status:u}){return!c&&~~u===0}function xe({isTimedOut:c,status:u}){return c||ke({isTimedOut:c,status:u})||~~(u/100)!==2&&~~(u/100)!==4}function Ue({status:c}){return~~(c/100)===2}function Oe(c){return c.map(u=>J(u))}function J(c){let u=c.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...c,request:{...c.request,headers:{...c.request.headers,...u}}}}function b({hosts:c,hostsCache:u,baseHeaders:d,logger:m,baseQueryParameters:q,algoliaAgent:f,timeouts:l,requester:t,requestsCache:e,responsesCache:r}){async function a(n){let i=await Promise.all(n.map(y=>u.get(y,()=>Promise.resolve(_(y))))),h=i.filter(y=>y.isUp()),g=i.filter(y=>y.isTimedOut()),P=[...h,...g];return{hosts:P.length>0?P:n,getTimeout(y,w){return(g.length===0&&y===0?1:g.length+3+y)*w}}}async function s(n,i,h=!0){let g=[],P=Ce(n,i),p=Ae(d,n.headers,i.headers),y=n.method==="GET"?{...n.data,...i.data}:{},w={...q,...n.queryParameters,...y};if(f.value&&(w["x-algolia-agent"]=f.value),i&&i.queryParameters)for(let k of Object.keys(i.queryParameters))!i.queryParameters[k]||Object.prototype.toString.call(i.queryParameters[k])==="[object Object]"?w[k]=i.queryParameters[k]:w[k]=i.queryParameters[k].toString();let S=0,D=async(k,B)=>{let O=k.pop();if(O===void 0)throw new Se(Oe(g));let F={...l,...i.timeouts},W={data:P,headers:p,method:n.method,url:Re(O,n.path,w),connectTimeout:B(S,F.connect),responseTimeout:B(S,h?F.read:F.write)},$=L=>{let z={request:W,response:L,host:O,triesLeft:k.length};return g.push(z),z},x=await t.send(W);if(xe(x)){let L=$(x);return x.isTimedOut&&S++,m.info("Retryable failure",J(L)),await u.set(O,_(O,x.isTimedOut?"timed out":"down")),D(k,B)}if(Ue(x))return be(x);throw $(x),De(x,g)},j=c.filter(k=>k.accept==="readWrite"||(h?k.accept==="read":k.accept==="write")),Q=await a(j);return D([...Q.hosts].reverse(),Q.getTimeout)}function o(n,i={}){let h=n.useReadTransporter||n.method==="GET";if(!h)return s(n,i,h);let g=()=>s(n,i);if((i.cacheable||n.cacheable)!==!0)return g();let p={request:n,requestOptions:i,transporter:{queryParameters:q,headers:d}};return r.get(p,()=>e.get(p,()=>e.set(p,g()).then(y=>Promise.all([e.delete(p),y]),y=>Promise.all([e.delete(p),Promise.reject(y)])).then(([y,w])=>w)),{miss:y=>r.set(p,y)})}return{hostsCache:u,requester:t,timeouts:l,logger:m,algoliaAgent:f,baseHeaders:d,baseQueryParameters:q,hosts:c,request:o,requestsCache:e,responsesCache:r}}var Y="5.23.4",X=["de","us"];function Ne(c){return[{url:c?"analytics.{region}.algolia.com".replace("{region}",c):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function Ge({appId:c,apiKey:u,authMode:d,algoliaAgents:m,region:q,...f}){let l=I(c,u,d),t=b({hosts:Ne(q),...f,algoliaAgent:C({algoliaAgents:m,client:"Abtesting",version:Y}),baseHeaders:{"content-type":"text/plain",...l.headers(),...f.baseHeaders},baseQueryParameters:{...l.queryParameters(),...f.baseQueryParameters}});return{transporter:t,appId:c,apiKey:u,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}){!d||d==="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 h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(h,s)},customPut({path:e,parameters:r,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:r||{},headers:{},data:a||{}};return t.request(h,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={},h={};e!==void 0&&(h.offset=e.toString()),r!==void 0&&(h.limit=r.toString()),a!==void 0&&(h.indexPrefix=a.toString()),s!==void 0&&(h.indexSuffix=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,o)},scheduleABTest(e,r){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 n={method:"POST",path:"/2/abtests/schedule",queryParameters:{},headers:{},data:e};return t.request(n,r)},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 Z(c,u,d,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!X.includes(d)))throw new Error(`\`region\` must be one of the following: ${X.join(", ")}`);return Ge({appId:c,apiKey:u,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:T({caches:[R({key:`${Y}-${c}`}),E()]}),...m})}var re="5.23.4",ee=["de","us"];function je(c){return[{url:c?"analytics.{region}.algolia.com".replace("{region}",c):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function Be({appId:c,apiKey:u,authMode:d,algoliaAgents:m,region:q,...f}){let l=I(c,u,d),t=b({hosts:je(q),...f,algoliaAgent:C({algoliaAgents:m,client:"Analytics",version:re}),baseHeaders:{"content-type":"text/plain",...l.headers(),...f.baseHeaders},baseQueryParameters:{...l.queryParameters(),...f.baseQueryParameters}});return{transporter:t,appId:c,apiKey:u,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}){!d||d==="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 h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(h,s)},customPut({path:e,parameters:r,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:r||{},headers:{},data:a||{}};return t.request(h,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,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 h="/2/searches/noClicks",g={},P={};e!==void 0&&(P.index=e.toString()),r!==void 0&&(P.startDate=r.toString()),a!==void 0&&(P.endDate=a.toString()),s!==void 0&&(P.limit=s.toString()),o!==void 0&&(P.offset=o.toString()),n!==void 0&&(P.tags=n.toString());let p={method:"GET",path:h,queryParameters:P,headers:g};return t.request(p,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 h="/2/searches/noResults",g={},P={};e!==void 0&&(P.index=e.toString()),r!==void 0&&(P.startDate=r.toString()),a!==void 0&&(P.endDate=a.toString()),s!==void 0&&(P.limit=s.toString()),o!==void 0&&(P.offset=o.toString()),n!==void 0&&(P.tags=n.toString());let p={method:"GET",path:h,queryParameters:P,headers:g};return t.request(p,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 h="/2/countries",g={},P={};e!==void 0&&(P.index=e.toString()),r!==void 0&&(P.startDate=r.toString()),a!==void 0&&(P.endDate=a.toString()),s!==void 0&&(P.limit=s.toString()),o!==void 0&&(P.offset=o.toString()),n!==void 0&&(P.tags=n.toString());let p={method:"GET",path:h,queryParameters:P,headers:g};return t.request(p,i)},getTopFilterAttributes({index:e,search:r,startDate:a,endDate:s,limit:o,offset:n,tags:i},h){if(!e)throw new Error("Parameter `index` is required when calling `getTopFilterAttributes`.");let g="/2/filters",P={},p={};e!==void 0&&(p.index=e.toString()),r!==void 0&&(p.search=r.toString()),a!==void 0&&(p.startDate=a.toString()),s!==void 0&&(p.endDate=s.toString()),o!==void 0&&(p.limit=o.toString()),n!==void 0&&(p.offset=n.toString()),i!==void 0&&(p.tags=i.toString());let y={method:"GET",path:g,queryParameters:p,headers:P};return t.request(y,h)},getTopFilterForAttribute({attribute:e,index:r,search:a,startDate:s,endDate:o,limit:n,offset:i,tags:h},g){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 P="/2/filters/{attribute}".replace("{attribute}",encodeURIComponent(e)),p={},y={};r!==void 0&&(y.index=r.toString()),a!==void 0&&(y.search=a.toString()),s!==void 0&&(y.startDate=s.toString()),o!==void 0&&(y.endDate=o.toString()),n!==void 0&&(y.limit=n.toString()),i!==void 0&&(y.offset=i.toString()),h!==void 0&&(y.tags=h.toString());let w={method:"GET",path:P,queryParameters:y,headers:p};return t.request(w,g)},getTopFiltersNoResults({index:e,search:r,startDate:a,endDate:s,limit:o,offset:n,tags:i},h){if(!e)throw new Error("Parameter `index` is required when calling `getTopFiltersNoResults`.");let g="/2/filters/noResults",P={},p={};e!==void 0&&(p.index=e.toString()),r!==void 0&&(p.search=r.toString()),a!==void 0&&(p.startDate=a.toString()),s!==void 0&&(p.endDate=s.toString()),o!==void 0&&(p.limit=o.toString()),n!==void 0&&(p.offset=n.toString()),i!==void 0&&(p.tags=i.toString());let y={method:"GET",path:g,queryParameters:p,headers:P};return t.request(y,h)},getTopHits({index:e,search:r,clickAnalytics:a,revenueAnalytics:s,startDate:o,endDate:n,limit:i,offset:h,tags:g},P){if(!e)throw new Error("Parameter `index` is required when calling `getTopHits`.");let p="/2/hits",y={},w={};e!==void 0&&(w.index=e.toString()),r!==void 0&&(w.search=r.toString()),a!==void 0&&(w.clickAnalytics=a.toString()),s!==void 0&&(w.revenueAnalytics=s.toString()),o!==void 0&&(w.startDate=o.toString()),n!==void 0&&(w.endDate=n.toString()),i!==void 0&&(w.limit=i.toString()),h!==void 0&&(w.offset=h.toString()),g!==void 0&&(w.tags=g.toString());let S={method:"GET",path:p,queryParameters:w,headers:y};return t.request(S,P)},getTopSearches({index:e,clickAnalytics:r,revenueAnalytics:a,startDate:s,endDate:o,orderBy:n,direction:i,limit:h,offset:g,tags:P},p){if(!e)throw new Error("Parameter `index` is required when calling `getTopSearches`.");let y="/2/searches",w={},S={};e!==void 0&&(S.index=e.toString()),r!==void 0&&(S.clickAnalytics=r.toString()),a!==void 0&&(S.revenueAnalytics=a.toString()),s!==void 0&&(S.startDate=s.toString()),o!==void 0&&(S.endDate=o.toString()),n!==void 0&&(S.orderBy=n.toString()),i!==void 0&&(S.direction=i.toString()),h!==void 0&&(S.limit=h.toString()),g!==void 0&&(S.offset=g.toString()),P!==void 0&&(S.tags=P.toString());let D={method:"GET",path:y,queryParameters:S,headers:w};return t.request(D,p)},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={},h={};e!==void 0&&(h.index=e.toString()),r!==void 0&&(h.startDate=r.toString()),a!==void 0&&(h.endDate=a.toString()),s!==void 0&&(h.tags=s.toString());let g={method:"GET",path:n,queryParameters:h,headers:i};return t.request(g,o)}}}function te(c,u,d,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!ee.includes(d)))throw new Error(`\`region\` must be one of the following: ${ee.join(", ")}`);return Be({appId:c,apiKey:u,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:T({caches:[R({key:`${re}-${c}`}),E()]}),...m})}var se="5.23.4",ae=["de","us"];function Fe(c){return[{url:c?"insights.{region}.algolia.io".replace("{region}",c):"insights.algolia.io",accept:"readWrite",protocol:"https"}]}function Le({appId:c,apiKey:u,authMode:d,algoliaAgents:m,region:q,...f}){let l=I(c,u,d),t=b({hosts:Fe(q),...f,algoliaAgent:C({algoliaAgents:m,client:"Insights",version:se}),baseHeaders:{"content-type":"text/plain",...l.headers(),...f.baseHeaders},baseQueryParameters:{...l.queryParameters(),...f.baseQueryParameters}});return{transporter:t,appId:c,apiKey:u,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}){!d||d==="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 h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(h,s)},customPut({path:e,parameters:r,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:r||{},headers:{},data:a||{}};return t.request(h,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 ne(c,u,d,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!ae.includes(d)))throw new Error(`\`region\` must be one of the following: ${ae.join(", ")}`);return Le({appId:c,apiKey:u,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:T({caches:[R({key:`${se}-${c}`}),E()]}),...m})}var ie="5.23.4",oe=["eu","us"];function He(c){return[{url:"personalization.{region}.algolia.com".replace("{region}",c),accept:"readWrite",protocol:"https"}]}function Qe({appId:c,apiKey:u,authMode:d,algoliaAgents:m,region:q,...f}){let l=I(c,u,d),t=b({hosts:He(q),...f,algoliaAgent:C({algoliaAgents:m,client:"Personalization",version:ie}),baseHeaders:{"content-type":"text/plain",...l.headers(),...f.baseHeaders},baseQueryParameters:{...l.queryParameters(),...f.baseQueryParameters}});return{transporter:t,appId:c,apiKey:u,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}){!d||d==="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 h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(h,s)},customPut({path:e,parameters:r,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:r||{},headers:{},data:a||{}};return t.request(h,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 ce(c,u,d,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(!d||d&&(typeof d!="string"||!oe.includes(d)))throw new Error(`\`region\` is required and must be one of the following: ${oe.join(", ")}`);return Qe({appId:c,apiKey:u,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:T({caches:[R({key:`${ie}-${c}`}),E()]}),...m})}var he="5.23.4",ue=["eu","us"];function We(c){return[{url:"query-suggestions.{region}.algolia.com".replace("{region}",c),accept:"readWrite",protocol:"https"}]}function $e({appId:c,apiKey:u,authMode:d,algoliaAgents:m,region:q,...f}){let l=I(c,u,d),t=b({hosts:We(q),...f,algoliaAgent:C({algoliaAgents:m,client:"QuerySuggestions",version:he}),baseHeaders:{"content-type":"text/plain",...l.headers(),...f.baseHeaders},baseQueryParameters:{...l.queryParameters(),...f.baseQueryParameters}});return{transporter:t,appId:c,apiKey:u,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}){!d||d==="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 h={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:r||{},headers:{},data:a||{}};return t.request(h,s)},customPut({path:e,parameters:r,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:r||{},headers:{},data:a||{}};return t.request(h,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 de(c,u,d,m){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!u||typeof u!="string")throw new Error("`apiKey` is missing.");if(!d||d&&(typeof d!="string"||!ue.includes(d)))throw new Error(`\`region\` is required and must be one of the following: ${ue.join(", ")}`);return $e({appId:c,apiKey:u,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:A(),requester:v(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:!1}),hostsCache:T({caches:[R({key:`${he}-${c}`}),E()]}),...m})}var H="5.23.4";function ze(c){return[{url:`${c}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${c}.algolia.net`,accept:"write",protocol:"https"}].concat(G([{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 Ve({appId:c,apiKey:u,authMode:d,algoliaAgents:m,...q}){let f=I(c,u,d),l=b({hosts:ze(c),...q,algoliaAgent:C({algoliaAgents:m,client:"Search",version:H}),baseHeaders:{"content-type":"text/plain",...f.headers(),...q.baseHeaders},baseQueryParameters:{...f.queryParameters(),...q.baseQueryParameters}});return{transporter:l,appId:c,apiKey:u,clearCache(){return Promise.all([l.requestsCache.clear(),l.responsesCache.clear()]).then(()=>{})},get _ua(){return l.algoliaAgent.value},addAlgoliaAgent(t,e){l.algoliaAgent.add({segment:t,version:e})},setClientApiKey({apiKey:t}){!d||d==="WithinHeaders"?l.baseHeaders["x-algolia-api-key"]=t:l.baseQueryParameters["x-algolia-api-key"]=t},waitForTask({indexName:t,taskID:e,maxRetries:r=50,timeout:a=o=>Math.min(o*200,5e3)},s){let o=0;return U({func:()=>this.getTask({indexName:t,taskID:e},s),validate:n=>n.status==="published",aggregator:()=>o+=1,error:{validate:()=>o>=r,message:()=>`The maximum number of retries exceeded. (${o}/${r})`},timeout:()=>a(o)})},waitForAppTask({taskID:t,maxRetries:e=50,timeout:r=s=>Math.min(s*200,5e3)},a){let s=0;return U({func:()=>this.getAppTask({taskID:t},a),validate:o=>o.status==="published",aggregator:()=>s+=1,error:{validate:()=>s>=e,message:()=>`The maximum number of retries exceeded. (${s}/${e})`},timeout:()=>r(s)})},waitForApiKey({operation:t,key:e,apiKey:r,maxRetries:a=50,timeout:s=n=>Math.min(n*200,5e3)},o){let n=0,i={aggregator:()=>n+=1,error:{validate:()=>n>=a,message:()=>`The maximum number of retries exceeded. (${n}/${a})`},timeout:()=>s(n)};if(t==="update"){if(!r)throw new Error("`apiKey` is required when waiting for an `update` operation.");return U({...i,func:()=>this.getApiKey({key:e},o),validate:h=>{for(let g of Object.keys(r)){let P=r[g],p=h[g];if(Array.isArray(P)&&Array.isArray(p)){if(P.length!==p.length||P.some((y,w)=>y!==p[w]))return!1}else if(P!==p)return!1}return!0}})}return U({...i,func:()=>this.getApiKey({key:e},o).catch(h=>{if(h.status!==404)throw h}),validate:h=>t==="add"?h!==void 0:h===void 0})},browseObjects({indexName:t,browseParams:e,...r},a){return U({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={hitsPerPage:1e3,...e};return U({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={page:0,...e,hitsPerPage:1e3};return U({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},o){let n=[],i=[],h=e.entries();for(let[g,P]of h)n.push({action:r,body:P}),(n.length===s||g===e.length-1)&&(i.push(await this.batch({indexName:t,batchWriteParams:{requests:n}},o)),n=[]);if(a)for(let g of i)await this.waitForTask({indexName:t,taskID:g.taskID});return i},async saveObjects({indexName:t,objects:e,waitForTasks:r,batchSize:a},s){return await this.chunkedBatch({indexName:t,objects:e,action:"addObject",waitForTasks:r,batchSize:a},s)},async deleteObjects({indexName:t,objectIDs:e,waitForTasks:r,batchSize:a},s){return await this.chunkedBatch({indexName:t,objects:e.map(o=>({objectID:o})),action:"deleteObject",waitForTasks:r,batchSize:a},s)},async partialUpdateObjects({indexName:t,objects:e,createIfNotExists:r,waitForTasks:a,batchSize:s},o){return await this.chunkedBatch({indexName:t,objects:e,action:r?"partialUpdateObject":"partialUpdateObjectNoCreate",batchSize:s,waitForTasks:a},o)},async replaceAllObjects({indexName:t,objects:e,batchSize:r,scopes:a},s){let o=Math.floor(Math.random()*1e6)+1e5,n=`${t}_tmp_${o}`;a===void 0&&(a=["settings","rules","synonyms"]);try{let i=await this.operationIndex({indexName:t,operationIndexParams:{operation:"copy",destination:n,scope:a}},s),h=await this.chunkedBatch({indexName:n,objects:e,waitForTasks:!0,batchSize:r},s);await this.waitForTask({indexName:n,taskID:i.taskID}),i=await this.operationIndex({indexName:t,operationIndexParams:{operation:"copy",destination:n,scope:a}},s),await this.waitForTask({indexName:n,taskID:i.taskID});let g=await this.operationIndex({indexName:n,operationIndexParams:{operation:"move",destination:t}},s);return await this.waitForTask({indexName:n,taskID:g.taskID}),{copyOperationResponse:i,batchResponses:h,moveOperationResponse:g}}catch(i){throw await this.deleteIndex({indexName:n}),i}},async indexExists({indexName:t}){try{await this.getSettings({indexName:t})}catch(e){if(e instanceof N&&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 l.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 l.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 l.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 l.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 l.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 l.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:"POST",path:"/1/dictionaries/{dictionaryName}/batch".replace("{dictionaryName}",encodeURIComponent(t)),queryParameters:{},headers:{},data:e};return l.request(n,r)},browse({indexName:t,browseParams:e},r){if(!t)throw new Error("Parameter `indexName` is required when calling `browse`.");let n={method:"POST",path:"/1/indexes/{indexName}/browse".replace("{indexName}",encodeURIComponent(t)),queryParameters:{},headers:{},data:e||{},useReadTransporter:!0};return l.request(n,r)},clearObjects({indexName:t},e){if(!t)throw new Error("Parameter `indexName` is required when calling `clearObjects`.");let o={method:"POST",path:"/1/indexes/{indexName}/clear".replace("{indexName}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(o,e)},clearRules({indexName:t,forwardToReplicas:e},r){if(!t)throw new Error("Parameter `indexName` is required when calling `clearRules`.");let a="/1/indexes/{indexName}/rules/clear".replace("{indexName}",encodeURIComponent(t)),s={},o={};e!==void 0&&(o.forwardToReplicas=e.toString());let n={method:"POST",path:a,queryParameters:o,headers:s};return l.request(n,r)},clearSynonyms({indexName:t,forwardToReplicas:e},r){if(!t)throw new Error("Parameter `indexName` is required when calling `clearSynonyms`.");let a="/1/indexes/{indexName}/synonyms/clear".replace("{indexName}",encodeURIComponent(t)),s={},o={};e!==void 0&&(o.forwardToReplicas=e.toString());let n={method:"POST",path:a,queryParameters:o,headers:s};return l.request(n,r)},customDelete({path:t,parameters:e},r){if(!t)throw new Error("Parameter `path` is required when calling `customDelete`.");let n={method:"DELETE",path:"/{path}".replace("{path}",t),queryParameters:e||{},headers:{}};return l.request(n,r)},customGet({path:t,parameters:e},r){if(!t)throw new Error("Parameter `path` is required when calling `customGet`.");let n={method:"GET",path:"/{path}".replace("{path}",t),queryParameters:e||{},headers:{}};return l.request(n,r)},customPost({path:t,parameters:e,body:r},a){if(!t)throw new Error("Parameter `path` is required when calling `customPost`.");let i={method:"POST",path:"/{path}".replace("{path}",t),queryParameters:e||{},headers:{},data:r||{}};return l.request(i,a)},customPut({path:t,parameters:e,body:r},a){if(!t)throw new Error("Parameter `path` is required when calling `customPut`.");let i={method:"PUT",path:"/{path}".replace("{path}",t),queryParameters:e||{},headers:{},data:r||{}};return l.request(i,a)},deleteApiKey({key:t},e){if(!t)throw new Error("Parameter `key` is required when calling `deleteApiKey`.");let o={method:"DELETE",path:"/1/keys/{key}".replace("{key}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(o,e)},deleteBy({indexName:t,deleteByParams:e},r){if(!t)throw new Error("Parameter `indexName` is required when calling `deleteBy`.");if(!e)throw new Error("Parameter `deleteByParams` is required when calling `deleteBy`.");let n={method:"POST",path:"/1/indexes/{indexName}/deleteByQuery".replace("{indexName}",encodeURIComponent(t)),queryParameters:{},headers:{},data:e};return l.request(n,r)},deleteIndex({indexName:t},e){if(!t)throw new Error("Parameter `indexName` is required when calling `deleteIndex`.");let o={method:"DELETE",path:"/1/indexes/{indexName}".replace("{indexName}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(o,e)},deleteObject({indexName:t,objectID:e},r){if(!t)throw new Error("Parameter `indexName` is required when calling `deleteObject`.");if(!e)throw new Error("Parameter `objectID` is required when calling `deleteObject`.");let n={method:"DELETE",path:"/1/indexes/{indexName}/{objectID}".replace("{indexName}",encodeURIComponent(t)).replace("{objectID}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(n,r)},deleteRule({indexName:t,objectID:e,forwardToReplicas:r},a){if(!t)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(t)).replace("{objectID}",encodeURIComponent(e)),o={},n={};r!==void 0&&(n.forwardToReplicas=r.toString());let i={method:"DELETE",path:s,queryParameters:n,headers:o};return l.request(i,a)},deleteSource({source:t},e){if(!t)throw new Error("Parameter `source` is required when calling `deleteSource`.");let o={method:"DELETE",path:"/1/security/sources/{source}".replace("{source}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(o,e)},deleteSynonym({indexName:t,objectID:e,forwardToReplicas:r},a){if(!t)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(t)).replace("{objectID}",encodeURIComponent(e)),o={},n={};r!==void 0&&(n.forwardToReplicas=r.toString());let i={method:"DELETE",path:s,queryParameters:n,headers:o};return l.request(i,a)},getApiKey({key:t},e){if(!t)throw new Error("Parameter `key` is required when calling `getApiKey`.");let o={method:"GET",path:"/1/keys/{key}".replace("{key}",encodeURIComponent(t)),queryParameters:{},headers:{}};return l.request(o,e)},getAppTask({taskID:t},e){if(!t)throw new Error("Parameter `taskID` is requir