UNPKG

algoliasearch

Version:

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

7 lines (6 loc) 109 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.algoliasearch = {})); })(this, (function (exports) { 'use strict'; function R(){function c(h){return new Promise(d=>{let q=new XMLHttpRequest;q.open(h.method,h.url,true),Object.keys(h.headers).forEach(t=>q.setRequestHeader(t,h.headers[t]));let p=(t,e)=>setTimeout(()=>{q.abort(),d({status:0,content:e,isTimedOut:true});},t),m=p(h.connectTimeout,"Connection timeout"),l;q.onreadystatechange=()=>{q.readyState>q.OPENED&&l===void 0&&(clearTimeout(m),l=p(h.responseTimeout,"Socket timeout"));},q.onerror=()=>{q.status===0&&(clearTimeout(m),clearTimeout(l),d({content:q.responseText||"Network request failed",status:q.status,isTimedOut:false}));},q.onload=()=>{clearTimeout(m),clearTimeout(l),d({content:q.responseText,status:q.status,isTimedOut:false});},q.send(h.data);})}return {send:c}}function I(c){let h,d=`algolia-client-js-${c.key}`;function q(){return h===void 0&&(h=c.localStorage||window.localStorage),h}function p(){return JSON.parse(q().getItem(d)||"{}")}function m(t){q().setItem(d,JSON.stringify(t));}function l(){let t=c.timeToLive?c.timeToLive*1e3:null,e=p(),r=Object.fromEntries(Object.entries(e).filter(([,s])=>s.timestamp!==void 0));if(m(r),!t)return;let a=Object.fromEntries(Object.entries(r).filter(([,s])=>{let o=new Date().getTime();return !(s.timestamp+t<o)}));m(a);}return {get(t,e,r={miss:()=>Promise.resolve()}){return Promise.resolve().then(()=>(l(),p()[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=p();return r[JSON.stringify(t)]={timestamp:new Date().getTime(),value:e},q().setItem(d,JSON.stringify(r)),e})},delete(t){return Promise.resolve().then(()=>{let e=p();delete e[JSON.stringify(t)],q().setItem(d,JSON.stringify(e));})},clear(){return Promise.resolve().then(()=>{q().removeItem(d);})}}}function Se(){return {get(c,h,d={miss:()=>Promise.resolve()}){return h().then(p=>Promise.all([p,d.miss(p)])).then(([p])=>p)},set(c,h){return Promise.resolve(h)},delete(c){return Promise.resolve()},clear(){return Promise.resolve()}}}function S(c){let h=[...c.caches],d=h.shift();return d===void 0?Se():{get(q,p,m={miss:()=>Promise.resolve()}){return d.get(q,p,m).catch(()=>S({caches:h}).get(q,p,m))},set(q,p){return d.set(q,p).catch(()=>S({caches:h}).set(q,p))},delete(q){return d.delete(q).catch(()=>S({caches:h}).delete(q))},clear(){return d.clear().catch(()=>S({caches:h}).clear())}}}function E(c={serializable:true}){let h={};return {get(d,q,p={miss:()=>Promise.resolve()}){let m=JSON.stringify(d);if(m in h)return Promise.resolve(c.serializable?JSON.parse(h[m]):h[m]);let l=q();return l.then(t=>p.miss(t)).then(()=>l)},set(d,q){return h[JSON.stringify(d)]=c.serializable?JSON.stringify(q):q,Promise.resolve(q)},delete(d){return delete h[JSON.stringify(d)],Promise.resolve()},clear(){return h={},Promise.resolve()}}}function ve(c){let h={value:`Algolia for JavaScript (${c})`,add(d){let q=`; ${d.segment}${d.version!==void 0?` (${d.version})`:""}`;return h.value.indexOf(q)===-1&&(h.value=`${h.value}${q}`),h}};return h}function C(c,h,d="WithinHeaders"){let q={"x-algolia-api-key":h,"x-algolia-application-id":c};return {headers(){return d==="WithinHeaders"?q:{}},queryParameters(){return d==="WithinQueryParameters"?q:{}}}}function k({func:c,validate:h,aggregator:d,error:q,timeout:p=()=>0}){let m=l=>new Promise((t,e)=>{c(l).then(async r=>(d&&await d(r),await h(r)?t(r):q&&await q.validate(r)?e(new Error(await q.message(r))):setTimeout(()=>{m(r).then(t).catch(e);},await p()))).catch(r=>{e(r);});});return m()}function A({algoliaAgents:c,client:h,version:d}){let q=ve(d).add({segment:h,version:d});return c.forEach(p=>q.add(p)),q}function b(){return {debug(c,h){return Promise.resolve()},info(c,h){return Promise.resolve()},error(c,h){return Promise.resolve()}}}var _=2*60*1e3;function M(c,h="up"){let d=Date.now();function q(){return h==="up"||Date.now()-d>_}function p(){return h==="timed out"&&Date.now()-d<=_}return {...c,status:h,lastUpdate:d,isUp:q,isTimedOut:p}}var J=class extends Error{name="AlgoliaError";constructor(c,h){super(c),h&&(this.name=h);}};var K=class extends J{stackTrace;constructor(c,h,d){super(c,d),this.stackTrace=h;}},Re=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");}},G=class extends K{status;constructor(c,h,d,q="ApiError"){super(c,d,q),this.status=h;}},Ie=class extends J{response;constructor(c,h){super(c,"DeserializationError"),this.response=h;}},Ce=class extends G{error;constructor(c,h,d,q){super(c,h,q,"DetailedApiError"),this.error=d;}};function j(c){let h=c;for(let d=c.length-1;d>0;d--){let q=Math.floor(Math.random()*(d+1)),p=c[d];h[d]=c[q],h[q]=p;}return h}function Ae(c,h,d){let q=be(d),p=`${c.protocol}://${c.url}${c.port?`:${c.port}`:""}/${h.charAt(0)==="/"?h.substring(1):h}`;return q.length&&(p+=`?${q}`),p}function be(c){return Object.keys(c).filter(h=>c[h]!==void 0).sort().map(h=>`${h}=${encodeURIComponent(Object.prototype.toString.call(c[h])==="[object Array]"?c[h].join(","):c[h]).replace(/\+/g,"%20")}`).join("&")}function De(c,h){if(c.method==="GET"||c.data===void 0&&h.data===void 0)return;let d=Array.isArray(c.data)?c.data:{...c.data,...h.data};return JSON.stringify(d)}function xe(c,h,d){let q={Accept:"application/json",...c,...h,...d},p={};return Object.keys(q).forEach(m=>{let l=q[m];p[m.toLowerCase()]=l;}),p}function ke(c){try{return JSON.parse(c.content)}catch(h){throw new Ie(h.message,c)}}function Oe({content:c,status:h},d){try{let q=JSON.parse(c);return "error"in q?new Ce(q.message,h,q.error,d):new G(q.message,h,d)}catch{}return new G(c,h,d)}function Ue({isTimedOut:c,status:h}){return !c&&~~h===0}function Ne({isTimedOut:c,status:h}){return c||Ue({isTimedOut:c,status:h})||~~(h/100)!==2&&~~(h/100)!==4}function Be({status:c}){return ~~(c/100)===2}function Ge(c){return c.map(h=>X(h))}function X(c){let h=c.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return {...c,request:{...c.request,headers:{...c.request.headers,...h}}}}function D({hosts:c,hostsCache:h,baseHeaders:d,logger:q,baseQueryParameters:p,algoliaAgent:m,timeouts:l,requester:t,requestsCache:e,responsesCache:r}){async function a(n){let i=await Promise.all(n.map(y=>h.get(y,()=>Promise.resolve(M(y))))),u=i.filter(y=>y.isUp()),g=i.filter(y=>y.isTimedOut()),P=[...u,...g];return {hosts:P.length>0?P:n,getTimeout(y,f){return (g.length===0&&y===0?1:g.length+3+y)*f}}}async function s(n,i,u=true){let g=[],P=De(n,i),w=xe(d,n.headers,i.headers),y=n.method==="GET"?{...n.data,...i.data}:{},f={...p,...n.queryParameters,...y};if(m.value&&(f["x-algolia-agent"]=m.value),i&&i.queryParameters)for(let x of Object.keys(i.queryParameters))!i.queryParameters[x]||Object.prototype.toString.call(i.queryParameters[x])==="[object Object]"?f[x]=i.queryParameters[x]:f[x]=i.queryParameters[x].toString();let T=0,v=async(x,F)=>{let B=x.pop();if(B===void 0)throw new Re(Ge(g));let L={...l,...i.timeouts},V={data:P,headers:w,method:n.method,url:Ae(B,n.path,f),connectTimeout:F(T,L.connect),responseTimeout:F(T,u?L.read:L.write)},$=H=>{let z={request:V,response:H,host:B,triesLeft:x.length};return g.push(z),z},U=await t.send(V);if(Ne(U)){let H=$(U);return U.isTimedOut&&T++,q.info("Retryable failure",X(H)),await h.set(B,M(B,U.isTimedOut?"timed out":"down")),v(x,F)}if(Be(U))return ke(U);throw $(U),Oe(U,g)},O=c.filter(x=>x.accept==="readWrite"||(u?x.accept==="read":x.accept==="write")),N=await a(O);return v([...N.hosts].reverse(),N.getTimeout)}function o(n,i={}){let u=n.useReadTransporter||n.method==="GET";if(!u)return s(n,i,u);let g=()=>s(n,i);if((i.cacheable||n.cacheable)!==true)return g();let w={request:n,requestOptions:i,transporter:{queryParameters:p,headers:d}};return r.get(w,()=>e.get(w,()=>e.set(w,g()).then(y=>Promise.all([e.delete(w),y]),y=>Promise.all([e.delete(w),Promise.reject(y)])).then(([y,f])=>f)),{miss:y=>r.set(w,y)})}return {hostsCache:h,requester:t,timeouts:l,logger:q,algoliaAgent:m,baseHeaders:d,baseQueryParameters:p,hosts:c,request:o,requestsCache:e,responsesCache:r}}var Z="1.1.0",Y=["de","us"];function je(c){return [{url:c?"analytics.{region}.algolia.com".replace("{region}",c):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function Fe({appId:c,apiKey:h,authMode:d,algoliaAgents:q,region:p,...m}){let l=C(c,h,d),t=D({hosts:je(p),...m,algoliaAgent:A({algoliaAgents:q,client:"AbtestingV3",version:Z}),baseHeaders:{"content-type":"text/plain",...l.headers(),...m.baseHeaders},baseQueryParameters:{...l.queryParameters(),...m.baseQueryParameters}});return {transporter:t,appId:c,apiKey:h,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.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 g={method:"GET",path:n,queryParameters:u,headers:i};return t.request(g,o)},listABTests({offset:e,limit:r,indexPrefix:a,indexSuffix:s,direction:o}={},n=void 0){let i="/3/abtests",u={},g={};e!==void 0&&(g.offset=e.toString()),r!==void 0&&(g.limit=r.toString()),a!==void 0&&(g.indexPrefix=a.toString()),s!==void 0&&(g.indexSuffix=s.toString()),o!==void 0&&(g.direction=o.toString());let P={method:"GET",path:i,queryParameters:g,headers:u};return t.request(P,n)},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.metrics)throw new Error("Parameter `scheduleABTestsRequest.metrics` 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:"/3/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:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return t.request(n,r)}}}function ee(c,h,d,q){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!h||typeof h!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!Y.includes(d)))throw new Error(`\`region\` must be one of the following: ${Y.join(", ")}`);return Fe({appId:c,apiKey:h,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:b(),requester:R(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:false}),hostsCache:S({caches:[I({key:`${Z}-${c}`}),E()]}),...q})}var te="5.35.0",re=["de","us"];function Le(c){return [{url:c?"analytics.{region}.algolia.com".replace("{region}",c):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function He({appId:c,apiKey:h,authMode:d,algoliaAgents:q,region:p,...m}){let l=C(c,h,d),t=D({hosts:Le(p),...m,algoliaAgent:A({algoliaAgents:q,client:"Abtesting",version:te}),baseHeaders:{"content-type":"text/plain",...l.headers(),...m.baseHeaders},baseQueryParameters:{...l.queryParameters(),...m.baseQueryParameters}});return {transporter:t,appId:c,apiKey:h,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 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 g={method:"GET",path:n,queryParameters:u,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 ae(c,h,d,q){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!h||typeof h!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!re.includes(d)))throw new Error(`\`region\` must be one of the following: ${re.join(", ")}`);return He({appId:c,apiKey:h,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:b(),requester:R(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:false}),hostsCache:S({caches:[I({key:`${te}-${c}`}),E()]}),...q})}var ne="5.35.0",se=["de","us"];function We(c){return [{url:c?"analytics.{region}.algolia.com".replace("{region}",c):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function Qe({appId:c,apiKey:h,authMode:d,algoliaAgents:q,region:p,...m}){let l=C(c,h,d),t=D({hosts:We(p),...m,algoliaAgent:A({algoliaAgents:q,client:"Analytics",version:ne}),baseHeaders:{"content-type":"text/plain",...l.headers(),...m.baseHeaders},baseQueryParameters:{...l.queryParameters(),...m.baseQueryParameters}});return {transporter:t,appId:c,apiKey:h,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 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 g={method:"GET",path:n,queryParameters:u,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={},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 g={method:"GET",path:n,queryParameters:u,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={},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 g={method:"GET",path:n,queryParameters:u,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={},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 g={method:"GET",path:n,queryParameters:u,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={},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 g={method:"GET",path:n,queryParameters:u,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={},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 g={method:"GET",path:n,queryParameters:u,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={},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 g={method:"GET",path:n,queryParameters:u,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={},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 g={method:"GET",path:n,queryParameters:u,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={},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 g={method:"GET",path:n,queryParameters:u,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={},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 g={method:"GET",path:n,queryParameters:u,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 u="/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 w={method:"GET",path:u,queryParameters:P,headers:g};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",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 w={method:"GET",path:u,queryParameters:P,headers:g};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",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 w={method:"GET",path:u,queryParameters:P,headers:g};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 g="/2/filters",P={},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 y={method:"GET",path:g,queryParameters:w,headers:P};return t.request(y,u)},getTopFilterForAttribute({attribute:e,index:r,search:a,startDate:s,endDate:o,limit:n,offset:i,tags:u},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)),w={},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()),u!==void 0&&(y.tags=u.toString());let f={method:"GET",path:P,queryParameters:y,headers:w};return t.request(f,g)},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 g="/2/filters/noResults",P={},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 y={method:"GET",path:g,queryParameters:w,headers:P};return t.request(y,u)},getTopHits({index:e,search:r,clickAnalytics:a,revenueAnalytics:s,startDate:o,endDate:n,limit:i,offset:u,tags:g},P){if(!e)throw new Error("Parameter `index` is required when calling `getTopHits`.");let w="/2/hits",y={},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()),g!==void 0&&(f.tags=g.toString());let T={method:"GET",path:w,queryParameters:f,headers:y};return t.request(T,P)},getTopSearches({index:e,clickAnalytics:r,revenueAnalytics:a,startDate:s,endDate:o,orderBy:n,direction:i,limit:u,offset:g,tags:P},w){if(!e)throw new Error("Parameter `index` is required when calling `getTopSearches`.");let y="/2/searches",f={},T={};e!==void 0&&(T.index=e.toString()),r!==void 0&&(T.clickAnalytics=r.toString()),a!==void 0&&(T.revenueAnalytics=a.toString()),s!==void 0&&(T.startDate=s.toString()),o!==void 0&&(T.endDate=o.toString()),n!==void 0&&(T.orderBy=n.toString()),i!==void 0&&(T.direction=i.toString()),u!==void 0&&(T.limit=u.toString()),g!==void 0&&(T.offset=g.toString()),P!==void 0&&(T.tags=P.toString());let v={method:"GET",path:y,queryParameters:T,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 g={method:"GET",path:n,queryParameters:u,headers:i};return t.request(g,o)}}}function oe(c,h,d,q){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!h||typeof h!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!se.includes(d)))throw new Error(`\`region\` must be one of the following: ${se.join(", ")}`);return Qe({appId:c,apiKey:h,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:b(),requester:R(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:false}),hostsCache:S({caches:[I({key:`${ne}-${c}`}),E()]}),...q})}var ce="5.35.0",ie=["de","us"];function Ve(c){return [{url:c?"insights.{region}.algolia.io".replace("{region}",c):"insights.algolia.io",accept:"readWrite",protocol:"https"}]}function $e({appId:c,apiKey:h,authMode:d,algoliaAgents:q,region:p,...m}){let l=C(c,h,d),t=D({hosts:Ve(p),...m,algoliaAgent:A({algoliaAgents:q,client:"Insights",version:ce}),baseHeaders:{"content-type":"text/plain",...l.headers(),...m.baseHeaders},baseQueryParameters:{...l.queryParameters(),...m.baseQueryParameters}});return {transporter:t,appId:c,apiKey:h,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 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 ue(c,h,d,q){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!h||typeof h!="string")throw new Error("`apiKey` is missing.");if(d&&(typeof d!="string"||!ie.includes(d)))throw new Error(`\`region\` must be one of the following: ${ie.join(", ")}`);return $e({appId:c,apiKey:h,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:b(),requester:R(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:false}),hostsCache:S({caches:[I({key:`${ce}-${c}`}),E()]}),...q})}var de="5.35.0",he=["eu","us"];function ze(c){return [{url:"personalization.{region}.algolia.com".replace("{region}",c),accept:"readWrite",protocol:"https"}]}function _e({appId:c,apiKey:h,authMode:d,algoliaAgents:q,region:p,...m}){let l=C(c,h,d),t=D({hosts:ze(p),...m,algoliaAgent:A({algoliaAgents:q,client:"Personalization",version:de}),baseHeaders:{"content-type":"text/plain",...l.headers(),...m.baseHeaders},baseQueryParameters:{...l.queryParameters(),...m.baseQueryParameters}});return {transporter:t,appId:c,apiKey:h,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 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 le(c,h,d,q){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!h||typeof h!="string")throw new Error("`apiKey` is missing.");if(!d||d&&(typeof d!="string"||!he.includes(d)))throw new Error(`\`region\` is required and must be one of the following: ${he.join(", ")}`);return _e({appId:c,apiKey:h,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:b(),requester:R(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:false}),hostsCache:S({caches:[I({key:`${de}-${c}`}),E()]}),...q})}var qe="5.35.0",me=["eu","us"];function Me(c){return [{url:"query-suggestions.{region}.algolia.com".replace("{region}",c),accept:"readWrite",protocol:"https"}]}function Je({appId:c,apiKey:h,authMode:d,algoliaAgents:q,region:p,...m}){let l=C(c,h,d),t=D({hosts:Me(p),...m,algoliaAgent:A({algoliaAgents:q,client:"QuerySuggestions",version:qe}),baseHeaders:{"content-type":"text/plain",...l.headers(),...m.baseHeaders},baseQueryParameters:{...l.queryParameters(),...m.baseQueryParameters}});return {transporter:t,appId:c,apiKey:h,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 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 ge(c,h,d,q){if(!c||typeof c!="string")throw new Error("`appId` is missing.");if(!h||typeof h!="string")throw new Error("`apiKey` is missing.");if(!d||d&&(typeof d!="string"||!me.includes(d)))throw new Error(`\`region\` is required and must be one of the following: ${me.join(", ")}`);return Je({appId:c,apiKey:h,region:d,timeouts:{connect:1e3,read:2e3,write:3e4},logger:b(),requester:R(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:E(),requestsCache:E({serializable:false}),hostsCache:S({caches:[I({key:`${qe}-${c}`}),E()]}),...q})}var W="5.35.0";function Ke(c){return [{url:`${c}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${c}.algolia.net`,accept:"write",protocol:"https"}].concat(j([{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 Xe({appId:c,apiKey:h,authMode:d,algoliaAgents:q,...p}){let m=C(c,h,d),l=D({hosts:Ke(c),...p,algoliaAgent:A({algoliaAgents:q,client:"Search",version:W}),baseHeaders:{"content-type":"text/plain",...m.headers(),...p.baseHeaders},baseQueryParameters:{...m.queryParameters(),...p.baseQueryParameters}});return {transporter:l,appId:c,apiKey:h,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 k({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 k({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 k({...i,func:()=>this.getApiKey({key:e},o),validate:u=>{for(let g of Object.keys(r)){let P=r[g],w=u[g];if(Array.isArray(P)&&Array.isArray(w)){if(P.length!==w.length||P.some((y,f)=>y!==w[f]))return false}else if(P!==w)return false}return true}})}return k({...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 k({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 k({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 k({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=[],u=e.entries();for(let[g,P]of u)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),u=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:u,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 G&&e.status===404)return false;throw e}return true},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 `batchAssi