Authored by 李奇

Merge branch 'master' into feature/wheel-surf

# Conflicts:
#	apps/api/router.js
#	config/common.js
#	yarn.lock
... ... @@ -33,6 +33,12 @@ app.locals.startTime = moment().format('YYYYMMDDHH');
ynLib.global(config);
logger = global.yoho.logger;
// zookeeper
if (config.zookeeperServer) {
require('yoho-zookeeper')(config.zookeeperServer, 'yap', app.locals.yap = {}, false, {});
}
global.Promise = bluebird;
global.yoho.utils = {
mysqlCli: new SqlHelper(config.mysql.database),
... ... @@ -80,9 +86,11 @@ try {
origin: config.corsAllowOrigin
}));
const setYohoData = require('./doraemon/middleware/set-yoho-data');
const errorHandler = require('./doraemon/middleware/error-handler');
const devtools = require('./doraemon/middleware/devtools');
app.use(setYohoData());
if (app.locals.devEnv) {
app.use(devtools());
}
... ...
... ... @@ -66,7 +66,9 @@ const shoes = {
let userInfo = await req.ctx(ShoesModel).checkUserPlayed(actId, unionId);
let result = [];
_.each(userInfo, (obj) => {
// console.log(userInfo);
_.each(userInfo.data || [], (obj) => {
// console.log(obj);
result.push(obj);
});
... ... @@ -75,6 +77,7 @@ const shoes = {
code: 200,
count: result.length || 0,
data: result,
phone: userInfo.phone || 0,
message: '查询用户游戏信息成功'
});
} catch (err) {
... ... @@ -110,36 +113,139 @@ const shoes = {
}
if (userId) {
for (let i = 0; i < list.length; i++) {
let qsObj = list[i];
let qs = await req.ctx(ShoesModel).
saveResult(
actId,
userId,
qsObj.questionId,
qsObj.userSelectOption || 'F',
qsObj.isCorrect,
qsObj.time || 1000
);
let getUserPlayed = await req.ctx(ShoesModel).getUserPlayedInfo(actId, unionId);
// console.log(getUserPlayed);
result.push(qs);
if (getUserPlayed.code === 200 || (getUserPlayed.data && getUserPlayed.data.length === 0)) {
for (let i = 0; i < list.length; i++) {
let qsObj = list[i];
let qs = await req.ctx(ShoesModel).
saveResult(
actId,
userId,
qsObj.questionId,
qsObj.userSelectOption || 'F',
qsObj.isCorrect,
qsObj.time || 1000
);
result.push(qs);
}
return res.json({
code: 200,
userId,
actId,
unionId,
data: result,
message: '插入用户结果成功'
});
} else {
return res.json({
code: 205,
message: '请勿重复提交数据'
});
}
} else {
return res.json({
code: 200,
userId,
actId,
unionId,
data: result,
message: '插入用户结果成功'
code: 204,
message: '插入用户结果失败'
});
}
} catch (err) {
return res.send(err);
}
} else {
res.json({
code: 201,
message: '用户已经进行过游戏'
});
}
},
/**
* 保存用户游戏记录
* @param req
* @param res
* @returns {Promise.<void>}
*/
async saveUserResultWithToken(req, res) {
let {actId = 29, unionId, list = [], question, token} = req.body;
if (list === [] || !token) {
return res.json({
code: 400,
actId: actId,
unionId: unionId,
message: INVALID_PARAMS
});
} else if (parseInt(question, 10) === 0) {
let session_token = req.session.shoesToken;
// console.log(session_token, token);
if (session_token !== token) {
return res.json({
code: 400,
message: INVALID_PARAMS,
data: token + '_' + (session_token || '0')
});
}
try {
list = JSON.parse(list);
let userInfo = await req.ctx(ShoesModel).getUserId(unionId);
let userId = 0;
let result = [];
if (userInfo.length > 0) {
userId = userInfo[0].id;
}
if (userId) {
let getUserPlayed = await req.ctx(ShoesModel).getUserPlayedInfo(actId, unionId);
// console.log(getUserPlayed);
if (getUserPlayed.code === 200 || (getUserPlayed.data && getUserPlayed.data.length === 0)) {
for (let i = 0; i < list.length; i++) {
let qsObj = list[i];
let qs = await req.ctx(ShoesModel).
saveResult(
actId,
userId,
qsObj.questionId,
qsObj.userSelectOption || 'F',
qsObj.isCorrect,
qsObj.time || 1000
);
result.push(qs);
}
return res.json({
code: 200,
userId,
actId,
unionId,
data: result,
message: '插入用户结果成功'
});
} else {
return res.json({
code: 205,
message: '请勿重复提交数据'
});
}
} else {
return res.json({
code: 204,
message: '插入用户结果失败'
});
}
} catch (err) {
return res.send(err);
}
... ... @@ -211,7 +317,7 @@ const shoes = {
return res.json(
{
code: 200,
message: '好友得分列表',
message: '全球排名列表',
data: {
currentUser: scoreInfo,
friendList: friendsInfo
... ... @@ -222,6 +328,79 @@ const shoes = {
return res.json(err);
}
},
/**
* 获取用户手机及排名列表
* @param req
* @param res
* @returns {Promise.<void>}
*/
async getUserPhoneList(req, res) {
let {actId = 37, per = 10, limit = 150} = req.query;
try {
let friendsInfo = await req.ctx(ShoesModel).getUserPhoneList(actId, per, limit);
let htmlHead = `<table cellpadding="0" cellspacing="0" border="1" width="100%">
<tr style="background-color: #00aeef;">
<td width="14%" height="30px">名次</td>
<td width="14%" height="30px">手机</td>
<td width="14%" height="30px">昵称</td>
<td width="14%" height="30px">得分</td>
<td width="14%" height="30px">时间</td>
<td width="14%" height="30px">userId</td>
<td width="14%" height="30px">日期</td>
</tr>`;
let innerHtml = '';
_.each(friendsInfo, item => {
innerHtml += `<tr><td>${item.rank}</td>
<td>${item.userPhone}</td>
<td>${item.nickname}</td>
<td>${item.score}</td>
<td>${item.playTime / 1000}s</td>
<td>${item.userId}</td>
<td>${item.createTime}</td></tr>`;
});
let htmlEnd = '</table>';
// console.log(htmlHead + innerHtml + htmlEnd);
return res.send(htmlHead + innerHtml + htmlEnd);
} catch (err) {
return res.json(err);
}
},
/**
* 删除用户的游戏信息
*/
deleteUserPlayInfo(req, res) {
let {actId, userId = ''} = req.query;
if (!actId || !userId) {
return res.json({
code: 400,
message: INVALID_PARAMS
});
}
let userIds = userId.toString().replace(/,/g, ',').split(',');
console.log(userIds);
return req.ctx(ShoesModel).deleteUserPlayInfo(actId, userIds).then(result => {
res.json({
code: 200,
userId: result.userId,
actId: result.actId,
message: `已成功删除${result.data}条数据`
});
});
},
async getImageData(req, res) {
let pic_url = req.query.image;
... ... @@ -258,6 +437,29 @@ const shoes = {
});
});
},
/**
* 获取答题的token
* @param req
* @param res
*/
getShoesToken(req, res) {
let referer = req.get('Referer');
let token = Math.random().toString(16).substring(2, 15);
if (referer && referer.indexOf('ad.yoho.cn') > 0) {
req.session.shoesToken = token;
// console.log('shoesToken:', req.session.shoesToken);
res.json({
data: token,
});
} else {
res.json({
data: '0'
});
}
}
};
module.exports = shoes;
... ...
... ... @@ -159,6 +159,22 @@ const wechatShare = {
}
}).catch(next);
},
getWechatCs(req, res, next) {
let param = req.body || {};
let uid = {
toString: () => {
return parseInt(param.uid, 10);
},
sessionKey: param.sessionKey,
appVersion: param.appVersion,
appSessionType: param.sessionType
};
return req.ctx(WechatModel).getIsNeedAddWechatCS(uid).then(result => {
return res.json(result);
}).catch(next);
}
};
... ...
... ... @@ -98,15 +98,22 @@ class ShoesModel extends global.yoho.BaseModel {
* @returns {Promise.<*>}
*/
async checkUserPlayed(actId, unionId) {
let strUser = `SELECT id FROM ${TABLE_USER} WHERE union_id = :unionId`;
let strUser = `SELECT id, user_phone FROM ${TABLE_USER} WHERE union_id = :unionId`;
let strPlayed = `SELECT user_id, question_id, user_select_answer FROM ${TABLE_SHOES_ANSWER}
WHERE user_id = :userId AND act_id = :actId;`;
let userInfo = await mySqlCli.query(strUser, {unionId});
let userId = 0;
let userPhone = 0;
if (userInfo && userInfo.length > 0) {
userId = userInfo[0].id;
let phone = userInfo[0].user_phone;
if (parseInt(phone, 10) !== 0) {
userPhone = 1;
}
} else {
return Promise.reject({
code: 205,
... ... @@ -117,7 +124,7 @@ class ShoesModel extends global.yoho.BaseModel {
let playedInfo = await mySqlCli.query(strPlayed, {userId, actId});
if (playedInfo && playedInfo.length > 0) {
return Promise.resolve(playedInfo);
return Promise.resolve(Object.assign({}, {data: playedInfo}, {phone: userPhone}));
} else {
return Promise.reject({
code: 204,
... ... @@ -126,6 +133,41 @@ class ShoesModel extends global.yoho.BaseModel {
}
}
async getUserPlayedInfo(actId, unionId) {
let strUser = `SELECT id FROM ${TABLE_USER} WHERE union_id = :unionId`;
let strPlayed = `SELECT user_id, question_id, user_select_answer FROM ${TABLE_SHOES_ANSWER}
WHERE user_id = :userId AND act_id = :actId;`;
let userInfo = await mySqlCli.query(strUser, {unionId});
let userId = 0;
if (userInfo && userInfo.length > 0) {
userId = userInfo[0].id;
} else {
return {
code: 205,
message: '没有该用户'
};
}
let playedInfo = await mySqlCli.query(strPlayed, {userId, actId});
if (playedInfo && playedInfo.length > 0) {
return {
code: 204,
data: playedInfo,
message: '查询到用户游戏记录'
};
} else {
return {
code: 200,
data: [],
message: '没有查询到用户游戏记录'
};
}
}
/**
* 保存用户答题信息(多条)
* @param actId
... ... @@ -248,6 +290,8 @@ class ShoesModel extends global.yoho.BaseModel {
unionId
});
if (userInfo.length > 0) {
let userInfoObj = userInfo[0];
let userId = userInfoObj.id;
... ... @@ -258,27 +302,37 @@ class ShoesModel extends global.yoho.BaseModel {
actId
});
let score = scoreInfo[0].count * perScore;
let rank = scoreInfo[0].rownum;
let playTime = scoreInfo[0].playTime;
let createTime = parseInt((new Date()).getTime() / 1000, 10) - parseInt(scoreInfo[0].create_time, 10);
if (scoreInfo && scoreInfo.length > 0) {
let score = scoreInfo[0].count * perScore;
let rank = scoreInfo[0].rownum;
let playTime = scoreInfo[0].playTime;
let createTime = parseInt((new Date()).getTime() / 1000, 10) - parseInt(scoreInfo[0].create_time, 10);
return {
code: 200,
userid: userId,
unionid: unionId,
nickname: userName,
headimgurl: userAvatar,
score: score,
rank: rank,
playTime: playTime,
createTime: createTime
};
} else {
return {
code: 201,
unionId: unionId,
message: '用户无得分'
};
}
return Promise.resolve({
userid: userId,
unionid: unionId,
nickname: userName,
headimgurl: userAvatar,
score: score,
rank: rank,
playTime: playTime,
createTime: createTime
});
} else {
return Promise.reject({
return {
code: 203,
message: '用户不存在'
});
};
}
}
... ... @@ -373,6 +427,7 @@ class ShoesModel extends global.yoho.BaseModel {
U.union_id,
U.user_name,
U.user_avatar,
U.user_phone,
SUM(S.is_correct) as count,
SUM(S.play_time) as playTime,
AVG(UNIX_TIMESTAMP(S.create_time)) as create_time,
... ... @@ -398,18 +453,85 @@ class ShoesModel extends global.yoho.BaseModel {
friendObj.score = scoreInfo[i].count * perScore;
friendObj.rank = scoreInfo[i].rownum;
friendObj.unionid = scoreInfo[i].union_id;
friendObj.userId = scoreInfo[i].user_id;
friendObj.headimgurl = scoreInfo[i].user_avatar;
friendObj.nickname = scoreInfo[i].user_name;
friendObj.playTime = scoreInfo[i].playTime;
friendObj.createTime = parseInt((new Date()).getTime() / 1000, 10) - parseInt(scoreInfo[i].create_time, 10);
// friendObj.unionid = scoreInfo[i].union_id.split('').reverse().join(''); // unionId反过来排列后再输出
friendList.push(friendObj);
}
return Promise.resolve(friendList);
}
}
async getUserPhoneList(actId, perScore, limit) {
let strScore = `SELECT C.* FROM
(SELECT (@rowNo := @rowNo + 1) AS rownum,
A.* FROM
(SELECT
U.union_id,
U.user_name,
U.user_avatar,
U.user_phone,
SUM(S.is_correct) as count,
SUM(S.play_time) as playTime,
AVG(UNIX_TIMESTAMP(S.create_time)) as create_time,
S.user_id as user_id
FROM ${TABLE_USER} AS U INNER JOIN
${TABLE_SHOES_ANSWER} AS S
ON U.id = S.user_id
WHERE S.act_id=:actId
group by S.user_id
order by count desc, playTime asc) A, (SELECT @rowNo := 0) B) C
limit 0, ${limit}`;
let scoreInfo = await mySqlCli.query(strScore, {
actId
});
let friendList = [];
if (scoreInfo && scoreInfo.length > 0) {
for (let i = 0; i < scoreInfo.length; i++) {
let friendObj = {};
friendObj.score = scoreInfo[i].count * perScore;
friendObj.rank = scoreInfo[i].rownum;
friendObj.userId = scoreInfo[i].user_id;
friendObj.userPhone = scoreInfo[i].user_phone;
friendObj.headimgurl = scoreInfo[i].user_avatar;
friendObj.nickname = scoreInfo[i].user_name;
friendObj.playTime = scoreInfo[i].playTime;
friendObj.createTime = new Date(scoreInfo[i].create_time * 1000).toLocaleString();
// friendObj.unionid = scoreInfo[i].union_id.split('').reverse().join(''); // unionId反过来排列后再输出
friendList.push(friendObj);
}
return Promise.resolve(friendList);
}
}
deleteUserPlayInfo(actId, userIds) {
let strSQL = `DELETE FROM ${TABLE_SHOES_ANSWER}
WHERE act_id = :actId
AND user_id in (:userIds)`;
return mySqlCli.delete(strSQL, {actId, userIds}).then(res => {
return {
userId: userIds,
actId: actId,
data: res || 0
};
});
}
}
module.exports = ShoesModel;
... ...
... ... @@ -68,13 +68,13 @@ class WechatModel extends global.yoho.BaseModel {
};
if (type === 'save') {
strSql = `insert into ${TABLE_WECHAT}
(access_token, access_ticket, access_create_time, access_expired) values
strSql = `insert into ${TABLE_WECHAT}
(access_token, access_ticket, access_create_time, access_expired) values
(:access_token, :access_ticket, :access_create_time, :access_expired);`;
return mysqlCli.insert(strSql, params);
} else if (type === 'update') {
strSql = `update ${TABLE_WECHAT} set
strSql = `update ${TABLE_WECHAT} set
access_token = :access_token,
access_ticket = :access_ticket,
access_create_time = :access_create_time,
... ... @@ -84,6 +84,16 @@ class WechatModel extends global.yoho.BaseModel {
}
}
getIsNeedAddWechatCS(uid) {
return this.get({
url: '',
data: {
method: 'app.passport.getIsNeedAddWechatCS',
uid: uid
}
});
}
}
module.exports = WechatModel;
... ...
... ... @@ -35,8 +35,12 @@ router.post('/excel/loady100file', mutilpartMiddleware, excel.getY100ExcelFile);
router.get('/shoes/checkFriend', shoes.checkAddFriends);
router.get('/shoes/checkPlayed', shoes.checkUserPlayed);
router.post('/shoes/saveResult', shoes.saveUserResult);
router.post('/shoes/saveResultNew', shoes.saveUserResultWithToken);
router.get('/shoes/getUserShareInfo', shoes.getUserShareInfo);
router.get('/shoes/getUserPlayInfo', shoes.getUserPlayInfo);
router.get('/shoes/uay172hu27', shoes.deleteUserPlayInfo);
router.post('/shoes/getShoesToken', shoes.getShoesToken);
router.get('/shoes/getUserPhoneList', shoes.getUserPhoneList);
// yohood
router.get('/yohood/getBrandList', yohood.getBrandList);
... ... @@ -62,6 +66,9 @@ router.post('/guochao/checkFav', guochao.checkFav);
// 图片处理git
router.get('/shoes/getBase64ImageData', shoes.getImageData);
// 查询专属客服微信号
router.post('/getWechatCs', wechat.getWechatCs);
// wheelSurf
router.post('/activity/wheelSurf/conf', wheelSurf.getNowConf);
router.post('/activity/wheelSurf/start', wheelSurf.goPrize);
... ...
... ... @@ -159,6 +159,8 @@ class Y100Model extends global.yoho.BaseModel {
cache: true
}
});
// console.log(productsResult.data.product_list);
const recommendResult = await this.get({
data: {
... ...
... ... @@ -165,7 +165,6 @@ const userController = {
} catch (err) {
res.send(err);
}
},
/**
... ... @@ -258,7 +257,7 @@ const userController = {
res.redirect(WECHAT_LOGIN_URL_YOHOBOYS + encodeURIComponent(redirect_url));
} else {
res.json({
code: 200,
code: 401,
message: INVALID_REFERER
});
}
... ... @@ -294,6 +293,8 @@ const userController = {
_.set(req.session, 'user.head_img', head_img);
_.set(req.session, 'user.user_name', user_name);
// console.log(req.session);
return req.ctx(UserModel).getWechatUser(union_id)
.then(result => {
if (result.length > 0) { // 发现数据库有用户信息,则更新用户头像及昵称
... ... @@ -327,11 +328,48 @@ const userController = {
message: GET_USER_INFO_FAILED
});
}
},
/**
* 通过用户的union_id更新用户的手机号码
* @param req
* @param res
* @returns {Promise.<void>}
*/
async updateUserMobileByUnionId(req, res) {
let {unionId, phone, force = 0, token} = req.body;
let regPhone = /^1[3-9][0-9]{9}$/g;
}
if (!unionId || !phone || (!force && !token)) {
return res.json({
code: 400,
message: INVALID_PARAM
});
} else if (!phone.match(regPhone)) {
return res.json({
code: 400,
message: '手机号码格式错误'
});
}
let session_token = req.session.shoesToken;
let result = {};
// console.log(token, session_token);
if (token === session_token) {
result = await req.ctx(UserModel).updateUserMobileByUnionId(unionId, phone, force);
} else {
result = {
code: 205,
message: '保存手机号失败,请重新扫码后再试'
};
}
return res.json(result);
}
};
module.exports = userController;
... ...
... ... @@ -87,6 +87,48 @@ class UserModel extends global.yoho.BaseModel {
});
}
async updateUserMobileByUnionId(union_id, phone, force) {
let strFind = `SELECT user_phone, union_id
FROM ${TABLE_USER}
WHERE user_phone = :phone AND is_wechat_user = 1`;
let findData = await mysqlCli.query(strFind, {phone});
if (findData && findData.length > 0 && !force) {
if (findData[0].union_id === union_id) {
return {
code: 202,
message: '该手机号已存在!',
data: findData
};
} else {
return {
code: 203,
message: '该手机号已绑定其他微信号!',
data: findData
};
}
} else {
let strUpdate = `UPDATE ${TABLE_USER} SET user_phone = :phone
WHERE union_id = :union_id`;
let result = await mysqlCli.update(strUpdate, {phone, union_id});
if (result) {
return {
code: 200,
message: '手机号码保存成功!',
data: result
};
} else {
return {
code: 204,
message: '您的微信号不存在!',
data: result
};
}
}
}
}
module.exports = UserModel;
... ...
... ... @@ -36,4 +36,6 @@ router.get('/login/sina/callback', login.sina.callback);
router.get('/login/qq', login.qq.login);
router.get('/login/qq/callback', login.qq.callback);
router.post('/user/updatePhone', user.updateUserMobileByUnionId);
module.exports = router;
... ...
... ... @@ -17,26 +17,26 @@ module.exports = {
siteUrl: '//action.yoho.cn',
assetUrl: `/yoho-activity-platform/${pkg.version}/`,
// yohoVerifyUdid: '0f626ede-0e17-460b-a8ea-069ee506e8e9',
yohoVerifyUdid: '0f626ede-0e17-460b-a8ea-069ee506e8e9',
domains: {
api: 'http://api-test3.dev.yohocorp.com/',
service: 'http://api-test3.dev.yohocorp.com/',
singleApi: 'http://api-test3.dev.yohocorp.com/',
singleApi: 'http://api-test3.yohops.com:9999/',
// singleApi: 'http://api.yoho.cn/',
// api: 'http://api.yoho.cn/',
// store: 'http://192.168.102.47:8080/portal-gateway/wechat/',
// service: 'http://service.yoho.cn/',
// serviceNotify: 'http://service.yoho.cn/',
// platformApi: 'http://172.16.6.210:8088/',
store: 'http://192.168.102.47:8080/portal-gateway/wechat/',
serviceNotify: 'http://service.yoho.cn/',
platformApi: 'http://172.16.6.210:8088/',
},
from: {
action: {
business_line: 'yohobuy'
}
},
zookeeperServer: '127.0.0.1:2181',
corsAllowOrigin: [
'http://localhost:8080',
'http://localhost:8081',
'http://localhost:8888',
'http://localhost:1234',
... ... @@ -68,7 +68,7 @@ module.exports = {
maxFiles: 7
},
console: {
level: 'debug',
level: 'info',
colorize: 'all',
prettyPrint: true
}
... ... @@ -98,7 +98,8 @@ module.exports = {
host: 'localhost',
port: '3306',
user: 'root',
password: ''
password: '',
charset: 'utf8mb4'
},
database: 'yoho_activity_platform',
},
... ... @@ -151,6 +152,7 @@ if (isProduction) {
'https://huodong.yoho.cn',
'http://ad.yhurl.com'
],
zookeeperServer: 'web.zookeeper.yohoops.org:2181',
redis: {
connect: {
host: 'redis.web.yohoops.org',
... ... @@ -175,10 +177,11 @@ if (isProduction) {
useCache: true,
mysql: {
connect: {
host: '10.67.2.144',
port: '3307',
host: '10.66.106.4',
port: '3306',
user: 'yh_vpc_bak',
password: 'yoho@2Y$^YpNb7hp'
password: 'yoho@2Y$^YpNb7hp',
charset: 'utf8mb4'
},
database: 'yoho_activity_platform',
}
... ... @@ -198,12 +201,14 @@ if (isProduction) {
platformApi: 'http://192.168.102.48:8088/'
},
useCache: true,
zookeeperServer: 'zk01-yohoops-org:2181',
mysql: {
connect: {
host: '192.168.102.219',
port: '3306',
user: 'yh_test',
password: 'yh_test'
password: 'yh_test',
charset: 'utf8mb4'
},
database: 'yoho_activity_platform',
}
... ...
... ... @@ -33,8 +33,8 @@ module.exports = {
username: 'yh_vpc_bak',
password: 'yoho@2Y$^YpNb7hp',
database: 'yoho_activity_platform',
port: '3307',
host: '10.67.2.144',
port: '3306',
host: '10.66.106.4',
dialect: 'mysql',
pool: {
max: 5,
... ...
... ... @@ -10,13 +10,14 @@ const user = require('./apps/user');
const passport = require('./apps/passport');
const activity = require('./apps/activity');
const authAdmin = require('./doraemon/middleware/authAdmin');
const privateRoute = require('./doraemon/middleware/private-route');
module.exports = app => {
// api
app.use('/api', api);
// 管理
app.use('/admin', authAdmin, admin);
app.use('/admin', privateRoute, authAdmin, admin);
// 验证
app.use('/passport', passport);
... ...
const _ = require('lodash');
const logger = global.yoho.logger;
module.exports = (req, res, next) => {
try {
const privateIps = _.get(req, 'app.locals.yap.json.privateips', []);
if (_.includes(privateIps, req.yoho.clientIp) || _.get(req, 'app.locals.devEnv', false)) {
return next();
}
} catch (error) {
logger.error('[privateips error], ', error);
}
logger.warn(`[privateips warn], ${req.yoho.clientIp}`);
return res.status(401).end();
};
... ...
/**
* 设置 YOHO 数据
* @author: 赵彪<bill.zhao@yoho.cn>
* @date: 2016/6/16
*/
'use strict';
const _ = require('lodash');
const net = require('net');
/**
* 获取 IP
* @param {*} req
*/
const _getClientIp = req => {
let remoteIp = req.get('X-Yoho-Real-IP') || req.get('X-Forwarded-For') || req.get('X-Real-IP') || req.ip;
if (remoteIp.indexOf(',') > 0) {
let arr = remoteIp.split(',');
remoteIp = _.trim(arr[0]);
}
if (_.startsWith(remoteIp, '10.66.')) {
remoteIp = req.get('X-Real-IP');
}
remoteIp = _.trim(remoteIp);
if (!net.isIPv4(remoteIp)) {
let ipv6String = remoteIp.split(':');
remoteIp = ipv6String[ipv6String.length - 1];
}
return remoteIp;
};
module.exports = () => {
return (req, res, next) => {
let yoho = Object.assign({
pageChannel: {}
}, req.yoho || {});
// IP 地址
yoho.clientIp = _getClientIp(req);
Object.assign(res.locals, yoho);
Object.assign(req.yoho, yoho);
next();
};
};
... ...
... ... @@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS act_prize_product_user (
`act_id` int(8) NOT NULL DEFAULT 0,
`act_prize_id` int(8) NOT NULL DEFAULT 0,
`uid` int(8) NOT NULL DEFAULT 0,
`user_name` VARCHAR(50) DEFAULT '' comment '用户昵称',
`user_name` VARCHAR(500) DEFAULT '' comment '用户昵称',
`user_thumb` VARCHAR(200) DEFAULT '' comment '用户头像',
`union_id` VARCHAR(50) DEFAULT '' comment '微信union_id',
`prize_code` varchar(20) DEFAULT '' comment '抽奖码8位随机字母加数字(大写),且同一个大活动不重复',
... ...
... ... @@ -50,6 +50,7 @@
"fast-safe-stringify": "^1.2.0",
"feed": "^1.1.0",
"geetest": "^4.1.2",
"influx-batch-sender": "^0.1.6",
"jsonp": "^0.2.1",
"lodash": "^4.17.4",
"mOxie": "^1.5.5",
... ... @@ -81,7 +82,7 @@
"xlsx": "^0.11.16",
"yoho-md5": "^2.0.0",
"yoho-node-lib": "^0.6.23",
"yoho-zookeeper": "^1.0.8"
"yoho-zookeeper": "^1.0.11"
},
"devDependencies": {
"autoprefixer": "^7.0.1",
... ...
No preview for this file type
No preview for this file type
... ... @@ -4,11 +4,11 @@
"@types/geojson@^1.0.0":
version "1.0.6"
resolved "http://npm.yohops.com/@types/geojson/download/@types/geojson-1.0.6.tgz#3e02972728c69248c2af08d60a48cbb8680fffdf"
resolved "http://npm.yohops.com/@types%2fgeojson/-/geojson-1.0.6.tgz#3e02972728c69248c2af08d60a48cbb8680fffdf"
"@types/node@*":
version "10.11.0"
resolved "http://npm.yohops.com/@types/node/download/@types/node-10.11.0.tgz#ddd0d67a3b6c3810dd1a59e36675fa82de5e19ae"
resolved "http://npm.yohops.com/@types%2fnode/-/node-10.11.0.tgz#ddd0d67a3b6c3810dd1a59e36675fa82de5e19ae"
JSONStream@^0.8.4:
version "0.8.4"
... ... @@ -82,10 +82,6 @@ agentkeepalive@3.3.0, agentkeepalive@^3.3.0:
dependencies:
humanize-ms "^1.2.1"
ajv-errors@^1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/ajv-errors/download/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59"
ajv-keywords@^1.0.0, ajv-keywords@^1.1.1:
version "1.5.1"
resolved "http://npm.yohops.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
... ... @@ -94,10 +90,6 @@ ajv-keywords@^2.1.0:
version "2.1.1"
resolved "http://npm.yohops.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
ajv-keywords@^3.1.0:
version "3.2.0"
resolved "http://npm.yohops.com/ajv-keywords/download/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
ajv@^4.7.0, ajv@^4.9.1:
version "4.11.8"
resolved "http://npm.yohops.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
... ... @@ -114,15 +106,6 @@ ajv@^5.0.0, ajv@^5.1.0, ajv@^5.2.3:
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
ajv@^6.1.0:
version "6.5.4"
resolved "http://npm.yohops.com/ajv/download/ajv-6.5.4.tgz#247d5274110db653706b550fcc2b797ca28cfc59"
dependencies:
fast-deep-equal "^2.0.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "http://npm.yohops.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
... ... @@ -185,12 +168,6 @@ ansi-styles@^3.1.0:
dependencies:
color-convert "^1.9.0"
ansi-styles@^3.2.1:
version "3.2.1"
resolved "http://npm.yohops.com/ansi-styles/download/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
dependencies:
color-convert "^1.9.0"
ansi-wrap@0.1.0:
version "0.1.0"
resolved "http://npm.yohops.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
... ... @@ -383,12 +360,6 @@ async-limiter@~1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
async-validator@^1.8.2:
version "1.8.5"
resolved "http://npm.yohops.com/async-validator/download/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0"
dependencies:
babel-runtime "6.x"
async@1.5.0:
version "1.5.0"
resolved "http://npm.yohops.com/async/-/async-1.5.0.tgz#2796642723573859565633fc6274444bee2f8ce3"
... ... @@ -948,7 +919,7 @@ babel-register@^6.22.0, babel-register@^6.26.0:
mkdirp "^0.5.1"
source-map-support "^0.4.15"
babel-runtime@6.x, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
version "6.26.0"
resolved "http://npm.yohops.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
dependencies:
... ... @@ -1028,10 +999,6 @@ base@^0.11.1:
mixin-deep "^1.2.0"
pascalcase "^0.1.1"
batch-processor@^1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/batch-processor/download/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8"
batch@0.6.1:
version "0.6.1"
resolved "http://npm.yohops.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
... ... @@ -1087,13 +1054,13 @@ block-stream@*:
dependencies:
inherits "~2.0.0"
bluebird@3.x.x, bluebird@^3.0.6, bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1:
bluebird@3.x.x, bluebird@^3.0.5, bluebird@^3.0.6, bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1:
version "3.5.1"
resolved "http://npm.yohops.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
bluebird@^3.4.6:
version "3.5.2"
resolved "http://npm.yohops.com/bluebird/download/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a"
resolved "http://npm.yohops.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a"
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
version "4.11.8"
... ... @@ -1455,7 +1422,7 @@ capture-stack-trace@^1.0.0:
cardinal@2.1.1:
version "2.1.1"
resolved "http://npm.yohops.com/cardinal/download/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505"
resolved "http://npm.yohops.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505"
dependencies:
ansicolors "~0.3.2"
redeyed "~2.1.0"
... ... @@ -1504,14 +1471,6 @@ chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0:
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
chalk@^2.4.1:
version "2.4.1"
resolved "http://npm.yohops.com/chalk/download/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
character-entities-html4@^1.0.0:
version "1.1.1"
resolved "http://npm.yohops.com/character-entities-html4/-/character-entities-html4-1.1.1.tgz#359a2a4a0f7e29d3dc2ac99bdbe21ee39438ea50"
... ... @@ -1670,15 +1629,6 @@ clone-buffer@^1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
clone-deep@^2.0.1:
version "2.0.2"
resolved "http://npm.yohops.com/clone-deep/download/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
dependencies:
for-own "^1.0.0"
is-plain-object "^2.0.4"
kind-of "^6.0.0"
shallow-clone "^1.0.0"
clone-function@>=1.0.1:
version "1.0.6"
resolved "http://npm.yohops.com/clone-function/-/clone-function-1.0.6.tgz#428471937750bca9c48ecbfbc16f6e232f74a03d"
... ... @@ -1720,7 +1670,7 @@ cloneable-readable@^1.0.0:
cls-bluebird@^2.1.0:
version "2.1.0"
resolved "http://npm.yohops.com/cls-bluebird/download/cls-bluebird-2.1.0.tgz#37ef1e080a8ffb55c2f4164f536f1919e7968aee"
resolved "http://npm.yohops.com/cls-bluebird/-/cls-bluebird-2.1.0.tgz#37ef1e080a8ffb55c2f4164f536f1919e7968aee"
dependencies:
is-bluebird "^1.0.2"
shimmer "^1.1.0"
... ... @@ -1911,7 +1861,7 @@ concat-with-sourcemaps@^1.0.0:
dependencies:
source-map "^0.6.1"
config-chain@~1.1.11:
config-chain@~1.1.11, config-chain@~1.1.5:
version "1.1.11"
resolved "http://npm.yohops.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2"
dependencies:
... ... @@ -1964,7 +1914,7 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
consolidate@^0.14.0:
version "0.14.5"
resolved "http://npm.yohops.com/consolidate/download/consolidate-0.14.5.tgz#5a25047bc76f73072667c8cb52c989888f494c63"
resolved "http://npm.yohops.com/consolidate/-/consolidate-0.14.5.tgz#5a25047bc76f73072667c8cb52c989888f494c63"
dependencies:
bluebird "^3.1.1"
... ... @@ -2192,16 +2142,18 @@ css-font-weight-names@^0.2.1:
version "0.2.1"
resolved "http://npm.yohops.com/css-font-weight-names/-/css-font-weight-names-0.2.1.tgz#5710d485ad295f6b3f1ceec41f882e324a46b516"
css-loader@^1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/css-loader/download/css-loader-1.0.0.tgz#9f46aaa5ca41dbe31860e3b62b8e23c42916bf56"
css-loader@^0.28.4:
version "0.28.9"
resolved "http://npm.yohops.com/css-loader/-/css-loader-0.28.9.tgz#68064b85f4e271d7ce4c48a58300928e535d1c95"
dependencies:
babel-code-frame "^6.26.0"
css-selector-tokenizer "^0.7.0"
cssnano "^3.10.0"
icss-utils "^2.1.0"
loader-utils "^1.0.2"
lodash.camelcase "^4.3.0"
postcss "^6.0.23"
object-assign "^4.1.1"
postcss "^5.0.6"
postcss-modules-extract-imports "^1.2.0"
postcss-modules-local-by-default "^1.2.0"
postcss-modules-scope "^1.1.0"
... ... @@ -2429,10 +2381,6 @@ deep-is@~0.1.3:
version "0.1.3"
resolved "http://npm.yohops.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
deepmerge@^2.1.0:
version "2.1.1"
resolved "http://npm.yohops.com/deepmerge/download/deepmerge-2.1.1.tgz#e862b4e45ea0555072bf51e7fd0d9845170ae768"
default-user-agent@^1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6"
... ... @@ -2501,7 +2449,7 @@ delegates@^1.0.0:
denque@1.3.0:
version "1.3.0"
resolved "http://npm.yohops.com/denque/download/denque-1.3.0.tgz#681092ef44a630246d3f6edb2a199230eae8e76b"
resolved "http://npm.yohops.com/denque/-/denque-1.3.0.tgz#681092ef44a630246d3f6edb2a199230eae8e76b"
depd@1.1.1:
version "1.1.1"
... ... @@ -2674,7 +2622,7 @@ dotenv@^4.0.0:
dottie@^2.0.0:
version "2.0.0"
resolved "http://npm.yohops.com/dottie/download/dottie-2.0.0.tgz#da191981c8b8d713ca0115d5898cf397c2f0ddd0"
resolved "http://npm.yohops.com/dottie/-/dottie-2.0.0.tgz#da191981c8b8d713ca0115d5898cf397c2f0ddd0"
double-ended-queue@^2.1.0-0:
version "2.1.0-0"
... ... @@ -2720,6 +2668,16 @@ editor@~1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742"
editorconfig@^0.13.2:
version "0.13.3"
resolved "http://npm.yohops.com/editorconfig/-/editorconfig-0.13.3.tgz#e5219e587951d60958fd94ea9a9a008cdeff1b34"
dependencies:
bluebird "^3.0.5"
commander "^2.9.0"
lru-cache "^3.2.0"
semver "^5.1.0"
sigmund "^1.0.1"
ee-first@1.1.1, ee-first@~1.1.1:
version "1.1.1"
resolved "http://npm.yohops.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
... ... @@ -2732,12 +2690,6 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
version "1.3.32"
resolved "http://npm.yohops.com/electron-to-chromium/-/electron-to-chromium-1.3.32.tgz#11d0684c0840e003c4be8928f8ac5f35dbc2b4e6"
element-resize-detector@^1.1.14:
version "1.1.14"
resolved "http://npm.yohops.com/element-resize-detector/download/element-resize-detector-1.1.14.tgz#af064a0a618a820ad570a95c5eec5b77be0128c1"
dependencies:
batch-processor "^1.0.0"
elliptic@^6.0.0:
version "6.4.0"
resolved "http://npm.yohops.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
... ... @@ -3010,7 +2962,7 @@ esprima@~1.1.1:
esprima@~4.0.0:
version "4.0.1"
resolved "http://npm.yohops.com/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
resolved "http://npm.yohops.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
esquery@^1.0.0:
version "1.0.0"
... ... @@ -3274,10 +3226,6 @@ fast-deep-equal@^1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
fast-deep-equal@^2.0.1:
version "2.0.1"
resolved "http://npm.yohops.com/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
fast-json-stable-stringify@^2.0.0:
version "2.0.0"
resolved "http://npm.yohops.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
... ... @@ -3332,13 +3280,6 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1"
object-assign "^4.0.1"
file-loader@^2.0.0:
version "2.0.0"
resolved "http://npm.yohops.com/file-loader/download/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde"
dependencies:
loader-utils "^1.0.2"
schema-utils "^1.0.0"
filename-regex@^2.0.0:
version "2.0.1"
resolved "http://npm.yohops.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
... ... @@ -3462,10 +3403,6 @@ font-awesome@^4.7.0:
version "4.7.0"
resolved "http://npm.yohops.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
for-in@^0.1.3:
version "0.1.8"
resolved "http://npm.yohops.com/for-in/download/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "http://npm.yohops.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
... ... @@ -3691,7 +3628,7 @@ generate-object-property@^1.1.0:
generic-pool@^3.4.0:
version "3.4.2"
resolved "http://npm.yohops.com/generic-pool/download/generic-pool-3.4.2.tgz#92ff7196520d670839a67308092a12aadf2f6a59"
resolved "http://npm.yohops.com/generic-pool/-/generic-pool-3.4.2.tgz#92ff7196520d670839a67308092a12aadf2f6a59"
genfun@^4.0.1:
version "4.0.1"
... ... @@ -4181,10 +4118,6 @@ has-flag@^2.0.0:
version "2.0.0"
resolved "http://npm.yohops.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
has-flag@^3.0.0:
version "3.0.0"
resolved "http://npm.yohops.com/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
has-gulplog@^0.1.0:
version "0.1.0"
resolved "http://npm.yohops.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
... ... @@ -4456,7 +4389,7 @@ iconv-lite@0.4.19, iconv-lite@^0.4.15, iconv-lite@~0.4.13:
iconv-lite@^0.4.18:
version "0.4.24"
resolved "http://npm.yohops.com/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
resolved "http://npm.yohops.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
dependencies:
safer-buffer ">= 2.1.2 < 3"
... ... @@ -4531,7 +4464,7 @@ indexof@0.0.1:
inflection@1.12.0:
version "1.12.0"
resolved "http://npm.yohops.com/inflection/download/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416"
resolved "http://npm.yohops.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416"
inflight@^1.0.4, inflight@~1.0.6:
version "1.0.6"
... ... @@ -4548,6 +4481,14 @@ influx-batch-sender@^0.1.5:
lodash "^4.17.4"
request "^2.83.0"
influx-batch-sender@^0.1.6:
version "0.1.6"
resolved "http://npm.yohops.com/influx-batch-sender/-/influx-batch-sender-0.1.6.tgz#fe4fb11ac80ece3ca791e40c8de098ce0181d499"
dependencies:
debug "^3.0.1"
lodash "^4.17.4"
request "^2.83.0"
inherits@1:
version "1.0.2"
resolved "http://npm.yohops.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"
... ... @@ -4685,7 +4626,7 @@ is-binary-path@^1.0.0:
is-bluebird@^1.0.2:
version "1.0.2"
resolved "http://npm.yohops.com/is-bluebird/download/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2"
resolved "http://npm.yohops.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2"
is-buffer@^1.0.2, is-buffer@^1.1.4, is-buffer@^1.1.5, is-buffer@~1.1.1:
version "1.1.6"
... ... @@ -5017,25 +4958,6 @@ istanbul-lib-instrument@^1.4.2:
istanbul-lib-coverage "^1.1.1"
semver "^5.3.0"
iview-loader@^1.2.2:
version "1.2.2"
resolved "http://npm.yohops.com/iview-loader/download/iview-loader-1.2.2.tgz#abdf52074de93c82ef01a2c293deb82c8cbbbde0"
dependencies:
loader-utils "^1.1.0"
iview@^3.1.2:
version "3.1.2"
resolved "http://npm.yohops.com/iview/download/iview-3.1.2.tgz#84c66ed44be46d261fecca14719cbe8d031a975b"
dependencies:
async-validator "^1.8.2"
deepmerge "^2.1.0"
element-resize-detector "^1.1.14"
js-calendar "^1.2.3"
lodash.throttle "^4.1.1"
popper.js "^1.14.1"
tinycolor2 "^1.4.1"
v-click-outside-x "^3.0.0"
jackpot@>=0.0.6:
version "0.0.6"
resolved "http://npm.yohops.com/jackpot/-/jackpot-0.0.6.tgz#3cff064285cbf66f4eab2593c90bce816a821849"
... ... @@ -5058,9 +4980,14 @@ js-base64@^2.1.8, js-base64@^2.1.9:
version "2.4.3"
resolved "http://npm.yohops.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582"
js-calendar@^1.2.3:
version "1.2.3"
resolved "http://npm.yohops.com/js-calendar/download/js-calendar-1.2.3.tgz#a583b0644b4e695ba394f344d103dbcc7a7a7d3e"
js-beautify@^1.6.3:
version "1.7.5"
resolved "http://npm.yohops.com/js-beautify/-/js-beautify-1.7.5.tgz#69d9651ef60dbb649f65527b53674950138a7919"
dependencies:
config-chain "~1.1.5"
editorconfig "^0.13.2"
mkdirp "~0.5.0"
nopt "~3.0.1"
js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
... ... @@ -5104,10 +5031,6 @@ json-schema-traverse@^0.3.0:
version "0.3.1"
resolved "http://npm.yohops.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "http://npm.yohops.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
json-schema@0.2.3:
version "0.2.3"
resolved "http://npm.yohops.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
... ... @@ -5365,7 +5288,7 @@ loader-utils@^0.2.16:
json5 "^0.5.0"
object-assign "^4.0.1"
loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
loader-utils@^1.0.2, loader-utils@^1.1.0:
version "1.1.0"
resolved "http://npm.yohops.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
dependencies:
... ... @@ -5609,10 +5532,6 @@ lodash.some@^4.4.0:
version "4.6.0"
resolved "http://npm.yohops.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
lodash.tail@^4.1.1:
version "4.1.1"
resolved "http://npm.yohops.com/lodash.tail/download/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
lodash.template@^3.0.0:
version "3.6.2"
resolved "http://npm.yohops.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
... ... @@ -5634,10 +5553,6 @@ lodash.templatesettings@^3.0.0:
lodash._reinterpolate "^3.0.0"
lodash.escape "^3.0.0"
lodash.throttle@^4.1.1:
version "4.1.1"
resolved "http://npm.yohops.com/lodash.throttle/download/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
lodash.union@~4.6.0:
version "4.6.0"
resolved "http://npm.yohops.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
... ... @@ -5660,7 +5575,7 @@ lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lo
lodash@^4.17.1:
version "4.17.11"
resolved "http://npm.yohops.com/lodash/download/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
resolved "http://npm.yohops.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
lodash@~1.0.1:
version "1.0.2"
... ... @@ -5684,7 +5599,7 @@ loglevel@^1.4.1:
long@^4.0.0:
version "4.0.0"
resolved "http://npm.yohops.com/long/download/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
resolved "http://npm.yohops.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
longest-streak@^2.0.1:
version "2.0.2"
... ... @@ -5717,15 +5632,21 @@ lru-cache@2:
lru-cache@2.5.0:
version "2.5.0"
resolved "http://npm.yohops.com/lru-cache/download/lru-cache-2.5.0.tgz#d82388ae9c960becbea0c73bb9eb79b6c6ce9aeb"
resolved "http://npm.yohops.com/lru-cache/-/lru-cache-2.5.0.tgz#d82388ae9c960becbea0c73bb9eb79b6c6ce9aeb"
lru-cache@4.1.1, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@~4.1.1:
version "4.1.1"
resolved "http://npm.yohops.com/lru-cache/download/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
resolved "http://npm.yohops.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
dependencies:
pseudomap "^1.0.2"
yallist "^2.1.2"
lru-cache@^3.2.0:
version "3.2.0"
resolved "http://npm.yohops.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee"
dependencies:
pseudomap "^1.0.1"
mOxie@^1.5.5:
version "1.5.7"
resolved "http://npm.yohops.com/mOxie/-/mOxie-1.5.7.tgz#eab89d529dee074a709f99622ab43cf10a6abfbf"
... ... @@ -5970,10 +5891,6 @@ mime@^1.3.4, mime@^1.5.0:
version "1.6.0"
resolved "http://npm.yohops.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
mime@^2.0.3:
version "2.3.1"
resolved "http://npm.yohops.com/mime/download/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369"
mimic-fn@^1.0.0:
version "1.2.0"
resolved "http://npm.yohops.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
... ... @@ -6062,13 +5979,6 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
mixin-object@^2.0.1:
version "2.0.1"
resolved "http://npm.yohops.com/mixin-object/download/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
dependencies:
for-in "^0.1.3"
is-extendable "^0.1.1"
mkdirp@0.5.0:
version "0.5.0"
resolved "http://npm.yohops.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
... ... @@ -6083,13 +5993,13 @@ mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdi
moment-timezone@^0.5.14:
version "0.5.21"
resolved "http://npm.yohops.com/moment-timezone/download/moment-timezone-0.5.21.tgz#3cba247d84492174dbf71de2a9848fa13207b845"
resolved "http://npm.yohops.com/moment-timezone/-/moment-timezone-0.5.21.tgz#3cba247d84492174dbf71de2a9848fa13207b845"
dependencies:
moment ">= 2.9.0"
"moment@>= 2.9.0", moment@^2.20.0:
version "2.22.2"
resolved "http://npm.yohops.com/moment/download/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
resolved "http://npm.yohops.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
moment@^2.13.0, moment@^2.18.1, moment@^2.9.0:
version "2.20.1"
... ... @@ -6160,7 +6070,7 @@ mute-stream@~0.0.4:
mysql2@^1.6.1:
version "1.6.1"
resolved "http://npm.yohops.com/mysql2/download/mysql2-1.6.1.tgz#9027fd93a05c5d86e79bfada35c9b677b3a0d7c5"
resolved "http://npm.yohops.com/mysql2/-/mysql2-1.6.1.tgz#9027fd93a05c5d86e79bfada35c9b677b3a0d7c5"
dependencies:
cardinal "2.1.1"
denque "1.3.0"
... ... @@ -6184,7 +6094,7 @@ mysql@^2.13.0:
named-placeholders@1.1.1:
version "1.1.1"
resolved "http://npm.yohops.com/named-placeholders/download/named-placeholders-1.1.1.tgz#3b7a0d26203dd74b3a9df4c9cfb827b2fb907e64"
resolved "http://npm.yohops.com/named-placeholders/-/named-placeholders-1.1.1.tgz#3b7a0d26203dd74b3a9df4c9cfb827b2fb907e64"
dependencies:
lru-cache "2.5.0"
... ... @@ -6246,10 +6156,6 @@ negotiator@0.6.1:
version "0.6.1"
resolved "http://npm.yohops.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
neo-async@^2.5.0:
version "2.5.2"
resolved "http://npm.yohops.com/neo-async/download/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc"
node-bitmap@0.0.1:
version "0.0.1"
resolved "http://npm.yohops.com/node-bitmap/-/node-bitmap-0.0.1.tgz#180eac7003e0c707618ef31368f62f84b2a69091"
... ... @@ -6405,7 +6311,7 @@ nodemon@^1.11.0:
undefsafe "^2.0.1"
update-notifier "^2.3.0"
"nopt@2 || 3":
"nopt@2 || 3", nopt@~3.0.1:
version "3.0.6"
resolved "http://npm.yohops.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
dependencies:
... ... @@ -7325,10 +7231,6 @@ pnglib@:
version "0.0.1"
resolved "http://npm.yohops.com/pnglib/-/pnglib-0.0.1.tgz#f9ab6f9c688f4a9d579ad8be28878a716e30c096"
popper.js@^1.14.1:
version "1.14.4"
resolved "http://npm.yohops.com/popper.js/download/popper.js-1.14.4.tgz#8eec1d8ff02a5a3a152dd43414a15c7b79fd69b6"
portfinder@^1.0.9:
version "1.0.13"
resolved "http://npm.yohops.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
... ... @@ -7964,7 +7866,7 @@ postcss-zindex@^2.0.1:
postcss "^5.0.4"
uniqs "^2.0.0"
postcss@^5.0, postcss@^5.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.19, postcss@^5.0.2, postcss@^5.0.20, postcss@^5.0.21, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.10, postcss@^5.2.13, postcss@^5.2.16, postcss@^5.2.17, postcss@^5.2.4:
postcss@^5.0, postcss@^5.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.19, postcss@^5.0.2, postcss@^5.0.20, postcss@^5.0.21, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.10, postcss@^5.2.13, postcss@^5.2.16, postcss@^5.2.17, postcss@^5.2.4:
version "5.2.18"
resolved "http://npm.yohops.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
dependencies:
... ... @@ -7981,14 +7883,6 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.15, postcss@^6.0.1
source-map "^0.6.1"
supports-color "^5.1.0"
postcss@^6.0.23:
version "6.0.23"
resolved "http://npm.yohops.com/postcss/download/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
dependencies:
chalk "^2.4.1"
source-map "^0.6.1"
supports-color "^5.4.0"
precss@^1.4.0:
version "1.4.0"
resolved "http://npm.yohops.com/precss/-/precss-1.4.0.tgz#8d7c3ae70f10a00a3955287f85a66e0f8b31cda3"
... ... @@ -8022,10 +7916,6 @@ preserve@^0.2.0:
version "0.2.0"
resolved "http://npm.yohops.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
prettier@^1.7.0:
version "1.14.3"
resolved "http://npm.yohops.com/prettier/download/prettier-1.14.3.tgz#90238dd4c0684b7edce5f83b0fb7328e48bd0895"
pretty-hrtime@^1.0.0:
version "1.0.3"
resolved "http://npm.yohops.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
... ... @@ -8098,7 +7988,7 @@ ps-tree@^1.1.0:
dependencies:
event-stream "~3.3.0"
pseudomap@^1.0.2:
pseudomap@^1.0.1, pseudomap@^1.0.2:
version "1.0.2"
resolved "http://npm.yohops.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
... ... @@ -8148,10 +8038,6 @@ punycode@^1.2.4, punycode@^1.4.1:
version "1.4.1"
resolved "http://npm.yohops.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
punycode@^2.1.0:
version "2.1.1"
resolved "http://npm.yohops.com/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
q@^1.1.2:
version "1.5.1"
resolved "http://npm.yohops.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
... ... @@ -8209,7 +8095,7 @@ querystring-es3@^0.2.0:
querystring@0.2.0, querystring@^0.2.0:
version "0.2.0"
resolved "http://npm.yohops.com/querystring/download/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
resolved "http://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
querystringify@0.0.x:
version "0.0.4"
... ... @@ -8472,7 +8358,7 @@ redent@^2.0.0:
redeyed@~2.1.0:
version "2.1.1"
resolved "http://npm.yohops.com/redeyed/download/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b"
resolved "http://npm.yohops.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b"
dependencies:
esprima "~4.0.0"
... ... @@ -8840,18 +8726,12 @@ resolve-url@^0.2.1:
version "0.2.1"
resolved "http://npm.yohops.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
resolve@^1.1.6, resolve@^1.1.7:
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.3:
version "1.5.0"
resolved "http://npm.yohops.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
dependencies:
path-parse "^1.0.5"
resolve@^1.4.0:
version "1.8.1"
resolved "http://npm.yohops.com/resolve/download/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
dependencies:
path-parse "^1.0.5"
restore-cursor@^1.0.1:
version "1.0.1"
resolved "http://npm.yohops.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
... ... @@ -8861,7 +8741,7 @@ restore-cursor@^1.0.1:
retry-as-promised@^2.3.2:
version "2.3.2"
resolved "http://npm.yohops.com/retry-as-promised/download/retry-as-promised-2.3.2.tgz#cd974ee4fd9b5fe03cbf31871ee48221c07737b7"
resolved "http://npm.yohops.com/retry-as-promised/-/retry-as-promised-2.3.2.tgz#cd974ee4fd9b5fe03cbf31871ee48221c07737b7"
dependencies:
bluebird "^3.4.6"
debug "^2.6.9"
... ... @@ -8919,7 +8799,7 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "http://npm.yohops.com/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
resolved "http://npm.yohops.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
sass-graph@^2.2.4:
version "2.2.4"
... ... @@ -8930,17 +8810,6 @@ sass-graph@^2.2.4:
scss-tokenizer "^0.2.3"
yargs "^7.0.0"
sass-loader@^7.1.0:
version "7.1.0"
resolved "http://npm.yohops.com/sass-loader/download/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d"
dependencies:
clone-deep "^2.0.1"
loader-utils "^1.0.1"
lodash.tail "^4.1.1"
neo-async "^2.5.0"
pify "^3.0.0"
semver "^5.5.0"
save-pixels@~2.3.0:
version "2.3.4"
resolved "http://npm.yohops.com/save-pixels/-/save-pixels-2.3.4.tgz#49d349c06b8d7c0127dbf0da24b44aca5afb59fe"
... ... @@ -8970,21 +8839,6 @@ schema-utils@^0.4.0:
ajv "^5.0.0"
ajv-keywords "^2.1.0"
schema-utils@^0.4.5:
version "0.4.7"
resolved "http://npm.yohops.com/schema-utils/download/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
dependencies:
ajv "^6.1.0"
ajv-keywords "^3.1.0"
schema-utils@^1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/schema-utils/download/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
dependencies:
ajv "^6.1.0"
ajv-errors "^1.0.0"
ajv-keywords "^3.1.0"
scss-tokenizer@^0.2.3:
version "0.2.3"
resolved "http://npm.yohops.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
... ... @@ -9018,7 +8872,7 @@ semver@^4.1.0:
semver@^5.5.0:
version "5.5.1"
resolved "http://npm.yohops.com/semver/download/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
resolved "http://npm.yohops.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
semver@~5.0.3:
version "5.0.3"
... ... @@ -9052,11 +8906,11 @@ send@0.16.1:
seq-queue@0.0.5:
version "0.0.5"
resolved "http://npm.yohops.com/seq-queue/download/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e"
resolved "http://npm.yohops.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e"
sequelize@^4.38.0:
version "4.38.1"
resolved "http://npm.yohops.com/sequelize/download/sequelize-4.38.1.tgz#4fd832c33c0ff44a6516bf7133b1ec6311fa4297"
version "4.39.0"
resolved "http://npm.yohops.com/sequelize/-/sequelize-4.39.0.tgz#0e070a4705367e4b0779183f812c72f478ff12b9"
dependencies:
bluebird "^3.5.0"
cls-bluebird "^2.1.0"
... ... @@ -9173,14 +9027,6 @@ sha@~2.0.1:
graceful-fs "^4.1.2"
readable-stream "^2.0.2"
shallow-clone@^1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/shallow-clone/download/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
dependencies:
is-extendable "^0.1.1"
kind-of "^5.0.0"
mixin-object "^2.0.1"
shallow-copy@~0.0.1:
version "0.0.1"
resolved "http://npm.yohops.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170"
... ... @@ -9205,9 +9051,9 @@ shelljs@^0.7.5, shelljs@^0.7.6, shelljs@^0.7.7:
shimmer@^1.1.0:
version "1.2.0"
resolved "http://npm.yohops.com/shimmer/download/shimmer-1.2.0.tgz#f966f7555789763e74d8841193685a5e78736665"
resolved "http://npm.yohops.com/shimmer/-/shimmer-1.2.0.tgz#f966f7555789763e74d8841193685a5e78736665"
sigmund@~1.0.0:
sigmund@^1.0.1, sigmund@~1.0.0:
version "1.0.1"
resolved "http://npm.yohops.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
... ... @@ -9478,7 +9324,7 @@ sqlstring@2.3.0:
sqlstring@2.3.1:
version "2.3.1"
resolved "http://npm.yohops.com/sqlstring/download/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40"
resolved "http://npm.yohops.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40"
ssf@~0.10.1:
version "0.10.1"
... ... @@ -9725,12 +9571,12 @@ strip-json-comments@~2.0.1:
version "2.0.1"
resolved "http://npm.yohops.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
style-loader@^0.23.0:
version "0.23.0"
resolved "http://npm.yohops.com/style-loader/download/style-loader-0.23.0.tgz#8377fefab68416a2e05f1cabd8c3a3acfcce74f1"
style-loader@^0.18.1:
version "0.18.2"
resolved "http://npm.yohops.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb"
dependencies:
loader-utils "^1.1.0"
schema-utils "^0.4.5"
loader-utils "^1.0.2"
schema-utils "^0.3.0"
style-search@^0.1.0:
version "0.1.0"
... ... @@ -9916,12 +9762,6 @@ supports-color@^5.1.0:
dependencies:
has-flag "^2.0.0"
supports-color@^5.3.0, supports-color@^5.4.0:
version "5.5.0"
resolved "http://npm.yohops.com/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
dependencies:
has-flag "^3.0.0"
svg-sprite@^1.3.5:
version "1.3.7"
resolved "http://npm.yohops.com/svg-sprite/-/svg-sprite-1.3.7.tgz#7ade036000e8794a3f814402a808aae290ecd1f3"
... ... @@ -10038,14 +9878,14 @@ term-size@^1.2.0:
terraformer-wkt-parser@^1.1.2:
version "1.2.0"
resolved "http://npm.yohops.com/terraformer-wkt-parser/download/terraformer-wkt-parser-1.2.0.tgz#c9d6ac3dff25f4c0bd344e961f42694961834c34"
resolved "http://npm.yohops.com/terraformer-wkt-parser/-/terraformer-wkt-parser-1.2.0.tgz#c9d6ac3dff25f4c0bd344e961f42694961834c34"
dependencies:
"@types/geojson" "^1.0.0"
terraformer "~1.0.5"
terraformer@~1.0.5:
version "1.0.9"
resolved "http://npm.yohops.com/terraformer/download/terraformer-1.0.9.tgz#77851fef4a49c90b345dc53cf26809fdf29dcda6"
resolved "http://npm.yohops.com/terraformer/-/terraformer-1.0.9.tgz#77851fef4a49c90b345dc53cf26809fdf29dcda6"
optionalDependencies:
"@types/geojson" "^1.0.0"
... ... @@ -10120,10 +9960,6 @@ timers-browserify@^2.0.4:
dependencies:
setimmediate "^1.0.4"
tinycolor2@^1.4.1:
version "1.4.1"
resolved "http://npm.yohops.com/tinycolor2/download/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "http://npm.yohops.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
... ... @@ -10155,7 +9991,7 @@ to-regex@^3.0.1:
toposort-class@^1.0.1:
version "1.0.1"
resolved "http://npm.yohops.com/toposort-class/download/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988"
resolved "http://npm.yohops.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988"
touch@^3.1.0:
version "3.1.0"
... ... @@ -10435,12 +10271,6 @@ update-notifier@^2.2.0, update-notifier@^2.3.0, update-notifier@~2.3.0:
semver-diff "^2.0.0"
xdg-basedir "^3.0.0"
uri-js@^4.2.2:
version "4.2.2"
resolved "http://npm.yohops.com/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
dependencies:
punycode "^2.1.0"
urix@^0.1.0:
version "0.1.0"
resolved "http://npm.yohops.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
... ... @@ -10449,14 +10279,6 @@ url-join@^1.1.0:
version "1.1.0"
resolved "http://npm.yohops.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78"
url-loader@^1.1.1:
version "1.1.1"
resolved "http://npm.yohops.com/url-loader/download/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1"
dependencies:
loader-utils "^1.1.0"
mime "^2.0.3"
schema-utils "^1.0.0"
url-parse-lax@^1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
... ... @@ -10547,16 +10369,12 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0:
uuid@^3.2.1:
version "3.3.2"
resolved "http://npm.yohops.com/uuid/download/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
resolved "http://npm.yohops.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
uuid@~3.1.0:
version "3.1.0"
resolved "http://npm.yohops.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
v-click-outside-x@^3.0.0:
version "3.2.2"
resolved "http://npm.yohops.com/v-click-outside-x/download/v-click-outside-x-3.2.2.tgz#7e02cd18836890ffe73981f3aa6e96a0d84286f0"
v8flags@^2.0.2:
version "2.1.1"
resolved "http://npm.yohops.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
... ... @@ -10578,7 +10396,7 @@ validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0:
validator@^10.4.0:
version "10.8.0"
resolved "http://npm.yohops.com/validator/download/validator-10.8.0.tgz#8acb15a5c39411cbc8ef2be0c98c2514da4410a7"
resolved "http://npm.yohops.com/validator/-/validator-10.8.0.tgz#8acb15a5c39411cbc8ef2be0c98c2514da4410a7"
vary@^1, vary@~1.1.2:
version "1.1.2"
... ... @@ -10687,35 +10505,31 @@ voc@~1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/voc/-/voc-1.0.0.tgz#5465c0ce11d0881f7d8e36d8ca587043f33a25ae"
vue-hot-reload-api@^2.2.0:
version "2.3.1"
resolved "http://npm.yohops.com/vue-hot-reload-api/download/vue-hot-reload-api-2.3.1.tgz#b2d3d95402a811602380783ea4f566eb875569a2"
vue-hot-reload-api@^2.1.0:
version "2.2.4"
resolved "http://npm.yohops.com/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz#683bd1d026c0d3b3c937d5875679e9a87ec6cd8f"
vue-loader@^13.7.0:
version "13.7.3"
resolved "http://npm.yohops.com/vue-loader/download/vue-loader-13.7.3.tgz#e07440f78230a639d00ada4da7b96d0e9d62037f"
vue-loader@^12.2.1:
version "12.2.2"
resolved "http://npm.yohops.com/vue-loader/-/vue-loader-12.2.2.tgz#2b3a764f27018f975bc78cb8b1f55137548ee2d7"
dependencies:
consolidate "^0.14.0"
hash-sum "^1.0.2"
js-beautify "^1.6.3"
loader-utils "^1.1.0"
lru-cache "^4.1.1"
postcss "^6.0.8"
lru-cache "^4.0.1"
postcss "^5.0.21"
postcss-load-config "^1.1.0"
postcss-selector-parser "^2.0.0"
prettier "^1.7.0"
resolve "^1.4.0"
source-map "^0.6.1"
vue-hot-reload-api "^2.2.0"
resolve "^1.3.3"
source-map "^0.5.6"
vue-hot-reload-api "^2.1.0"
vue-style-loader "^3.0.0"
vue-template-es2015-compiler "^1.6.0"
vue-router@^3.0.1:
version "3.0.1"
resolved "http://npm.yohops.com/vue-router/download/vue-router-3.0.1.tgz#d9b05ad9c7420ba0f626d6500d693e60092cc1e9"
vue-template-es2015-compiler "^1.2.2"
vue-style-loader@^3.0.0:
version "3.1.2"
resolved "http://npm.yohops.com/vue-style-loader/download/vue-style-loader-3.1.2.tgz#6b66ad34998fc9520c2f1e4d5fa4091641c1597a"
resolved "http://npm.yohops.com/vue-style-loader/-/vue-style-loader-3.1.2.tgz#6b66ad34998fc9520c2f1e4d5fa4091641c1597a"
dependencies:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
... ... @@ -10727,9 +10541,9 @@ vue-template-compiler@^2.3.3:
de-indent "^1.0.2"
he "^1.1.0"
vue-template-es2015-compiler@^1.6.0:
vue-template-es2015-compiler@^1.2.2:
version "1.6.0"
resolved "http://npm.yohops.com/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18"
resolved "http://npm.yohops.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18"
vue@^2.3.3:
version "2.5.13"
... ... @@ -10954,7 +10768,7 @@ winston@^2.4.0:
wkx@^0.4.1:
version "0.4.5"
resolved "http://npm.yohops.com/wkx/download/wkx-0.4.5.tgz#a85e15a6e69d1bfaec2f3c523be3dfa40ab861d0"
resolved "http://npm.yohops.com/wkx/-/wkx-0.4.5.tgz#a85e15a6e69d1bfaec2f3c523be3dfa40ab861d0"
dependencies:
"@types/node" "*"
... ... @@ -11263,8 +11077,8 @@ yoho-swiper@^3.3.1:
version "3.3.2"
resolved "http://npm.yohops.com/yoho-swiper/-/yoho-swiper-3.3.2.tgz#a7b0f6e13de38d8ac8bb90badbbc316889a0c214"
yoho-zookeeper@^1.0.8:
version "1.0.8"
resolved "http://npm.yohops.com/yoho-zookeeper/-/yoho-zookeeper-1.0.8.tgz#a6def330c27e46791f9a61726370671bec7358c9"
yoho-zookeeper@^1.0.11:
version "1.0.11"
resolved "http://npm.yohops.com/yoho-zookeeper/-/yoho-zookeeper-1.0.11.tgz#a4fe2a7176de91971be4f03c9552720b93a9ffe3"
dependencies:
node-zookeeper-client "^0.2.2"
... ...