@algolia/abtesting 1.21.2 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- function Y(t){let e,s=`algolia-client-js-${t.key}`;function r(){return e===void 0&&(e=t.localStorage||window.localStorage),e}function a(){return JSON.parse(r().getItem(s)||"{}")}function d(o){r().setItem(s,JSON.stringify(o))}function h(){return new Promise(o=>setTimeout(o,0))}function c(){let o=t.timeToLive?t.timeToLive*1e3:null,n=a(),u=new Date().getTime(),p=!1;return{namespace:Object.fromEntries(Object.entries(n).filter(([,m])=>!m||m.timestamp===void 0||o&&m.timestamp+o<u?(p=!0,!1):!0)),changed:p}}return{get(o,n,u={miss:()=>Promise.resolve()}){return h().then(()=>{let{namespace:p,changed:f}=c(),m=p[JSON.stringify(o)];return f&&d(p),m?m.value:n().then(T=>u.miss(T).then(()=>T))})},set(o,n){return h().then(()=>{let u=a();return u[JSON.stringify(o)]={timestamp:new Date().getTime(),value:n},r().setItem(s,JSON.stringify(u)),n})},delete(o){return h().then(()=>{let n=a();delete n[JSON.stringify(o)],r().setItem(s,JSON.stringify(n))})},clear(){return Promise.resolve().then(()=>{r().removeItem(s)})}}}function ce(){return{get(t,e,s={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,s.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}function O(t){let e=[...t.caches],s=e.shift();return s===void 0?ce():{get(r,a,d={miss:()=>Promise.resolve()}){return s.get(r,a,d).catch(()=>O({caches:e}).get(r,a,d))},set(r,a){return s.set(r,a).catch(()=>O({caches:e}).set(r,a))},delete(r){return s.delete(r).catch(()=>O({caches:e}).delete(r))},clear(){return s.clear().catch(()=>O({caches:e}).clear())}}}function N(t={serializable:!0}){let e={};return{get(s,r,a={miss:()=>Promise.resolve()}){let d=JSON.stringify(s);if(d in e)return Promise.resolve(t.serializable?JSON.parse(e[d]):e[d]);let h=r();return h.then(c=>a.miss(c)).then(()=>h)},set(s,r){return e[JSON.stringify(s)]=t.serializable?JSON.stringify(r):r,Promise.resolve(r)},delete(s){return delete e[JSON.stringify(s)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}function ue(t){let e={value:`Algolia for JavaScript (${t})`,add(s){let r=`; ${s.segment}${s.version!==void 0?` (${s.version})`:""}`;return e.value.indexOf(r)===-1&&(e.value=`${e.value}${r}`),e}};return e}function Z(t,e,s="WithinHeaders"){let r={"x-algolia-api-key":e,"x-algolia-application-id":t};return{headers(){return s==="WithinHeaders"?r:{}},queryParameters(){return s==="WithinQueryParameters"?r:{}}}}function ee({algoliaAgents:t,client:e,version:s}){let r=ue(s).add({segment:e,version:s});return t.forEach(a=>r.add(a)),r}function te(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var le=10*1024*1024;async function*de(t){let e=t.getReader();try{for(;;){let{done:s,value:r}=await e.read();if(s)return;yield r}}finally{e.releaseLock()}}function me(t){return Symbol.asyncIterator in t?t:de(t)}async function*pe(t){let e=new TextDecoder("utf-8"),s=[],r=0,a=!1,d=!0;for await(let c of me(t)){let o=e.decode(c,{stream:!0}),n=0;for(a&&(a=!1,o.length>0&&o[0]===`
2
- `&&(n=1));n<o.length;){let u=o.indexOf("\r",n),p=o.indexOf(`
3
- `,n);if(u===-1&&p===-1){let i=o.slice(n);if(s.push(i),r+=i.length,r>le)throw new Error("SSE line buffer exceeded 10MB");break}let f,m;u!==-1&&(p===-1||u<p)?(f=u,u+1<o.length?m=o[u+1]===`
4
- `?2:1:(a=!0,m=1)):(f=p,m=1);let T=o.slice(n,f);s.push(T);let y=s.length===1?s[0]:s.join("");s.length=0,r=0,d&&(y.startsWith("\uFEFF")&&(y=y.slice(1)),d=!1),yield y,n=f+m}}let h=e.decode();if(h&&s.push(h),s.length>0){let c=s.join("");d&&c.startsWith("\uFEFF")&&(c=c.slice(1)),yield c}}var fe=class{data=[];eventType="";lastEventId=null;retry=null;decode(t){if(t==="")return this.dispatch();if(t[0]===":")return null;let e=t.indexOf(":"),s,r;switch(e===-1?(s=t,r=""):(s=t.slice(0,e),r=t.slice(e+1),r[0]===" "&&(r=r.slice(1))),s){case"data":this.data.push(r);break;case"event":this.eventType=r;break;case"id":r.includes("\0")||(this.lastEventId=r);break;case"retry":/^[0-9]+$/.test(r)&&(this.retry=parseInt(r,10));break}return null}dispatch(){let t=this.eventType;if(this.eventType="",this.data.length===0)return null;let e={data:this.data.join(`
5
- `),event:t,id:this.lastEventId,retry:this.retry};return this.data=[],e}};async function*he(t){let e=new fe;for await(let s of pe(t)){let r=e.decode(s);r!==null&&(yield r)}}var ge=750,J=120*1e3;function M(t,e="up"){let s=Date.now();function r(){return e==="up"||Date.now()-s>J}function a(){return e==="timed out"&&Date.now()-s<=J}return{...t,status:e,lastUpdate:s,isUp:r,isTimedOut:a}}var re=class extends Error{name="AlgoliaError";constructor(t,e){super(t),e&&(this.name=e)}};var se=class extends re{stackTrace;constructor(t,e,s){super(t,s),this.stackTrace=e}},Q=class extends se{constructor(t){super("Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support",t,"RetryError")}},$=class extends se{status;constructor(t,e,s,r="ApiError"){super(t,s,r),this.status=e}},ye=class extends re{response;constructor(t,e){super(t,"DeserializationError"),this.response=e}},Pe=class extends ${error;constructor(t,e,s,r){super(t,e,r,"DetailedApiError"),this.error=s}};function V(t,e,s){let r=Te(s),a=`${t.protocol}://${t.url}${t.port?`:${t.port}`:""}/${e.charAt(0)==="/"?e.substring(1):e}`;return r.length&&(a+=`?${r}`),a}function Te(t){return Object.keys(t).filter(e=>t[e]!==void 0).sort().map(e=>`${e}=${encodeURIComponent(Object.prototype.toString.call(t[e])==="[object Array]"?t[e].join(","):t[e]).replace(/\+/g,"%20")}`).join("&")}function X(t,e){if(t.method==="GET"||t.data===void 0&&e.data===void 0)return;let s=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(s)}function K(t,e,s){let r={Accept:"application/json",...t,...e,...s},a={};return Object.keys(r).forEach(d=>{let h=r[d];a[d.toLowerCase()]=h}),a}function Ae(t){if(!(t.status===204||t.content.length===0))try{return JSON.parse(t.content)}catch(e){throw new ye(e.message,t)}}function Ee({content:t,status:e},s){try{let r=JSON.parse(t);return"error"in r?new Pe(r.message,e,r.error,s):new $(r.message,e,s)}catch{}return new $(t,e,s)}function Re({isTimedOut:t,status:e}){return!t&&~~e===0}function ve({isTimedOut:t,status:e}){return t||Re({isTimedOut:t,status:e})||~~(e/100)!==2&&~~(e/100)!==4}function xe({status:t}){return~~(t/100)===2}function qe(t){return t.map(e=>oe(e))}function oe(t){let e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function ne({hosts:t,hostsCache:e,baseHeaders:s,logger:r,baseQueryParameters:a,algoliaAgent:d,timeouts:h,requester:c,requestsCache:o,responsesCache:n,compress:u,compression:p}){async function f(i){let l=await Promise.all(i.map(g=>e.get(g,()=>Promise.resolve(M(g))))),q=l.filter(g=>g.isUp()),R=l.filter(g=>g.isTimedOut()),x=[...q,...R];return{hosts:x.length>0?x:i,getTimeout(g,S){return(R.length===0&&g===0?1:R.length+3+g)*S}}}async function m(i,l,q){let R=[],x=X(i,l),A=K(s,i.headers,l.headers),g=p==="gzip"&&x!==void 0&&x.length>ge&&(i.method==="POST"||i.method==="PUT");g&&u===void 0&&r.info("Compression is disabled because no compress method is available.");let S=g&&u!==void 0,L=S?await u(x):x;S&&(A["content-encoding"]="gzip");let I=i.method==="GET"?{...i.data,...l.data}:{},b={...a,...i.queryParameters,...I};if(d.value&&(b["x-algolia-agent"]=d.value),l&&l.queryParameters)for(let E of Object.keys(l.queryParameters))!l.queryParameters[E]||Object.prototype.toString.call(l.queryParameters[E])==="[object Object]"?b[E]=l.queryParameters[E]:b[E]=l.queryParameters[E].toString();let B=0,_=async(E,k)=>{let C=E.pop();if(C===void 0)throw new Q(qe(R));let U={...h,...l.timeouts},G={data:L,headers:A,method:i.method,url:V(C,i.path,b),connectTimeout:k(B,U.connect),responseTimeout:k(B,q?U.read:U.write)},W=H=>{let z={request:G,response:H,host:C,triesLeft:E.length};return R.push(z),z},w=await c.send(G);if(ve(w)){let H=W(w);return w.isTimedOut&&B++,r.info("Retryable failure",oe(H)),await e.set(C,M(C,w.isTimedOut?"timed out":"down")),_(E,k)}if(xe(w))return Ae(w);throw W(w),Ee(w,R)},v=t.filter(E=>E.accept==="readWrite"||(q?E.accept==="read":E.accept==="write")),F=await f(v);return _([...F.hosts].reverse(),F.getTimeout)}function T(i,l={}){let q=()=>m(i,l,R),R=i.useReadTransporter||i.method==="GET";if((l.cacheable||i.cacheable)!==!0)return q();let A={request:i,requestOptions:l,transporter:{queryParameters:a,headers:s}};return n.get(A,()=>o.get(A,()=>o.set(A,q()).then(g=>Promise.all([o.delete(A),g]),g=>Promise.all([o.delete(A),Promise.reject(g)])).then(([g,S])=>S)),{miss:g=>n.set(A,g)})}async function*y(i,l={}){if(!c.sendStream)throw new Error("This requester does not support streaming");let q=X(i,l),R=K(s,i.headers,l.headers);R.accept="text/event-stream";let x=i.method==="GET"?{...i.data,...l.data}:{},A={...a,...i.queryParameters,...x};if(d.value&&(A["x-algolia-agent"]=d.value),l&&l.queryParameters)for(let v of Object.keys(l.queryParameters))!l.queryParameters[v]||Object.prototype.toString.call(l.queryParameters[v])==="[object Object]"?A[v]=l.queryParameters[v]:A[v]=l.queryParameters[v].toString();let g=i.useReadTransporter||i.method==="GET",S=t.filter(v=>v.accept==="readWrite"||(g?v.accept==="read":v.accept==="write")),I=(await f(S)).hosts[0];if(!I)throw new Q([]);let b={...h,...l.timeouts},B={data:q,headers:R,method:i.method,url:V(I,i.path,A),connectTimeout:b.connect,responseTimeout:g?b.read:b.write},_=await c.sendStream(B);yield*he(_)}return{hostsCache:e,requester:c,timeouts:h,logger:r,algoliaAgent:d,baseHeaders:s,baseQueryParameters:a,hosts:t,request:T,requestStream:y,requestsCache:o,responsesCache:n}}function P(t,e,s){if(s==null||typeof s=="string"&&s.length===0)throw new Error(`Parameter \`${t}\` is required when calling \`${e}\`.`)}function ae(){function t(e){return new Promise(s=>{let r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach(c=>r.setRequestHeader(c,e.headers[c]));let a=(c,o)=>setTimeout(()=>{r.abort(),s({status:0,content:o,isTimedOut:!0})},c),d=a(e.connectTimeout,"Connection timeout"),h;r.onreadystatechange=()=>{r.readyState>r.OPENED&&h===void 0&&(clearTimeout(d),h=a(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{r.status===0&&(clearTimeout(d),clearTimeout(h),s({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(d),clearTimeout(h),s({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)})}return{send:t}}var D="1.21.2",j=["de","us"];function Se(t){return[{url:t?"analytics.{region}.algolia.com".replace("{region}",t):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function ie({appId:t,apiKey:e,authMode:s,algoliaAgents:r,region:a,...d}){let h=Z(t,e,s),c=ne({hosts:Se(a),...d,algoliaAgent:ee({algoliaAgents:r,client:"AbtestingV3",version:D}),baseHeaders:{"content-type":"text/plain",...h.headers(),...d.baseHeaders},baseQueryParameters:{...h.queryParameters(),...d.baseQueryParameters}});return{transporter:c,appId:t,apiKey:e,clearCache(){return Promise.all([c.requestsCache.clear(),c.responsesCache.clear()]).then(()=>{})},get _ua(){return c.algoliaAgent.value},addAlgoliaAgent(o,n){c.algoliaAgent.add({segment:o,version:n})},setClientApiKey({apiKey:o}){!s||s==="WithinHeaders"?c.baseHeaders["x-algolia-api-key"]=o:c.baseQueryParameters["x-algolia-api-key"]=o},addABTests(o,n){P("addABTestsRequest","addABTests",o),P("addABTestsRequest.name","addABTests",o.name),P("addABTestsRequest.variants","addABTests",o.variants),P("addABTestsRequest.metrics","addABTests",o.metrics),P("addABTestsRequest.endAt","addABTests",o.endAt);let m={method:"POST",path:"/3/abtests",queryParameters:{},headers:{},data:o};return c.request(m,n)},customDelete({path:o,parameters:n},u){P("path","customDelete",o);let T={method:"DELETE",path:"/{path}".replace("{path}",o),queryParameters:n||{},headers:{}};return c.request(T,u)},customGet({path:o,parameters:n},u){P("path","customGet",o);let T={method:"GET",path:"/{path}".replace("{path}",o),queryParameters:n||{},headers:{}};return c.request(T,u)},customPost({path:o,parameters:n,body:u},p){P("path","customPost",o);let y={method:"POST",path:"/{path}".replace("{path}",o),queryParameters:n||{},headers:{},data:u||{}};return c.request(y,p)},customPut({path:o,parameters:n,body:u},p){P("path","customPut",o);let y={method:"PUT",path:"/{path}".replace("{path}",o),queryParameters:n||{},headers:{},data:u||{}};return c.request(y,p)},deleteABTest({id:o},n){P("id","deleteABTest",o);let m={method:"DELETE",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(o)),queryParameters:{},headers:{}};return c.request(m,n)},estimateABTest(o,n){P("estimateABTestRequest","estimateABTest",o),P("estimateABTestRequest.configuration","estimateABTest",o.configuration),P("estimateABTestRequest.variants","estimateABTest",o.variants);let m={method:"POST",path:"/3/abtests/estimate",queryParameters:{},headers:{},data:o};return c.request(m,n)},getABTest({id:o},n){P("id","getABTest",o);let m={method:"GET",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(o)),queryParameters:{},headers:{}};return c.request(m,n)},getTimeseries({id:o,startDate:n,endDate:u,metric:p},f){P("id","getTimeseries",o);let m="/3/abtests/{id}/timeseries".replace("{id}",encodeURIComponent(o)),T={},y={};n!==void 0&&(y.startDate=n.toString()),u!==void 0&&(y.endDate=u.toString()),p!==void 0&&(y.metric=p.toString());let i={method:"GET",path:m,queryParameters:y,headers:T};return c.request(i,f)},listABTests({offset:o,limit:n,indexPrefix:u,indexSuffix:p,direction:f}={},m=void 0){let T="/3/abtests",y={},i={};o!==void 0&&(i.offset=o.toString()),n!==void 0&&(i.limit=n.toString()),u!==void 0&&(i.indexPrefix=u.toString()),p!==void 0&&(i.indexSuffix=p.toString()),f!==void 0&&(i.direction=f.toString());let l={method:"GET",path:T,queryParameters:i,headers:y};return c.request(l,m)},stopABTest({id:o},n){P("id","stopABTest",o);let m={method:"POST",path:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(o)),queryParameters:{},headers:{}};return c.request(m,n)}}}function At(t,e,s,r){if(!t||typeof t!="string")throw new Error("`appId` is missing.");if(!e||typeof e!="string")throw new Error("`apiKey` is missing.");if(s&&(typeof s!="string"||!j.includes(s)))throw new Error(`\`region\` must be one of the following: ${j.join(", ")}`);let{compression:a,...d}=r||{};return ie({appId:t,apiKey:e,region:s,timeouts:{connect:1e3,read:2e3,write:3e4},logger:te(),requester:ae(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:N(),requestsCache:N({serializable:!1}),hostsCache:O({caches:[Y({key:`${D}-${t}`}),N()]}),...d})}export{At as abtestingV3Client,D as apiClientVersion};
1
+ function oe(e){let t,s=`algolia-client-js-${e.key}`;function o(){return t===void 0&&(t=e.localStorage||window.localStorage),t}function c(){return JSON.parse(o().getItem(s)||"{}")}function m(r){o().setItem(s,JSON.stringify(r))}function y(){return new Promise(r=>setTimeout(r,0))}function i(){let r=e.timeToLive?e.timeToLive*1e3:null,n=c(),a=new Date().getTime(),d=!1;return{namespace:Object.fromEntries(Object.entries(n).filter(([,u])=>!u||u.timestamp===void 0||r&&u.timestamp+r<a?(d=!0,!1):!0)),changed:d}}return{get(r,n,a={miss:()=>Promise.resolve()}){return y().then(()=>{let{namespace:d,changed:l}=i(),u=d[JSON.stringify(r)];return l&&m(d),u?u.value:n().then(T=>a.miss(T).then(()=>T))})},set(r,n){return y().then(()=>{let a=c();return a[JSON.stringify(r)]={timestamp:new Date().getTime(),value:n},o().setItem(s,JSON.stringify(a)),n})},delete(r){return y().then(()=>{let n=c();delete n[JSON.stringify(r)],o().setItem(s,JSON.stringify(n))})},clear(){return Promise.resolve().then(()=>{o().removeItem(s)})}}}function Pe(){return{get(e,t,s={miss:()=>Promise.resolve()}){return t().then(c=>Promise.all([c,s.miss(c)])).then(([c])=>c)},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}}function w(e){let t=[...e.caches],s=t.shift();return s===void 0?Pe():{get(o,c,m={miss:()=>Promise.resolve()}){return s.get(o,c,m).catch(()=>w({caches:t}).get(o,c,m))},set(o,c){return s.set(o,c).catch(()=>w({caches:t}).set(o,c))},delete(o){return s.delete(o).catch(()=>w({caches:t}).delete(o))},clear(){return s.clear().catch(()=>w({caches:t}).clear())}}}function _(e={serializable:!0}){let t={};return{get(s,o,c={miss:()=>Promise.resolve()}){let m=JSON.stringify(s);if(m in t)return Promise.resolve(e.serializable?JSON.parse(t[m]):t[m]);let y=o();return y.then(i=>c.miss(i)).then(()=>y)},set(s,o){return t[JSON.stringify(s)]=e.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(s){return delete t[JSON.stringify(s)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}function Te(e){let t={value:`Algolia for JavaScript (${e})`,add(s){let o=`; ${s.segment}${s.version!==void 0?` (${s.version})`:""}`;return t.value.indexOf(o)===-1&&(t.value=`${t.value}${o}`),t}};return t}function ne(e,t,s="WithinHeaders"){let o={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers(){return s==="WithinHeaders"?o:{}},queryParameters(){return s==="WithinQueryParameters"?o:{}}}}function ae({algoliaAgents:e,client:t,version:s}){let o=Te(s).add({segment:t,version:s});return e.forEach(c=>o.add(c)),o}function ie(){return{debug(e,t){return Promise.resolve()},info(e,t){return Promise.resolve()},error(e,t){return Promise.resolve()}}}var ge=10*1024*1024;async function*ye(e){let t=e.getReader();try{for(;;){let{done:s,value:o}=await t.read();if(s)return;yield o}}finally{t.releaseLock()}}function qe(e){return Symbol.asyncIterator in e?e:ye(e)}async function*Re(e){let t=new TextDecoder("utf-8"),s=[],o=0,c=!1,m=!0;for await(let i of qe(e)){let r=t.decode(i,{stream:!0}),n=0;for(c&&(c=!1,r.length>0&&r[0]===`
2
+ `&&(n=1));n<r.length;){let a=r.indexOf("\r",n),d=r.indexOf(`
3
+ `,n);if(a===-1&&d===-1){let q=r.slice(n);if(s.push(q),o+=q.length,o>ge)throw new Error("SSE line buffer exceeded 10MB");break}let l,u;a!==-1&&(d===-1||a<d)?(l=a,a+1<r.length?u=r[a+1]===`
4
+ `?2:1:(c=!0,u=1)):(l=d,u=1);let T=r.slice(n,l);s.push(T);let P=s.length===1?s[0]:s.join("");s.length=0,o=0,m&&(P.startsWith("\uFEFF")&&(P=P.slice(1)),m=!1),yield P,n=l+u}}let y=t.decode();if(y&&s.push(y),s.length>0){let i=s.join("");m&&i.startsWith("\uFEFF")&&(i=i.slice(1)),yield i}}var Ae=class{data=[];eventType="";lastEventId=null;retry=null;decode(e){if(e==="")return this.dispatch();if(e[0]===":")return null;let t=e.indexOf(":"),s,o;switch(t===-1?(s=e,o=""):(s=e.slice(0,t),o=e.slice(t+1),o[0]===" "&&(o=o.slice(1))),s){case"data":this.data.push(o);break;case"event":this.eventType=o;break;case"id":o.includes("\0")||(this.lastEventId=o);break;case"retry":/^[0-9]+$/.test(o)&&(this.retry=parseInt(o,10));break}return null}dispatch(){let e=this.eventType;if(this.eventType="",this.data.length===0)return null;let t={data:this.data.join(`
5
+ `),event:e,id:this.lastEventId,retry:this.retry};return this.data=[],t}};async function*Ee(e){let t=new Ae;for await(let s of Re(e)){let o=t.decode(s);o!==null&&(yield o)}}var ve=750,X=120*1e3;function K(e,t="up"){let s=Date.now();function o(){return t==="up"||Date.now()-s>X}function c(){return t==="timed out"&&Date.now()-s<=X}return{...e,status:t,lastUpdate:s,isUp:o,isTimedOut:c}}var ue=class extends Error{name="AlgoliaError";constructor(e,t){super(e),t&&(this.name=t)}};var ce=class extends ue{stackTrace;correlationId;constructor(e,t,s,o){super(o?`${e} (Correlation-ID: ${o})`:e,s),this.stackTrace=t,this.correlationId=o}},Y=class extends ce{constructor(e,t){super("Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support",e,"RetryError",t)}},j=class extends ce{status;constructor(e,t,s,o="ApiError",c){super(e,s,o,c),this.status=t}},Ie=class extends ue{response;correlationId;constructor(e,t,s){super(s?`${e} (Correlation-ID: ${s})`:e,"DeserializationError"),this.response=t,this.correlationId=s}},He=class extends j{error;constructor(e,t,s,o,c){super(e,t,o,"DetailedApiError",c),this.error=s}};function Z(e,t,s){let o=Se(s),c=`${e.protocol}://${e.url}${e.port?`:${e.port}`:""}/${t.charAt(0)==="/"?t.substring(1):t}`;return o.length&&(c+=`?${o}`),c}function Se(e){return Object.keys(e).filter(t=>e[t]!==void 0).sort().map(t=>`${t}=${encodeURIComponent(Object.prototype.toString.call(e[t])==="[object Array]"?e[t].join(","):e[t]).replace(/\+/g,"%20")}`).join("&")}function ee(e,t){if(e.method==="GET"||e.data===void 0&&t.data===void 0)return;let s=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(s)}function te(e,t,s){let o={Accept:"application/json",...e,...t,...s},c={};return Object.keys(o).forEach(m=>{let y=o[m];c[m.toLowerCase()]=y}),c}function de(e){if(!(e.status===204||e.content.length===0))try{return JSON.parse(e.content)}catch(t){throw new Ie(t.message,e,$(e.headers))}}function xe(e){return{status:e.status,headers:e.headers,content:e.content,data:de(e)}}function $(e){if(!e)return;if(e["correlation-id"]!==void 0)return e["correlation-id"];let t=Object.keys(e).find(s=>s.toLowerCase()==="correlation-id");return t===void 0?void 0:e[t]}function be(e){for(let t=e.length-1;t>=0;t--){let s=$(e[t].response.headers);if(s!==void 0)return s}}function we(e,t){let{content:s,status:o}=e,c=$(e.headers);try{let m=JSON.parse(s);return"error"in m?new He(m.message,o,m.error,t,c):new j(m.message,o,t,"ApiError",c)}catch{}return new j(s,o,t,"ApiError",c)}var L="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",re=11;function se(){var e;let t="";if(typeof((e=globalThis.crypto)==null?void 0:e.getRandomValues)=="function"){let s=new Uint8Array(re);globalThis.crypto.getRandomValues(s);for(let o of s)t+=L[o%L.length];return t}for(let s=0;s<re;s++)t+=L[Math.floor(Math.random()*L.length)];return t}function Be({isTimedOut:e,status:t}){return!e&&~~t===0}function Oe({isTimedOut:e,status:t}){return e||Be({isTimedOut:e,status:t})||~~(t/100)!==2&&~~(t/100)!==4}function Ce({status:e}){return~~(e/100)===2}function We(e){return e.map(t=>le(t))}function le(e){let t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function me({hosts:e,hostsCache:t,baseHeaders:s,logger:o,baseQueryParameters:c,algoliaAgent:m,timeouts:y,requester:i,requestsCache:r,responsesCache:n,compress:a,compression:d,requestIdChannel:l}){function u(h,p){l===void 0||h["request-id"]!==void 0||Object.keys(p).some(v=>v.toLowerCase()==="x-algolia-request-id")||(l==="headers"?h["request-id"]=se():p["x-algolia-request-id"]=se())}async function T(h){let p=await Promise.all(h.map(g=>t.get(g,()=>Promise.resolve(K(g))))),v=p.filter(g=>g.isUp()),A=p.filter(g=>g.isTimedOut()),H=[...v,...A];return{hosts:H.length>0?H:h,getTimeout(g,x){return(A.length===0&&g===0?1:A.length+3+g)*x}}}async function P(h,p,v){let A=[],H=ee(h,p),R=te(s,h.headers,p.headers),g=d==="gzip"&&H!==void 0&&H.length>ve&&(h.method==="POST"||h.method==="PUT");g&&a===void 0&&o.info("Compression is disabled because no compress method is available.");let x=g&&a!==void 0,N=x?await a(H):H;x&&(R["content-encoding"]="gzip");let W=h.method==="GET"?{...h.data,...p.data}:{},S={...c,...h.queryParameters,...W};if(m.value&&(S["x-algolia-agent"]=m.value),p&&p.queryParameters)for(let E of Object.keys(p.queryParameters))!p.queryParameters[E]||Object.prototype.toString.call(p.queryParameters[E])==="[object Object]"?S[E]=p.queryParameters[E]:S[E]=p.queryParameters[E].toString();u(R,S);let O=0,D=async(E,U)=>{let C=E.pop();if(C===void 0)throw new Y(We(A),be(A));let G={...y,...p.timeouts},z={data:N,headers:R,method:h.method,url:Z(C,h.path,S),connectTimeout:U(O,G.connect),responseTimeout:U(O,v?G.read:G.write)},J=Q=>{let V={request:z,response:Q,host:C,triesLeft:E.length};return A.push(V),V},b=await i.send(z);if(Oe(b)){let Q=J(b);return b.isTimedOut&&O++,o.info("Retryable failure",le(Q)),await t.set(C,K(C,b.isTimedOut?"timed out":"down")),D(E,U)}if(Ce(b))return b;throw J(b),we(b,A)},I=e.filter(E=>E.accept==="readWrite"||(v?E.accept==="read":E.accept==="write")),M=await T(I);return D([...M.hosts].reverse(),M.getTimeout)}function q(h,p={}){let v=()=>P(h,p,A).then(g=>de(g)),A=h.useReadTransporter||h.method==="GET";if((p.cacheable||h.cacheable)!==!0)return v();let R={request:h,requestOptions:p,transporter:{queryParameters:c,headers:s}};return n.get(R,()=>r.get(R,()=>r.set(R,v()).then(g=>Promise.all([r.delete(R),g]),g=>Promise.all([r.delete(R),Promise.reject(g)])).then(([g,x])=>x)),{miss:g=>n.set(R,g)})}function B(h,p={}){let v=h.useReadTransporter||h.method==="GET";return P(h,p,v).then(A=>xe(A))}async function*fe(h,p={}){if(!i.sendStream)throw new Error("This requester does not support streaming");let v=ee(h,p),A=te(s,h.headers,p.headers);A.accept="text/event-stream";let H=h.method==="GET"?{...h.data,...p.data}:{},R={...c,...h.queryParameters,...H};if(m.value&&(R["x-algolia-agent"]=m.value),p&&p.queryParameters)for(let I of Object.keys(p.queryParameters))!p.queryParameters[I]||Object.prototype.toString.call(p.queryParameters[I])==="[object Object]"?R[I]=p.queryParameters[I]:R[I]=p.queryParameters[I].toString();u(A,R);let g=h.useReadTransporter||h.method==="GET",x=e.filter(I=>I.accept==="readWrite"||(g?I.accept==="read":I.accept==="write")),W=(await T(x)).hosts[0];if(!W)throw new Y([]);let S={...y,...p.timeouts},O={data:v,headers:A,method:h.method,url:Z(W,h.path,R),connectTimeout:S.connect,responseTimeout:g?S.read:S.write},D=await i.sendStream(O);yield*Ee(D)}return{hostsCache:t,requester:i,timeouts:y,logger:o,algoliaAgent:m,baseHeaders:s,baseQueryParameters:c,requestIdChannel:l,hosts:e,request:q,requestWithHttpInfo:B,requestStream:fe,requestsCache:r,responsesCache:n}}function f(e,t,s){if(s==null||typeof s=="string"&&s.length===0)throw new Error(`Parameter \`${e}\` is required when calling \`${t}\`.`)}function De(e){let t={};for(let s of e.trim().split(/[\r\n]+/)){let o=s.indexOf(": ");o>0&&(t[s.slice(0,o).toLowerCase()]=s.slice(o+2))}return t}function he(){function e(t){return new Promise(s=>{let o=new XMLHttpRequest;o.open(t.method,t.url,!0),Object.keys(t.headers).forEach(i=>o.setRequestHeader(i,t.headers[i]));let c=(i,r)=>setTimeout(()=>{o.abort(),s({status:0,content:r,isTimedOut:!0})},i),m=c(t.connectTimeout,"Connection timeout"),y;o.onreadystatechange=()=>{o.readyState>o.OPENED&&y===void 0&&(clearTimeout(m),y=c(t.responseTimeout,"Socket timeout"))},o.onerror=()=>{o.status===0&&(clearTimeout(m),clearTimeout(y),s({content:o.responseText||"Network request failed",status:o.status,isTimedOut:!1}))},o.onload=()=>{clearTimeout(m),clearTimeout(y),s({content:o.responseText,headers:De(o.getAllResponseHeaders()),status:o.status,isTimedOut:!1})},o.send(t.data)})}return{send:e}}var k="1.23.0",F=["de","us"];function Le(e){return[{url:e?"analytics.{region}.algolia.com".replace("{region}",e):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function pe({appId:e,apiKey:t,authMode:s,algoliaAgents:o,region:c,...m}){let y=ne(e,t,s),i=me({hosts:Le(c),...m,algoliaAgent:ae({algoliaAgents:o,client:"AbtestingV3",version:k}),baseHeaders:{"content-type":"text/plain",...y.headers(),...m.baseHeaders},baseQueryParameters:{...y.queryParameters(),...m.baseQueryParameters}});return{transporter:i,appId:e,apiKey:t,clearCache(){return Promise.all([i.requestsCache.clear(),i.responsesCache.clear()]).then(()=>{})},get _ua(){return i.algoliaAgent.value},addAlgoliaAgent(r,n){i.algoliaAgent.add({segment:r,version:n})},setClientApiKey({apiKey:r}){!s||s==="WithinHeaders"?i.baseHeaders["x-algolia-api-key"]=r:i.baseQueryParameters["x-algolia-api-key"]=r},addABTests(r,n){f("addABTestsRequest","addABTests",r),f("addABTestsRequest.name","addABTests",r.name),f("addABTestsRequest.variants","addABTests",r.variants),f("addABTestsRequest.metrics","addABTests",r.metrics),f("addABTestsRequest.endAt","addABTests",r.endAt);let u={method:"POST",path:"/3/abtests",queryParameters:{},headers:{},data:r};return i.request(u,n)},addABTestsWithHTTPInfo(r,n){f("addABTestsRequest","addABTestsWithHTTPInfo",r),f("addABTestsRequest.name","addABTestsWithHTTPInfo",r.name),f("addABTestsRequest.variants","addABTestsWithHTTPInfo",r.variants),f("addABTestsRequest.metrics","addABTestsWithHTTPInfo",r.metrics),f("addABTestsRequest.endAt","addABTestsWithHTTPInfo",r.endAt);let u={method:"POST",path:"/3/abtests",queryParameters:{},headers:{},data:r};return i.requestWithHttpInfo(u,n)},customDelete({path:r,parameters:n},a){f("path","customDelete",r);let T={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return i.request(T,a)},customDeleteWithHTTPInfo({path:r,parameters:n},a){f("path","customDeleteWithHTTPInfo",r);let T={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return i.requestWithHttpInfo(T,a)},customGet({path:r,parameters:n},a){f("path","customGet",r);let T={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return i.request(T,a)},customGetWithHTTPInfo({path:r,parameters:n},a){f("path","customGetWithHTTPInfo",r);let T={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return i.requestWithHttpInfo(T,a)},customPost({path:r,parameters:n,body:a},d){f("path","customPost",r);let P={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return i.request(P,d)},customPostWithHTTPInfo({path:r,parameters:n,body:a},d){f("path","customPostWithHTTPInfo",r);let P={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return i.requestWithHttpInfo(P,d)},customPut({path:r,parameters:n,body:a},d){f("path","customPut",r);let P={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return i.request(P,d)},customPutWithHTTPInfo({path:r,parameters:n,body:a},d){f("path","customPutWithHTTPInfo",r);let P={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return i.requestWithHttpInfo(P,d)},deleteABTest({id:r},n){f("id","deleteABTest",r);let u={method:"DELETE",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.request(u,n)},deleteABTestWithHTTPInfo({id:r},n){f("id","deleteABTestWithHTTPInfo",r);let u={method:"DELETE",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.requestWithHttpInfo(u,n)},estimateABTest(r,n){f("estimateABTestRequest","estimateABTest",r),f("estimateABTestRequest.configuration","estimateABTest",r.configuration),f("estimateABTestRequest.variants","estimateABTest",r.variants);let u={method:"POST",path:"/3/abtests/estimate",queryParameters:{},headers:{},data:r};return i.request(u,n)},estimateABTestWithHTTPInfo(r,n){f("estimateABTestRequest","estimateABTestWithHTTPInfo",r),f("estimateABTestRequest.configuration","estimateABTestWithHTTPInfo",r.configuration),f("estimateABTestRequest.variants","estimateABTestWithHTTPInfo",r.variants);let u={method:"POST",path:"/3/abtests/estimate",queryParameters:{},headers:{},data:r};return i.requestWithHttpInfo(u,n)},getABTest({id:r},n){f("id","getABTest",r);let u={method:"GET",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.request(u,n)},getABTestWithHTTPInfo({id:r},n){f("id","getABTestWithHTTPInfo",r);let u={method:"GET",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.requestWithHttpInfo(u,n)},getTimeseries({id:r,startDate:n,endDate:a,metric:d},l){f("id","getTimeseries",r);let u="/3/abtests/{id}/timeseries".replace("{id}",encodeURIComponent(r)),T={},P={};n!==void 0&&(P.startDate=n.toString()),a!==void 0&&(P.endDate=a.toString()),d!==void 0&&(P.metric=d.toString());let q={method:"GET",path:u,queryParameters:P,headers:T};return i.request(q,l)},getTimeseriesWithHTTPInfo({id:r,startDate:n,endDate:a,metric:d},l){f("id","getTimeseriesWithHTTPInfo",r);let u="/3/abtests/{id}/timeseries".replace("{id}",encodeURIComponent(r)),T={},P={};n!==void 0&&(P.startDate=n.toString()),a!==void 0&&(P.endDate=a.toString()),d!==void 0&&(P.metric=d.toString());let q={method:"GET",path:u,queryParameters:P,headers:T};return i.requestWithHttpInfo(q,l)},listABTests({offset:r,limit:n,indexPrefix:a,indexSuffix:d,direction:l}={},u=void 0){let T="/3/abtests",P={},q={};r!==void 0&&(q.offset=r.toString()),n!==void 0&&(q.limit=n.toString()),a!==void 0&&(q.indexPrefix=a.toString()),d!==void 0&&(q.indexSuffix=d.toString()),l!==void 0&&(q.direction=l.toString());let B={method:"GET",path:T,queryParameters:q,headers:P};return i.request(B,u)},listABTestsWithHTTPInfo({offset:r,limit:n,indexPrefix:a,indexSuffix:d,direction:l}={},u=void 0){let T="/3/abtests",P={},q={};r!==void 0&&(q.offset=r.toString()),n!==void 0&&(q.limit=n.toString()),a!==void 0&&(q.indexPrefix=a.toString()),d!==void 0&&(q.indexSuffix=d.toString()),l!==void 0&&(q.direction=l.toString());let B={method:"GET",path:T,queryParameters:q,headers:P};return i.requestWithHttpInfo(B,u)},stopABTest({id:r},n){f("id","stopABTest",r);let u={method:"POST",path:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.request(u,n)},stopABTestWithHTTPInfo({id:r},n){f("id","stopABTestWithHTTPInfo",r);let u={method:"POST",path:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.requestWithHttpInfo(u,n)}}}function Bt(e,t,s,o){if(!e||typeof e!="string")throw new Error("`appId` is missing.");if(!t||typeof t!="string")throw new Error("`apiKey` is missing.");if(s&&(typeof s!="string"||!F.includes(s)))throw new Error(`\`region\` must be one of the following: ${F.join(", ")}`);let{compression:c,...m}=o||{};return pe({appId:e,apiKey:t,region:s,timeouts:{connect:1e3,read:2e3,write:3e4},logger:ie(),requester:he(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:_(),requestsCache:_({serializable:!1}),hostsCache:w({caches:[oe({key:`${k}-${e}`}),_()]}),...m})}export{Bt as abtestingV3Client,k as apiClientVersion};
6
6
  //# sourceMappingURL=browser.min.js.map