diff --git a/.gitignore b/.gitignore index a7637ad01..05d8a56b5 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,6 @@ results .project .idea/ npm-debug.log -sys/node_modules/ +node_modules web/topic/ diff --git a/frontEnd/admin/package.json b/frontEnd/admin/package.json new file mode 100644 index 000000000..afecbfcbc --- /dev/null +++ b/frontEnd/admin/package.json @@ -0,0 +1,24 @@ +{ + "name": "multi-page", + "version": "1.0.0", + "description": "blog's administrator project", + "main": "app.js", + "scripts": { + "dev": "fis3 release -wd ../../static/", + "production": "fis3 release production -d ../../static/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/bh-lay/blog.git" + }, + "keywords": [ + "bh-lay", + "blog" + ], + "author": "剧中人[bh-lay.com]", + "license": "ISC", + "bugs": { + "url": "https://github.com/bh-lay/blog/issues" + }, + "homepage": "https://github.com/bh-lay/blog#readme" +} diff --git a/frontEnd/deploy.sh b/frontEnd/deploy.sh index c87001432..05e19c595 100644 --- a/frontEnd/deploy.sh +++ b/frontEnd/deploy.sh @@ -3,7 +3,6 @@ function help(){ echo "Usage sh $0 [project] [media]"; echo " project 项目目录名,all为编译全部"; echo " media fis3 中配置的 media(可选)\n"; - echo "notice 非编译全部项目[all],且未指定 media 时,默认开启 watch\n"; } # 画横线 @@ -17,10 +16,10 @@ function deploy(){ if [ ${1:0:1} == '_' ]; then echo "skip ["$1"], ["$1"] is not a project !\n"; else - echo ' frontEnd/'$1 ' --> '$deployTo; - echo ' fis3 release '$deployMedia' '$watch' -d '$deployTo' --file fis-conf.js' + echo ' cd frontEnd/'$1; + echo ' npm run '$deployMedia cd $root'/'$1 - fis3 release $deployMedia $watch -d $deployTo --file fis-conf.js + npm run $deployMedia fi } @@ -31,16 +30,6 @@ root=`pwd`; # 发布media,fis3的参数 deployMedia=${2:-''}; -# 发布目录 -deployTo='../../static/'; - -# 是否开启持续观测模式 -watch=''; -# 没有media配置时才用watch -if [ ${#deployMedia} == 0 ]; then - watch='-w'; -fi - echo '\n[BDS] bh-lay deploy system' @@ -61,8 +50,7 @@ elif [ $1 == 'all' ]; then # all 编译所有项目 echo "deploy all project start "; - # 取消 watch - watch=''; + # 遍历编译所有项目 for x in `ls -l | grep '^d' | awk '{print $9}'` do diff --git a/frontEnd/multi-page/package.json b/frontEnd/multi-page/package.json new file mode 100644 index 000000000..5caaff25e --- /dev/null +++ b/frontEnd/multi-page/package.json @@ -0,0 +1,24 @@ +{ + "name": "multi-page", + "version": "1.0.0", + "description": "blog's multi page project", + "main": "null", + "scripts": { + "dev": "fis3 release -wd ../../static/", + "production": "fis3 release production -d ../../static/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/bh-lay/blog.git" + }, + "keywords": [ + "bh-lay", + "blog" + ], + "author": "剧中人[bh-lay.com]", + "license": "ISC", + "bugs": { + "url": "https://github.com/bh-lay/blog/issues" + }, + "homepage": "https://github.com/bh-lay/blog#readme" +} diff --git a/frontEnd/single-page/app.js b/frontEnd/single-page/app.js index 73cc64d84..c6732ba8a 100644 --- a/frontEnd/single-page/app.js +++ b/frontEnd/single-page/app.js @@ -3,124 +3,122 @@ * Copyright (c) 2012-2018 **/ -window.L = window.L || {}; +// window.L = window.L || {}; -require([ - 'js/user', - 'js/navigation', - 'js/Base', - 'js/routerHandle', - 'js/imageHosting', - 'js/funny', +import './css/main.less'; - 'js/dialog' -], function (user,navigation,utils,routerHandle,imageHosting,funny){ +import user from './js/user.js' +import navigation from './js/navigation.js' +import utils from "./js/Base.js"; +import imageHosting from "./js/imageHosting.js"; +import funny from "./js/funny.js"; +import UI from "./js/dialog.js"; +import routerHandle from "./js/routerHandle.js"; - /** - * 判断是否支持css属性 - * 兼容css3 - */ - var supports = (function() { - var styles = document.createElement('div').style, - vendors = 'Webkit Khtml Ms O Moz'.split(/\s/); +/** +* 判断是否支持css属性 +* 兼容css3 +*/ +let supports = (function() { + let styles = document.createElement('div').style; + let vendors = 'Webkit Khtml Ms O Moz'.split(/\s/); - return function(prop) { - if ( prop in styles ){ - return prop; - }else{ - prop = prop.replace(/^[a-z]/, function(val) { - return val.toUpperCase(); - }); - for(var i=0,total=vendors.length;i -1){ - //若gravatar官网请求失败,使用多说镜像 - elem.src = elem.src.replace('www.gravatar.com','gravatar.duoshuo.com'); - }else if(elem.src.indexOf('gravatar.duoshuo.com') > -1){ - //若多说镜像失败,使用默认头像 - elem.src = __uri('/images/default.jpg'); } - //其余情况均不处理(已是默认头像) }; +})(); +//是否支持 canvas +let supports_canvas = !!document.createElement('canvas').getContext; +//是否为windows系统 +let isWindows = /windows|win32/.test(navigator.userAgent.toLowerCase()); +//是否支持 history API +let isHistorySupported = window.history && window.history.pushState; +//是否为高级浏览器 +let isAdvancedBrowser = !!(supports('transform') && isHistorySupported && supports_canvas); - //模块替换 - L.tplModule = function(txt){ - return (txt && txt.length) ? txt.replace(/\[\-(\w+)\-\]/g,function(a,key){ - return utils.query('#module_' + key).innerHTML || ''; - }) : ''; - }; +//屌丝就用屌丝版 +if (!isAdvancedBrowser) { + document.cookie = 'ui_version=html;path=/;'; + window.location.reload(); +} +//为windows系统定制body滚动条样式(仅webkit有效) +if (isWindows) { + utils.addClass(utils.query('body'),'define-scrollbar'); +} +window.L = {}; +L.user = user; +//占用全局方法 +L.gravatar_error_fn = function(elem){ + if(elem.src.indexOf('www.gravatar.com') > -1){ + //若gravatar官网请求失败,使用多说镜像 + elem.src = elem.src.replace('www.gravatar.com','gravatar.duoshuo.com'); + }else if(elem.src.indexOf('gravatar.duoshuo.com') > -1){ + //若多说镜像失败,使用默认头像 + elem.src = require("./images/default.jpg"); + } + //其余情况均不处理(已是默认头像) +}; - //动态插入emoji表情样式 - var str = ''; - utils.query('head').insertAdjacentHTML('beforeEnd', str); +//模块替换 +L.tplModule = function(txt){ + return (txt && txt.length) ? txt.replace(/\[\-(\w+)\-\]/g,function(a,key){ + return utils.query('#module_' + key).innerHTML || ''; + }) : ''; +}; - //配置弹出层 - UI.config.zIndex(2000); +//动态插入emoji表情样式 +var str = ''; +utils.query('head').insertAdjacentHTML('beforeEnd', str); - //开始导航 - navigation.init(); - //加入一些好玩的东西 - funny(); - //开始掌控路由 - routerHandle(); - //渐隐加载遮罩 - utils.addClass(utils.query('.app_mask'),'app_mask_out'); - setTimeout(function () { - utils.remove(utils.query('.app_mask')); - }, 1000); +//配置弹出层 +UI.config.zIndex(2000); +//开始导航 +navigation.init(); +//加入一些好玩的东西 +funny(); +//开始掌控路由 +routerHandle(); +//渐隐加载遮罩 +utils.addClass(utils.query('.app_mask'),'app_mask_out'); +setTimeout(function () { + utils.remove(utils.query('.app_mask')); +}, 1000); - /** - * 分享功能 - * data-text data-url data-title data-img data-shareto - */ - utils.bind(utils.query('body'),'click','.sns-share a',function(){ - var node_data = utils.parents(this,'.sns-share'), - url = node_data.getAttribute('data-url') || location.href, - text = encodeURIComponent(node_data.getAttribute('data-text')) || document.title, - title = encodeURIComponent(node_data.getAttribute('data-title')), - img = node_data.getAttribute('data-img'), - shareto = this.getAttribute('data-shareto'); - img = img ? imageHosting(img) : ''; - var share_url={ - weibo: 'http://service.weibo.com/share/share.php?title='+text+'+&url='+url+'&source=bookmark&appkey=2861592023&searchPic=false&pic='+img, - qzone: 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?summary='+text+'&url='+url+'&title='+ title+'&pics='+img+'&desc='+text - }; - share_url[shareto] && window.open(share_url[shareto]); - return false; - }); +/** +* 分享功能 +* data-text data-url data-title data-img data-shareto +*/ +utils.bind(utils.query('body'),'click','.sns-share a', function () { + var node_data = utils.parents(this,'.sns-share'), + url = node_data.getAttribute('data-url') || location.href, + text = encodeURIComponent(node_data.getAttribute('data-text')) || document.title, + title = encodeURIComponent(node_data.getAttribute('data-title')), + img = node_data.getAttribute('data-img'), + shareto = this.getAttribute('data-shareto'); + img = img ? imageHosting(img) : ''; + var share_url={ + weibo: 'http://service.weibo.com/share/share.php?title='+text+'+&url='+url+'&source=bookmark&appkey=2861592023&searchPic=false&pic='+img, + qzone: 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?summary='+text+'&url='+url+'&title='+ title+'&pics='+img+'&desc='+text + }; + share_url[shareto] && window.open(share_url[shareto]); + return false; }); + diff --git a/frontEnd/single-page/comments/face.js b/frontEnd/single-page/comments/face.js index a1618f61f..88f6372f6 100644 --- a/frontEnd/single-page/comments/face.js +++ b/frontEnd/single-page/comments/face.js @@ -1,30 +1,30 @@ -define([ - 'js/Base', - 'js/juicer' -],function(utils,juicer){ - var face_config = 'smile grinning smiley blush relaxed wink heart_eyes kissing_heart kissing_heart kissing flushed grin pensive relieved cry scream angry mask tired_face sleeping hushed smirk 1 -1 two_men_holding_hands heart broken_heart gun'; - var face_tpl = ['
{@each list as it}', - '', - '{@/each}
'].join(''); - function face(param){ - var html = ''; - var config_arr = face_config.split(/\s/); - var html = juicer(face_tpl,{ - list: config_arr - }); +import utils from "../js/Base.js"; +import juicer from "../js/juicer.js"; +import UI from "../js/dialog.js"; - var pop = UI.pop({ - title: '贱萌的emoji表情', - top: param.top, - left: param.left, - width: 300, - html : html - }); - utils.bind(pop.cntDom,'click','a',function(){ - param.onSelect && param.onSelect(this.getAttribute('title')); - pop.close(); - }); - } - return face; -}); +var face_config = 'smile grinning smiley blush relaxed wink heart_eyes kissing_heart kissing_heart kissing flushed grin pensive relieved cry scream angry mask tired_face sleeping hushed smirk 1 -1 two_men_holding_hands heart broken_heart gun'; +var face_tpl = ['
{@each list as it}', + '', +'{@/each}
'].join(''); + +function face(param){ + var html = ''; + var config_arr = face_config.split(/\s/); + var html = juicer(face_tpl,{ + list: config_arr + }); + + var pop = UI.pop({ + title: '贱萌的emoji表情', + top: param.top, + left: param.left, + width: 300, + html : html + }); + utils.bind(pop.cntDom,'click','a',function(){ + param.onSelect && param.onSelect(this.getAttribute('title')); + pop.close(); + }); +} +export default face; diff --git a/frontEnd/single-page/comments/index.js b/frontEnd/single-page/comments/index.js index f18c8eabf..069598b98 100644 --- a/frontEnd/single-page/comments/index.js +++ b/frontEnd/single-page/comments/index.js @@ -1,488 +1,485 @@ -define([ - 'exports', - 'js/Base', - 'comments/selection', - 'comments/face', - 'js/pagination', - 'js/juicer' -],function(exports,utils,selection,face,pagination,juicer){ - var private_userInfo = null, - default_avatar = __uri('/images/default.jpg'), +import utils from "../js/Base.js"; +import juicer from "../js/juicer.js"; +import pagination from "../js/pagination.js"; +import selection from "./selection.js"; +import face from "./face.js"; +import UI from "../js/dialog.js"; - noData_tpl = '
来的真早,快抢沙发!
', - baseTpl = __inline('tpl/comments/base.html'), - sendBox_tpl = __inline('tpl/comments/sendBox.html'), - user_tpl = __inline('tpl/comments/user.html'), - list_tpl = __inline('tpl/comments/list.html'), - item_tpl = __inline('tpl/comments/item.html'); - /** - * 格式化网址 - * - */ - function parseUrl(input){ - var output = null; - //是否符合网址规范 - if(typeof(input) == 'string' && input.match(/[\w-]+\.\w{2,4}/) ){ - //补全协议 - output = input.match(/^http(?:s|)\:\/\//) ? input : ('http://' + input); - } - return output; + var private_userInfo = null, + default_avatar = require("../images/default.jpg"), + + noData_tpl = '
来的真早,快抢沙发!
', + baseTpl = require("html-loader!../tpl/comments/base.html"), + sendBox_tpl = require("html-loader!../tpl/comments/sendBox.html"), + user_tpl = require("html-loader!../tpl/comments/user.html"), + list_tpl = require("html-loader!../tpl/comments/list.html"), + item_tpl = require("html-loader!../tpl/comments/item.html"); +/** + * 格式化网址 + * + */ +function parseUrl(input){ + var output = null; + //是否符合网址规范 + if(typeof(input) == 'string' && input.match(/[\w-]+\.\w{2,4}/) ){ + //补全协议 + output = input.match(/^http(?:s|)\:\/\//) ? input : ('http://' + input); } + return output; +} - //处理自定义事件 - function ON(eventName,callback){ - this._events = this._events || {}; - //事件堆无该事件,创建一个事件堆 - if(!this._events[eventName]){ - this._events[eventName] = []; - } - this._events[eventName].push(callback); - //提供链式调用的支持 - return this; +//处理自定义事件 +function ON(eventName,callback){ + this._events = this._events || {}; + //事件堆无该事件,创建一个事件堆 + if(!this._events[eventName]){ + this._events[eventName] = []; } - function EMIT(eventName,args){ - this._events = this._events || {}; - //事件堆无该事件,结束运行 - if(!this._events[eventName]){ - return; - } - for(var i=0,total=this._events[eventName].length;i'); - } +/** + * 设置用户信息 + * + */ +function setUserInfoToUI(userInput){ + userInput = userInput || {}; + var user = { + username : userInput.username || '', + email : userInput.email || '', + blog : userInput.blog || '', + avatar : userInput.avatar || default_avatar + }, + screen_name = user.username || '雁过留名', + nodeUser = utils.query('.l_send_username',this.dom); + nodeUser.innerHTML = screen_name; + nodeUser.setAttribute('title',screen_name); + utils.query('.l_send_avatar img',this.dom).setAttribute('src',user.avatar); +} - /** - * 发送评论 - * - */ - function sendComment(data,callback){ - var user; - if(data.user.id){ - user = null; - }else if(data.user && data.user.username.length > 0){ - user = data.user; - }else{ - callback && callback('未登录'); - return; - } +/** + * 转换emoji表情 + */ +function strToEmoji(str){ + return str.replace(/\:((\w|\-)+)\:/g,''); +} - utils.fetch({ - url : '/ajax/comments/add', - type : 'POST', - data : { - cid : data.id, - content : data.text, - //如果为登录用户,则不发送用户信息 - user : user, - reply_for_id : data.reply_for_id - }, - callback : function(err,data){ - if(!err && data.code && data.code == 200){ - callback && callback(null,data.data); - }else{ - callback && callback('fail'); - } - } - }); +/** + * 发送评论 + * + */ +function sendComment(data,callback){ + var user; + if(data.user.id){ + user = null; + }else if(data.user && data.user.username.length > 0){ + user = data.user; + }else{ + callback && callback('未登录'); + return; } - /** - * 询问用户信息 - * - */ - function askForUserInfo(callback){ - var me = this, - //用户信息 - user = private_userInfo, - pop = UI.pop({ - title : '雁过留名', - width : 300, - html : user_tpl, - easyClose : false, - mask: true, - confirm : confirmFn - }), - nodeUsername = utils.query('input[name="username"]',pop.dom), - nodeEmail = utils.query('input[name="email"]',pop.dom), - nodeBlog = utils.query('input[name="blog"]',pop.dom); - function confirmFn(){ - var username = nodeUsername.value, - email = nodeEmail.value, - blog = nodeBlog.value; - if(username.length < 1){ - UI.prompt('大哥,告诉我你叫什么呗!',null,{ - from : 'top' - }); - return false; - } - if(blog.length && !parseUrl(blog)){ - UI.prompt('博客地址是对的么?',null,{ - from: 'top' - }); - return false; + + utils.fetch({ + url : '/ajax/comments/add', + type : 'POST', + data : { + cid : data.id, + content : data.text, + //如果为登录用户,则不发送用户信息 + user : user, + reply_for_id : data.reply_for_id + }, + callback : function(err,data){ + if(!err && data.code && data.code == 200){ + callback && callback(null,data.data); + }else{ + callback && callback('fail'); } - L.user.setLocalUser({ - username: username, - email: email, - blog: blog + } + }); +} +/** + * 询问用户信息 + * + */ +function askForUserInfo(callback){ + var me = this, + //用户信息 + user = private_userInfo, + pop = UI.pop({ + title : '雁过留名', + width : 300, + html : user_tpl, + easyClose : false, + mask: true, + confirm : confirmFn + }), + nodeUsername = utils.query('input[name="username"]',pop.dom), + nodeEmail = utils.query('input[name="email"]',pop.dom), + nodeBlog = utils.query('input[name="blog"]',pop.dom); + function confirmFn(){ + var username = nodeUsername.value, + email = nodeEmail.value, + blog = nodeBlog.value; + if(username.length < 1){ + UI.prompt('大哥,告诉我你叫什么呗!',null,{ + from : 'top' }); - //更新用户信息 - L.user.info(function(err,user){ - if(err){ - private_userInfo = null; - }else if(user){ - private_userInfo = user; - } - EMIT.call(me,'login',[private_userInfo]); - callback && callback(); + return false; + } + if(blog.length && !parseUrl(blog)){ + UI.prompt('博客地址是对的么?',null,{ + from: 'top' }); + return false; } + L.user.setLocalUser({ + username: username, + email: email, + blog: blog + }); + //更新用户信息 + L.user.info(function(err,user){ + if(err){ + private_userInfo = null; + }else if(user){ + private_userInfo = user; + } + EMIT.call(me,'login',[private_userInfo]); + callback && callback(); + }); + } - if(user){ - nodeUsername.value = user.username || ''; - nodeEmail.value = user.email || ''; - nodeBlog.value = user.blog || ''; - } + if(user){ + nodeUsername.value = user.username || ''; + nodeEmail.value = user.email || ''; + nodeBlog.value = user.blog || ''; } - /** - * 绑定dom事件 - */ - function bindDomEvent(){ - var me = this, - nodeGlobal = me.dom, - nodeTextarea = utils.query('textarea',nodeGlobal), - inputDelay, - focusDelay; +} +/** + * 绑定dom事件 + */ +function bindDomEvent(){ + var me = this, + nodeGlobal = me.dom, + nodeTextarea = utils.query('textarea',nodeGlobal), + inputDelay, + focusDelay; - utils.bind(nodeTextarea,'keyup keydown change propertychange input paste',function(){ - clearTimeout(inputDelay); - inputDelay = setTimeout(function(){ - var newVal = nodeTextarea.value.trim(); - //校验字符是否发生改变 - if(newVal == me.text){ - return; - } - me.text = newVal; - //触发自定义事件“change” - EMIT.call(me,'change'); - },80); - }).bind('focus',function(){ - clearTimeout(focusDelay); - utils.addClass(nodeGlobal,'l_sendBox_active'); - }).bind('focusout blur',function(){ + utils.bind(nodeTextarea,'keyup keydown change propertychange input paste',function(){ + clearTimeout(inputDelay); + inputDelay = setTimeout(function(){ + var newVal = nodeTextarea.value.trim(); + //校验字符是否发生改变 + if(newVal == me.text){ + return; + } + me.text = newVal; + //触发自定义事件“change” + EMIT.call(me,'change'); + },80); + }).bind('focus',function(){ clearTimeout(focusDelay); - focusDelay = setTimeout(function(){ - if(me.text.length == 0){ - utils.removeClass(nodeGlobal,'l_sendBox_active'); - } - },200); - }); + utils.addClass(nodeGlobal,'l_sendBox_active'); + }).bind('focusout blur',function(){ + clearTimeout(focusDelay); + focusDelay = setTimeout(function(){ + if(me.text.length == 0){ + utils.removeClass(nodeGlobal,'l_sendBox_active'); + } + },200); + }); - utils.bind(nodeGlobal,'click','.l_send_placeholder',function(){ - nodeTextarea.focus(); - }).bind('click','.set-userinfo',function(e){ - askForUserInfo.call(me); - }).bind('click','.l_send_submit',function(){ - me.submit(); - }).bind('click','.l_send_face',function(){ - var offset = utils.offset(this); - nodeTextarea.focus(); - face({ - top: offset.top, - left: offset.left, - onSelect: function(title){ - selection.insertTxt(nodeTextarea,':' + title + ':'); - utils.trigger(nodeTextarea,'change'); - } - }); + utils.bind(nodeGlobal,'click','.l_send_placeholder',function(){ + nodeTextarea.focus(); + }).bind('click','.set-userinfo',function(e){ + askForUserInfo.call(me); + }).bind('click','.l_send_submit',function(){ + me.submit(); + }).bind('click','.l_send_face',function(){ + var offset = utils.offset(this); + nodeTextarea.focus(); + face({ + top: offset.top, + left: offset.left, + onSelect: function(title){ + selection.insertTxt(nodeTextarea,':' + title + ':'); + utils.trigger(nodeTextarea,'change'); + } }); - } - //绑定对象自定义事件 - function bindCustomEvent(){ - var me = this, - nodeGlobal = this.dom, - nodeTextarea = utils.query('textarea',nodeGlobal), - nodeCount = utils.query('.l_send_count',nodeGlobal), - nodeCountRest = utils.query('b',nodeCount); + }); +} +//绑定对象自定义事件 +function bindCustomEvent(){ + var me = this, + nodeGlobal = this.dom, + nodeTextarea = utils.query('textarea',nodeGlobal), + nodeCount = utils.query('.l_send_count',nodeGlobal), + nodeCountRest = utils.query('b',nodeCount); - //监听字符变化事件 - this.on('change',function (){ - var length = nodeTextarea.value.length, - rest_length = me.limit - length, - show_txt = rest_length; - if(length > 2 * me.limit/3){ - nodeCount.style.display = 'block'; - if(rest_length < 0){ - show_txt = '' + Math.abs(rest_length) + ''; - } - nodeCountRest.innerHTML = show_txt; - }else{ - nodeCount.style.display = 'none'; + //监听字符变化事件 + this.on('change',function (){ + var length = nodeTextarea.value.length, + rest_length = me.limit - length, + show_txt = rest_length; + if(length > 2 * me.limit/3){ + nodeCount.style.display = 'block'; + if(rest_length < 0){ + show_txt = '' + Math.abs(rest_length) + ''; } - }).on('login',function(user){ - //设置用户信息 - setUserInfoToUI.call(me,user); + nodeCountRest.innerHTML = show_txt; + }else{ + nodeCount.style.display = 'none'; + } + }).on('login',function(user){ + //设置用户信息 + setUserInfoToUI.call(me,user); + private_userInfo = user; + }).on('sendToServiceError',function(){ + UI.prompt('网络出错,没发成功!'); + }).on('sendToServiceSuccess',function(){ + nodeTextarea.value = ''; + utils.trigger(nodeTextarea,'change'); + UI.prompt('发布成功!'); + }); +} +/** + * sendBox类 + */ +function sendBox(dom,id,param){ + var me = this, + param = param || {}; + this.id = id; + this.reply_for_id = param.reply_for_id || null; + this.isSubmitting = false; + this.limit = 500; + this.dom = utils.createDom(sendBox_tpl); + this.text = ''; + this.userDefine = {}; + this.onBeforeSend = param.onBeforeSend || null; + dom.innerHTML = ''; + dom.appendChild(this.dom); + + //绑定dom事件 + bindDomEvent.call(this); + //绑定对象自定义事件 + bindCustomEvent.call(this); + L.user.info(function(err,user){ + if(err){ + private_userInfo = null; + }else if(user){ private_userInfo = user; - }).on('sendToServiceError',function(){ - UI.prompt('网络出错,没发成功!'); - }).on('sendToServiceSuccess',function(){ - nodeTextarea.value = ''; - utils.trigger(nodeTextarea,'change'); - UI.prompt('发布成功!'); - }); + } + setUserInfoToUI.call(me,user); + }); + if(param.focus){ + utils.query('textarea',this.dom).focus(); } - /** - * sendBox类 - */ - function sendBox(dom,id,param){ +} +sendBox.prototype = { + on: ON, + submit: function(){ var me = this, - param = param || {}; - this.id = id; - this.reply_for_id = param.reply_for_id || null; - this.isSubmitting = false; - this.limit = 500; - this.dom = utils.createDom(sendBox_tpl); - this.text = ''; - this.userDefine = {}; - this.onBeforeSend = param.onBeforeSend || null; - dom.innerHTML = ''; - dom.appendChild(this.dom); + nodeTextarea = utils.query('textarea',this.dom); - //绑定dom事件 - bindDomEvent.call(this); - //绑定对象自定义事件 - bindCustomEvent.call(this); - L.user.info(function(err,user){ - if(err){ - private_userInfo = null; - }else if(user){ - private_userInfo = user; - } - setUserInfoToUI.call(me,user); - }); - if(param.focus){ - utils.query('textarea',this.dom).focus(); + nodeTextarea.focus(); + if(this.isSubmitting){ + return; + }else if(this.text.length == 0){ + UI.prompt('你丫倒写点东西啊!',null); + }else if(this.text.length > 500){ + UI.prompt('这是要刷屏的节奏么!',null); + }else if(private_userInfo){ + var text = this.onBeforeSend ? (this.onBeforeSend(me.text) || me.text) : me.text; + me.isSubmitting = true; + sendComment({ + id: me.id, + text: text, + user: private_userInfo, + reply_for_id : me.reply_for_id || null + },function(err,item){ + me.isSubmitting = false; + if(err){ + EMIT.call(me,'sendToServiceError'); + }else{ + EMIT.call(me,'sendToServiceSuccess',[item]); + } + }); + }else{ + askForUserInfo.call(me,function(){ + me.submit(); + }); } } - sendBox.prototype = { - on: ON, - submit: function(){ - var me = this, - nodeTextarea = utils.query('textarea',this.dom); - - nodeTextarea.focus(); - if(this.isSubmitting){ - return; - }else if(this.text.length == 0){ - UI.prompt('你丫倒写点东西啊!',null); - }else if(this.text.length > 500){ - UI.prompt('这是要刷屏的节奏么!',null); - }else if(private_userInfo){ - var text = this.onBeforeSend ? (this.onBeforeSend(me.text) || me.text) : me.text; - me.isSubmitting = true; - sendComment({ - id: me.id, - text: text, - user: private_userInfo, - reply_for_id : me.reply_for_id || null - },function(err,item){ - me.isSubmitting = false; - if(err){ - EMIT.call(me,'sendToServiceError'); - }else{ - EMIT.call(me,'sendToServiceSuccess',[item]); - } - }); - }else{ - askForUserInfo.call(me,function(){ - me.submit(); - }); - } - } - }; +}; - /** - * 列表类 - * - */ - function list(dom,cid,param){ - var me = this; - param = param || {}; - //comment id - this.cid = cid; - this.list = []; - this.skip = 0; - this.limit = param.list_num || 15; - this.total = 0; - this._status = 'normal'; +/** + * 列表类 + * + */ +function list(dom,cid,param){ + var me = this; + param = param || {}; + //comment id + this.cid = cid; + this.list = []; + this.skip = 0; + this.limit = param.list_num || 15; + this.total = 0; + this._status = 'normal'; - this.dom = utils.createDom(list_tpl); + this.dom = utils.createDom(list_tpl); - dom.innerHTML = ''; - dom.appendChild(this.dom); + dom.innerHTML = ''; + dom.appendChild(this.dom); - this.getData(0,function(err,data){ - if(err){ - utils.query('.l_com_list_cnt',me.dom).innerHTML = noData_tpl; - return; - } + this.getData(0,function(err,data){ + if(err){ + utils.query('.l_com_list_cnt',me.dom).innerHTML = noData_tpl; + return; + } - var hash_match = (location.hash || '').match(/#comments-(.+)/); + var hash_match = (location.hash || '').match(/#comments-(.+)/); - var html = juicer(item_tpl,data); - utils.query('.l_com_list_cnt',me.dom).innerHTML = html; + var html = juicer(item_tpl,data); + utils.query('.l_com_list_cnt',me.dom).innerHTML = html; - if(hash_match){ - var dom = utils.query('.l_com_item[data-id="' + hash_match[1] + '"]',me.dom); - setTimeout(function(){ - me.scrollTo(dom); - utils.addClass(dom,'l_com_item_ani-active'); - },500); - } - if(me.total == 0){ - utils.query('.l_com_list_cnt',me.dom).innerHTML = noData_tpl; - }else{ - //分页组件 - var page = new pagination(utils.query('.l_com_list_pagination',me.dom),{ - list_count : me.total, - page_cur : 0, - page_list_num : me.limit, - max_page_btn : 6 + if(hash_match){ + var dom = utils.query('.l_com_item[data-id="' + hash_match[1] + '"]',me.dom); + setTimeout(function(){ + me.scrollTo(dom); + utils.addClass(dom,'l_com_item_ani-active'); + },500); + } + if(me.total == 0){ + utils.query('.l_com_list_cnt',me.dom).innerHTML = noData_tpl; + }else{ + //分页组件 + var page = new pagination(utils.query('.l_com_list_pagination',me.dom),{ + list_count : me.total, + page_cur : 0, + page_list_num : me.limit, + max_page_btn : 6 + }); + page.jump = function(num){ + me.scrollTo(me.dom); + me.getData((num-1)*me.limit,function(err,data){ + if(err){ + console.log('error'); + return; + } + var html = juicer(item_tpl,data); + utils.query('.l_com_list_cnt',me.dom).innerHTML = html; }); - page.jump = function(num){ - me.scrollTo(me.dom); - me.getData((num-1)*me.limit,function(err,data){ - if(err){ - console.log('error'); - return; - } - var html = juicer(item_tpl,data); - utils.query('.l_com_list_cnt',me.dom).innerHTML = html; - }); - }; - } + }; + } + }); + utils.bind(me.dom,'click','.btn-reply',function(){ + var item = utils.parents(this,'.l_com_item'), + reply_for = item.getAttribute('data-username'), + pop = UI.pop({ + title: '回复:' + reply_for, + mask: true, + easyClose: false, + from: 'top', + }), + send = new sendBox(pop.cntDom,me.cid,{ + focus: true, + reply_for_id : item.getAttribute('data-id'), + onBeforeSend : function(text){ + return '@' + reply_for + ' ' + text; + } + }); + utils.css(utils.query('.UI_pop_cpt',pop.dom),{ + border: 'none' }); - utils.bind(me.dom,'click','.btn-reply',function(){ - var item = utils.parents(this,'.l_com_item'), - reply_for = item.getAttribute('data-username'), - pop = UI.pop({ - title: '回复:' + reply_for, - mask: true, - easyClose: false, - from: 'top', - }), - send = new sendBox(pop.cntDom,me.cid,{ - focus: true, - reply_for_id : item.getAttribute('data-id'), - onBeforeSend : function(text){ - return '@' + reply_for + ' ' + text; - } - }); - utils.css(utils.query('.UI_pop_cpt',pop.dom),{ - border: 'none' - }); - send.on('sendToServiceSuccess',function(item){ - pop.close(); - me.addItem(item); - }); + send.on('sendToServiceSuccess',function(item){ + pop.close(); + me.addItem(item); }); + }); +} +list.prototype.scrollTo = function(dom){ + utils.query('body').scrollTop = utils.offset(dom).top - 70; +}; +list.prototype.addItem = function(item){ + item.time = '刚刚'; + item.content = strToEmoji(item.content); + if(item.user && item.user.blog){ + item.user.blog = parseUrl(item.user.blog); } - list.prototype.scrollTo = function(dom){ - utils.query('body').scrollTop = utils.offset(dom).top - 70; - }; - list.prototype.addItem = function(item){ - item.time = '刚刚'; - item.content = strToEmoji(item.content); - if(item.user && item.user.blog){ - item.user.blog = parseUrl(item.user.blog); - } - var html = juicer(item_tpl,{ - list: [item] - }); - var node_item = utils.createDom(html), - node_list_cnt = utils.query('.l_com_list_cnt',this.dom); - node_list_cnt.insertBefore(node_item, node_list_cnt.firstChild); - utils.addClass(node_item,'l_com_item_ani-insert'); - var nodeNoData = utils.query('.l_com_list_noData',this.dom); - nodeNoData && (nodeNoData.style.display = "none"); - }; - list.prototype.getData = function(skip,callback){ - if(this._status == 'loading'){ - return; - } - var me = this; - this._status = 'loading'; - utils.fetch({ - url: '/ajax/comments/list', - data: { - cid: this.cid, - skip: skip || 0, - limit: this.limit || 10 - }, - callback: function(err,data){ - me._status = 'loaded'; - if(err || data.code == 500){ - callback && callback(500); - }else if(data.code && data.code == 200){ - var DATA = data.data; - me.total = DATA.count; - me.list = DATA.list; - me.list.forEach(function(item){ - item.time = utils.parseTime(item.time,"{h}:{ii} {y}-{m}-{d}"); - item.content = strToEmoji(item.content); - //若无头像,使用默认头像 - item.user.avatar = item.user.avatar || default_avatar; - if(item.user.blog){ - item.user.blog = parseUrl(item.user.blog); - } - }); - callback && callback(null,DATA); - } + var html = juicer(item_tpl,{ + list: [item] + }); + var node_item = utils.createDom(html), + node_list_cnt = utils.query('.l_com_list_cnt',this.dom); + node_list_cnt.insertBefore(node_item, node_list_cnt.firstChild); + utils.addClass(node_item,'l_com_item_ani-insert'); + var nodeNoData = utils.query('.l_com_list_noData',this.dom); + nodeNoData && (nodeNoData.style.display = "none"); +}; +list.prototype.getData = function(skip,callback){ + if(this._status == 'loading'){ + return; + } + var me = this; + this._status = 'loading'; + utils.fetch({ + url: '/ajax/comments/list', + data: { + cid: this.cid, + skip: skip || 0, + limit: this.limit || 10 + }, + callback: function(err,data){ + me._status = 'loaded'; + if(err || data.code == 500){ + callback && callback(500); + }else if(data.code && data.code == 200){ + var DATA = data.data; + me.total = DATA.count; + me.list = DATA.list; + me.list.forEach(function(item){ + item.time = utils.parseTime(item.time,"{h}:{ii} {y}-{m}-{d}"); + item.content = strToEmoji(item.content); + //若无头像,使用默认头像 + item.user.avatar = item.user.avatar || default_avatar; + if(item.user.blog){ + item.user.blog = parseUrl(item.user.blog); + } + }); + callback && callback(null,DATA); } - }); - }; + } + }); +}; - exports.sendBox = sendBox; - exports.list = list; - exports.init = function(dom,id,param){ - var me = this; - this.dom = utils.createDom(baseTpl); - this.id = id; - dom.innerHTML = ''; - dom.appendChild(this.dom); +function init(dom,id,param){ + var me = this; + this.dom = utils.createDom(baseTpl); + this.id = id; + dom.innerHTML = ''; + dom.appendChild(this.dom); - this.sendBox = new sendBox(utils.query('.l_com_sendBox',this.dom),id,param); - this.list = new list(utils.query('.l_com_list',this.dom),id,param); - this.sendBox.on('sendToServiceSuccess',function(item){ - me.list.addItem(item); - }); - }; -}); + this.sendBox = new sendBox(utils.query('.l_com_sendBox',this.dom),id,param); + this.list = new list(utils.query('.l_com_list',this.dom),id,param); + this.sendBox.on('sendToServiceSuccess',function(item){ + me.list.addItem(item); + }); +}; +export default {sendBox, list, init}; diff --git a/frontEnd/single-page/comments/selection.js b/frontEnd/single-page/comments/selection.js index afa178ad7..148b1d244 100644 --- a/frontEnd/single-page/comments/selection.js +++ b/frontEnd/single-page/comments/selection.js @@ -6,157 +6,120 @@ * @modified 2014-12-29 15:32 * */ -window.util = window.util || {}; -(function(global,doc,factoryFn){ - var factory = factoryFn(doc); - //exports for jquery - if(global.jQuery && global.jQuery.fn){ - jQuery.fn.Selection = function(){ - var tarea = this[0]; - if(tarea.tagName != 'TEXTAREA'){ - return this - }else if(arguments['length'] > 0){ - factory.setPosition(tarea,arguments[0],arguments[1]); - return this - }else{ - return factory.getPosition(tarea); - } - }; - jQuery.fn.insertTxt = function(txt,start,end){ - factory.insertTxt(this[0],txt,start,end); - return this - }; - } - - //exports for commonJS - global.define && define(function(require,exports){ - exports.insertTxt = factory.insertTxt; - exports.Selection = factory.Selection; - }); - - global.insertTxt = factory.insertTxt; - global.Selection = factory.Selection; -})(this,document,function(doc){ - //set - var setPosition = (function() { - var textarea = doc.createElement("textarea"); - if (textarea.setSelectionRange) { - return function(tarea,start, len) { - var len = len || 0; - setTimeout(function(){ - tarea.focus(); - tarea.setSelectionRange(start,start+len); - }); - } - } else if (textarea.createTextRange) {//IE - return function(tarea,start, len) { - var len = len || 0; +//set +var setPosition = (function() { + var textarea = document.createElement("textarea"); + if (textarea.setSelectionRange) { + return function(tarea,start, len) { + var len = len || 0; + setTimeout(function(){ tarea.focus(); - var strLen = tarea.value.length; - var rng = tarea.createTextRange(); - rng.moveStart('character', start); - rng.moveEnd('character', start + len - strLen); - rng.select(); - } + tarea.setSelectionRange(start,start+len); + }); } - })(); - //get - var getPosition = (function(){ - var textarea = doc.createElement("textarea"); - if(typeof(textarea.selectionStart)=='number'){ //not IE - return function(tarea){ - - return [tarea.selectionStart,tarea.selectionEnd,tarea.value.slice(tarea.selectionStart,tarea.selectionEnd)]; - } - }else{ //IE - return function(tarea){ - var start = 0, - end = 0; - tarea.focus(); - var sTextRange = doc.selection.createRange(); - - if (tarea.tagName == "TEXTAREA") { - var oTextRange = doc.body.createTextRange(); - oTextRange.moveToElementText(tarea); - for (start = 0; oTextRange.compareEndPoints("StartToStart", sTextRange) < 0; start++) { - oTextRange.moveStart('character', 1); - } - for (var i = 0; i <= start; i++) { - if (tarea.value.charAt(i) == '\n') { - start++; - } - } - oTextRange.moveToElementText(tarea); - for (end = 0; oTextRange.compareEndPoints('StartToEnd', sTextRange) < 0; end++) { - oTextRange.moveStart('character', 1); + } else if (textarea.createTextRange) {//IE + return function(tarea,start, len) { + var len = len || 0; + tarea.focus(); + var strLen = tarea.value.length; + var rng = tarea.createTextRange(); + rng.moveStart('character', start); + rng.moveEnd('character', start + len - strLen); + rng.select(); + } + } +})(); +//get +var getPosition = (function(){ + var textarea = document.createElement("textarea"); + if(typeof(textarea.selectionStart)=='number'){ //not IE + return function(tarea){ + + return [tarea.selectionStart,tarea.selectionEnd,tarea.value.slice(tarea.selectionStart,tarea.selectionEnd)]; + } + }else{ //IE + return function(tarea){ + var start = 0, + end = 0; + tarea.focus(); + var sTextRange = document.selection.createRange(); + + if (tarea.tagName == "TEXTAREA") { + var oTextRange = document.body.createTextRange(); + oTextRange.moveToElementText(tarea); + for (start = 0; oTextRange.compareEndPoints("StartToStart", sTextRange) < 0; start++) { + oTextRange.moveStart('character', 1); + } + for (var i = 0; i <= start; i++) { + if (tarea.value.charAt(i) == '\n') { + start++; } - for(var i = 0; i <= end; i++) { - if(tarea.value.charAt(i) == '\n') { - end++; - } + } + oTextRange.moveToElementText(tarea); + for (end = 0; oTextRange.compareEndPoints('StartToEnd', sTextRange) < 0; end++) { + oTextRange.moveStart('character', 1); + } + for(var i = 0; i <= end; i++) { + if(tarea.value.charAt(i) == '\n') { + end++; } } - return [start,end,selectedTxt,tarea.value.slice(start,end)]; } - } - })(); - - - /** - * @method Selection set or get texarea position - * @param {Object} textarea jquery dom - * @param {Number} [start] - * @param {Number} [end] - * - **/ - function Selection(){ - var tarea = arguments[0]; - if(tarea.tagName != 'TEXTAREA'){ - return - } - if(arguments['length'] > 1){ - setPosition(tarea,arguments[1],arguments[2]); - }else{ - return getPosition(tarea); + return [start,end,selectedTxt,tarea.value.slice(start,end)]; } } - /** - * @method insertTxt - * @param {Object} dom jquery dom - * @param {String} text - * @param {Number} [start] - * @param {Number} [end] - * - **/ - function insertTxt(tarea,txt,start,end){ - if(tarea.tagName != 'TEXTAREA' || typeof(txt) == 'undefined'){ - return - } - var txt = txt.toString(); - var this_start,this_end; - if(typeof(start) == 'undefined'){ - var pos = getPosition(tarea); - - this_start = pos[0]; - this_end = pos[1]; - }else{ - this_start = parseInt(start); - this_end = end || this_start; - } - - var allTxt = tarea.value, - frontTxt = allTxt.slice(0,this_start), - endTxt = allTxt.slice(this_end); - tarea.value = frontTxt + txt + endTxt; - - setPosition(tarea ,frontTxt.length + txt.length,0); - }; - - //exports - return { - 'insertTxt' : insertTxt, - 'Selection' : Selection, - 'setPosition' : setPosition, - 'getPosition' : getPosition - }; -}); \ No newline at end of file +})(); + + +/** + * @method Selection set or get texarea position + * @param {Object} textarea jquery dom + * @param {Number} [start] + * @param {Number} [end] + * + **/ +function Selection(){ + var tarea = arguments[0]; + if(tarea.tagName != 'TEXTAREA'){ + return + } + if(arguments['length'] > 1){ + setPosition(tarea,arguments[1],arguments[2]); + }else{ + return getPosition(tarea); + } +} +/** + * @method insertTxt + * @param {Object} dom jquery dom + * @param {String} text + * @param {Number} [start] + * @param {Number} [end] + * + **/ +function insertTxt(tarea,txt,start,end){ + if(tarea.tagName != 'TEXTAREA' || typeof(txt) == 'undefined'){ + return + } + var txt = txt.toString(); + var this_start,this_end; + if(typeof(start) == 'undefined'){ + var pos = getPosition(tarea); + + this_start = pos[0]; + this_end = pos[1]; + }else{ + this_start = parseInt(start); + this_end = end || this_start; + } + + var allTxt = tarea.value, + frontTxt = allTxt.slice(0,this_start), + endTxt = allTxt.slice(this_end); + tarea.value = frontTxt + txt + endTxt; + + setPosition(tarea ,frontTxt.length + txt.length,0); +}; + +//exports +export default {insertTxt, Selection, setPosition, getPosition}; \ No newline at end of file diff --git a/frontEnd/single-page/css/less/_fontface.less b/frontEnd/single-page/css/less/_fontface.less index f2018b5a3..6aec147a9 100644 --- a/frontEnd/single-page/css/less/_fontface.less +++ b/frontEnd/single-page/css/less/_fontface.less @@ -1,87 +1,107 @@ -@font_path: "../fonts/layicon-webfont"; -@font_version: "?v=3"; +@font_path: "../../fonts/layicon-webfont"; @font-face { - font-family:"layIcon"; - src:url("@{font_path}.eot@{font_version}"); - src:url("@{font_path}.eot@{font_version}#iefix") format("embedded-opentype"), - // url('../fonts/layicon-webfont.woff2') format('woff2'), - url('@{font_path}.woff@{font_version}') format('woff'), - url("@{font_path}.ttf@{font_version}") format("truetype"), - url("@{font_path}.svg@{font_version}#layicon-webfont") format("svg"); - font-weight:normal; - font-style:normal + font-family: "layIcon"; + src: url("@{font_path}.eot"); + src: url("@{font_path}.eot#iefix") format("embedded-opentype"), + //url('../fonts/layicon-webfont.woff2') format('woff2'), + url('@{font_path}.woff') format('woff'), + url("@{font_path}.ttf") format("truetype"), + url("@{font_path}.svg#layicon-webfont") format("svg"); + font-weight: normal; + font-style: normal } .layIcon { - font-family: "layIcon"; - font-style: normal + font-family: "layIcon"; + font-style: normal } .l-icon { - font-family: "layIcon"; - font-style: normal + font-family: "layIcon"; + font-style: normal } -.l-icon-circle:after{ - content: '\0044'; + +.l-icon-circle:after { + content: '\0044'; } -.l-icon-book:after{ - content: '\0045'; + +.l-icon-book:after { + content: '\0045'; } -.l-icon-code:after{ - content: '\0046'; + +.l-icon-code:after { + content: '\0046'; } -.l-icon-beaker:after{ - content: '\0047'; + +.l-icon-beaker:after { + content: '\0047'; } -.l-icon-envelope:after{ - content: '\0048'; + +.l-icon-envelope:after { + content: '\0048'; } -.l-icon-layLogo:after{ - content: '\0049'; + +.l-icon-layLogo:after { + content: '\0049'; } -.l-icon-weibo:after{ - content: '\004a'; + +.l-icon-weibo:after { + content: '\004a'; } -.l-icon-qq:after{ - content: '\004b'; + +.l-icon-qq:after { + content: '\004b'; } -.l-icon-qzone:after{ - content: '\004c'; + +.l-icon-qzone:after { + content: '\004c'; } -.l-icon-git:after{ - content: '\0054'; + +.l-icon-git:after { + content: '\0054'; } -.l-icon-face:after{ - content: '\0055'; + +.l-icon-face:after { + content: '\0055'; } -.l-icon-back:after{ - content: '\005a'; + +.l-icon-back:after { + content: '\005a'; } -.l-icon-setting:after{ - content: '\0060'; + +.l-icon-setting:after { + content: '\0060'; } -.l-icon-home:after{ - content: '\0061'; + +.l-icon-home:after { + content: '\0061'; } -.l-icon-person:after{ - content: '\0064'; + +.l-icon-person:after { + content: '\0064'; } -.l-icon-zhihu:after{ - content: '\0069'; + +.l-icon-zhihu:after { + content: '\0069'; } -.l-icon-dribbble:after{ - content: '\006a'; + +.l-icon-dribbble:after { + content: '\006a'; } -.l-icon-link:after{ - content: '\006b'; + +.l-icon-link:after { + content: '\006b'; } -.l-icon-fancyLogo:after{ - content: '\006c'; + +.l-icon-fancyLogo:after { + content: '\006c'; } -.l-icon-down-double:after{ - content: '\006d'; + +.l-icon-down-double:after { + content: '\006d'; } -.l-icon-comment:after{ - content: '\006e'; + +.l-icon-comment:after { + content: '\006e'; } \ No newline at end of file diff --git a/frontEnd/single-page/css/less/_navigation.less b/frontEnd/single-page/css/less/_navigation.less index 31b3638b4..2049127eb 100644 --- a/frontEnd/single-page/css/less/_navigation.less +++ b/frontEnd/single-page/css/less/_navigation.less @@ -23,7 +23,7 @@ padding: 0 1em; outline: none; overflow: hidden; - line-height: @nav_height - 2; + line-height: @nav_height; color: rgba(0, 0, 0, .6); text-align: center; font-size: 16px; @@ -112,7 +112,7 @@ .transition(.2s,ease); } .app_nav{ - height: @nav_height + 2; + height: @nav_height; background: #fff; box-shadow: 0 0 4px #000; .side{ diff --git a/frontEnd/single-page/css/main.less b/frontEnd/single-page/css/main.less index ed9d07e2e..ab8b70da8 100644 --- a/frontEnd/single-page/css/main.less +++ b/frontEnd/single-page/css/main.less @@ -12,6 +12,13 @@ @import "less/_pagination.less"; @import "less/_footer.less"; @import "less/_comment.less"; + +@import "page/_bless.less"; +@import "page/_blog.less"; +@import "page/_index.less"; +@import "page/_labs.less"; +@import "page/_pano.less"; +@import "page/_photography.less"; @import "less/_fontface.less"; @import "less/_side.less"; @@ -111,8 +118,8 @@ a,a:active{ width: 24px; height: 24px; vertical-align: baseline; - margin: 0 .2em; - background: url('../images/emoji.png') no-repeat top left; + margin: 0 .2em; + background: url('//dn-lay.qbox.me/build/single-page/images/emoji_6deb6fb.png') no-repeat top left; zoom: 1; } diff --git a/frontEnd/single-page/css/page/_blog.less b/frontEnd/single-page/css/page/_blog.less index 7f349265a..616586d05 100644 --- a/frontEnd/single-page/css/page/_blog.less +++ b/frontEnd/single-page/css/page/_blog.less @@ -149,7 +149,7 @@ background: #fff; &.pure-text{ .link{ - background: url(/images/blog_card.jpg) no-repeat top right #fff; + background: url("../../images/blog_card.jpg") no-repeat top right #fff; background-size: 170px 34px; } } @@ -269,7 +269,7 @@ **/ .blogDetail{ font-size: 1rem; - background: #f5f5f5 url(../images/mask.png); + background: #f5f5f5 url("../../images/mask.png"); header{ text-align: center; padding: 6rem 0 4rem; diff --git a/frontEnd/single-page/css/page/_index.less b/frontEnd/single-page/css/page/_index.less index 02475656d..08510bf71 100644 --- a/frontEnd/single-page/css/page/_index.less +++ b/frontEnd/single-page/css/page/_index.less @@ -30,7 +30,7 @@ &.zoom-show{ display: block; visibility: visible; - -webkit-mask-image: url(/images/mask_bj.png?__inline); + -webkit-mask-image: url("../../images/mask_bj.png"); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center center; -webkit-mask-size: 300%; @@ -43,7 +43,7 @@ top: 0px; width: 100%; height: 100%; - background: url(/images/mask.png?__inline); + background: url("../../images/mask.png"); z-index: 0; } &:after{ @@ -267,7 +267,7 @@ width: 90px; height: 120px; margin:0 auto 1em; - background: url(../../images/index-skin.png?__inline); + background: url("../../images/index-skin.png"); } .language{ p{ diff --git a/frontEnd/single-page/css/page/_labs.less b/frontEnd/single-page/css/page/_labs.less index a7a9a03d1..404a036f2 100644 --- a/frontEnd/single-page/css/page/_labs.less +++ b/frontEnd/single-page/css/page/_labs.less @@ -8,7 +8,7 @@ .opus-header{ position: relative; - background: url(/images/opus.jpg) no-repeat center center #f4f1ec; + background: url("../../images/opus.jpg") no-repeat center center #f4f1ec; background-size: auto 100%; min-height: 200px; max-height: 400px; @@ -85,7 +85,7 @@ // 高清屏 + 大屏 使用大图 @media (min-width:800px) and (-webkit-min-device-pixel-ratio:2){ .opus-header{ - background-image: url(/images/opus_@2x.jpg); + background-image: url("../../images/opus_@2x.jpg"); } } diff --git a/frontEnd/single-page/fis-conf.js b/frontEnd/single-page/fis-conf.js deleted file mode 100644 index ebbbdf694..000000000 --- a/frontEnd/single-page/fis-conf.js +++ /dev/null @@ -1,78 +0,0 @@ -/* global fis */ - - - - -//less编译 -fis.match('*.less', { - // fis-parser-less 插件进行解析 - parser: fis.plugin('less'), - // .less 文件后缀构建后被改成 .css 文件 - rExt: '.css' -}); - -fis.match('js/**.js', { - isMod: true -}); -fis.match('comments/*.js', { - isMod: true -}); - -//发布位置 -fis.match('**', { - release: 'build/single-page/$0', - domain: 'http://127.0.0.1:8088' -}); -fis.match('**.psd', { - release: false -}); -fis.match('/index.html', { - release: '../sys/views/single-page/index.html' -}); -fis.match('/tpl/github.html', { - release: '../sys/component/single-page/github.html' -}); - - - -// 只需要编译 html 文件,以及其用到的资源。 -fis.hook('amd', { - baseUrl: './' -}); - -fis.match('::packager', { - postpackager: fis.plugin('loader') -}); - - -//线上打包 -fis - .media('production') - .match('/**.js', { - // 通过 uglify 压缩 js - optimizer: fis.plugin('uglify-js') - }) - //CSS压缩 - .match('*.less', { - optimizer: fis.plugin('clean-css') - }) - .match('*.css', { - optimizer: fis.plugin('clean-css') - }) - //使用hash - .match('*.{js,css,jpg,png,less,gif,svg,eot,ttf,woff,woff2}', { - useHash: true - }) - .match('::packager', { - postpackager: fis.plugin('loader', { - allInOne: { - includeAsyncs: true, - ignore: ['require.js'] - } - }) - }) - //线上使用CDN - .media('production').match('*', { - domain: '//dn-lay.qbox.me' - // domain: '//127.0.0.1:8088' - }); diff --git a/frontEnd/single-page/images/emoji.png b/frontEnd/single-page/images/emoji.png deleted file mode 100644 index ec62560c9..000000000 Binary files a/frontEnd/single-page/images/emoji.png and /dev/null differ diff --git a/frontEnd/single-page/index.html b/frontEnd/single-page/index.html index 8aefa4e0d..39702d429 100644 --- a/frontEnd/single-page/index.html +++ b/frontEnd/single-page/index.html @@ -1,50 +1,80 @@ - - - - - ${{title}} - - - - - - - - - - - - - - - - - -
-
-
- -
+ + + + + 我的博客_小剧客栈_剧中人的个人博客 + + + + + + + + + + + +
+
+
+
-
- +
+
+ +
+ + + + + + + + + diff --git a/frontEnd/single-page/js/Base.js b/frontEnd/single-page/js/Base.js index f316749dc..92ad86838 100644 --- a/frontEnd/single-page/js/Base.js +++ b/frontEnd/single-page/js/Base.js @@ -1,467 +1,473 @@ /** * IE9+ **/ -(function(global,doc,factory){ - var utils = factory(global,doc); - if(global.define){ - //提供CommonJS规范的接口 - define(utils); - }else{ - //提供window.UI的接口 - global.utils = global.utils || utils; - } -})(this,document,function(window,document){ - /** - * 检测是否为数字 - * 兼容字符类数字 '23' - */ - function isNum(ipt){ - return (ipt !== '') && (ipt == +ipt) ? true : false; - } +/** + * 检测是否为数字 + * 兼容字符类数字 '23' + */ +function isNum(ipt) { + return (ipt !== '') && (ipt == +ipt); +} - /** - * 遍历 - **/ - function each(arr,fn,scope){ - //检测输入的值 - if(typeof(arr) == 'object' && typeof(fn) == 'function'){ - var Length = arr.length; - if(isNum(Length)){ - for(var i=0;i\s*/); - //包含父级匹配,如 .parent>.child>span - if(parentsList.length > 1){ - //最后一条已无需对比 - parentsList.pop(); - //逆序遍历父级列表 - for(var i = parentsList.length-1;i>=0;i--){ - target = target.parentNode; - if(!matches(target,parentsList[i])){ - return false; - } + //拆分当前匹配 + parentsList = last_select.split(/\s*\>\s*/); + //包含父级匹配,如 .parent>.child>span + if (parentsList.length > 1) { + //最后一条已无需对比 + parentsList.pop(); + //逆序遍历父级列表 + for (var i = parentsList.length - 1; i >= 0; i--) { + target = target.parentNode; + if (!matches(target, parentsList[i])) { + return false; } } - if(!selectors.length){ - return bingoDom; - } - last_select = selectors.pop(); } - target = target.parentNode; + if (!selectors.length) { + return bingoDom; + } + last_select = selectors.pop(); } + target = target.parentNode; } +} - /** - * 事件绑定 - * elem: dom 节点,支持数组和单个 node节点 - * type: 事件类型,支持空格分割多个事件如:'keydown keyup' - * selector: 可选,用于事件委托 - * callback: 回调函数,最后一个参数 - */ - function bind(elem, type,a,b){ - var elems = [].concat(elem), - types = type.split(/\s+/), - selector, - listenerFn, - returns = { - bind: function(type,a,b){ - bind(elem,type,a,b); - return returns; +/** + * 事件绑定 + * elem: dom 节点,支持数组和单个 node节点 + * type: 事件类型,支持空格分割多个事件如:'keydown keyup' + * selector: 可选,用于事件委托 + * callback: 回调函数,最后一个参数 + */ +function bind(elem, type, a, b) { + let elems = [].concat(elem), + types = type.split(/\s+/), + selector, + listenerFn, + returns = { + bind: function (type, a, b) { + bind(elem, type, a, b); + return returns; + } + }; + if (typeof(a) == 'function') { + listenerFn = a; + } else if (typeof(a) == 'string' && typeof(b) == 'function') { + selector = a; + } else { + //没有定义回调函数,结束运行 + return; + } + //遍历元素 + each(elems, function (node) { + if (selector) { + listenerFn = function (events) { + var target = events.srcElement || events.target, + //selector支持多个配置,如 ".side a,.nav a" + selectors = selector.split(/\s*\,\s*/), + bingoDom; + for (var i = 0, total = selectors.length; i < total; i++) { + bingoDom = matchsSelectorBetweenNode(target, selectors[i], node); + if (bingoDom) { + b && b.call(bingoDom, events); + break; } - }; - if(typeof(a) == 'function'){ - listenerFn = a; - }else if(typeof(a) == 'string' && typeof(b) == 'function'){ - selector = a; - }else{ - //没有定义回调函数,结束运行 - return; + } + }; } - //遍历元素 - each(elems,function(node){ - if(selector){ - listenerFn = function(events){ - var target = events.srcElement || events.target, - //selector支持多个配置,如 ".side a,.nav a" - selectors = selector.split(/\s*\,\s*/), - bingoDom; - for(var i=0,total=selectors.length;i= 200 && request.status < 400) { - var resp = request.responseText; - resp = JSON.parse(resp); - callback && callback(null,resp,request); - } else { - callback && callback(request.status,resp,request); - } - }; + return dataArray.join('&'); +} - request.onerror = function() { - callback && callback('connection fail',resp,request); - }; - request.send(dataStr); - } +function fetch(param) { + param = param || {}; + var url = param.url, + callback = param.callback || null, + headers = param.headers || {}, + data = param.data, + dataStr = paramStringify(data), + method = (param.type && param.type.match(/^(get|post)$/i)) ? param.type.toUpperCase() : 'GET', + request = new XMLHttpRequest(); - /** - * @param (timestamp/Date,'{y}-{m}-{d} {h}:{m}:{s}') - * @param (timestamp/Date,'{y}-{mm}-{dd} {hh}:{mm}:{ss}') - * - * y:year - * m:months - * d:date - * h:hour - * i:minutes - * s:second - * a:day - */ - function parseTime(time,format){ - if(arguments.length==0){ - return null; + headers.accept = "application/json, text/javascript"; + if (method == 'POST') { + headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; + } else { + url = dataStr.length ? (url + '?' + dataStr) : url; + dataStr = undefined; + } + request.open(method, url, true); + //设置 headers + for (var i in headers) { + request.setRequestHeader(i, headers[i]); + } + request.onload = function () { + if (request.status >= 200 && request.status < 400) { + var resp = request.responseText; + resp = JSON.parse(resp); + callback && callback(null, resp, request); + } else { + callback && callback(request.status, resp, request); } - var format = format ||'{y}-{m}-{d} {h}:{i}:{s}'; + }; - if(typeof(time) == "object"){ - var date = time; - }else{ - var date = new Date(parseInt(time)); - } + request.onerror = function () { + callback && callback('connection fail', request); + }; + request.send(dataStr); +} - var formatObj = { - y : date.getYear()+1900, - m : date.getMonth()+1, - d : date.getDate(), - h : date.getHours(), - i : date.getMinutes(), - s : date.getSeconds(), - a : date.getDay(), - }; +/** + * @param (timestamp/Date,'{y}-{m}-{d} {h}:{m}:{s}') + * @param (timestamp/Date,'{y}-{mm}-{dd} {hh}:{mm}:{ss}') + * + * y:year + * m:months + * d:date + * h:hour + * i:minutes + * s:second + * a:day + */ +function parseTime(time, format) { + if (arguments.length == 0) { + return null; + } + var format = format || '{y}-{m}-{d} {h}:{i}:{s}'; - var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g,function(result,key){ - var value = formatObj[key]; - if(result.length > 3 && value < 10){ - value = '0' + value; - } - return value || 0; - }); - return time_str; - }; - return { - queryAll: Query, - query: function(selector,context){ - return Query(selector,context,false); - }, - each: each, - parseTime: parseTime, - offset: offset, - createDom: createDom, - addClass: addClass, - removeClass: removeClass, - toggleClass: toggleClass, - css: CSS, - remove: function (node){ - node.parentNode.removeChild(node); - }, - parents: function(node,selector){ - if(!node || typeof(selector)!=='string' || selector.split(',').length > 1){ - return null; - } - return matchsSelectorBetweenNode(node,selector); - }, - bind: bind, - trigger: trigger, - fetch: fetch + if (typeof(time) == "object") { + var date = time; + } else { + var date = new Date(parseInt(time)); + } + + var formatObj = { + y: date.getYear() + 1900, + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay(), }; -}); + + var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, function (result, key) { + var value = formatObj[key]; + if (result.length > 3 && value < 10) { + value = '0' + value; + } + return value || 0; + }); + return time_str; +}; + +export default { + queryAll: Query, + query: function (selector, context) { + return Query(selector, context, false); + }, + each: each, + parseTime: parseTime, + offset: offset, + createDom: createDom, + addClass: addClass, + removeClass: removeClass, + toggleClass: toggleClass, + css: CSS, + remove: function (node) { + node.parentNode.removeChild(node); + }, + parents: function (node, selector) { + if (!node || typeof(selector) !== 'string' || selector.split(',').length > 1) { + return null; + } + return matchsSelectorBetweenNode(node, selector); + }, + bind: bind, + trigger: trigger, + fetch: fetch +}; diff --git a/frontEnd/single-page/js/dialog.js b/frontEnd/single-page/js/dialog.js index 63153ef8a..7debf2df1 100644 --- a/frontEnd/single-page/js/dialog.js +++ b/frontEnd/single-page/js/dialog.js @@ -5,24 +5,7 @@ * @modified 2015-7-15 12:20 * **/ - -(function(global,doc,UI_factory,utils_factory){ - - //初始化工具类 - var utils = utils_factory(global,doc); - - //初始化UI模块 - var UI = UI_factory(global,doc,utils); - - //提供window.UI的接口 - global.UI = global.UI || UI; - global.UI._utils = utils; - - //提供CommonJS规范的接口 - global.define && define(function(){ - return UI; - }); -})(window,document,function(window,document,utils){ +function UI_factory(utils){ /** * 缓存utils下常用工具 * 为压缩变量名做准备 @@ -918,7 +901,8 @@ cover : COVER, select : SELECT }; -},function (window,document) { +} +function utils_factory() { /** * 判断对象类型 * string number array @@ -1491,4 +1475,12 @@ + "');}return p.join('');"))(data); } } -}); +} + +//初始化工具类 +var utils = utils_factory(); + +//初始化UI模块 +var UI = UI_factory(utils); + +export default UI; diff --git a/frontEnd/single-page/js/funny.js b/frontEnd/single-page/js/funny.js index 2b2506dd4..556d5ede8 100644 --- a/frontEnd/single-page/js/funny.js +++ b/frontEnd/single-page/js/funny.js @@ -2,34 +2,32 @@ * 一些好玩的东西 * **/ -define(function(){ - return function(){ - //会变的 title - document.addEventListener('visibilitychange', function() { - document.title = document.hidden ? '出BUG了,快看!':'小剧客栈,剧中人的个人博客!'; - }); +export default function(){ + //会变的 title + document.addEventListener('visibilitychange', function() { + document.title = document.hidden ? '出BUG了,快看!':'小剧客栈,剧中人的个人博客!'; + }); - //复制超过18个字,改变被复制文字 - document.body.addEventListener('copy', function (event) { - var clipboardData = event.clipboardData || window.clipboardData, - innerText = window.getSelection().toString(); -    - if (!clipboardData || !innerText || innerText.length < 18) { - return; - } - event.preventDefault(); - var data = ['作者:剧中人', - '来自:小剧客栈', - '链接:' + window.location.href, - '', - innerText]; - clipboardData.setData('text/html', data.join('
')); - clipboardData.setData('text/plain',data.join('\n')); - }); - - //控制台 - try { - console.log("一个人到底多无聊\r\n 才会把 console 当成玩具\r\n一个人究竟多堕落\r\n 才会把大好青春荒废在博客上\r\n\r\n\r\n%cfollow me %c https://github.com/bh-lay","color:red","color:green"); - } catch (e) {} - } -}); + //复制超过18个字,改变被复制文字 + document.body.addEventListener('copy', function (event) { + var clipboardData = event.clipboardData || window.clipboardData, + innerText = window.getSelection().toString(); +    + if (!clipboardData || !innerText || innerText.length < 18) { + return; + } + event.preventDefault(); + var data = ['作者:剧中人', + '来自:小剧客栈', + '链接:' + window.location.href, + '', + innerText]; + clipboardData.setData('text/html', data.join('
')); + clipboardData.setData('text/plain',data.join('\n')); + }); + + //控制台 + try { + console.log("一个人到底多无聊\r\n 才会把 console 当成玩具\r\n一个人究竟多堕落\r\n 才会把大好青春荒废在博客上\r\n\r\n\r\n%cfollow me %c https://github.com/bh-lay","color:red","color:green"); + } catch (e) {} +} diff --git a/frontEnd/single-page/js/highlight.js b/frontEnd/single-page/js/highlight.js index f371bf4ae..a6f2efba9 100644 --- a/frontEnd/single-page/js/highlight.js +++ b/frontEnd/single-page/js/highlight.js @@ -2,187 +2,185 @@ * higlight * Base on https://github.com/niceue/highlight **/ -define(function(){ - var ruleSet = {}; - function highlight(text, lang){ - switch (typeof text) { - case 'undefined': - case 'object': - highlightElements(text || document); - break; - case 'string': - return parse(text, lang); - } +var ruleSet = {}; +function highlight(text, lang){ + switch (typeof text) { + case 'undefined': + case 'object': + highlightElements(text || document); + break; + case 'string': + return parse(text, lang); } +} - //添加高亮语法 - highlight.add = function(lang,data, rules) { - var exp, rule, arr = []; - arr.toString = joinExp; - - for (var className in rules) { - rule = rules[className]; - exp = (typeof rule.exp !== "string") ? String(rule.exp).substr(1, String(rule.exp).length-2) : rule.exp; +//添加高亮语法 +highlight.add = function(lang,data, rules) { + var exp, rule, arr = []; + arr.toString = joinExp; - arr.push({ - className : className, - exp : "(" + exp + ")", - length : (exp.match(/(^|[^\\])\([^?]/g) || "").length + 1, // number of subexps in rule - replacement : rule.replacement || null - }); - } - - var a = lang.split(' '), i = a.length; - while (i--) { - ruleSet[ a[i] ] = { - data: data || {}, - rules: arr - }; - } - }; + for (var className in rules) { + rule = rules[className]; + exp = (typeof rule.exp !== "string") ? String(rule.exp).substr(1, String(rule.exp).length-2) : rule.exp; - function highlightElements(node) { - var parent = node.parentNode, - html; - lang = (node.className || '').match(/(?:^|\s)(javascript|css|html)(?:$|\s)/); - lang = lang ? lang[1] : 'javascript'; - html = parse(node.innerHTML, lang); - if(parent && (parent.tagName||'').toLowerCase() == 'pre'){ - node = parent; - } - node.outerHTML = html; + arr.push({ + className : className, + exp : "(" + exp + ")", + length : (exp.match(/(^|[^\\])\([^?]/g) || "").length + 1, // number of subexps in rule + replacement : rule.replacement || null + }); } - function joinExp() { - var exps = []; - for (var i = 0; i < this.length; i++) exps.push(this[i].exp); - return exps.join("|"); + var a = lang.split(' '), i = a.length; + while (i--) { + ruleSet[ a[i] ] = { + data: data || {}, + rules: arr + }; } +}; - function parse(text, lang) { - var lang = lang || 'js', - config = ruleSet[lang], - rules = config.rules, - parsed, arr; - parsed = text.replace(/\r?\n$/, '').replace(new RegExp(rules, "g"), function() { - var i = 0, j = 1, rule; - while (rule = rules[i++]) { - if (arguments[j]) { - // if no custom replacement defined do the simple replacement - if (!rule.replacement){ - return '' + arguments[0] + ''; - } else if(typeof rule.replacement == 'function' ){ - return rule.replacement(arguments[0],rule); - } else { - // replace $0 with the className then do normal replaces - var str = rule.replacement.replace("$0", rule.className); - for (var k = 1; k <= rule.length - 1; k++){ - str = str.replace("$" + k, arguments[j + k]); - } - return str; - } - } else j+= rule.length; - } - }); - arr = parsed.split(/\r?\n/); - - parsed = '
' + arr.join('
')+'
'; - parsed = '
'+ parsed +'
'; - return parsed; +function highlightElements(node) { + var parent = node.parentNode, + html; + var lang = (node.className || '').match(/(?:^|\s)(javascript|css|html)(?:$|\s)/); + lang = lang ? lang[1] : 'javascript'; + html = parse(node.innerHTML, lang); + if(parent && (parent.tagName||'').toLowerCase() == 'pre'){ + node = parent; } + node.outerHTML = html; +} - highlight.add("js javascript json",{ - className: 'js' - },{ - blockComments: { - exp: /\/\*[^*]*\*+([^\/][^*]*\*+)*\//, - replacement : function(str){ - var start = '', - end = "", - text = start + str.replace(/\r?\n/g,end + '\r\n' + start) + end; - return text; - } - }, - inlineComments : { - exp : /(\/\/[^\n]*(\n|$))/,// /[^\\]\/\/[^\n]*(\n|$)/, - replacement: "$1" - }, - string : { - exp : /'[^'\\]*(\\.[^'\\]*)*'|"[^"\\]*(\\.[^"\\]*)*"/ - }, - number: { - exp : /([^"'][+\-]?)(\d+)([^"'])/, - replacement: "$1$2$3" - }, - regex: { - exp : /\/[^\n]+[^\\]\//, - }, - keywords : { - exp : /\b(arguments|break|case|continue|default|delete|do|else|false|for|function|if|in|instanceof|new|null|return|switch|this|true|typeof|var|void|while|with|replace)\b/ - }, - global : { - exp : /\b(toString|valueOf|window|element|prototype|constructor|document|location|escape|unescape|parseInt|parseFloat|setTimeout|clearTimeout|setInterval|clearInterval|NaN|isNaN|Infinity|Date)\b/ - } - }); - highlight.add("html xml", { - className: 'html' - },{ - tag : { - exp: /(<\/?)([a-zA-Z]+\s?)/, - replacement: "$1$2" - }, - comment : { - exp: /<!\s*(--([^\-]|[\r\n]|-[^\-])*--\s*)>/ - }, - tag : { - exp: /(<\/?)([a-zA-Z]+\s?)/, - replacement: "$1$2" - }, - string : { - exp : /'[^']*'|"[^"]*"/ - }, - attribute : { - exp: /\b([a-zA-Z\-:]+)(=)/, - replacement: "$1$2" - }, - data: { - exp: /\s(data-[a-zA-z\-]+)/ - }, - doctype : { - exp: /<!DOCTYPE([^&]|&[^g]|&g[^t])*>/ +function joinExp() { + var exps = []; + for (var i = 0; i < this.length; i++) exps.push(this[i].exp); + return exps.join("|"); +} + +function parse(text, lang) { + var lang = lang || 'js', + config = ruleSet[lang], + rules = config.rules, + parsed, arr; + parsed = text.replace(/\r?\n$/, '').replace(new RegExp(rules, "g"), function() { + var i = 0, j = 1, rule; + while (rule = rules[i++]) { + if (arguments[j]) { + // if no custom replacement defined do the simple replacement + if (!rule.replacement){ + return '' + arguments[0] + ''; + } else if(typeof rule.replacement == 'function' ){ + return rule.replacement(arguments[0],rule); + } else { + // replace $0 with the className then do normal replaces + var str = rule.replacement.replace("$0", rule.className); + for (var k = 1; k <= rule.length - 1; k++){ + str = str.replace("$" + k, arguments[j + k]); + } + return str; + } + } else j+= rule.length; } }); - highlight.add("css",{ - className: 'css' - },{ - comment : { - exp : /\/\*[^*]*\*+([^\/][^*]*\*+)*\// - }, - keywords : { - exp : /@\w[\w\s]*/ - }, - selectors : { - exp : "([\\w-:\\[.#][^{};>]*)(?={)" - }, - properties : { - exp : "([\\w-]+)(?=\\s*:)" - }, - units : { - exp : /([0-9])(px|em|en|%|pt|rem)\b/, - replacement : "$1$2" - }, - colors: { - exp: /#[A-Za-z0-9]{3,6}/ - }, - urls : { - exp : /url\(([^\)]*)\)/, - replacement : "url($1)" - }, - important: { - exp: /!important/ + arr = parsed.split(/\r?\n/); + + parsed = '
' + arr.join('
')+'
'; + parsed = '
'+ parsed +'
'; + return parsed; +} + +highlight.add("js javascript json",{ + className: 'js' + },{ + blockComments: { + exp: /\/\*[^*]*\*+([^\/][^*]*\*+)*\//, + replacement : function(str){ + var start = '', + end = "", + text = start + str.replace(/\r?\n/g,end + '\r\n' + start) + end; + return text; } - }); + }, + inlineComments : { + exp : /(\/\/[^\n]*(\n|$))/,// /[^\\]\/\/[^\n]*(\n|$)/, + replacement: "$1" + }, + string : { + exp : /'[^'\\]*(\\.[^'\\]*)*'|"[^"\\]*(\\.[^"\\]*)*"/ + }, + number: { + exp : /([^"'][+\-]?)(\d+)([^"'])/, + replacement: "$1$2$3" + }, + regex: { + exp : /\/[^\n]+[^\\]\//, + }, + keywords : { + exp : /\b(arguments|break|case|continue|default|delete|do|else|false|for|function|if|in|instanceof|new|null|return|switch|this|true|typeof|var|void|while|with|replace)\b/ + }, + global : { + exp : /\b(toString|valueOf|window|element|prototype|constructor|document|location|escape|unescape|parseInt|parseFloat|setTimeout|clearTimeout|setInterval|clearInterval|NaN|isNaN|Infinity|Date)\b/ + } +}); +highlight.add("html xml", { + className: 'html' + },{ + tag : { + exp: /(<\/?)([a-zA-Z]+\s?)/, + replacement: "$1$2" + }, + comment : { + exp: /<!\s*(--([^\-]|[\r\n]|-[^\-])*--\s*)>/ + }, + tag : { + exp: /(<\/?)([a-zA-Z]+\s?)/, + replacement: "$1$2" + }, + string : { + exp : /'[^']*'|"[^"]*"/ + }, + attribute : { + exp: /\b([a-zA-Z\-:]+)(=)/, + replacement: "$1$2" + }, + data: { + exp: /\s(data-[a-zA-z\-]+)/ + }, + doctype : { + exp: /<!DOCTYPE([^&]|&[^g]|&g[^t])*>/ + } +}); +highlight.add("css",{ + className: 'css' + },{ + comment : { + exp : /\/\*[^*]*\*+([^\/][^*]*\*+)*\// + }, + keywords : { + exp : /@\w[\w\s]*/ + }, + selectors : { + exp : "([\\w-:\\[.#][^{};>]*)(?={)" + }, + properties : { + exp : "([\\w-]+)(?=\\s*:)" + }, + units : { + exp : /([0-9])(px|em|en|%|pt|rem)\b/, + replacement : "$1$2" + }, + colors: { + exp: /#[A-Za-z0-9]{3,6}/ + }, + urls : { + exp : /url\(([^\)]*)\)/, + replacement : "url($1)" + }, + important: { + exp: /!important/ + } + }); - return highlight; -}); \ No newline at end of file +export default highlight; \ No newline at end of file diff --git a/frontEnd/single-page/js/imageHosting.js b/frontEnd/single-page/js/imageHosting.js index a3b00a330..5f9c1ae4c 100644 --- a/frontEnd/single-page/js/imageHosting.js +++ b/frontEnd/single-page/js/imageHosting.js @@ -3,38 +3,36 @@ * 若url为绝对地址,则使用源图,且不处理剪裁缩放 * qiniu(url,config); */ -define(function () { - 'use strict'; - function cover(url, config) { - var w = config.width || config.height, - h = config.height || config.width; - return url + '?imageView/1/w/' + w + '/h/' + h + '/q/85'; - } - function zoom(url, config) { - var confStr; - if (config.width) { - confStr = 'w/' + config.width; - } else { - confStr = 'h/' + config.height; - } - return url + '?imageView2/2/' + confStr + '/q/85'; +function cover(url, config) { + var w = config.width || config.height, + h = config.height || config.width; + return url + '?imageView/1/w/' + w + '/h/' + h + '/q/85'; +} +function zoom(url, config) { + var confStr; + if (config.width) { + confStr = 'w/' + config.width; + } else { + confStr = 'h/' + config.height; } - function qiniu(url, config) { - var src = url; - if (typeof (url) === 'string' && url.length > 0 && url[0] === '/') { - src = app_config.imgDomain + url; - if (config) { - if (config.type === "zoom") { - src = zoom(src, config); - } else { - //config.type == "cover" - src = cover(src, config); - } + return url + '?imageView2/2/' + confStr + '/q/85'; +} + +function qiniu(url, config) { + var src = url; + if (typeof (url) === 'string' && url.length > 0 && url[0] === '/') { + src = '//dn-lay.qbox.me' + url; + if (config) { + if (config.type === "zoom") { + src = zoom(src, config); + } else { + //config.type == "cover" + src = cover(src, config); } } - return src; } - return qiniu; -}); + return src; +} +export default qiniu; \ No newline at end of file diff --git a/frontEnd/single-page/js/juicer.js b/frontEnd/single-page/js/juicer.js index 9c0814f28..b9e440fd7 100644 --- a/frontEnd/single-page/js/juicer.js +++ b/frontEnd/single-page/js/juicer.js @@ -1,6 +1,553 @@ -(function(){var c=function(){var e=[].slice.call(arguments);e.push(c.options);if(e[0].match(/^\s*#([\w:\-\.]+)\s*$/igm)){e[0].replace(/^\s*#([\w:\-\.]+)\s*$/igm,function(h,i){var f=document;var g=f&&f.getElementById(i);e[0]=g?(g.value||g.innerHTML):h;});}if(arguments.length==1){return c.compile.apply(c,e);}if(arguments.length>=2){return c.to_html.apply(c,e);}};var d={escapehash:{"<":"<",">":">","&":"&",'"':""","'":"'","/":"/"},escapereplace:function(e){return d.escapehash[e];},escaping:function(e){return typeof(e)!=="string"?e:e.replace(/[&<>"]/igm,this.escapereplace);},detection:function(e){return typeof(e)==="undefined"?"":e;}};var b=function(e){if(typeof(console)!=="undefined"){if(console.warn){console.warn(e);return;}if(console.log){console.log(e);return;}}throw (e);};var a=function(h,f){h=h!==Object(h)?{}:h;if(h.__proto__){h.__proto__=f;return h;}var g=function(){};var j=Object.create?Object.create(f):new (g.prototype=f,g);for(var e in h){if(h.hasOwnProperty(e)){j[e]=h[e];}}return j;};c.__cache={};c.version="0.6.5-stable";c.settings={};c.tags={operationOpen:"{@",operationClose:"}",interpolateOpen:"\\${",interpolateClose:"}",noneencodeOpen:"\\$\\${",noneencodeClose:"}",commentOpen:"\\{#",commentClose:"\\}"};c.options={cache:true,strip:true,errorhandling:true,detection:true,_method:a({__escapehtml:d,__throw:b,__juicer:c},{})};c.tagInit=function(){var f=c.tags.operationOpen+"each\\s*([^}]*?)\\s*as\\s*(\\w*?)\\s*(,\\s*\\w*?)?"+c.tags.operationClose;var h=c.tags.operationOpen+"\\/each"+c.tags.operationClose;var i=c.tags.operationOpen+"if\\s*([^}]*?)"+c.tags.operationClose;var j=c.tags.operationOpen+"\\/if"+c.tags.operationClose;var n=c.tags.operationOpen+"else"+c.tags.operationClose;var o=c.tags.operationOpen+"else if\\s*([^}]*?)"+c.tags.operationClose;var k=c.tags.interpolateOpen+"([\\s\\S]+?)"+c.tags.interpolateClose;var l=c.tags.noneencodeOpen+"([\\s\\S]+?)"+c.tags.noneencodeClose;var m=c.tags.commentOpen+"[^}]*?"+c.tags.commentClose;var g=c.tags.operationOpen+"each\\s*(\\w*?)\\s*in\\s*range\\(([^}]+?)\\s*,\\s*([^}]+?)\\)"+c.tags.operationClose;var e=c.tags.operationOpen+"include\\s*([^}]*?)\\s*,\\s*([^}]*?)"+c.tags.operationClose;c.settings.forstart=new RegExp(f,"igm");c.settings.forend=new RegExp(h,"igm");c.settings.ifstart=new RegExp(i,"igm");c.settings.ifend=new RegExp(j,"igm");c.settings.elsestart=new RegExp(n,"igm");c.settings.elseifstart=new RegExp(o,"igm");c.settings.interpolate=new RegExp(k,"igm");c.settings.noneencode=new RegExp(l,"igm");c.settings.inlinecomment=new RegExp(m,"igm");c.settings.rangestart=new RegExp(g,"igm");c.settings.include=new RegExp(e,"igm");};c.tagInit();c.set=function(f,j){var h=this;var e=function(i){return i.replace(/[\$\(\)\[\]\+\^\{\}\?\*\|\.]/igm,function(l){return"\\"+l;});};var k=function(l,m){var i=l.match(/^tag::(.*)$/i);if(i){h.tags[i[1]]=e(m);h.tagInit();return;}h.options[l]=m;};if(arguments.length===2){k(f,j);return;}if(f===Object(f)){for(var g in f){if(f.hasOwnProperty(g)){k(g,f[g]);}}}};c.register=function(g,f){var e=this.options._method;if(e.hasOwnProperty(g)){return false;}return e[g]=f;};c.unregister=function(f){var e=this.options._method;if(e.hasOwnProperty(f)){return delete e[f];}};c.template=function(e){var f=this;this.options=e;this.__interpolate=function(g,l,i){var h=g.split("|"),k=h[0]||"",j;if(h.length>1){g=h.shift();j=h.shift().split(",");k="_method."+j.shift()+".call({}, "+[g].concat(j)+")";}return"<%= "+(l?"_method.__escapehtml.escaping":"")+"("+(!i||i.detection!==false?"_method.__escapehtml.detection":"")+"("+k+")) %>";};this.__removeShell=function(h,g){var i=0;h=h.replace(c.settings.forstart,function(n,k,m,l){var m=m||"value",l=l&&l.substr(1);var j="i"+i++;return"<% ~function() {for(var "+j+" in "+k+") {if("+k+".hasOwnProperty("+j+")) {var "+m+"="+k+"["+j+"];"+(l?("var "+l+"="+j+";"):"")+" %>";}).replace(c.settings.forend,"<% }}}(); %>").replace(c.settings.ifstart,function(j,k){return"<% if("+k+") { %>";}).replace(c.settings.ifend,"<% } %>").replace(c.settings.elsestart,function(j){return"<% } else { %>";}).replace(c.settings.elseifstart,function(j,k){return"<% } else if("+k+") { %>";}).replace(c.settings.noneencode,function(k,j){return f.__interpolate(j,false,g);}).replace(c.settings.interpolate,function(k,j){return f.__interpolate(j,true,g);}).replace(c.settings.inlinecomment,"").replace(c.settings.rangestart,function(m,l,n,k){var j="j"+i++;return"<% ~function() {for(var "+j+"="+n+";"+j+"<"+k+";"+j+"++) {{var "+l+"="+j+"; %>";}).replace(c.settings.include,function(l,j,k){return"<%= _method.__juicer("+j+", "+k+"); %>";});if(!g||g.errorhandling!==false){h="<% try { %>"+h;h+='<% } catch(e) {_method.__throw("Juicer Render Exception: "+e.message);} %>';}return h;};this.__toNative=function(h,g){return this.__convert(h,!g||g.strip);};this.__lexicalAnalyze=function(k){var j=[];var o=[];var n="";var g=["if","each","_","_method","console","break","case","catch","continue","debugger","default","delete","do","finally","for","function","in","instanceof","new","return","switch","this","throw","try","typeof","var","void","while","with","null","typeof","class","enum","export","extends","import","super","implements","interface","let","package","private","protected","public","static","yield","const","arguments","true","false","undefined","NaN"];var m=function(r,q){if(Array.prototype.indexOf&&r.indexOf===Array.prototype.indexOf){return r.indexOf(q);}for(var p=0;p=,\(\)\[\]]\s*([A-Za-z_]+)/igm,h);for(var l=0;l";};this.__convert=function(h,i){var g=[].join("");g+="'use strict';";g+="var _=_||{};";g+="var _out='';_out+='";if(i!==false){g+=h.replace(/\\/g,"\\\\").replace(/[\r\t\n]/g," ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"';_out+=$1;_out+='").split("<%").join("';").split("%>").join("_out+='")+"';return _out;";return g;}g+=h.replace(/\\/g,"\\\\").replace(/[\r]/g,"\\r").replace(/[\t]/g,"\\t").replace(/[\n]/g,"\\n").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"';_out+=$1;_out+='").split("<%").join("';").split("%>").join("_out+='")+"';return _out.replace(/[\\r\\n]\\s+[\\r\\n]/g, '\\r\\n');";return g;};this.parse=function(h,g){var i=this;if(!g||g.loose!==false){h=this.__lexicalAnalyze(h)+h;}h=this.__removeShell(h,g);h=this.__toNative(h,g);this._render=new Function("_, _method",h);this.render=function(k,j){if(!j||j!==f.options._method){j=a(j,f.options._method);}return i._render.call(this,k,j);};return this;};};c.compile=function(g,f){if(!f||f!==this.options){f=a(f,this.options);}try{var h=this.__cache[g]?this.__cache[g]:new this.template(this.options).parse(g,f);if(!f||f.cache!==false){this.__cache[g]=h;}return h;}catch(i){b("Juicer Compile Exception: "+i.message);return{render:function(){}};}};c.to_html=function(f,g,e){if(!e||e!==this.options){e=a(e,this.options);}return this.compile(f,e).render(g,e._method);};typeof(module)!=="undefined"&&module.exports?module.exports=c:this.juicer=c;})(); +/** + * juicer > A Light Javascript Templete Engine. + * raw > https://github.com/PaulGuo/Juicer/blob/master/src/juicer.js + * edit > bh-lay.com + */ -//add by bh-lay -if ( typeof define === "function") { - define(function () { return juicer; } ); +var juicer = function() { + var args = [].slice.call(arguments); + + args.push(juicer.options); + + if(args[0].match(/^\s*#([\w:\-\.]+)\s*$/igm)) { + args[0].replace(/^\s*#([\w:\-\.]+)\s*$/igm, function($, $id) { + var _document = document; + var elem = _document && _document.getElementById($id); + args[0] = elem ? (elem.value || elem.innerHTML) : $; + }); + } + + if(juicer.documentHTML) { + juicer.compile.call(juicer, juicer.documentHTML); + juicer.documentHTML = ''; + } + + if(arguments.length == 1) { + return juicer.compile.apply(juicer, args); + } + + if(arguments.length >= 2) { + return juicer.to_html.apply(juicer, args); + } +}; + +var __escapehtml = { + escapehash: { + '<': '<', + '>': '>', + '&': '&', + '"': '"', + "'": ''', + '/': '/' + }, + escapereplace: function(k) { + return __escapehtml.escapehash[k]; + }, + escaping: function(str) { + return typeof(str) !== 'string' ? str : str.replace(/[&<>"']/igm, this.escapereplace); + }, + detection: function(data) { + return typeof(data) === 'undefined' ? '' : data; + } +}; + +var __throw = function(error) { + if(typeof(console) !== 'undefined') { + if(console.warn) { + console.warn(error); + return; + } + + if(console.log) { + console.log(error); + return; + } + } + + throw(error); +}; + +var __creator = function(o, proto) { + o = o !== Object(o) ? {} : o; + + if(o.__proto__) { + o.__proto__ = proto; + return o; + } + + var empty = function() {}; + var n = Object.create ? + Object.create(proto) : + new(empty.prototype = proto, empty); + + for(var i in o) { + if(o.hasOwnProperty(i)) { + n[i] = o[i]; + } + } + + return n; +}; + +var annotate = function(fn) { + var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m; + var FN_ARG_SPLIT = /,/; + var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/; + var FN_BODY = /^function[^{]+{([\s\S]*)}/m; + var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; + var args = [], + fnText, + fnBody, + argDecl; + + if (typeof fn === 'function') { + if (fn.length) { + fnText = fn.toString(); + } + } else if(typeof fn === 'string') { + fnText = fn; + } + + fnText = fnText.trim(); + argDecl = fnText.match(FN_ARGS); + fnBody = fnText.match(FN_BODY)[1].trim(); + + for(var i = 0; i < argDecl[1].split(FN_ARG_SPLIT).length; i++) { + var arg = argDecl[1].split(FN_ARG_SPLIT)[i]; + arg.replace(FN_ARG, function(all, underscore, name) { + args.push(name); + }); + } + + return [args, fnBody]; +}; + +juicer.__cache = {}; +juicer.version = '0.6.15'; +juicer.settings = {}; +juicer.documentHTML = ''; + +juicer.tags = { + operationOpen: '{@', + operationClose: '}', + interpolateOpen: '\\${', + interpolateClose: '}', + noneencodeOpen: '\\$\\${', + noneencodeClose: '}', + commentOpen: '\\{#', + commentClose: '\\}' +}; + +juicer.options = { + cache: true, + strip: true, + errorhandling: true, + detection: true, + _method: __creator({ + __escapehtml: __escapehtml, + __throw: __throw, + __juicer: juicer + }, {}) +}; + +juicer.tagInit = function() { + var forstart = juicer.tags.operationOpen + 'each\\s*([^}]*?)\\s*as\\s*(\\w*?)\\s*(,\\s*\\w*?)?' + juicer.tags.operationClose; + var forend = juicer.tags.operationOpen + '\\/each' + juicer.tags.operationClose; + var ifstart = juicer.tags.operationOpen + 'if\\s*([^}]*?)' + juicer.tags.operationClose; + var ifend = juicer.tags.operationOpen + '\\/if' + juicer.tags.operationClose; + var elsestart = juicer.tags.operationOpen + 'else' + juicer.tags.operationClose; + var elseifstart = juicer.tags.operationOpen + 'else if\\s*([^}]*?)' + juicer.tags.operationClose; + var interpolate = juicer.tags.interpolateOpen + '([\\s\\S]+?)' + juicer.tags.interpolateClose; + var noneencode = juicer.tags.noneencodeOpen + '([\\s\\S]+?)' + juicer.tags.noneencodeClose; + var inlinecomment = juicer.tags.commentOpen + '[^}]*?' + juicer.tags.commentClose; + var rangestart = juicer.tags.operationOpen + 'each\\s*(\\w*?)\\s*in\\s*range\\(([^}]+?)\\s*,\\s*([^}]+?)\\)' + juicer.tags.operationClose; + var include = juicer.tags.operationOpen + 'include\\s*([^}]*?)\\s*,\\s*([^}]*?)' + juicer.tags.operationClose; + var helperRegisterStart = juicer.tags.operationOpen + 'helper\\s*([^}]*?)\\s*' + juicer.tags.operationClose; + var helperRegisterBody = '([\\s\\S]*?)'; + var helperRegisterEnd = juicer.tags.operationOpen + '\\/helper' + juicer.tags.operationClose; + + juicer.settings.forstart = new RegExp(forstart, 'igm'); + juicer.settings.forend = new RegExp(forend, 'igm'); + juicer.settings.ifstart = new RegExp(ifstart, 'igm'); + juicer.settings.ifend = new RegExp(ifend, 'igm'); + juicer.settings.elsestart = new RegExp(elsestart, 'igm'); + juicer.settings.elseifstart = new RegExp(elseifstart, 'igm'); + juicer.settings.interpolate = new RegExp(interpolate, 'igm'); + juicer.settings.noneencode = new RegExp(noneencode, 'igm'); + juicer.settings.inlinecomment = new RegExp(inlinecomment, 'igm'); + juicer.settings.rangestart = new RegExp(rangestart, 'igm'); + juicer.settings.include = new RegExp(include, 'igm'); + juicer.settings.helperRegister = new RegExp(helperRegisterStart + helperRegisterBody + helperRegisterEnd, 'igm'); +}; + +juicer.tagInit(); + +// Using this method to set the options by given conf-name and conf-value, +// you can also provide more than one key-value pair wrapped by an object. +// this interface also used to custom the template tag delimater, for this +// situation, the conf-name must begin with tag::, for example: juicer.set +// ('tag::operationOpen', '{@'). + +juicer.set = function(conf, value) { + var that = this; + + var escapePattern = function(v) { + return v.replace(/[\$\(\)\[\]\+\^\{\}\?\*\|\.]/igm, function($) { + return '\\' + $; + }); + }; + + var set = function(conf, value) { + var tag = conf.match(/^tag::(.*)$/i); + + if(tag) { + that.tags[tag[1]] = escapePattern(value); + that.tagInit(); + return; + } + + that.options[conf] = value; + }; + + if(arguments.length === 2) { + set(conf, value); + return; + } + + if(conf === Object(conf)) { + for(var i in conf) { + if(conf.hasOwnProperty(i)) { + set(i, conf[i]); + } + } + } +}; + +// Before you're using custom functions in your template like ${name | fnName}, +// you need to register this fn by juicer.register('fnName', fn). + +juicer.register = function(fname, fn) { + var _method = this.options._method; + + if(_method.hasOwnProperty(fname)) { + return false; + } + + return _method[fname] = fn; +}; + +// remove the registered function in the memory by the provided function name. +// for example: juicer.unregister('fnName'). + +juicer.unregister = function(fname) { + var _method = this.options._method; + + if(_method.hasOwnProperty(fname)) { + return delete _method[fname]; + } +}; + +juicer.template = function(options) { + var that = this; + + this.options = options; + + this.__interpolate = function(_name, _escape, options) { + var _define = _name.split('|'), _fn = _define[0] || '', _cluster; + + if(_define.length > 1) { + _name = _define.shift(); + _cluster = _define.shift().split(','); + _fn = '_method.' + _cluster.shift() + '.call(this, ' + [_name].concat(_cluster) + ')'; + } + + return '<%= ' + (_escape ? '_method.__escapehtml.escaping' : '') + '(' + + (!options || options.detection !== false ? '_method.__escapehtml.detection' : '') + '(' + + _fn + + ')' + + ')' + + ' %>'; + }; + + this.__removeShell = function(tpl, options) { + var _counter = 0; + + tpl = tpl + // inline helper register + .replace(juicer.settings.helperRegister, function($, helperName, fnText) { + var anno = annotate(fnText); + var fnArgs = anno[0]; + var fnBody = anno[1]; + var fn = new Function(fnArgs.join(','), fnBody); + + juicer.register(helperName, fn); + return $; + }) + + // for expression + .replace(juicer.settings.forstart, function($, _name, alias, key) { + var alias = alias || 'value', key = key && key.substr(1); + var _iterate = 'i' + _counter++; + return '<% ~function() {' + + 'for(var ' + _iterate + ' in ' + _name + ') {' + + 'if(' + _name + '.hasOwnProperty(' + _iterate + ')) {' + + 'var ' + alias + '=' + _name + '[' + _iterate + '];' + + (key ? ('var ' + key + '=' + _iterate + ';') : '') + + ' %>'; + }) + .replace(juicer.settings.forend, '<% }}}(); %>') + + // if expression + .replace(juicer.settings.ifstart, function($, condition) { + return '<% if(' + condition + ') { %>'; + }) + .replace(juicer.settings.ifend, '<% } %>') + + // else expression + .replace(juicer.settings.elsestart, function($) { + return '<% } else { %>'; + }) + + // else if expression + .replace(juicer.settings.elseifstart, function($, condition) { + return '<% } else if(' + condition + ') { %>'; + }) + + // interpolate without escape + .replace(juicer.settings.noneencode, function($, _name) { + return that.__interpolate(_name, false, options); + }) + + // interpolate with escape + .replace(juicer.settings.interpolate, function($, _name) { + return that.__interpolate(_name, true, options); + }) + + // clean up comments + .replace(juicer.settings.inlinecomment, '') + + // range expression + .replace(juicer.settings.rangestart, function($, _name, start, end) { + var _iterate = 'j' + _counter++; + return '<% ~function() {' + + 'for(var ' + _iterate + '=' + start + ';' + _iterate + '<' + end + ';' + _iterate + '++) {{' + + 'var ' + _name + '=' + _iterate + ';' + + ' %>'; + }) + + // include sub-template + .replace(juicer.settings.include, function($, tpl, data) { + // compatible for node.js + if(tpl.match(/^file\:\/\//igm)) return $; + return '<%= _method.__juicer(' + tpl + ', ' + data + '); %>'; + }); + + // exception handling + if(!options || options.errorhandling !== false) { + tpl = '<% try { %>' + tpl; + tpl += '<% } catch(e) {_method.__throw("Juicer Render Exception: "+e.message);} %>'; + } + + return tpl; + }; + + this.__toNative = function(tpl, options) { + return this.__convert(tpl, !options || options.strip); + }; + + this.__lexicalAnalyze = function(tpl) { + var buffer = []; + var method = []; + var prefix = ''; + var reserved = [ + 'if', 'each', '_', '_method', 'console', + 'break', 'case', 'catch', 'continue', 'debugger', 'default', 'delete', 'do', + 'finally', 'for', 'function', 'in', 'instanceof', 'new', 'return', 'switch', + 'this', 'throw', 'try', 'typeof', 'var', 'void', 'while', 'with', 'null', 'typeof', + 'class', 'enum', 'export', 'extends', 'import', 'super', 'implements', 'interface', + 'let', 'package', 'private', 'protected', 'public', 'static', 'yield', 'const', 'arguments', + 'true', 'false', 'undefined', 'NaN' + ]; + + var indexOf = function(array, item) { + if (Array.prototype.indexOf && array.indexOf === Array.prototype.indexOf) { + return array.indexOf(item); + } + + for(var i=0; i < array.length; i++) { + if(array[i] === item) return i; + } + + return -1; + }; + + var variableAnalyze = function($, statement) { + statement = statement.match(/\w+/igm)[0]; + + if(indexOf(buffer, statement) === -1 && indexOf(reserved, statement) === -1 && indexOf(method, statement) === -1) { + + // avoid re-declare native function, if not do this, template + // `{@if encodeURIComponent(name)}` could be throw undefined. + + if(typeof(window) !== 'undefined' && typeof(window[statement]) === 'function' && window[statement].toString().match(/^\s*?function \w+\(\) \{\s*?\[native code\]\s*?\}\s*?$/i)) { + return $; + } + + // avoid re-declare registered function, if not do this, template + // `{@if registered_func(name)}` could be throw undefined. + + if(typeof(juicer.options._method[statement]) === 'function' || juicer.options._method.hasOwnProperty(statement)) { + method.push(statement); + return $; + } + + // avoid SyntaxError: Unexpected number + + if(statement.match(/^\d+/igm)) { + return $; + } + + buffer.push(statement); // fuck ie + } + + return $; + }; + + tpl.replace(juicer.settings.forstart, variableAnalyze). + replace(juicer.settings.interpolate, variableAnalyze). + replace(juicer.settings.ifstart, variableAnalyze). + replace(juicer.settings.elseifstart, variableAnalyze). + replace(juicer.settings.include, variableAnalyze). + replace(/[\+\-\*\/%!\?\|\^&~<>=,\(\)\[\]]\s*([A-Za-z_0-9]+)/igm, variableAnalyze); + + for(var i = 0; i < buffer.length; i++) { + prefix += 'var ' + buffer[i] + '=_.' + buffer[i] + ';'; + } + + for(var i = 0; i < method.length; i++) { + prefix += 'var ' + method[i] + '=_method.' + method[i] + ';'; + } + + return '<% ' + prefix + ' %>'; + }; + + this.__convert=function(tpl, strip) { + var buffer = [].join(''); + + buffer += "'use strict';"; // use strict mode + buffer += "var _=_||{};"; + buffer += "var _out='';_out+='"; + + if(strip !== false) { + buffer += tpl + .replace(/\\/g, "\\\\") + .replace(/[\r\t\n]/g, " ") + .replace(/'(?=[^%]*%>)/g, "\t") + .split("'").join("\\'") + .split("\t").join("'") + .replace(/<%=(.+?)%>/g, "';_out+=$1;_out+='") + .split("<%").join("';") + .split("%>").join("_out+='")+ + "';return _out;"; + + return buffer; + } + + buffer += tpl + .replace(/\\/g, "\\\\") + .replace(/[\r]/g, "\\r") + .replace(/[\t]/g, "\\t") + .replace(/[\n]/g, "\\n") + .replace(/'(?=[^%]*%>)/g, "\t") + .split("'").join("\\'") + .split("\t").join("'") + .replace(/<%=(.+?)%>/g, "';_out+=$1;_out+='") + .split("<%").join("';") + .split("%>").join("_out+='")+ + "';return _out.replace(/[\\r\\n]\\s+[\\r\\n]/g, '\\r\\n');"; + + return buffer; + }; + + this.parse = function(tpl, options) { + var _that = this; + + if(!options || options.loose !== false) { + tpl = this.__lexicalAnalyze(tpl) + tpl; + } + + tpl = this.__removeShell(tpl, options); + tpl = this.__toNative(tpl, options); + + this._render = new Function('_, _method', tpl); + + this.render = function(_, _method) { + if(!_method || _method !== that.options._method) { + _method = __creator(_method, that.options._method); + } + + return _that._render.call(this, _, _method); + }; + + return this; + }; +}; + +juicer.compile = function(tpl, options) { + if(!options || options !== this.options) { + options = __creator(options, this.options); + } + + var that = this; + var cacheStore = { + get: function(tpl) { + if(options.cachestore) { + return options.cachestore.get(tpl); + } + + return that.__cache[tpl]; + }, + + set: function(tpl, val) { + if(options.cachestore) { + return options.cachestore.set(tpl, val); + } + + return that.__cache[tpl] = val; + } + }; + + try { + var engine = cacheStore.get(tpl) ? + cacheStore.get(tpl) : + new this.template(this.options).parse(tpl, options); + + if(!options || options.cache !== false) { + cacheStore.set(tpl, engine); + } + + return engine; + + } catch(e) { + __throw('Juicer Compile Exception: ' + e.message); + + return { + render: function() {} // noop + }; + } +}; + +juicer.to_html = function(tpl, data, options) { + if(!options || options !== this.options) { + options = __creator(options, this.options); + } + + return this.compile(tpl, options).render(data, options._method); +}; + +if(typeof(document) !== 'undefined' && document.body) { + juicer.documentHTML = document.body.innerHTML; } + +//add by bh-lay +export default juicer; \ No newline at end of file diff --git a/frontEnd/single-page/js/lofox.js b/frontEnd/single-page/js/lofox.js index c106dc232..650db1b99 100644 --- a/frontEnd/single-page/js/lofox.js +++ b/frontEnd/single-page/js/lofox.js @@ -6,261 +6,250 @@ * location fox */ -(function(global,doc,factoryFn){ - if(global.define){ - //提供CommonJS规范的接口 - define(factoryFn); - }else{ - //提供window.UI的接口 - global.utils = global.utils || {}; - global.utils.lofox = factoryFn(); - } -})(window,document,function(){ - //主页面域名(包含协议) - var LOCATION = window.location, - //获取url中域名、协议正则 'http://xxx.xx/xxx','https://xxx.xx/xxx','//xxx.xx/xxx' - private_reg_url = /^(http(?:|s)\:)*\/\/([^\/]+)/; +//主页面域名(包含协议) +var LOCATION = window.location, + //获取url中域名、协议正则 'http://xxx.xx/xxx','https://xxx.xx/xxx','//xxx.xx/xxx' + private_reg_url = /^(http(?:|s)\:)*\/\/([^\/]+)/; - //是否为非空的字符串 - function isNotEmptyString(input){ - return (typeof input == 'string' && input.length) ? true : false; +//是否为非空的字符串 +function isNotEmptyString(input){ + return (typeof input == 'string' && input.length) ? true : false; +} +/** + * URL与当前页面是否为同源 + * 同协议、同域名、同端口 + * location.host 包含域名、端口 + **/ +function isSameOrigin(url){ + if(!isNotEmptyString(url)){ + return false; } - /** - * URL与当前页面是否为同源 - * 同协议、同域名、同端口 - * location.host 包含域名、端口 - **/ - function isSameOrigin(url){ - if(!isNotEmptyString(url)){ - return false; - } - var location_match = url.match(private_reg_url); - if(!location_match){ - //没有域名信息,则为本域相对路径 - return true; - }else if(location_match[2] == LOCATION.host && (!location_match[1] || location_match[1] == LOCATION.protocol)){ - //完整检测URL - return true; - }else{ - return false; - } + var location_match = url.match(private_reg_url); + if(!location_match){ + //没有域名信息,则为本域相对路径 + return true; + }else if(location_match[2] == LOCATION.host && (!location_match[1] || location_match[1] == LOCATION.protocol)){ + //完整检测URL + return true; + }else{ + return false; } - /** - * 格式化path - */ - function pathParser(input){ - //去除首尾的‘/’ - input = input.replace(/^\/*|\/*$/g,''); - //分割路径 - var output = input.split(/\//); +} +/** + * 格式化path + */ +function pathParser(input){ + //去除首尾的‘/’ + input = input.replace(/^\/*|\/*$/g,''); + //分割路径 + var output = input.split(/\//); - if(output.length == 1 && output[0] == ''){ - output = []; - } - return output; + if(output.length == 1 && output[0] == ''){ + output = []; } - /** - * 格式化search - */ - function searchParser(search){ - var resultObj = {}, - items, - index, - keyValue; - if(search && search.length > 1){ - items = search.split('&'); - for(index = 0 ; index < items.length ; index++ ){ - if(! items[index]){ - continue; - } - keyValue = items[index].split('='); - resultObj[keyValue[0]] = typeof keyValue[1] === "undefined" ? "": keyValue[1]; + return output; +} +/** + * 格式化search + */ +function searchParser(search){ + var resultObj = {}, + items, + index, + keyValue; + if(search && search.length > 1){ + items = search.split('&'); + for(index = 0 ; index < items.length ; index++ ){ + if(! items[index]){ + continue; } + keyValue = items[index].split('='); + resultObj[keyValue[0]] = typeof keyValue[1] === "undefined" ? "": keyValue[1]; } - return resultObj; } - /** - * 事件触发器 - */ - function EMIT(eventName,args){ - //事件堆无该事件,结束运行 - if(!this.events[eventName]){ - return - } - for(var i=0,total=this.events[eventName].length;i window.innerHeight*0.6 ? 'removeClass' : 'addClass'; - utils[method](nodeBackTop,'hide'); - } - checkBackTop(); + function checkBackTop(){ + var method = nodeBody.scrollTop > window.innerHeight*0.6 ? 'removeClass' : 'addClass'; + utils[method](nodeBackTop,'hide'); + } + checkBackTop(); - var distance = 50, - // 是否已经置灰 - isDarkened = false, - darkenClassName = "darken", - useMethod; - function fixNavClass(){ - var isNeedDarken = nodeBody.scrollTop > distance, - isNeedChange = isNeedDarken !== isDarkened; - if (isNeedChange) { - isDarkened = isNeedDarken; - useMethod = (isNeedDarken ? 'add' : 'remove') + 'Class'; + var distance = 50, + // 是否已经置灰 + isDarkened = false, + darkenClassName = "darken", + useMethod; + function fixNavClass(){ + var isNeedDarken = nodeBody.scrollTop > distance, + isNeedChange = isNeedDarken !== isDarkened; + if (isNeedChange) { + isDarkened = isNeedDarken; + useMethod = (isNeedDarken ? 'add' : 'remove') + 'Class'; - utils[useMethod](nodeNav, darkenClassName); - } + utils[useMethod](nodeNav, darkenClassName); } + } - window.onscroll = function(){ - fixNavClass(); - clearTimeout(scrollDelay); - scrollDelay = setTimeout(checkBackTop,100); - }; - utils.bind(nodeBackTop,'click',function(){ - nodeBody.scrollTop = 0; - }); + window.onscroll = function(){ + fixNavClass(); + clearTimeout(scrollDelay); + scrollDelay = setTimeout(checkBackTop,100); }; + utils.bind(nodeBackTop,'click',function(){ + nodeBody.scrollTop = 0; + }); +}; - function setCur(page) { - if (page === '/') { - page = 'index'; - } - utils.removeClass(utils.query('.app_nav li.cur'),'cur'); - utils.addClass(utils.query('.app_nav li[page=' + page + ']'),'cur'); +function setCur(page) { + if (page === '/') { + page = 'index'; } + utils.removeClass(utils.query('.app_nav li.cur'),'cur'); + utils.addClass(utils.query('.app_nav li[page=' + page + ']'),'cur'); +} - exports.init = init; - exports.setCur = setCur; -}); +export default {init, setCur}; \ No newline at end of file diff --git a/frontEnd/single-page/js/page/bless.js b/frontEnd/single-page/js/page/bless.js index e932774d3..f6377b50d 100644 --- a/frontEnd/single-page/js/page/bless.js +++ b/frontEnd/single-page/js/page/bless.js @@ -2,40 +2,39 @@ * 评论 list * */ -define([ - 'js/Base', - 'comments/index', - 'js/juicer' -],function(utils,comments, juicer){ - var comment_id = 'define-1', - base_tpl = __inline('/tpl/bless.html'); - var potoGraphaList = [ - { - title: '束河古城', - imgSrc: __uri('/images/comment_@2x.jpg'), - htmlSrc: 'https://bh-lay.tuchong.com/14591502/', - }, - { - title: '西沙湿地', - imgSrc: __uri('/images/comment_2_@2x.jpg'), - htmlSrc: 'https://bh-lay.tuchong.com/14465332/', - } - ]; - var potoGraphaIndex = -1; - function page(global){ - var base_tpl_end = L.tplModule(base_tpl), - node = global.node; - node.innerHTML = juicer(base_tpl_end, { - photography: potoGraphaList[++potoGraphaIndex] - }); - if(potoGraphaIndex + 1 >= potoGraphaList.length){ - potoGraphaIndex = -1; - } - var sendBox = new comments.sendBox(utils.query('.bless-sendBox',node),comment_id), - list = new comments.list(utils.query('.grid-col-flow-300',node), comment_id); - sendBox.on('sendToServiceSuccess',function(item){ - list.addItem(item); - }); - } - return page; -}); + +import utils from "../Base.js"; +import comments from "../../comments/index.js"; +import juicer from "../juicer.js"; + +var comment_id = 'define-1', + base_tpl = require("html-loader!../../tpl/bless.html"); +var potoGraphaList = [ + { + title: '束河古城', + imgSrc: require("../../images/comment_@2x.jpg"), + htmlSrc: 'https://bh-lay.tuchong.com/14591502/', + }, + { + title: '西沙湿地', + imgSrc: require("../../images/comment_2_@2x.jpg"), + htmlSrc: 'https://bh-lay.tuchong.com/14465332/', + } +]; +var potoGraphaIndex = -1; +function page(global){ + var base_tpl_end = L.tplModule(base_tpl), + node = global.node; + node.innerHTML = juicer(base_tpl_end, { + photography: potoGraphaList[++potoGraphaIndex] + }); + if(potoGraphaIndex + 1 >= potoGraphaList.length){ + potoGraphaIndex = -1; + } + var sendBox = new comments.sendBox(utils.query('.bless-sendBox',node),comment_id), + list = new comments.list(utils.query('.grid-col-flow-300',node), comment_id); + sendBox.on('sendToServiceSuccess',function(item){ + list.addItem(item); + }); +} +export default page; diff --git a/frontEnd/single-page/js/page/blogDetail.js b/frontEnd/single-page/js/page/blogDetail.js index 1fa7f61e1..761e7418e 100644 --- a/frontEnd/single-page/js/page/blogDetail.js +++ b/frontEnd/single-page/js/page/blogDetail.js @@ -2,55 +2,54 @@ * blog detail * */ -define([ - 'js/Base', - '/js/highlight.js', - 'comments/index', - 'js/juicer' -],function(utils,hljs,comments,juicer){ - var template = __inline('/tpl/blogDetailPage.html'); - - function getData(id,fn){ - utils.fetch({ - url : '/ajax/blog', - data : { - act : 'get_detail', - format : 'html', - id : id - }, - callback :function(err,data){ - if(!err && data && data.code == 200){ - var detail = data['detail']; - detail.time_show = utils.parseTime(detail.time_show,'{y}-{mm}-{dd}'); - - fn&&fn(null,detail); - }else{ - fn&&fn('博客不存在!'); - } - } - }); - }; - - return function(global,id){ - var node = global.node; - getData(id,function(err,detail,title){ - if(err && !detail){ - global.push('/'); - global.refresh(); - return; + +import utils from "../Base.js"; +import juicer from "../juicer.js"; +import hljs from "../highlight.js"; +import comments from "../../comments/index.js"; + +var template = require("html-loader!../../tpl/blogDetailPage.html"); + +function getData(id,fn){ + utils.fetch({ + url : '/ajax/blog', + data : { + act : 'get_detail', + format : 'html', + id : id + }, + callback :function(err,data){ + if(!err && data && data.code == 200){ + var detail = data['detail']; + detail.time_show = utils.parseTime(detail.time_show,'{y}-{mm}-{dd}'); + + fn&&fn(null,detail); + }else{ + fn&&fn('博客不存在!'); } + } + }); +}; - global.title(detail.title); - node.innerHTML = juicer(template,detail); +export default function(global,id){ + var node = global.node; + getData(id,function(err,detail,title){ + if(err && !detail){ + global.push('/'); + global.refresh(); + return; + } - //代码高亮 - utils.each(utils.queryAll('pre code',node),function(codeNode){ - hljs(codeNode); - }); + global.title(detail.title); + node.innerHTML = juicer(template,detail); + + //代码高亮 + utils.each(utils.queryAll('pre code',node),function(codeNode){ + hljs(codeNode); + }); - new comments.init(utils.query('.comments_frame',node),'blog-' + id,{ - list_num: 8 - }); + new comments.init(utils.query('.comments_frame',node),'blog-' + id,{ + list_num: 8 }); - }; -}); + }); +}; diff --git a/frontEnd/single-page/js/page/blogList.js b/frontEnd/single-page/js/page/blogList.js index 82694233d..2e6f02d80 100644 --- a/frontEnd/single-page/js/page/blogList.js +++ b/frontEnd/single-page/js/page/blogList.js @@ -4,155 +4,153 @@ */ -define([ - 'js/Base', - '/js/stick', - '/js/tie', - 'js/imageHosting', - 'js/juicer' -],function(utils,Stick,tie,imageHosting,juicer){ - var private_tag_data = null; - function getTag(callback){ - if(private_tag_data){ +import utils from "../Base.js"; +import imageHosting from "../imageHosting.js"; +import Stick from "../stick.js"; +import tie from "../tie.js"; +import juicer from "../juicer.js"; + +var private_tag_data = null; +function getTag(callback){ + if(private_tag_data){ + callback && callback(private_tag_data); + return; + } + utils.fetch({ + url : '/ajax/tag/list', + callback :function(err,data){ + data = data || {}; + data.list = data.list ? data.list.slice(0,10) : []; + private_tag_data = data; callback && callback(private_tag_data); - return; } - utils.fetch({ - url : '/ajax/tag/list', - callback :function(err,data){ - data = data || {}; - data.list = data.list ? data.list.slice(0,10) : []; - private_tag_data = data; - callback && callback(private_tag_data); - } - }); - } - function renderTags(dom,tagName,callback){ - getTag(function(data){ - var tag_item_tpl = __inline('/tpl/blogListTag.html'), - html = juicer(tag_item_tpl,data), - selector = tagName ? ('a[data-tag=' + tagName + ']') : 'a'; + }); +} +function renderTags(dom,tagName,callback){ + getTag(function(data){ + var tag_item_tpl = require("html-loader!../../tpl/blogListTag.html"), + html = juicer(tag_item_tpl,data), + selector = tagName ? ('a[data-tag=' + tagName + ']') : 'a'; - dom.innerHTML = html; - utils.addClass(utils.query(selector,dom),'active'); - utils.bind(dom,'click','a',function(){ - var tag = this.getAttribute('data-tag'); - callback && callback(tag); - }); + dom.innerHTML = html; + utils.addClass(utils.query(selector,dom),'active'); + utils.bind(dom,'click','a',function(){ + var tag = this.getAttribute('data-tag'); + callback && callback(tag); }); - } + }); +} - function LIST(tag,onLoadStart,onLoaded){ - this.skip = 0; - this.limit = 10; - this.count = -1; - this.tag = tag || null; - this.onLoadStart = onLoadStart; - this.onLoaded = onLoaded; - this.isLoading = false; - this.loadMore(); +function LIST(tag,onLoadStart,onLoaded){ + this.skip = 0; + this.limit = 10; + this.count = -1; + this.tag = tag || null; + this.onLoadStart = onLoadStart; + this.onLoaded = onLoaded; + this.isLoading = false; + this.loadMore(); +} +LIST.prototype.loadMore = function (){ + var me = this; + if(this.isLoading || this.count>=0 && this.skip >= this.count){ + return; } - LIST.prototype.loadMore = function (){ - var me = this; - if(this.isLoading || this.count>=0 && this.skip >= this.count){ - return; - } - this.isLoading = true; - this.onLoadStart && this.onLoadStart(); - utils.fetch({ - url : '/ajax/blog', - data : { - act : 'get_list', - skip : this.skip, - tag : this.tag || null, - limit : this.limit - }, - callback :function(err,data){ - if(err || !data || data.code == 200){ - callback && callback('err'); - return; - } - var count = data['count'], - list = data['list'], - now = new Date().getTime(); - for(var i in list){ - //三月内的文章都算最新(多可悲) - if((now - list[i].time_show)/(1000*60*60*24) < 90){ - list[i].is_new = true; - } - list[i].time_show = utils.parseTime(list[i].time_show,'{mm}-{dd} {y}'); - //使用七牛图床 - list[i].cover = imageHosting(list[i].cover,{ - type : 'zoom', - width : 420, - }); - } - me.count = count; - me.skip += me.limit; - me.onLoaded && me.onLoaded.call(me,list,count); - me.isLoading = false; - } - }); - }; - function page(global,param){ - var me = this, - node = global.node, - //获取标签名 - pageTag = param.tag ? decodeURI(param.tag) : null, - baseTpl = __inline('/tpl/blogListBase.html'), - list_tpl = __inline('/tpl/blogListItem.html'), - empty_tpl = '

啥都木有

'; - //插入基本模版 - node.innerHTML = baseTpl; - this.nodeList = utils.query('.articleList',node); - this.nodeLoading = utils.query('.l-loading-panel',node); - - this.stick = new Stick({ - container: me.nodeList, - column_width: 280, - column_gap: 10, - load_spacing: 1000, - onNeedMore: function(){ - list.loadMore(); + this.isLoading = true; + this.onLoadStart && this.onLoadStart(); + utils.fetch({ + url : '/ajax/blog', + data : { + act : 'get_list', + skip : this.skip, + tag : this.tag || null, + limit : this.limit + }, + callback :function(err,data){ + if(err || !data || data.code == 200){ + callback && callback('err'); + return; } - }); - var nodeTag = utils.query('.articleListPage-tags',node); - this.tie = util.tie({ - dom : nodeTag, - scopeDom: utils.parents(nodeTag,'.articleListPage'), - fixed_top: 60 - }); - //创建列表对象 - var list = new LIST(pageTag,function(){ - utils.removeClass(me.nodeLoading,'hide'); - },function(list){ - utils.addClass(me.nodeLoading,'hide'); - if(!list || list.length == 0){ - me.nodeList.innerHTML = empty_tpl; - }else{ - list.forEach(function(item,index){ - var html = juicer(list_tpl,item); - me.stick.addItem(html,item.cover); + var count = data['count'], + list = data['list'], + now = new Date().getTime(); + for(var i in list){ + //三月内的文章都算最新(多可悲) + if((now - list[i].time_show)/(1000*60*60*24) < 90){ + list[i].is_new = true; + } + list[i].time_show = utils.parseTime(list[i].time_show,'{mm}-{dd} {y}'); + //使用七牛图床 + list[i].cover = imageHosting(list[i].cover,{ + type : 'zoom', + width : 420, }); } - }); - //处理标签功能 - renderTags(utils.query('.articleListPage-tags .content',node),pageTag,function(tag){ - if(tag == 'null'){ - global.push('/blog'); - }else{ - global.push('/blog?tag=' + tag); - } - global.refresh(); - }); + me.count = count; + me.skip += me.limit; + me.onLoaded && me.onLoaded.call(me,list,count); + me.isLoading = false; + } + }); +}; +function page(global,param){ + var me = this, + node = global.node, + //获取标签名 + pageTag = param.tag ? decodeURI(param.tag) : null, + baseTpl = require("html-loader!../../tpl/blogListBase.html"), + list_tpl = require("html-loader!../../tpl/blogListItem.html"), + empty_tpl = '

啥都木有

'; + //插入基本模版 + node.innerHTML = baseTpl; + this.nodeList = utils.query('.articleList',node); + this.nodeLoading = utils.query('.l-loading-panel',node); - } - page.prototype = { - destroy: function(){ - this.stick.destroy(); - this.tie.destroy(); + this.stick = new Stick({ + container: me.nodeList, + column_width: 280, + column_gap: 10, + load_spacing: 1000, + onNeedMore: function(){ + list.loadMore(); + } + }); + var nodeTag = utils.query('.articleListPage-tags',node); + this.tie = tie({ + dom : nodeTag, + scopeDom: utils.parents(nodeTag,'.articleListPage'), + fixed_top: 60 + }); + //创建列表对象 + var list = new LIST(pageTag,function(){ + utils.removeClass(me.nodeLoading,'hide'); + },function(list){ + utils.addClass(me.nodeLoading,'hide'); + if(!list || list.length == 0){ + me.nodeList.innerHTML = empty_tpl; + }else{ + list.forEach(function(item,index){ + var html = juicer(list_tpl,item); + me.stick.addItem(html,item.cover); + }); } - }; - return page; -}); + }); + //处理标签功能 + renderTags(utils.query('.articleListPage-tags .content',node),pageTag,function(tag){ + if(tag == 'null'){ + global.push('/blog'); + }else{ + global.push('/blog?tag=' + tag); + } + global.refresh(); + }); + +} +page.prototype = { + destroy: function(){ + this.stick.destroy(); + this.tie.destroy(); + } +}; +export default page; diff --git a/frontEnd/single-page/js/page/index.js b/frontEnd/single-page/js/page/index.js index 84fa7eed6..437f9535e 100644 --- a/frontEnd/single-page/js/page/index.js +++ b/frontEnd/single-page/js/page/index.js @@ -5,26 +5,24 @@ */ //index page -define([ - 'js/Base' -],function(utils){ - var temp = __inline('/tpl/index.html'); +import utils from "../Base.js"; - function view(global){ - var node = global.node, - nodeGallery; - node.innerHTML = temp; +var temp = require("html-loader!../../tpl/index.html"); - nodeGallery = utils.query('.gallayer',node); +function view(global){ + var node = global.node, + nodeGallery; + node.innerHTML = temp; - setTimeout(function(){ - utils.addClass(nodeGallery,'zoom-show'); - },600); + nodeGallery = utils.query('.gallayer',node); - return { - destroy: function() { - } - }; - } - return view; -}); + setTimeout(function(){ + utils.addClass(nodeGallery,'zoom-show'); + },600); + + return { + destroy: function() { + } + }; +} +export default view; diff --git a/frontEnd/single-page/js/page/labsList.js b/frontEnd/single-page/js/page/labsList.js index 9e1664c6f..f962f12ae 100644 --- a/frontEnd/single-page/js/page/labsList.js +++ b/frontEnd/single-page/js/page/labsList.js @@ -2,71 +2,71 @@ * labs list * */ -define([ - 'js/Base', - 'js/imageHosting', - 'js/juicer', - 'js/publicTemplate' -],function(utils, imageHosting, juicer, publicTemplate){ - var empty_tpl = '

啥都木有

', - base_tpl = __inline('/tpl/labsListBase.html'), - item_temp = publicTemplate.postListItem; - var limit = 20, - skip = 0, - count = null, - dom; - var getData = function(callback){ - utils.fetch({ - type : 'GET' , - url : '/ajax/labs', - data : { - act : 'get_list', - skip : skip, - limit : limit - }, - callback :function(err,data){ - if(err || data.code == 500){ - callback && callback(500); - return; - } - count = data['count']; - skip += limit; - var list = data['list']; - callback&&callback(null,filterData(list)); +import utils from "../Base.js"; +import imageHosting from "../imageHosting.js"; +import juicer from "../juicer.js"; +import publicTemplate from "../publicTemplate.js"; + +var empty_tpl = '

啥都木有

', + base_tpl = require("html-loader!../../tpl/labsListBase.html"), + item_temp = publicTemplate.postListItem; + +var limit = 20, + skip = 0, + count = null, + dom; +var getData = function(callback){ + utils.fetch({ + type : 'GET' , + url : '/ajax/labs', + data : { + act : 'get_list', + skip : skip, + limit : limit + }, + callback :function(err,data){ + if(err || data.code == 500){ + callback && callback(500); + return; } + count = data['count']; + skip += limit; + + var list = data['list']; + callback&&callback(null,filterData(list)); + } + }); +}; +function filterData(list){ + list.forEach(function (item) { + //使用七牛图床 + item.thumb = imageHosting(item.cover,{ + type : 'cover', + width : 400, + height: 400 }); - }; - function filterData(list){ - list.forEach(function (item) { - //使用七牛图床 - item.thumb = imageHosting(item.cover,{ - type : 'cover', - width : 400, - height: 400 + item.desc = item.intro; + item.url = '/labs/' + item.name; + item.star = item.github.stargazers_count; + item.fork = item.github.forks_count; + }); + return list; +} +export default function(global,param){ + var node = global.node; + skip = 0; + node.innerHTML = base_tpl; + getData(function(err,list){ + var this_html; + if(err){ + this_html = empty_tpl; + }else{ + this_html = juicer(item_temp,{ + list : list }); - item.desc = item.intro; - item.url = '/labs/' + item.name; - item.star = item.github.stargazers_count; - item.fork = item.github.forks_count; - }); - return list; - } - return function(global,param){ - var node = global.node; - skip = 0; - node.innerHTML = base_tpl; - getData(function(err,list){ - var this_html; - if(err){ - this_html = empty_tpl; - }else{ - this_html = juicer(item_temp,{ - list : list - }); - } - utils.query('.labsList',node).innerHTML = this_html; - }); - }; -}); + } + utils.query('.labsList',node).innerHTML = this_html; + }); +}; \ No newline at end of file diff --git a/frontEnd/single-page/js/page/panoList.js b/frontEnd/single-page/js/page/panoList.js index a4b6f98f8..b107de3d5 100644 --- a/frontEnd/single-page/js/page/panoList.js +++ b/frontEnd/single-page/js/page/panoList.js @@ -2,58 +2,56 @@ * labs list * */ -define([ - 'js/Base', - 'js/imageHosting', - 'js/juicer', - 'js/publicTemplate' -],function(utils, imageHosting, juicer, publicTemplate){ - var empty_tpl = '

啥都木有

', - base_tpl = __inline('/tpl/panoListBase.html'), - item_temp = publicTemplate.postListItem; - var getData = function(callback){ - utils.fetch({ - type : 'GET' , - url : '/ajax/pano/list', - data : { - act : 'get_list' - }, - callback :function(err, data){ - if(!err && data && data.data && data.data.list) { - callback && callback(null, filterData(data.data.list)); - } else { - callback && callback(500); - } - } - }); - }; - function filterData(list){ - list.forEach(function (item) { - item.title = item.property.name; - item.desc = item.property.remark; - item.url = 'http://720yun.com/t/' + item.property.pid + '?from=bh-lay'; - item.thumb = 'http://thumb-qiniu.720static.com/@' + item.property.thumbUrl; - item.pv = item.pvCount; - item.like = item.likeCount; - }); - return list; - } - return function(global, param){ - var node = global.node; +import utils from "../Base.js"; +import juicer from "../juicer.js"; +import publicTemplate from "../publicTemplate.js"; - node.innerHTML = base_tpl; +var empty_tpl = '

啥都木有

', + base_tpl = require("html-loader!../../tpl/panoListBase.html"), + item_temp = publicTemplate.postListItem; - getData(function(err,list){ - var this_html; - if(err){ - this_html = empty_tpl; - }else{ - this_html = juicer(item_temp,{ - list : list - }); +var getData = function(callback){ + utils.fetch({ + type : 'GET' , + url : '/ajax/pano/list', + data : { + act : 'get_list' + }, + callback :function(err, data){ + if(!err && data && data.data && data.data.list) { + callback && callback(null, filterData(data.data.list)); + } else { + callback && callback(500); } - utils.query('.panoList',node).innerHTML = this_html; - }); - }; -}); + } + }); +}; +function filterData(list){ + list.forEach(function (item) { + item.title = item.property.name; + item.desc = item.property.remark; + item.url = 'http://720yun.com/t/' + item.property.pid + '?from=bh-lay'; + item.thumb = 'http://thumb-qiniu.720static.com/@' + item.property.thumbUrl; + item.pv = item.pvCount; + item.like = item.likeCount; + }); + return list; +} +export default function(global, param){ + var node = global.node; + + node.innerHTML = base_tpl; + + getData(function(err,list){ + var this_html; + if(err){ + this_html = empty_tpl; + }else{ + this_html = juicer(item_temp,{ + list : list + }); + } + utils.query('.panoList',node).innerHTML = this_html; + }); +}; diff --git a/frontEnd/single-page/js/page/photographyList.js b/frontEnd/single-page/js/page/photographyList.js index fa7022cc1..ea4741e5a 100644 --- a/frontEnd/single-page/js/page/photographyList.js +++ b/frontEnd/single-page/js/page/photographyList.js @@ -2,57 +2,55 @@ * labs list * */ -define([ - 'js/Base', - 'js/imageHosting', - 'js/juicer', - 'js/publicTemplate' -],function(utils ,imageHosting, juicer, publicTemplate){ - var empty_tpl = '

啥都木有

', - base_tpl = __inline('/tpl/photographyListBase.html'), - item_temp = publicTemplate.postListItem; - var getData = function(callback){ - utils.fetch({ - type : 'GET' , - url : '/ajax/photography/list', - data : { - act : 'get_list' - }, - callback :function(err, data){ - if(err || data.code == 500){ - callback && callback(500); - return; - } +import utils from "../Base.js"; +import juicer from "../juicer.js"; +import publicTemplate from "../publicTemplate.js"; - callback&&callback(null, filterData(data.post_list)); +var empty_tpl = '

啥都木有

', + base_tpl = require("html-loader!../../tpl/photographyListBase.html"), + item_temp = publicTemplate.postListItem; + +var getData = function(callback){ + utils.fetch({ + type : 'GET' , + url : '/ajax/photography/list', + data : { + act : 'get_list' + }, + callback :function(err, data){ + if(err || data.code == 500){ + callback && callback(500); + return; } - }); - }; - function filterData(list){ - list.forEach(function (item) { - item.url += '?from=bh-lay'; - item.thumb = (item.images && item.images.length) ? item.images[0].source.g : ''; - item.desc = item.excerpt; - item.like = item.favorites; - }); - return list; - } - return function(global, param){ - var node = global.node; - node.innerHTML = base_tpl; + callback&&callback(null, filterData(data.post_list)); + } + }); +}; +function filterData(list){ + list.forEach(function (item) { + item.url += '?from=bh-lay'; + item.thumb = (item.images && item.images.length) ? item.images[0].source.g : ''; + item.desc = item.excerpt; + item.like = item.favorites; + }); + return list; +} +export default function(global, param){ + var node = global.node; - getData(function(err,list){ - var this_html; - if(err){ - this_html = empty_tpl; - }else{ - this_html = juicer(item_temp,{ - list : list - }); - } - utils.query('.panoList',node).innerHTML = this_html; - }); - }; -}); + node.innerHTML = base_tpl; + + getData(function(err,list){ + var this_html; + if(err){ + this_html = empty_tpl; + }else{ + this_html = juicer(item_temp,{ + list : list + }); + } + utils.query('.panoList',node).innerHTML = this_html; + }); +}; \ No newline at end of file diff --git a/frontEnd/single-page/js/pagination.js b/frontEnd/single-page/js/pagination.js index 13ce8d07c..4c10b0de5 100644 --- a/frontEnd/single-page/js/pagination.js +++ b/frontEnd/single-page/js/pagination.js @@ -1,87 +1,84 @@ +import utils from "./Base.js"; /*** * 分页 页码 **/ -define([ - 'js/Base' -],function(utils){ - function render(){ - var txt = '
    '; - if(this.page_num < 2){ - return; - } - if (this.page_cur > 1) { - txt += '
  • 上一页
  • '; - }else{ - txt += '
  • 上一页
  • '; - } - var btn_num = 0; - var start_num = 0; - if(this.page_num > this.max_page_btn){ - start_num = this.page_cur - Math.floor(this.max_page_btn/2); - } +function render(){ + var txt = '
      '; + if(this.page_num < 2){ + return; + } + if (this.page_cur > 1) { + txt += '
    • 上一页
    • '; + }else{ + txt += '
    • 上一页
    • '; + } + var btn_num = 0; + var start_num = 0; + if(this.page_num > this.max_page_btn){ + start_num = this.page_cur - Math.floor(this.max_page_btn/2); + } - start_num = Math.max(start_num,1); - for(; start_num < this.page_num + 1; start_num++) { - if(start_num != this.page_cur){ - txt += '
    • ' + start_num + '
    • '; - }else{ - txt += '
    • '+ start_num +'
    • '; - } - btn_num++; - if(btn_num >= this.max_page_btn){ - break; - } - } - if (this.page_num - this.page_cur >= 1) { - txt += '
    • 下一页
    • '; + start_num = Math.max(start_num,1); + for(; start_num < this.page_num + 1; start_num++) { + if(start_num != this.page_cur){ + txt += '
    • ' + start_num + '
    • '; }else{ - txt += '
    • 下一页
    • '; + txt += '
    • '+ start_num +'
    • '; + } + btn_num++; + if(btn_num >= this.max_page_btn){ + break; } - txt += '
    '; - this.dom.innerHTML = txt; } - function pageList(dom,param){ - var param = param || {}; - var me = this; - this.list_count = param.list_count || 0; - this.page_cur = param.page_cur || 1; - this.page_list_num = param.page_list_num || 15; - this.page_num = Math.ceil(this.list_count / this.page_list_num); - this.max_page_btn = param.max_page_btn || 50; - this.jump = null; - this.dom = document.createElement('div'); + if (this.page_num - this.page_cur >= 1) { + txt += '
  • 下一页
  • '; + }else{ + txt += '
  • 下一页
  • '; + } + txt += '
'; + this.dom.innerHTML = txt; +} +function pageList(dom,param){ + var param = param || {}; + var me = this; + this.list_count = param.list_count || 0; + this.page_cur = param.page_cur || 1; + this.page_list_num = param.page_list_num || 15; + this.page_num = Math.ceil(this.list_count / this.page_list_num); + this.max_page_btn = param.max_page_btn || 50; + this.jump = null; + this.dom = document.createElement('div'); - utils.bind(this.dom,'click','a',function(e){ - var num, - page = this.getAttribute('data-page'); - switch (page) { - case 'next': - me.jumpTo(++me.page_cur); - break; - case 'prev': - me.jumpTo(--me.page_cur); - break; - default: - // 'jump': - num = parseInt(this.innerHTML); - me.page_cur = num - 1; - me.jumpTo(num); - } - e.preventDefault(); - }); - dom.innerHTML = ''; - dom.appendChild(this.dom); + utils.bind(this.dom,'click','a',function(e){ + var num, + page = this.getAttribute('data-page'); + switch (page) { + case 'next': + me.jumpTo(++me.page_cur); + break; + case 'prev': + me.jumpTo(--me.page_cur); + break; + default: + // 'jump': + num = parseInt(this.innerHTML); + me.page_cur = num - 1; + me.jumpTo(num); + } + e.preventDefault(); + }); + dom.innerHTML = ''; + dom.appendChild(this.dom); + render.call(this); +} +pageList.prototype = { + jumpTo : function(num){ + this.page_cur = num; render.call(this); + this.jump && this.jump(num); } - pageList.prototype = { - jumpTo : function(num){ - this.page_cur = num; - render.call(this); - this.jump && this.jump(num); - } - }; - return pageList; -}); +}; +export default pageList; diff --git a/frontEnd/single-page/js/publicTemplate.js b/frontEnd/single-page/js/publicTemplate.js index 2e60b952c..d1b3f19c9 100644 --- a/frontEnd/single-page/js/publicTemplate.js +++ b/frontEnd/single-page/js/publicTemplate.js @@ -2,10 +2,6 @@ * public template list * */ -define(function(){ - var postListItem = __inline('/tpl/postListItem.html'); +var postListItem = require("html-loader!../tpl/postListItem.html"); - return { - postListItem: postListItem - }; -}); +export default {postListItem}; diff --git a/frontEnd/single-page/js/routerHandle.js b/frontEnd/single-page/js/routerHandle.js index 441d49354..632699e87 100644 --- a/frontEnd/single-page/js/routerHandle.js +++ b/frontEnd/single-page/js/routerHandle.js @@ -1,144 +1,142 @@ -define([ - 'js/Base', - 'js/lofox', - 'js/page/index', - 'js/page/blogList', - 'js/page/blogDetail', - 'js/page/labsList', - 'js/page/panoList', - 'js/page/photographyList', - 'js/page/bless', - 'js/navigation' -],function(utils,Lofox,indexPage,blogListPage,blogDetailPage,labsListPage, panoListPage, photographyListPage, blessPage,navigation){ - 'use strict'; - //绑定路由 - var lofox = new Lofox(), - nodeContainer = utils.query('.app_container'), - nodeActivePage = null, - activePage = null; - /** - * 检测链接是否为提供给js使用的地址 - * 无地址、 javascript:: 、javascript:void(0)、# - **/ - function isHrefForScript(href){ - return (href.length == 0 || href.match(/^(javascript\s*\:|#)/)) ? true : false; - } - //显示单页dom - function getNewPage() { - var nodeNew = utils.createDom('

正在加载模块

'); - //移除老的page dom - if (nodeActivePage) { - var nodeOld = nodeActivePage; - nodeActivePage = null; - utils.addClass(nodeOld,'fadeOutRight'); +import utils from "./Base.js" +import navigation from './navigation.js' +import Lofox from './lofox.js' +import indexPage from './page/index.js' +import blogListPage from './page/blogList.js' +import blogDetailPage from './page/blogDetail.js' +import labsListPage from './page/labsList.js' +import panoListPage from './page/panoList.js' +import photographyListPage from './page/photographyList.js' +import blessPage from './page/bless.js' + +//绑定路由 +var lofox = new Lofox(), + nodeContainer = utils.query('.app_container'), + nodeActivePage = null, + activePage = null; + +/** + * 检测链接是否为提供给js使用的地址 + * 无地址、 javascript:: 、javascript:void(0)、# + **/ +function isHrefForScript(href){ + return (href.length == 0 || href.match(/^(javascript\s*\:|#)/)) ? true : false; +} +//显示单页dom +function getNewPage() { + var nodeNew = utils.createDom('

正在加载模块

'); + //移除老的page dom + if (nodeActivePage) { + var nodeOld = nodeActivePage; + nodeActivePage = null; + utils.addClass(nodeOld,'fadeOutRight'); + setTimeout(function () { + utils.remove(nodeOld); + utils.query('body').scrollTop = 0; + utils.addClass(nodeNew,'fadeInLeft page-active'); setTimeout(function () { - utils.remove(nodeOld); - utils.query('body').scrollTop = 0; - utils.addClass(nodeNew,'fadeInLeft page-active'); - setTimeout(function () { - utils.removeClass(nodeNew,'fadeInLeft'); - }, 500); + utils.removeClass(nodeNew,'fadeInLeft'); }, 500); - } else { - utils.addClass(nodeNew,'page-active'); - } - nodeContainer.appendChild(nodeNew); - return nodeActivePage = nodeNew; - } - function Page(){ - this.node = getNewPage(); + }, 500); + } else { + utils.addClass(nodeNew,'page-active'); } - Page.prototype = { - push: lofox.push.bind(lofox), - refresh: lofox.refresh.bind(lofox), - title: lofox.title.bind(lofox) + nodeContainer.appendChild(nodeNew); + return nodeActivePage = nodeNew; +} +function Page(){ + this.node = getNewPage(); +} +Page.prototype = { + push: lofox.push.bind(lofox), + refresh: lofox.refresh.bind(lofox), + title: lofox.title.bind(lofox) +}; + +export default function(){ + lofox.beforeTitleChange = function(title){ + return title + '_剧中人的个人空间 网页设计师博客 互动设计学习者'; }; + //视图刷新前,销毁上一个对象 + lofox.on('beforeRefresh',function(){ + if(activePage && activePage.destroy){ + activePage.destroy(); + } + activePage = null; + }) + // 监听视图刷新事件 + .on('refresh', function (pathData,search) { + //显示隐藏返回按钮 + }) + //首页 + .set('/', function () { + this.title('小剧客栈'); + navigation.setCur('/'); - return function(){ - lofox.beforeTitleChange = function(title){ - return title + '_剧中人的个人空间 网页设计师博客 互动设计学习者'; - }; - //视图刷新前,销毁上一个对象 - lofox.on('beforeRefresh',function(){ - if(activePage && activePage.destroy){ - activePage.destroy(); - } - activePage = null; - }) - // 监听视图刷新事件 - .on('refresh', function (pathData,search) { - //显示隐藏返回按钮 - }) - //首页 - .set('/', function () { - this.title('小剧客栈'); - navigation.setCur('/'); + activePage = new indexPage(new Page); + }) + // 博文列表 + .set('/blog', function (param, pathnde, search) { + this.title('我的博客'); + navigation.setCur('blog'); - activePage = new indexPage(new Page); - }) - // 博文列表 - .set('/blog', function (param, pathnde, search) { - this.title('我的博客'); - navigation.setCur('blog'); + activePage = new blogListPage(new Page, search); + }) + // 博客详细页 + .set('/blog/{id}', function (param) { + this.title('我的博客'); + navigation.setCur('blog'); + activePage = new blogDetailPage(new Page, param.id); + }) + //实验室列表页 + .set('/labs', function () { + this.title('实验室'); - activePage = new blogListPage(new Page, search); - }) - // 博客详细页 - .set('/blog/{id}', function (param) { - this.title('我的博客'); - navigation.setCur('blog'); - activePage = new blogDetailPage(new Page, param.id); - }) - //实验室列表页 - .set('/labs', function () { - this.title('实验室'); + navigation.setCur('labs'); + activePage = new labsListPage(new Page); + }) +//全景列表页 + .set('/720', function () { + this.title('小剧的全景作品'); navigation.setCur('labs'); - activePage = new labsListPage(new Page); + activePage = new panoListPage(new Page); }) - //全景列表页 - .set('/720', function () { - this.title('小剧的全景作品'); + //摄影作品 + .set('/photography', function () { + this.title('小剧的摄影作品'); - navigation.setCur('labs'); - activePage = new panoListPage(new Page); - }) - //摄影作品 - .set('/photography', function () { - this.title('小剧的摄影作品'); - - navigation.setCur('labs'); - activePage = new photographyListPage(new Page); - }) - // panoListPage - // 留言板 - .set('/bless', function () { - this.title('留言板'); - navigation.setCur('bless'); + navigation.setCur('labs'); + activePage = new photographyListPage(new Page); + }) + // panoListPage + // 留言板 + .set('/bless', function () { + this.title('留言板'); + navigation.setCur('bless'); - activePage = new blessPage(new Page); - }); + activePage = new blessPage(new Page); + }); - //全局控制 a 链接的打开方式 - utils.bind(utils.query('body'),'click','a',function(e){ - var url = this.getAttribute('href'); - //为JS脚本准备的链接 - if(isHrefForScript(url)){ - //阻止浏览器默认事件,处理因base设置,导致此类链接在火狐中新窗口打开问题,感谢 @紫心蕊 - e.preventDefault(); - }else if(lofox.isInRouter(url)){ - //路由中配置的地址 - setTimeout(function () { - lofox.push(url); - lofox.refresh(); - }); - e.preventDefault(); - } - // html base 已设置链接为新窗口打开,此处无需处理 - // else{ - // } - }); - }; -}); + //全局控制 a 链接的打开方式 + utils.bind(utils.query('body'),'click','a',function(e){ + var url = this.getAttribute('href'); + //为JS脚本准备的链接 + if(isHrefForScript(url)){ + //阻止浏览器默认事件,处理因base设置,导致此类链接在火狐中新窗口打开问题,感谢 @紫心蕊 + e.preventDefault(); + }else if(lofox.isInRouter(url)){ + //路由中配置的地址 + setTimeout(function () { + lofox.push(url); + lofox.refresh(); + }); + e.preventDefault(); + } + // html base 已设置链接为新窗口打开,此处无需处理 + // else{ + // } + }); +}; diff --git a/frontEnd/single-page/js/stick.js b/frontEnd/single-page/js/stick.js index 562e84e21..8abd85822 100644 --- a/frontEnd/single-page/js/stick.js +++ b/frontEnd/single-page/js/stick.js @@ -6,240 +6,231 @@ * @modified 2015-04-27 15:09 * */ -(function(global,doc,factory){ - var Stick = factory(global,doc); - //exports for commonJS - global.Stick = global.Stick || Stick; - global.define && define(function(require,exports){ - return Stick; - }); -})(window,document,function(window,document){ - /** - * 检测是否为数字 - * 兼容字符类数字 '23' - */ - function isNum(ipt){ - return (ipt !== '') && (ipt == +ipt) ? true : false; - } - /** - * 遍历数组或对象 - * - */ - function each(arr,fn){ - //检测输入的值 - if(typeof(arr) != 'object' || typeof(fn) != 'function'){ - return; - } - var Length = arr.length; - if( isNum(Length) ){ - for(var i=0;i1 && End(); - },2); - img.src=src; +} +/** + * 判断dom是否拥有某个class + */ +function hasClass(elem,classSingle){ + return (elem.className && elem.className.match(new RegExp('(\\s|^)' + classSingle + '(\\s|$)'))) ? true : false; +} +function addClass(elem, cls) { + if (!hasClass(elem, cls)) elem.className += " " + cls; +} +function removeClass(elem, cls) { + if (hasClass(elem, cls)) { + var reg = new RegExp('(\\s+|^)' + cls + '(\\s+|$)'); + elem.className.replace(reg, ' '); } - - /** - * 获取浏览器滚动尺寸 - * 为了兼容firefox - */ - function getScrollTop(){ - return Math.max(document.documentElement.scrollTop, document.body.scrollTop); +} +//创建dom +function createDom(html){ + var a = document.createElement('div'); + a.innerHTML = html; + return a.childNodes[0]; +} +/** + * 事件绑定 + * elem:节点 + * type:事件类型 + * handler:回调 + */ +var bind = window.addEventListener ? function(elem, type, handler) { + // 标准浏览器 + elem.addEventListener(type, handler, false); +} : function(elem, type, handler) { + // IE浏览器 + elem.attachEvent("on" + type, handler); +}; +/** + * 事件解除 + * elem:节点 + * type:事件类型 + * handler:回调 + */ +var unbind = window.removeEventListener ? function(elem, type, handler) { + // 标准浏览器 + elem.removeEventListener(type, handler, false); +} : function(elem, type, handler) { + // IE浏览器 + elem.detachEvent("on" + type, handler); +}; +/** + * 设置css + * 精简后的方法,没处理数字型非像素的属性,如line-height、z-index + * + **/ +function setCss(elem,cssObj){ + each(cssObj,function(prop,value){ + if (isNum(value)) value += "px"; + elem.style[prop] = value; + }); +} +//图片预加载 +function loadImg(src,callback){ + if(!src){ + callback && callback(); + return; } - function fixItemPosition(item){ - if(this.column_num > 1){ - var column_index, - top = 0; - if(this.list.length < this.column_num){ - //第一排item - column_index = this.list.length; - this.last_row.push(item.clientHeight); - }else{ - //其余 - top = Math.min.apply(null,this.last_row); - column_index = this.last_row.indexOf(top); - top = top + this.column_gap; - } - setCss(item,{ - position : 'absolute', - top: top, - left: Math.round(column_index * (this.column_width + this.column_gap)), - width: Math.round(this.column_width) - }); - addClass(item,'fadeInLeft'); - setTimeout(function(){ - removeClass(item,'fadeInLeft'); - },1000); - this.last_row[column_index] = top + item.clientHeight; - setCss(this.container,{ - height: Math.max.apply(null,this.last_row) + this.column_gap - }); + var img = new Image(); + function End(){ + clearInterval(timer); + callback && callback(); + callback = null; + } + img.onerror = img.onload = End; + var timer = setInterval(function(){ + img.width>1 && End(); + },2); + img.src=src; +} + +/** + * 获取浏览器滚动尺寸 + * 为了兼容firefox + */ +function getScrollTop(){ + return Math.max(document.documentElement.scrollTop, document.body.scrollTop); +} +function fixItemPosition(item){ + if(this.column_num > 1){ + var column_index, + top = 0; + if(this.list.length < this.column_num){ + //第一排item + column_index = this.list.length; + this.last_row.push(item.clientHeight); }else{ - setCss(item,{ - position : 'static', - width: 'auto' - }); + //其余 + top = Math.min.apply(null,this.last_row); + column_index = this.last_row.indexOf(top); + top = top + this.column_gap; } - this.list.push(item); + setCss(item,{ + position : 'absolute', + top: top, + left: Math.round(column_index * (this.column_width + this.column_gap)), + width: Math.round(this.column_width) + }); + addClass(item,'fadeInLeft'); + setTimeout(function(){ + removeClass(item,'fadeInLeft'); + },1000); + this.last_row[column_index] = top + item.clientHeight; + setCss(this.container,{ + height: Math.max.apply(null,this.last_row) + this.column_gap + }); + }else{ + setCss(item,{ + position : 'static', + width: 'auto' + }); } - - /** - * Stick - */ - function Stick(param){ - var param = param || {}, - me = this; - this.container = param.container; - this.onNeedMore = param.onNeedMore || null; - this.column_gap = param.column_gap ? parseInt(param.column_gap) : 20; - this.column_width_base = param.column_width ? parseInt(param.column_width) : 300; - this.column_width; - this.column_num; - this.load_spacing = param.load_spacing || 300; + this.list.push(item); + } + +/** + * Stick + */ +function Stick(param){ + var param = param || {}, + me = this; + this.container = param.container; + this.onNeedMore = param.onNeedMore || null; + this.column_gap = param.column_gap ? parseInt(param.column_gap) : 20; + this.column_width_base = param.column_width ? parseInt(param.column_width) : 300; + this.column_width; + this.column_num; + this.load_spacing = param.load_spacing || 300; + + this.list = []; + this.last_row = []; + var scrollDelay, + resizeDelay, + last_time = 0; + this.scrollListener = function(){ + var now = new Date().getTime(); + if(now - last_time > 500 && (getScrollTop() + window.innerHeight >= document.body.scrollHeight - me.load_spacing)){ + me.onNeedMore && me.onNeedMore(); + last_time = now; + } + }; + this.resizeListener = function(){ + clearTimeout(resizeDelay); + resizeDelay = setTimeout(function(){ + me.refresh(); + },500); + }; + bind(document,'scroll',this.scrollListener); + bind(window,'resize',this.resizeListener); + this.container.innerHTML = ''; + this.buildLayout(); +} +Stick.prototype = { + buildLayout : function(){ + var width = this.container.clientWidth; this.list = []; this.last_row = []; + this.column_num = Math.floor((width+this.column_gap)/(this.column_width_base+this.column_gap)); + this.column_width = (width + this.column_gap)/this.column_num - this.column_gap; + }, + refresh: function(item){ + var me = this; + var oldList = me.list; + me.buildLayout(); - var scrollDelay, - resizeDelay, - last_time = 0; - this.scrollListener = function(){ - var now = new Date().getTime(); - if(now - last_time > 500 && (getScrollTop() + window.innerHeight >= document.body.scrollHeight - me.load_spacing)){ - me.onNeedMore && me.onNeedMore(); - last_time = now; - } - }; - this.resizeListener = function(){ - clearTimeout(resizeDelay); - resizeDelay = setTimeout(function(){ - me.refresh(); - },500); - }; - bind(document,'scroll',this.scrollListener); - bind(window,'resize',this.resizeListener); - this.container.innerHTML = ''; - this.buildLayout(); - } - Stick.prototype = { - buildLayout : function(){ - var width = this.container.clientWidth; - this.list = []; - this.last_row = []; - this.column_num = Math.floor((width+this.column_gap)/(this.column_width_base+this.column_gap)); - this.column_width = (width + this.column_gap)/this.column_num - this.column_gap; - }, - refresh: function(item){ - var me = this; - var oldList = me.list; - me.buildLayout(); - - if(me.column_num == 1){ - setCss(this.container,{ - height: 'auto' - }); - } - each(oldList,function(i,item){ - fixItemPosition.call(me,item); + if(me.column_num == 1){ + setCss(this.container,{ + height: 'auto' }); - }, - addItem: function(item,cover){ - var me = this; - if(typeof(item) == 'string'){ - item = createDom(item); - } - loadImg(cover,function(){ - me.container.appendChild(item); - fixItemPosition.call(me,item); - }); - }, - addList: function(list){ - //尚未实现 - }, - destroy: function(){ - unbind(document,'scroll',this.scrollListener); - unbind(window,'resize',this.resizeListener); } - }; - return Stick; -}); \ No newline at end of file + each(oldList,function(i,item){ + fixItemPosition.call(me,item); + }); + }, + addItem: function(item,cover){ + var me = this; + if(typeof(item) == 'string'){ + item = createDom(item); + } + loadImg(cover,function(){ + me.container.appendChild(item); + fixItemPosition.call(me,item); + }); + }, + addList: function(list){ + //尚未实现 + }, + destroy: function(){ + unbind(document,'scroll',this.scrollListener); + unbind(window,'resize',this.resizeListener); + } +}; +export default Stick; \ No newline at end of file diff --git a/frontEnd/single-page/js/tie.js b/frontEnd/single-page/js/tie.js index 92984ee3a..52067e683 100644 --- a/frontEnd/single-page/js/tie.js +++ b/frontEnd/single-page/js/tie.js @@ -10,237 +10,228 @@ fixed_top: 20 //悬浮时,距顶部的距离 }); * - */ +*/ -(function(global,doc,factory_fn){ - global.util = global.util || {}; - global.util.tie = factory_fn(global,doc); +var private_body = document.body || document.getElementsByTagName("body")[0], + docDom = document.compatMode == "BackCompat" ? private_body : document.documentElement; - global.define && define(function(){ - return global.util.tie; - }); -})(window,document,function(window,document){ - var private_body = document.body || document.getElementsByTagName("body")[0], - docDom = document.compatMode == "BackCompat" ? private_body : document.documentElement; +function doc_scrollTop(){ + return docDom.scrollTop || private_body.scrollTop; +} +/** + * 检测是否为数字 + * 兼容字符类数字 '23' + **/ +function isNum(ipt){ + return (ipt !== '') && (ipt == +ipt) ? true : false; +} - function doc_scrollTop(){ - return docDom.scrollTop || private_body.scrollTop; - } - /** - * 检测是否为数字 - * 兼容字符类数字 '23' - **/ - function isNum(ipt){ - return (ipt !== '') && (ipt == +ipt) ? true : false; +/** + * 遍历数组或对象 + * +**/ +function each(arr,fn){ + //检测输入的值 + if(typeof(arr) != 'object' || typeof(fn) != 'function'){ + return; } - - /** - * 遍历数组或对象 - * - **/ - function each(arr,fn){ - //检测输入的值 - if(typeof(arr) != 'object' || typeof(fn) != 'function'){ - return; + var Length = arr.length; + if( isNum(Length) ){ + for(var i=0;i= me.maxScrollTop){ - me.state = 'max'; - top = scopeClient.top + scopeClient.height - getClient(me.ghostDom).top - getClient(me.dom).height; - position = 'relative'; - }else{ - me.state = 'mid'; - top = me.fix_top; - position = 'fixed'; - } +function resetPosition(){ + var me = this, + scopeClient = getClient(me.scopeDom), + scrollTop = doc_scrollTop(), + state_before = me.state, + top,position; - setCss(me.dom, { - top: top, - position: position - }); - - if(state_before != me.state){ - me.onPositionChange && me.onPositionChange.call(me,me.state); - me.updateGhostDom(); - } - } - function Tie(param){ - if( !(this instanceof Tie)){ - return new Tie(param); - } - var me = this, - scroll_delay; - param = param || {}; - //悬浮时,距顶部的距离 - me.fix_top = param.fixed_top || 0; - me.minScrollTop = null; - me.maxScrollTop = null; - - //悬浮dom - me.dom = param.dom; - me.scrollDom = param.scrollDom || window; - //从属dom - me.scopeDom = param.scopeDom; - //占位dom - me.ghostDom = document.createElement('div'); - - //将占位dom放置在悬浮dom前 - me.dom.parentNode.insertBefore(me.ghostDom,me.dom); - //再将悬浮dom移入占位dom内 - me.ghostDom.appendChild(me.dom); - - //当定位方式发生变化时 - me.onPositionChange = param.onPositionChange || null; + me.minScrollTop = getClient(me.ghostDom).top - me.fix_top; + me.maxScrollTop = scopeClient.top + scopeClient.height - getClient(me.dom).height - me.fix_top; + if(scrollTop <= me.minScrollTop){ me.state = 'min'; - me._scroll_resize_listener = resetPosition.bind(this); + top = 0; + position = 'relative'; + }else if(scrollTop >= me.maxScrollTop){ + me.state = 'max'; + top = scopeClient.top + scopeClient.height - getClient(me.ghostDom).top - getClient(me.dom).height; + position = 'relative'; + }else{ + me.state = 'mid'; + top = me.fix_top; + position = 'fixed'; + } - me.refresh(); + setCss(me.dom, { + top: top, + position: position + }); - if(getStyle(me.scopeDom,'position') == 'static'){ - me.scopeDom.style.position = 'relative'; - } - bindHandler(me.scrollDom,'scroll',me._scroll_resize_listener); - bindHandler(window,'resize',me._scroll_resize_listener); + if(state_before != me.state){ + me.onPositionChange && me.onPositionChange.call(me,me.state); + me.updateGhostDom(); } - Tie.prototype = { - refresh: resetPosition, - updateGhostDom: function(){ - this.ghostDom.style.height = getClient(this.dom).height + 'px'; - }, - destroy: function(){ - removeHandler(this.scrollDom,'scroll',this._scroll_resize_listener); - removeHandler(window,'resize',this._scroll_resize_listener); - setCss(this.dom,{ - position: 'relative', - top: getClient(this.dom).top - getClient(this.ghostDom).top - }); - } - }; - return Tie; -}); +} +function Tie(param){ + if( !(this instanceof Tie)){ + return new Tie(param); + } + var me = this, + scroll_delay; + param = param || {}; + //悬浮时,距顶部的距离 + me.fix_top = param.fixed_top || 0; + me.minScrollTop = null; + me.maxScrollTop = null; + + //悬浮dom + me.dom = param.dom; + me.scrollDom = param.scrollDom || window; + //从属dom + me.scopeDom = param.scopeDom; + //占位dom + me.ghostDom = document.createElement('div'); + + //将占位dom放置在悬浮dom前 + me.dom.parentNode.insertBefore(me.ghostDom,me.dom); + //再将悬浮dom移入占位dom内 + me.ghostDom.appendChild(me.dom); + + //当定位方式发生变化时 + me.onPositionChange = param.onPositionChange || null; + + me.state = 'min'; + me._scroll_resize_listener = resetPosition.bind(this); + + me.refresh(); + + if(getStyle(me.scopeDom,'position') == 'static'){ + me.scopeDom.style.position = 'relative'; + } + bindHandler(me.scrollDom,'scroll',me._scroll_resize_listener); + bindHandler(window,'resize',me._scroll_resize_listener); +} +Tie.prototype = { + refresh: resetPosition, + updateGhostDom: function(){ + this.ghostDom.style.height = getClient(this.dom).height + 'px'; + }, + destroy: function(){ + removeHandler(this.scrollDom,'scroll',this._scroll_resize_listener); + removeHandler(window,'resize',this._scroll_resize_listener); + setCss(this.dom,{ + position: 'relative', + top: getClient(this.dom).top - getClient(this.ghostDom).top + }); + } +}; +export default Tie; diff --git a/frontEnd/single-page/js/user.js b/frontEnd/single-page/js/user.js index bdc9a0ce5..abb10217f 100644 --- a/frontEnd/single-page/js/user.js +++ b/frontEnd/single-page/js/user.js @@ -7,76 +7,73 @@ * info:用户信息 * type:用户类型(online、local) */ +import utils from "./Base.js"; +import hex_md5 from "./md5.js"; +//存储当前用户的信息 +let userInfo = null, + //存储程序需要用到的登录回调 + LoginCallbacks = []; -define([ - 'exports', - 'js/Base', - 'js/md5' -],function(exports,utils,hex_md5){ - //存储当前用户的信息 - var userInfo = null, - //存储程序需要用到的登录回调 - LoginCallbacks = []; +//相应登录的回调函数 +window.appLoginCallback = function(data){ + for(let i=0,total=LoginCallbacks.length;ithis.depCount&&!this.defined){if(G(c)){if(this.events.error&&this.map.isDefine||h.onError!==da)try{f=i.execCb(b,c,e,f)}catch(d){a=d}else f=i.execCb(b,c,e,f);this.map.isDefine&&void 0===f&&((e=this.module)?f=e.exports:this.usingExports&& -(f=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",w(this.error=a)}else f=c;this.exports=f;if(this.map.isDefine&&!this.ignore&&(p[b]=f,h.onResourceLoad))h.onResourceLoad(i,this.map,this.depMaps);y(b);this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else this.fetch()}},callPlugin:function(){var a= -this.map,b=a.id,d=m(a.prefix);this.depMaps.push(d);r(d,"defined",t(this,function(f){var d,g;g=j(ba,this.map.id);var J=this.map.name,u=this.map.parentMap?this.map.parentMap.name:null,p=i.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(f.normalize&&(J=f.normalize(J,function(a){return c(a,u,!0)})||""),f=m(a.prefix+"!"+J,this.map.parentMap),r(f,"defined",t(this,function(a){this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),g=j(k,f.id)){this.depMaps.push(f); -if(this.events.error)g.on("error",t(this,function(a){this.emit("error",a)}));g.enable()}}else g?(this.map.url=i.nameToUrl(g),this.load()):(d=t(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),d.error=t(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];B(k,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&y(a.map.id)});w(a)}),d.fromText=t(this,function(f,c){var g=a.name,J=m(g),k=O;c&&(f=c);k&&(O=!1);q(J);s(l.config,b)&&(l.config[g]=l.config[b]);try{h.exec(f)}catch(j){return w(C("fromtexteval", -"fromText eval for "+b+" failed: "+j,j,[b]))}k&&(O=!0);this.depMaps.push(J);i.completeLoad(g);p([g],d)}),f.load(a.name,p,d,l))}));i.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){W[this.map.id]=this;this.enabling=this.enabled=!0;v(this.depMaps,t(this,function(a,b){var c,f;if("string"===typeof a){a=m(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=j(N,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;r(a,"defined",t(this,function(a){this.defineDep(b, -a);this.check()}));this.errback&&r(a,"error",t(this,this.errback))}c=a.id;f=k[c];!s(N,c)&&(f&&!f.enabled)&&i.enable(a,this)}));B(this.pluginMaps,t(this,function(a){var b=j(k,a.id);b&&!b.enabled&&i.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){v(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};i={config:l,contextName:b,registry:k,defined:p,urlFetched:T,defQueue:A,Module:$,makeModuleMap:m, -nextTick:h.nextTick,onError:w,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=l.shim,c={paths:!0,bundles:!0,config:!0,map:!0};B(a,function(a,b){c[b]?(l[b]||(l[b]={}),V(l[b],a,!0,!0)):l[b]=a});a.bundles&&B(a.bundles,function(a,b){v(a,function(a){a!==b&&(ba[a]=b)})});a.shim&&(B(a.shim,function(a,c){H(a)&&(a={deps:a});if((a.exports||a.init)&&!a.exportsFn)a.exportsFn=i.makeShimExports(a);b[c]=a}),l.shim=b);a.packages&&v(a.packages,function(a){var b, -a="string"===typeof a?{name:a}:a;b=a.name;a.location&&(l.paths[b]=a.location);l.pkgs[b]=a.name+"/"+(a.main||"main").replace(ja,"").replace(R,"")});B(k,function(a,b){!a.inited&&!a.map.unnormalized&&(a.map=m(b))});if(a.deps||a.callback)i.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(ca,arguments));return b||a.exports&&ea(a.exports)}},makeRequire:function(a,e){function g(f,c,d){var j,l;e.enableBuildCallback&&(c&&G(c))&&(c.__requireJsBuild= -!0);if("string"===typeof f){if(G(c))return w(C("requireargs","Invalid require call"),d);if(a&&s(N,f))return N[f](k[a.id]);if(h.get)return h.get(i,f,a,g);j=m(f,a,!1,!0);j=j.id;return!s(p,j)?w(C("notloaded",'Module name "'+j+'" has not been loaded yet for context: '+b+(a?"":". Use require([])"))):p[j]}L();i.nextTick(function(){L();l=q(m(null,a));l.skipMap=e.skipMap;l.init(f,c,d,{enabled:!0});D()});return g}e=e||{};V(g,{isBrowser:z,toUrl:function(b){var e,d=b.lastIndexOf("."),g=b.split("/")[0];if(-1!== -d&&(!("."===g||".."===g)||1g.attachEvent.toString().indexOf("[native code"))&&!Z?(O=!0,g.attachEvent("onreadystatechange",b.onScriptLoad)): -(g.addEventListener("load",b.onScriptLoad,!1),g.addEventListener("error",b.onScriptError,!1)),g.src=d,L=g,D?y.insertBefore(g,D):y.appendChild(g),L=null,g;if(fa)try{importScripts(d),b.completeLoad(c)}catch(j){b.onError(C("importscripts","importScripts failed for "+c+" at "+d,j,[c]))}};z&&!r.skipDataMain&&U(document.getElementsByTagName("script"),function(b){y||(y=b.parentNode);if(K=b.getAttribute("data-main"))return q=K,r.baseUrl||(E=q.split("/"),q=E.pop(),Q=E.length?E.join("/")+"/":"./",r.baseUrl= -Q),q=q.replace(R,""),h.jsExtRegExp.test(q)&&(q=K),r.deps=r.deps?r.deps.concat(q):[q],!0});define=function(b,c,d){var g,h;"string"!==typeof b&&(d=c,c=b,b=null);H(c)||(d=c,c=null);!c&&G(d)&&(c=[],d.length&&(d.toString().replace(la,"").replace(ma,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));if(O){if(!(g=L))P&&"interactive"===P.readyState||U(document.getElementsByTagName("script"),function(b){if("interactive"===b.readyState)return P=b}),g=P;g&&(b|| -(b=g.getAttribute("data-requiremodule")),h=F[g.getAttribute("data-requirecontext")])}(h?h.defQueue:S).push([b,c,d])};define.amd={jQuery:!0};h.exec=function(b){return eval(b)};h(r)}})(this); diff --git a/frontEnd/single-page/tpl/comments/sendBox.html b/frontEnd/single-page/tpl/comments/sendBox.html index 00b6ae709..dc7061b99 100644 --- a/frontEnd/single-page/tpl/comments/sendBox.html +++ b/frontEnd/single-page/tpl/comments/sendBox.html @@ -1,6 +1,6 @@
diff --git a/frontEnd/single-page/tpl/emoji.html b/frontEnd/single-page/tpl/emoji.html deleted file mode 100644 index 2cac1ee1e..000000000 --- a/frontEnd/single-page/tpl/emoji.html +++ /dev/null @@ -1 +0,0 @@ --1 thumbsdown 1 thumbsup 8ball 100 1234 a ab abc abcd accept aerial_tramway airplane alarm_clock alien ambulance anchor angel anger angry anguished ant apple aquarius aries arrow_backward arrow_double_down arrow_double_up arrow_down_small arrow_down arrow_forward arrow_heading_down arrow_heading_up arrow_left arrow_lower_left arrow_lower_right arrow_right_hook arrow_right arrow_up_down arrow_up_small arrow_up arrow_upper_left arrow_upper_right arrows_clockwise arrows_counterclockwise art articulated_lorry astonished athletic_shoe atm b baby_bottle baby_chick baby_symbol baby back baggage_claim balloon ballot_box_with_check bamboo banana bangbang bank bar_chart barber baseball basketball bath bathtub battery bear honeybee bee beer beers beetle beginner bell bento bicyclist bike bikini bird birthday black_circle black_joker black_large_square black_medium_small_square black_medium_square black_nib black_small_square black_square_button blossom blowfish blue_book blue_car blue_heart blush boar sailboat boat bomb book open_book bookmark_tabs bookmark books boom collision boot bouquet bow bowling bowtie boy bread bride_with_veil bridge_at_night briefcase broken_heart bug bulb bullettrain_front bullettrain_side bus busstop bust_in_silhouette busts_in_silhouette cactus cake calendar calling camel camera cancer candy capital_abcd capricorn red_car car card_index carousel_horse cat cat2 cd chart_with_downwards_trend chart_with_upwards_trend chart checkered_flag cherries cherry_blossom chestnut chicken children_crossing chocolate_bar christmas_tree church cinema circus_tent city_sunrise city_sunset cl clap clapper clipboard clock1 clock2 clock3 clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230 closed_book closed_lock_with_key closed_umbrella cloud clubs cn cocktail coffee cold_sweat computer confetti_ball confounded confused congratulations construction_worker construction convenience_store cookie cool cop copyright corn couple_with_heart couple couplekiss cow cow2 credit_card crescent_moon crocodile crossed_flags crown cry crying_cat_face crystal_ball cupid curly_loop currency_exchange curry custard customs cyclone dancer dancers dango dart dash date de deciduous_tree department_store diamond_shape_with_a_dot_inside diamonds disappointed_relieved disappointed dizzy_face dizzy do_not_litter dog dog2 dollar dolls dolphin door doughnut dragon_face dragon dress dromedary_camel droplet dvd e-mail ear_of_rice ear earth_africa earth_americas earth_asia egg eggplant eight_pointed_black_star eight_spoked_asterisk eight electric_plug elephant envelope email end envelope_with_arrow es euro european_castle european_post_office evergreen_tree exclamation heavy_exclamation_mark expressionless eyeglasses eyes punch facepunch factory fallen_leaf family fast_forward fax fearful feelsgood paw_prints feet ferris_wheel file_folder finnadie fire_engine fire fireworks first_quarter_moon_with_face first_quarter_moon fish_cake fish fishing_pole_and_fish fist five flags flashlight floppy_disk flower_playing_cards flushed foggy football footprints fork_and_knife fountain four_leaf_clover four fr free fried_shrimp fries frog frowning fuelpump full_moon_with_face full_moon game_die gb uk gem gemini ghost gift_heart gift girl globe_with_meridians goat goberserk godmode golf grapes green_apple green_book green_heart grey_exclamation grey_question grimacing grin grinning guardsman guitar gun haircut hamburger hammer hamster hand raised_hand handbag poop hankey shit hash hatched_chick hatching_chick headphones hear_no_evil heart_decoration heart_eyes_cat heart_eyes heart heartbeat heartpulse hearts heavy_check_mark heavy_division_sign heavy_dollar_sign heavy_minus_sign heavy_multiplication_x heavy_plus_sign helicopter herb hibiscus high_brightness high_heel hocho honey_pot horse_racing horse hospital hotel hotsprings hourglass_flowing_sand hourglass house_with_garden house hurtrealbad hushed ice_cream icecream id ideograph_advantage imp inbox_tray incoming_envelope information_desk_person information_source innocent interrobang iphone it lantern izakaya_lantern jack_o_lantern japan japanese_castle japanese_goblin japanese_ogre jeans joy_cat joy jp key keycap_ten kimono kiss kissing_cat kissing_closed_eyes kissing_heart kissing_smiling_eyes kissing koala koko kr large_blue_circle large_blue_diamond large_orange_diamond last_quarter_moon_with_face last_quarter_moon satisfied laughing leaves ledger left_luggage left_right_arrow leftwards_arrow_with_hook lemon leo leopard libra light_rail link lips lipstick lock_with_ink_pen lock lollipop loop loudspeaker love_hotel love_letter low_brightness m mag_right mag mahjong mailbox_closed mailbox_with_mail mailbox_with_no_mail mailbox man_with_gua_pi_mao man_with_turban man mans_shoe shoe maple_leaf mask massage meat_on_bone mega melon memo pencil mens metal metro microphone microscope milky_way minibus minidisc mobile_phone_off money_with_wings moneybag monkey_face monkey monorail moon waxing_gibbous_moon mortar_board mount_fuji mountain_bicyclist mountain_cableway mountain_railway mouse mouse2 movie_camera moyai muscle mushroom musical_keyboard musical_note musical_score mute nail_care name_badge neckbeard necktie negative_squared_cross_mark neutral_face new_moon_with_face new_moon new newspaper ng nine no_bell no_bicycles no_entry_sign no_entry no_good no_mobile_phones no_mouth no_pedestrians no_smoking non-potable_water nose notebook_with_decorative_cover notebook notes nut_and_bolt o o2 ocean octocat octopus oden office ok_hand ok_woman ok older_man older_woman on oncoming_automobile oncoming_bus oncoming_police_car oncoming_taxi one open_file_folder open_hands open_mouth ophiuchus orange_book outbox_tray ox package page_facing_up page_with_curl pager palm_tree panda_face paperclip parking part_alternation_mark partly_sunny passport_control peach pear pencil2 penguin pensive performing_arts persevere person_frowning person_with_blond_hair person_with_pouting_face telephone phone pig_nose pig pig2 pill pineapple pisces pizza point_down point_left point_right point_up_2 point_up police_car poodle post_office postal_horn postbox potable_water pouch poultry_leg pound pouting_cat pray princess purple_heart purse pushpin put_litter_in_its_place question rabbit rabbit2 racehorse radio_button radio rage rage1 rage2 rage3 rage4 railway_car train rainbow raised_hands raising_hand ram ramen rat recycle red_circle registered relaxed relieved repeat_one repeat restroom revolving_hearts rewind ribbon rice_ball rice_cracker rice_scene rice ring rocket roller_coaster rooster rose rotating_light round_pushpin rowboat ru rugby_football runner running running_shirt_with_sash sa sagittarius sake sandal santa satellite saxophone school_satchel school scissors scorpius scream_cat scream scroll seat secret see_no_evil seedling seven shaved_ice sheep shell ship squirrel shipit tshirt shirt shower signal_strength six_pointed_star six ski skull sleeping sleepy slot_machine small_blue_diamond small_orange_diamond small_red_triangle_down small_red_triangle smile_cat smile smiley_cat smiley smiling_imp smirk_cat smirk smoking snail snake snowboarder snowflake snowman sob soccer soon sos sound space_invader spades spaghetti sparkle sparkler sparkles sparkling_heart speak_no_evil speaker speech_balloon speedboat star star2 stars station statue_of_liberty steam_locomotive stew straight_ruler strawberry stuck_out_tongue_closed_eyes stuck_out_tongue_winking_eye stuck_out_tongue sun_with_face sunflower sunglasses sunny sunrise_over_mountains sunrise surfer sushi suspect suspension_railway sweat_drops sweat_smile sweat sweet_potato swimmer symbols syringe tada tanabata_tree tangerine taurus taxi tea telephone_receiver telescope tennis tent thought_balloon three ticket tiger tiger2 tired_face tm toilet tokyo_tower tomato tongue top tophat tractor traffic_light train2 tram triangular_flag_on_post triangular_ruler trident triumph trolleybus trollface trophy tropical_drink tropical_fish truck trumpet tulip turtle tv twisted_rightwards_arrows two_hearts two_men_holding_hands two_women_holding_hands two u6e80 u7a7a u55b6 u5272 u5408 u6307 u6708 u6709 u7121 u7533 u7981 umbrella unamused underage unlock up us v vertical_traffic_light vhs vibration_mode video_camera video_game violin virgo volcano vs walking waning_crescent_moon waning_gibbous_moon warning watch water_buffalo watermelon wave wavy_dash waxing_crescent_moon wc weary wedding whale whale2 wheelchair white_check_mark white_circle white_flower white_large_square white_medium_small_square white_medium_square white_small_square white_square_button wind_chime wine_glass wink wolf woman womans_clothes womans_hat womens worried wrench x yellow_heart yen yum zap zero zzz fu \ No newline at end of file diff --git a/frontEnd/single-page/tpl/github.html b/frontEnd/single-page/tpl/github.html index 5d380e5b7..6ba03fc73 100644 --- a/frontEnd/single-page/tpl/github.html +++ b/frontEnd/single-page/tpl/github.html @@ -1,26 +1,26 @@
-
- -
- -
-
-
-

剧中人在Github

-

Follow me

-
- \ No newline at end of file diff --git a/frontEnd/single-page/webpack.config.js b/frontEnd/single-page/webpack.config.js new file mode 100644 index 000000000..756c00a28 --- /dev/null +++ b/frontEnd/single-page/webpack.config.js @@ -0,0 +1,79 @@ +const path = require('path'); +//定义了一些文件夹的路径 +const ROOT_PATH = path.resolve(__dirname); +const BUILD_PATH = path.resolve(ROOT_PATH, '../../static/build/single-page/'); +const HTML_PATH = path.resolve(ROOT_PATH, '../../sys/views/single-page/index.html'); +const GITHUB_HTML_PATH = path.resolve(ROOT_PATH, '../../sys/component/single-page/github.html'); + +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const ExtractTextPlugin = require("extract-text-webpack-plugin"); +const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); + +const isProduction = process.env.NODE_ENV === 'production'; +const devPublicPath = 'http://127.0.0.1:8088/build/single-page/'; +const prodPublicPath = '//dn-lay.qbox.me/build/single-page/'; +const publicPath = isProduction ? prodPublicPath : devPublicPath; + +const config = { + entry: { + app: path.resolve(ROOT_PATH, 'app.js') + }, + output: { + path: BUILD_PATH, + filename: '[name].[hash:8].js', + publicPath: publicPath + }, + module: { + rules: [ + { + test: /\.(css|less)$/, + use: ExtractTextPlugin.extract({ + fallback: "style-loader", + use: [ + { + loader: 'css-loader', + options: { + importLoaders: 1, + minimize: isProduction + } + }, + 'less-loader' + ] + }) + }, + { + test: /\.js$/, + loader: 'babel-loader?presets[]=es2015,presets[]=stage-0' + }, + { + test: /\.(eot|woff|svg|ttf|woff2)(\?|$)/, + loader: 'file-loader?name=font/[name].[hash:8].[ext]' + }, + { + test: /\.(png|jpe?g|gif)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: 'img/[name].[hash:8].[ext]' + } + } + ] + }, + plugins: [ + new HtmlWebpackPlugin({ + filename: HTML_PATH, + template: './index.html', + inject: true + }), + new HtmlWebpackPlugin({ + filename: GITHUB_HTML_PATH, + template: './tpl/github.html', + inject: false + }), + new ExtractTextPlugin("[name].[hash:8].css"), + new UglifyJSPlugin({ + compress: isProduction + }) + ] +}; +module.exports = config; \ No newline at end of file diff --git a/frontEnd/single-page/yarn.lock b/frontEnd/single-page/yarn.lock new file mode 100644 index 000000000..112197e5e --- /dev/null +++ b/frontEnd/single-page/yarn.lock @@ -0,0 +1,3766 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +acorn-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + dependencies: + acorn "^4.0.3" + +acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +acorn@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" + +ajv-keywords@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^5.0.0, ajv@^5.1.5: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + json-schema-traverse "^0.3.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +aproba@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asn1.js@^4.0.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^2.1.2, async@^2.4.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" + dependencies: + lodash "^4.14.0" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autoprefixer-loader@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/autoprefixer-loader/-/autoprefixer-loader-3.2.0.tgz#39a7b6646a8269865073d958c97f486152c2c84a" + dependencies: + autoprefixer "^6.0.2" + loader-utils "^0.2.11" + postcss "^5.0.4" + postcss-safe-parser "^1.0.1" + +autoprefixer@^6.0.2, autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-code-frame@^6.11.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.6" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-loader@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126" + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-do-expressions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + +babel-plugin-syntax-function-bind@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-do-expressions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" + dependencies: + babel-plugin-syntax-do-expressions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-function-bind@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" + dependencies: + babel-plugin-syntax-function-bind "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-es2015@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-stage-0@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a" + dependencies: + babel-plugin-transform-do-expressions "^6.22.0" + babel-plugin-transform-function-bind "^6.22.0" + babel-preset-stage-1 "^6.24.1" + +babel-preset-stage-1@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + dependencies: + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-js@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" + +binary-extensions@^1.0.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.4.7: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" + dependencies: + buffer-xor "^1.0.2" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + inherits "^2.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +buffer-xor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000717" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000717.tgz#27ddf5feccdd338c99a62c9788c2694f99f67ed7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +clap@^1.0.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.0.tgz#59c90fe3e137104746ff19469a27a634ff68c857" + dependencies: + chalk "^1.1.3" + +clean-css@4.1.x: + version "4.1.7" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.7.tgz#b9aea4f85679889cf3eae8b40349ec4ebdfdd032" + dependencies: + source-map "0.5.x" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +clone@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.3.0, color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@2.11.x, commander@~2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +convert-source-map@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +crypto-browserify@^3.11.0: + version "3.11.1" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + +css-loader@^0.28.5: + version "0.28.5" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.5.tgz#dd02bb91b94545710212ef7f6aaa66663113d754" + dependencies: + babel-code-frame "^6.11.0" + css-selector-tokenizer "^0.7.0" + cssnano ">=2.6.1 <4" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + object-assign "^4.0.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.0.0" + postcss-modules-local-by-default "^1.0.1" + postcss-modules-scope "^1.0.0" + postcss-modules-values "^1.1.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +"cssnano@>=2.6.1 <4": + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +debug@^2.2.0, debug@^2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domain-browser@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +electron-to-chromium@^1.2.7: + version "1.3.18" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.18.tgz#3dcc99da3e6b665f6abbc71c28ad51a2cd731a9c" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.7" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +errno@^0.1.1, errno@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.30" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-templates@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" + dependencies: + recast "~0.11.12" + through "~2.3.6" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esrecurse@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" + dependencies: + estraverse "^4.1.0" + object-assign "^4.0.1" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +evp_bytestokey@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.2.tgz#f66bb88ecd57f71a766821e20283ea38c68bf80a" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extract-text-webpack-plugin@beta: + version "3.0.0-rc.2" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.0-rc.2.tgz#d891bfa401a9312e42e0cc4c41abcfb7297b91a3" + dependencies: + async "^2.4.1" + loader-utils "^1.1.0" + schema-utils "^0.3.0" + webpack-sources "^1.0.1" + +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +file-loader@^0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34" + dependencies: + loader-utils "^1.0.2" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.36" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@^7.0.5: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +html-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.1.tgz#4f1e8396a1ea6ab42bedc987dfac058070861ebe" + dependencies: + es6-templates "^0.2.2" + fastparse "^1.1.1" + html-minifier "^3.0.1" + loader-utils "^1.0.2" + object-assign "^4.1.0" + +html-minifier@^3.0.1, html-minifier@^3.2.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.3.tgz#4a275e3b1a16639abb79b4c11191ff0d0fcf1ab9" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.11.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.0.x" + +html-webpack-plugin@^2.30.1: + version "2.30.1" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz#7f9c421b7ea91ec460f56527d78df484ee7537d5" + dependencies: + bluebird "^3.4.7" + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + toposort "^1.0.0" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + +icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + dependencies: + postcss "^6.0.1" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +interpret@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + +invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +js-base64@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-loader@^0.5.4: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +less-loader@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.0.5.tgz#ae155a7406cac6acd293d785587fcff0f478c4dd" + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^2.3.0" + +less@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.72.0" + source-map "^0.5.3" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@^0.2.11, loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash@^4.14.0, lodash@^4.17.3, lodash@^4.17.4: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +make-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" + dependencies: + pify "^2.3.0" + +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +miller-rabin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@~1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.16" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" + dependencies: + mime-db "~1.29.0" + +mime@1.3.x, mime@^1.2.11: + version "1.3.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" + +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +nan@^2.3.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" + +ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + +no-case@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" + dependencies: + lower-case "^1.1.1" + +node-libs-browser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.1.4" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "0.0.1" + os-browserify "^0.2.0" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.0.5" + stream-browserify "^2.0.1" + stream-http "^2.3.1" + string_decoder "^0.10.25" + timers-browserify "^2.0.2" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.6.36: + version "0.6.36" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" + dependencies: + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +once@^1.3.0, once@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +os-browserify@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pbkdf2@^3.0.3: + version "3.0.13" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-modules-extract-imports@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-safe-parser@^1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-1.0.7.tgz#43bd0c8c84d5f7d8474de825c699e4dabcac72a8" + dependencies: + postcss "^5.0.18" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.18, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: + version "5.2.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.1: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.9.tgz#54819766784a51c65b1ec4d54c2f93765438c35a" + dependencies: + chalk "^2.1.0" + source-map "^0.5.6" + supports-color "^4.2.1" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +private@^0.1.6, private@^0.1.7, private@~0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@^0.11.0: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + dependencies: + safe-buffer "^5.1.0" + +rc@^1.1.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@1.0: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +recast@~0.11.12: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +renderkid@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@^2.72.0, request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sax@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + dependencies: + ajv "^5.0.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" + dependencies: + inherits "^2.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + +source-map-support@^0.4.15: + version "0.4.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.16.tgz#16fecf98212467d017d586a2af68d628b9421cd8" + dependencies: + source-map "^0.5.6" + +source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-http@^2.3.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.2.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +style-loader@^0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb" + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.3.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^4.0.0, supports-color@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" + dependencies: + has-flag "^2.0.0" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +tapable@^0.2.7: + version "0.2.8" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" + +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +through@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timers-browserify@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" + dependencies: + setimmediate "^1.0.4" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +toposort@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +"uglify-es@git://github.com/mishoo/UglifyJS2#harmony": + version "3.0.28" + resolved "git://github.com/mishoo/UglifyJS2#067d52b6bac67378cccbc8fdea2320676aafc47e" + dependencies: + commander "~2.11.0" + source-map "~0.5.1" + +uglify-js@3.0.x: + version "3.0.28" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.28.tgz#96b8495f0272944787b5843a1679aa326640d5f7" + dependencies: + commander "~2.11.0" + source-map "~0.5.1" + +uglify-js@^2.8.29: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uglifyjs-webpack-plugin@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" + dependencies: + source-map "^0.5.6" + uglify-js "^2.8.29" + webpack-sources "^1.0.1" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +url-loader@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.9.tgz#cc8fea82c7b906e7777019250869e569e995c295" + dependencies: + loader-utils "^1.0.2" + mime "1.3.x" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +uuid@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +watchpack@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" + dependencies: + async "^2.1.2" + chokidar "^1.7.0" + graceful-fs "^4.1.2" + +webpack-sources@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" + dependencies: + source-list-map "^2.0.0" + source-map "~0.5.3" + +webpack@^3.5.5: + version "3.5.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.5.tgz#3226f09fc8b3e435ff781e7af34f82b68b26996c" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^5.1.5" + ajv-keywords "^2.0.0" + async "^2.1.2" + enhanced-resolve "^3.4.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + +xtend@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" diff --git a/frontEnd/topic/package.json b/frontEnd/topic/package.json new file mode 100644 index 000000000..b1b077288 --- /dev/null +++ b/frontEnd/topic/package.json @@ -0,0 +1,24 @@ +{ + "name": "multi-page", + "version": "1.0.0", + "description": "blog's topics project", + "main": "null", + "scripts": { + "dev": "fis3 release -wd ../../static/", + "production": "fis3 release production -d ../../static/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/bh-lay/blog.git" + }, + "keywords": [ + "bh-lay", + "blog" + ], + "author": "剧中人[bh-lay.com]", + "license": "ISC", + "bugs": { + "url": "https://github.com/bh-lay/blog/issues" + }, + "homepage": "https://github.com/bh-lay/blog#readme" +} diff --git a/sys/component/baiduAndGoogleTongji.html b/sys/component/baiduAndGoogleTongji.html index bc7d53240..8270c829a 100644 --- a/sys/component/baiduAndGoogleTongji.html +++ b/sys/component/baiduAndGoogleTongji.html @@ -1,6 +1,11 @@
- +
\ No newline at end of file diff --git a/sys/component/single-page/github.js b/sys/component/single-page/github.js index 8ab3d8a77..19756a595 100644 --- a/sys/component/single-page/github.js +++ b/sys/component/single-page/github.js @@ -5,7 +5,10 @@ var utils = require('../../core/utils/index.js'), exports.produce = function(temp,data,callback){ myGithubData.get(function(err,user_data){ - var html = utils.juicer(temp,user_data); - callback && callback(null,html); + var html = temp.replace(/\>\>(\w+)\<\