将 web-server 和 game-server 中的公共文件改为链接
This commit is contained in:
1
web-server/app/consts
Symbolic link
1
web-server/app/consts
Symbolic link
@@ -0,0 +1 @@
|
||||
../../shared/consts
|
||||
@@ -1,12 +0,0 @@
|
||||
// export const TURBO_CORE_URL = 'https://coresrv.tgamebox.cn';
|
||||
// export const APP_ID = 'AXaXmIHPs9eONvzrBesD8aSKQNXYdALF';
|
||||
// export const TURBO_PARM_SECRET = 'ipqw05du6ob4x130w89t31yrqd6xs005zzltcmg2zpqnvrjp1s';
|
||||
|
||||
// export const ENCRYPT_IV = 'f7182j5f04e377ux';
|
||||
// export const ENCRYPT_KEY = 'fiqaxijabbantusmprc234fj';
|
||||
|
||||
// export const AUTH_SMS_CNT_PER_DAY = 8;
|
||||
|
||||
// export const COUNTER = {
|
||||
// UID: 'uid',
|
||||
// };
|
||||
1
web-server/app/db
Symbolic link
1
web-server/app/db
Symbolic link
@@ -0,0 +1 @@
|
||||
../../shared/db
|
||||
@@ -1,24 +0,0 @@
|
||||
import { prop, pre } from '@typegoose/typegoose';
|
||||
|
||||
/**
|
||||
* BaseModel
|
||||
*/
|
||||
@pre<BaseModel>('save', function(next) {
|
||||
if (!this.createdAt || this.isNew) {
|
||||
this.createdAt = this.updatedAt = new Date();
|
||||
} else {
|
||||
this.updatedAt = new Date();
|
||||
}
|
||||
next();
|
||||
})
|
||||
|
||||
export default class BaseModel {
|
||||
|
||||
_id?: string
|
||||
|
||||
@prop()
|
||||
createdAt: Date
|
||||
|
||||
@prop()
|
||||
updatedAt: Date
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
|
||||
/**
|
||||
* 自增 ID
|
||||
*/
|
||||
@index({ name: 1 })
|
||||
export default class Counter extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
name: string;
|
||||
|
||||
@prop({ required: true, default: 1 })
|
||||
seq: number;
|
||||
|
||||
public static async getNewCounter(name: string, lean = true) {
|
||||
const counter = await CounterModel.findOneAndUpdate({ name }, { $inc: { seq: 1 } }, { new: true, upsert: true }).lean(lean);
|
||||
return counter?.seq;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const CounterModel = getModelForClass(Counter);
|
||||
@@ -1,42 +0,0 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
|
||||
|
||||
@index({ roleId: 1, hid: 1, eid: 1 })
|
||||
@index({ seqId: 1 })
|
||||
export default class Equip extends BaseModel {
|
||||
@prop({ required: true })
|
||||
roleId: number; // 角色 id
|
||||
@prop({ required: true })
|
||||
roleName: string; // 角色名称
|
||||
|
||||
@prop({ required: true })
|
||||
eid: number; // 装备 id
|
||||
@prop({ required: true })
|
||||
type: number; // 装备类型
|
||||
@prop({ required: true })
|
||||
eName: string; // 装备名称
|
||||
@prop({ required: true })
|
||||
seqId: number; // 装备表自增 id
|
||||
@prop({ required: true })
|
||||
hid: number; // 装备此装备的武将 id
|
||||
|
||||
@prop({ required: true })
|
||||
lv: number; // 强化等级
|
||||
randSe: [{ // 强化随机属性
|
||||
seType: number; // 属性类型
|
||||
value: number; // 属性数值
|
||||
}];
|
||||
|
||||
@prop({ required: true })
|
||||
randRange: number; // 物攻策攻数值浮动上下限变化率,浮点数
|
||||
@prop({ required: true })
|
||||
initHoleCnt: number; // 初始珠宝孔位个数
|
||||
@prop({ required: true })
|
||||
holes: [{
|
||||
id: number; // 宝石 id,待定,也可能是 type + lv
|
||||
lv: number; // 宝石等级
|
||||
}];
|
||||
}
|
||||
|
||||
export const EquipModel = getModelForClass(Equip);
|
||||
@@ -1,74 +0,0 @@
|
||||
import { APP_ID } from './../../../shared/consts/consts';
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
|
||||
class ServerInfo {
|
||||
@prop({ required: true })
|
||||
name: string;
|
||||
|
||||
@prop({ required: true })
|
||||
host: string;
|
||||
|
||||
@prop({ required: false })
|
||||
port: number;
|
||||
|
||||
@prop({ required: true })
|
||||
status: number;
|
||||
|
||||
@prop({ required: true })
|
||||
createTime: Date;
|
||||
|
||||
@prop({ required: true })
|
||||
serverType: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏字段接口
|
||||
*/
|
||||
@index({ id: 1 })
|
||||
export default class Game extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
id: number;
|
||||
|
||||
@prop({ required: true })
|
||||
name: string;
|
||||
|
||||
@prop({ required: true })
|
||||
nameEn: string;
|
||||
|
||||
@prop({ required: true })
|
||||
des: string;
|
||||
|
||||
@prop({ required: true })
|
||||
serverList: Array<ServerInfo>;
|
||||
|
||||
@prop({ required: true })
|
||||
iconUrl: string;
|
||||
|
||||
@prop({ required: true })
|
||||
version: string;
|
||||
|
||||
@prop({ required: true })
|
||||
versionCode: number;
|
||||
|
||||
public static async getServerListByType(serverType: string) {
|
||||
let game = await GameModel.findOne().lean();
|
||||
if (!game) {
|
||||
const serverInfo: ServerInfo = { name: '常山少年', host: 'pinus_test.trgame.cn', port: 3014, status: 1, createTime: new Date(), serverType: 'official' };
|
||||
const iconUrl = `https://download.tgamebox.cn/avatar/${APP_ID}/1.png`;
|
||||
game = await GameModel.findOneAndUpdate(
|
||||
{},
|
||||
{ id: 1, name: '赵云传', nameEn: 'zyz', des: '牛逼的战棋', iconUrl, version: '0.0.1', versionCode: 1, $push: { serverList: serverInfo } },
|
||||
{ upsert: true, new: true },
|
||||
).lean();
|
||||
}
|
||||
console.log(serverType, game);
|
||||
let serverList: Array<ServerInfo> = game ? game.serverList : [];
|
||||
serverList = serverList.filter(item => { return item.serverType === serverType; });
|
||||
console.log(serverType, serverList);
|
||||
return serverList;
|
||||
}
|
||||
}
|
||||
|
||||
export const GameModel = getModelForClass(Game);
|
||||
@@ -1,54 +0,0 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, Ref } from '@typegoose/typegoose';
|
||||
import Equip from './Equip';
|
||||
|
||||
/**
|
||||
* 英雄表
|
||||
*/
|
||||
@index({ roleId: 1, hid: 1 })
|
||||
export default class Hero extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
roleId: number; // 角色 id
|
||||
@prop({ required: true })
|
||||
roleName: string; // 角色名称
|
||||
|
||||
@prop({ required: true })
|
||||
hid: number; // 武将 id
|
||||
@prop({ required: true })
|
||||
hName: string; // 武将名
|
||||
@prop({ required: true })
|
||||
seqId: number; // 武将表自增 id
|
||||
|
||||
@prop({ required: true })
|
||||
exp: number; // 经验值
|
||||
@prop({ required: true })
|
||||
lv: number; // 武将等级
|
||||
@prop({ required: true })
|
||||
ce: number; // 武将战力
|
||||
|
||||
@prop({ required: true })
|
||||
star: number; // 星级
|
||||
@prop({ required: true })
|
||||
rank: number; // 阶数
|
||||
@prop({ required: true })
|
||||
favour: number; // 好感度
|
||||
@prop({ required: true })
|
||||
favourLv: number; // 好感等级
|
||||
@prop({ required: true })
|
||||
conections: [{ // 羁绊
|
||||
id: number; // 羁绊编号
|
||||
name: string; // 羁绊名称
|
||||
valid: boolean; // 是否开启
|
||||
}];
|
||||
@prop({ required: true })
|
||||
skins: [{ // 皮肤
|
||||
id: number; // id
|
||||
enable: boolean; // 是否装备
|
||||
}];
|
||||
|
||||
@prop({ ref: Equip })
|
||||
equips: Ref<Equip>[]; // 武将装备引用数组
|
||||
}
|
||||
|
||||
export const HeroModel = getModelForClass(Hero);
|
||||
@@ -1,108 +0,0 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
import User from './User';
|
||||
|
||||
/**
|
||||
* 角色字段接口
|
||||
*/
|
||||
@index({ roleId: 1 })
|
||||
// @index({ userInfo.uid: 1, serverId: 1 })
|
||||
export default class Role extends BaseModel {
|
||||
@prop({ required: true })
|
||||
userInfo: User;
|
||||
|
||||
@prop({ required: true })
|
||||
seqId: number;
|
||||
|
||||
@prop({ required: true })
|
||||
roleId: string; // 角色 id,生成编码
|
||||
@prop({ required: true })
|
||||
roleName: string; // 角色名
|
||||
@prop({ required: true })
|
||||
serverType: string; // 服务器类型
|
||||
@prop({ required: true })
|
||||
serverId: number; // 区服 id
|
||||
@prop({ required: true, default: false })
|
||||
blocked: boolean; // 是否屏蔽
|
||||
@prop({ required: true })
|
||||
code: string; // 邀请码
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
exp: number; // 经验值
|
||||
@prop({ required: true, default: 1 })
|
||||
lv: number; // 主公等级
|
||||
@prop({ required: true, default: 0 })
|
||||
ce: number; // 总战力
|
||||
@prop({ required: true, default: 100 })
|
||||
tili: number; // 体力值
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
vLv: number; // VIP 等级
|
||||
@prop({ required: true, default: 100 })
|
||||
gold: number; // 总金币
|
||||
@prop({ required: true, default: 0 })
|
||||
paidGold: number; // 支付所得金币
|
||||
@prop({ required: true, default: 100 })
|
||||
giftGold: number; // 赠送所得金币
|
||||
@prop({ required: true, default: 0 })
|
||||
totalPay: number; // 总支付金额
|
||||
@prop({ required: true, default: 0 })
|
||||
totalBuy: number; // 总金币购买
|
||||
@prop({ required: true, default: 0 })
|
||||
totalCost: number; // 金币总花费
|
||||
@prop({ required: true, default: [] })
|
||||
payRecord: [{ // 支付记录
|
||||
id: string; // 购买项 product id
|
||||
cnt: number; // 购买次数
|
||||
}];
|
||||
|
||||
@prop({ required: true, default: [] })
|
||||
consumeGoods: [{ // 消耗品
|
||||
id: number; // id
|
||||
cnt: number; // 数量
|
||||
}];
|
||||
@prop({ required: true, default: [] })
|
||||
souls: [{ // 将魂
|
||||
id: number; // 武将 id
|
||||
cnt: number; // 数量
|
||||
}];
|
||||
@prop({ required: true, default: [] })
|
||||
pieces: [{ // 装备碎片
|
||||
id: number; // 装备 id
|
||||
cnt: number; // 数量
|
||||
}];
|
||||
@prop({ required: true, default: [] })
|
||||
jewels: [{ // 珠宝
|
||||
id: number; // 待定,也可能是 type + lv
|
||||
cnt: number; // 数量
|
||||
}];
|
||||
|
||||
@prop({ required: true, default: [] })
|
||||
warStar: [{ // 关卡星级
|
||||
id: number; // 关卡 id
|
||||
star: number; // 星级
|
||||
}];
|
||||
|
||||
@prop({ required: true, default: 1 })
|
||||
loginCnt: number; // 登录次数
|
||||
@prop({ required: true })
|
||||
createTime: Date; // 创建时间
|
||||
@prop({ required: true })
|
||||
loginTime: Date; // 更新 / 登录时间
|
||||
|
||||
|
||||
public static async findByUid(uid: number, serverId: number, lean = true) {
|
||||
const role = await RoleModel.findOne({ 'userInfo.uid': uid, serverId }).lean(lean);
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async createRole(uid: number, serverId: number, roleInfo: {roleId: string; roleName: string; seqId: number; code: string}, lean = true) {
|
||||
const user = await User.findUserByUid(uid);
|
||||
if (!user) return null;
|
||||
const info = Object.assign(roleInfo, { userInfo: user, serverType: user.serverType, serverId });
|
||||
const role = await RoleModel.findOneAndUpdate({ 'userInfo.uid': uid, serverId }, info, { upsert: true, new: true }).lean(lean);
|
||||
return role;
|
||||
}
|
||||
}
|
||||
|
||||
export const RoleModel = getModelForClass(Role);
|
||||
@@ -1,64 +0,0 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
const moment = require('moment');
|
||||
|
||||
/**
|
||||
* 短信字段接口
|
||||
*/
|
||||
@index({ tel: 1 })
|
||||
export default class Sms extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
tel: string;
|
||||
|
||||
@prop({ required: true })
|
||||
telHash: string;
|
||||
|
||||
@prop({ required: true })
|
||||
code: string;
|
||||
|
||||
@prop({ required: true })
|
||||
used: boolean;
|
||||
|
||||
@prop({ required: true })
|
||||
updateTime: Date;
|
||||
|
||||
@prop({ required: true })
|
||||
countToday: number;
|
||||
|
||||
public static async findByTel(tel: string, lean = true) {
|
||||
const sms = await smsModel.findOne({ tel }).lean(lean);
|
||||
return sms;
|
||||
}
|
||||
|
||||
public static async updateByTel(tel: string, code: string, used: boolean, updateTime: Date, countToday: number, lean = true) {
|
||||
await smsModel.findOneAndUpdate({ tel }, { code, used, updateTime, countToday }, { upsert: true }).lean(lean);
|
||||
}
|
||||
|
||||
public static async validateSms(tel: string, code: string, lean = true) {
|
||||
const record = await smsModel.findOneAndUpdate({ tel, code, used: false }, { used: true }).lean(lean);
|
||||
return !!record;
|
||||
}
|
||||
|
||||
public async timeLimit(interval: number) {
|
||||
if (Date.now() > this.updateTime.getTime() + interval) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public async cntLimit(cnt: number) {
|
||||
console.log('hasSendToday:', this.hasSendToday());
|
||||
if (await this.hasSendToday() && this.countToday >= cnt) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public async hasSendToday() {
|
||||
console.log(moment(this.updateTime).format('YYYY-MM-DD'), moment(Date.now()).format('YYYY-MM-DD'));
|
||||
return moment(this.updateTime).format('YYYY-MM-DD') === moment(Date.now()).format('YYYY-MM-DD');
|
||||
}
|
||||
}
|
||||
|
||||
export const smsModel = getModelForClass(Sms);
|
||||
@@ -1,91 +0,0 @@
|
||||
import { COUNTER } from './../../../shared/consts/consts';
|
||||
import { CounterModel } from './Counter';
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
|
||||
/**
|
||||
* 用户字段接口
|
||||
*/
|
||||
@index({ tel: 1 })
|
||||
@index({ uid: 1 })
|
||||
export default class User extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
uid: number;
|
||||
|
||||
@prop({ required: true })
|
||||
username: string;
|
||||
|
||||
@prop({ required: true })
|
||||
token: string;
|
||||
|
||||
@prop({ required: true })
|
||||
tel: string;
|
||||
|
||||
@prop({ required: true })
|
||||
telHash: string;
|
||||
|
||||
@prop({ required: true })
|
||||
channelId: string;
|
||||
|
||||
@prop({ required: true })
|
||||
guestId: string;
|
||||
|
||||
// 最后登录 IP
|
||||
@prop({ required: true })
|
||||
ip: string;
|
||||
|
||||
@prop({ required: true })
|
||||
lastLoginTime: Date;
|
||||
|
||||
@prop({ required: true })
|
||||
createTime: Date;
|
||||
|
||||
platform: string;
|
||||
@prop({ required: true })
|
||||
platforms: [{
|
||||
platform: string; // 平台:ios, android, web, pc
|
||||
unionId: string; // 用户标识
|
||||
}];
|
||||
|
||||
@prop({ required: true })
|
||||
pkgName: string;
|
||||
|
||||
// 服务器类型:official, channel, ios, oversea
|
||||
@prop({ required: true })
|
||||
serverType: string;
|
||||
|
||||
// 账号是否被屏蔽
|
||||
@prop({ required: true })
|
||||
blocked: boolean;
|
||||
|
||||
public static async updateToken(tel: string, token: string, platform: string, pkgName: string, serverType: string, lean = true) {
|
||||
let user = await UserModel.findOne({ tel }).lean();
|
||||
const curTime: Date = new Date();
|
||||
let update = {};
|
||||
if (!user) {
|
||||
const uid = await CounterModel.getNewCounter(COUNTER.UID);
|
||||
update = Object.assign(update, { platform, pkgName, serverType, createTime: curTime, uid, username: `用户${uid}` });
|
||||
}
|
||||
update = Object.assign(update, { token, lastLoginTime: curTime });
|
||||
user = await UserModel.findOneAndUpdate({ tel }, update, { upsert: true, new: true }).lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async findUserByToken(token: string, lean = true) {
|
||||
const user = await UserModel.findOne({ token }).select('uid token').lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async findUserByTel(tel: string, lean = true) {
|
||||
const user = await UserModel.findOne({ tel }).select('uid tel').lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async findUserByUid(uid: number, lean = true) {
|
||||
const user = await UserModel.findOne({ uid }).select('uid tel').lean(lean);
|
||||
return user;
|
||||
}
|
||||
}
|
||||
|
||||
export const UserModel = getModelForClass(User);
|
||||
@@ -48,7 +48,6 @@ export default class Auth extends Service {
|
||||
if (telVerify.status !== 0) {
|
||||
return telVerify;
|
||||
}
|
||||
|
||||
const sms = await smsModel.findByTel(tel, false);
|
||||
if (sms) {
|
||||
if (await sms.timeLimit(10000)) {
|
||||
|
||||
@@ -21,7 +21,7 @@ export default (appInfo: EggAppInfo) => {
|
||||
|
||||
config.mongoose = {
|
||||
url: 'mongodb://root:zyz_2020@dds-8vbdb47c6fb58a541.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vbdb47c6fb58a542.mongodb.zhangbei.rds.aliyuncs.com:3717/admin?replicaSet=mgset-500808098', // 内网
|
||||
options: {},
|
||||
options: { useNewUrlParser: true, useUnifiedTopology: true },
|
||||
};
|
||||
|
||||
config.alinode = {
|
||||
|
||||
252
web-server/package-lock.json
generated
252
web-server/package-lock.json
generated
@@ -254,30 +254,6 @@
|
||||
"resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz",
|
||||
"integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs="
|
||||
},
|
||||
"@typegoose/typegoose": {
|
||||
"version": "7.3.4",
|
||||
"resolved": "https://registry.npm.taobao.org/@typegoose/typegoose/download/@typegoose/typegoose-7.3.4.tgz",
|
||||
"integrity": "sha1-HO0W0Z+cSTirrsSwNRwL+1YtQSE=",
|
||||
"requires": {
|
||||
"lodash": "^4.17.19",
|
||||
"loglevel": "^1.6.8",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"semver": "^7.3.2",
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "7.3.2",
|
||||
"resolved": "https://registry.npm.taobao.org/semver/download/semver-7.3.2.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.2.tgz",
|
||||
"integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg="
|
||||
},
|
||||
"tslib": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/tslib/download/tslib-2.0.1.tgz?cache=0&sync_timestamp=1596751904317&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-2.0.1.tgz",
|
||||
"integrity": "sha1-QQ6w0RPltjVkkO7HSWA3JbAhtD4="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@types/accepts": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npm.taobao.org/@types/accepts/download/@types/accepts-1.3.5.tgz",
|
||||
@@ -309,15 +285,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@types/bson": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npm.taobao.org/@types/bson/download/@types/bson-4.0.2.tgz",
|
||||
"integrity": "sha1-esy4WUL8ObvbdRXU3kN8BPaYEV8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/color-name": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npm.taobao.org/@types/color-name/download/@types/color-name-1.1.1.tgz?cache=0&sync_timestamp=1596837707987&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcolor-name%2Fdownload%2F%40types%2Fcolor-name-1.1.1.tgz",
|
||||
@@ -539,26 +506,6 @@
|
||||
"integrity": "sha1-NSOxJqCwSUguHDwRh3Rg92Yi/6s=",
|
||||
"dev": true
|
||||
},
|
||||
"@types/mongodb": {
|
||||
"version": "3.5.26",
|
||||
"resolved": "https://registry.npm.taobao.org/@types/mongodb/download/@types/mongodb-3.5.26.tgz?cache=0&sync_timestamp=1598396385471&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fmongodb%2Fdownload%2F%40types%2Fmongodb-3.5.26.tgz",
|
||||
"integrity": "sha1-qhAxWSW6EM3Hkx7ygMD/b1T9N/M=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/bson": "*",
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/mongoose": {
|
||||
"version": "5.7.36",
|
||||
"resolved": "https://registry.npm.taobao.org/@types/mongoose/download/@types/mongoose-5.7.36.tgz",
|
||||
"integrity": "sha1-La4oxjBBxq+6ioPqApafRjs/ECE=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/mongodb": "*",
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "7.10.11",
|
||||
"resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-7.10.11.tgz?cache=0&sync_timestamp=1596839227404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-7.10.11.tgz",
|
||||
@@ -2333,54 +2280,11 @@
|
||||
"file-uri-to-path": "1.0.0"
|
||||
}
|
||||
},
|
||||
"bl": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npm.taobao.org/bl/download/bl-2.2.1.tgz?cache=0&sync_timestamp=1598428657095&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbl%2Fdownload%2Fbl-2.2.1.tgz",
|
||||
"integrity": "sha1-jBGntzBlXF1WiYzchxIk9A/ZAdU=",
|
||||
"requires": {
|
||||
"readable-stream": "^2.3.5",
|
||||
"safe-buffer": "^5.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.7",
|
||||
"resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz",
|
||||
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
"isarray": "~1.0.0",
|
||||
"process-nextick-args": "~2.0.0",
|
||||
"safe-buffer": "~5.1.1",
|
||||
"string_decoder": "~1.1.1",
|
||||
"util-deprecate": "~1.0.1"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
|
||||
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"black-hole-stream": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/black-hole-stream/download/black-hole-stream-0.0.1.tgz",
|
||||
"integrity": "sha1-M7ega58edFPWBBuCl0SB0hUq6kI="
|
||||
},
|
||||
"bluebird": {
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.5.1.tgz",
|
||||
"integrity": "sha1-2VUfnemPH82h5oPRfukaBgLuLrk="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
|
||||
@@ -2423,11 +2327,6 @@
|
||||
"electron-to-chromium": "^1.3.47"
|
||||
}
|
||||
},
|
||||
"bson": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npm.taobao.org/bson/download/bson-1.1.5.tgz?cache=0&sync_timestamp=1597069108497&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbson%2Fdownload%2Fbson-1.1.5.tgz",
|
||||
"integrity": "sha1-Kqrpj832dQwISLDLod3sPHMGCjQ="
|
||||
},
|
||||
"buffer": {
|
||||
"version": "5.6.0",
|
||||
"resolved": "https://registry.npm.taobao.org/buffer/download/buffer-5.6.0.tgz",
|
||||
@@ -3141,11 +3040,6 @@
|
||||
"resolved": "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz",
|
||||
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
|
||||
},
|
||||
"denque": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npm.taobao.org/denque/download/denque-1.4.1.tgz",
|
||||
"integrity": "sha1-Z0T/dkHBSMP4ppwwflEjXB9KN88="
|
||||
},
|
||||
"depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
|
||||
@@ -6294,11 +6188,6 @@
|
||||
"object.assign": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"kareem": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npm.taobao.org/kareem/download/kareem-2.3.1.tgz",
|
||||
"integrity": "sha1-3vEtnJQQF/q/sA+HOvlenJnhvoc="
|
||||
},
|
||||
"keygrip": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/keygrip/download/keygrip-1.1.0.tgz",
|
||||
@@ -6551,7 +6440,8 @@
|
||||
"lodash": {
|
||||
"version": "4.17.20",
|
||||
"resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336097104&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz",
|
||||
"integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI="
|
||||
"integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=",
|
||||
"dev": true
|
||||
},
|
||||
"log-symbols": {
|
||||
"version": "2.2.0",
|
||||
@@ -6562,11 +6452,6 @@
|
||||
"chalk": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"loglevel": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.7.0.tgz?cache=0&sync_timestamp=1598447642950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.7.0.tgz",
|
||||
"integrity": "sha1-coFmhVp0DVnTjbAc9G8ELKoEG7A="
|
||||
},
|
||||
"long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/long/download/long-4.0.0.tgz",
|
||||
@@ -6657,12 +6542,6 @@
|
||||
"p-is-promise": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"memory-pager": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npm.taobao.org/memory-pager/download/memory-pager-1.5.0.tgz",
|
||||
"integrity": "sha1-2HUWVdItOEaCdByXLyw9bfo+ZrU=",
|
||||
"optional": true
|
||||
},
|
||||
"merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
|
||||
@@ -6815,81 +6694,6 @@
|
||||
"moment": ">= 2.9.0"
|
||||
}
|
||||
},
|
||||
"mongodb": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npm.taobao.org/mongodb/download/mongodb-3.6.0.tgz",
|
||||
"integrity": "sha1-ur1xcuxxfi7T+F4Hmz8aop3ORyQ=",
|
||||
"requires": {
|
||||
"bl": "^2.2.0",
|
||||
"bson": "^1.1.4",
|
||||
"denque": "^1.4.1",
|
||||
"require_optional": "^1.0.1",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"saslprep": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"mongoose": {
|
||||
"version": "5.10.1",
|
||||
"resolved": "https://registry.npm.taobao.org/mongoose/download/mongoose-5.10.1.tgz",
|
||||
"integrity": "sha1-zdCD1y4ZpcT/E0Fx19Gpl2vwH+k=",
|
||||
"requires": {
|
||||
"bson": "^1.1.4",
|
||||
"kareem": "2.3.1",
|
||||
"mongodb": "3.6.0",
|
||||
"mongoose-legacy-pluralize": "1.0.2",
|
||||
"mpath": "0.7.0",
|
||||
"mquery": "3.2.2",
|
||||
"ms": "2.1.2",
|
||||
"regexp-clone": "1.0.0",
|
||||
"safe-buffer": "5.2.1",
|
||||
"sift": "7.0.1",
|
||||
"sliced": "1.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz?cache=0&sync_timestamp=1589129010497&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY="
|
||||
}
|
||||
}
|
||||
},
|
||||
"mongoose-legacy-pluralize": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npm.taobao.org/mongoose-legacy-pluralize/download/mongoose-legacy-pluralize-1.0.2.tgz",
|
||||
"integrity": "sha1-O6n5H6UHtRhtOZ+0CFS/8Y+1Y+Q="
|
||||
},
|
||||
"mpath": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npm.taobao.org/mpath/download/mpath-0.7.0.tgz",
|
||||
"integrity": "sha1-IOgQLidrcXCdbgfp+NTQ9kGvv7g="
|
||||
},
|
||||
"mquery": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npm.taobao.org/mquery/download/mquery-3.2.2.tgz",
|
||||
"integrity": "sha1-4Tg6OVGFLOI+N/YZqbNQ8fs2ZOc=",
|
||||
"requires": {
|
||||
"bluebird": "3.5.1",
|
||||
"debug": "3.1.0",
|
||||
"regexp-clone": "^1.0.0",
|
||||
"safe-buffer": "5.1.2",
|
||||
"sliced": "1.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
|
||||
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1575472461218&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
}
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1575472461218&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
|
||||
@@ -8643,8 +8447,7 @@
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"pify": {
|
||||
"version": "3.0.0",
|
||||
@@ -9161,11 +8964,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"regexp-clone": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/regexp-clone/download/regexp-clone-1.0.0.tgz",
|
||||
"integrity": "sha1-Ii25Z2IydwViYLmSYmNUoEzpv2M="
|
||||
},
|
||||
"regexp.prototype.flags": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz",
|
||||
@@ -9251,22 +9049,6 @@
|
||||
"resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz",
|
||||
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
|
||||
},
|
||||
"require_optional": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/require_optional/download/require_optional-1.0.1.tgz",
|
||||
"integrity": "sha1-TPNaQkf2TKPfjC7yCMxJSxyo/C4=",
|
||||
"requires": {
|
||||
"resolve-from": "^2.0.0",
|
||||
"semver": "^5.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"resolve-from": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-2.0.0.tgz",
|
||||
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
|
||||
}
|
||||
}
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.17.0",
|
||||
"resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.17.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.17.0.tgz",
|
||||
@@ -9404,15 +9186,6 @@
|
||||
"resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
|
||||
},
|
||||
"saslprep": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npm.taobao.org/saslprep/download/saslprep-1.0.3.tgz",
|
||||
"integrity": "sha1-TAL5RrVs9UKX40e6EJPnrKxM8iY=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"sparse-bitfield": "^3.0.3"
|
||||
}
|
||||
},
|
||||
"scmp": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/scmp/download/scmp-2.1.0.tgz",
|
||||
@@ -9522,11 +9295,6 @@
|
||||
"object-inspect": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"sift": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/sift/download/sift-7.0.1.tgz?cache=0&sync_timestamp=1597975540611&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsift%2Fdownload%2Fsift-7.0.1.tgz",
|
||||
"integrity": "sha1-R9YsULFZ0xbxNy+LU/nBDNIaSwg="
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz?cache=0&sync_timestamp=1585253373618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.3.tgz",
|
||||
@@ -9548,11 +9316,6 @@
|
||||
"is-fullwidth-code-point": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"sliced": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/sliced/download/sliced-1.0.1.tgz",
|
||||
"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
|
||||
},
|
||||
"smart-buffer": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/smart-buffer/download/smart-buffer-4.1.0.tgz",
|
||||
@@ -9734,15 +9497,6 @@
|
||||
"resolved": "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz",
|
||||
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
|
||||
},
|
||||
"sparse-bitfield": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npm.taobao.org/sparse-bitfield/download/sparse-bitfield-3.0.3.tgz",
|
||||
"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"memory-pager": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"spdx-correct": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz?cache=0&sync_timestamp=1590161967473&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-correct%2Fdownload%2Fspdx-correct-3.1.1.tgz",
|
||||
|
||||
@@ -22,19 +22,16 @@
|
||||
"clean": "ets clean"
|
||||
},
|
||||
"dependencies": {
|
||||
"@typegoose/typegoose": "^7.3.4",
|
||||
"csprng": "^0.1.2",
|
||||
"egg": "^2.6.1",
|
||||
"egg-alinode": "^2.0.1",
|
||||
"egg-cors": "^2.2.3",
|
||||
"egg-scripts": "^2.6.0",
|
||||
"mongoose": "^5.10.1",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"underscore": "^1.10.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/mocha": "^2.2.40",
|
||||
"@types/mongoose": "^5.7.36",
|
||||
"@types/node": "^7.0.12",
|
||||
"@types/supertest": "^2.0.0",
|
||||
"autod": "^3.0.1",
|
||||
|
||||
Reference in New Issue
Block a user