├── node-admin ├── client │ ├── babel.config.js │ ├── src │ │ ├── assets │ │ │ ├── bg.jpg │ │ │ ├── 404.gif │ │ │ ├── logo.png │ │ │ └── showcase.png │ │ ├── plugins │ │ │ └── element.js │ │ ├── views │ │ │ ├── 404.vue │ │ │ ├── Home.vue │ │ │ ├── Index.vue │ │ │ ├── InfoShow.vue │ │ │ ├── Login.vue │ │ │ ├── Register.vue │ │ │ └── FundList.vue │ │ ├── main.js │ │ ├── App.vue │ │ ├── store.js │ │ ├── http.js │ │ ├── router.js │ │ └── components │ │ │ ├── LeftMean.vue │ │ │ ├── HeadNav.vue │ │ │ └── Dialog.vue │ ├── public │ │ ├── favicon.ico │ │ ├── iconfont │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ ├── iconfont.woff2 │ │ │ ├── iconfont.css │ │ │ ├── demo.css │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.js │ │ │ └── demo_index.html │ │ ├── index.html │ │ └── css │ │ │ └── reset.css │ ├── .gitignore │ ├── README.md │ ├── package.json │ └── vue.config.js ├── plugins │ └── db.js ├── .gitignore ├── models │ ├── Users.js │ └── Profiles.js ├── server.js ├── config │ └── passport.js ├── package.json ├── routers │ └── api │ │ ├── profiles.js │ │ └── users.js └── yarn.lock ├── .gitignore ├── README.md └── LICENSE /node-admin/client/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /node-admin/client/src/assets/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ly1994lyy/vue-node-manager/HEAD/node-admin/client/src/assets/bg.jpg -------------------------------------------------------------------------------- /node-admin/client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ly1994lyy/vue-node-manager/HEAD/node-admin/client/public/favicon.ico -------------------------------------------------------------------------------- /node-admin/client/src/assets/404.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ly1994lyy/vue-node-manager/HEAD/node-admin/client/src/assets/404.gif -------------------------------------------------------------------------------- /node-admin/client/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ly1994lyy/vue-node-manager/HEAD/node-admin/client/src/assets/logo.png -------------------------------------------------------------------------------- /node-admin/client/src/assets/showcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ly1994lyy/vue-node-manager/HEAD/node-admin/client/src/assets/showcase.png -------------------------------------------------------------------------------- /node-admin/client/public/iconfont/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ly1994lyy/vue-node-manager/HEAD/node-admin/client/public/iconfont/iconfont.eot -------------------------------------------------------------------------------- /node-admin/client/public/iconfont/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ly1994lyy/vue-node-manager/HEAD/node-admin/client/public/iconfont/iconfont.ttf -------------------------------------------------------------------------------- /node-admin/client/public/iconfont/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ly1994lyy/vue-node-manager/HEAD/node-admin/client/public/iconfont/iconfont.woff -------------------------------------------------------------------------------- /node-admin/client/public/iconfont/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ly1994lyy/vue-node-manager/HEAD/node-admin/client/public/iconfont/iconfont.woff2 -------------------------------------------------------------------------------- /node-admin/client/src/plugins/element.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Element from 'element-ui' 3 | import 'element-ui/lib/theme-chalk/index.css' 4 | 5 | Vue.use(Element) 6 | -------------------------------------------------------------------------------- /node-admin/plugins/db.js: -------------------------------------------------------------------------------- 1 | module.exports= app => { 2 | const mongoose = require('mongoose') 3 | mongoose.connect('mongodb://localhost:27017/node-manager',{ 4 | useNewUrlParser:true, 5 | useFindAndModify: false, 6 | useUnifiedTopology:true 7 | }) 8 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /node-admin/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /node-admin/client/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /node-admin/client/src/views/404.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /node-admin/client/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import http from './http' 4 | import router from './router' 5 | import store from './store' 6 | import './plugins/element.js' 7 | 8 | import '../public/iconfont/iconfont.css' 9 | Vue.config.productionTip = false 10 | 11 | Vue.prototype.$http = http 12 | 13 | new Vue({ 14 | router, 15 | store, 16 | render: h => h(App) 17 | }).$mount('#app') 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 资金管理系统 2 | ### 1.项目环境介绍: 3 | 前端:Vue.js+ElementUi+Vue-Cli3 4 | 5 | 后端:Express+Mongoose 6 | 7 | 数据库:Mongodb 8 | 9 | 系统环境:Windows10 or Macos or Linux 10 | 11 | ### 2.项目文件说明: 12 | client文件夹:后端代码 13 | 14 | 剩余文件夹:前端代码 15 | 16 | ### 3.项目运行: 17 | 下载代码后分别在根目录进行和client目录进行 18 | 19 | 20 | ``` 21 | npm install 22 | ``` 23 | 24 | 然后在根目录运行 25 | 26 | ``` 27 | npm run serve 28 | ``` 29 | 打开浏览器 30 | 31 | http://localhost:8080 32 | 33 | 后端接口地址 34 | 35 | http://localhost:3000 36 | -------------------------------------------------------------------------------- /node-admin/client/README.md: -------------------------------------------------------------------------------- 1 | # client 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | npm run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | npm run lint 26 | ``` 27 | 28 | ### Customize configuration 29 | See [Configuration Reference](https://cli.vuejs.org/config/). 30 | -------------------------------------------------------------------------------- /node-admin/models/Users.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const scheme = new mongoose.Schema({ 4 | name:{ 5 | type:String, 6 | required:true 7 | }, 8 | email:{ 9 | type:String, 10 | required:true 11 | }, 12 | password:{ 13 | type:String, 14 | required:true 15 | }, 16 | avatar:{ 17 | type:String, 18 | }, 19 | identity:{ 20 | type:String, 21 | required:true 22 | }, 23 | date:{ 24 | type:Date, 25 | default:Date.now 26 | }, 27 | }) 28 | 29 | module.exports=mongoose.model('Users',scheme) -------------------------------------------------------------------------------- /node-admin/models/Profiles.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const scheme = new mongoose.Schema({ 4 | type:{ 5 | type:String, 6 | }, 7 | describe:{ 8 | type:String, 9 | }, 10 | incode:{ 11 | type:String, 12 | required:true 13 | }, 14 | expend:{ 15 | type:String, 16 | required:true 17 | }, 18 | cash:{ 19 | type:String, 20 | required:true 21 | }, 22 | remark:{ 23 | type:String 24 | }, 25 | date:{ 26 | type:Date, 27 | default:Date.now 28 | }, 29 | }) 30 | 31 | 32 | module.exports=mongoose.model('Profile',scheme) -------------------------------------------------------------------------------- /node-admin/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const bodyParse = require('body-parser') 3 | const app = express() 4 | const passport = require('passport') 5 | 6 | app.use(require('cors')()) 7 | app.use(express.json()) 8 | 9 | //使用body-parser中间件 10 | app.use(bodyParse.urlencoded({extended:false})) 11 | app.use(bodyParse.json()) 12 | 13 | 14 | 15 | require('./plugins/db')(app) 16 | require('./routers/api/users')(app) 17 | require('./routers/api/profiles')(app) 18 | 19 | //passport初始化 20 | app.use(passport.initialize()) 21 | require('./config/passport')(passport) 22 | 23 | 24 | 25 | app.listen(3000,()=>{ 26 | console.log('http://localhost:3000') 27 | }) -------------------------------------------------------------------------------- /node-admin/client/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | client 10 | 11 | 12 | 15 |
16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /node-admin/config/passport.js: -------------------------------------------------------------------------------- 1 | const JwtStrategy = require('passport-jwt').Strategy, 2 | ExtractJwt = require('passport-jwt').ExtractJwt; 3 | const mongoose = require('mongoose'); 4 | const User = mongoose.model("Users") 5 | var opts = {} 6 | opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken(); 7 | opts.secretOrKey = 'secret'; 8 | 9 | 10 | module.exports = passport => { 11 | passport.use(new JwtStrategy(opts, (jwt_payload, done)=> { 12 | User.findById(jwt_payload.id) 13 | .then(user=>{ 14 | if(user){ 15 | return done(null,user) 16 | } 17 | return done(null,false) 18 | }) 19 | .catch(err=>console.log(err)) 20 | })); 21 | } -------------------------------------------------------------------------------- /node-admin/client/src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /node-admin/client/src/views/Index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 24 | 25 | 41 | -------------------------------------------------------------------------------- /node-admin/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-admin", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "client-install": "npm install --prefix client", 8 | "client": "npm start --prefix client", 9 | "test": "echo \"Error: no test specified\" && exit 1", 10 | "serve": "nodemon ./server.js", 11 | "dev": "concurrently \"npm run serve\" \"npm run client\"" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC", 16 | "dependencies": { 17 | "bcrypt": "^5.0.0", 18 | "body-parser": "^1.19.0", 19 | "concurrently": "^5.3.0", 20 | "cors": "^2.8.5", 21 | "express": "^5.0.0-alpha.7", 22 | "gravatar": "^1.8.0", 23 | "jsonwebtoken": "^8.5.1", 24 | "mongoose": "^5.6.2", 25 | "passport": "^0.4.0", 26 | "passport-jwt": "^4.0.0" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /node-admin/client/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 32 | 33 | 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 ly1994lyy 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /node-admin/client/src/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | Vue.use(Vuex) 5 | 6 | const types = { 7 | SET_AUTHENTICATED:'SET_AUTHENTICATED', 8 | SET_USER:'SET_USER' 9 | } 10 | 11 | const state = { 12 | isAuthenticated:false, 13 | user:{} 14 | } 15 | 16 | const getters = { 17 | isAuthenticated:state=>state.isAuthenticated, 18 | user:state=>state.user 19 | } 20 | 21 | const mutations = { 22 | [types.SET_AUTHENTICATED](state,isAuthenticated){ 23 | if(isAuthenticated) state.isAuthenticated = isAuthenticated 24 | else state.isAuthenticated = false 25 | }, 26 | [types.SET_USER](state,user){ 27 | if(user) state.user = user 28 | else state.user = false 29 | } 30 | } 31 | 32 | const actions = { 33 | setAuthenticated:({ commit },isAuthenticated)=>{ 34 | commit(types.SET_AUTHENTICATED,isAuthenticated) 35 | }, 36 | setUser:({ commit },user)=>{ 37 | commit(types.SET_USER,user) 38 | }, 39 | clearCurrentState:({ commit })=>{ 40 | commit(types.SET_AUTHENTICATED,false) 41 | commit(types.SET_USER,null) 42 | } 43 | } 44 | 45 | export default new Vuex.Store({ 46 | state, 47 | getters, 48 | mutations, 49 | actions, 50 | }) 51 | -------------------------------------------------------------------------------- /node-admin/client/src/http.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import { Message,Loading } from 'element-ui' 3 | import router from './router' 4 | 5 | let loading; 6 | 7 | function startLoading(){ 8 | loading = Loading.service({ 9 | lock:true, 10 | text:'拼命加载中...', 11 | background:'rgba(0,0,0,0.7)' 12 | }) 13 | } 14 | 15 | function endLoading(){ 16 | loading.close() 17 | } 18 | 19 | const http = axios.create({ 20 | baseURL:'http://localhost:3000/' 21 | }) 22 | 23 | //请求拦截 24 | http.interceptors.request.use(config=>{ 25 | startLoading(); 26 | if(localStorage.eleToken){ 27 | //设置统一请求头 28 | config.headers.Authorization = localStorage.eleToken 29 | } 30 | 31 | return config; 32 | },error=>{return Promise.reject(error)}) 33 | 34 | 35 | 36 | //响应拦截 37 | http.interceptors.response.use(response=>{ 38 | endLoading(); 39 | return response; 40 | },error=>{ 41 | endLoading(); 42 | Message.error(error.response.data); 43 | //获取错误状态码 44 | const { status } = error.response 45 | if(status==401){ 46 | Message.error('token失效,请重新登录') 47 | //清楚token 48 | localStorage.removeItem('eleToken') 49 | router.push('/login ') 50 | } 51 | 52 | return Promise.reject(error) 53 | }) 54 | 55 | 56 | export default http -------------------------------------------------------------------------------- /node-admin/client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint", 9 | "start": "npm run serve" 10 | }, 11 | "dependencies": { 12 | "axios": "^0.19.0", 13 | "core-js": "^3.6.5", 14 | "element-ui": "^2.4.5", 15 | "jwt-decode": "^2.2.0", 16 | "vue": "^2.6.10", 17 | "vue-router": "^3.0.3", 18 | "vuex": "^3.0.1" 19 | }, 20 | "devDependencies": { 21 | "@vue/cli-plugin-babel": "^4.5.4", 22 | "@vue/cli-plugin-eslint": "^4.5.4", 23 | "@vue/cli-service": "^4.5.4", 24 | "babel-eslint": "^10.0.1", 25 | "eslint": "^7.7.0", 26 | "eslint-plugin-vue": "^6.2.2", 27 | "vue-cli-plugin-element": "^1.0.1", 28 | "vue-template-compiler": "^2.6.10" 29 | }, 30 | "eslintConfig": { 31 | "root": true, 32 | "env": { 33 | "node": true 34 | }, 35 | "extends": [ 36 | "plugin:vue/essential", 37 | "eslint:recommended" 38 | ], 39 | "rules": {}, 40 | "parserOptions": { 41 | "parser": "babel-eslint" 42 | } 43 | }, 44 | "postcss": { 45 | "plugins": { 46 | "autoprefixer": {} 47 | } 48 | }, 49 | "browserslist": [ 50 | "> 1%", 51 | "last 2 versions" 52 | ] 53 | } 54 | -------------------------------------------------------------------------------- /node-admin/client/src/router.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | import Index from './views/Index.vue' 4 | import Register from './views/Register.vue' 5 | import Notfound from './views/404.vue' 6 | import Login from './views/Login.vue' 7 | import Home from './views/Home.vue' 8 | import InfoShow from './views/InfoShow.vue' 9 | import FundList from './views/FundList.vue' 10 | 11 | Vue.use(Router) 12 | 13 | const router = new Router({ 14 | mode: 'history', 15 | base: process.env.BASE_URL, 16 | routes: [ 17 | { 18 | path: '/', 19 | redirect:'/index' 20 | }, 21 | { 22 | path: '/index', 23 | name: 'index', 24 | component: Index, 25 | children:[ 26 | {path:'',component:Home}, 27 | {path:'/home',name:'home',component:Home}, 28 | {path:'/infoshow',name:'infoshow',component:InfoShow}, 29 | {path:'/fundlist',name:'fundlist',component:FundList} 30 | ] 31 | }, 32 | { 33 | path: '/register', 34 | name: 'register', 35 | component: Register 36 | }, 37 | { 38 | path: '/login', 39 | name: 'login', 40 | component: Login 41 | }, 42 | { 43 | path: '*', 44 | name: '/404', 45 | component: Notfound 46 | }, 47 | ] 48 | }) 49 | 50 | 51 | //路由守卫 52 | router.beforeEach((to,from,next)=>{ 53 | const isLogin = localStorage.eleToken ? true : false 54 | if(to.path=='/login' || to.path=='/register'){ 55 | next(); 56 | }else{ 57 | isLogin ? next() : next('/login') 58 | } 59 | }) 60 | 61 | export default router -------------------------------------------------------------------------------- /node-admin/client/public/css/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v2.0 | 20110126 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, menu, nav, section { 29 | display: block; 30 | } 31 | body { 32 | line-height: 1; 33 | } 34 | ol, ul { 35 | list-style: none; 36 | } 37 | blockquote, q { 38 | quotes: none; 39 | } 40 | blockquote:before, blockquote:after, 41 | q:before, q:after { 42 | content: ''; 43 | content: none; 44 | } 45 | table { 46 | border-collapse: collapse; 47 | border-spacing: 0; 48 | } 49 | 50 | .el-loading{ 51 | position: absolute; 52 | z-index: 2000; 53 | background-color: rgba(255,255,255,.7); 54 | margin: 0; 55 | top: 0; 56 | right: 0; 57 | bottom: 0; 58 | left: 0; 59 | -webkit-transition: opacity .3s; 60 | transition: opacity .3s; 61 | } 62 | .el-loading-spinner{ 63 | top: 50%; 64 | margin-top: -21px; 65 | width: 100%; 66 | text-align: center; 67 | position: absolute; 68 | } 69 | -------------------------------------------------------------------------------- /node-admin/client/src/views/InfoShow.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 34 | 35 | 36 | 75 | -------------------------------------------------------------------------------- /node-admin/client/vue.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const debug = process.env.NODE_ENV !== 'production' 3 | 4 | module.exports = { 5 | //baseUrl: '/', // 根域上下文目录 6 | outputDir: 'dist', // 构建输出目录 7 | assetsDir: 'assets', // 静态资源目录 (js, css, img, fonts) 8 | lintOnSave: false, // 是否开启eslint保存检测,有效值:ture | false | 'error' 9 | runtimeCompiler: true, // 运行时版本是否需要编译 10 | transpileDependencies: [], // 默认babel-loader忽略mode_modules,这里可增加例外的依赖包名 11 | productionSourceMap: true, // 是否在构建生产包时生成 sourceMap 文件,false将提高构建速度 12 | configureWebpack: config => { // webpack配置,值位对象时会合并配置,为方法时会改写配置 13 | if (debug) { // 开发环境配置 14 | config.devtool = 'cheap-module-eval-source-map' 15 | } else { // 生产环境配置 16 | } 17 | // Object.assign(config, { // 开发生产共同配置 18 | // resolve: { 19 | // alias: { 20 | // '@': path.resolve(__dirname, './src'), 21 | // '@c': path.resolve(__dirname, './src/components'), 22 | // 'vue$': 'vue/dist/vue.esm.js' 23 | // } 24 | // } 25 | // }) 26 | }, 27 | chainWebpack: config => { // webpack链接API,用于生成和修改webapck配置,https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md 28 | // if (debug) { 29 | // // 本地开发配置 30 | // } else { 31 | // // 生产开发配置 32 | //} 33 | }, 34 | parallel: require('os').cpus().length > 1, // 构建时开启多进程处理babel编译 35 | pluginOptions: { // 第三方插件配置 36 | }, 37 | pwa: { // 单页插件相关配置 https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa 38 | }, 39 | devServer: { 40 | open: true, 41 | host: 'localhost', 42 | port: 8081, 43 | https: false, 44 | hotOnly: false, 45 | proxy: { // 配置跨域 46 | '/api': { 47 | target: 'http://localhost:3000/api/', 48 | ws: true, 49 | changOrigin: true, 50 | pathRewrite: { 51 | '^/api': '' 52 | } 53 | } 54 | }, 55 | before: app => { } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /node-admin/client/src/components/LeftMean.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 55 | 56 | -------------------------------------------------------------------------------- /node-admin/routers/api/profiles.js: -------------------------------------------------------------------------------- 1 | //信息接口 2 | module.exports= app =>{ 3 | const express = require('express') 4 | const router = express.Router() 5 | const Profile = require('../../models/Profiles') 6 | const passport = require('passport') 7 | 8 | 9 | //创建信息 10 | router.post('/add',passport.authenticate('jwt',{session:false}),(req,res)=>{ 11 | const profileFields = {} 12 | if(req.body.type) profileFields.type = req.body.type 13 | if(req.body.describe) profileFields.describe = req.body.describe 14 | if(req.body.incode) profileFields.incode = req.body.incode 15 | if(req.body.expend) profileFields.expend = req.body.expend 16 | if(req.body.cash) profileFields.cash = req.body.cash 17 | if(req.body.remark) profileFields.remark = req.body.remark 18 | new Profile(profileFields).save().then(profile=>{ 19 | res.json(profile) 20 | }) 21 | }) 22 | 23 | 24 | //获取全部信息 25 | router.get('/',passport.authenticate('jwt',{session:false}),(req,res)=>{ 26 | Profile.find().then(profile=>{ 27 | if(!profile){ 28 | return res.status(404).json('没有任何信息') 29 | } 30 | res.json(profile) 31 | }).catch(err=>res.status(404).json(err)) 32 | }) 33 | 34 | //获取单个信息 35 | router.get('/:id',passport.authenticate('jwt',{session:false}),(req,res)=>{ 36 | Profile.findOne({_id:req.params.id}).then(profile=>{ 37 | if(!profile){ 38 | return res.status(404).json('没有任何信息') 39 | } 40 | res.json(profile) 41 | }).catch(err=>res.status(404).json(err)) 42 | }) 43 | 44 | //编辑信息 45 | router.post('/edit/:id',passport.authenticate('jwt',{session:false}),(req,res)=>{ 46 | const profileFields = {} 47 | if(req.body.type) profileFields.type = req.body.type 48 | if(req.body.describe) profileFields.describe = req.body.describe 49 | if(req.body.incode) profileFields.incode = req.body.incode 50 | if(req.body.expend) profileFields.expend = req.body.expend 51 | if(req.body.cash) profileFields.cash = req.body.cash 52 | if(req.body.remark) profileFields.remark = req.body.remark 53 | Profile.findOneAndUpdate( 54 | {_id:req.params.id}, 55 | {$set:profileFields}, 56 | {new:true} 57 | ).then(profile=>res.json(profile)) 58 | }) 59 | 60 | //删除信息 61 | router.delete('/delete/:id',passport.authenticate('jwt',{session:false}),(req,res)=>{ 62 | Profile.findOneAndDelete({_id:req.params.id}).then(profile=>{ 63 | profile.save().then(profile=>res.json(profile)) 64 | }).catch(err=>res.status(404).json('删除成功')) 65 | }) 66 | 67 | 68 | app.use('/api/profiles',router) 69 | } 70 | 71 | 72 | -------------------------------------------------------------------------------- /node-admin/routers/api/users.js: -------------------------------------------------------------------------------- 1 | //登录和注册接口 2 | module.exports= app =>{ 3 | const express = require('express') 4 | const router = express.Router() 5 | const User = require('../../models/Users') 6 | const bcrypt = require('bcrypt') 7 | const gravatar = require('gravatar') 8 | const jwt = require('jsonwebtoken') 9 | const passport = require('passport') 10 | 11 | router.get('/test',(req,res)=>{ 12 | res.json( 13 | {msg:'login works'} 14 | ) 15 | }) 16 | 17 | //注册接口 18 | router.post('/register',(req,res)=>{ 19 | User.findOne({email:req.body.email}) 20 | .then((user)=>{ 21 | if(user){ 22 | return res.status(400).json('邮箱已被注册!') 23 | }else{ 24 | const url = gravatar.url(req.body.email, {s: '200', r: 'pg', d: 'mm'}); 25 | const newUser = new User({ 26 | name:req.body.name, 27 | email:req.body.email, 28 | password:req.body.password, 29 | identity:req.body.identity 30 | }) 31 | //密码加密 32 | bcrypt.genSalt(10, function(err, salt) { 33 | bcrypt.hash(newUser.password, salt, (err, hash)=> { 34 | if(err) throw err; 35 | newUser.password = hash; 36 | newUser.save() 37 | .then(user=>res.json(user)) 38 | .catch(err=>console.log(err)) 39 | }); 40 | }); 41 | } 42 | }) 43 | }) 44 | 45 | 46 | //登录接口 47 | router.post('/login',(req,res)=>{ 48 | const email = req.body.email 49 | const password = req.body.password 50 | User.findOne({email}) 51 | .then(user => { 52 | if(!user){ 53 | return res.status(400).json('用户不存在!') 54 | } 55 | bcrypt.compare(password, user.password) 56 | .then(isMatch=>{ 57 | if(isMatch){ 58 | const rule = { 59 | id:user.id, 60 | name:user.name, 61 | avatar:user.avatar, 62 | identity:user.identity 63 | } 64 | jwt.sign(rule,'secret',{ expiresIn:3600 },(err,token)=>{ 65 | if(err) throw err; 66 | res.json({ 67 | success:true, 68 | token:'Bearer '+token 69 | }) 70 | }) 71 | }else{ 72 | return res.status(400).json('密码错误') 73 | } 74 | }) 75 | }) 76 | .catch() 77 | }) 78 | 79 | 80 | router.get('/current',passport.authenticate('jwt',{session:false}),(req,res)=>{ 81 | res.json({ 82 | id:req.user.id, 83 | name:req.user.name, 84 | email:req.user.email, 85 | identity:req.user.identity 86 | }) 87 | }) 88 | 89 | app.use('/api/users',router) 90 | } 91 | 92 | 93 | -------------------------------------------------------------------------------- /node-admin/client/src/components/HeadNav.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 62 | 63 | -------------------------------------------------------------------------------- /node-admin/client/src/components/Dialog.vue: -------------------------------------------------------------------------------- 1 | 42 | 43 | 96 | -------------------------------------------------------------------------------- /node-admin/client/src/views/Login.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 77 | 78 | 122 | 123 | -------------------------------------------------------------------------------- /node-admin/client/public/iconfont/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: "iconfont"; 2 | src: url('iconfont.eot?t=1562300998299'); /* IE9 */ 3 | src: url('iconfont.eot?t=1562300998299#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAlcAAsAAAAAEawAAAkPAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCEFAqUXJAnATYCJAMwCxoABCAFhG0HgSkbkg4jkjBWHNk/D2y3KQUiwzDU+mFj3ugBA9ZyBstnYayvzdDgvgdP336/O7uz+t5HzBON5k00FLOQSL+S/HRCpobFSmCItnnH/6P+U688mL3S3tp4VglGsqh+toataV0k1tqMpZHAKqoBAgj0Hs7lM+tTPy7JEXr0hUtyhaT84Of0hJxQE3JC7v/fz9W9YR6ibd7Wy3vf78wfppY4RJpWbTRxSSMSqRAKIRIyqWIjNj2MRfFYiYvoiyFAZsQS2XzePiaisFHQ6J6uToglFzolQYhWrxyoA/AZjGgeTTPwFH+//LFcBIOz8KX2L7fOWS2+PxDmn5FmFTDro4B3GFhgCShIU017wKawFJuyloayewQ/ETGYEkpncf0+/P8/hVw8orRMnzktBCIWhyeRqTAo0v/nedhUI+S9vIKCr0eAInpEKEaBhaKHg6J6eChOjwTF65GhBHbd5k4YWZd5CBTlzuDAX3lunw7oA9OwdxU0wJbjOM0R7lKThMgENKB1f1iduzxH21pTmhRqGzrpU0tLWuFMcttI1c/5OtVDErDabJZaLLLr1xOt1vR2qVmZYLWKQ5FYoddVMvUDWxipedLJYn94KSj3gJDQHQ2uToA4uNgO9EeCciP9QHHfk6ddcOZcUJkEENB0JcB0wflgQnFw3kEXhU6cHw1kxwtxWGRxMxSs5Ckbq89DTHGhpongr/g6qNmcYaz25x2vdATHcwBgcv3iExmq/PimGhcpR3na2ZQPoTHPH1rxLlCxataZAO6JKieWvtI3Zd8/EXOu6pqqqeaC4nx1Y5KyOO8gNF5oUl0755jdPklpzKJUGkYtVRn0IqVWoVudpwycotbnnhCLWUyVHwGz8glClQsAYaqBiMaUbxStxlECZLdHCIo73bFDXdFkUYebACUxOT9hGhFPBmctA3y4qgG2w/QTTrqk285sTkk3P5ASpRLC+iiZ0MkB/hGI1Ycaoq1xhdZOq0fr8OxmZau7eeQBc7s5qlZaVMfURlhiSywdFtcW2aE2VYvb9TEHr3ddj2xILK6XX7Z6H7s+5JLF67B5PxCBalCVXPXGJfkHRXMhB4xU6/24qnxj+WpBYbsreqAjkizp8sAOdqbpK3HeyWpnJKsmgH/6XdOIV0hNfBJQaygNp0JCleQxeiEolxCEWKcTUI1NoM2ug4SZQqi9EqSxlCJ0GmoGI2woUYhEWq0A1FMVAaqaXSsi0qe4WnnxMIN4oWKo1OJqqY5r1UDIqInRnCLVMgDqIOyWqgFg9I0OEZ6Dms3UvjiAhlrjCrVQpjwp8l+mhtaoyBK77KB6gM6kOkH5kZ1HBnCca0+h+vj0k3mKfIKrymVyfImcScktSUBuQTKSZM6eEDlqHcxTllYWANYRi4Tf5MB5Vw2Qi8jc5SuxmBxPJKYK/fMHDaQql0DMmy18VT7Sc4znacERXbbMkyJOe2KnT+UlHe4H7Yws3/sucQd0YB3LDo+F/e37fyOxyoqlOQckNZ9nuDqzHERx8oLxAzoBO+wSvGtZqupYfOrUsIM6eLDsUmfhjEq7Rqdy5WD/jdFOIORBqJuX6d4qT3fPVfdMXm40TE2BtLvg6FZ4FVsgd5ML2FHy06Jo8Sn5HPkpcZT4tDyKTdIuJHs+ek7cxR67SxzFvtvyEnfZ0eKdY9ld8nPyePZ5drz8RgkNU1Ih7aW8a4o13V0Vtyp+kieXWv/u24p7YWC/gRfcuM0JVsGv3x+I+6J7+I30YwCf8F7jo+K2Ls7lRNXmTN3kbmjvvIW2UJOpu9StG7W57kxjbSQ3Fww9vyvFNSUFs5dvGuuNtWPeYzfJ7bF77Zva6y64WlCoIldZ4Zz4JRW6Fq5zMGZZ4WfafJZazZrHmh/CfDdBo2aR/ASdth51CLiDHndDDe+bipBChHZDDa7IcXCnWeGG6j80FdYxXgDRu4JokrEp6CGIsek5lNhGDH3EfOhsHNtYHyNgHhFDt6F5TxtBTI+CsQXdI6ttO40R1LuyzrAFK8R2L1g4PkQiQRDfEhLfEvgcm71pwJIqUxN/5sdb08q9/3u//94mxQsdScfvX0uvUPQGzCTLgabf9u7bO8id5A5WyNcKgUNVxJ48O4ld3p6+h7FTcqONJy/C8+thMW7gh3+wXn+FsyFNsJ3eLmmhW+6M4yHCeHSC3TgQjUpCklfjApqaGhO5R4NRCehKOvkz8TH3TVp9HHBhL8Qw7Y0pQKHJ+Jph0r0xvJi9NE+GTsDsUjEe5hMRrx26ZwAbXy3F+8BxGIUK47F1rsKTCmj291whEjLbq2KRWPx+jBdDYtOwVYY64TnDKhT6haDjIC8mlA6R2DliQdiC3FLhOdpmBe9B9zE4oDxZjMmwGsc8jCYMjEMv9cJJaZDaeEgyzIEiJfuGGdRBUpIi6T6b8g7Rw+unoPcPzfspVYcCu0owzWca6UGGTnA5x6bMe7ld85uK/E2ttkByObnghNee5lRn392pPtvhIVjms4x8mAAXL4YJ9YKj9AQ4rVRzAbkcrG8H7P9fixiIiRNbkfNIWFK1bUDiJ+kzJK7Mo3KHbUTmLiP955KmQkSBig4UIL1+UzcC/XVJdzP5/b/aEn+zhTfpz4Njdn75M/aH0QyG3C8oxcL/s0/LSICbgw5EfxwsvMyBLGf2xC6dzIEksClhAQBwMwaAX9Ese3BvGzbqB4dCYFviPAUL2AA3QLQQX0AR0l2BAQJEABshUTeK7MTL4ZW5VF11iQoLvqComvhW1Iz8QB0hv9BAyJ+iaeVfaiGmuqLns/kJ+9ZR7yFFO0cPnB2QqyQTb95LGr8iL0I7JcHZ6hPTjJQEUzMmlS8oMV3HLlnJrTxnwFIVwbO1A4ahgjhVPrq5JlARn+s66+6quSqq9DxIIVseanqAY2dIXIrEJs71al//CnGFkC2d0uvQ8BNKZWjpwKQx5kAvJjlXr/vSMlPiLDlRBvyOKSUCnomi0JQpINbX8yFXTiOWKImd02k0Nq9J274lusVN3Hx98m+tM2JFxYmXIFGSZKmklgb9k0+SF7YMaZAvY7Z2GJEt69HWpOzMVfEuMLfHZMYTKslF0coE7gU1SXq47W9JCreUqZk7KxU=') format('woff2'), 5 | url('iconfont.woff?t=1562300998299') format('woff'), 6 | url('iconfont.ttf?t=1562300998299') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ 7 | url('iconfont.svg?t=1562300998299#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family: "iconfont" !important; 12 | font-size: 16px; 13 | font-style: normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .icon-zijinguanli:before { 19 | content: "\e8a0"; 20 | } 21 | 22 | .icon-zijinguanli1:before { 23 | content: "\e613"; 24 | } 25 | 26 | .icon-yemian:before { 27 | content: "\e602"; 28 | } 29 | 30 | .icon-zijinguanli2:before { 31 | content: "\e61c"; 32 | } 33 | 34 | .icon-yemian-copy-copy:before { 35 | content: "\e603"; 36 | } 37 | 38 | .icon-yemian1:before { 39 | content: "\e604"; 40 | } 41 | 42 | .icon-yonghu:before { 43 | content: "\e600"; 44 | } 45 | 46 | .icon-shezhi:before { 47 | content: "\e601"; 48 | } 49 | 50 | .icon-index:before { 51 | content: "\e605"; 52 | } 53 | 54 | .icon-xinxiguanli:before { 55 | content: "\e606"; 56 | } 57 | 58 | .icon-xinxi:before { 59 | content: "\e607"; 60 | } 61 | 62 | -------------------------------------------------------------------------------- /node-admin/client/src/views/Register.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 91 | 92 | 128 | 129 | -------------------------------------------------------------------------------- /node-admin/client/src/views/FundList.vue: -------------------------------------------------------------------------------- 1 | 130 | 131 | 277 | 278 | 295 | -------------------------------------------------------------------------------- /node-admin/client/public/iconfont/demo.css: -------------------------------------------------------------------------------- 1 | /* Logo 字体 */ 2 | @font-face { 3 | font-family: "iconfont logo"; 4 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); 5 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), 6 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), 7 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), 8 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); 9 | } 10 | 11 | .logo { 12 | font-family: "iconfont logo"; 13 | font-size: 160px; 14 | font-style: normal; 15 | -webkit-font-smoothing: antialiased; 16 | -moz-osx-font-smoothing: grayscale; 17 | } 18 | 19 | /* tabs */ 20 | .nav-tabs { 21 | position: relative; 22 | } 23 | 24 | .nav-tabs .nav-more { 25 | position: absolute; 26 | right: 0; 27 | bottom: 0; 28 | height: 42px; 29 | line-height: 42px; 30 | color: #666; 31 | } 32 | 33 | #tabs { 34 | border-bottom: 1px solid #eee; 35 | } 36 | 37 | #tabs li { 38 | cursor: pointer; 39 | width: 100px; 40 | height: 40px; 41 | line-height: 40px; 42 | text-align: center; 43 | font-size: 16px; 44 | border-bottom: 2px solid transparent; 45 | position: relative; 46 | z-index: 1; 47 | margin-bottom: -1px; 48 | color: #666; 49 | } 50 | 51 | 52 | #tabs .active { 53 | border-bottom-color: #f00; 54 | color: #222; 55 | } 56 | 57 | .tab-container .content { 58 | display: none; 59 | } 60 | 61 | /* 页面布局 */ 62 | .main { 63 | padding: 30px 100px; 64 | width: 960px; 65 | margin: 0 auto; 66 | } 67 | 68 | .main .logo { 69 | color: #333; 70 | text-align: left; 71 | margin-bottom: 30px; 72 | line-height: 1; 73 | height: 110px; 74 | margin-top: -50px; 75 | overflow: hidden; 76 | *zoom: 1; 77 | } 78 | 79 | .main .logo a { 80 | font-size: 160px; 81 | color: #333; 82 | } 83 | 84 | .helps { 85 | margin-top: 40px; 86 | } 87 | 88 | .helps pre { 89 | padding: 20px; 90 | margin: 10px 0; 91 | border: solid 1px #e7e1cd; 92 | background-color: #fffdef; 93 | overflow: auto; 94 | } 95 | 96 | .icon_lists { 97 | width: 100% !important; 98 | overflow: hidden; 99 | *zoom: 1; 100 | } 101 | 102 | .icon_lists li { 103 | width: 100px; 104 | margin-bottom: 10px; 105 | margin-right: 20px; 106 | text-align: center; 107 | list-style: none !important; 108 | cursor: default; 109 | } 110 | 111 | .icon_lists li .code-name { 112 | line-height: 1.2; 113 | } 114 | 115 | .icon_lists .icon { 116 | display: block; 117 | height: 100px; 118 | line-height: 100px; 119 | font-size: 42px; 120 | margin: 10px auto; 121 | color: #333; 122 | -webkit-transition: font-size 0.25s linear, width 0.25s linear; 123 | -moz-transition: font-size 0.25s linear, width 0.25s linear; 124 | transition: font-size 0.25s linear, width 0.25s linear; 125 | } 126 | 127 | .icon_lists .icon:hover { 128 | font-size: 100px; 129 | } 130 | 131 | .icon_lists .svg-icon { 132 | /* 通过设置 font-size 来改变图标大小 */ 133 | width: 1em; 134 | /* 图标和文字相邻时,垂直对齐 */ 135 | vertical-align: -0.15em; 136 | /* 通过设置 color 来改变 SVG 的颜色/fill */ 137 | fill: currentColor; 138 | /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 139 | normalize.css 中也包含这行 */ 140 | overflow: hidden; 141 | } 142 | 143 | .icon_lists li .name, 144 | .icon_lists li .code-name { 145 | color: #666; 146 | } 147 | 148 | /* markdown 样式 */ 149 | .markdown { 150 | color: #666; 151 | font-size: 14px; 152 | line-height: 1.8; 153 | } 154 | 155 | .highlight { 156 | line-height: 1.5; 157 | } 158 | 159 | .markdown img { 160 | vertical-align: middle; 161 | max-width: 100%; 162 | } 163 | 164 | .markdown h1 { 165 | color: #404040; 166 | font-weight: 500; 167 | line-height: 40px; 168 | margin-bottom: 24px; 169 | } 170 | 171 | .markdown h2, 172 | .markdown h3, 173 | .markdown h4, 174 | .markdown h5, 175 | .markdown h6 { 176 | color: #404040; 177 | margin: 1.6em 0 0.6em 0; 178 | font-weight: 500; 179 | clear: both; 180 | } 181 | 182 | .markdown h1 { 183 | font-size: 28px; 184 | } 185 | 186 | .markdown h2 { 187 | font-size: 22px; 188 | } 189 | 190 | .markdown h3 { 191 | font-size: 16px; 192 | } 193 | 194 | .markdown h4 { 195 | font-size: 14px; 196 | } 197 | 198 | .markdown h5 { 199 | font-size: 12px; 200 | } 201 | 202 | .markdown h6 { 203 | font-size: 12px; 204 | } 205 | 206 | .markdown hr { 207 | height: 1px; 208 | border: 0; 209 | background: #e9e9e9; 210 | margin: 16px 0; 211 | clear: both; 212 | } 213 | 214 | .markdown p { 215 | margin: 1em 0; 216 | } 217 | 218 | .markdown>p, 219 | .markdown>blockquote, 220 | .markdown>.highlight, 221 | .markdown>ol, 222 | .markdown>ul { 223 | width: 80%; 224 | } 225 | 226 | .markdown ul>li { 227 | list-style: circle; 228 | } 229 | 230 | .markdown>ul li, 231 | .markdown blockquote ul>li { 232 | margin-left: 20px; 233 | padding-left: 4px; 234 | } 235 | 236 | .markdown>ul li p, 237 | .markdown>ol li p { 238 | margin: 0.6em 0; 239 | } 240 | 241 | .markdown ol>li { 242 | list-style: decimal; 243 | } 244 | 245 | .markdown>ol li, 246 | .markdown blockquote ol>li { 247 | margin-left: 20px; 248 | padding-left: 4px; 249 | } 250 | 251 | .markdown code { 252 | margin: 0 3px; 253 | padding: 0 5px; 254 | background: #eee; 255 | border-radius: 3px; 256 | } 257 | 258 | .markdown strong, 259 | .markdown b { 260 | font-weight: 600; 261 | } 262 | 263 | .markdown>table { 264 | border-collapse: collapse; 265 | border-spacing: 0px; 266 | empty-cells: show; 267 | border: 1px solid #e9e9e9; 268 | width: 95%; 269 | margin-bottom: 24px; 270 | } 271 | 272 | .markdown>table th { 273 | white-space: nowrap; 274 | color: #333; 275 | font-weight: 600; 276 | } 277 | 278 | .markdown>table th, 279 | .markdown>table td { 280 | border: 1px solid #e9e9e9; 281 | padding: 8px 16px; 282 | text-align: left; 283 | } 284 | 285 | .markdown>table th { 286 | background: #F7F7F7; 287 | } 288 | 289 | .markdown blockquote { 290 | font-size: 90%; 291 | color: #999; 292 | border-left: 4px solid #e9e9e9; 293 | padding-left: 0.8em; 294 | margin: 1em 0; 295 | } 296 | 297 | .markdown blockquote p { 298 | margin: 0; 299 | } 300 | 301 | .markdown .anchor { 302 | opacity: 0; 303 | transition: opacity 0.3s ease; 304 | margin-left: 8px; 305 | } 306 | 307 | .markdown .waiting { 308 | color: #ccc; 309 | } 310 | 311 | .markdown h1:hover .anchor, 312 | .markdown h2:hover .anchor, 313 | .markdown h3:hover .anchor, 314 | .markdown h4:hover .anchor, 315 | .markdown h5:hover .anchor, 316 | .markdown h6:hover .anchor { 317 | opacity: 1; 318 | display: inline-block; 319 | } 320 | 321 | .markdown>br, 322 | .markdown>p>br { 323 | clear: both; 324 | } 325 | 326 | 327 | .hljs { 328 | display: block; 329 | background: white; 330 | padding: 0.5em; 331 | color: #333333; 332 | overflow-x: auto; 333 | } 334 | 335 | .hljs-comment, 336 | .hljs-meta { 337 | color: #969896; 338 | } 339 | 340 | .hljs-string, 341 | .hljs-variable, 342 | .hljs-template-variable, 343 | .hljs-strong, 344 | .hljs-emphasis, 345 | .hljs-quote { 346 | color: #df5000; 347 | } 348 | 349 | .hljs-keyword, 350 | .hljs-selector-tag, 351 | .hljs-type { 352 | color: #a71d5d; 353 | } 354 | 355 | .hljs-literal, 356 | .hljs-symbol, 357 | .hljs-bullet, 358 | .hljs-attribute { 359 | color: #0086b3; 360 | } 361 | 362 | .hljs-section, 363 | .hljs-name { 364 | color: #63a35c; 365 | } 366 | 367 | .hljs-tag { 368 | color: #333333; 369 | } 370 | 371 | .hljs-title, 372 | .hljs-attr, 373 | .hljs-selector-id, 374 | .hljs-selector-class, 375 | .hljs-selector-attr, 376 | .hljs-selector-pseudo { 377 | color: #795da3; 378 | } 379 | 380 | .hljs-addition { 381 | color: #55a532; 382 | background-color: #eaffea; 383 | } 384 | 385 | .hljs-deletion { 386 | color: #bd2c00; 387 | background-color: #ffecec; 388 | } 389 | 390 | .hljs-link { 391 | text-decoration: underline; 392 | } 393 | 394 | /* 代码高亮 */ 395 | /* PrismJS 1.15.0 396 | https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ 397 | /** 398 | * prism.js default theme for JavaScript, CSS and HTML 399 | * Based on dabblet (http://dabblet.com) 400 | * @author Lea Verou 401 | */ 402 | code[class*="language-"], 403 | pre[class*="language-"] { 404 | color: black; 405 | background: none; 406 | text-shadow: 0 1px white; 407 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 408 | text-align: left; 409 | white-space: pre; 410 | word-spacing: normal; 411 | word-break: normal; 412 | word-wrap: normal; 413 | line-height: 1.5; 414 | 415 | -moz-tab-size: 4; 416 | -o-tab-size: 4; 417 | tab-size: 4; 418 | 419 | -webkit-hyphens: none; 420 | -moz-hyphens: none; 421 | -ms-hyphens: none; 422 | hyphens: none; 423 | } 424 | 425 | pre[class*="language-"]::-moz-selection, 426 | pre[class*="language-"] ::-moz-selection, 427 | code[class*="language-"]::-moz-selection, 428 | code[class*="language-"] ::-moz-selection { 429 | text-shadow: none; 430 | background: #b3d4fc; 431 | } 432 | 433 | pre[class*="language-"]::selection, 434 | pre[class*="language-"] ::selection, 435 | code[class*="language-"]::selection, 436 | code[class*="language-"] ::selection { 437 | text-shadow: none; 438 | background: #b3d4fc; 439 | } 440 | 441 | @media print { 442 | 443 | code[class*="language-"], 444 | pre[class*="language-"] { 445 | text-shadow: none; 446 | } 447 | } 448 | 449 | /* Code blocks */ 450 | pre[class*="language-"] { 451 | padding: 1em; 452 | margin: .5em 0; 453 | overflow: auto; 454 | } 455 | 456 | :not(pre)>code[class*="language-"], 457 | pre[class*="language-"] { 458 | background: #f5f2f0; 459 | } 460 | 461 | /* Inline code */ 462 | :not(pre)>code[class*="language-"] { 463 | padding: .1em; 464 | border-radius: .3em; 465 | white-space: normal; 466 | } 467 | 468 | .token.comment, 469 | .token.prolog, 470 | .token.doctype, 471 | .token.cdata { 472 | color: slategray; 473 | } 474 | 475 | .token.punctuation { 476 | color: #999; 477 | } 478 | 479 | .namespace { 480 | opacity: .7; 481 | } 482 | 483 | .token.property, 484 | .token.tag, 485 | .token.boolean, 486 | .token.number, 487 | .token.constant, 488 | .token.symbol, 489 | .token.deleted { 490 | color: #905; 491 | } 492 | 493 | .token.selector, 494 | .token.attr-name, 495 | .token.string, 496 | .token.char, 497 | .token.builtin, 498 | .token.inserted { 499 | color: #690; 500 | } 501 | 502 | .token.operator, 503 | .token.entity, 504 | .token.url, 505 | .language-css .token.string, 506 | .style .token.string { 507 | color: #9a6e3a; 508 | background: hsla(0, 0%, 100%, .5); 509 | } 510 | 511 | .token.atrule, 512 | .token.attr-value, 513 | .token.keyword { 514 | color: #07a; 515 | } 516 | 517 | .token.function, 518 | .token.class-name { 519 | color: #DD4A68; 520 | } 521 | 522 | .token.regex, 523 | .token.important, 524 | .token.variable { 525 | color: #e90; 526 | } 527 | 528 | .token.important, 529 | .token.bold { 530 | font-weight: bold; 531 | } 532 | 533 | .token.italic { 534 | font-style: italic; 535 | } 536 | 537 | .token.entity { 538 | cursor: help; 539 | } 540 | -------------------------------------------------------------------------------- /node-admin/client/public/iconfont/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | Created by iconfont 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /node-admin/client/public/iconfont/iconfont.js: -------------------------------------------------------------------------------- 1 | !function(l){var c,a='',t=(c=document.getElementsByTagName("script"))[c.length-1].getAttribute("data-injectcss");if(t&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}!function(c){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(c,0);else{var t=function(){document.removeEventListener("DOMContentLoaded",t,!1),c()};document.addEventListener("DOMContentLoaded",t,!1)}else document.attachEvent&&(e=c,i=l.document,o=!1,(n=function(){try{i.documentElement.doScroll("left")}catch(c){return void setTimeout(n,50)}a()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,a())});function a(){o||(o=!0,e())}var e,i,o,n}(function(){var c,t;(c=document.createElement("div")).innerHTML=a,a=null,(t=c.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",function(c,t){t.firstChild?function(c,t){t.parentNode.insertBefore(c,t)}(c,t.firstChild):t.appendChild(c)}(t,document.body))})}(window); -------------------------------------------------------------------------------- /node-admin/client/public/iconfont/demo_index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IconFont Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |

