diff --git a/backpack.config.js b/backpack.config.js index 5aea513..296dac9 100644 --- a/backpack.config.js +++ b/backpack.config.js @@ -3,7 +3,8 @@ module.exports = { webpack: (config, options, webpack) => { config.entry = { - index: './server/index.ts' + index: './server/index.ts', + task: './server/task.ts' } config.resolve = { diff --git a/data/register.ini b/data/register.ini new file mode 100644 index 0000000..421a025 --- /dev/null +++ b/data/register.ini @@ -0,0 +1,3 @@ +; 用户注册设置 + +invitation = true \ No newline at end of file diff --git a/data/store.ini b/data/store.ini deleted file mode 100644 index d31d38d..0000000 --- a/data/store.ini +++ /dev/null @@ -1,15 +0,0 @@ - -[files] -type = local -root_dir = @files -root_url = @files -max_size = 50MB -mime_type[] = image/png -mime_type[] = image/gif -mime_type[] = image/jpeg -mime_type[] = image/svg -mime_type[] = image/svg+xml -mime_type[] = application/json -mime_type[] = application/octet-stream -mime_type[] = text/markdown -mime_type[] = application/zip \ No newline at end of file diff --git a/package.json b/package.json index a904495..4631268 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,9 @@ "author": "thondery ", "license": "MIT", "scripts": { - "dev": "backpack dev", - "build": "nuxt build && backpack build" + "dev": "npm run clear && backpack dev", + "build": "npm run clear && nuxt build && backpack build", + "clear": "rimraf ./build ./.nuxt" }, "dependencies": { "body-parser": "^1.18.3", @@ -19,9 +20,12 @@ "errorhandler": "^1.5.0", "express": "^4.16.4", "express-session": "^1.15.6", + "inquirer-datepicker": "^0.1.2", + "inquirer-number-plus": "^1.0.0", "jsonwebtoken": "^8.4.0", "kenote-express-helper": "^1.0.5", "kenote-mongoose-helper": "^1.0.5", + "kenote-task-helper": "^1.0.2", "method-override": "^3.0.0", "mongoose": "^5.4.10", "nunjucks": "^3.1.7", @@ -29,6 +33,7 @@ "nuxt-class-component": "^1.2.1", "passport": "^0.4.0", "passport-jwt": "^4.0.0", + "tty-table": "^2.7.0", "vue-property-decorator": "^7.3.0" }, "devDependencies": { @@ -41,6 +46,7 @@ "@types/express-session": "^1.15.11", "@types/fs-extra": "^5.0.4", "@types/ini": "^1.3.30", + "@types/inquirer": "^0.0.43", "@types/jsonwebtoken": "^8.3.0", "@types/lodash": "^4.14.120", "@types/method-override": "^0.0.31", @@ -48,6 +54,7 @@ "@types/nunjucks": "^3.1.0", "@types/passport": "^1.0.0", "@types/passport-jwt": "^3.0.1", + "@types/uuid": "^3.4.4", "awesome-typescript-loader": "^5.2.1", "backpack-core": "^0.8.3", "node-sass": "^4.11.0", diff --git a/server/config/group.ts b/server/config/group.ts new file mode 100644 index 0000000..cc33a0b --- /dev/null +++ b/server/config/group.ts @@ -0,0 +1,27 @@ +import { createDocument } from '../types/proxys/group' + +export interface Groups { + [propsName: string]: createDocument +} + +export const setting: Groups = { + ['Creator']: { + name: '创建者', + level: 9999, + description: '创建者拥有系统所有权限,且只有一个帐号' + }, + ['superAdministrator']: { + name: '超级管理员', + level: 9998, + description: '除创建者外的最高权力者,拥有与创建者几乎相同的权限' + }, + ['teamAdministrator']: { + name: '团队管理员', + level: 7999, + description: '相关团队的最高权力者', + store: { + upload_type: [], + download_type: [] + } + } +} \ No newline at end of file diff --git a/server/models/exchange.ts b/server/models/exchange.ts new file mode 100644 index 0000000..e027047 --- /dev/null +++ b/server/models/exchange.ts @@ -0,0 +1,45 @@ +import { Schema, model } from 'mongoose' + +const schema: Schema = new Schema({ + id: { + type: Number, + default: 0, + index: { unique: true } + }, + name: { + type: String + }, + cdkey: { + type: String, + required: true + }, + type: { + type: String + }, + setting: { + type: Object, + default: {} + }, + stint: { + type: Number, + default: 0 + }, + uses: { + type: Number, + default: 0 + }, + used: { + type: Boolean, + default: false + }, + create_at: { + type: Date, + default: Date.now + }, + last_at: { + type: Date, + default: Date.now + } +}) + +export default model('exchange', schema) \ No newline at end of file diff --git a/server/models/group.ts b/server/models/group.ts index cb2da82..d421240 100644 --- a/server/models/group.ts +++ b/server/models/group.ts @@ -1,6 +1,6 @@ -import * as mongoose from 'mongoose' +import { Schema, model } from 'mongoose' -const schema: mongoose.Schema = new mongoose.Schema({ +const schema: Schema = new Schema({ id: { type: Number, default: 0, @@ -18,16 +18,10 @@ const schema: mongoose.Schema = new mongoose.Schema({ type: String, default: '' }, - team: [ - { - type: mongoose.Schema.Types.ObjectId, - ref: 'team' - } - ], store: { - type: mongoose.Schema.Types.ObjectId, + type: Schema.Types.ObjectId, ref: 'store' } }) -export default mongoose.model('group', schema) \ No newline at end of file +export default model('group', schema) \ No newline at end of file diff --git a/server/models/index.ts b/server/models/index.ts index 6c84805..465b8f7 100644 --- a/server/models/index.ts +++ b/server/models/index.ts @@ -5,12 +5,14 @@ import { Models } from '../types/model' import teamModel from './team' import storeModel from './store' import groupModel from './group' +import exchangeModel from './exchange' @MongoSetting(config.mongo) @ModelMount({ teamModel, storeModel, - groupModel + groupModel, + exchangeModel }) class MyMongoDB extends MongoDB {} diff --git a/server/models/store.ts b/server/models/store.ts index 352ee38..1e1346d 100644 --- a/server/models/store.ts +++ b/server/models/store.ts @@ -1,6 +1,6 @@ -import * as mongoose from 'mongoose' +import { Schema, model } from 'mongoose' -const schema: mongoose.Schema = new mongoose.Schema({ +const schema: Schema = new Schema({ id: { type: Number, default: 0, @@ -16,4 +16,4 @@ const schema: mongoose.Schema = new mongoose.Schema({ } }) -export default mongoose.model('store', schema) \ No newline at end of file +export default model('store', schema) \ No newline at end of file diff --git a/server/models/team.ts b/server/models/team.ts index ac82605..f51b5d6 100644 --- a/server/models/team.ts +++ b/server/models/team.ts @@ -1,6 +1,6 @@ -import * as mongoose from 'mongoose' +import { Schema, model } from 'mongoose' -const schema: mongoose.Schema = new mongoose.Schema({ +const schema: Schema = new Schema({ id: { type: Number, default: 0, @@ -28,4 +28,4 @@ const schema: mongoose.Schema = new mongoose.Schema({ } }) -export default mongoose.model('team', schema) \ No newline at end of file +export default model('team', schema) \ No newline at end of file diff --git a/server/nuxt.ts b/server/nuxt.ts index c5804b4..7f193fd 100644 --- a/server/nuxt.ts +++ b/server/nuxt.ts @@ -1,6 +1,9 @@ import { Nuxt, Builder } from 'nuxt' -import { Express } from 'express' +import { Express, NextFunction } from 'express' import nuxtConfig from '../nuxt.config' +import { IRequest, IResponse } from './types/resuful' +import { loadData } from './utils' +import { Register } from './types/config' const dev: boolean = process.env.NODE_ENV !== 'production' const nuxt: any = new Nuxt({ ...nuxtConfig, dev }) @@ -11,5 +14,13 @@ if (process.env.NODE_ENV === 'development') { } export default (app: Express): void => { - app.use(nuxt.render) + app.use(nuxtHandler, nuxt.render) +} + +async function nuxtHandler (req: IRequest, res: IResponse, next: NextFunction): Promise { + let isPage: boolean = !/^(\/\_nuxt|\/__webpack_hmr)|(\.ico|\.png)$/.test(req.path) + if (isPage) { + req.__register = loadData('data/register.ini') + } + return next() } \ No newline at end of file diff --git a/server/proxys/exchange.ts b/server/proxys/exchange.ts new file mode 100644 index 0000000..d2664e8 --- /dev/null +++ b/server/proxys/exchange.ts @@ -0,0 +1,32 @@ +import * as Bluebird from 'bluebird' +import * as mongoose from 'mongoose' +import { MongooseDao, MongooseDaoSetting, QueryOptions } from 'kenote-mongoose-helper' +import __Models from '../models' +import { createDocument, responseDocument } from '../types/proxys/exchange' +import * as uuid from 'uuid' + +(mongoose).Promise = Bluebird +const Model: mongoose.Model = > __Models.exchangeModel +const options: QueryOptions = { + populate: { path: '' }, + seqModel: __Models.seqModel +} + +@MongooseDaoSetting({ + idName: 'id' +}) +class ExchangeDao extends MongooseDao {} + +class ExchangeProxy { + + public Dao: MongooseDao = new ExchangeDao(Model, options) + + public async create (doc: createDocument): Bluebird { + let cdkey: string = uuid.v4() + let exchange: responseDocument | {} = await this.Dao.insert({ ...doc, cdkey }) + return exchange + } + +} + +export default new ExchangeProxy() \ No newline at end of file diff --git a/server/proxys/group.ts b/server/proxys/group.ts index 0c97bac..7f384e8 100644 --- a/server/proxys/group.ts +++ b/server/proxys/group.ts @@ -10,16 +10,10 @@ import { pick } from 'lodash' (mongoose).Promise = Bluebird const Model: mongoose.Model = > __Models.groupModel const options: QueryOptions = { - populate: [ - { - path: 'store', - select: ['upload_type', 'download_type'] - }, - { - path: 'team', - select: ['name', 'description'] - } - ], + populate: { + path: 'store', + select: ['upload_type', 'download_type'] + }, seqModel: __Models.seqModel } diff --git a/server/task.ts b/server/task.ts new file mode 100644 index 0000000..a9ea1a9 --- /dev/null +++ b/server/task.ts @@ -0,0 +1,22 @@ +import { TaskHelper, TaskSetting } from 'kenote-task-helper' +import initialize from './tasks/initialize' +import invitation from './tasks/invitation' + +@TaskSetting({ + title: '选择操作类型:', + tasks: [ + { + name: '初始化数据', + value: 'initialize', + script: initialize + }, + { + name: '注册邀请码', + value: 'invitation', + script: invitation + }, + ] +}) +class Task extends TaskHelper {} + +new Task().start() \ No newline at end of file diff --git a/server/tasks/initialize.ts b/server/tasks/initialize.ts new file mode 100644 index 0000000..a678cd9 --- /dev/null +++ b/server/tasks/initialize.ts @@ -0,0 +1,103 @@ +import * as inquirer from 'inquirer' +import * as mongoose from 'mongoose' +import { TaskSpinner } from 'kenote-task-helper' +import { MongooseDao } from 'kenote-mongoose-helper' +import __Models from '../models' +import Table from 'tty-table' + +import teamProxy from '../proxys/team' +import storeProxy from '../proxys/store' +import groupProxy from '../proxys/group' +import exchangeProxy from '../proxys/exchange' + +import { setting as groupSettings } from '../config/group' +import { responseDocument } from '../types/proxys/group' +import { TableHeader, TableStyle } from '../types/tty-table' + +const seqDao: MongooseDao = new MongooseDao(> __Models.seqModel) + +interface Options { + runing: boolean +} + +const tableStyle: TableStyle = { + borderStyle: 2, + paddingBottom: 0, + headerAlign: 'center', + align: 'center', + color: 'white', + truncate: '...' +} + +const bodyHeader: TableHeader[] = [ + { + value: 'ID', + width: 8 + }, + { + value: '用户组', + width: 20 + }, + { + value: '权级', + width: 13 + }, + { + value: '描述', + width: 80, + align: 'left' + } +] + +export default async function initialize (): Promise { + try { + let options: Options = await inquirer.prompt([ + { + type: 'confirm', + name: 'runing', + message: '您确定要初始化数据吗?', + default: false + } + ]) + if (!options.runing) { + return TaskSpinner(Promise.resolve(`Initialize Suspended.`)) + } + await Promise.all([ + seqDao.clear(), + teamProxy.Dao.clear(), + storeProxy.Dao.clear(), + groupProxy.Dao.clear(), + exchangeProxy.Dao.clear() + ]) + await createGroups() + + return TaskSpinner(Promise.resolve(`Initialize Finished.`)) + } catch (error) { + console.log(``) + console.error(error) + } +} + +async function createGroups (): Promise { + let groups: responseDocument[] = [] + for (let key of Object.keys(groupSettings)) { + groups.push( await groupProxy.create(groupSettings[key])) + } + let bodyer: any[] = toBodyer(groups) + let t3: any = Table(bodyHeader, bodyer, tableStyle) + console.log('\n', t3.render(), '\n') + return Promise.resolve(`用户组创建完成.`) +} + +function toBodyer (data: Array): Array { + let dataList: Array = [] + for (let item of data) { + dataList.push([ + item.id, + item.name, + item.level, + item.description + ]) + } + return dataList +} \ No newline at end of file diff --git a/server/tasks/invitation.ts b/server/tasks/invitation.ts new file mode 100644 index 0000000..ff1b397 --- /dev/null +++ b/server/tasks/invitation.ts @@ -0,0 +1,162 @@ +import * as inquirer from 'inquirer' +import { TaskSpinner } from 'kenote-task-helper' +import __Models from '../models' +import Table from 'tty-table' +import inquirerDatepicker from 'inquirer-datepicker' +import inquirerNumberPlus from 'inquirer-number-plus' +import { find } from 'lodash' +import moment from 'moment' + +import groupProxy from '../proxys/group' +import exchangeProxy from '../proxys/exchange' + +import { responseDocument as responseGroupDocument } from '../types/proxys/group' +import { responseDocument as responseExchangeDocument } from '../types/proxys/exchange' +import { TableHeader, TableStyle } from '../types/tty-table' + +inquirer.registerPrompt('datepicker', inquirerDatepicker) +inquirer.registerPrompt('number', inquirerNumberPlus) + +const tableStyle: TableStyle = { + borderStyle: 2, + paddingBottom: 0, + headerAlign: 'center', + align: 'center', + color: 'white', + truncate: '...' +} + +const bodyHeader: TableHeader[] = [ + { + value: '激活码', + width: 40 + }, + { + value: '功能', + width: 20 + }, + { + value: '最大使用次数', + width: 15 + }, + { + value: '已使用次数', + width: 12 + }, + { + value: '过期时间', + width: 24 + }, + { + value: '失效状态', + width: 12 + } +] + +interface Options { + group: string + stint: number + last_at: Date +} + +interface Operate { + type: string +} + +export default async function invitation (): Promise { + try { + let operate: Operate = await inquirer.prompt([ + { + type: 'list', + name: 'type', + message: '选择操作:', + choices: [ + { name: '列出邀请码', value: 'list' }, + { name: '创建邀请码', value: 'create' }, + ] + }, + ]) + switch (operate.type) { + case 'list': + return TaskSpinner(await invitationList()) + case 'create': + return TaskSpinner(await createInvitation()) + default: + break + } + return TaskSpinner(Promise.resolve(`Invitation Finished.`)) + } catch (error) { + console.log(``) + console.error(error) + } +} + +async function invitationList (): Promise { + let list: Array = await exchangeProxy.Dao.find({ type: 'register' }) + let bodyer: any[] = toBodyer(list) + let t3: any = Table(bodyHeader, bodyer, tableStyle) + console.log('\n', t3.render(), '\n') + return Promise.resolve(`查询邀请码列表完成.`) +} + +function toBodyer (data: Array): Array { + let dataList: Array = [] + for (let item of data) { + let Item: responseExchangeDocument = item + dataList.push([ + Item.cdkey, + Item.name, + Item.stint, + Item.uses || '0', + moment(item['last_at'] || '').format('YYYY-MM-DD hh:mm:ss'), + Item.used || Item.last_at.getTime() <= Date.now() ? '已失效' : '可使用' + ]) + } + return dataList +} + +async function createInvitation (): Promise { + let groups: responseGroupDocument[] = await groupProxy.Dao.find({ level: { $gt: 9000 }}) + if (groups.length === 0) { + return TaskSpinner(Promise.resolve(`没有获取到任何用户组数据,请先初始化数据.`)) + } + let groupChoices: { key: string, name: string }[] = [] + for (let item of groups) { + groupChoices.push({ key: item._id, name: item.name }) + } + let options: Options = await inquirer.prompt([ + { + type: 'list', + name: 'group', + message: '选择用户组:', + choices: groupChoices + }, + { + type: 'datepicker', + name: 'last_at', + message: '选择过期时间:', + format: ['Y', '/', 'MM', '/', 'DD', ' ', 'HH', ':', 'mm', ':', 'ss'] + }, + { + type: 'number', + name: 'stint', + message: '最大使用数量:', + default: 1, + min: -1, + max: 9999 + } + ]) + let exchange = await exchangeProxy.create({ + name: `注册 -> ${options.group}`, + type: 'register', + setting: { + group: ( find(groups, (o: responseGroupDocument): boolean => o.name === options.group))._id.toString() + }, + stint: options.stint, + last_at: options.last_at + }) + let bodyer: any[] = toBodyer([exchange]) + let t3: any = Table(bodyHeader, bodyer, tableStyle) + console.log('\n', t3.render(), '\n') + return Promise.resolve(`邀请码创建成功.`) +} \ No newline at end of file diff --git a/server/types/config.d.ts b/server/types/config.d.ts index 1f94774..ac8dba3 100644 --- a/server/types/config.d.ts +++ b/server/types/config.d.ts @@ -10,3 +10,7 @@ export interface Config { mongo: mongoSetting } + +export interface Register { + invitation: boolean +} \ No newline at end of file diff --git a/server/types/model.d.ts b/server/types/model.d.ts index ec06cb8..0158fa5 100644 --- a/server/types/model.d.ts +++ b/server/types/model.d.ts @@ -1,8 +1,9 @@ import * as mongoose from 'mongoose' export interface Models { - seqModel?: mongoose.Model - teamModel?: mongoose.Model - storeModel?: mongoose.Model - groupModel?: mongoose.Model + seqModel ?: mongoose.Model + teamModel ?: mongoose.Model + storeModel ?: mongoose.Model + groupModel ?: mongoose.Model + exchangeModel ?: mongoose.Model } \ No newline at end of file diff --git a/server/types/proxys/exchange.d.ts b/server/types/proxys/exchange.d.ts new file mode 100644 index 0000000..8488616 --- /dev/null +++ b/server/types/proxys/exchange.d.ts @@ -0,0 +1,22 @@ +import * as mongoose from 'mongoose' + +export interface createDocument { + name: string + type: string + setting: object + stint: number + last_at: Date +} + +export interface responseDocument extends mongoose.Document { + id: number + name: string + cdkey: string + type: string + setting: object + stint: number + uses: number + used: boolean + create_at: Date + last_at: Date +} \ No newline at end of file diff --git a/server/types/proxys/group.d.ts b/server/types/proxys/group.d.ts index ff22370..f3e95b9 100644 --- a/server/types/proxys/group.d.ts +++ b/server/types/proxys/group.d.ts @@ -1,13 +1,9 @@ import * as mongoose from 'mongoose' import { createDocument as createStoreDocument, responseDocument as responseStoreDocument } from './store' -import { responseDocument as responseTeamDocument } from './team' -import { ObjectID } from 'bson' export interface createDocument extends updateDocument { name: string level: number - store: createStoreDocument - team: ObjectID[] } export interface responseDocument extends mongoose.Document { @@ -16,7 +12,6 @@ export interface responseDocument extends mongoose.Document { level: number description: string store: responseStoreDocument - team: responseTeamDocument[] } export interface updateDocument { @@ -24,7 +19,6 @@ export interface updateDocument { level?: number description?: string store?: createStoreDocument - team?: ObjectID[] } export interface editDocument { diff --git a/server/types/resuful.d.ts b/server/types/resuful.d.ts index a108748..f2c463b 100644 --- a/server/types/resuful.d.ts +++ b/server/types/resuful.d.ts @@ -1,5 +1,6 @@ - -import { errorInfo } from 'kenote-express-helper' +import { Request, Response } from 'express' +import { errorInfo, IError } from 'kenote-express-helper' +import { Register } from './config' export interface resufulInfo { data: any @@ -13,4 +14,13 @@ export interface Payload { export interface JwtSign { (payload: Payload, iat?: number): string +} + +export interface IResponse extends Response { + api: (data: any, error?: number | IError | errorInfo, opts?: string[]) => Response + notfound: () => void +} + +export interface IRequest extends Request { + __register: Register } \ No newline at end of file diff --git a/server/types/tty-table.d.ts b/server/types/tty-table.d.ts new file mode 100644 index 0000000..3103cfc --- /dev/null +++ b/server/types/tty-table.d.ts @@ -0,0 +1,15 @@ + +export interface TableStyle { + borderStyle: number + paddingBottom: number + headerAlign: 'left' | 'center' | 'right' + align: 'left' | 'center' | 'right' + color: string + truncate: string +} + +export interface TableHeader { + value: string + width: number + align?: 'left' | 'center' | 'right' +} \ No newline at end of file diff --git a/store/index.ts b/store/index.ts new file mode 100644 index 0000000..5dbfa91 --- /dev/null +++ b/store/index.ts @@ -0,0 +1,31 @@ +import Vuex from 'vuex' +import * as root from './root' + +// More info about store: https://vuex.vuejs.org/en/core-concepts.html +// See https://nuxtjs.org/guide/vuex-store#classic-mode +// structure of the store: + // types: Types that represent the keys of the mutations to commit + // state: The information of our app, we can get or update it. + // getters: Get complex information from state + // action: Sync or async operations that commit mutations + // mutations: Modify the state + +interface ModulesStates { + +} + +export type RootState = root.State & ModulesStates + +const createStore = () => { + return new Vuex.Store({ + state: root.state(), + getters: root.getters, + mutations: root.mutations, + actions: root.actions, + modules: { + + } + }) +} + +export default createStore \ No newline at end of file diff --git a/store/root.ts b/store/root.ts new file mode 100644 index 0000000..d4e8533 --- /dev/null +++ b/store/root.ts @@ -0,0 +1,27 @@ +import { GetterTree, ActionContext, ActionTree, MutationTree } from 'vuex' +import { RootState } from 'store' +import { IRequest } from '~/server/types/resuful' + +export const types = {} + +export interface State {} + +export const state = (): State => ({}) + +export const getters: GetterTree = {} + +export interface Actions extends ActionTree { + nuxtServerInit(context: ActionContext, server: HTTPServer): void +} + +interface HTTPServer { + req: IRequest +} + +export const actions: Actions = { + async nuxtServerInit({ commit }, { req }) { + console.log(req.__register) + } +} + +export const mutations: MutationTree = {} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index bb05abb..4241ac1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -991,6 +991,14 @@ resolved "http://registry.npm.taobao.org/@types/ini/download/@types/ini-1.3.30.tgz#d1485459c9fad84e937414b832a2adb649eab379" integrity sha1-0UhUWcn62E6TdBS4MqKttknqs3k= +"@types/inquirer@^0.0.43": + version "0.0.43" + resolved "http://registry.npm.taobao.org/@types/inquirer/download/@types/inquirer-0.0.43.tgz#1eb0bbb4648e6cc568bd396c1e989f620ad01273" + integrity sha1-HrC7tGSObMVovTlsHpifYgrQEnM= + dependencies: + "@types/rx" "*" + "@types/through" "*" + "@types/jsonwebtoken@*", "@types/jsonwebtoken@^8.3.0": version "8.3.0" resolved "http://registry.npm.taobao.org/@types/jsonwebtoken/download/@types/jsonwebtoken-8.3.0.tgz#1fe79489df97b49273401ac3c8019cbf1dae4578" @@ -1082,6 +1090,107 @@ dependencies: "@types/node" "*" +"@types/rx-core-binding@*": + version "4.0.4" + resolved "http://registry.npm.taobao.org/@types/rx-core-binding/download/@types/rx-core-binding-4.0.4.tgz#d969d32f15a62b89e2862c17b3ee78fe329818d3" + integrity sha1-2WnTLxWmK4nihiwXs+54/jKYGNM= + dependencies: + "@types/rx-core" "*" + +"@types/rx-core@*": + version "4.0.3" + resolved "http://registry.npm.taobao.org/@types/rx-core/download/@types/rx-core-4.0.3.tgz#0b3354b1238cedbe2b74f6326f139dbc7a591d60" + integrity sha1-CzNUsSOM7b4rdPYybxOdvHpZHWA= + +"@types/rx-lite-aggregates@*": + version "4.0.3" + resolved "http://registry.npm.taobao.org/@types/rx-lite-aggregates/download/@types/rx-lite-aggregates-4.0.3.tgz#6efb2b7f3d5f07183a1cb2bd4b1371d7073384c2" + integrity sha1-bvsrfz1fBxg6HLK9SxNx1wczhMI= + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-async@*": + version "4.0.2" + resolved "http://registry.npm.taobao.org/@types/rx-lite-async/download/@types/rx-lite-async-4.0.2.tgz#27fbf0caeff029f41e2d2aae638b05e91ceb600c" + integrity sha1-J/vwyu/wKfQeLSquY4sF6RzrYAw= + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-backpressure@*": + version "4.0.3" + resolved "http://registry.npm.taobao.org/@types/rx-lite-backpressure/download/@types/rx-lite-backpressure-4.0.3.tgz#05abb19bdf87cc740196c355e5d0b37bb50b5d56" + integrity sha1-Bauxm9+HzHQBlsNV5dCze7ULXVY= + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-coincidence@*": + version "4.0.3" + resolved "http://registry.npm.taobao.org/@types/rx-lite-coincidence/download/@types/rx-lite-coincidence-4.0.3.tgz#80bd69acc4054a15cdc1638e2dc8843498cd85c0" + integrity sha1-gL1prMQFShXNwWOOLciENJjNhcA= + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-experimental@*": + version "4.0.1" + resolved "http://registry.npm.taobao.org/@types/rx-lite-experimental/download/@types/rx-lite-experimental-4.0.1.tgz#c532f5cbdf3f2c15da16ded8930d1b2984023cbd" + integrity sha1-xTL1y98/LBXaFt7Ykw0bKYQCPL0= + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-joinpatterns@*": + version "4.0.1" + resolved "http://registry.npm.taobao.org/@types/rx-lite-joinpatterns/download/@types/rx-lite-joinpatterns-4.0.1.tgz#f70fe370518a8432f29158cc92ffb56b4e4afc3e" + integrity sha1-9w/jcFGKhDLykVjMkv+1a05K/D4= + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-testing@*": + version "4.0.1" + resolved "http://registry.npm.taobao.org/@types/rx-lite-testing/download/@types/rx-lite-testing-4.0.1.tgz#21b19d11f4dfd6ffef5a9d1648e9c8879bfe21e9" + integrity sha1-IbGdEfTf1v/vWp0WSOnIh5v+Iek= + dependencies: + "@types/rx-lite-virtualtime" "*" + +"@types/rx-lite-time@*": + version "4.0.3" + resolved "http://registry.npm.taobao.org/@types/rx-lite-time/download/@types/rx-lite-time-4.0.3.tgz#0eda65474570237598f3448b845d2696f2dbb1c4" + integrity sha1-DtplR0VwI3WY80SLhF0mlvLbscQ= + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-virtualtime@*": + version "4.0.3" + resolved "http://registry.npm.taobao.org/@types/rx-lite-virtualtime/download/@types/rx-lite-virtualtime-4.0.3.tgz#4b30cacd0fe2e53af29f04f7438584c7d3959537" + integrity sha1-SzDKzQ/i5TrynwT3Q4WEx9OVlTc= + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite@*": + version "4.0.6" + resolved "http://registry.npm.taobao.org/@types/rx-lite/download/@types/rx-lite-4.0.6.tgz#3c02921c4244074234f26b772241bcc20c18c253" + integrity sha1-PAKSHEJEB0I08mt3IkG8wgwYwlM= + dependencies: + "@types/rx-core" "*" + "@types/rx-core-binding" "*" + +"@types/rx@*": + version "4.1.1" + resolved "http://registry.npm.taobao.org/@types/rx/download/@types/rx-4.1.1.tgz#598fc94a56baed975f194574e0f572fd8e627a48" + integrity sha1-WY/JSla67ZdfGUV04PVy/Y5iekg= + dependencies: + "@types/rx-core" "*" + "@types/rx-core-binding" "*" + "@types/rx-lite" "*" + "@types/rx-lite-aggregates" "*" + "@types/rx-lite-async" "*" + "@types/rx-lite-backpressure" "*" + "@types/rx-lite-coincidence" "*" + "@types/rx-lite-experimental" "*" + "@types/rx-lite-joinpatterns" "*" + "@types/rx-lite-testing" "*" + "@types/rx-lite-time" "*" + "@types/rx-lite-virtualtime" "*" + "@types/serve-static@*": version "1.13.2" resolved "http://registry.npm.taobao.org/@types/serve-static/download/@types/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48" @@ -1090,6 +1199,20 @@ "@types/express-serve-static-core" "*" "@types/mime" "*" +"@types/through@*": + version "0.0.29" + resolved "http://registry.npm.taobao.org/@types/through/download/@types/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93" + integrity sha1-cpQ6rJIuF5M5xlH6NKRCik1yL5M= + dependencies: + "@types/node" "*" + +"@types/uuid@^3.4.4": + version "3.4.4" + resolved "http://registry.npm.taobao.org/@types/uuid/download/@types/uuid-3.4.4.tgz#7af69360fa65ef0decb41fd150bf4ca5c0cefdf5" + integrity sha1-evaTYPpl7w3stB/RUL9MpcDO/fU= + dependencies: + "@types/node" "*" + "@vue/component-compiler-utils@^2.5.1": version "2.5.2" resolved "http://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-2.5.2.tgz#a8d57e773354ab10e4742c7d6a8dd86184d4d7be" @@ -1350,7 +1473,7 @@ ansi-colors@^3.0.0: resolved "http://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha1-V9NbhoboUeLMBMQD8cACA5dqGBM= -ansi-escapes@^3.1.0: +ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "http://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s= @@ -1803,6 +1926,13 @@ braces@^2.3.0, braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +breakword@^1.0.3: + version "1.0.3" + resolved "http://registry.npm.taobao.org/breakword/download/breakword-1.0.3.tgz#71e091bbb78bb4ef003cf3ed2b2e062c6927f7dd" + integrity sha1-ceCRu7eLtO8APPPtKy4GLGkn990= + dependencies: + wcwidth "^1.0.1" + brorand@^1.0.1: version "1.1.0" resolved "http://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -2079,6 +2209,16 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chardet@^0.4.0: + version "0.4.2" + resolved "http://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +chardet@^0.7.0: + version "0.7.0" + resolved "http://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha1-kAlISfCTfy7twkJdDSip5fDLrZ4= + check-types@^7.3.0: version "7.4.0" resolved "http://registry.npm.taobao.org/check-types/download/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" @@ -2151,6 +2291,18 @@ cli-boxes@^1.0.0: resolved "http://registry.npm.taobao.org/cli-boxes/download/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= +cli-cursor@^2.1.0: + version "2.1.0" + resolved "http://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^1.3.1: + version "1.3.1" + resolved "http://registry.npm.taobao.org/cli-spinners/download/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" + integrity sha1-ACwZkJEtDVlYDJO9NsBW3pnkJZo= + cli-table3@^0.5.0: version "0.5.1" resolved "http://registry.npm.taobao.org/cli-table3/download/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" @@ -2161,6 +2313,11 @@ cli-table3@^0.5.0: optionalDependencies: colors "^1.1.2" +cli-width@^2.0.0: + version "2.2.0" + resolved "http://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + cliui@^3.0.3, cliui@^3.2.0: version "3.2.0" resolved "http://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -2189,6 +2346,11 @@ clone-deep@^2.0.1: kind-of "^6.0.0" shallow-clone "^1.0.0" +clone@^1.0.2: + version "1.0.4" + resolved "http://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + coa@~2.0.1: version "2.0.2" resolved "http://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" @@ -2764,6 +2926,33 @@ csso@^3.5.0: dependencies: css-tree "1.0.0-alpha.29" +csv-generate@^2.2.2: + version "2.2.2" + resolved "http://registry.npm.taobao.org/csv-generate/download/csv-generate-2.2.2.tgz#c37808c5f3ead2deec940794073dd32d492adfd1" + integrity sha1-w3gIxfPq0t7slAeUBz3TLUkq39E= + +csv-parse@^3.1.2: + version "3.2.0" + resolved "http://registry.npm.taobao.org/csv-parse/download/csv-parse-3.2.0.tgz#9043b5921e7ecd5e3110947df1ef00d290dbeca7" + integrity sha1-kEO1kh5+zV4xEJR98e8A0pDb7Kc= + +csv-stringify@^4.3.1: + version "4.3.1" + resolved "http://registry.npm.taobao.org/csv-stringify/download/csv-stringify-4.3.1.tgz#7bee36f746ef555dd481a735a9e2938965f8478b" + integrity sha1-e+4290bvVV3Ugac1qeKTiWX4R4s= + dependencies: + lodash.get "~4.4.2" + +csv@^4.0.0: + version "4.0.0" + resolved "http://registry.npm.taobao.org/csv/download/csv-4.0.0.tgz#c7de44b9a0fd47f7a10db24064519f642a7ce92d" + integrity sha1-x95EuaD9R/ehDbJAZFGfZCp86S0= + dependencies: + csv-generate "^2.2.2" + csv-parse "^3.1.2" + csv-stringify "^4.3.1" + stream-transform "^1.0.7" + cuint@^0.2.2: version "0.2.2" resolved "http://registry.npm.taobao.org/cuint/download/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" @@ -2872,6 +3061,13 @@ defaults-deep@^0.2.4: is-extendable "^0.1.1" lazy-cache "^0.2.3" +defaults@^1.0.3: + version "1.0.3" + resolved "http://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "http://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -3385,6 +3581,24 @@ extend@~3.0.2: resolved "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo= +external-editor@^2.1.0: + version "2.2.0" + resolved "http://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha1-BFURz9jRM/OEZnPRBHwVTiFK09U= + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +external-editor@^3.0.3: + version "3.0.3" + resolved "http://registry.npm.taobao.org/external-editor/download/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha1-WGbbKal4Jtvkvzr9JAcOrZ6kOic= + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extglob@^2.0.4: version "2.0.4" resolved "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -4000,7 +4214,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.4.4: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= @@ -4123,6 +4337,62 @@ ini@^1.3.4, ini@~1.3.0: resolved "http://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc= +inquirer-datepicker@^0.1.2: + version "0.1.2" + resolved "http://registry.npm.taobao.org/inquirer-datepicker/download/inquirer-datepicker-0.1.2.tgz#134ca0c1266bf256bd3e7674b4efe85c1c091081" + integrity sha1-E0ygwSZr8la9PnZ0tO/oXBwJEIE= + dependencies: + chalk "^2.3.2" + cli-cursor "^2.1.0" + inquirer "^5.2.0" + lodash "^4.17.5" + moment "^2.22.0" + +inquirer-number-plus@^1.0.0: + version "1.0.0" + resolved "http://registry.npm.taobao.org/inquirer-number-plus/download/inquirer-number-plus-1.0.0.tgz#db5df52437da8d9caa557d96633965fad1c3bfcc" + integrity sha1-2131JDfajZyqVX2WYzll+tHDv8w= + dependencies: + inquirer "^6.0.0" + +inquirer@^5.2.0: + version "5.2.0" + resolved "http://registry.npm.taobao.org/inquirer/download/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + integrity sha1-2zUMK3Paynf/EkOWLp8i8JloVyY= + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^6.0.0, inquirer@^6.2.1: + version "6.2.2" + resolved "http://registry.npm.taobao.org/inquirer/download/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" + integrity sha1-RpQRdvZcnrIIBGJxSbdDohjyVAY= + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.11" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.0.0" + through "^2.3.6" + invariant@^2.2.2: version "2.2.4" resolved "http://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -4604,6 +4874,14 @@ kenote-mongoose-helper@^1.0.5: resolved "https://registry.npmjs.org/kenote-mongoose-helper/-/kenote-mongoose-helper-1.0.5.tgz#73f273f18fcad96ab5f9a0d90a5a11311a9be3cb" integrity sha512-bDIPGdsX/ymZoGEmyxkS6RI83Xqy5P8cYH1FFq8Bcg/JfVFHLOJiW87ghWqzZr/wpAk8IH8PJbZ3yhnlou3Kww== +kenote-task-helper@^1.0.2: + version "1.0.2" + resolved "http://registry.npm.taobao.org/kenote-task-helper/download/kenote-task-helper-1.0.2.tgz#1138e1b563dabbd00d1b80d05a2d3529d2aaedae" + integrity sha1-ETjhtWPau9ANG4DQWi01KdKq7a4= + dependencies: + inquirer "^6.2.1" + ora "^3.0.0" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -4748,6 +5026,11 @@ lodash.debounce@^4.0.8: resolved "http://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.get@~4.4.2: + version "4.4.2" + resolved "http://registry.npm.taobao.org/lodash.get/download/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + lodash.includes@^4.3.0: version "4.3.0" resolved "http://registry.npm.taobao.org/lodash.includes/download/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -4823,12 +5106,12 @@ lodash.uniqueid@^4.0.1: resolved "http://registry.npm.taobao.org/lodash.uniqueid/download/lodash.uniqueid-4.0.1.tgz#3268f26a7c88e4f4b1758d679271814e31fa5b26" integrity sha1-MmjyanyI5PSxdY1nknGBTjH6WyY= -lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.5, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10: version "4.17.11" resolved "http://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha1-s56mIp72B+zYniyN8SU2iRysm40= -log-symbols@^2.1.0: +log-symbols@^2.1.0, log-symbols@^2.2.0: version "2.2.0" resolved "http://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" integrity sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo= @@ -5142,6 +5425,11 @@ mixin-object@^2.0.1: dependencies: minimist "0.0.8" +moment@^2.22.0: + version "2.24.0" + resolved "http://registry.npm.taobao.org/moment/download/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha1-DQVdU/UFKqZTyfbraLtdEr9cK1s= + mongodb-core@3.1.11: version "3.1.11" resolved "http://registry.npm.taobao.org/mongodb-core/download/mongodb-core-3.1.11.tgz#b253038dbb4d7329f3d1c2ee5400bb0c9221fde5" @@ -5227,6 +5515,11 @@ mustache@^2.3.0: resolved "http://registry.npm.taobao.org/mustache/download/mustache-2.3.2.tgz#a6d4d9c3f91d13359ab889a812954f9230a3d0c5" integrity sha1-ptTZw/kdEzWauImoEpVPkjCj0MU= +mute-stream@0.0.7: + version "0.0.7" + resolved "http://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + nan@^2.10.0, nan@^2.9.2: version "2.12.1" resolved "http://registry.npm.taobao.org/nan/download/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" @@ -5619,6 +5912,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "http://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + opener@^1.5.1: version "1.5.1" resolved "http://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" @@ -5632,6 +5932,18 @@ optimize-css-assets-webpack-plugin@^5.0.1: cssnano "^4.1.0" last-call-webpack-plugin "^3.0.0" +ora@^3.0.0: + version "3.1.0" + resolved "http://registry.npm.taobao.org/ora/download/ora-3.1.0.tgz#dbedd8c03b5d017fb67083e87ee52f5ec89823ed" + integrity sha1-2+3YwDtdAX+2cIPofuUvXsiYI+0= + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^1.3.1" + log-symbols "^2.2.0" + strip-ansi "^5.0.0" + wcwidth "^1.0.1" + os-browserify@^0.3.0: version "0.3.0" resolved "http://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -7084,6 +7396,14 @@ resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.8.1: dependencies: path-parse "^1.0.6" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "http://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "http://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -7114,6 +7434,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +run-async@^2.2.0: + version "2.3.0" + resolved "http://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "http://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -7121,6 +7448,20 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" +rxjs@^5.5.2: + version "5.5.12" + resolved "http://registry.npm.taobao.org/rxjs/download/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha1-b6YbinfD15PbrycL7i9D9lLXQcw= + dependencies: + symbol-observable "1.0.1" + +rxjs@^6.4.0: + version "6.4.0" + resolved "http://registry.npm.taobao.org/rxjs/download/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" + integrity sha1-87sP572n+2nerAwW8XtQsLh5BQQ= + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -7351,6 +7692,15 @@ sliced@1.0.1: resolved "http://registry.npm.taobao.org/sliced/download/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= +smartwrap@^1.0.11: + version "1.0.11" + resolved "http://registry.npm.taobao.org/smartwrap/download/smartwrap-1.0.11.tgz#ee8f85878bfac89c1fa4da33e0877f729a8e2a74" + integrity sha1-7o+Fh4v6yJwfpNoz4Id/cpqOKnQ= + dependencies: + breakword "^1.0.3" + wcwidth "^1.0.1" + yargs "^12.0.5" + snapdragon-node@^2.0.1: version "2.1.1" resolved "http://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -7590,6 +7940,11 @@ stream-shift@^1.0.0: resolved "http://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +stream-transform@^1.0.7: + version "1.0.8" + resolved "http://registry.npm.taobao.org/stream-transform/download/stream-transform-1.0.8.tgz#54f721122d310eca855a16c97939881ab5bbb76c" + integrity sha1-VPchEi0xDsqFWhbJeTmIGrW7t2w= + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "http://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -7599,7 +7954,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4= @@ -7739,6 +8094,11 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@1.0.1: + version "1.0.1" + resolved "http://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + tapable@^0.2.7: version "0.2.9" resolved "http://registry.npm.taobao.org/tapable/download/tapable-0.2.9.tgz#af2d8bbc9b04f74ee17af2b4d9048f807acd18a8" @@ -7828,6 +8188,11 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" +through@^2.3.6: + version "2.3.8" + resolved "http://registry.npm.taobao.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + time-fix-plugin@^2.0.5: version "2.0.5" resolved "http://registry.npm.taobao.org/time-fix-plugin/download/time-fix-plugin-2.0.5.tgz#41c76e734217cc91a08ea525fdde56de119fb683" @@ -7850,7 +8215,7 @@ timsort@^0.3.0: resolved "http://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= -tmp@0.0.x: +tmp@0.0.x, tmp@^0.0.33: version "0.0.33" resolved "http://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha1-bTQzWIl2jSGyvNoKonfO07G/rfk= @@ -7955,6 +8320,18 @@ tty-browserify@0.0.0: resolved "http://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= +tty-table@^2.7.0: + version "2.7.0" + resolved "http://registry.npm.taobao.org/tty-table/download/tty-table-2.7.0.tgz#0e03b37435a040a9ed8f783a9bbc9a9660921e9f" + integrity sha1-DgOzdDWgQKntj3g6m7yalmCSHp8= + dependencies: + chalk "^2.4.2" + csv "^4.0.0" + smartwrap "^1.0.11" + strip-ansi "^5.0.0" + wcwidth "^1.0.1" + yargs "^12.0.5" + tunnel-agent@^0.6.0: version "0.6.0" resolved "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -8357,6 +8734,13 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" +wcwidth@^1.0.1: + version "1.0.1" + resolved "http://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + webpack-bundle-analyzer@^3.0.3: version "3.0.3" resolved "http://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.0.3.tgz#dbc7fff8f52058b6714a20fddf309d0790e3e0a0"