-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfat.min.js.map
1 lines (1 loc) · 23.4 KB
/
fat.min.js.map
1
{"version":3,"sources":["fat.min.js","core.js","api.js","datasource.js","url.js","router.js","http.js","httpjson.js","websocket.js","cookie.js","simple.js","storage.js","template.js","urls.js"],"names":["_slicedToArray","arr","i","Array","isArray","_step","_arr","_iterator","Symbol","iterator","next","done","push","value","length","API","options","this","defaults","url","window","location","pathname","backend","configure","Datasource","backends","Fat","plugins","Map","config","signals","Object","assign","modules","mod","hasOwnProperty","jinja","template_url","register_module","name","defineProperty","writable","register_backend","Error","register_plugin","plugin","init","set","setup_plugins","plugin_names","has","p","get","fetch","then","response","status","Promise","resolve","reject","statusText","type","json","text","fetch_data","static_url","endsWith","headers","Accept","add_listener","signal","handler","scope","remove_listener","size","emit","data","_step2","handler_map","_iterator2","entry","call","stringify","prefix","undefined","arguments","keyName","encoded_arg","encoded","key","encodeURIComponent","join","parse_key","object","first_key","substr","indexOf","key_rest","parse","serialized","val","hashes","split","vars","len","_ref","decodeURIComponent","_ref2","find_match","patterns","matches","match","pattern","RegExp","res","url_patterns","router","prototype","signature","args","call_many","requests","method","body","JSON","seq","state","ws","promises","queue","timeout","WebSocket","onopen","console","debug","send","apply","splice","onclose","log","setTimeout","onmessage","evt","msg","ready","gen_head","head","sources","_this","all","map","s","fields","r","rec","api","getCookie","document","cookie","replace","_step3","_iterator3","field","_step4","_iterator4","localStorage","getItem","_step5","_iterator5","sessionStorage","replace_placeholders","match_place","keys","arg","Number","info","render","$elements","template","html","innerHTML","make_reverse","urls","make_tag","stmt","url_part","tokens","open","close","trim"],"mappings":"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","file":"fat.min.js","sourcesContent":[null,"const Fat = {\n plugins: new Map(),\n config: {},\n signals: new Map(),\n configure: function (options) {\n Object.assign(this.config.modules, options.modules);\n Object.assign(this.config.plugins, options.plugins);\n delete options.modules;\n delete options.plugins;\n Object.assign(this.config, options);\n\n for (var mod in this.config.modules){\n if (!Fat.hasOwnProperty(mod)) continue;\n Fat[mod].configure && Fat[mod].configure(this.config.modules[mod]);\n }\n\n if (jinja && this.config.template_url) {\n jinja.template_url = this.config.template_url;\n }\n },\n register_module: function (name, mod) {\n Object.defineProperty(Fat, name, {value:new mod(Fat.config.modules[name]), writable:false});\n },\n register_backend: function (mod, name, backend) {\n if (!Fat[mod]) {\n throw new Error(\"no such module: \"+mod);\n }\n Fat[mod].register_backend && Fat[mod].register_backend(name, backend);\n },\n register_plugin: function (name, plugin) {\n if (typeof(plugin.init) != 'function') {\n throw \"[\" + name + \"] bad plugin: no init\";\n }\n Fat.plugins.set(name, plugin);\n },\n setup_plugins: function (plugin_names) {\n if (typeof(plugin_names) == typeof(\"\")) {\n plugin_names = [plugin_names];\n }\n for (var plugin of plugin_names) {\n if (this.plugins.has(plugin)) {\n var p = this.plugins.get(plugin);\n p.init(Fat.config.plugins[plugin] || {});\n }\n }\n }\n};\nObject.defineProperty(Fat.config,'plugins',{\n writable:false,\n value:{}\n});\nObject.defineProperty(Fat.config,'modules',{\n writable:false,\n value:{}\n});\nFat.fetch = function(url, options){\n options = options || {};\n return fetch(url, options).then(function(response){\n // status \"0\" to handle local files fetching (e.g. Cordova/Phonegap etc.)\n if (response.status === 200 || response.status === 0) {\n return Promise.resolve(response)\n } else {\n return Promise.reject(new Error(response.statusText))\n }\n }).then(function(response){\n // TODO: handle other fetch data types\n if (options.type == 'json'){\n return response.json();\n } else {\n return response.text();\n }\n });\n};\nFat.fetch_data = function (name) {\n var url = Fat.config.static_url;\n if (!url.endsWith('/')) {\n url += '/';\n }\n url += 'data/' + name + '.json';\n return Fat.fetch(url, {type:'json',headers:{'Accept':'application/json'}});\n};\nFat.add_listener = function (signal, handler, scope) {\n if (!Fat.signals.has(signal)) {\n Fat.signals.set(signal, new Map());\n }\n Fat.signals.get(signal).set(handler, scope);\n};\n\nFat.remove_listener = function (signal, handler) {\n if (!Fat.signals.has(signal)) {\n return;\n }\n Fat.signals.get(signal).delete(handler);\n if (!Fat.signals.get(signal).size) {\n Fat.signals.delete(signal);\n }\n};\n\nFat.emit = function (signal, data) {\n if (Fat.signals.has(signal)) {\n var handler_map = Fat.signals.get(signal);\n for (var entry of handler_map) {\n entry[0].call(entry[1], data);\n }\n }\n};\n\n/*\n options framework\n\n find_domain(domainPath) {\n let keys = domainPath.split(\".\");\n let domain = this.config;\n while (keys.length > 1) {\n if (!domain.hasOwnProperty(keys[0])) {\n domain[keys[0]] = {};\n }\n domain = domain[keys[0]];\n keys.slice(1);\n }\n return domain;\n }\n\n get_option(domainPath, defaultVal = null) {\n let keys = domainPath.split(\".\");\n let domain = this.config;\n while (keys.length > 1) {\n if (!domain.hasOwnProperty(keys[0])) {\n return defaultVal;\n }\n domain = domain[keys[0]];\n keys.slice(1);\n }\n return domain[keys[0]];\n }\n\n set_option(domainPath, value = true) {\n let keys = domainPath.split(\".\");\n let keyToSet = keys[keys.length - 1];\n let domain = this.find_domain(keys.slice(0, keys.length - 1));\n domain[keyToSet] = value;\n }\n\n */\n\nwindow.Fat = Fat;\n","Fat.register_backend('datasource', 'api', {\n fetch(fields) {\n return Fat.api.call_many(fields);\n }\n});\n","function Datasource(options) {\n this.options={};\n this.backends={};\n this.configure(options);\n}\n\nDatasource.prototype.configure = function(options){\n Object.assign(this.options, options || {});\n};\n\nDatasource.prototype.register_backend = function (name, backend) {\n this.backends[name] = backend;\n};\n\nDatasource.prototype.fetch = function(sources) {\n var _this = this;\n return Promise.all(sources.map(function(s){\n _this.backends[s.type].fetch(s.fields);\n })).then(function(r){\n var res={};\n for (var rec in r){\n Object.assign(res, rec);\n }\n return res;\n });\n};\n\nFat.register_module('datasource', Datasource);\n","Fat.register_backend('datasource', 'url', {\n replace_placeholders(match, args) {\n if (!args) {\n return;\n }\n var match_place;\n for (var i = 0, keys = Object.keys(args), len = keys.length; i < len; i++) {\n var arg = keys[i];\n if (typeof args[arg] === 'object') {\n replace_placeholders(match, args[arg]);\n } else if (typeof args[arg] === 'string') {\n match_place = args[arg].match(new RegExp('\\\\$(\\\\d+)', ''));\n if (match_place) {\n args[arg] = match[Number(match_place[1])];\n }\n }\n }\n },\n fetch(data) {\n var info = Fat.router.resolve(window.location.pathname);\n this.replace_placeholders(info.match, data);\n return res;\n }\n});\n","!function () {\n var url_patterns = {};\n\n function find_match(url, prefix, patterns, matches) {\n var match;\n if (!matches) {\n matches = [];\n }\n for (var pattern in patterns) {\n match = url.match(new RegExp(prefix + pattern, ''));\n if (match) {\n if (patterns[pattern].patterns) {\n return find_match(url, prefix + pattern, patterns[pattern].patterns, matches);\n } else {\n var res = Object.assign({}, patterns[pattern]);\n res.pattern = pattern;\n res.url = url;\n res.match = match;\n //replace_placeholders(match, res.args);\n return res;\n }\n }\n }\n return null;\n }\n\n Fat.router = {\n resolve: function (url, patterns) {\n if (!patterns) {\n return find_match(url, '', url_patterns);\n } else {\n return find_match(url, '', patterns);\n }\n },\n patterns: function (patterns) {\n Object.assign(url_patterns, patterns);\n }\n };\n}();\n","Fat.register_backend('api','http', {\n call: function (url, signature, data) {\n return Fat.fetch(url,{\n method:\"POST\",\n body: Fat.url.stringify({signature: signature, data: data}),\n type:'json'\n });\n },\n call_many: function (url, requests) {\n return Fat.fetch(url,{\n method:\"POST\",\n body: Fat.url.stringify({requests: requests}),\n type:'json'\n });\n }\n});\n","Fat.register_backend('api','httpjson', {\n call: function (url, signature, data) {\n return Fat.fetch(url,{\n method:\"POST\",\n body: JSON.stringify({signature: signature, data: data}),\n type:'json'\n });\n },\n call_many: function (url, requests) {\n return Fat.fetch(url,{\n method:\"POST\",\n body: JSON.stringify({requests: requests}),\n type:'json'\n });\n }\n});\n","!function () {\n var seq = 0;\n var state = null;\n var ws = null;\n var promises = {};\n var queue = [];\n var timeout = 100;\n\n var init = function (url) {\n ws = new WebSocket(url);\n ws.onopen = function () {\n state = 1;\n console.debug('connected');\n timeout = 100;\n while (queue.length) {\n send.apply(this, queue.splice(0, 1)[0]);\n }\n };\n ws.onclose = function () {\n state = null;\n console.log('Соединение потеряно, восстанавливаем...');\n setTimeout(function () {\n timeout *= 2;\n init(url);\n }, timeout);\n };\n ws.onmessage = function (evt) {\n var msg = JSON.parse(evt.data);\n console.debug('RECV>', msg);\n if (promises[msg.seq]) {\n if (!msg.status) {\n promises[msg.seq].resolve(msg.data);\n } else {\n promises[msg.seq].reject(msg.data);\n }\n delete promises[msg.seq];\n }\n };\n };\n var send = function (data, ready, options) {\n promises[seq] = ready;\n data.seq = seq;\n if (options.gen_head) {\n data.head = options.gen_head();\n }\n console.debug('SEND>', data);\n ws.send(JSON.stringify(data));\n seq++;\n };\n Fat.register_backend('api', 'ws', {\n call: function (options, signature, data) {\n var ready = new Promise();\n if (!state) {\n queue.push([\n {signature: signature, data: data},\n ready,\n options\n ]);\n init(options.url);\n } else {\n send({signature: signature, data: data}, ready, options);\n }\n },\n call_many: function (options, requests) {\n var ready = new Promise();\n if (!state) {\n queue.push([\n {requests: requests},\n ready,\n options\n ]);\n init(options.url);\n } else {\n send({requests: requests}, ready, options);\n }\n }\n });\n}();\n","Fat.register_backend('datasource', 'cookie', {\n getCookie(name) {\n var matches = document.cookie.match(new RegExp(\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\n ));\n return matches ? decodeURIComponent(matches[1]) : undefined;\n },\n fetch(fields) {\n var r = {};\n for (var field of fields){\n r[field] = this.getCookie(field);\n }\n }\n});","Fat.register_backend('datasource', 'simple', {\n fetch(data) {\n return data;\n }\n});\n","Fat.register_backend('datasource', 'local_storage', {\n fetch(fields) {\n var r = {};\n for (var field of fields){\n r[field] = localStorage.getItem(field);\n }\n }\n});\nFat.register_backend('datasource', 'session_storage', {\n fetch(fields) {\n var r = {};\n for (var field of fields){\n r[field] = sessionStorage.getItem(field);\n }\n }\n});","Fat.render = function ($elements, template, data) {\n return new Promise(function (resolve, reject) {\n jinja.render('{% include \"' + template + '\" %}', data).then(function (html) {\n // TODO: mb make sure elements are empty\n for (var i = 0; i < $elements.length; i++) {\n $elements[i].innerHTML = html;\n }\n resolve();\n });\n });\n}\n","!function(){\n const reverse={};\n const urls = {};\n\n Fat.urls=function(urls){\n\n };\n\n function make_reverse(){}\n make_reverse();\n\n jinja.make_tag('url',function(stmt){\n var tokens=stmt.split(' ');\n var url = tokens[0].substr(1,tokens[0].length-2);\n\n var open = url.indexOf('(');\n var close = -1;\n var url_part;\n if (open) {\n url_part = url.substr(close+1, open-close-1);\n this.push(url_part);\n close = url.indexOf(')');\n for (var i = 1; i < tokens.length; i++) {\n this.push('get(' + tokens[i] + ')');\n open = url.indexOf('(', close+1);\n if (open > 0) {\n url_part = url.substr(close+1, open-close-1);\n this.push(url_part);\n close = url.indexOf(')');\n }\n }\n url_part = url.substr(close+1, url.length-close-1);\n } else {\n url_part = url;\n }\n this.push(url_part);\n });\n\n jinja.make_tag('static',function(stmt){\n stmt = stmt.trim();\n this.push(\"write(\\\"\"+Fat.config.static_url + stmt.substr(1,stmt.length-2)+\"\\\")\");\n });\n}();\n"],"sourceRoot":"/source/"}