19 | 29 |
30 |
31 |
    32 | 33 |
  • 34 | 35 |
    资金管理
    36 |
    
    37 |
  • 38 | 39 |
  • 40 | 41 |
    资金管理
    42 |
    
    43 |
  • 44 | 45 |
  • 46 | 47 |
    首页-选中
    48 |
    
    49 |
  • 50 | 51 |
  • 52 | 53 |
    资金管理
    54 |
    
    55 |
  • 56 | 57 |
  • 58 | 59 |
    首页-选中
    60 |
    
    61 |
  • 62 | 63 |
  • 64 | 65 |
    首页-选中
    66 |
    
    67 |
  • 68 | 69 |
  • 70 | 71 |
    用户
    72 |
    
    73 |
  • 74 | 75 |
  • 76 | 77 |
    设 置
    78 |
    
    79 |
  • 80 | 81 |
  • 82 | 83 |
    首页-选中
    84 |
    
    85 |
  • 86 | 87 |
  • 88 | 89 |
    信息管理
    90 |
    
    91 |
  • 92 | 93 |
  • 94 | 95 |
    信息管理
    96 |
    
    97 |
  • 98 | 99 |
100 |
101 |

Unicode 引用

102 |
103 | 104 |

Unicode 是字体在网页端最原始的应用方式,特点是:

