-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfat.min.js
2 lines (2 loc) · 7.24 KB
/
fat.min.js
1
2
"use strict";var _slicedToArray=function(e,t){if(Array.isArray(e))return e;for(var n,r=[],i=e[Symbol.iterator]();!(n=i.next()).done&&(r.push(n.value),!t||r.length!==t););return r};!function(){var e=function(e){this.defaults={url:window.location.pathname,backend:"httpjson"},this.configure(e)},t=function(e){this.options={},this.backends={},this.configure(e)},n={plugins:new Map,config:{},signals:new Map,configure:function(e){Object.assign(this.config.modules,e.modules),Object.assign(this.config.plugins,e.plugins),delete e.modules,delete e.plugins,Object.assign(this.config,e);for(var t in this.config.modules)n.hasOwnProperty(t)&&n[t].configure&&n[t].configure(this.config.modules[t]);jinja&&this.config.template_url&&(jinja.template_url=this.config.template_url)},register_module:function(e,t){Object.defineProperty(n,e,{value:new t(n.config.modules[e]),writable:!1})},register_backend:function(e,t,r){if(!n[e])throw new Error("no such module: "+e);n[e].register_backend&&n[e].register_backend(t,r)},register_plugin:function(e,t){if("function"!=typeof t.init)throw"["+e+"] bad plugin: no init";n.plugins.set(e,t)},setup_plugins:function(e){"string"==typeof e&&(e=[e]);for(var t,r=e[Symbol.iterator]();!(t=r.next()).done;){var i=t.value;if(this.plugins.has(i)){var o=this.plugins.get(i);o.init(n.config.plugins[i]||{})}}}};Object.defineProperty(n.config,"plugins",{writable:!1,value:{}}),Object.defineProperty(n.config,"modules",{writable:!1,value:{}}),n.fetch=function(e,t){return t=t||{},fetch(e,t).then(function(e){return 200===e.status||0===e.status?Promise.resolve(e):Promise.reject(new Error(e.statusText))}).then(function(e){return"json"==t.type?e.json():e.text()})},n.fetch_data=function(e){var t=n.config.static_url;return t.endsWith("/")||(t+="/"),t+="data/"+e+".json",n.fetch(t,{type:"json",headers:{Accept:"application/json"}})},n.add_listener=function(e,t,r){n.signals.has(e)||n.signals.set(e,new Map),n.signals.get(e).set(t,r)},n.remove_listener=function(e,t){n.signals.has(e)&&(n.signals.get(e)["delete"](t),n.signals.get(e).size||n.signals["delete"](e))},n.emit=function(e,t){if(n.signals.has(e))for(var r,i=n.signals.get(e),o=i[Symbol.iterator]();!(r=o.next()).done;){var s=r.value;s[0].call(s[1],t)}},window.Fat=n,n.url={stringify:function(e){var t=void 0===arguments[1]?"":arguments[1];if("string"==typeof e)return e;var r,i,o=[];for(var s in e)typeof e[s]!=typeof{}?i=s+"="+encodeURIComponent(e[s]):(r=encodeURIComponent(s),t&&(r=t+"["+r+"]"),i=n.url.stringify(e[s],r)),o.push(i);return o.join("&")},parse_key:function(e,t,n){var r=e.substr(0,e.indexOf("["));if(!r)return void(t[r]=n);t[r]=t[r]||{};var i=e.substr(r.length+1);parse_key(i.substr(0,i.indexOf("]"))+i.substr(i.indexOf("]")+1),t[r],n)},parse:function(e){if(!e)return{};for(var t,n,r=e.split("&"),i={},o=0,s=r.length;s>o;o++){var a=decodeURIComponent(r[o]).split("="),u=_slicedToArray(a,2);t=u[0],n=u[1],this.parse_key(t,i,n)}return i}},!function(){var e=function(t,n,r,i){var o;i||(i=[]);for(var s in r)if(o=t.match(new RegExp(n+s,""))){if(r[s].patterns)return e(t,n+s,r[s].patterns,i);var a=Object.assign({},r[s]);return a.pattern=s,a.url=t,a.match=o,a}return null},t={};n.router={resolve:function(n,r){return r?e(n,"",r):e(n,"",t)},patterns:function(e){Object.assign(t,e)}}}(),e.prototype.backends={},e.prototype.configure=function(e){this.options=Object.assign(this.defaults,e||{})},e.prototype.register_backend=function(t,n){e.prototype.backends[t]=n},e.prototype.call=function(t,n){return e.prototype.backends[this.options.backend].call(this.options.url,t,n)},e.prototype.call_many=function(t){return e.prototype.backends[this.options.backend].call_many(this.options.url,t)},n.register_module("api",e),n.register_backend("api","http",{call:function(e,t,r){return n.fetch(e,{method:"POST",body:n.url.stringify({signature:t,data:r}),type:"json"})},call_many:function(e,t){return n.fetch(e,{method:"POST",body:n.url.stringify({requests:t}),type:"json"})}}),n.register_backend("api","httpjson",{call:function(e,t,r){return n.fetch(e,{method:"POST",body:JSON.stringify({signature:t,data:r}),type:"json"})},call_many:function(e,t){return n.fetch(e,{method:"POST",body:JSON.stringify({requests:t}),type:"json"})}}),!function(){var e=0,t=null,r=null,i={},o=[],s=100,a=function(e){r=new WebSocket(e),r.onopen=function(){for(t=1,console.debug("connected"),s=100;o.length;)u.apply(this,o.splice(0,1)[0])},r.onclose=function(){t=null,console.log("Соединение потеряно, восстанавливаем..."),setTimeout(function(){s*=2,a(e)},s)},r.onmessage=function(e){var t=JSON.parse(e.data);console.debug("RECV>",t),i[t.seq]&&(t.status?i[t.seq].reject(t.data):i[t.seq].resolve(t.data),delete i[t.seq])}},u=function(t,n,o){i[e]=n,t.seq=e,o.gen_head&&(t.head=o.gen_head()),console.debug("SEND>",t),r.send(JSON.stringify(t)),e++};n.register_backend("api","ws",{call:function(e,n,r){var i=new Promise;t?u({signature:n,data:r},i,e):(o.push([{signature:n,data:r},i,e]),a(e.url))},call_many:function(e,n){var r=new Promise;t?u({requests:n},r,e):(o.push([{requests:n},r,e]),a(e.url))}})}(),t.prototype.configure=function(e){Object.assign(this.options,e||{})},t.prototype.register_backend=function(e,t){this.backends[e]=t},t.prototype.fetch=function(e){var t=this;return Promise.all(e.map(function(e){t.backends[e.type].fetch(e.fields)})).then(function(e){var t={};for(var n in e)Object.assign(t,n);return t})},n.register_module("datasource",t),n.register_backend("datasource","api",{fetch:function(e){return n.api.call_many(e)}}),n.register_backend("datasource","cookie",{getCookie:function(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0},fetch:function(e){for(var t,n={},r=e[Symbol.iterator]();!(t=r.next()).done;){var i=t.value;n[i]=this.getCookie(i)}}}),n.register_backend("datasource","simple",{fetch:function(e){return e}}),n.register_backend("datasource","local_storage",{fetch:function(e){for(var t,n={},r=e[Symbol.iterator]();!(t=r.next()).done;){var i=t.value;n[i]=localStorage.getItem(i)}}}),n.register_backend("datasource","session_storage",{fetch:function(e){for(var t,n={},r=e[Symbol.iterator]();!(t=r.next()).done;){var i=t.value;n[i]=sessionStorage.getItem(i)}}}),n.register_backend("datasource","url",{replace_placeholders:function(e,t){if(t)for(var n,r=0,i=Object.keys(t),o=i.length;o>r;r++){var s=i[r];"object"==typeof t[s]?replace_placeholders(e,t[s]):"string"==typeof t[s]&&(n=t[s].match(new RegExp("\\$(\\d+)","")),n&&(t[s]=e[Number(n[1])]))}},fetch:function(e){var t=n.router.resolve(window.location.pathname);return this.replace_placeholders(t.match,e),res}}),n.render=function(e,t,n){return new Promise(function(r){jinja.render('{% include "'+t+'" %}',n).then(function(t){for(var n=0;n<e.length;n++)e[n].innerHTML=t;r()})})},!function(){var e=function(){};n.urls=function(){},e(),jinja.make_tag("url",function(e){var t,n=e.split(" "),r=n[0].substr(1,n[0].length-2),i=r.indexOf("("),o=-1;if(i){t=r.substr(o+1,i-o-1),this.push(t),o=r.indexOf(")");for(var s=1;s<n.length;s++)this.push("get("+n[s]+")"),i=r.indexOf("(",o+1),i>0&&(t=r.substr(o+1,i-o-1),this.push(t),o=r.indexOf(")"));t=r.substr(o+1,r.length-o-1)}else t=r;this.push(t)}),jinja.make_tag("static",function(e){e=e.trim(),this.push('write("'+n.config.static_url+e.substr(1,e.length-2)+'")')})}()}();
//# sourceMappingURL=fat.min.js.map