From 790259d6717544549e96257841ca7ac49e9a75d3 Mon Sep 17 00:00:00 2001 From: zswang Date: Tue, 7 Jun 2016 10:47:01 +0800 Subject: [PATCH] fixed: localStorage is null. add unit test script. add editorconfig. --- .editorconfig | 25 +++++++++ dist/vconsole.min.js | 4 +- package.json | 8 ++- src/lib/tool.js | 18 ++++-- test/ajax.html | 4 +- test/log.html | 4 +- test/plugin.html | 4 +- test/test.js | 130 +++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 181 insertions(+), 16 deletions(-) create mode 100644 .editorconfig create mode 100644 test/test.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..256688eb --- /dev/null +++ b/.editorconfig @@ -0,0 +1,25 @@ +# editorconfig.org +root = true + +# Unix-style newlines with a newline ending every file +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{html,js,ts,css,less,scss,xml,json}] +indent_style = space +indent_size = 2 + +[*.yml] +indent_style = space +indent_size = 2 + +[jdists] +indent_style = space +indent_size = 2 diff --git a/dist/vconsole.min.js b/dist/vconsole.min.js index 62bd0c26..88030a21 100644 --- a/dist/vconsole.min.js +++ b/dist/vconsole.min.js @@ -3,5 +3,5 @@ * Copyright 2016, WechatFE Team * MIT license */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.vConsole=t():e.vConsole=t()}(this,function(){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var o={};return t.m=e,t.c=o,t.p="",t(0)}([function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var r=o(1),i=n(r),l=o(13),c=n(l),a=o(14),s=n(a),d=o(21),u=n(d),f=o(23),v=n(f),p=new i["default"];p.addPlugin(s["default"]),p.addPlugin(u["default"]),p.addPlugin(v["default"]),p.VConsolePlugin=c["default"],t["default"]=p,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var o=0;o0){var n=o.touches[0].pageX-e.switchPos.startX,r=o.touches[0].pageY-e.switchPos.startY,i=e.switchPos.x-n,l=e.switchPos.y-r;0>i&&(i=0),0>l&&(l=0),i+t.offsetWidth>document.body.offsetWidth&&(i=document.body.offsetWidth-t.offsetWidth),l+t.offsetHeight>document.body.offsetHeight&&(l=document.body.offsetHeight-t.offsetHeight),t.style.right=i+"px",t.style.bottom=l+"px",e.switchPos.endX=i,e.switchPos.endY=l,o.preventDefault()}}),d["default"].bind(d["default"].one(".vc-switch",e.$dom),"click",function(){e.show()}),d["default"].bind(d["default"].one(".vc-hide",e.$dom),"click",function(){e.hide()}),d["default"].bind(d["default"].one(".vc-mask",e.$dom),"click",function(t){return t.target!=d["default"].one(".vc-mask")?!1:void e.hide()}),d["default"].delegate(d["default"].one(".vc-tabbar",e.$dom),"click",".vc-tab",function(t){var o=this.dataset.tab;o!=e.activedTab&&e.showTab(o)})}},{key:"_autoRun",value:function(){this.isReady=!0;for(var e in this.pluginList)this._initPlugin(this.pluginList[e]);this.showTab(this.tabList[0])}},{key:"_initPlugin",value:function(e){var t=this;e.trigger("init"),e.trigger("renderTab",function(o){t.tabList.push(e.id);var n=d["default"].render(p["default"],{id:e.id,name:e.name});d["default"].one(".vc-tabbar",t.$dom).appendChild(n);var r=d["default"].render(h["default"],{id:e.id});o&&(a.isString(o)?r.innerHTML+=o:a.isFunction(o.appendTo)?o.appendTo(r):a.isElement(o)&&r.appendChild(o)),d["default"].one(".vc-content",t.$dom).appendChild(r)}),e.trigger("addTool",function(t){if(t){var o=d["default"].one(".vc-tool-last"),n=!0,r=!1,i=void 0;try{for(var l,c=t[Symbol.iterator]();!(n=(l=c.next()).done);n=!0){var s=l.value,u=d["default"].render(y["default"],{name:s.name||"Undefined",pluginID:e.id});1==s.global&&d["default"].addClass(u,"vc-global-tool"),a.isFunction(s.onClick)&&d["default"].bind(u,"click",s.onClick),o.parentNode.insertBefore(u,o)}}catch(f){r=!0,i=f}finally{try{!n&&c["return"]&&c["return"]()}finally{if(r)throw i}}}}),e.trigger("ready")}},{key:"_triggerPluginsEvent",value:function(e){for(var t in this.pluginList)this.pluginList[t].trigger(e)}},{key:"_triggerPluginEvent",value:function(e,t){var o=this.pluginList[e];o&&o.trigger(t)}},{key:"addPlugin",value:function(e){return void 0!==this.pluginList[e.id]?(console.warn("Plugin "+e.id+" has already been added."),!1):(this.pluginList[e.id]=e,this.isReady&&this._initPlugin(e),!0)}},{key:"show",value:function(){d["default"].addClass(this.$dom,"vc-toggle"),this._triggerPluginsEvent("showConsole"),this.bodyOverflowCSS=document.body.style.overflow,document.body.style.overflow="hidden"}},{key:"hide",value:function(){document.body.style.overflow=this.bodyOverflowCSS,d["default"].removeClass(this.$dom,"vc-toggle"),this._triggerPluginsEvent("hideConsole")}},{key:"showTab",value:function(e){var t=d["default"].one("#__vc_log_"+e);d["default"].removeClass(d["default"].all(".vc-tab",this.$dom),"vc-actived"),d["default"].addClass(d["default"].one("#__vc_tab_"+e),"vc-actived"),d["default"].removeClass(d["default"].all(".vc-logbox",this.$dom),"vc-actived"),d["default"].addClass(t,"vc-actived"),d["default"].one(".vc-content",this.$dom).scrollTop=d["default"].one(".vc-content",this.$dom).scrollHeight,d["default"].removeClass(d["default"].all(".vc-tool",this.$dom),"vc-actived"),d["default"].addClass(d["default"].all(".vc-tool-"+e,this.$dom),"vc-actived"),this._triggerPluginEvent(this.activedTab,"hide"),this.activedTab=e,this._triggerPluginEvent(this.activedTab,"show")}}]),e}();t["default"]=m,e.exports=t["default"]},function(e,t){"use strict";function o(e){var t=e>0?new Date(e):new Date,o=t.getDate()<10?"0"+t.getDate():t.getDate(),n=t.getMonth()<9?"0"+(t.getMonth()+1):t.getMonth()+1,r=t.getFullYear(),i=t.getHours()<10?"0"+t.getHours():t.getHours(),l=t.getMinutes()<10?"0"+t.getMinutes():t.getMinutes(),c=t.getSeconds()<10?"0"+t.getSeconds():t.getSeconds(),a=t.getMilliseconds()<10?"0"+t.getMilliseconds():t.getMilliseconds();return 100>a&&(a="0"+a),{time:+t,year:r,month:n,day:o,hour:i,minute:l,second:c,millisecond:a}}function n(e){return"[object Number]"==Object.prototype.toString.call(e)}function r(e){return"[object String]"==Object.prototype.toString.call(e)}function i(e){return"[object Array]"==Object.prototype.toString.call(e)}function l(e){return"[object Boolean]"==Object.prototype.toString.call(e)}function c(e){return"[object Undefined]"==Object.prototype.toString.call(e)}function a(e){return"[object Null]"==Object.prototype.toString.call(e)}function s(e){return"[object Symbol]"==Object.prototype.toString.call(e)}function d(e){return!("[object Object]"!=Object.prototype.toString.call(e)&&(n(e)||r(e)||i(e)||a(e)||u(e)||c(e)||s(e)))}function u(e){return"[object Function]"==Object.prototype.toString.call(e)}function f(e){return"object"===("undefined"==typeof HTMLElement?"undefined":g(HTMLElement))?e instanceof HTMLElement:e&&"object"===("undefined"==typeof e?"undefined":g(e))&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function v(e){return document.createElement("a").appendChild(document.createTextNode(e)).parentNode.innerHTML}function p(e){function t(e){for(var t=p.length-1;t>=0;t--)if(p[t].child==e)return!0;return!1}function o(e){if(d(e)){if(t(e))return void(f+="CircularObject");p.push({parent:parent,child:e});var b=Object.keys(e);f+="{",v++;for(var h=0;h0&&(n=Array.prototype.slice.call(o)),n},c.addClass=function(e,t){if(e){(0,r.isArray)(e)||(e=[e]);var o=!0,n=!1,i=void 0;try{for(var l,c=e[Symbol.iterator]();!(o=(l=c.next()).done);o=!0){var a=l.value;a.className+=" "+t}}catch(s){n=!0,i=s}finally{try{!o&&c["return"]&&c["return"]()}finally{if(n)throw i}}}},c.removeClass=function(e,t){if(e){(0,r.isArray)(e)||(e=[e]);var o=!0,n=!1,i=void 0;try{for(var l,c=e[Symbol.iterator]();!(o=(l=c.next()).done);o=!0){for(var a=l.value,s=a.className.split(" "),d=0;d=0&&m.splice(t,1)}function c(e){var t=document.createElement("style");return t.type="text/css",i(e,t),t}function a(e){var t=document.createElement("link");return t.rel="stylesheet",i(e,t),t}function s(e,t){var o,n,r;if(t.singleton){var i=y++;o=g||(g=c(t)),n=d.bind(null,o,i,!1),r=d.bind(null,o,i,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(o=a(t),n=f.bind(null,o),r=function(){l(o),o.href&&URL.revokeObjectURL(o.href)}):(o=c(t),n=u.bind(null,o),r=function(){l(o)});return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else r()}}function d(e,t,o,n){var r=o?"":n.css;if(e.styleSheet)e.styleSheet.cssText=_(t,r);else{var i=document.createTextNode(r),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(i,l[t]):e.appendChild(i)}}function u(e,t){var o=t.css,n=t.media;if(n&&e.setAttribute("media",n),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}function f(e,t){var o=t.css,n=t.sourceMap;n&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */");var r=new Blob([o],{type:"text/css"}),i=e.href;e.href=URL.createObjectURL(r),i&&URL.revokeObjectURL(i)}var v={},p=function(e){var t;return function(){return"undefined"==typeof t&&(t=e.apply(this,arguments)),t}},b=p(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),h=p(function(){return document.head||document.getElementsByTagName("head")[0]}),g=null,y=0,m=[];e.exports=function(e,t){t=t||{},"undefined"==typeof t.singleton&&(t.singleton=b()),"undefined"==typeof t.insertAt&&(t.insertAt="bottom");var o=r(e);return n(o,t),function(e){for(var i=[],l=0;l
vConsole
'},function(e,t){e.exports="{{name}}"},function(e,t){e.exports="
"},function(e,t){e.exports='{{name}}'},function(e,t){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var o=0;on;n++)o[n]=arguments[n];var r=_possibleConstructorReturn(this,(e=Object.getPrototypeOf(VConsoleDefaultTab)).call.apply(e,[this].concat(o)));return r.tplTabbox=_tabbox_default2["default"],r}return _inherits(VConsoleDefaultTab,_VConsoleLogTab),_createClass(VConsoleDefaultTab,[{key:"onReady",value:function(){var e=this;_get(Object.getPrototypeOf(VConsoleDefaultTab.prototype),"onReady",this).call(this),_query2["default"].bind(_query2["default"].one(".vc-cmd",this.$tabbox),"submit",function(t){t.preventDefault();var o=_query2["default"].one(".vc-cmd-input",t.target),n=o.value;o.value="",""!==n&&e.evalCommand(n)})}},{key:"evalCommand",value:function evalCommand(cmd){var date=tool.getDate(+new Date);this.renderLog({logType:"log",meta:date.hour+":"+date.minute+":"+date.second,content:_query2["default"].render(_item_code2["default"],{content:cmd,type:"input"},!0),style:""});var result=eval(cmd),content="";content=tool.isArray(result)||tool.isObject(result)?this.getFoldedLine(result):_query2["default"].render(_item_code2["default"],{content:result,type:"output"},!0),this.renderLog({logType:"log",meta:"",content:content,style:"vc-item-nometa"})}}]),VConsoleDefaultTab}(_log2["default"]),tab=new VConsoleDefaultTab("default","Log");exports["default"]=tab,module.exports=exports["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},s=function(){function e(e,t){for(var o=0;or;r++)n[r]=arguments[r];var c=l(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(n)));return c.tplTabbox="",c.allowUnformattedLog=!0,c.isReady=!1,c.$tabbox=null,c.console={},c.logList=[],c.mockConsole(),c}return c(t,e),s(t,[{key:"onInit",value:function(){this.isReady=!0,this.$tabbox=v["default"].render(this.tplTabbox,{});var e=!0,t=!1,o=void 0;try{for(var n,r=this.logList[Symbol.iterator]();!(e=(n=r.next()).done);e=!0){var i=n.value;this.printLog(i)}}catch(l){t=!0,o=l}finally{try{!e&&r["return"]&&r["return"]()}finally{if(t)throw o}}this.logList=[]}},{key:"onRenderTab",value:function(e){e(this.$tabbox)}},{key:"onAddTool",value:function(e){var t=this,o=[{name:"Clear",global:!1,onClick:function(e){t.clearLog()}}];e(o)}},{key:"onReady",value:function(){v["default"].bind(v["default"].one(".vc-log",this.$tabbox),"click",function(e){var t=e.target;v["default"].hasClass(t,"vc-fold-outer")&&(v["default"].hasClass(t.parentElement,"vc-toggle")?v["default"].removeClass(t.parentElement,"vc-toggle"):v["default"].addClass(t.parentElement,"vc-toggle"),e.preventDefault())})}},{key:"mockConsole",value:function(){var e=this;window.console?(this.console.log=window.console.log,this.console.info=window.console.info,this.console.warn=window.console.warn,this.console.debug=window.console.debug,this.console.error=window.console.error):window.console={},window.console.log=function(){e.printLog({logType:"log",logs:arguments})},window.console.info=function(){e.printLog({logType:"info",logs:arguments})},window.console.warn=function(){e.printLog({logType:"warn",logs:arguments})},window.console.debug=function(){e.printLog({logType:"debug",logs:arguments})},window.console.error=function(){e.printLog({logType:"error",logs:arguments})},window.onerror=function(e,t,o,n,r){var i=r.stack.split("at");i=i[0]+" "+i[1],i=i.replace(location.origin,""),console.error(i)}}},{key:"clearLog",value:function(){v["default"].one(".vc-log",this.$tabbox).innerHTML=""}},{key:"printOriginLog",value:function(e){"function"==typeof this.console[e.logType]&&this.console[e.logType].apply(window.console,e.logs)}},{key:"printLog",value:function(e){var t=e.logs;if(t.length){t=[].slice.call(t);var o=!0,n=/^\[(\w+)\] ?/i,r="";if(u.isString(t[0])){var i=t[0].match(n); -null!==i&&i.length>0&&(r=i[1].toLowerCase())}if(r?o=r==this.id:0==this.allowUnformattedLog&&(o=!1),!o)return void this.printOriginLog(e);if(e.date||(e.date=+new Date),!this.isReady)return void this.logList.push(e);u.isString(t[0])&&(t[0]=t[0].replace(n,""),""===t[0]&&t.shift());for(var l="",c=0;c")}catch(s){l+=" ["+a(t[c])+"]"}var d=u.getDate(e.date);this.renderLog({logType:e.logType,content:l,meta:d.hour+":"+d.minute+":"+d.second,style:""}),this.printOriginLog(e)}}},{key:"renderLog",value:function(e){var t=v["default"].render(g["default"],e);v["default"].one(".vc-log",this.$tabbox).appendChild(t),v["default"].one(".vc-content").scrollTop=v["default"].one(".vc-content").scrollHeight}},{key:"getFoldedLine",value:function(e){function t(e){for(var t=s.length-1;t>=0;t--)if(s[t].child==e)return!0;return!1}function o(e,n){if(u.isObject(e)){if(t(e))return void(i+="{Circular Object}");s.push({parent:n,child:e});var r=Object.keys(e);i+="{\n",c++;for(var l=0;l26&&(l+="..."),r=Object.prototype.toString.call(e).replace("[object ","").replace("]",""),r+=" "+l;var s=[];o(e,null);var d=v["default"].render(m["default"],{outer:r,inner:i},!0);return d}}]),t}(b["default"]);t["default"]=w,e.exports=t["default"]},function(e,t){e.exports='
{{meta}}
{{content}}
'},function(e,t){e.exports='
{{outer}}
{{inner}}
'},function(e,t){e.exports="{{code}}"},function(e,t){e.exports="
"},function(e,t){e.exports='
{{content}}
'},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var o=0;or;r++)n[r]=arguments[r];var c=l(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(n)));return c.tplTabbox=b["default"],c.allowUnformattedLog=!1,c}return c(t,e),a(t,[{key:"onInit",value:function(){s(Object.getPrototypeOf(t.prototype),"onInit",this).call(this),this.printSystemInfo()}},{key:"printSystemInfo",value:function(){var e=navigator.userAgent,t="",o=u.getDate();console.info("[system]","Now:",o.year+"-"+o.month+"-"+o.day+" "+o.hour+":"+o.minute+":"+o.second+"."+o.millisecond),t="Unknown";var n=e.match(/(ipod).*\s([\d_]+)/i),r=e.match(/(ipad).*\s([\d_]+)/i),i=e.match(/(iphone)\sos\s([\d_]+)/i),l=e.match(/(android)\s([\d\.]+)/i);l?t="Android "+l[2]:i?t="iPhone, iOS "+i[2].replace(/_/g,"."):r?t="iPad, iOS "+r[2].replace(/_/g,"."):n&&(t="iPod, iOS "+n[2].replace(/_/g,".")),console.info("[system]","System:",t);var c=e.match(/MicroMessenger\/([\d\.]+)/i);t="Unknown",c&&c[1]&&(t=c[1],console.info("[system]","WeChat:",t));var a=e.toLowerCase().match(/ nettype\/([^ ]+)/g);t="Unknown",a&&a[0]&&(a=a[0].split("/"),t=a[1],console.info("[system]","Network:",t)),t="Unknown",t="https:"==location.protocol?"HTTPS":"http:"==location.protocol?"HTTP":location.protocol.replace(":",""),console.info("[system]","Protocol:",t);var s=window.performance||window.msPerformance||window.webkitPerformance;if(s&&s.timing){var d=s.timing,f=d.navigationStart;console.info("[system]","connectEndTime:",d.connectEnd-f+"ms"),console.info("[system]","responseEndTime:",d.responseEnd-f+"ms"),d.secureConnectionStart>0&&console.info("[system]","SSL Cost:",d.connectEnd-d.secureConnectionStart+"ms"),console.info("[system]","DomRenderCost:",d.domComplete-d.domLoading+"ms")}console.info("[system]","UA:",e)}}]),t}(v["default"]),g=new h("system","System");t["default"]=g,e.exports=t["default"]},function(e,t){e.exports="
"},function(e,t,o){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var o=0;or;r++)n[r]=arguments[r];var c=l(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(n)));return c.$tabbox=d["default"].render(h["default"],{}),c.$header=null,c.reqList={},c.domList={},c.mockAjax(),c}return c(t,e),a(t,[{key:"onRenderTab",value:function(e){e(this.$tabbox)}},{key:"onAddTool",value:function(e){var t=this,o=[{name:"Clear",global:!1,onClick:function(e){t.clearLog()}}];e(o)}},{key:"onReady",value:function(){this.renderHeader(),d["default"].delegate(d["default"].one(".vc-log",this.$tabbox),"click",".vc-group-preview",function(e){var t=this.parentNode;d["default"].hasClass(t,"vc-actived")?d["default"].removeClass(t,"vc-actived"):d["default"].addClass(t,"vc-actived"),e.preventDefault()})}},{key:"clearLog",value:function(){this.reqList={};for(var e in this.domList)this.domList[e].remove(),this.domList[e]=void 0;this.domList={},this.renderHeader()}},{key:"renderHeader",value:function(){var e=Object.keys(this.reqList).length,t=d["default"].render(y["default"],{count:e}),o=d["default"].one(".vc-log",this.$tabbox);this.$header?this.$header.parentNode.replaceChild(t,this.$header):o.parentNode.insertBefore(t,o),this.$header=t}},{key:"updateRequest",value:function(e,t){var o=Object.keys(this.reqList).length,n=this.reqList[e]||{};for(var r in t)n[r]=t[r];this.reqList[e]=n;var i={url:n.url,status:n.status,type:"-",costTime:n.costTime>0?n.costTime+"ms":"-",header:n.header,response:f.htmlEncode(n.response)};n.readyState<=1?i.status="Pending":n.readyState<4&&(i.status="Loading");var l=d["default"].render(_["default"],i),c=this.domList[e];n.status>=400&&d["default"].addClass(d["default"].one(".vc-group-preview",l),"vc-table-row-error"),c?c.parentNode.replaceChild(l,c):d["default"].one(".vc-log",this.$tabbox).appendChild(l),this.domList[e]=l;var a=Object.keys(this.reqList).length;a!=o&&this.renderHeader()}},{key:"mockAjax",value:function(){var e=window.XMLHttpRequest;if(e){var t=this,o=window.XMLHttpRequest.prototype.open;window.XMLHttpRequest.prototype.send;window.XMLHttpRequest.prototype.open=function(){var e=this,n=[].slice.call(arguments),r=n[1],i=t.getUniqueID();e._requestID=i;var l=e.onreadystatechange||function(){};return e.onreadystatechange=function(){var o=t.reqList[i]||{};if(o.url=r,o.readyState=e.readyState,o.status=e.status,0==e.readyState)o.startTime=+new Date;else if(1==e.readyState)o.startTime=+new Date;else if(2==e.readyState){o.header={};var n=e.getAllResponseHeaders()||"",c=n.split("\n"),a=!0,s=!1,d=void 0;try{for(var u,f=c[Symbol.iterator]();!(a=(u=f.next()).done);a=!0){var v=u.value;if(v){var p=v.split(": "),b=p[0],h=p.slice(1).join(": ");o.header[b]=h}}}catch(g){s=!0,d=g}finally{try{!a&&f["return"]&&f["return"]()}finally{if(s)throw d}}}else 3==e.readyState||4==e.readyState&&(o.endTime=+new Date,o.costTime=o.endTime-(o.startTime||o.endTime),o.response=e.response);return t.updateRequest(i,o),l.apply(e,arguments)},o.apply(e,n)}}}},{key:"getUniqueID",value:function(){var e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0,o="x"==e?t:3&t|8;return o.toString(16)});return e}}]),t}(p["default"]),w=new x("network","Network");t["default"]=w,e.exports=t["default"]},function(e,t){e.exports="
"},function(e,t){e.exports='
Name {{if (count > 0)}}({{count}}){{/if}}
Status
Time
'},function(e,t){e.exports='
{{url}}
{{status}}
{{costTime}}
Headers
{{for (var key in header)}}
{{key}}
{{header[key]}}
{{/for}}
Response
{{response}}
'}])}); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.vConsole=t():e.vConsole=t()}(this,function(){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var o={};return t.m=e,t.c=o,t.p="",t(0)}([function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var r=o(1),i=n(r),l=o(13),c=n(l),a=o(14),s=n(a),d=o(21),u=n(d),f=o(23),v=n(f),p=new i["default"];p.addPlugin(s["default"]),p.addPlugin(u["default"]),p.addPlugin(v["default"]),p.VConsolePlugin=c["default"],t["default"]=p,e.exports=t["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){for(var o=0;o0){var n=o.touches[0].pageX-e.switchPos.startX,r=o.touches[0].pageY-e.switchPos.startY,i=e.switchPos.x-n,l=e.switchPos.y-r;0>i&&(i=0),0>l&&(l=0),i+t.offsetWidth>document.body.offsetWidth&&(i=document.body.offsetWidth-t.offsetWidth),l+t.offsetHeight>document.body.offsetHeight&&(l=document.body.offsetHeight-t.offsetHeight),t.style.right=i+"px",t.style.bottom=l+"px",e.switchPos.endX=i,e.switchPos.endY=l,o.preventDefault()}}),d["default"].bind(d["default"].one(".vc-switch",e.$dom),"click",function(){e.show()}),d["default"].bind(d["default"].one(".vc-hide",e.$dom),"click",function(){e.hide()}),d["default"].bind(d["default"].one(".vc-mask",e.$dom),"click",function(t){return t.target!=d["default"].one(".vc-mask")?!1:void e.hide()}),d["default"].delegate(d["default"].one(".vc-tabbar",e.$dom),"click",".vc-tab",function(t){var o=this.dataset.tab;o!=e.activedTab&&e.showTab(o)})}},{key:"_autoRun",value:function(){this.isReady=!0;for(var e in this.pluginList)this._initPlugin(this.pluginList[e]);this.showTab(this.tabList[0])}},{key:"_initPlugin",value:function(e){var t=this;e.trigger("init"),e.trigger("renderTab",function(o){t.tabList.push(e.id);var n=d["default"].render(p["default"],{id:e.id,name:e.name});d["default"].one(".vc-tabbar",t.$dom).appendChild(n);var r=d["default"].render(h["default"],{id:e.id});o&&(a.isString(o)?r.innerHTML+=o:a.isFunction(o.appendTo)?o.appendTo(r):a.isElement(o)&&r.appendChild(o)),d["default"].one(".vc-content",t.$dom).appendChild(r)}),e.trigger("addTool",function(t){if(t){var o=d["default"].one(".vc-tool-last"),n=!0,r=!1,i=void 0;try{for(var l,c=t[Symbol.iterator]();!(n=(l=c.next()).done);n=!0){var s=l.value,u=d["default"].render(y["default"],{name:s.name||"Undefined",pluginID:e.id});1==s.global&&d["default"].addClass(u,"vc-global-tool"),a.isFunction(s.onClick)&&d["default"].bind(u,"click",s.onClick),o.parentNode.insertBefore(u,o)}}catch(f){r=!0,i=f}finally{try{!n&&c["return"]&&c["return"]()}finally{if(r)throw i}}}}),e.trigger("ready")}},{key:"_triggerPluginsEvent",value:function(e){for(var t in this.pluginList)this.pluginList[t].trigger(e)}},{key:"_triggerPluginEvent",value:function(e,t){var o=this.pluginList[e];o&&o.trigger(t)}},{key:"addPlugin",value:function(e){return void 0!==this.pluginList[e.id]?(console.warn("Plugin "+e.id+" has already been added."),!1):(this.pluginList[e.id]=e,this.isReady&&this._initPlugin(e),!0)}},{key:"show",value:function(){d["default"].addClass(this.$dom,"vc-toggle"),this._triggerPluginsEvent("showConsole"),this.bodyOverflowCSS=document.body.style.overflow,document.body.style.overflow="hidden"}},{key:"hide",value:function(){document.body.style.overflow=this.bodyOverflowCSS,d["default"].removeClass(this.$dom,"vc-toggle"),this._triggerPluginsEvent("hideConsole")}},{key:"showTab",value:function(e){var t=d["default"].one("#__vc_log_"+e);d["default"].removeClass(d["default"].all(".vc-tab",this.$dom),"vc-actived"),d["default"].addClass(d["default"].one("#__vc_tab_"+e),"vc-actived"),d["default"].removeClass(d["default"].all(".vc-logbox",this.$dom),"vc-actived"),d["default"].addClass(t,"vc-actived"),d["default"].one(".vc-content",this.$dom).scrollTop=d["default"].one(".vc-content",this.$dom).scrollHeight,d["default"].removeClass(d["default"].all(".vc-tool",this.$dom),"vc-actived"),d["default"].addClass(d["default"].all(".vc-tool-"+e,this.$dom),"vc-actived"),this._triggerPluginEvent(this.activedTab,"hide"),this.activedTab=e,this._triggerPluginEvent(this.activedTab,"show")}}]),e}();t["default"]=m,e.exports=t["default"]},function(e,t){"use strict";function o(e){var t=e>0?new Date(e):new Date,o=t.getDate()<10?"0"+t.getDate():t.getDate(),n=t.getMonth()<9?"0"+(t.getMonth()+1):t.getMonth()+1,r=t.getFullYear(),i=t.getHours()<10?"0"+t.getHours():t.getHours(),l=t.getMinutes()<10?"0"+t.getMinutes():t.getMinutes(),c=t.getSeconds()<10?"0"+t.getSeconds():t.getSeconds(),a=t.getMilliseconds()<10?"0"+t.getMilliseconds():t.getMilliseconds();return 100>a&&(a="0"+a),{time:+t,year:r,month:n,day:o,hour:i,minute:l,second:c,millisecond:a}}function n(e){return"[object Number]"==Object.prototype.toString.call(e)}function r(e){return"[object String]"==Object.prototype.toString.call(e)}function i(e){return"[object Array]"==Object.prototype.toString.call(e)}function l(e){return"[object Boolean]"==Object.prototype.toString.call(e)}function c(e){return"[object Undefined]"==Object.prototype.toString.call(e)}function a(e){return"[object Null]"==Object.prototype.toString.call(e)}function s(e){return"[object Symbol]"==Object.prototype.toString.call(e)}function d(e){return!("[object Object]"!=Object.prototype.toString.call(e)&&(n(e)||r(e)||i(e)||a(e)||u(e)||c(e)||s(e)))}function u(e){return"[object Function]"==Object.prototype.toString.call(e)}function f(e){return"object"===("undefined"==typeof HTMLElement?"undefined":g(HTMLElement))?e instanceof HTMLElement:e&&"object"===("undefined"==typeof e?"undefined":g(e))&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function v(e){return document.createElement("a").appendChild(document.createTextNode(e)).parentNode.innerHTML}function p(e){function t(e){for(var t=p.length-1;t>=0;t--)if(p[t].child==e)return!0;return!1}function o(e){if(d(e)){if(t(e))return void(f+="CircularObject");p.push({parent:parent,child:e});var b=Object.keys(e);f+="{",v++;for(var h=0;h0&&(n=Array.prototype.slice.call(o)),n},c.addClass=function(e,t){if(e){(0,r.isArray)(e)||(e=[e]);var o=!0,n=!1,i=void 0;try{for(var l,c=e[Symbol.iterator]();!(o=(l=c.next()).done);o=!0){var a=l.value;a.className+=" "+t}}catch(s){n=!0,i=s}finally{try{!o&&c["return"]&&c["return"]()}finally{if(n)throw i}}}},c.removeClass=function(e,t){if(e){(0,r.isArray)(e)||(e=[e]);var o=!0,n=!1,i=void 0;try{for(var l,c=e[Symbol.iterator]();!(o=(l=c.next()).done);o=!0){for(var a=l.value,s=a.className.split(" "),d=0;d=0&&m.splice(t,1)}function c(e){var t=document.createElement("style");return t.type="text/css",i(e,t),t}function a(e){var t=document.createElement("link");return t.rel="stylesheet",i(e,t),t}function s(e,t){var o,n,r;if(t.singleton){var i=y++;o=g||(g=c(t)),n=d.bind(null,o,i,!1),r=d.bind(null,o,i,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(o=a(t),n=f.bind(null,o),r=function(){l(o),o.href&&URL.revokeObjectURL(o.href)}):(o=c(t),n=u.bind(null,o),r=function(){l(o)});return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else r()}}function d(e,t,o,n){var r=o?"":n.css;if(e.styleSheet)e.styleSheet.cssText=_(t,r);else{var i=document.createTextNode(r),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(i,l[t]):e.appendChild(i)}}function u(e,t){var o=t.css,n=t.media;if(n&&e.setAttribute("media",n),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}function f(e,t){var o=t.css,n=t.sourceMap;n&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */");var r=new Blob([o],{type:"text/css"}),i=e.href;e.href=URL.createObjectURL(r),i&&URL.revokeObjectURL(i)}var v={},p=function(e){var t;return function(){return"undefined"==typeof t&&(t=e.apply(this,arguments)),t}},b=p(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),h=p(function(){return document.head||document.getElementsByTagName("head")[0]}),g=null,y=0,m=[];e.exports=function(e,t){t=t||{},"undefined"==typeof t.singleton&&(t.singleton=b()),"undefined"==typeof t.insertAt&&(t.insertAt="bottom");var o=r(e);return n(o,t),function(e){for(var i=[],l=0;l
vConsole
'},function(e,t){e.exports="{{name}}"},function(e,t){e.exports="
"},function(e,t){e.exports='{{name}}'},function(e,t){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var o=0;on;n++)o[n]=arguments[n];var r=_possibleConstructorReturn(this,(e=Object.getPrototypeOf(VConsoleDefaultTab)).call.apply(e,[this].concat(o)));return r.tplTabbox=_tabbox_default2["default"],r}return _inherits(VConsoleDefaultTab,_VConsoleLogTab),_createClass(VConsoleDefaultTab,[{key:"onReady",value:function(){var e=this;_get(Object.getPrototypeOf(VConsoleDefaultTab.prototype),"onReady",this).call(this),_query2["default"].bind(_query2["default"].one(".vc-cmd",this.$tabbox),"submit",function(t){t.preventDefault();var o=_query2["default"].one(".vc-cmd-input",t.target),n=o.value;o.value="",""!==n&&e.evalCommand(n)})}},{key:"evalCommand",value:function evalCommand(cmd){var date=tool.getDate(+new Date);this.renderLog({logType:"log",meta:date.hour+":"+date.minute+":"+date.second,content:_query2["default"].render(_item_code2["default"],{content:cmd,type:"input"},!0),style:""});var result=eval(cmd),content="";content=tool.isArray(result)||tool.isObject(result)?this.getFoldedLine(result):_query2["default"].render(_item_code2["default"],{content:result,type:"output"},!0),this.renderLog({logType:"log",meta:"",content:content,style:"vc-item-nometa"})}}]),VConsoleDefaultTab}(_log2["default"]),tab=new VConsoleDefaultTab("default","Log");exports["default"]=tab,module.exports=exports["default"]},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},s=function(){function e(e,t){for(var o=0;or;r++)n[r]=arguments[r];var c=l(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(n)));return c.tplTabbox="",c.allowUnformattedLog=!0,c.isReady=!1,c.$tabbox=null,c.console={},c.logList=[],c.mockConsole(),c}return c(t,e),s(t,[{key:"onInit",value:function(){this.isReady=!0,this.$tabbox=v["default"].render(this.tplTabbox,{});var e=!0,t=!1,o=void 0;try{for(var n,r=this.logList[Symbol.iterator]();!(e=(n=r.next()).done);e=!0){var i=n.value;this.printLog(i)}}catch(l){t=!0,o=l}finally{try{!e&&r["return"]&&r["return"]()}finally{if(t)throw o}}this.logList=[]}},{key:"onRenderTab",value:function(e){e(this.$tabbox)}},{key:"onAddTool",value:function(e){var t=this,o=[{name:"Clear",global:!1,onClick:function(e){t.clearLog()}}];e(o)}},{key:"onReady",value:function(){v["default"].bind(v["default"].one(".vc-log",this.$tabbox),"click",function(e){var t=e.target;v["default"].hasClass(t,"vc-fold-outer")&&(v["default"].hasClass(t.parentElement,"vc-toggle")?v["default"].removeClass(t.parentElement,"vc-toggle"):v["default"].addClass(t.parentElement,"vc-toggle"),e.preventDefault())})}},{key:"mockConsole",value:function(){var e=this;window.console?(this.console.log=window.console.log,this.console.info=window.console.info,this.console.warn=window.console.warn,this.console.debug=window.console.debug,this.console.error=window.console.error):window.console={},window.console.log=function(){e.printLog({logType:"log",logs:arguments})},window.console.info=function(){e.printLog({logType:"info",logs:arguments})},window.console.warn=function(){e.printLog({logType:"warn",logs:arguments})},window.console.debug=function(){e.printLog({logType:"debug",logs:arguments})},window.console.error=function(){e.printLog({logType:"error",logs:arguments})},window.onerror=function(e,t,o,n,r){var i=r.stack.split("at");i=i[0]+" "+i[1],i=i.replace(location.origin,""),console.error(i)}}},{key:"clearLog",value:function(){v["default"].one(".vc-log",this.$tabbox).innerHTML=""}},{key:"printOriginLog",value:function(e){"function"==typeof this.console[e.logType]&&this.console[e.logType].apply(window.console,e.logs)}},{key:"printLog",value:function(e){var t=e.logs;if(t.length){t=[].slice.call(t);var o=!0,n=/^\[(\w+)\] ?/i,r=""; +if(u.isString(t[0])){var i=t[0].match(n);null!==i&&i.length>0&&(r=i[1].toLowerCase())}if(r?o=r==this.id:0==this.allowUnformattedLog&&(o=!1),!o)return void this.printOriginLog(e);if(e.date||(e.date=+new Date),!this.isReady)return void this.logList.push(e);u.isString(t[0])&&(t[0]=t[0].replace(n,""),""===t[0]&&t.shift());for(var l="",c=0;c")}catch(s){l+=" ["+a(t[c])+"]"}var d=u.getDate(e.date);this.renderLog({logType:e.logType,content:l,meta:d.hour+":"+d.minute+":"+d.second,style:""}),this.printOriginLog(e)}}},{key:"renderLog",value:function(e){var t=v["default"].render(g["default"],e);v["default"].one(".vc-log",this.$tabbox).appendChild(t),v["default"].one(".vc-content").scrollTop=v["default"].one(".vc-content").scrollHeight}},{key:"getFoldedLine",value:function(e){function t(e){for(var t=s.length-1;t>=0;t--)if(s[t].child==e)return!0;return!1}function o(e,n){if(u.isObject(e)){if(t(e))return void(i+="{Circular Object}");s.push({parent:n,child:e});var r=Object.keys(e);i+="{\n",c++;for(var l=0;l26&&(l+="..."),r=Object.prototype.toString.call(e).replace("[object ","").replace("]",""),r+=" "+l;var s=[];o(e,null);var d=v["default"].render(m["default"],{outer:r,inner:i},!0);return d}}]),t}(b["default"]);t["default"]=w,e.exports=t["default"]},function(e,t){e.exports='
{{meta}}
{{content}}
'},function(e,t){e.exports='
{{outer}}
{{inner}}
'},function(e,t){e.exports="{{code}}"},function(e,t){e.exports="
"},function(e,t){e.exports='
{{content}}
'},function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var o=0;or;r++)n[r]=arguments[r];var c=l(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(n)));return c.tplTabbox=b["default"],c.allowUnformattedLog=!1,c}return c(t,e),a(t,[{key:"onInit",value:function(){s(Object.getPrototypeOf(t.prototype),"onInit",this).call(this),this.printSystemInfo()}},{key:"printSystemInfo",value:function(){var e=navigator.userAgent,t="",o=u.getDate();console.info("[system]","Now:",o.year+"-"+o.month+"-"+o.day+" "+o.hour+":"+o.minute+":"+o.second+"."+o.millisecond),t="Unknown";var n=e.match(/(ipod).*\s([\d_]+)/i),r=e.match(/(ipad).*\s([\d_]+)/i),i=e.match(/(iphone)\sos\s([\d_]+)/i),l=e.match(/(android)\s([\d\.]+)/i);l?t="Android "+l[2]:i?t="iPhone, iOS "+i[2].replace(/_/g,"."):r?t="iPad, iOS "+r[2].replace(/_/g,"."):n&&(t="iPod, iOS "+n[2].replace(/_/g,".")),console.info("[system]","System:",t);var c=e.match(/MicroMessenger\/([\d\.]+)/i);t="Unknown",c&&c[1]&&(t=c[1],console.info("[system]","WeChat:",t));var a=e.toLowerCase().match(/ nettype\/([^ ]+)/g);t="Unknown",a&&a[0]&&(a=a[0].split("/"),t=a[1],console.info("[system]","Network:",t)),t="Unknown",t="https:"==location.protocol?"HTTPS":"http:"==location.protocol?"HTTP":location.protocol.replace(":",""),console.info("[system]","Protocol:",t);var s=window.performance||window.msPerformance||window.webkitPerformance;if(s&&s.timing){var d=s.timing,f=d.navigationStart;console.info("[system]","connectEndTime:",d.connectEnd-f+"ms"),console.info("[system]","responseEndTime:",d.responseEnd-f+"ms"),d.secureConnectionStart>0&&console.info("[system]","SSL Cost:",d.connectEnd-d.secureConnectionStart+"ms"),console.info("[system]","DomRenderCost:",d.domComplete-d.domLoading+"ms")}console.info("[system]","UA:",e)}}]),t}(v["default"]),g=new h("system","System");t["default"]=g,e.exports=t["default"]},function(e,t){e.exports="
"},function(e,t,o){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t["default"]=e,t}function r(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var o=0;or;r++)n[r]=arguments[r];var c=l(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(n)));return c.$tabbox=d["default"].render(h["default"],{}),c.$header=null,c.reqList={},c.domList={},c.mockAjax(),c}return c(t,e),a(t,[{key:"onRenderTab",value:function(e){e(this.$tabbox)}},{key:"onAddTool",value:function(e){var t=this,o=[{name:"Clear",global:!1,onClick:function(e){t.clearLog()}}];e(o)}},{key:"onReady",value:function(){this.renderHeader(),d["default"].delegate(d["default"].one(".vc-log",this.$tabbox),"click",".vc-group-preview",function(e){var t=this.parentNode;d["default"].hasClass(t,"vc-actived")?d["default"].removeClass(t,"vc-actived"):d["default"].addClass(t,"vc-actived"),e.preventDefault()})}},{key:"clearLog",value:function(){this.reqList={};for(var e in this.domList)this.domList[e].remove(),this.domList[e]=void 0;this.domList={},this.renderHeader()}},{key:"renderHeader",value:function(){var e=Object.keys(this.reqList).length,t=d["default"].render(y["default"],{count:e}),o=d["default"].one(".vc-log",this.$tabbox);this.$header?this.$header.parentNode.replaceChild(t,this.$header):o.parentNode.insertBefore(t,o),this.$header=t}},{key:"updateRequest",value:function(e,t){var o=Object.keys(this.reqList).length,n=this.reqList[e]||{};for(var r in t)n[r]=t[r];this.reqList[e]=n;var i={url:n.url,status:n.status,type:"-",costTime:n.costTime>0?n.costTime+"ms":"-",header:n.header,response:f.htmlEncode(n.response)};n.readyState<=1?i.status="Pending":n.readyState<4&&(i.status="Loading");var l=d["default"].render(_["default"],i),c=this.domList[e];n.status>=400&&d["default"].addClass(d["default"].one(".vc-group-preview",l),"vc-table-row-error"),c?c.parentNode.replaceChild(l,c):d["default"].one(".vc-log",this.$tabbox).appendChild(l),this.domList[e]=l;var a=Object.keys(this.reqList).length;a!=o&&this.renderHeader()}},{key:"mockAjax",value:function(){var e=window.XMLHttpRequest;if(e){var t=this,o=window.XMLHttpRequest.prototype.open;window.XMLHttpRequest.prototype.send;window.XMLHttpRequest.prototype.open=function(){var e=this,n=[].slice.call(arguments),r=n[1],i=t.getUniqueID();e._requestID=i;var l=e.onreadystatechange||function(){};return e.onreadystatechange=function(){var o=t.reqList[i]||{};if(o.url=r,o.readyState=e.readyState,o.status=e.status,0==e.readyState)o.startTime=+new Date;else if(1==e.readyState)o.startTime=+new Date;else if(2==e.readyState){o.header={};var n=e.getAllResponseHeaders()||"",c=n.split("\n"),a=!0,s=!1,d=void 0;try{for(var u,f=c[Symbol.iterator]();!(a=(u=f.next()).done);a=!0){var v=u.value;if(v){var p=v.split(": "),b=p[0],h=p.slice(1).join(": ");o.header[b]=h}}}catch(g){s=!0,d=g}finally{try{!a&&f["return"]&&f["return"]()}finally{if(s)throw d}}}else 3==e.readyState||4==e.readyState&&(o.endTime=+new Date,o.costTime=o.endTime-(o.startTime||o.endTime),o.response=e.response);return t.updateRequest(i,o),l.apply(e,arguments)},o.apply(e,n)}}}},{key:"getUniqueID",value:function(){var e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0,o="x"==e?t:3&t|8;return o.toString(16)});return e}}]),t}(p["default"]),w=new x("network","Network");t["default"]=w,e.exports=t["default"]},function(e,t){e.exports="
"},function(e,t){e.exports='
Name {{if (count > 0)}}({{count}}){{/if}}
Status
Time
'},function(e,t){e.exports='
{{url}}
{{status}}
{{costTime}}
Headers
{{for (var key in header)}}
{{key}}
{{header[key]}}
{{/for}}
Response
{{response}}
'}])}); \ No newline at end of file diff --git a/package.json b/package.json index 0287a188..3c058922 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "homepage": "https://github.com/WechatFE/vConsole", "main": "dist/vconsole.min.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "mocha", + "dist": "webpack && npm test" }, "keywords": [ "console", @@ -29,7 +30,10 @@ "less": "^2.5.3", "less-loader": "^2.2.3", "style-loader": "^0.13.1", - "webpack": "~1.12.11" + "webpack": "~1.12.11", + "jsdom": "^9.2.1", + "mocha": "^2.5.3", + "chai": "^3.5.0" }, "author": "WechatFE Team", "license": "MIT" diff --git a/src/lib/tool.js b/src/lib/tool.js index b1273948..3cf1b576 100644 --- a/src/lib/tool.js +++ b/src/lib/tool.js @@ -63,12 +63,12 @@ export function isObject(value) { || // if it isn't a primitive value, then it is a common object ( - !isNumber(value) && - !isString(value) && - !isArray(value) && - !isNull(value) && - !isFunction(value) && - !isUndefined(value) && + !isNumber(value) && + !isString(value) && + !isArray(value) && + !isNull(value) && + !isFunction(value) && + !isUndefined(value) && !isSymbol(value) ) ); @@ -185,10 +185,16 @@ export function JSONStringify(obj) { * localStorage methods */ export function setStorage(key, value) { + if (!window.localStorage) { + return; + } key = 'vConsole_' + key; localStorage.setItem(key, value); } export function getStorage(key) { + if (!window.localStorage) { + return; + } key = 'vConsole_' + key; return localStorage.getItem(key); } diff --git a/test/ajax.html b/test/ajax.html index e0f691a1..d6f94b7c 100644 --- a/test/ajax.html +++ b/test/ajax.html @@ -7,8 +7,8 @@ - - + + diff --git a/test/log.html b/test/log.html index 3bdb936a..606c0a16 100644 --- a/test/log.html +++ b/test/log.html @@ -7,8 +7,8 @@ - - + + diff --git a/test/plugin.html b/test/plugin.html index c2bee3b0..a80bd98c 100644 --- a/test/plugin.html +++ b/test/plugin.html @@ -7,8 +7,8 @@ - - + + diff --git a/test/test.js b/test/test.js new file mode 100644 index 00000000..1ed4c960 --- /dev/null +++ b/test/test.js @@ -0,0 +1,130 @@ +describe("vConsole", function() { + + var assert = require('chai').assert; + var util = require('util'); + var jsdom = require('jsdom'); + + it('touch event', function(done) { + jsdom.env('test/log.html', function(err, window) { + var document = window.document; + + window.localStorage = { + getItem: function (key) { + return this[key]; + }, + setItem: function (key, value) { + this[key] = String(value); + } + }; + global.localStorage = window.localStorage; + + var vcSwitch = document.querySelector('.vc-switch'); + + var eventTouchstart = document.createEvent('Event'); + eventTouchstart.initEvent('touchstart', true, true); + var point = { x: 10, y: 10 }; + eventTouchstart.touches = [{ + identifier: Math.random(), + pageX: point.x, + pageY: point.y, + screenX: point.x, + screenY: point.y, + clientX: point.x, + clientY: point.y + }]; + vcSwitch.dispatchEvent(eventTouchstart); + + var eventTouchmove = document.createEvent('Event'); + eventTouchmove.initEvent('touchmove', true, true); + var point = { x: 12, y: 12 }; + eventTouchmove.touches = [{ + identifier: Math.random(), + pageX: point.x, + pageY: point.y, + screenX: point.x, + screenY: point.y, + clientX: point.x, + clientY: point.y + }]; + vcSwitch.dispatchEvent(eventTouchmove); + + var eventTouchend = document.createEvent('Event'); + eventTouchend.initEvent('touchend', true, true); + vcSwitch.dispatchEvent(eventTouchend); + setTimeout(function () { + assert.equal(localStorage.vConsole_switch_x, '8'); + + global.localStorage = null; + window.localStorage = null; + done(); + }, 100); + }, { + features: { + FetchExternalResources: ["link", "script"] + } + }); + }); + + it('log.html', function(done) { + jsdom.env('test/log.html', function(err, window) { + var document = window.document; + + assert.equal(document.querySelector('#__vconsole') !== null, true); + + document.querySelector('.weui_btn.weui_btn_default:nth-of-type(1)').click(); // formattedLog + assert.equal(document.querySelector('.vc-logbox.vc-actived .vc-log .vc-item .vc-item-content').innerHTML, ' formattedLog() Start'); + + document.querySelector('.vc-toolbar .vc-tool.vc-tool-default:nth-of-type(1)').click(); // clear + assert.equal(document.querySelector('.vc-logbox.vc-actived .vc-log .vc-item .vc-item-content'), null); + + document.querySelector('.weui_btn.weui_btn_default:nth-of-type(2)').click(); // normalObject + assert.equal(document.querySelector('.vc-logbox.vc-actived .vc-log .vc-item .vc-item-content').innerHTML, ' normalObject() Start'); + + document.querySelector('.vc-toolbar .vc-tool.vc-tool-default:nth-of-type(1)').click(); // clear + assert.equal(document.querySelector('.vc-logbox.vc-actived .vc-log .vc-item .vc-item-content'), null); + + done(); + }, { + features: { + FetchExternalResources: ["link", "script"] + } + }); + }); + + it('plugin.html', function(done) { + jsdom.env('test/plugin.html', function(err, window) { + var document = window.document; + assert.equal(document.querySelector('#__vconsole') !== null, true); + + document.querySelector('.page a:nth-of-type(1)').click(); // newTab + assert.equal(document.querySelector('.vc-tabbar .vc-tab:nth-of-type(4)').innerHTML, 'Tab1'); + + done(); + }, { + features: { + FetchExternalResources: ["link", "script"] + } + }); + }); + + it('ajax.html', function(done) { + this.timeout(2000); + + jsdom.env('test/ajax.html', function(err, window) { + var document = window.document; + assert.equal(document.querySelector('#__vconsole') !== null, true); + + document.querySelector('.page a:nth-of-type(1)').click(); // asyncAjax + setTimeout(function () { + assert.equal(document.querySelector('.vc-logbox.vc-actived .vc-log .vc-fold-outer').innerHTML, 'Object {ret: 0, msg: "ok"}'); + done(); + }, 10) + + }, { + features: { + FetchExternalResources: ["link", "script"] + } + }); + }); + +}); \ No newline at end of file