105 |
    106 |
  • 兼容性最好,支持 IE6+,及所有现代浏览器。
  • 107 |
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • 108 |
  • 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
  • 109 |
110 |
111 |

注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式

112 |
113 |

Unicode 使用步骤如下:

114 |

第一步:拷贝项目下面生成的 @font-face

115 |
@font-face {
117 |   font-family: 'iconfont';
118 |   src: url('iconfont.eot');
119 |   src: url('iconfont.eot?#iefix') format('embedded-opentype'),
120 |       url('iconfont.woff2') format('woff2'),
121 |       url('iconfont.woff') format('woff'),
122 |       url('iconfont.ttf') format('truetype'),
123 |       url('iconfont.svg#iconfont') format('svg');
124 | }
125 | 
126 |

第二步:定义使用 iconfont 的样式

127 |
.iconfont {
129 |   font-family: "iconfont" !important;
130 |   font-size: 16px;
131 |   font-style: normal;
132 |   -webkit-font-smoothing: antialiased;
133 |   -moz-osx-font-smoothing: grayscale;
134 | }
135 | 
136 |

第三步:挑选相应图标并获取字体编码,应用于页面

137 |
138 | <span class="iconfont">&#x33;</span>
140 | 
141 |
142 |

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

143 |
144 |
145 |
146 |
147 |
    148 | 149 |
  • 150 | 151 |
    152 | 资金管理 153 |
    154 |
    .icon-zijinguanli 155 |
    156 |
  • 157 | 158 |
  • 159 | 160 |
    161 | 资金管理 162 |
    163 |
    .icon-zijinguanli1 164 |
    165 |
  • 166 | 167 |
  • 168 | 169 |
    170 | 首页-选中 171 |
    172 |
    .icon-yemian 173 |
    174 |
  • 175 | 176 |
  • 177 | 178 |
    179 | 资金管理 180 |
    181 |
    .icon-zijinguanli2 182 |
    183 |
  • 184 | 185 |
  • 186 | 187 |
    188 | 首页-选中 189 |
    190 |
    .icon-yemian-copy-copy 191 |
    192 |
  • 193 | 194 |
  • 195 | 196 |
    197 | 首页-选中 198 |
    199 |
    .icon-yemian1 200 |
    201 |
  • 202 | 203 |
  • 204 | 205 |
    206 | 用户 207 |
    208 |
    .icon-yonghu 209 |
    210 |
  • 211 | 212 |
  • 213 | 214 |
    215 | 设 置 216 |
    217 |
    .icon-shezhi 218 |
    219 |
  • 220 | 221 |
  • 222 | 223 |
    224 | 首页-选中 225 |
    226 |
    .icon-index 227 |
    228 |
  • 229 | 230 |
  • 231 | 232 |
    233 | 信息管理 234 |
    235 |
    .icon-xinxiguanli 236 |
    237 |
  • 238 | 239 |
  • 240 | 241 |
    242 | 信息管理 243 |
    244 |
    .icon-xinxi 245 |
    246 |
  • 247 | 248 |
