oc-client-browser
Version:
2 lines • 11.1 kB
JavaScript
(()=>{var e=[],L={"oc-template-handlebars":{externals:[{global:"Handlebars",url:"https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.7/handlebars.runtime.min.js"}]},"oc-template-jade":{externals:[{global:"jade",url:"https://cdnjs.cloudflare.com/ajax/libs/jade/1.11.0/runtime.min.js"}]},"oc-template-es6":{externals:[]}},T=-1,k=-2,_=-3,q=-4,H=-5,P=-6,M=-7,R="B",D="D",I="E",$="M",B="N",J="P",W="R",F="S",V="Y",G="U",Y="Z",Z=class{promise;resolve;reject;constructor(){this.promise=new Promise((e,r)=>{this.resolve=e,this.reject=r})}};Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var z="undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:void 0;function l(e){const{hydrated:r,values:t}=this;if("number"==typeof e)return a.call(this,e);if(!Array.isArray(e)||!e.length)throw new SyntaxError;var n=t.length;for(const o of e)t.push(o);return r.length=t.length,a.call(this,n)}function a(e){const{hydrated:t,values:r,deferred:n,plugins:o}=this;let a;const s=[[e,e=>{a=e}]];let l=[];for(;0<s.length;){const[y,v]=s.pop();switch(y){case M:v(void 0);continue;case H:v(null);continue;case k:v(NaN);continue;case P:v(1/0);continue;case _:v(-1/0);continue;case q:v(-0);continue}if(t[y])v(t[y]);else{const w=r[y];if(w&&"object"==typeof w)if(Array.isArray(w))if("string"==typeof w[0]){var[i,c,d]=w;switch(i){case D:v(t[y]=new Date(c));continue;case G:v(t[y]=new URL(c));continue;case R:v(t[y]=BigInt(c));continue;case W:v(t[y]=new RegExp(c,d));continue;case V:v(t[y]=Symbol.for(c));continue;case F:const b=new Set;t[y]=b;for(let e=1;e<w.length;e++)s.push([w[e],e=>{b.add(e)}]);v(b);continue;case $:const g=new Map;t[y]=g;for(let e=1;e<w.length;e+=2){const x=[];s.push([w[e+1],e=>{x[1]=e}]),s.push([w[e],e=>{x[0]=e}]),l.push(()=>{g.set(x[0],x[1])})}v(g);continue;case B:const j=Object.create(null);t[y]=j;for(const S of Object.keys(c).reverse()){const E=[];s.push([c[S],e=>{E[1]=e}]),s.push([Number(S.slice(1)),e=>{E[0]=e}]),l.push(()=>{j[E[0]]=E[1]})}v(j);continue;case J:t[c]?v(t[y]=t[c]):(p=new Z,n[c]=p,v(t[y]=p.promise));continue;case I:var[,u,p]=w,u=new(p&&z&&z[p]?z[p]:Error)(u);t[y]=u,v(u);continue;case Y:v(t[y]=t[c]);continue;default:if(Array.isArray(o)){const N=[];var h=w.slice(1);for(let r=0;r<h.length;r++){var f=h[r];s.push([f,e=>{N[r]=e}])}l.push(()=>{for(const r of o){var e=r(w[0],...N);if(e)return void v(t[y]=e.value)}throw new SyntaxError});continue}throw new SyntaxError}}else{const A=[];t[y]=A;for(let r=0;r<w.length;r++){var m=w[r];m!==T&&s.push([m,e=>{A[r]=e}])}v(A)}else{const C={};t[y]=C;for(const U of Object.keys(w).reverse()){const O=[];s.push([w[U],e=>{O[1]=e}]),s.push([Number(U.slice(1)),e=>{O[0]=e}]),l.push(()=>{C[O[0]]=O[1]})}v(C)}else t[y]=w,v(w)}}for(;0<l.length;)l.pop()();return a}async function K(e,r){var r=(r??{})["plugins"];const t=new Z,n=e.pipeThrough(function(){const o=new TextDecoder;let a="";return new TransformStream({transform(e,r){e=o.decode(e,{stream:!0});const t=(a+e).split("\n");a=t.pop()||"";for(const n of t)r.enqueue(n)},flush(e){a&&e.enqueue(a)}})}()).getReader(),o={values:[],hydrated:[],deferred:{},plugins:r};r=await async function(e){e=await e.read();if(!e.value)throw new SyntaxError;let r;try{r=JSON.parse(e.value)}catch(e){throw new SyntaxError}return{done:e.done,value:l.call(this,r)}}.call(o,n);let a=t.promise;return r.done?t.resolve():a=async function(e){let r=await e.read();for(;!r.done;)if(r.value){const o=r.value;switch(o[0]){case J:{var t=o.indexOf(":"),n=Number(o.slice(1,t));const a=this.deferred[n];if(!a)throw new Error(`Deferred ID ${n} not found in stream`);n=o.slice(t+1);let e;try{e=JSON.parse(n)}catch(e){throw new SyntaxError}t=l.call(this,e);a.resolve(t);break}case I:{n=o.indexOf(":"),t=Number(o.slice(1,n));const s=this.deferred[t];if(!s)throw new Error(`Deferred ID ${t} not found in stream`);n=o.slice(n+1);let e;try{e=JSON.parse(n)}catch(e){throw new SyntaxError}n=l.call(this,e);s.reject(n);break}default:throw new SyntaxError}r=await e.read()}}.call(o,n).then(t.resolve).catch(e=>{for(const r of Object.values(o.deferred))r.reject(e);t.reject(e)}),{done:a.then(()=>n.closed),value:r.value}}var r=window.oc||{},t=new class{loaded=new Set;errors=new Set;parse(e){const[r,t]=e.split("#");var n=r.startsWith("module:"),o=r.replace(/^module:/,""),[a,e]=(t?.split("=")||[]).reduce((e,r)=>r.startsWith("=")?[r.slice(1),e[1]]:[e[0],r],[]);return{src:o,isModule:n,fallback:a,id:e}}async load(...e){for(const r of e)Array.isArray(r)?await Promise.all(r.map(e=>this._load(e))):"function"==typeof r?await r():await this._load(r);return this}async _load(r){if(!this.loaded.has(r))try{r.endsWith(".css")?await this.css(r):await this.js(r),this.loaded.add(r)}catch(e){for(const t of this.errors)t(r);throw e}}js(e){const{src:n,isModule:o,fallback:a}=this.parse(e);return new Promise((e,r)=>{const t=document.createElement("script");t.type=o?"module":"text/javascript",t.src=n,t.onload=e,t.onerror=()=>a?this._load(a).then(e).catch(r):r(),document.head.append(t)})}css(e){const n=this.parse(e)["src"];return new Promise((e,r)=>{const t=document.createElement("link");t.rel="stylesheet",t.href=n,t.onload=e,t.onerror=r,document.head.append(t)})}onError(e){return this.errors.add(e),this}};window.ljs=t,window.oc=function(i){if(i.status)return i;i.status="loading",i.conf=i.conf||{},i.cmd=i.cmd||[],i.renderedComponents=i.renderedComponents||{},i.clientVersion="2.0.0";let l=(e,r)=>{if(!r)throw e+" parameter is required"},s=document,c=window,d=()=>{},r=!1,t=!1,u={},p=setTimeout,n=i.cmd,h=i.conf,f=i.renderedComponents,m="data-rendered",y="data-rendering",v=e=>console.log(e),w=e=>h.debug&&console.log(e),b=e=>{if(!e.ok)throw e;return"x-text/stream"!==e.headers.get("Content-Type")?e.json():K(e.body).then(e=>e.value)},g=h.retryInterval||Number(5e3),j=h.retryLimit||Number(30),x="boolean"==typeof h.disableLoader&&h.disableLoader,S=h.retrySendNumber||!0,E=h.pollingInterval||500,a=h.tag||"oc-component",N="Failed to load % component "+j+" times. Giving up",A="Error rendering component: %, error: ",C="Failed to retrieve the component. Retrying in "+g/1e3+" seconds...",U=h.loadingMessage||"",O=(e,r)=>e.replace("%",r),T=L,o=e,k=(e,r)=>{(e=Array.isArray(e)?e:[e]).map(e=>{!r&&T[e.type]||(T[e.type]={externals:e.externals})})};h.templates&&k(h.templates,!0);let _=()=>{let e=h.globalHeaders;return{Accept:"application/vnd.oc.unrendered+json","Content-Type":"application/json",..."function"==typeof e?e():e}};i.addStylesToHead=e=>{let r=s.createElement("style");r.textContent=e,s.head.appendChild(r)};let q=()=>{i.ready(i.renderUnloadedComponents)};i.registerTemplates=e=>(k(e),q(),T),i.require=(t,e,r)=>{r||(r=e,e=t,t=void 0),"string"==typeof t&&(t=[t]);let n=()=>{let e=c;if(null!=t){for(var r in t)if(e=e[t[r]],!e)return;return e}};var o=()=>{r(n())};n()?o():ljs.load(e,o)};let H=(r,t,n)=>{var e;n||(n=t,t=[]),r.length?(e=r[0],i.require(e.global,e.url,e=>{H(r.slice(1),t.concat(e),n)})):n(t)};i.requireSeries=H;let P=(e,r,t)=>{let n=e.setAttribute.bind(e);var o=r.name,a=r.version;n("id",r.id),n(m,!0),n(y,!1),n("data-version",a),n("data-id",r.ocId),e.innerHTML=r.html,(e=>{for(var r of Array.from(e.querySelectorAll("script"))){let e=s.createElement("script");e.textContent=r.textContent;for(var t of Array.from(r.attributes))e.setAttribute(t.name,t.value);r.parentNode?.replaceChild(e,r)}})(e),r.key&&n("data-hash",r.key),o&&(n("data-name",o),f[o]={version:a},r.baseUrl&&(f[o].baseUrl=r.baseUrl),r.element=e,i.events.fire("oc:rendered",r)),t()},M=(n,o)=>{o=o||d;let e=n.version,r=n.baseUrl,t=n.name;l("version",e),l("baseUrl",r),l("name",t),n.action&&(r=`${r}~actions/${n.action}/${n.name}/${n.version||""}`);var a={...h.globalParameters,...n.parameters},s=n.action?a:{components:[{action:n.action,name:t,version:e,parameters:a}]},a=_();fetch(r,{method:"POST",headers:a,body:JSON.stringify(s)}).then(b).then(e=>{var r,t;n.action?o(null,e.data):(t=(r=e[0].response).error?r.details||r.error:null,o(t,r.data,e[0]))}).catch(o)};return i.getData=M,i.getAction=r=>new Promise((t,n)=>{var e=r.component;M({json:!0,name:e,...f[e],...r},(e,r)=>{if(e)n(e);else if(r.component){let e=r.component.props;delete e._staticPath,delete e._baseUrl,delete e._componentName,delete e._componentVersion,t(e)}else t()})}),i.build=e=>{l("baseUrl",e.baseUrl),l("name",e.name);var r=e=>e?e.match(/\/$/)?e:e+"/":"";let t=r(e.baseUrl)+r(e.name)+r(e.version);if(e.parameters){t+="?";for(var[n,o]of Object.entries(e.parameters))/[+&=]/.test(o)&&(o=encodeURIComponent(o)),t+=n+"="+o+"&";t=t.slice(0,-1)}return"<"+a+' href="'+t+'"></'+a+">"},i.ready=e=>{r?e():t?n.push(e):(t=!0,i.requireSeries(o,()=>{r=!0,t=!1,i.events=(()=>{let n={};return{fire(e,r){if(n[e])for(var t of n[e])t({type:e},r)},on(e,r){if(!r)throw new Error("Callback is required");n[e]||(n[e]=[]),n[e].push(r)},off(e,r){for(var t of e="string"==typeof e?[e]:e)n[t]&&(r?n[t]=n[t].filter(e=>e!==r):delete n[t])},reset(){n={}}}})(),e(),i.events.fire("oc:ready",i),i.status="ready",n.map(e=>{e(i)}),i.cmd={push:e=>e(i)}}))},i.render=(n,o,a)=>{i.ready(()=>{if(o&&1==o.__oc_emptyResponse)return a(null,"");let r=n.type;"jade"!=r&&"handlebars"!=r||(r="oc-template-"+r);let t=T[r];t?i.require(["oc","components",n.key],n.src,e=>{e?H(t.externals,()=>{try{a(null,("oc-template-handlebars"==r?c.Handlebars.template(e,[]):e)(o))}catch(e){a(""+e)}}):a(O("Error getting compiled view: %",n.src))}):a(O('Error loading component: view engine "%" not supported',n.type))})},i.renderNestedComponent=(o,a)=>{i.ready(()=>{let e=(o=o[0]||o).getAttribute.bind(o),t=o.setAttribute.bind(o);var r=e(y),n=e(m);"true"==r||"true"==n?p(a,E):(w("Unrendered component found. Trying to retrieve it..."),t(y,!0),x||(o.innerHTML='<div class="oc-loading">'+U+"</div>"),i.renderByHref({href:e("href"),id:e("id"),element:o},(e,r)=>{e||!r?(t(y,!1),t(m,!1),t("data-failed",!0),o.innerHTML="",i.events.fire("oc:failed",{originalError:e,data:r,component:o}),v(e),a()):P(o,r,a)}))})},i.renderByHref=(e,r,o)=>{o=o||r;let a=Math.floor(9999999999*Math.random()),t=e.retryNumber||+r||0,n=e.href||e,s=e.id||a,l=e.element;i.ready(()=>{var e,r;n?fetch((e=n,r={...h.globalParameters,...S?{__oc_Retry:t}:{}},e+(~e.indexOf("?")?"&":"?")+new URLSearchParams(r)),{headers:_()}).then(b).then(t=>{let n=t.template;t.data.id=a,t.data.element=l,i.render(n,t.data,(e,r)=>{e?o(O(A,t.href)+e):(w(O("Component '%' correctly rendered",n.src)),o(null,{id:s,ocId:a,html:r,baseUrl:t.baseUrl,key:n.key,version:t.version,name:t.name}))})}).catch(e=>{var r,t;e&&429==e.status&&(u[n]=0),v(C),r=n,t=e=>{i.renderByHref({href:n,retryNumber:e,id:s,element:l},o)},e=()=>{o(O(N,n))},null==u[r]&&(u[r]=j),u[r]<=0?e():(p(()=>{t(j-u[r]+1)},g),u[r]--)}):o(A+"Href parameter missing")})},i.renderUnloadedComponents=()=>{i.ready(()=>{let t=s.querySelectorAll(`${a}:not([data-rendered="true"]):not([data-failed="true"])`);t.forEach((e,r)=>{i.renderNestedComponent(e,()=>{r==t.length-1&&i.renderUnloadedComponents()})})})},i.load=(r,t,n)=>{i.ready(()=>{if(n=n||d,r){(r=r[0]||r).innerHTML="<"+a+' href="'+t+'" />';let e=r.querySelector(a);i.renderNestedComponent(e,()=>{n(e)})}})},q(),i}(r)})();
//# sourceMappingURL=oc-client.min.map