2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
function J(r){let e,o=`algolia-client-js-${r.key}`;function t(){return e===void 0&&(e=r.localStorage||window.localStorage),e}function a(){return JSON.parse(t().getItem(o)||"{}")}function l(n){t().setItem(o,JSON.stringify(n))}function p(){let n=r.timeToLive?r.timeToLive*1e3:null,s=a(),i=Object.fromEntries(Object.entries(s).filter(([,h])=>h.timestamp!==void 0));if(l(i),!n)return;let c=Object.fromEntries(Object.entries(i).filter(([,h])=>{let P=new Date().getTime();return!(h.timestamp+n<P)}));l(c)}return{get(n,s,i={miss:()=>Promise.resolve()}){return Promise.resolve().then(()=>(p(),a()[JSON.stringify(n)])).then(c=>Promise.all([c?c.value:s(),c!==void 0])).then(([c,h])=>Promise.all([c,h||i.miss(c)])).then(([c])=>c)},set(n,s){return Promise.resolve().then(()=>{let i=a();return i[JSON.stringify(n)]={timestamp:new Date().getTime(),value:s},t().setItem(o,JSON.stringify(i)),s})},delete(n){return Promise.resolve().then(()=>{let s=a();delete s[JSON.stringify(n)],t().setItem(o,JSON.stringify(s))})},clear(){return Promise.resolve().then(()=>{t().removeItem(o)})}}}function te(){return{get(r,e,o={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,o.miss(a)])).then(([a])=>a)},set(r,e){return Promise.resolve(e)},delete(r){return Promise.resolve()},clear(){return Promise.resolve()}}}function S(r){let e=[...r.caches],o=e.shift();return o===void 0?te():{get(t,a,l={miss:()=>Promise.resolve()}){return o.get(t,a,l).catch(()=>S({caches:e}).get(t,a,l))},set(t,a){return o.set(t,a).catch(()=>S({caches:e}).set(t,a))},delete(t){return o.delete(t).catch(()=>S({caches:e}).delete(t))},clear(){return o.clear().catch(()=>S({caches:e}).clear())}}}function A(r={serializable:!0}){let e={};return{get(o,t,a={miss:()=>Promise.resolve()}){let l=JSON.stringify(o);if(l in e)return Promise.resolve(r.serializable?JSON.parse(e[l]):e[l]);let p=t();return p.then(n=>a.miss(n)).then(()=>p)},set(o,t){return e[JSON.stringify(o)]=r.serializable?JSON.stringify(t):t,Promise.resolve(t)},delete(o){return delete e[JSON.stringify(o)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}function oe(r){let e={value:`Algolia for JavaScript (${r})`,add(o){let t=`; ${o.segment}${o.version!==void 0?` (${o.version})`:""}`;return e.value.indexOf(t)===-1&&(e.value=`${e.value}${t}`),e}};return e}function Q(r,e,o="WithinHeaders"){let t={"x-algolia-api-key":e,"x-algolia-application-id":r};return{headers(){return o==="WithinHeaders"?t:{}},queryParameters(){return o==="WithinQueryParameters"?t:{}}}}function M({algoliaAgents:r,client:e,version:o}){let t=oe(o).add({segment:e,version:o});return r.forEach(a=>t.add(a)),t}function F(){return{debug(r,e){return Promise.resolve()},info(r,e){return Promise.resolve()},error(r,e){return Promise.resolve()}}}var se=750,G=120*1e3;function W(r,e="up"){let o=Date.now();function t(){return e==="up"||Date.now()-o>G}function a(){return e==="timed out"&&Date.now()-o<=G}return{...r,status:e,lastUpdate:o,isUp:t,isTimedOut:a}}var B=class extends Error{name="AlgoliaError";constructor(r,e){super(r),e&&(this.name=e)}};var X=class extends B{stackTrace;constructor(r,e,o){super(r,o),this.stackTrace=e}},ae=class extends X{constructor(r){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",r,"RetryError")}},U=class extends X{status;constructor(r,e,o,t="ApiError"){super(r,o,t),this.status=e}},ne=class extends B{response;constructor(r,e){super(r,"DeserializationError"),this.response=e}},ie=class extends U{error;constructor(r,e,o,t){super(r,e,t,"DetailedApiError"),this.error=o}};function ce(r,e,o){let t=le(o),a=`${r.protocol}://${r.url}${r.port?`:${r.port}`:""}/${e.charAt(0)==="/"?e.substring(1):e}`;return t.length&&(a+=`?${t}`),a}function le(r){return Object.keys(r).filter(e=>r[e]!==void 0).sort().map(e=>`${e}=${encodeURIComponent(Object.prototype.toString.call(r[e])==="[object Array]"?r[e].join(","):r[e]).replace(/\+/g,"%20")}`).join("&")}function ue(r,e){if(r.method==="GET"||r.data===void 0&&e.data===void 0)return;let o=Array.isArray(r.data)?r.data:{...r.data,...e.data};return JSON.stringify(o)}function me(r,e,o){let t={Accept:"application/json",...r,...e,...o},a={};return Object.keys(t).forEach(l=>{let p=t[l];a[l.toLowerCase()]=p}),a}function de(r){try{return JSON.parse(r.content)}catch(e){throw new ne(e.message,r)}}function pe({content:r,status:e},o){try{let t=JSON.parse(r);return"error"in t?new ie(t.message,e,t.error,o):new U(t.message,e,o)}catch{}return new U(r,e,o)}function he({isTimedOut:r,status:e}){return!r&&~~e===0}function fe({isTimedOut:r,status:e}){return r||he({isTimedOut:r,status:e})||~~(e/100)!==2&&~~(e/100)!==4}function Pe({status:r}){return~~(r/100)===2}function ge(r){return r.map(e=>K(e))}function K(r){let e=r.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...r,request:{...r.request,headers:{...r.request.headers,...e}}}}function V({hosts:r,hostsCache:e,baseHeaders:o,logger:t,baseQueryParameters:a,algoliaAgent:l,timeouts:p,requester:n,requestsCache:s,responsesCache:i,compress:c,compression:h}){async function P(u){let d=await Promise.all(u.map(m=>e.get(m,()=>Promise.resolve(W(m))))),R=d.filter(m=>m.isUp()),E=d.filter(m=>m.isTimedOut()),T=[...R,...E];return{hosts:T.length>0?T:u,getTimeout(m,q){return(E.length===0&&m===0?1:E.length+3+m)*q}}}async function g(u,d,R){let E=[],T=ue(u,d),y=me(o,u.headers,d.headers),m=h==="gzip"&&T!==void 0&&T.length>se&&(u.method==="POST"||u.method==="PUT");m&&c===void 0&&t.info("Compression is disabled because no compress method is available.");let q=m&&c!==void 0,k=q?await c(T):T;q&&(y["content-encoding"]="gzip");let ee=u.method==="GET"?{...u.data,...d.data}:{},x={...a,...u.queryParameters,...ee};if(l.value&&(x["x-algolia-agent"]=l.value),d&&d.queryParameters)for(let f of Object.keys(d.queryParameters))!d.queryParameters[f]||Object.prototype.toString.call(d.queryParameters[f])==="[object Object]"?x[f]=d.queryParameters[f]:x[f]=d.queryParameters[f].toString();let b=0,_=async(f,z)=>{let O=f.pop();if(O===void 0)throw new ae(ge(E));let I={...p,...d.timeouts},L={data:k,headers:y,method:u.method,url:ce(O,u.path,x),connectTimeout:z(b,I.connect),responseTimeout:z(b,R?I.read:I.write)},$=N=>{let j={request:L,response:N,host:O,triesLeft:f.length};return E.push(j),j},w=await n.send(L);if(fe(w)){let N=$(w);return w.isTimedOut&&b++,t.info("Retryable failure",K(N)),await e.set(O,W(O,w.isTimedOut?"timed out":"down")),_(f,z)}if(Pe(w))return de(w);throw $(w),pe(w,E)},re=r.filter(f=>f.accept==="readWrite"||(R?f.accept==="read":f.accept==="write")),H=await P(re);return _([...H.hosts].reverse(),H.getTimeout)}function v(u,d={}){let R=()=>g(u,d,E),E=u.useReadTransporter||u.method==="GET";if((d.cacheable||u.cacheable)!==!0)return R();let y={request:u,requestOptions:d,transporter:{queryParameters:a,headers:o}};return i.get(y,()=>s.get(y,()=>s.set(y,R()).then(m=>Promise.all([s.delete(y),m]),m=>Promise.all([s.delete(y),Promise.reject(m)])).then(([m,q])=>q)),{miss:m=>i.set(y,m)})}return{hostsCache:e,requester:n,timeouts:p,logger:t,algoliaAgent:l,baseHeaders:o,baseQueryParameters:a,hosts:r,request:v,requestsCache:s,responsesCache:i}}function Y(){function r(e){return new Promise(o=>{let t=new XMLHttpRequest;t.open(e.method,e.url,!0),Object.keys(e.headers).forEach(n=>t.setRequestHeader(n,e.headers[n]));let a=(n,s)=>setTimeout(()=>{t.abort(),o({status:0,content:s,isTimedOut:!0})},n),l=a(e.connectTimeout,"Connection timeout"),p;t.onreadystatechange=()=>{t.readyState>t.OPENED&&p===void 0&&(clearTimeout(l),p=a(e.responseTimeout,"Socket timeout"))},t.onerror=()=>{t.status===0&&(clearTimeout(l),clearTimeout(p),o({content:t.responseText||"Network request failed",status:t.status,isTimedOut:!1}))},t.onload=()=>{clearTimeout(l),clearTimeout(p),o({content:t.responseText,status:t.status,isTimedOut:!1})},t.send(e.data)})}return{send:r}}var C="5.52.0",D=["eu","us"];function ye(r){return[{url:"personalization.{region}.algolia.com".replace("{region}",r),accept:"readWrite",protocol:"https"}]}function Z({appId:r,apiKey:e,authMode:o,algoliaAgents:t,region:a,...l}){let p=Q(r,e,o),n=V({hosts:ye(a),...l,algoliaAgent:M({algoliaAgents:t,client:"Personalization",version:C}),baseHeaders:{"content-type":"text/plain",...p.headers(),...l.baseHeaders},baseQueryParameters:{...p.queryParameters(),...l.baseQueryParameters}});return{transporter:n,appId:r,apiKey:e,clearCache(){return Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then(()=>{})},get _ua(){return n.algoliaAgent.value},addAlgoliaAgent(s,i){n.algoliaAgent.add({segment:s,version:i})},setClientApiKey({apiKey:s}){!o||o==="WithinHeaders"?n.baseHeaders["x-algolia-api-key"]=s:n.baseQueryParameters["x-algolia-api-key"]=s},customDelete({path:s,parameters:i},c){if(!s)throw new Error("Parameter `path` is required when calling `customDelete`.");let v={method:"DELETE",path:"/{path}".replace("{path}",s),queryParameters:i||{},headers:{}};return n.request(v,c)},customGet({path:s,parameters:i},c){if(!s)throw new Error("Parameter `path` is required when calling `customGet`.");let v={method:"GET",path:"/{path}".replace("{path}",s),queryParameters:i||{},headers:{}};return n.request(v,c)},customPost({path:s,parameters:i,body:c},h){if(!s)throw new Error("Parameter `path` is required when calling `customPost`.");let u={method:"POST",path:"/{path}".replace("{path}",s),queryParameters:i||{},headers:{},data:c||{}};return n.request(u,h)},customPut({path:s,parameters:i,body:c},h){if(!s)throw new Error("Parameter `path` is required when calling `customPut`.");let u={method:"PUT",path:"/{path}".replace("{path}",s),queryParameters:i||{},headers:{},data:c||{}};return n.request(u,h)},deleteUserProfile({userToken:s},i){if(!s)throw new Error("Parameter `userToken` is required when calling `deleteUserProfile`.");let g={method:"DELETE",path:"/1/profiles/{userToken}".replace("{userToken}",encodeURIComponent(s)),queryParameters:{},headers:{}};return n.request(g,i)},getPersonalizationStrategy(s){let P={method:"GET",path:"/1/strategies/personalization",queryParameters:{},headers:{}};return n.request(P,s)},getUserTokenProfile({userToken:s},i){if(!s)throw new Error("Parameter `userToken` is required when calling `getUserTokenProfile`.");let g={method:"GET",path:"/1/profiles/personalization/{userToken}".replace("{userToken}",encodeURIComponent(s)),queryParameters:{},headers:{}};return n.request(g,i)},setPersonalizationStrategy(s,i){if(!s)throw new Error("Parameter `personalizationStrategyParams` is required when calling `setPersonalizationStrategy`.");if(!s.eventsScoring)throw new Error("Parameter `personalizationStrategyParams.eventsScoring` is required when calling `setPersonalizationStrategy`.");if(!s.facetsScoring)throw new Error("Parameter `personalizationStrategyParams.facetsScoring` is required when calling `setPersonalizationStrategy`.");if(!s.personalizationImpact)throw new Error("Parameter `personalizationStrategyParams.personalizationImpact` is required when calling `setPersonalizationStrategy`.");let g={method:"POST",path:"/1/strategies/personalization",queryParameters:{},headers:{},data:s};return n.request(g,i)}}}function Ge(r,e,o,t){if(!r||typeof r!="string")throw new Error("`appId` is missing.");if(!e||typeof e!="string")throw new Error("`apiKey` is missing.");if(!o||o&&(typeof o!="string"||!D.includes(o)))throw new Error(`\`region\` is required and must be one of the following: ${D.join(", ")}`);let{compression:a,...l}=t||{};return Z({appId:r,apiKey:e,region:o,timeouts:{connect:1e3,read:2e3,write:3e4},logger:F(),requester:Y(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:A(),requestsCache:A({serializable:!1}),hostsCache:S({caches:[J({key:`${C}-${r}`}),A()]}),...l})}export{C as apiClientVersion,Ge as personalizationClient};
|
|
//# sourceMappingURL=browser.min.js.map
|