249 |
250 |

font-class 引用

251 |
252 | 253 |

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

254 |

与 Unicode 使用方式相比,具有如下特点:

255 |
    256 |
  • 兼容性良好,支持 IE8+,及所有现代浏览器。
  • 257 |
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • 258 |
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • 259 |
  • 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
  • 260 |
261 |

使用步骤如下:

262 |

第一步:引入项目下面生成的 fontclass 代码:

263 |
<link rel="stylesheet" href="./iconfont.css">
264 | 
265 |

第二步:挑选相应图标并获取类名,应用于页面:

266 |
<span class="iconfont icon-xxx"></span>
267 | 
268 |
269 |

" 270 | iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

271 |
272 |
273 |
274 |
275 |
    276 | 277 |
  • 278 | 281 |
    资金管理
    282 |
    #icon-zijinguanli
    283 |
  • 284 | 285 |
  • 286 | 289 |
    资金管理
    290 |
    #icon-zijinguanli1
    291 |
  • 292 | 293 |
  • 294 | 297 |
    首页-选中
    298 |
    #icon-yemian
    299 |
  • 300 | 301 |
  • 302 | 305 |
    资金管理
    306 |
    #icon-zijinguanli2
    307 |
  • 308 | 309 |
  • 310 | 313 |
    首页-选中
    314 |
    #icon-yemian-copy-copy
    315 |
  • 316 | 317 |
  • 318 | 321 |
    首页-选中
    322 |
    #icon-yemian1
    323 |
  • 324 | 325 |
  • 326 | 329 |
    用户
    330 |
    #icon-yonghu
    331 |
  • 332 | 333 |
  • 334 | 337 |
    设 置
    338 |
    #icon-shezhi
    339 |
  • 340 | 341 |
  • 342 | 345 |
    首页-选中
    346 |
    #icon-index
    347 |
  • 348 | 349 |
  • 350 | 353 |
    信息管理
    354 |
    #icon-xinxiguanli
    355 |
  • 356 | 357 |
  • 358 | 361 |
    信息管理
    362 |
    #icon-xinxi
    363 |
  • 364 | 365 |
366 |
367 |

Symbol 引用

368 |
369 | 370 |

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 371 | 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

372 |
    373 |
  • 支持多色图标了,不再受单色限制。
  • 374 |
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • 375 |
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • 376 |
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • 377 |
378 |

使用步骤如下:

379 |

第一步:引入项目下面生成的 symbol 代码:

380 |
<script src="./iconfont.js"></script>
381 | 
382 |

第二步:加入通用 CSS 代码(引入一次就行):

383 |
<style>
384 | .icon {
385 |   width: 1em;
386 |   height: 1em;
387 |   vertical-align: -0.15em;
388 |   fill: currentColor;
389 |   overflow: hidden;
390 | }
391 | </style>
392 | 
393 |

第三步:挑选相应图标并获取类名,应用于页面:

