Files
JiboViteDocs/node_modules/@algolia/recommend/dist/builds/browser.min.js
Your Name 38652eb9b5 Initalize
2026-05-03 12:12:57 -04:00

2 lines
14 KiB
JavaScript

function z(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 u(s){t().setItem(o,JSON.stringify(s))}function m(){let s=r.timeToLive?r.timeToLive*1e3:null,n=a(),i=Object.fromEntries(Object.entries(n).filter(([,f])=>f.timestamp!==void 0));if(u(i),!s)return;let c=Object.fromEntries(Object.entries(i).filter(([,f])=>{let P=new Date().getTime();return!(f.timestamp+s<P)}));u(c)}return{get(s,n,i={miss:()=>Promise.resolve()}){return Promise.resolve().then(()=>(m(),a()[JSON.stringify(s)])).then(c=>Promise.all([c?c.value:n(),c!==void 0])).then(([c,f])=>Promise.all([c,f||i.miss(c)])).then(([c])=>c)},set(s,n){return Promise.resolve().then(()=>{let i=a();return i[JSON.stringify(s)]={timestamp:new Date().getTime(),value:n},t().setItem(o,JSON.stringify(i)),n})},delete(s){return Promise.resolve().then(()=>{let n=a();delete n[JSON.stringify(s)],t().setItem(o,JSON.stringify(n))})},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 v(r){let e=[...r.caches],o=e.shift();return o===void 0?te():{get(t,a,u={miss:()=>Promise.resolve()}){return o.get(t,a,u).catch(()=>v({caches:e}).get(t,a,u))},set(t,a){return o.set(t,a).catch(()=>v({caches:e}).set(t,a))},delete(t){return o.delete(t).catch(()=>v({caches:e}).delete(t))},clear(){return o.clear().catch(()=>v({caches:e}).clear())}}}function S(r={serializable:!0}){let e={};return{get(o,t,a={miss:()=>Promise.resolve()}){let u=JSON.stringify(o);if(u in e)return Promise.resolve(r.serializable?JSON.parse(e[u]):e[u]);let m=t();return m.then(s=>a.miss(s)).then(()=>m)},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 J(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 Q({algoliaAgents:r,client:e,version:o}){let t=oe(o).add({segment:e,version:o});return r.forEach(a=>t.add(a)),t}function M(){return{debug(r,e){return Promise.resolve()},info(r,e){return Promise.resolve()},error(r,e){return Promise.resolve()}}}var se=750,j=120*1e3;function W(r,e="up"){let o=Date.now();function t(){return e==="up"||Date.now()-o>j}function a(){return e==="timed out"&&Date.now()-o<=j}return{...r,status:e,lastUpdate:o,isUp:t,isTimedOut:a}}var F=class extends Error{name="AlgoliaError";constructor(r,e){super(r),e&&(this.name=e)}};var B=class extends F{stackTrace;constructor(r,e,o){super(r,o),this.stackTrace=e}},ne=class extends B{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 B{status;constructor(r,e,o,t="ApiError"){super(r,o,t),this.status=e}},ae=class extends F{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 X(r){let e=r;for(let o=r.length-1;o>0;o--){let t=Math.floor(Math.random()*(o+1)),a=r[o];e[o]=r[t],e[t]=a}return e}function me(r,e,o){let t=ce(o),a=`${r.protocol}://${r.url}${r.port?`:${r.port}`:""}/${e.charAt(0)==="/"?e.substring(1):e}`;return t.length&&(a+=`?${t}`),a}function ce(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 le(r,e,o){let t={Accept:"application/json",...r,...e,...o},a={};return Object.keys(t).forEach(u=>{let m=t[u];a[u.toLowerCase()]=m}),a}function de(r){try{return JSON.parse(r.content)}catch(e){throw new ae(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 fe({isTimedOut:r,status:e}){return!r&&~~e===0}function he({isTimedOut:r,status:e}){return r||fe({isTimedOut:r,status:e})||~~(e/100)!==2&&~~(e/100)!==4}function Pe({status:r}){return~~(r/100)===2}function Re(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:u,timeouts:m,requester:s,requestsCache:n,responsesCache:i,compress:c,compression:f}){async function P(d){let p=await Promise.all(d.map(l=>e.get(l,()=>Promise.resolve(W(l))))),E=p.filter(l=>l.isUp()),y=p.filter(l=>l.isTimedOut()),w=[...E,...y];return{hosts:w.length>0?w:d,getTimeout(l,T){return(y.length===0&&l===0?1:y.length+3+l)*T}}}async function R(d,p,E){let y=[],w=ue(d,p),x=le(o,d.headers,p.headers),l=f==="gzip"&&w!==void 0&&w.length>se&&(d.method==="POST"||d.method==="PUT");l&&c===void 0&&t.info("Compression is disabled because no compress method is available.");let T=l&&c!==void 0,_=T?await c(w):w;T&&(x["content-encoding"]="gzip");let ee=d.method==="GET"?{...d.data,...p.data}:{},A={...a,...d.queryParameters,...ee};if(u.value&&(A["x-algolia-agent"]=u.value),p&&p.queryParameters)for(let g of Object.keys(p.queryParameters))!p.queryParameters[g]||Object.prototype.toString.call(p.queryParameters[g])==="[object Object]"?A[g]=p.queryParameters[g]:A[g]=p.queryParameters[g].toString();let b=0,k=async(g,I)=>{let O=g.pop();if(O===void 0)throw new ne(Re(y));let N={...m,...p.timeouts},L={data:_,headers:x,method:d.method,url:me(O,d.path,A),connectTimeout:I(b,N.connect),responseTimeout:I(b,E?N.read:N.write)},$=D=>{let G={request:L,response:D,host:O,triesLeft:g.length};return y.push(G),G},q=await s.send(L);if(he(q)){let D=$(q);return q.isTimedOut&&b++,t.info("Retryable failure",K(D)),await e.set(O,W(O,q.isTimedOut?"timed out":"down")),k(g,I)}if(Pe(q))return de(q);throw $(q),pe(q,y)},re=r.filter(g=>g.accept==="readWrite"||(E?g.accept==="read":g.accept==="write")),H=await P(re);return k([...H.hosts].reverse(),H.getTimeout)}function h(d,p={}){let E=()=>R(d,p,y),y=d.useReadTransporter||d.method==="GET";if((p.cacheable||d.cacheable)!==!0)return E();let x={request:d,requestOptions:p,transporter:{queryParameters:a,headers:o}};return i.get(x,()=>n.get(x,()=>n.set(x,E()).then(l=>Promise.all([n.delete(x),l]),l=>Promise.all([n.delete(x),Promise.reject(l)])).then(([l,T])=>T)),{miss:l=>i.set(x,l)})}return{hostsCache:e,requester:s,timeouts:m,logger:t,algoliaAgent:u,baseHeaders:o,baseQueryParameters:a,hosts:r,request:h,requestsCache:n,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(s=>t.setRequestHeader(s,e.headers[s]));let a=(s,n)=>setTimeout(()=>{t.abort(),o({status:0,content:n,isTimedOut:!0})},s),u=a(e.connectTimeout,"Connection timeout"),m;t.onreadystatechange=()=>{t.readyState>t.OPENED&&m===void 0&&(clearTimeout(u),m=a(e.responseTimeout,"Socket timeout"))},t.onerror=()=>{t.status===0&&(clearTimeout(u),clearTimeout(m),o({content:t.responseText||"Network request failed",status:t.status,isTimedOut:!1}))},t.onload=()=>{clearTimeout(u),clearTimeout(m),o({content:t.responseText,status:t.status,isTimedOut:!1})},t.send(e.data)})}return{send:r}}var C="5.52.0";function ge(r){return[{url:`${r}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${r}.algolia.net`,accept:"write",protocol:"https"}].concat(X([{url:`${r}-1.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${r}-2.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${r}-3.algolianet.com`,accept:"readWrite",protocol:"https"}]))}function Z({appId:r,apiKey:e,authMode:o,algoliaAgents:t,...a}){let u=J(r,e,o),m=V({hosts:ge(r),...a,algoliaAgent:Q({algoliaAgents:t,client:"Recommend",version:C}),baseHeaders:{"content-type":"text/plain",...u.headers(),...a.baseHeaders},baseQueryParameters:{...u.queryParameters(),...a.baseQueryParameters}});return{transporter:m,appId:r,apiKey:e,clearCache(){return Promise.all([m.requestsCache.clear(),m.responsesCache.clear()]).then(()=>{})},get _ua(){return m.algoliaAgent.value},addAlgoliaAgent(s,n){m.algoliaAgent.add({segment:s,version:n})},setClientApiKey({apiKey:s}){!o||o==="WithinHeaders"?m.baseHeaders["x-algolia-api-key"]=s:m.baseQueryParameters["x-algolia-api-key"]=s},batchRecommendRules({indexName:s,model:n,recommendRule:i},c){if(!s)throw new Error("Parameter `indexName` is required when calling `batchRecommendRules`.");if(!n)throw new Error("Parameter `model` is required when calling `batchRecommendRules`.");let h={method:"POST",path:"/1/indexes/{indexName}/{model}/recommend/rules/batch".replace("{indexName}",encodeURIComponent(s)).replace("{model}",encodeURIComponent(n)),queryParameters:{},headers:{},data:i||{}};return m.request(h,c)},customDelete({path:s,parameters:n},i){if(!s)throw new Error("Parameter `path` is required when calling `customDelete`.");let R={method:"DELETE",path:"/{path}".replace("{path}",s),queryParameters:n||{},headers:{}};return m.request(R,i)},customGet({path:s,parameters:n},i){if(!s)throw new Error("Parameter `path` is required when calling `customGet`.");let R={method:"GET",path:"/{path}".replace("{path}",s),queryParameters:n||{},headers:{}};return m.request(R,i)},customPost({path:s,parameters:n,body:i},c){if(!s)throw new Error("Parameter `path` is required when calling `customPost`.");let h={method:"POST",path:"/{path}".replace("{path}",s),queryParameters:n||{},headers:{},data:i||{}};return m.request(h,c)},customPut({path:s,parameters:n,body:i},c){if(!s)throw new Error("Parameter `path` is required when calling `customPut`.");let h={method:"PUT",path:"/{path}".replace("{path}",s),queryParameters:n||{},headers:{},data:i||{}};return m.request(h,c)},deleteRecommendRule({indexName:s,model:n,objectID:i},c){if(!s)throw new Error("Parameter `indexName` is required when calling `deleteRecommendRule`.");if(!n)throw new Error("Parameter `model` is required when calling `deleteRecommendRule`.");if(!i)throw new Error("Parameter `objectID` is required when calling `deleteRecommendRule`.");let h={method:"DELETE",path:"/1/indexes/{indexName}/{model}/recommend/rules/{objectID}".replace("{indexName}",encodeURIComponent(s)).replace("{model}",encodeURIComponent(n)).replace("{objectID}",encodeURIComponent(i)),queryParameters:{},headers:{}};return m.request(h,c)},getRecommendRule({indexName:s,model:n,objectID:i},c){if(!s)throw new Error("Parameter `indexName` is required when calling `getRecommendRule`.");if(!n)throw new Error("Parameter `model` is required when calling `getRecommendRule`.");if(!i)throw new Error("Parameter `objectID` is required when calling `getRecommendRule`.");let h={method:"GET",path:"/1/indexes/{indexName}/{model}/recommend/rules/{objectID}".replace("{indexName}",encodeURIComponent(s)).replace("{model}",encodeURIComponent(n)).replace("{objectID}",encodeURIComponent(i)),queryParameters:{},headers:{}};return m.request(h,c)},getRecommendStatus({indexName:s,model:n,taskID:i},c){if(!s)throw new Error("Parameter `indexName` is required when calling `getRecommendStatus`.");if(!n)throw new Error("Parameter `model` is required when calling `getRecommendStatus`.");if(!i)throw new Error("Parameter `taskID` is required when calling `getRecommendStatus`.");let h={method:"GET",path:"/1/indexes/{indexName}/{model}/task/{taskID}".replace("{indexName}",encodeURIComponent(s)).replace("{model}",encodeURIComponent(n)).replace("{taskID}",encodeURIComponent(i)),queryParameters:{},headers:{}};return m.request(h,c)},getRecommendations(s,n){if(s&&Array.isArray(s)&&(s={requests:s}),!s)throw new Error("Parameter `getRecommendationsParams` is required when calling `getRecommendations`.");if(!s.requests)throw new Error("Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.");let P={method:"POST",path:"/1/indexes/*/recommendations",queryParameters:{},headers:{},data:s,useReadTransporter:!0,cacheable:!0};return m.request(P,n)},searchRecommendRules({indexName:s,model:n,searchRecommendRulesParams:i},c){if(!s)throw new Error("Parameter `indexName` is required when calling `searchRecommendRules`.");if(!n)throw new Error("Parameter `model` is required when calling `searchRecommendRules`.");let h={method:"POST",path:"/1/indexes/{indexName}/{model}/recommend/rules/search".replace("{indexName}",encodeURIComponent(s)).replace("{model}",encodeURIComponent(n)),queryParameters:{},headers:{},data:i||{},useReadTransporter:!0,cacheable:!0};return m.request(h,c)}}}function qt(r,e,o){if(!r||typeof r!="string")throw new Error("`appId` is missing.");if(!e||typeof e!="string")throw new Error("`apiKey` is missing.");let{compression:t,...a}=o||{};return Z({appId:r,apiKey:e,timeouts:{connect:1e3,read:2e3,write:3e4},logger:M(),requester:Y(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:S(),requestsCache:S({serializable:!1}),hostsCache:v({caches:[z({key:`${C}-${r}`}),S()]}),...a})}export{C as apiClientVersion,qt as recommendClient};
//# sourceMappingURL=browser.min.js.map