394 |
<svg class="icon" aria-hidden="true">
395 |   <use xlink:href="#icon-xxx"></use>
396 | </svg>
397 | 
398 |
399 |
400 | 401 |
402 |
403 | 422 | 423 | 424 | -------------------------------------------------------------------------------- /node-admin/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/color-name@^1.1.1": 6 | version "1.1.1" 7 | 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#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 8 | integrity sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA= 9 | 10 | abbrev@1: 11 | version "1.1.1" 12 | resolved "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 13 | integrity sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg= 14 | 15 | accepts@~1.3.7: 16 | version "1.3.7" 17 | resolved "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 18 | integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80= 19 | dependencies: 20 | mime-types "~2.1.24" 21 | negotiator "0.6.2" 22 | 23 | ansi-regex@^2.0.0: 24 | version "2.1.1" 25 | resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 26 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 27 | 28 | ansi-regex@^3.0.0: 29 | version "3.0.0" 30 | resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 31 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 32 | 33 | ansi-regex@^4.1.0: 34 | version "4.1.0" 35 | resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 36 | integrity sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc= 37 | 38 | ansi-regex@^5.0.0: 39 | version "5.0.0" 40 | resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 41 | integrity sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U= 42 | 43 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 44 | version "3.2.1" 45 | resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 46 | integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0= 47 | dependencies: 48 | color-convert "^1.9.0" 49 | 50 | ansi-styles@^4.0.0: 51 | version "4.2.1" 52 | resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 53 | integrity sha1-kK51xCTQCNJiTFvynq0xd+v881k= 54 | dependencies: 55 | "@types/color-name" "^1.1.1" 56 | color-convert "^2.0.1" 57 | 58 | aproba@^1.0.3: 59 | version "1.2.0" 60 | resolved "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 61 | integrity sha1-aALmJk79GMeQobDVF/DyYnvyyUo= 62 | 63 | are-we-there-yet@~1.1.2: 64 | version "1.1.5" 65 | resolved "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 66 | integrity sha1-SzXClE8GKov82mZBB2A1D+nd/CE= 67 | dependencies: 68 | delegates "^1.0.0" 69 | readable-stream "^2.0.6" 70 | 71 | array-flatten@2.1.1: 72 | version "2.1.1" 73 | resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" 74 | integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= 75 | 76 | balanced-match@^1.0.0: 77 | version "1.0.0" 78 | resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 79 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 80 | 81 | bcrypt@^5.0.0: 82 | version "5.0.0" 83 | resolved "https://registry.npm.taobao.org/bcrypt/download/bcrypt-5.0.0.tgz#051407c7cd5ffbfb773d541ca3760ea0754e37e2" 84 | integrity sha1-BRQHx81f+/t3PVQco3YOoHVON+I= 85 | dependencies: 86 | node-addon-api "^3.0.0" 87 | node-pre-gyp "0.15.0" 88 | 89 | bl@^2.2.0: 90 | version "2.2.0" 91 | resolved "https://registry.npm.taobao.org/bl/download/bl-2.2.0.tgz#e1a574cdf528e4053019bb800b041c0ac88da493" 92 | integrity sha1-4aV0zfUo5AUwGbuACwQcCsiNpJM= 93 | dependencies: 94 | readable-stream "^2.3.5" 95 | safe-buffer "^5.1.1" 96 | 97 | bluebird@3.5.1: 98 | version "3.5.1" 99 | resolved "https://registry.npm.taobao.org/bluebird/download/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 100 | integrity sha1-2VUfnemPH82h5oPRfukaBgLuLrk= 101 | 102 | blueimp-md5@^2.16.0: 103 | version "2.17.0" 104 | resolved "https://registry.npm.taobao.org/blueimp-md5/download/blueimp-md5-2.17.0.tgz?cache=0&sync_timestamp=1595922430356&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fblueimp-md5%2Fdownload%2Fblueimp-md5-2.17.0.tgz#f4fcac088b115f7b4045f19f5da59e9d01b1bb96" 105 | integrity sha1-9PysCIsRX3tARfGfXaWenQGxu5Y= 106 | 107 | body-parser@1.19.0, body-parser@^1.19.0: 108 | version "1.19.0" 109 | resolved "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 110 | integrity sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io= 111 | dependencies: 112 | bytes "3.1.0" 113 | content-type "~1.0.4" 114 | debug "2.6.9" 115 | depd "~1.1.2" 116 | http-errors "1.7.2" 117 | iconv-lite "0.4.24" 118 | on-finished "~2.3.0" 119 | qs "6.7.0" 120 | raw-body "2.4.0" 121 | type-is "~1.6.17" 122 | 123 | brace-expansion@^1.1.7: 124 | version "1.1.11" 125 | resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 126 | integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= 127 | dependencies: 128 | balanced-match "^1.0.0" 129 | concat-map "0.0.1" 130 | 131 | bson@^1.1.4: 132 | version "1.1.5" 133 | resolved "https://registry.npm.taobao.org/bson/download/bson-1.1.5.tgz#2aaae98fcdf6750c0848b0cba1ddec3c73060a34" 134 | integrity sha1-Kqrpj832dQwISLDLod3sPHMGCjQ= 135 | 136 | buffer-equal-constant-time@1.0.1: 137 | version "1.0.1" 138 | resolved "https://registry.npm.taobao.org/buffer-equal-constant-time/download/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" 139 | integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= 140 | 141 | bytes@3.1.0: 142 | version "3.1.0" 143 | resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 144 | integrity sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY= 145 | 146 | camelcase@^5.0.0: 147 | version "5.3.1" 148 | resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 149 | integrity sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA= 150 | 151 | chalk@^2.4.2: 152 | version "2.4.2" 153 | resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1591687076871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 154 | integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= 155 | dependencies: 156 | ansi-styles "^3.2.1" 157 | escape-string-regexp "^1.0.5" 158 | supports-color "^5.3.0" 159 | 160 | chownr@^1.1.1: 161 | version "1.1.4" 162 | resolved "https://registry.npm.taobao.org/chownr/download/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 163 | integrity sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs= 164 | 165 | cliui@^5.0.0: 166 | version "5.0.0" 167 | resolved "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 168 | integrity sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U= 169 | dependencies: 170 | string-width "^3.1.0" 171 | strip-ansi "^5.2.0" 172 | wrap-ansi "^5.1.0" 173 | 174 | cliui@^6.0.0: 175 | version "6.0.0" 176 | resolved "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" 177 | integrity sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE= 178 | dependencies: 179 | string-width "^4.2.0" 180 | strip-ansi "^6.0.0" 181 | wrap-ansi "^6.2.0" 182 | 183 | code-point-at@^1.0.0: 184 | version "1.1.0" 185 | resolved "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 186 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 187 | 188 | color-convert@^1.9.0: 189 | version "1.9.3" 190 | resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 191 | integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg= 192 | dependencies: 193 | color-name "1.1.3" 194 | 195 | color-convert@^2.0.1: 196 | version "2.0.1" 197 | resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 198 | integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM= 199 | dependencies: 200 | color-name "~1.1.4" 201 | 202 | color-name@1.1.3: 203 | version "1.1.3" 204 | resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 205 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 206 | 207 | color-name@~1.1.4: 208 | version "1.1.4" 209 | resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 210 | integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= 211 | 212 | concat-map@0.0.1: 213 | version "0.0.1" 214 | resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 215 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 216 | 217 | concurrently@^5.3.0: 218 | version "5.3.0" 219 | resolved "https://registry.npm.taobao.org/concurrently/download/concurrently-5.3.0.tgz#7500de6410d043c912b2da27de3202cb489b1e7b" 220 | integrity sha1-dQDeZBDQQ8kSston3jICy0ibHns= 221 | dependencies: 222 | chalk "^2.4.2" 223 | date-fns "^2.0.1" 224 | lodash "^4.17.15" 225 | read-pkg "^4.0.1" 226 | rxjs "^6.5.2" 227 | spawn-command "^0.0.2-1" 228 | supports-color "^6.1.0" 229 | tree-kill "^1.2.2" 230 | yargs "^13.3.0" 231 | 232 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 233 | version "1.1.0" 234 | resolved "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 235 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 236 | 237 | content-disposition@0.5.3: 238 | version "0.5.3" 239 | resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 240 | integrity sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70= 241 | dependencies: 242 | safe-buffer "5.1.2" 243 | 244 | content-type@~1.0.4: 245 | version "1.0.4" 246 | resolved "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 247 | integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js= 248 | 249 | cookie-signature@1.0.6: 250 | version "1.0.6" 251 | resolved "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 252 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 253 | 254 | cookie@0.4.0: 255 | version "0.4.0" 256 | resolved "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 257 | integrity sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo= 258 | 259 | core-util-is@~1.0.0: 260 | version "1.0.2" 261 | resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 262 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 263 | 264 | cors@^2.8.5: 265 | version "2.8.5" 266 | resolved "https://registry.npm.taobao.org/cors/download/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 267 | integrity sha1-6sEdpRWS3Ya58G9uesKTs9+HXSk= 268 | dependencies: 269 | object-assign "^4" 270 | vary "^1" 271 | 272 | date-fns@^2.0.1: 273 | version "2.15.0" 274 | resolved "https://registry.npm.taobao.org/date-fns/download/date-fns-2.15.0.tgz?cache=0&sync_timestamp=1594999060129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-fns%2Fdownload%2Fdate-fns-2.15.0.tgz#424de6b3778e4e69d3ff27046ec136af58ae5d5f" 275 | integrity sha1-Qk3ms3eOTmnT/ycEbsE2r1iuXV8= 276 | 277 | debug@2.6.9: 278 | version "2.6.9" 279 | resolved "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 280 | integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8= 281 | dependencies: 282 | ms "2.0.0" 283 | 284 | debug@3.1.0: 285 | version "3.1.0" 286 | resolved "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 287 | integrity sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE= 288 | dependencies: 289 | ms "2.0.0" 290 | 291 | debug@^3.2.6: 292 | version "3.2.6" 293 | resolved "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 294 | integrity sha1-6D0X3hbYp++3cX7b5fsQE17uYps= 295 | dependencies: 296 | ms "^2.1.1" 297 | 298 | decamelize@^1.2.0: 299 | version "1.2.0" 300 | resolved "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 301 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 302 | 303 | deep-extend@^0.6.0: 304 | version "0.6.0" 305 | resolved "https://registry.npm.taobao.org/deep-extend/download/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 306 | integrity sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw= 307 | 308 | delegates@^1.0.0: 309 | version "1.0.0" 310 | resolved "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 311 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 312 | 313 | denque@^1.4.1: 314 | version "1.4.1" 315 | resolved "https://registry.npm.taobao.org/denque/download/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf" 316 | integrity sha1-Z0T/dkHBSMP4ppwwflEjXB9KN88= 317 | 318 | depd@~1.1.2: 319 | version "1.1.2" 320 | resolved "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 321 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 322 | 323 | destroy@~1.0.4: 324 | version "1.0.4" 325 | resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 326 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 327 | 328 | detect-libc@^1.0.2: 329 | version "1.0.3" 330 | resolved "https://registry.npm.taobao.org/detect-libc/download/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 331 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 332 | 333 | ecdsa-sig-formatter@1.0.11: 334 | version "1.0.11" 335 | resolved "https://registry.npm.taobao.org/ecdsa-sig-formatter/download/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" 336 | integrity sha1-rg8PothQRe8UqBfao86azQSJ5b8= 337 | dependencies: 338 | safe-buffer "^5.0.1" 339 | 340 | ee-first@1.1.1: 341 | version "1.1.1" 342 | resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 343 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 344 | 345 | email-validator@^2.0.4: 346 | version "2.0.4" 347 | resolved "https://registry.npm.taobao.org/email-validator/download/email-validator-2.0.4.tgz#b8dfaa5d0dae28f1b03c95881d904d4e40bfe7ed" 348 | integrity sha1-uN+qXQ2uKPGwPJWIHZBNTkC/5+0= 349 | 350 | emoji-regex@^7.0.1: 351 | version "7.0.3" 352 | resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 353 | integrity sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY= 354 | 355 | emoji-regex@^8.0.0: 356 | version "8.0.0" 357 | resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 358 | integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc= 359 | 360 | encodeurl@~1.0.2: 361 | version "1.0.2" 362 | resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 363 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 364 | 365 | error-ex@^1.3.1: 366 | version "1.3.2" 367 | resolved "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 368 | integrity sha1-tKxAZIEH/c3PriQvQovqihTU8b8= 369 | dependencies: 370 | is-arrayish "^0.2.1" 371 | 372 | escape-html@~1.0.3: 373 | version "1.0.3" 374 | resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 375 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 376 | 377 | escape-string-regexp@^1.0.5: 378 | version "1.0.5" 379 | resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 380 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 381 | 382 | etag@~1.8.1: 383 | version "1.8.1" 384 | resolved "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 385 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 386 | 387 | express@^5.0.0-alpha.7: 388 | version "5.0.0-alpha.8" 389 | resolved "https://registry.npm.taobao.org/express/download/express-5.0.0-alpha.8.tgz#b9dd3a568eab791e3391db47f9e6ab91e61b13fe" 390 | integrity sha1-ud06Vo6reR4zkdtH+earkeYbE/4= 391 | dependencies: 392 | accepts "~1.3.7" 393 | array-flatten "2.1.1" 394 | body-parser "1.19.0" 395 | content-disposition "0.5.3" 396 | content-type "~1.0.4" 397 | cookie "0.4.0" 398 | cookie-signature "1.0.6" 399 | debug "3.1.0" 400 | depd "~1.1.2" 401 | encodeurl "~1.0.2" 402 | escape-html "~1.0.3" 403 | etag "~1.8.1" 404 | finalhandler "~1.1.2" 405 | fresh "0.5.2" 406 | merge-descriptors "1.0.1" 407 | methods "~1.1.2" 408 | on-finished "~2.3.0" 409 | parseurl "~1.3.3" 410 | path-is-absolute "1.0.1" 411 | proxy-addr "~2.0.5" 412 | qs "6.7.0" 413 | range-parser "~1.2.1" 414 | router "2.0.0-alpha.1" 415 | safe-buffer "5.1.2" 416 | send "0.17.1" 417 | serve-static "1.14.1" 418 | setprototypeof "1.1.1" 419 | statuses "~1.5.0" 420 | type-is "~1.6.18" 421 | utils-merge "1.0.1" 422 | vary "~1.1.2" 423 | 424 | finalhandler@~1.1.2: 425 | version "1.1.2" 426 | resolved "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 427 | integrity sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0= 428 | dependencies: 429 | debug "2.6.9" 430 | encodeurl "~1.0.2" 431 | escape-html "~1.0.3" 432 | on-finished "~2.3.0" 433 | parseurl "~1.3.3" 434 | statuses "~1.5.0" 435 | unpipe "~1.0.0" 436 | 437 | find-up@^3.0.0: 438 | version "3.0.0" 439 | resolved "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 440 | integrity sha1-SRafHXmTQwZG2mHsxa41XCHJe3M= 441 | dependencies: 442 | locate-path "^3.0.0" 443 | 444 | find-up@^4.1.0: 445 | version "4.1.0" 446 | resolved "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 447 | integrity sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk= 448 | dependencies: 449 | locate-path "^5.0.0" 450 | path-exists "^4.0.0" 451 | 452 | forwarded@~0.1.2: 453 | version "0.1.2" 454 | resolved "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 455 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 456 | 457 | fresh@0.5.2: 458 | version "0.5.2" 459 | resolved "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 460 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 461 | 462 | fs-minipass@^1.2.5: 463 | version "1.2.7" 464 | resolved "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" 465 | integrity sha1-zP+FcIQef+QmVpPaiJNsVa7X98c= 466 | dependencies: 467 | minipass "^2.6.0" 468 | 469 | fs.realpath@^1.0.0: 470 | version "1.0.0" 471 | resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 472 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 473 | 474 | gauge@~2.7.3: 475 | version "2.7.4" 476 | resolved "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 477 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 478 | dependencies: 479 | aproba "^1.0.3" 480 | console-control-strings "^1.0.0" 481 | has-unicode "^2.0.0" 482 | object-assign "^4.1.0" 483 | signal-exit "^3.0.0" 484 | string-width "^1.0.1" 485 | strip-ansi "^3.0.1" 486 | wide-align "^1.1.0" 487 | 488 | get-caller-file@^2.0.1: 489 | version "2.0.5" 490 | resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 491 | integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= 492 | 493 | glob@^7.1.3: 494 | version "7.1.6" 495 | resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 496 | integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY= 497 | dependencies: 498 | fs.realpath "^1.0.0" 499 | inflight "^1.0.4" 500 | inherits "2" 501 | minimatch "^3.0.4" 502 | once "^1.3.0" 503 | path-is-absolute "^1.0.0" 504 | 505 | gravatar@^1.8.0: 506 | version "1.8.1" 507 | resolved "https://registry.npm.taobao.org/gravatar/download/gravatar-1.8.1.tgz#743bbdf3185c3433172e00e0e6ff5f6b30c58997" 508 | integrity sha1-dDu98xhcNDMXLgDg5v9fazDFiZc= 509 | dependencies: 510 | blueimp-md5 "^2.16.0" 511 | email-validator "^2.0.4" 512 | querystring "0.2.0" 513 | yargs "^15.4.1" 514 | 515 | has-flag@^3.0.0: 516 | version "3.0.0" 517 | resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 518 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 519 | 520 | has-unicode@^2.0.0: 521 | version "2.0.1" 522 | resolved "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 523 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 524 | 525 | hosted-git-info@^2.1.4: 526 | version "2.8.8" 527 | resolved "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.8.tgz?cache=0&sync_timestamp=1594428017031&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" 528 | integrity sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg= 529 | 530 | http-errors@1.7.2: 531 | version "1.7.2" 532 | resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz?cache=0&sync_timestamp=1593407676273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 533 | integrity sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8= 534 | dependencies: 535 | depd "~1.1.2" 536 | inherits "2.0.3" 537 | setprototypeof "1.1.1" 538 | statuses ">= 1.5.0 < 2" 539 | toidentifier "1.0.0" 540 | 541 | http-errors@~1.7.2: 542 | version "1.7.3" 543 | resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz?cache=0&sync_timestamp=1593407676273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 544 | integrity sha1-bGGeT5xgMIw4UZSYwU+7EKrOuwY= 545 | dependencies: 546 | depd "~1.1.2" 547 | inherits "2.0.4" 548 | setprototypeof "1.1.1" 549 | statuses ">= 1.5.0 < 2" 550 | toidentifier "1.0.0" 551 | 552 | iconv-lite@0.4.24, iconv-lite@^0.4.4: 553 | version "0.4.24" 554 | resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 555 | integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= 556 | dependencies: 557 | safer-buffer ">= 2.1.2 < 3" 558 | 559 | ignore-walk@^3.0.1: 560 | version "3.0.3" 561 | resolved "https://registry.npm.taobao.org/ignore-walk/download/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" 562 | integrity sha1-AX4kRxhL/q3nwjjkrv3R6PlbHjc= 563 | dependencies: 564 | minimatch "^3.0.4" 565 | 566 | inflight@^1.0.4: 567 | version "1.0.6" 568 | resolved "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 569 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 570 | dependencies: 571 | once "^1.3.0" 572 | wrappy "1" 573 | 574 | inherits@2, inherits@2.0.4, inherits@~2.0.3: 575 | version "2.0.4" 576 | resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 577 | integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= 578 | 579 | inherits@2.0.3: 580 | version "2.0.3" 581 | resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 582 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 583 | 584 | ini@~1.3.0: 585 | version "1.3.5" 586 | resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 587 | integrity sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc= 588 | 589 | ipaddr.js@1.9.1: 590 | version "1.9.1" 591 | resolved "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 592 | integrity sha1-v/OFQ+64mEglB5/zoqjmy9RngbM= 593 | 594 | is-arrayish@^0.2.1: 595 | version "0.2.1" 596 | resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 597 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 598 | 599 | is-fullwidth-code-point@^1.0.0: 600 | version "1.0.0" 601 | resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 602 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 603 | dependencies: 604 | number-is-nan "^1.0.0" 605 | 606 | is-fullwidth-code-point@^2.0.0: 607 | version "2.0.0" 608 | resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 609 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 610 | 611 | is-fullwidth-code-point@^3.0.0: 612 | version "3.0.0" 613 | resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 614 | integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0= 615 | 616 | isarray@~1.0.0: 617 | version "1.0.0" 618 | resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 619 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 620 | 621 | json-parse-better-errors@^1.0.1: 622 | version "1.0.2" 623 | resolved "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 624 | integrity sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk= 625 | 626 | jsonwebtoken@^8.2.0, jsonwebtoken@^8.5.1: 627 | version "8.5.1" 628 | resolved "https://registry.npm.taobao.org/jsonwebtoken/download/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" 629 | integrity sha1-AOceC431TCEhofJhN98igGc7zA0= 630 | dependencies: 631 | jws "^3.2.2" 632 | lodash.includes "^4.3.0" 633 | lodash.isboolean "^3.0.3" 634 | lodash.isinteger "^4.0.4" 635 | lodash.isnumber "^3.0.3" 636 | lodash.isplainobject "^4.0.6" 637 | lodash.isstring "^4.0.1" 638 | lodash.once "^4.0.0" 639 | ms "^2.1.1" 640 | semver "^5.6.0" 641 | 642 | jwa@^1.4.1: 643 | version "1.4.1" 644 | resolved "https://registry.npm.taobao.org/jwa/download/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" 645 | integrity sha1-dDwymFy56YZVUw1TZBtmyGRbA5o= 646 | dependencies: 647 | buffer-equal-constant-time "1.0.1" 648 | ecdsa-sig-formatter "1.0.11" 649 | safe-buffer "^5.0.1" 650 | 651 | jws@^3.2.2: 652 | version "3.2.2" 653 | resolved "https://registry.npm.taobao.org/jws/download/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" 654 | integrity sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ= 655 | dependencies: 656 | jwa "^1.4.1" 657 | safe-buffer "^5.0.1" 658 | 659 | kareem@2.3.1: 660 | version "2.3.1" 661 | resolved "https://registry.npm.taobao.org/kareem/download/kareem-2.3.1.tgz#def12d9c941017fabfb00f873af95e9c99e1be87" 662 | integrity sha1-3vEtnJQQF/q/sA+HOvlenJnhvoc= 663 | 664 | locate-path@^3.0.0: 665 | version "3.0.0" 666 | resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 667 | integrity sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4= 668 | dependencies: 669 | p-locate "^3.0.0" 670 | path-exists "^3.0.0" 671 | 672 | locate-path@^5.0.0: 673 | version "5.0.0" 674 | resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 675 | integrity sha1-Gvujlq/WdqbUJQTQpno6frn2KqA= 676 | dependencies: 677 | p-locate "^4.1.0" 678 | 679 | lodash.includes@^4.3.0: 680 | version "4.3.0" 681 | resolved "https://registry.npm.taobao.org/lodash.includes/download/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" 682 | integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= 683 | 684 | lodash.isboolean@^3.0.3: 685 | version "3.0.3" 686 | resolved "https://registry.npm.taobao.org/lodash.isboolean/download/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" 687 | integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= 688 | 689 | lodash.isinteger@^4.0.4: 690 | version "4.0.4" 691 | resolved "https://registry.npm.taobao.org/lodash.isinteger/download/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" 692 | integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= 693 | 694 | lodash.isnumber@^3.0.3: 695 | version "3.0.3" 696 | resolved "https://registry.npm.taobao.org/lodash.isnumber/download/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" 697 | integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= 698 | 699 | lodash.isplainobject@^4.0.6: 700 | version "4.0.6" 701 | resolved "https://registry.npm.taobao.org/lodash.isplainobject/download/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 702 | integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= 703 | 704 | lodash.isstring@^4.0.1: 705 | version "4.0.1" 706 | resolved "https://registry.npm.taobao.org/lodash.isstring/download/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 707 | integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= 708 | 709 | lodash.once@^4.0.0: 710 | version "4.1.1" 711 | resolved "https://registry.npm.taobao.org/lodash.once/download/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" 712 | integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= 713 | 714 | lodash@^4.17.15: 715 | version "4.17.20" 716 | resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336053864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 717 | integrity sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI= 718 | 719 | media-typer@0.3.0: 720 | version "0.3.0" 721 | resolved "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 722 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 723 | 724 | memory-pager@^1.0.2: 725 | version "1.5.0" 726 | resolved "https://registry.npm.taobao.org/memory-pager/download/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" 727 | integrity sha1-2HUWVdItOEaCdByXLyw9bfo+ZrU= 728 | 729 | merge-descriptors@1.0.1: 730 | version "1.0.1" 731 | resolved "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 732 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 733 | 734 | methods@~1.1.2: 735 | version "1.1.2" 736 | resolved "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 737 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 738 | 739 | mime-db@1.44.0: 740 | version "1.44.0" 741 | resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 742 | integrity sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I= 743 | 744 | mime-types@~2.1.24: 745 | version "2.1.27" 746 | resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 747 | integrity sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8= 748 | dependencies: 749 | mime-db "1.44.0" 750 | 751 | mime@1.6.0: 752 | version "1.6.0" 753 | resolved "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 754 | integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE= 755 | 756 | minimatch@^3.0.4: 757 | version "3.0.4" 758 | resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 759 | integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= 760 | dependencies: 761 | brace-expansion "^1.1.7" 762 | 763 | minimist@^1.2.0, minimist@^1.2.5: 764 | version "1.2.5" 765 | resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 766 | integrity sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI= 767 | 768 | minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: 769 | version "2.9.0" 770 | resolved "https://registry.npm.taobao.org/minipass/download/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" 771 | integrity sha1-5xN2Ln0+Mv7YAxFc+T4EvKn8yaY= 772 | dependencies: 773 | safe-buffer "^5.1.2" 774 | yallist "^3.0.0" 775 | 776 | minizlib@^1.2.1: 777 | version "1.3.3" 778 | resolved "https://registry.npm.taobao.org/minizlib/download/minizlib-1.3.3.tgz?cache=0&sync_timestamp=1597445621090&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminizlib%2Fdownload%2Fminizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" 779 | integrity sha1-IpDeloGKNMKVUcio0wEha9Zahh0= 780 | dependencies: 781 | minipass "^2.9.0" 782 | 783 | mkdirp@^0.5.0, mkdirp@^0.5.3: 784 | version "0.5.5" 785 | resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 786 | integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8= 787 | dependencies: 788 | minimist "^1.2.5" 789 | 790 | mongodb@3.6.0: 791 | version "3.6.0" 792 | resolved "https://registry.npm.taobao.org/mongodb/download/mongodb-3.6.0.tgz?cache=0&sync_timestamp=1596133168879&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmongodb%2Fdownload%2Fmongodb-3.6.0.tgz#babd7172ec717e2ed3f85e079b3f1aa29dce4724" 793 | integrity sha1-ur1xcuxxfi7T+F4Hmz8aop3ORyQ= 794 | dependencies: 795 | bl "^2.2.0" 796 | bson "^1.1.4" 797 | denque "^1.4.1" 798 | require_optional "^1.0.1" 799 | safe-buffer "^5.1.2" 800 | optionalDependencies: 801 | saslprep "^1.0.0" 802 | 803 | mongoose-legacy-pluralize@1.0.2: 804 | version "1.0.2" 805 | resolved "https://registry.npm.taobao.org/mongoose-legacy-pluralize/download/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" 806 | integrity sha1-O6n5H6UHtRhtOZ+0CFS/8Y+1Y+Q= 807 | 808 | mongoose@^5.6.2: 809 | version "5.10.0" 810 | resolved "https://registry.npm.taobao.org/mongoose/download/mongoose-5.10.0.tgz?cache=0&sync_timestamp=1597422032854&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmongoose%2Fdownload%2Fmongoose-5.10.0.tgz#05a35f5a3d8485613c9988aeb9548285a97083f7" 811 | integrity sha1-BaNfWj2EhWE8mYiuuVSChalwg/c= 812 | dependencies: 813 | bson "^1.1.4" 814 | kareem "2.3.1" 815 | mongodb "3.6.0" 816 | mongoose-legacy-pluralize "1.0.2" 817 | mpath "0.7.0" 818 | mquery "3.2.2" 819 | ms "2.1.2" 820 | regexp-clone "1.0.0" 821 | safe-buffer "5.2.1" 822 | sift "7.0.1" 823 | sliced "1.0.1" 824 | 825 | mpath@0.7.0: 826 | version "0.7.0" 827 | resolved "https://registry.npm.taobao.org/mpath/download/mpath-0.7.0.tgz#20e8102e276b71709d6e07e9f8d4d0f641afbfb8" 828 | integrity sha1-IOgQLidrcXCdbgfp+NTQ9kGvv7g= 829 | 830 | mquery@3.2.2: 831 | version "3.2.2" 832 | resolved "https://registry.npm.taobao.org/mquery/download/mquery-3.2.2.tgz#e1383a3951852ce23e37f619a9b350f1fb3664e7" 833 | integrity sha1-4Tg6OVGFLOI+N/YZqbNQ8fs2ZOc= 834 | dependencies: 835 | bluebird "3.5.1" 836 | debug "3.1.0" 837 | regexp-clone "^1.0.0" 838 | safe-buffer "5.1.2" 839 | sliced "1.0.1" 840 | 841 | ms@2.0.0: 842 | version "2.0.0" 843 | resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 844 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 845 | 846 | ms@2.1.1: 847 | version "2.1.1" 848 | resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 849 | integrity sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo= 850 | 851 | ms@2.1.2, ms@^2.1.1: 852 | version "2.1.2" 853 | resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 854 | integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= 855 | 856 | needle@^2.5.0: 857 | version "2.5.0" 858 | resolved "https://registry.npm.taobao.org/needle/download/needle-2.5.0.tgz#e6fc4b3cc6c25caed7554bd613a5cf0bac8c31c0" 859 | integrity sha1-5vxLPMbCXK7XVUvWE6XPC6yMMcA= 860 | dependencies: 861 | debug "^3.2.6" 862 | iconv-lite "^0.4.4" 863 | sax "^1.2.4" 864 | 865 | negotiator@0.6.2: 866 | version "0.6.2" 867 | resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 868 | integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs= 869 | 870 | node-addon-api@^3.0.0: 871 | version "3.0.0" 872 | resolved "https://registry.npm.taobao.org/node-addon-api/download/node-addon-api-3.0.0.tgz?cache=0&sync_timestamp=1595260356673&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-addon-api%2Fdownload%2Fnode-addon-api-3.0.0.tgz#812446a1001a54f71663bed188314bba07e09247" 873 | integrity sha1-gSRGoQAaVPcWY77RiDFLugfgkkc= 874 | 875 | node-pre-gyp@0.15.0: 876 | version "0.15.0" 877 | resolved "https://registry.npm.taobao.org/node-pre-gyp/download/node-pre-gyp-0.15.0.tgz#c2fc383276b74c7ffa842925241553e8b40f1087" 878 | integrity sha1-wvw4Mna3TH/6hCklJBVT6LQPEIc= 879 | dependencies: 880 | detect-libc "^1.0.2" 881 | mkdirp "^0.5.3" 882 | needle "^2.5.0" 883 | nopt "^4.0.1" 884 | npm-packlist "^1.1.6" 885 | npmlog "^4.0.2" 886 | rc "^1.2.7" 887 | rimraf "^2.6.1" 888 | semver "^5.3.0" 889 | tar "^4.4.2" 890 | 891 | nopt@^4.0.1: 892 | version "4.0.3" 893 | resolved "https://registry.npm.taobao.org/nopt/download/nopt-4.0.3.tgz?cache=0&sync_timestamp=1597649908392&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnopt%2Fdownload%2Fnopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" 894 | integrity sha1-o3XK2dAv2SEnjZVMIlTVqlfhXkg= 895 | dependencies: 896 | abbrev "1" 897 | osenv "^0.1.4" 898 | 899 | normalize-package-data@^2.3.2: 900 | version "2.5.0" 901 | resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 902 | integrity sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg= 903 | dependencies: 904 | hosted-git-info "^2.1.4" 905 | resolve "^1.10.0" 906 | semver "2 || 3 || 4 || 5" 907 | validate-npm-package-license "^3.0.1" 908 | 909 | npm-bundled@^1.0.1: 910 | version "1.1.1" 911 | resolved "https://registry.npm.taobao.org/npm-bundled/download/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" 912 | integrity sha1-Ht1XCGWpTNsbyCIHdeKUZsn7I0s= 913 | dependencies: 914 | npm-normalize-package-bin "^1.0.1" 915 | 916 | npm-normalize-package-bin@^1.0.1: 917 | version "1.0.1" 918 | resolved "https://registry.npm.taobao.org/npm-normalize-package-bin/download/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" 919 | integrity sha1-bnmkHyP9I1wGIyGCKNp9nCO49uI= 920 | 921 | npm-packlist@^1.1.6: 922 | version "1.4.8" 923 | resolved "https://registry.npm.taobao.org/npm-packlist/download/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" 924 | integrity sha1-Vu5swTW5+YrT1Rwcldoiu7my7z4= 925 | dependencies: 926 | ignore-walk "^3.0.1" 927 | npm-bundled "^1.0.1" 928 | npm-normalize-package-bin "^1.0.1" 929 | 930 | npmlog@^4.0.2: 931 | version "4.1.2" 932 | resolved "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 933 | integrity sha1-CKfyqL9zRgR3mp76StXMcXq7lUs= 934 | dependencies: 935 | are-we-there-yet "~1.1.2" 936 | console-control-strings "~1.1.0" 937 | gauge "~2.7.3" 938 | set-blocking "~2.0.0" 939 | 940 | number-is-nan@^1.0.0: 941 | version "1.0.1" 942 | resolved "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 943 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 944 | 945 | object-assign@^4, object-assign@^4.1.0: 946 | version "4.1.1" 947 | resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 948 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 949 | 950 | on-finished@~2.3.0: 951 | version "2.3.0" 952 | resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 953 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 954 | dependencies: 955 | ee-first "1.1.1" 956 | 957 | once@^1.3.0: 958 | version "1.4.0" 959 | resolved "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 960 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 961 | dependencies: 962 | wrappy "1" 963 | 964 | os-homedir@^1.0.0: 965 | version "1.0.2" 966 | resolved "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 967 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 968 | 969 | os-tmpdir@^1.0.0: 970 | version "1.0.2" 971 | resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 972 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 973 | 974 | osenv@^0.1.4: 975 | version "0.1.5" 976 | resolved "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 977 | integrity sha1-hc36+uso6Gd/QW4odZK18/SepBA= 978 | dependencies: 979 | os-homedir "^1.0.0" 980 | os-tmpdir "^1.0.0" 981 | 982 | p-limit@^2.0.0, p-limit@^2.2.0: 983 | version "2.3.0" 984 | resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1594559711554&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 985 | integrity sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE= 986 | dependencies: 987 | p-try "^2.0.0" 988 | 989 | p-locate@^3.0.0: 990 | version "3.0.0" 991 | resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 992 | integrity sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ= 993 | dependencies: 994 | p-limit "^2.0.0" 995 | 996 | p-locate@^4.1.0: 997 | version "4.1.0" 998 | resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 999 | integrity sha1-o0KLtwiLOmApL2aRkni3wpetTwc= 1000 | dependencies: 1001 | p-limit "^2.2.0" 1002 | 1003 | p-try@^2.0.0: 1004 | version "2.2.0" 1005 | resolved "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1006 | integrity sha1-yyhoVA4xPWHeWPr741zpAE1VQOY= 1007 | 1008 | parse-json@^4.0.0: 1009 | version "4.0.0" 1010 | resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1595834670724&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1011 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 1012 | dependencies: 1013 | error-ex "^1.3.1" 1014 | json-parse-better-errors "^1.0.1" 1015 | 1016 | parseurl@~1.3.2, parseurl@~1.3.3: 1017 | version "1.3.3" 1018 | resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1019 | integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ= 1020 | 1021 | passport-jwt@^4.0.0: 1022 | version "4.0.0" 1023 | resolved "https://registry.npm.taobao.org/passport-jwt/download/passport-jwt-4.0.0.tgz#7f0be7ba942e28b9f5d22c2ebbb8ce96ef7cf065" 1024 | integrity sha1-fwvnupQuKLn10iwuu7jOlu988GU= 1025 | dependencies: 1026 | jsonwebtoken "^8.2.0" 1027 | passport-strategy "^1.0.0" 1028 | 1029 | passport-strategy@1.x.x, passport-strategy@^1.0.0: 1030 | version "1.0.0" 1031 | resolved "https://registry.npm.taobao.org/passport-strategy/download/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" 1032 | integrity sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ= 1033 | 1034 | passport@^0.4.0: 1035 | version "0.4.1" 1036 | resolved "https://registry.npm.taobao.org/passport/download/passport-0.4.1.tgz#941446a21cb92fc688d97a0861c38ce9f738f270" 1037 | integrity sha1-lBRGohy5L8aI2XoIYcOM6fc48nA= 1038 | dependencies: 1039 | passport-strategy "1.x.x" 1040 | pause "0.0.1" 1041 | 1042 | path-exists@^3.0.0: 1043 | version "3.0.0" 1044 | resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1045 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1046 | 1047 | path-exists@^4.0.0: 1048 | version "4.0.0" 1049 | resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1050 | integrity sha1-UTvb4tO5XXdi6METfvoZXGxhtbM= 1051 | 1052 | path-is-absolute@1.0.1, path-is-absolute@^1.0.0: 1053 | version "1.0.1" 1054 | resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1055 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1056 | 1057 | path-parse@^1.0.6: 1058 | version "1.0.6" 1059 | resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1060 | integrity sha1-1i27VnlAXXLEc37FhgDp3c8G0kw= 1061 | 1062 | path-to-regexp@0.1.7: 1063 | version "0.1.7" 1064 | resolved "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1065 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 1066 | 1067 | pause@0.0.1: 1068 | version "0.0.1" 1069 | resolved "https://registry.npm.taobao.org/pause/download/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" 1070 | integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= 1071 | 1072 | pify@^3.0.0: 1073 | version "3.0.0" 1074 | resolved "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1075 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1076 | 1077 | process-nextick-args@~2.0.0: 1078 | version "2.0.1" 1079 | resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1080 | integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I= 1081 | 1082 | proxy-addr@~2.0.5: 1083 | version "2.0.6" 1084 | resolved "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 1085 | integrity sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8= 1086 | dependencies: 1087 | forwarded "~0.1.2" 1088 | ipaddr.js "1.9.1" 1089 | 1090 | qs@6.7.0: 1091 | version "6.7.0" 1092 | resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 1093 | integrity sha1-QdwaAV49WB8WIXdr4xr7KHapsbw= 1094 | 1095 | querystring@0.2.0: 1096 | version "0.2.0" 1097 | resolved "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1098 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 1099 | 1100 | range-parser@~1.2.1: 1101 | version "1.2.1" 1102 | resolved "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1103 | integrity sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE= 1104 | 1105 | raw-body@2.4.0: 1106 | version "2.4.0" 1107 | resolved "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 1108 | integrity sha1-oc5vucm8NWylLoklarWQWeE9AzI= 1109 | dependencies: 1110 | bytes "3.1.0" 1111 | http-errors "1.7.2" 1112 | iconv-lite "0.4.24" 1113 | unpipe "1.0.0" 1114 | 1115 | rc@^1.2.7: 1116 | version "1.2.8" 1117 | resolved "https://registry.npm.taobao.org/rc/download/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1118 | integrity sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0= 1119 | dependencies: 1120 | deep-extend "^0.6.0" 1121 | ini "~1.3.0" 1122 | minimist "^1.2.0" 1123 | strip-json-comments "~2.0.1" 1124 | 1125 | read-pkg@^4.0.1: 1126 | version "4.0.1" 1127 | resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" 1128 | integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= 1129 | dependencies: 1130 | normalize-package-data "^2.3.2" 1131 | parse-json "^4.0.0" 1132 | pify "^3.0.0" 1133 | 1134 | readable-stream@^2.0.6, readable-stream@^2.3.5: 1135 | version "2.3.7" 1136 | resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1137 | integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c= 1138 | dependencies: 1139 | core-util-is "~1.0.0" 1140 | inherits "~2.0.3" 1141 | isarray "~1.0.0" 1142 | process-nextick-args "~2.0.0" 1143 | safe-buffer "~5.1.1" 1144 | string_decoder "~1.1.1" 1145 | util-deprecate "~1.0.1" 1146 | 1147 | regexp-clone@1.0.0, regexp-clone@^1.0.0: 1148 | version "1.0.0" 1149 | resolved "https://registry.npm.taobao.org/regexp-clone/download/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" 1150 | integrity sha1-Ii25Z2IydwViYLmSYmNUoEzpv2M= 1151 | 1152 | require-directory@^2.1.1: 1153 | version "2.1.1" 1154 | resolved "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1155 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1156 | 1157 | require-main-filename@^2.0.0: 1158 | version "2.0.0" 1159 | resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1160 | integrity sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs= 1161 | 1162 | require_optional@^1.0.1: 1163 | version "1.0.1" 1164 | resolved "https://registry.npm.taobao.org/require_optional/download/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" 1165 | integrity sha1-TPNaQkf2TKPfjC7yCMxJSxyo/C4= 1166 | dependencies: 1167 | resolve-from "^2.0.0" 1168 | semver "^5.1.0" 1169 | 1170 | resolve-from@^2.0.0: 1171 | version "2.0.0" 1172 | resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" 1173 | integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= 1174 | 1175 | resolve@^1.10.0: 1176 | version "1.17.0" 1177 | resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 1178 | integrity sha1-sllBtUloIxzC0bt2p5y38sC/hEQ= 1179 | dependencies: 1180 | path-parse "^1.0.6" 1181 | 1182 | rimraf@^2.6.1: 1183 | version "2.7.1" 1184 | resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 1185 | integrity sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w= 1186 | dependencies: 1187 | glob "^7.1.3" 1188 | 1189 | router@2.0.0-alpha.1: 1190 | version "2.0.0-alpha.1" 1191 | resolved "https://registry.npm.taobao.org/router/download/router-2.0.0-alpha.1.tgz#9188213b972215e03ef830e0ac77837870085f6d" 1192 | integrity sha1-kYghO5ciFeA++DDgrHeDeHAIX20= 1193 | dependencies: 1194 | array-flatten "2.1.1" 1195 | debug "3.1.0" 1196 | methods "~1.1.2" 1197 | parseurl "~1.3.2" 1198 | path-to-regexp "0.1.7" 1199 | setprototypeof "1.1.0" 1200 | utils-merge "1.0.1" 1201 | 1202 | rxjs@^6.5.2: 1203 | version "6.6.2" 1204 | resolved "https://registry.npm.taobao.org/rxjs/download/rxjs-6.6.2.tgz?cache=0&sync_timestamp=1596402408867&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frxjs%2Fdownload%2Frxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" 1205 | integrity sha1-gJanrAPyzE/lhg725XKBDZ4BwNI= 1206 | dependencies: 1207 | tslib "^1.9.0" 1208 | 1209 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1210 | version "5.1.2" 1211 | resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1212 | integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0= 1213 | 1214 | safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: 1215 | version "5.2.1" 1216 | resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1217 | integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY= 1218 | 1219 | "safer-buffer@>= 2.1.2 < 3": 1220 | version "2.1.2" 1221 | resolved "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1222 | integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= 1223 | 1224 | saslprep@^1.0.0: 1225 | version "1.0.3" 1226 | resolved "https://registry.npm.taobao.org/saslprep/download/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" 1227 | integrity sha1-TAL5RrVs9UKX40e6EJPnrKxM8iY= 1228 | dependencies: 1229 | sparse-bitfield "^3.0.3" 1230 | 1231 | sax@^1.2.4: 1232 | version "1.2.4" 1233 | resolved "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1234 | integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk= 1235 | 1236 | "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.6.0: 1237 | version "5.7.1" 1238 | resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1239 | integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= 1240 | 1241 | send@0.17.1: 1242 | version "0.17.1" 1243 | resolved "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 1244 | integrity sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg= 1245 | dependencies: 1246 | debug "2.6.9" 1247 | depd "~1.1.2" 1248 | destroy "~1.0.4" 1249 | encodeurl "~1.0.2" 1250 | escape-html "~1.0.3" 1251 | etag "~1.8.1" 1252 | fresh "0.5.2" 1253 | http-errors "~1.7.2" 1254 | mime "1.6.0" 1255 | ms "2.1.1" 1256 | on-finished "~2.3.0" 1257 | range-parser "~1.2.1" 1258 | statuses "~1.5.0" 1259 | 1260 | serve-static@1.14.1: 1261 | version "1.14.1" 1262 | resolved "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 1263 | integrity sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk= 1264 | dependencies: 1265 | encodeurl "~1.0.2" 1266 | escape-html "~1.0.3" 1267 | parseurl "~1.3.3" 1268 | send "0.17.1" 1269 | 1270 | set-blocking@^2.0.0, set-blocking@~2.0.0: 1271 | version "2.0.0" 1272 | resolved "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1273 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1274 | 1275 | setprototypeof@1.1.0: 1276 | version "1.1.0" 1277 | resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" 1278 | integrity sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY= 1279 | 1280 | setprototypeof@1.1.1: 1281 | version "1.1.1" 1282 | resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1283 | integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM= 1284 | 1285 | sift@7.0.1: 1286 | version "7.0.1" 1287 | resolved "https://registry.npm.taobao.org/sift/download/sift-7.0.1.tgz?cache=0&sync_timestamp=1594914132370&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsift%2Fdownload%2Fsift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08" 1288 | integrity sha1-R9YsULFZ0xbxNy+LU/nBDNIaSwg= 1289 | 1290 | signal-exit@^3.0.0: 1291 | version "3.0.3" 1292 | resolved "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1293 | integrity sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw= 1294 | 1295 | sliced@1.0.1: 1296 | version "1.0.1" 1297 | resolved "https://registry.npm.taobao.org/sliced/download/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" 1298 | integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= 1299 | 1300 | sparse-bitfield@^3.0.3: 1301 | version "3.0.3" 1302 | resolved "https://registry.npm.taobao.org/sparse-bitfield/download/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" 1303 | integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE= 1304 | dependencies: 1305 | memory-pager "^1.0.2" 1306 | 1307 | spawn-command@^0.0.2-1: 1308 | version "0.0.2-1" 1309 | resolved "https://registry.npm.taobao.org/spawn-command/download/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" 1310 | integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= 1311 | 1312 | spdx-correct@^3.0.0: 1313 | version "3.1.1" 1314 | resolved "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1315 | integrity sha1-3s6BrJweZxPl99G28X1Gj6U9iak= 1316 | dependencies: 1317 | spdx-expression-parse "^3.0.0" 1318 | spdx-license-ids "^3.0.0" 1319 | 1320 | spdx-exceptions@^2.1.0: 1321 | version "2.3.0" 1322 | resolved "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1323 | integrity sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0= 1324 | 1325 | spdx-expression-parse@^3.0.0: 1326 | version "3.0.1" 1327 | resolved "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1328 | integrity sha1-z3D1BILu/cmOPOCmgz5KU87rpnk= 1329 | dependencies: 1330 | spdx-exceptions "^2.1.0" 1331 | spdx-license-ids "^3.0.0" 1332 | 1333 | spdx-license-ids@^3.0.0: 1334 | version "3.0.5" 1335 | resolved "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 1336 | integrity sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ= 1337 | 1338 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1339 | version "1.5.0" 1340 | resolved "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1341 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1342 | 1343 | string-width@^1.0.1: 1344 | version "1.0.2" 1345 | resolved "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1346 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 1347 | dependencies: 1348 | code-point-at "^1.0.0" 1349 | is-fullwidth-code-point "^1.0.0" 1350 | strip-ansi "^3.0.0" 1351 | 1352 | "string-width@^1.0.2 || 2": 1353 | version "2.1.1" 1354 | resolved "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1355 | integrity sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4= 1356 | dependencies: 1357 | is-fullwidth-code-point "^2.0.0" 1358 | strip-ansi "^4.0.0" 1359 | 1360 | string-width@^3.0.0, string-width@^3.1.0: 1361 | version "3.1.0" 1362 | resolved "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1363 | integrity sha1-InZ74htirxCBV0MG9prFG2IgOWE= 1364 | dependencies: 1365 | emoji-regex "^7.0.1" 1366 | is-fullwidth-code-point "^2.0.0" 1367 | strip-ansi "^5.1.0" 1368 | 1369 | string-width@^4.1.0, string-width@^4.2.0: 1370 | version "4.2.0" 1371 | resolved "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1372 | integrity sha1-lSGCxGzHssMT0VluYjmSvRY7crU= 1373 | dependencies: 1374 | emoji-regex "^8.0.0" 1375 | is-fullwidth-code-point "^3.0.0" 1376 | strip-ansi "^6.0.0" 1377 | 1378 | string_decoder@~1.1.1: 1379 | version "1.1.1" 1380 | resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1381 | integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g= 1382 | dependencies: 1383 | safe-buffer "~5.1.0" 1384 | 1385 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1386 | version "3.0.1" 1387 | resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1388 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 1389 | dependencies: 1390 | ansi-regex "^2.0.0" 1391 | 1392 | strip-ansi@^4.0.0: 1393 | version "4.0.0" 1394 | resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1395 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1396 | dependencies: 1397 | ansi-regex "^3.0.0" 1398 | 1399 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1400 | version "5.2.0" 1401 | resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1402 | integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= 1403 | dependencies: 1404 | ansi-regex "^4.1.0" 1405 | 1406 | strip-ansi@^6.0.0: 1407 | version "6.0.0" 1408 | resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1409 | integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI= 1410 | dependencies: 1411 | ansi-regex "^5.0.0" 1412 | 1413 | strip-json-comments@~2.0.1: 1414 | version "2.0.1" 1415 | resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz?cache=0&sync_timestamp=1594567543744&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1416 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1417 | 1418 | supports-color@^5.3.0: 1419 | version "5.5.0" 1420 | resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1421 | integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= 1422 | dependencies: 1423 | has-flag "^3.0.0" 1424 | 1425 | supports-color@^6.1.0: 1426 | version "6.1.0" 1427 | resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 1428 | integrity sha1-B2Srxpxj1ayELdSGfo0CXogN+PM= 1429 | dependencies: 1430 | has-flag "^3.0.0" 1431 | 1432 | tar@^4.4.2: 1433 | version "4.4.13" 1434 | resolved "https://registry.npm.taobao.org/tar/download/tar-4.4.13.tgz?cache=0&sync_timestamp=1597445621518&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar%2Fdownload%2Ftar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" 1435 | integrity sha1-Q7NkvFKIjVVSmGN7ENYHkCVKtSU= 1436 | dependencies: 1437 | chownr "^1.1.1" 1438 | fs-minipass "^1.2.5" 1439 | minipass "^2.8.6" 1440 | minizlib "^1.2.1" 1441 | mkdirp "^0.5.0" 1442 | safe-buffer "^5.1.2" 1443 | yallist "^3.0.3" 1444 | 1445 | toidentifier@1.0.0: 1446 | version "1.0.0" 1447 | resolved "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1448 | integrity sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM= 1449 | 1450 | tree-kill@^1.2.2: 1451 | version "1.2.2" 1452 | resolved "https://registry.npm.taobao.org/tree-kill/download/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" 1453 | integrity sha1-TKCakJLIi3OnzcXooBtQeweQoMw= 1454 | 1455 | tslib@^1.9.0: 1456 | version "1.13.0" 1457 | resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.13.0.tgz?cache=0&sync_timestamp=1596752024863&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 1458 | integrity sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM= 1459 | 1460 | type-is@~1.6.17, type-is@~1.6.18: 1461 | version "1.6.18" 1462 | resolved "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1463 | integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE= 1464 | dependencies: 1465 | media-typer "0.3.0" 1466 | mime-types "~2.1.24" 1467 | 1468 | unpipe@1.0.0, unpipe@~1.0.0: 1469 | version "1.0.0" 1470 | resolved "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1471 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1472 | 1473 | util-deprecate@~1.0.1: 1474 | version "1.0.2" 1475 | resolved "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1476 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1477 | 1478 | utils-merge@1.0.1: 1479 | version "1.0.1" 1480 | resolved "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1481 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1482 | 1483 | validate-npm-package-license@^3.0.1: 1484 | version "3.0.4" 1485 | resolved "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1486 | integrity sha1-/JH2uce6FchX9MssXe/uw51PQQo= 1487 | dependencies: 1488 | spdx-correct "^3.0.0" 1489 | spdx-expression-parse "^3.0.0" 1490 | 1491 | vary@^1, vary@~1.1.2: 1492 | version "1.1.2" 1493 | resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1494 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1495 | 1496 | which-module@^2.0.0: 1497 | version "2.0.0" 1498 | resolved "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1499 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 1500 | 1501 | wide-align@^1.1.0: 1502 | version "1.1.3" 1503 | resolved "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1504 | integrity sha1-rgdOa9wMFKQx6ATmJFScYzsABFc= 1505 | dependencies: 1506 | string-width "^1.0.2 || 2" 1507 | 1508 | wrap-ansi@^5.1.0: 1509 | version "5.1.0" 1510 | resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 1511 | integrity sha1-H9H2cjXVttD+54EFYAG/tpTAOwk= 1512 | dependencies: 1513 | ansi-styles "^3.2.0" 1514 | string-width "^3.0.0" 1515 | strip-ansi "^5.0.0" 1516 | 1517 | wrap-ansi@^6.2.0: 1518 | version "6.2.0" 1519 | resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 1520 | integrity sha1-6Tk7oHEC5skaOyIUePAlfNKFblM= 1521 | dependencies: 1522 | ansi-styles "^4.0.0" 1523 | string-width "^4.1.0" 1524 | strip-ansi "^6.0.0" 1525 | 1526 | wrappy@1: 1527 | version "1.0.2" 1528 | resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1529 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1530 | 1531 | y18n@^4.0.0: 1532 | version "4.0.0" 1533 | resolved "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 1534 | integrity sha1-le+U+F7MgdAHwmThkKEg8KPIVms= 1535 | 1536 | yallist@^3.0.0, yallist@^3.0.3: 1537 | version "3.1.1" 1538 | resolved "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 1539 | integrity sha1-27fa+b/YusmrRev2ArjLrQ1dCP0= 1540 | 1541 | yargs-parser@^13.1.2: 1542 | version "13.1.2" 1543 | resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1596945842652&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 1544 | integrity sha1-Ew8JcC667vJlDVTObj5XBvek+zg= 1545 | dependencies: 1546 | camelcase "^5.0.0" 1547 | decamelize "^1.2.0" 1548 | 1549 | yargs-parser@^18.1.2: 1550 | version "18.1.3" 1551 | resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-18.1.3.tgz?cache=0&sync_timestamp=1596945842652&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" 1552 | integrity sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A= 1553 | dependencies: 1554 | camelcase "^5.0.0" 1555 | decamelize "^1.2.0" 1556 | 1557 | yargs@^13.3.0: 1558 | version "13.3.2" 1559 | resolved "https://registry.npm.taobao.org/yargs/download/yargs-13.3.2.tgz?cache=0&sync_timestamp=1597809594304&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 1560 | integrity sha1-rX/+/sGqWVZayRX4Lcyzipwxot0= 1561 | dependencies: 1562 | cliui "^5.0.0" 1563 | find-up "^3.0.0" 1564 | get-caller-file "^2.0.1" 1565 | require-directory "^2.1.1" 1566 | require-main-filename "^2.0.0" 1567 | set-blocking "^2.0.0" 1568 | string-width "^3.0.0" 1569 | which-module "^2.0.0" 1570 | y18n "^4.0.0" 1571 | yargs-parser "^13.1.2" 1572 | 1573 | yargs@^15.4.1: 1574 | version "15.4.1" 1575 | resolved "https://registry.npm.taobao.org/yargs/download/yargs-15.4.1.tgz?cache=0&sync_timestamp=1597809594304&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" 1576 | integrity sha1-DYehbeAa7p2L7Cv7909nhRcw9Pg= 1577 | dependencies: 1578 | cliui "^6.0.0" 1579 | decamelize "^1.2.0" 1580 | find-up "^4.1.0" 1581 | get-caller-file "^2.0.1" 1582 | require-directory "^2.1.1" 1583 | require-main-filename "^2.0.0" 1584 | set-blocking "^2.0.0" 1585 | string-width "^4.2.0" 1586 | which-module "^2.0.0" 1587 | y18n "^4.0.0" 1588 | yargs-parser "^18.1.2" 1589 | --------------------------------------------------------------------------------