├── .gitignore ├── .DS_Store ├── src ├── .DS_Store ├── static │ ├── .DS_Store │ ├── 1680769293666.png │ ├── 1680769413026.png │ ├── 1680769451557.png │ ├── 1680769470587.png │ ├── 1680769489069.png │ ├── 1680769508372.png │ └── 1680769524616.png ├── router │ ├── v1.upload.router.js │ ├── v1.category.router.js │ ├── index.js │ ├── v1.user.router.js │ └── v1.article.router.js ├── config │ ├── error.config.js │ ├── db.js │ └── config.default.js ├── model │ ├── v1.category.model.js │ ├── user.model.js │ ├── v1.user.model.js │ └── v1.article.model.js ├── service │ ├── v1.coupons.service.js │ ├── v1.category.service.js │ ├── v1.news.service.js │ ├── v1.user.service.js │ ├── user.service.js │ └── v1.article.service.js ├── controller │ ├── v1.user.controller.js │ ├── v1.category.controller.js │ ├── v1.upload.controller.js │ ├── user.controller.js │ ├── v1.bigscreen.controller.js │ └── v1.article.controller.js ├── middleware │ ├── v1.news.middleware.js │ ├── v1.user.middleware.js │ └── pwd.middleware.js ├── main.js ├── app │ ├── index.js │ └── ws.js └── ssl │ ├── myutils.cn.key │ └── myutils.cn.pem ├── package.json ├── README.md ├── yarn-error.log └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/.DS_Store -------------------------------------------------------------------------------- /src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/src/.DS_Store -------------------------------------------------------------------------------- /src/static/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/src/static/.DS_Store -------------------------------------------------------------------------------- /src/static/1680769293666.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/src/static/1680769293666.png -------------------------------------------------------------------------------- /src/static/1680769413026.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/src/static/1680769413026.png -------------------------------------------------------------------------------- /src/static/1680769451557.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/src/static/1680769451557.png -------------------------------------------------------------------------------- /src/static/1680769470587.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/src/static/1680769470587.png -------------------------------------------------------------------------------- /src/static/1680769489069.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/src/static/1680769489069.png -------------------------------------------------------------------------------- /src/static/1680769508372.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/src/static/1680769508372.png -------------------------------------------------------------------------------- /src/static/1680769524616.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ztzzhi/nuxt3-mysql-koa2/HEAD/src/static/1680769524616.png -------------------------------------------------------------------------------- /src/router/v1.upload.router.js: -------------------------------------------------------------------------------- 1 | const Router = require('koa-router') 2 | 3 | const { upload } = require('../controller/v1.upload.controller') 4 | 5 | const router = new Router({ prefix: '/upload' }) 6 | 7 | router.post('/', upload) 8 | 9 | module.exports = router -------------------------------------------------------------------------------- /src/router/v1.category.router.js: -------------------------------------------------------------------------------- 1 | const Router = require("koa-router"); 2 | 3 | const router = new Router({ prefix: '/v1/category' }) 4 | 5 | const { v1SearchCategory } = require('../controller/v1.category.controller.js') 6 | 7 | router.get('/', v1SearchCategory) 8 | 9 | module.exports = router -------------------------------------------------------------------------------- /src/config/error.config.js: -------------------------------------------------------------------------------- 1 | // 错误集中处 理 2 | module.exports = (err, ctx) => { 3 | let status = 400 4 | switch (err.code) { 5 | case 400: 6 | status = 400 7 | break; 8 | case 500: 9 | status = 500 10 | break; 11 | default: 12 | status = 400 13 | } 14 | ctx.status = status 15 | ctx.body = err 16 | } -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const Router = require('koa-router') 3 | const router = new Router 4 | 5 | fs.readdirSync(__dirname).forEach(file => { 6 | // 获取当前文件夹下的所有文件名 7 | if (file != 'index.js') { 8 | let r = require('./' + file) 9 | router.use(r.routes()) 10 | } 11 | }) 12 | 13 | module.exports = router 14 | 15 | -------------------------------------------------------------------------------- /src/model/v1.category.model.js: -------------------------------------------------------------------------------- 1 | const { DataTypes } = require('sequelize') 2 | 3 | const seq = require('../config/db') 4 | 5 | const V1category = seq.define('V1category', { 6 | label: { 7 | type: DataTypes.STRING, 8 | allowNull: true, 9 | comment: '分类名称' 10 | }, 11 | }) 12 | 13 | // V1category.sync({force:true}) 14 | V1category.sync({}) 15 | module.exports = V1category -------------------------------------------------------------------------------- /src/service/v1.coupons.service.js: -------------------------------------------------------------------------------- 1 | const V1HotGoods = require('../model/v1.hotgoods.model') 2 | 3 | class V1UserService { 4 | async getAllGoodsType(){ 5 | try { 6 | const result = await V1HotGoods.findAll() 7 | return result ? result : null; 8 | } catch (error) { 9 | console.log(error); 10 | } 11 | } 12 | } 13 | 14 | module.exports = new V1UserService() -------------------------------------------------------------------------------- /src/router/v1.user.router.js: -------------------------------------------------------------------------------- 1 | const Router = require("koa-router"); 2 | 3 | const router = new Router({ prefix: '/v1/users' }) 4 | 5 | const { v1Login } = require('../controller/v1.user.controller.js') 6 | const { getOpenid, hasUserInfo, jwtTokenCheck } = require('../middleware/v1.user.middleware') 7 | 8 | router.post('/login', getOpenid, hasUserInfo, v1Login) //小程序登录 9 | // router.post('/login1', jwtTokenCheck,v1Login) //小程序 10 | 11 | module.exports = router -------------------------------------------------------------------------------- /src/service/v1.category.service.js: -------------------------------------------------------------------------------- 1 | const V1Category = require('../model/v1.category.model') 2 | class V1CategoryService { 3 | async selectCategory () { 4 | try { 5 | const res = await V1Category.findAll({ 6 | where: { 7 | 8 | }, 9 | }) 10 | return res 11 | } catch (error) { 12 | console.log(error); 13 | } 14 | } 15 | 16 | 17 | } 18 | 19 | module.exports = new V1CategoryService() -------------------------------------------------------------------------------- /src/controller/v1.user.controller.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | // const {UserCreate} = require('../service/v1.user.service.js') 4 | const jwt = require('jsonwebtoken'); 5 | 6 | const { JWTSECRET } = require("../config/config.default"); 7 | class V1UserController { 8 | async v1Login(ctx,next){ 9 | ctx.body = { 10 | ...ctx.state.v1user, 11 | token:jwt.sign(ctx.state.v1user, JWTSECRET, { expiresIn: '1d' }), 12 | } 13 | } 14 | } 15 | 16 | module.exports = new V1UserController() -------------------------------------------------------------------------------- /src/config/db.js: -------------------------------------------------------------------------------- 1 | const { Sequelize } = require('sequelize') 2 | 3 | const { MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB, MYSQL_TYPE } = require('../config/config.default') 4 | console.log(MYSQL_TYPE, 'MYSQL_TYPE'); 5 | 6 | const seq = new Sequelize(MYSQL_DB, MYSQL_USER, MYSQL_PWD, { 7 | host: MYSQL_HOST, 8 | dialect: 'mysql' 9 | }) 10 | 11 | seq.authenticate().then(() => { 12 | console.log('数据库连接成功'); 13 | }).catch((err) => { 14 | console.log(err, '数据库连接失败'); 15 | }) 16 | 17 | module.exports = seq -------------------------------------------------------------------------------- /src/controller/v1.category.controller.js: -------------------------------------------------------------------------------- 1 | const { selectCategory} = require("../service/v1.category.service"); 2 | class V1CategoryController { 3 | async v1SearchCategory (ctx, next) { 4 | try { 5 | const res = await selectCategory(); 6 | console.log(res, "res"); 7 | ctx.body = { 8 | code: 200, 9 | msg: "操作成功", 10 | result: res 11 | }; 12 | } catch (error) { 13 | ctx.body = { 14 | code: 500, 15 | msg: "服务器错误", 16 | result: "", 17 | }; 18 | } 19 | } 20 | } 21 | 22 | module.exports = new V1CategoryController() -------------------------------------------------------------------------------- /src/model/user.model.js: -------------------------------------------------------------------------------- 1 | const { DataTypes } = require('sequelize') 2 | 3 | const seq = require('../config/db') 4 | 5 | const User = seq.define('User', { 6 | user_name: { 7 | type: DataTypes.STRING, 8 | allowNull: false, 9 | unique: true, 10 | comment: '用户名' 11 | }, 12 | password: { 13 | type: DataTypes.STRING, 14 | allowNull: false, 15 | unique: false, 16 | comment: '密码' 17 | }, 18 | is_admin: { 19 | type: DataTypes.BOOLEAN, 20 | allowNull: false, 21 | defaultValue: 0, 22 | comment: '是否为管理员,0不是管理员,1是管理员' 23 | } 24 | }) 25 | 26 | // User.sync({force:true}) 27 | User.sync({}) 28 | module.exports = User -------------------------------------------------------------------------------- /src/router/v1.article.router.js: -------------------------------------------------------------------------------- 1 | const Router = require("koa-router"); 2 | 3 | const router = new Router({ prefix: '/v1/article' }) 4 | 5 | const { v1AddArticle, v1SelectArticle, v1FindOneArticle, v1SearchArticle, v1ArticleStatistics, v1ArticlePraise, v1ArticleView,v1ArticlePraiseNum } = require('../controller/v1.article.controller.js') 6 | 7 | router.get('/', v1SelectArticle) 8 | router.get('/detail', v1FindOneArticle) 9 | router.get('/search', v1SearchArticle) 10 | router.post('/add', v1AddArticle) 11 | router.get('/statistics', v1ArticleStatistics) 12 | router.post('/praise', v1ArticlePraise) 13 | router.get('/praisenum', v1ArticlePraiseNum) 14 | router.post('/view', v1ArticleView) 15 | 16 | module.exports = router -------------------------------------------------------------------------------- /src/middleware/v1.news.middleware.js: -------------------------------------------------------------------------------- 1 | const { serviceGetTypeCodeUrl } = require('../service/v1.news.service') 2 | 3 | /* 4 | 每日简报 topnews 5 | CBA cba 6 | NBA nba 7 | 综合新闻 totalnews 8 | 健康知识 healthy 9 | IT资讯 it 10 | 娱乐新闻 entertainment 11 | 军事资讯 military 12 | 电竞 esports 13 | 女性 woman 14 | 影视 movies 15 | 汽车 car 16 | */ 17 | 18 | const v1GetNewsListType = async (ctx, next) => { 19 | const {type} = ctx.query 20 | const res = await serviceGetTypeCodeUrl(type) 21 | if(res){ 22 | ctx.state.newsUrl = res.codeurl 23 | await next() 24 | return 25 | } 26 | return ctx.app.emit( 27 | "error", 28 | { 29 | code: 500, 30 | msg: "类型不存在", 31 | result: "", 32 | }, 33 | ctx 34 | ); 35 | } 36 | 37 | module.exports = { 38 | v1GetNewsListType, 39 | } -------------------------------------------------------------------------------- /src/service/v1.news.service.js: -------------------------------------------------------------------------------- 1 | const V1NewsType = require('../model/v1.newstype.model') 2 | 3 | class V1UserService { 4 | async serviceGetTypeCodeUrl(type,page){ 5 | try { 6 | const opt = {} 7 | type && Object.assign(opt,{code:type}) 8 | const result = await V1NewsType.findOne({ 9 | where:opt 10 | }) 11 | return result ? result.dataValues : null; 12 | } catch (error) { 13 | console.log(error); 14 | } 15 | } 16 | async getAllNewsType(){ 17 | try { 18 | const result = await V1NewsType.findAll() 19 | return result ? result : null; 20 | } catch (error) { 21 | console.log(error); 22 | } 23 | } 24 | } 25 | 26 | module.exports = new V1UserService() -------------------------------------------------------------------------------- /src/service/v1.user.service.js: -------------------------------------------------------------------------------- 1 | const V1User = require('../model/v1.article.model') 2 | 3 | class V1UserService { 4 | async getUserInfoByOpenid(openid){ 5 | try { 6 | const opt = {} 7 | openid && Object.assign(opt,{openid}) 8 | const res = await V1User.findOne({ 9 | where:opt 10 | }) 11 | return res 12 | } catch (error) { 13 | console.log(error); 14 | } 15 | } 16 | 17 | async UserCreate(openid,user_name){ 18 | try { 19 | const res = await V1User.create({ 20 | openid, 21 | user_name 22 | }) 23 | return res 24 | } catch (error) { 25 | console.log(error); 26 | } 27 | } 28 | 29 | 30 | } 31 | 32 | module.exports = new V1UserService() -------------------------------------------------------------------------------- /src/model/v1.user.model.js: -------------------------------------------------------------------------------- 1 | const { DataTypes } = require('sequelize') 2 | 3 | const seq = require('../config/db') 4 | 5 | const V1User = seq.define('V1User', { 6 | openid: { 7 | type:DataTypes.STRING, 8 | allowNull:false, 9 | unique:true, 10 | comment:'用户唯一标识' 11 | }, 12 | is_regesiter:{ 13 | type:DataTypes.BOOLEAN, 14 | allowNull:false, 15 | defaultValue:0, 16 | comment:'是否注册' 17 | }, 18 | count:{ 19 | type:DataTypes.DOUBLE, 20 | allowNull:false, 21 | defaultValue:0, 22 | comment:'账户' 23 | }, 24 | user_name:{ 25 | type:DataTypes.STRING, 26 | allowNull:true, 27 | defaultValue:null, 28 | comment:'用户名' 29 | } 30 | }) 31 | 32 | // V1User.sync({force:true}) 33 | V1User.sync({}) 34 | module.exports = V1User -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "running", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "dev": "nodemon ./src/main.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "axios": "^0.24.0", 15 | "bcryptjs": "^2.4.3", 16 | "dotenv": "^10.0.0", 17 | "dtk-nodejs-api-sdk": "^1.1.2", 18 | "jsonwebtoken": "^8.5.1", 19 | "koa": "^2.13.4", 20 | "koa-body": "^4.2.0", 21 | "koa-router": "^10.1.1", 22 | "koa-sslify": "^5.0.0", 23 | "koa-static": "^5.0.0", 24 | "koa2-cors": "^2.0.6", 25 | "mysql2": "^2.3.2", 26 | "node-xlsx": "^0.21.0", 27 | "nodemon": "^2.0.14", 28 | "qs": "^6.11.0", 29 | "sequelize": "^6.8.0", 30 | "uuid": "^9.0.0", 31 | "ws": "^8.8.1" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // const { APP_PORT } = require('./config/config.default') 2 | 3 | // const fs = require('fs') 4 | 5 | // const https = require('https') 6 | 7 | // const path = require('path') 8 | 9 | // // const Ws = require('./app/ws') 10 | 11 | // const options = { 12 | // key: fs.readFileSync(path.resolve(__dirname, './ssl/myutils.cn.key')), 13 | // cert: fs.readFileSync(path.resolve(__dirname, './ssl/myutils.cn.pem')) 14 | // } 15 | 16 | // const app = require('./app/index') 17 | 18 | // const server = https.createServer(options, app.callback()) 19 | 20 | // // let ws = new Ws() 21 | // // ws.init(server) 22 | 23 | // server.listen(APP_PORT, () => { 24 | // console.log(`service is running at https://localhost:${APP_PORT}`) 25 | // }) 26 | 27 | const { APP_PORT } = require('./config/config.default') 28 | const app = require('./app/index') 29 | 30 | app.listen(APP_PORT, () => { 31 | console.log(`service is running at http://localhost:${APP_PORT}`) 32 | }) -------------------------------------------------------------------------------- /src/controller/v1.upload.controller.js: -------------------------------------------------------------------------------- 1 | 2 | const fs = require('fs') 3 | const path = require('path') 4 | const xlsx = require("node-xlsx") 5 | class UserController { 6 | // 用户注册 7 | async upload (ctx, next) { 8 | const file = ctx.request.files.file; // 上传的文件在ctx.request.files.file 9 | // 创建可读流 10 | const reader = fs.createReadStream(file.path); 11 | 12 | // 修改文件的名称 13 | var myDate = new Date(); 14 | var newFilename = myDate.getTime() + '.' + file.name.split('.')[1]; 15 | var uploadPath = path.join(__dirname, '../static/') + `/${newFilename}`; 16 | //创建可写流 17 | const upStream = fs.createWriteStream(uploadPath); 18 | // 可读流通过管道写入可写流 19 | reader.pipe(upStream); 20 | return ctx.body = { 21 | code: 200, 22 | msg: '上传成功', 23 | result: `http://180.76.121.2:7001/${newFilename}` //换成本地(http://localhost:7001)或者线上你的ip:7001的地址 这是我的服务器地址 大家最好不要上传到我的服务器~ 24 | }; 25 | } 26 | } 27 | 28 | module.exports = new UserController(); 29 | -------------------------------------------------------------------------------- /src/config/config.default.js: -------------------------------------------------------------------------------- 1 | let config = { 2 | APP_PORT: 7001, 3 | MYSQL_HOST: 'localhost', 4 | MYSQL_PORT: 3306, 5 | MYSQL_USER: 'running', 6 | MYSQL_PWD: 'root', 7 | MYSQL_DB: 'nuxtapp', 8 | MYSQL_TYPE: 'mysql', 9 | SALT: 10,//密码加密 加盐 10 次, 10 | JWTSECRET: 'ztz', 11 | APPID:'wx6108bf2c6ba79156', 12 | SECRET:'13a41762fa0d21dec0aaeb729040352a', 13 | APIKEY:'078b65ada7136beb6a432a3499b71f43', 14 | } 15 | 16 | module.exports = config 17 | // let config = { 18 | // APP_PORT: 7001, 19 | // MYSQL_HOST: 'localhost', 20 | // MYSQL_PORT: 3306, 21 | // MYSQL_USER: 'nuxtapp', 22 | // MYSQL_PWD: 'Mp8BZmFP76xJx8MT', 23 | // MYSQL_DB: 'nuxtapp', 24 | // MYSQL_TYPE: 'mysql', 25 | // SALT: 10,//密码加密 加盐 10 次, 26 | // JWTSECRET: 'ztz', 27 | // APPID:'wx6108bf2c6ba79156', 28 | // SECRET:'13a41762fa0d21dec0aaeb729040352a', 29 | // APIKEY:'078b65ada7136beb6a432a3499b71f43', 30 | // } 31 | 32 | // module.exports = config -------------------------------------------------------------------------------- /src/app/index.js: -------------------------------------------------------------------------------- 1 | const Koa = require('koa') 2 | 3 | const errorHandle = require('../config/error.config') 4 | 5 | const KoaBody = require('koa-body') 6 | 7 | const router = require('../router') 8 | 9 | const sslify = require('koa-sslify').default 10 | 11 | const statics = require('koa-static') 12 | 13 | const cors = require('koa2-cors') 14 | 15 | const path = require('path') 16 | 17 | const app = new Koa() 18 | 19 | 20 | 21 | // app.use(sslify()) https才开启 22 | 23 | 24 | app.use(KoaBody({ 25 | multipart: true, 26 | formidable: { 27 | // 上传目录 28 | // uploadDir: path.join(__dirname, '../static'), 29 | // 保留文件扩展名 30 | keepExtensions: true, 31 | maxFieldsSize: 200 * 1024 * 1024, 32 | } 33 | })) 34 | 35 | 36 | app.use(statics( 37 | path.join(__dirname, '../static') 38 | )) 39 | 40 | app.use(cors()) 41 | 42 | 43 | app.use(router.routes()) 44 | app.use(router.allowedMethods()) 45 | 46 | 47 | app.on('error', errorHandle) 48 | 49 | module.exports = app -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 项目说明 2 | 3 | # 效果预览 4 | 5 | 网址:http://180.76.121.2:3000/ 6 | 7 | # 不许白嫖,给老弟点个star不为过吧!!! 8 | 9 | # 项目说明 10 | 项目采用前后端分离模式进行开发,总共两部分: 11 | 前端使用 Nuxt3 + vue3 + Vite + ts 等技术栈 12 | 后端使用 Koa2 + Mysql + Sequlize 进行开发 13 | 暂未开发后台管理系统 14 | 15 | # 前端代码单独仓库 16 | https://github.com/ztzzhi/ztzzhi-nuxt3-vite-mysql-koa2 17 | 18 | # 数据库配置请查看 config下config.default.js文件 19 | 20 | # node版本 v16.14.0 21 | 其他版本如若出现依赖安装失败等情况 请切换到该node版本进行依赖的安装 22 | 23 | # 部署教程视频详情查看 24 | 部署视频地址 https://www.bilibili.com/video/BV11M411T7dT/?vd_source=437eddc03d69a423c8c1dabc4e4506fa 25 | 26 | # v1.upload.controller.js 上传图片地址请换成你的本地或者你的ip地址 27 | # 博客页面展示 28 | 29 | 首页 30 | 31 | ![](http://www.ditnow.cn:7001/1680769293666.png) 32 | 33 | ![](http://www.ditnow.cn:7001/1680769413026.png) 34 | 35 | ![](http://www.ditnow.cn:7001/1680769451557.png) 36 | 37 | 详情页 38 | 39 | ![](http://www.ditnow.cn:7001/1680769470587.png) 40 | 41 | 文章发布页 42 | 43 | ![](http://www.ditnow.cn:7001/1680769489069.png) 44 | 45 | 资源页 46 | 47 | ![](http://www.ditnow.cn:7001/1680769508372.png) 48 | 49 | 关于我 50 | 51 | ![](http://www.ditnow.cn:7001/1680769524616.png) 52 | 53 | 54 | # 如有其他问题联系作者邮箱 55 | 56 | ztzzkk2020@163.com 57 | -------------------------------------------------------------------------------- /src/service/user.service.js: -------------------------------------------------------------------------------- 1 | const User = require("../model/user.model"); 2 | 3 | class UserService { 4 | async createUser (user_name, password) { 5 | const result = await User.create({ 6 | user_name, 7 | password, 8 | }); 9 | return result; 10 | } 11 | 12 | async getUserInfo ({ id, user_name, password }) { 13 | const opt = {}; 14 | id && Object.assign(opt, { id }); 15 | user_name && Object.assign(opt, { user_name }); 16 | password && Object.assign(opt, { password }); 17 | const result = await User.findOne({ 18 | attributes: ["id", "user_name", "password"], 19 | where: opt, 20 | }); 21 | return result ? result.dataValues : null; 22 | } 23 | 24 | async updateById (obj) { 25 | const { user_name, id, password } = obj 26 | console.log(password, '12'); 27 | const opt = { id } 28 | const newOpt = {} 29 | user_name && Object.assign(newOpt, { user_name }) 30 | id && Object.assign(newOpt, { id }) 31 | password && Object.assign(newOpt, { password }) 32 | 33 | try { 34 | const res = await User.update(newOpt, { where: opt }) 35 | console.log(res, 'res'); 36 | return res 37 | } catch (error) { 38 | console.error(error) 39 | } 40 | 41 | } 42 | } 43 | 44 | module.exports = new UserService(); 45 | -------------------------------------------------------------------------------- /src/model/v1.article.model.js: -------------------------------------------------------------------------------- 1 | const { DataTypes } = require('sequelize') 2 | 3 | const seq = require('../config/db') 4 | 5 | const V1article = seq.define('V1article', { 6 | title: { 7 | type: DataTypes.STRING, 8 | allowNull: true, 9 | defaultValue: "", 10 | comment: '文章标题' 11 | }, 12 | content: { 13 | type: DataTypes.TEXT, 14 | allowNull: true, 15 | defaultValue: "", 16 | comment: '文章内容' 17 | }, 18 | desc: { 19 | type: DataTypes.STRING, 20 | allowNull: true, 21 | defaultValue: "", 22 | comment: '文章摘要' 23 | }, 24 | img: { 25 | type: DataTypes.STRING, 26 | allowNull: true, 27 | defaultValue: "", 28 | comment: '图片地址' 29 | }, 30 | tag: { 31 | type: DataTypes.STRING, 32 | allowNull: true, 33 | defaultValue: "", 34 | comment: '文字分类' 35 | }, 36 | isTop: { 37 | type: DataTypes.BOOLEAN, 38 | allowNull: true, 39 | defaultValue: false, 40 | comment: '是否置顶' 41 | }, 42 | viewNum: { 43 | type: DataTypes.INTEGER, 44 | allowNull: true, 45 | defaultValue: 0, 46 | comment: '阅读量' 47 | }, 48 | praiseNum: { 49 | type: DataTypes.INTEGER, 50 | allowNull: true, 51 | defaultValue: 0, 52 | comment: '点赞量' 53 | }, 54 | commentNum: { 55 | type: DataTypes.INTEGER, 56 | allowNull: true, 57 | defaultValue: 0, 58 | comment: '评论量' 59 | }, 60 | }) 61 | 62 | // V1article.sync({force:true}) 63 | V1article.sync({}) 64 | module.exports = V1article -------------------------------------------------------------------------------- /src/ssl/myutils.cn.key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpQIBAAKCAQEA0Gbb1+/pWFOAWP6/48G3UUkz0c7QZjL+/vgyGZ0uDK6IaLpe 3 | mj/ZxgctdzBoKXuYXtrTALx9DcLj/DgOLzWCVP3LKnaYuYKowXQlfDpiVJHtx9Qh 4 | PYtn/BwaNrfyvk74DGCtMHRDQKyoFHy8cgbOX7OtkljQUx9KzMWLCbwsW0L7PFxT 5 | BqmtABTSJa5iVVuZKnjyOBJpEywnC1D1mitPv76lTHZExKYkHpX6UjLb7C9wKw0+ 6 | lNyNJeUDKHHgmejOsBSagN+dYFN/MEjZZIC44SvnlmSmSo9oPGOnFKJljzJrDciU 7 | NM415lyAx83Zq05CCk7/8i+Khe1Yzoeow4NlcwIDAQABAoIBABSy1UyrYOyWD+OG 8 | 8IMhXIuVGYb8o2PggRrM3EOsAgSzbwv2er/s7ecbvmRzU90kOpwtNWjXemoxUa3d 9 | hBckmZHHH/R95qms3wWme19NIzK4Hbr2XZN8cvMDeDJixG1/cBE2puzu7Iu8uk2d 10 | R/rhTy0Kg7JLN5cR6Wl7iKrfsYjMvoLpxbnhyuON/mJREWT7VkRY+u02sxku7hzb 11 | AiQwD7Tfvix1fVPbTMzESsF2apozWFxmoWImuhcV//dQYHsSaU3C7ZR6fWpd+lLD 12 | GzIrHv1s+VDOycdhsUPe/zj1A3h2YTyPR9tBuVrNr98TphPLEOL6/TeVTrMZENqQ 13 | fKh58bECgYEA9C2P72WDM6obBtdVw/sEi+FwgzWRCEnpgyOvcAJLn/aKeOtexxnC 14 | OHjPB+n6aFq6p2QFKeQzPaTsBX7RZSCDvQeyXypu1Ex8sgLxuBNK424wgrXiEF/4 15 | riUwdYcJxphfxwcblTjEPoIziMHJINjZ1ezdTtvkV/JJ5iJDSUirZvECgYEA2n3f 16 | VyE+njMnh6J0FOieBKODVu0ZS1fhOt8jPG7uQyRHbFBgg4v3TbmskA33aV0+BBo0 17 | 3ZQwdKhUvLfD7QuyaiXpyuEvPAd0X27LG14jGa7ygLKl8hc1dcyzQ+iU2SO0COoO 18 | e7IfiLYdIWTadOwu+slHLqmHK4H7e0mVWXhyeqMCgYEA6/SDXJE54dkFWO0JQeL1 19 | l754HTLMPbg+4KzBQXnWXnO9h+/anId1uWB0n28ovWK/cDYlD0Ani/As63qLGi/7 20 | XdVsNq4ofxqSfOp/bqOmAHRgiE7+b1huVMo3M7sUZUaldwyVSPOcH9NtvT+V/hnP 21 | FvxXN3ciByJo6uw9HToN9+ECgYEArGJhYwIkwHaFurrOsWxyuCA2UNASg+JbHrLM 22 | vzKao7is7WVhMIiu3tEeuC18xdG+S0hN64Cu1mu1J4wpdg4jfyJYmiwes1MCWwU0 23 | FGyqbuocBLRuv1nWYRHXYj3Pqp5DvkDEmo2H2bots5o5zcRGsLE7izJQJmCQhM4i 24 | mouwbtcCgYEAsP09WQlezH2PlUGK3BhjIyqeWMPTJgWUDPJr7qecyHUOMgJIgXMw 25 | 9cVKvYXnSjWBCL+l9Mt+JwI8Emv/5gusliUzqDfKh8mYERoIrEXUiRph4nzTP4a6 26 | 54aD66/Y/P67Z9Mt2fdpjFKV4//qCtDrOFYv1dCwnwBxpudfKJzPS1o= 27 | -----END RSA PRIVATE KEY----- -------------------------------------------------------------------------------- /yarn-error.log: -------------------------------------------------------------------------------- 1 | Arguments: 2 | /usr/local/bin/node /usr/local/bin/yarn 3 | 4 | PATH: 5 | /opt/homebrew/opt/ruby/bin:/Users/ztz/usr/local/mongodb/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/opt/homebrew/opt/ruby/bin:/Users/ztz/usr/local/mongodb/bin:/opt/homebrew/bin:/opt/homebrew/sbin:.:/usr/local/mysql/bin:/Users/ztz/Library/Android/sdk/emulator:/Users/ztz/Library/Android/sdk/tools:/Users/ztz/Library/Android/sdk/tools/bin:/Users/ztz/Library/Android/sdk/platform-tools:.:/usr/local/mysql/bin:/Users/ztz/Library/Android/sdk/emulator:/Users/ztz/Library/Android/sdk/tools:/Users/ztz/Library/Android/sdk/tools/bin:/Users/ztz/Library/Android/sdk/platform-tools 6 | 7 | Yarn version: 8 | 1.22.18 9 | 10 | Node version: 11 | 16.14.0 12 | 13 | Platform: 14 | darwin arm64 15 | 16 | Trace: 17 | Error: ENOENT: no such file or directory, copyfile '/Users/ztz/Library/Caches/Yarn/v6/npm-yallist-2.1.2-1c11f9218f076089a47dd512f93c6699a6a81d52-integrity/node_modules/yallist/README.md' -> '/Users/ztz/myPro/running-service/node_modules/named-placeholders/node_modules/yallist/README.md' 18 | 19 | npm manifest: 20 | { 21 | "name": "running", 22 | "version": "1.0.0", 23 | "description": "", 24 | "main": "index.js", 25 | "scripts": { 26 | "test": "echo \"Error: no test specified\" && exit 1", 27 | "dev": "nodemon ./src/main.js" 28 | }, 29 | "keywords": [], 30 | "author": "", 31 | "license": "ISC", 32 | "dependencies": { 33 | "axios": "^0.24.0", 34 | "bcryptjs": "^2.4.3", 35 | "dotenv": "^10.0.0", 36 | "dtk-nodejs-api-sdk": "^1.1.2", 37 | "jsonwebtoken": "^8.5.1", 38 | "koa": "^2.13.4", 39 | "koa-body": "^4.2.0", 40 | "koa-router": "^10.1.1", 41 | "koa-sslify": "^5.0.0", 42 | "koa-static": "^5.0.0", 43 | "koa2-cors": "^2.0.6", 44 | "mysql2": "^2.3.2", 45 | "nodemon": "^2.0.14", 46 | "qs": "^6.11.0", 47 | "sequelize": "^6.8.0", 48 | "ws": "^8.8.1" 49 | } 50 | } 51 | 52 | yarn manifest: 53 | No manifest 54 | 55 | Lockfile: 56 | No lockfile 57 | -------------------------------------------------------------------------------- /src/middleware/v1.user.middleware.js: -------------------------------------------------------------------------------- 1 | const { APPID, SECRET } = require('../config/config.default') 2 | const axios = require('axios') 3 | 4 | const { getUserInfoByOpenid, UserCreate } = require('../service/v1.user.service') 5 | const jwt = require('jsonwebtoken'); 6 | 7 | const { JWTSECRET } = require("../config/config.default"); 8 | 9 | const getOpenid = async (ctx, next) => { 10 | const { code ,name} = ctx.request.body 11 | console.log(name,'name'); 12 | let result = await axios({ 13 | method: 'get', 14 | url: `https://api.weixin.qq.com/sns/jscode2session?appid=${APPID}&secret=${SECRET}&js_code=${code}&grant_type=authorization_code` 15 | }) 16 | ctx.state.v1user = result.data 17 | ctx.state.v1user.user_name = name 18 | console.log(ctx.state.v1user,'ctx.state.v1user'); 19 | await next() 20 | } 21 | 22 | const hasUserInfo = async (ctx, next) => { 23 | const res = await getUserInfoByOpenid(ctx.state.v1user.openid) 24 | if (!res) { 25 | // 说明数据库没有该用户信息 26 | await UserCreate(ctx.state.v1user.openid,ctx.state.v1user.user_name) 27 | } 28 | ctx.state.v1user = { 29 | session_key: ctx.state.v1user.session_key, 30 | ...res.dataValues 31 | } 32 | await next() 33 | } 34 | 35 | const jwtTokenCheck = async (ctx, next) => { 36 | try { 37 | const { authorization } = ctx.request.header 38 | const token = (authorization ? authorization : '').replace('Bearer ', '') 39 | const user = jwt.verify(token, JWTSECRET) 40 | ctx.state.v1user = user 41 | } catch (error) { 42 | console.log(error,'token'); 43 | switch (error.name) { 44 | case 'TokenExpiredError': 45 | return ctx.app.emit('error', { 46 | code: 500, 47 | msg: "用户登录已过期", 48 | result: '' 49 | }, ctx) 50 | case 'JsonWebTokenError': 51 | return ctx.app.emit('error', { 52 | code: 500, 53 | msg: "无效的token", 54 | result: '' 55 | }, ctx) 56 | default: 57 | return ctx.app.emit('error', { 58 | code: 500, 59 | msg: "无效的token", 60 | result: '' 61 | }, ctx) 62 | } 63 | } 64 | await next() 65 | }; 66 | 67 | module.exports = { 68 | getOpenid, 69 | hasUserInfo, 70 | jwtTokenCheck 71 | } -------------------------------------------------------------------------------- /src/controller/user.controller.js: -------------------------------------------------------------------------------- 1 | const { createUser, getUserInfo, updateById } = require("../service/user.service"); 2 | 3 | const jwt = require('jsonwebtoken'); 4 | 5 | const { JWTSECRET } = require("../config/config.default"); 6 | class UserController { 7 | // 用户注册 8 | async register (ctx, next) { 9 | const { user_name, password } = JSON.parse(ctx.request.body); 10 | if (!user_name || !password) { 11 | console.error("用户名或密码为空"); 12 | ctx.status = 400; 13 | ctx.app.emit( 14 | "error", 15 | { 16 | code: 400, 17 | msg: "请输入用户名或密码", 18 | result: "", 19 | }, 20 | ctx 21 | ); 22 | return; 23 | } 24 | try { 25 | const res = await createUser(user_name, password); 26 | console.log(res, "res"); 27 | ctx.body = { 28 | code: 200, 29 | msg: "操作成功", 30 | result: { 31 | user_name: res.user_name, 32 | }, 33 | }; 34 | } catch (error) { 35 | if (error.parent.errno == 1062) { 36 | ctx.status = 500 37 | ctx.body = { 38 | code: 500, 39 | msg: "用户名已存在", 40 | result: "", 41 | }; 42 | } else { 43 | ctx.body = { 44 | code: 500, 45 | msg: "服务器错误", 46 | result: "", 47 | }; 48 | } 49 | } 50 | } 51 | // 用户登录 52 | async login (ctx, next) { 53 | if (ctx.state.user.id) { 54 | ctx.body = { 55 | code: 200, 56 | msg: "用户登录成功", 57 | result: { 58 | user_name: ctx.state.user.user_name, 59 | token: jwt.sign(ctx.state.user, JWTSECRET, { expiresIn: '1d' }), 60 | user_id: ctx.state.user.id, 61 | } 62 | } 63 | } else { 64 | ctx.app.emit('error', { 65 | code: 500, 66 | msg: "用户登录失败", 67 | result: '' 68 | }, ctx) 69 | } 70 | } 71 | 72 | // 密码修改 73 | async changePwd (ctx, next) { 74 | try { 75 | const res = await updateById(JSON.parse(ctx.request.body)) 76 | if (res[0] == 1) { 77 | ctx.body = { 78 | code: 200, 79 | msg: '密码信息修改成功', 80 | result: '' 81 | } 82 | } else { 83 | ctx.app.emit('error', { 84 | code: 500, 85 | msg: "用户信息修改失败", 86 | result: '' 87 | }, ctx) 88 | } 89 | } catch (error) { 90 | ctx.app.emit('error', { 91 | code: 500, 92 | msg: '密码信息修改失败', 93 | result: '' 94 | }, ctx) 95 | } 96 | } 97 | } 98 | 99 | module.exports = new UserController(); 100 | -------------------------------------------------------------------------------- /src/controller/v1.bigscreen.controller.js: -------------------------------------------------------------------------------- 1 | 2 | const axios = require('axios') 3 | class V1BigScreenController { 4 | async v1GetAllData (ctx, next) { 5 | let { data } = await axios.get("https://c.m.163.com/ug/api/wuhan/app/data/list-total?t" + 6 | new Date().getTime()) 7 | if (data.code == 10000) { 8 | ctx.body = { 9 | code: 200, 10 | msg: '查询成功', 11 | result: data.data 12 | } 13 | } else { 14 | return ctx.app.emit( 15 | "error", 16 | { 17 | code: 500, 18 | msg: "服务器异常", 19 | result: "", 20 | }, 21 | ctx 22 | ); 23 | } 24 | } 25 | async v1GetPolicyData (ctx, next) { 26 | let id = ctx.query.id 27 | let { data } = await axios.get("https://c.m.163.com/ug/api/wuhan/app/manage/track-map?cityId=" + id) 28 | console.log(data); 29 | if (data.code == 10000) { 30 | ctx.body = { 31 | code: 200, 32 | msg: '查询成功', 33 | result: data 34 | } 35 | } else { 36 | return ctx.app.emit( 37 | "error", 38 | { 39 | code: 500, 40 | msg: "服务器异常", 41 | result: "", 42 | }, 43 | ctx 44 | ); 45 | } 46 | } 47 | async v1GetArticleData (ctx, next) { 48 | let { data } = await axios.get("https://c.m.163.com/ug/api/wuhan/app/article/search-list") 49 | if (data.code == 10000) { 50 | ctx.body = { 51 | code: 200, 52 | msg: '查询成功', 53 | result: data.data 54 | } 55 | } else { 56 | return ctx.app.emit( 57 | "error", 58 | { 59 | code: 500, 60 | msg: "服务器异常", 61 | result: "", 62 | }, 63 | ctx 64 | ); 65 | } 66 | } 67 | async v1GetAddress (ctx, next) { 68 | try { 69 | let res = await axios.get("https://restapi.amap.com/v3/geocode/geo?key=2909a1096911a9dd21daa913c86bb677&address=hangzhou") 70 | ctx.body = { 71 | code: 200, 72 | msg: '查询成功', 73 | result: res.data.geocodes 74 | } 75 | } catch (error) { 76 | ctx.body = { 77 | code: 500, 78 | msg: '查询失败', 79 | result: error 80 | } 81 | } 82 | } 83 | } 84 | 85 | module.exports = new V1BigScreenController() -------------------------------------------------------------------------------- /src/middleware/pwd.middleware.js: -------------------------------------------------------------------------------- 1 | const bcrypt = require("bcryptjs"); 2 | 3 | const { SALT, JWTSECRET } = require("../config/config.default"); 4 | 5 | const { getUserInfo } = require("../service/user.service"); 6 | 7 | const jwt = require('jsonwebtoken') 8 | 9 | const jwtTokenCheck = async (ctx, next) => { 10 | try { 11 | const { authorization } = ctx.request.header 12 | const token = (authorization ? authorization : '').replace('Bearer ', '') 13 | const user = jwt.verify(token, JWTSECRET) 14 | ctx.state.user = user 15 | } catch (error) { 16 | console.log(error); 17 | switch (error.name) { 18 | case 'TokenExpiredError': 19 | return ctx.app.emit('error', { 20 | code: 500, 21 | msg: "用户登录已过期", 22 | result: '' 23 | }, ctx) 24 | case 'JsonWebTokenError': 25 | return ctx.app.emit('error', { 26 | code: 500, 27 | msg: "无效的token", 28 | result: '' 29 | }, ctx) 30 | default: 31 | return ctx.app.emit('error', { 32 | code: 500, 33 | msg: "无效的token", 34 | result: '' 35 | }, ctx) 36 | } 37 | } 38 | await next() 39 | }; 40 | 41 | const bcryptPassword = async (ctx, next) => { 42 | const { password } = JSON.parse(ctx.request.body); 43 | 44 | const salt = bcrypt.genSaltSync(SALT); 45 | 46 | // hash保存的是密文 47 | const hash = bcrypt.hashSync(password, salt); 48 | 49 | console.log(typeof ctx.request.body); 50 | 51 | ctx.request.body = JSON.stringify({ ...JSON.parse(ctx.request.body), password: hash }); 52 | 53 | await next(); 54 | }; 55 | 56 | const vertifyPassword = async (ctx, next) => { 57 | const { user_name, password } = (ctx.request.query); 58 | try { 59 | const res = await getUserInfo({ user_name }); 60 | console.log(res.user_name, 'res'); 61 | ctx.state.user = res 62 | if (!res.user_name) { 63 | ctx.app.emit( 64 | "error", 65 | { 66 | code: 400, 67 | msg: "用户登录失败,请检查用户名和密码", 68 | result: "", 69 | }, 70 | ctx 71 | ); 72 | return; 73 | } 74 | if (!bcrypt.compareSync(password, res.password)) { 75 | ctx.app.emit( 76 | "error", 77 | { 78 | code: 400, 79 | msg: "用户登录失败,请检查用户名和密码", 80 | result: "", 81 | }, 82 | ctx 83 | ); 84 | return; 85 | } 86 | } catch (error) { 87 | ctx.app.emit("error", { 88 | code: 500, 89 | msg: "登录异常", 90 | result: "", 91 | }); 92 | } 93 | await next(); 94 | }; 95 | 96 | module.exports = { 97 | bcryptPassword, 98 | vertifyPassword, 99 | jwtTokenCheck 100 | }; 101 | -------------------------------------------------------------------------------- /src/app/ws.js: -------------------------------------------------------------------------------- 1 | const WebSocket = require('ws') 2 | const qs = require('qs') 3 | const messageList = [ 4 | { 5 | id: 1, 6 | msg: "你好啊小卡冷静下来就想啊想啊睡了多久啊索朗多吉啦设计达拉斯就到啦世界的理解啦啦啦啊但是", 7 | to: "MDQ6VXNlcjE=", 8 | from: "MDQ6VXNlcjI=", 9 | updateTime: "15:23" 10 | }, 11 | { 12 | id: 2, 13 | msg: "我很好", 14 | to: "MDQ6VXNlcjI=", 15 | from: "MDQ6VXNlcjE=", 16 | updateTime: "15:28" 17 | }, 18 | { 19 | id: 3, 20 | msg: "你在干什么啊", 21 | to: "MDQ6VXNlcjE=", 22 | from: "MDQ6VXNlcjI=", 23 | updateTime: "15:31" 24 | }, 25 | { 26 | id: 4, 27 | msg: "我没有干什么", 28 | to: "MDQ6VXNlcjI=", 29 | from: "MDQ6VXNlcjE=", 30 | updateTime: "15:40" 31 | }, 32 | { 33 | id: 5, 34 | msg: "你好啊小卡冷静下来就想啊想啊睡了多久啊索朗多吉啦设计达拉斯就到啦世界的理解啦啦啦啊但是", 35 | to: "MDQ6VXNlcjE=", 36 | from: "MDQ6VXNlcjI=", 37 | updateTime: "15:50" 38 | }, 39 | { 40 | id: 6, 41 | msg: "我很好", 42 | to: "MDQ6VXNlcjI=", 43 | from: "MDQ6VXNlcjE=", 44 | updateTime: "15:52" 45 | }, 46 | { 47 | id: 7, 48 | msg: "你在干什么啊", 49 | to: "MDQ6VXNlcjE=", 50 | from: "MDQ6VXNlcjI=", 51 | updateTime: "15:54" 52 | }, 53 | { 54 | id: 8, 55 | msg: "我没有干什么", 56 | to: "MDQ6VXNlcjI=", 57 | from: "MDQ6VXNlcjE=", 58 | updateTime: "15:59" 59 | } 60 | ] 61 | 62 | class ws { 63 | constructor(){ 64 | this.online = 0 65 | this.ws = null 66 | } 67 | // static online = 0 // 在线连接 68 | // static ws = WebSocket.Server //默认实例 69 | init (server) { 70 | // 创建实例 71 | this.ws = new WebSocket.Server({port: 9000 }); 72 | this.ws.on('connection', async (ws, request) => { 73 | ws.on('message', async (msg) => { 74 | console.log('客户端发送数据给服务端了: ' + msg) 75 | const newMsg = JSON.parse(msg) 76 | messageList.push(newMsg) 77 | let sendObj = { "message": "连接成功", "retCode": 200, messageList } 78 | ws.send(JSON.stringify(sendObj)) 79 | this.ws.clients.forEach((client) => { 80 | client.send(JSON.stringify(sendObj)); 81 | }) 82 | }) 83 | if (!(request.url.includes('?id='))) { 84 | return ws.close(); 85 | } 86 | this.online = this.ws._server._connections; 87 | console.log(`socket当前在线${this.online}个连接`) 88 | const { 89 | id 90 | } = qs.parse(qs.parse(request.url.slice(2))); 91 | if (!id) { 92 | return ws.close(); 93 | } 94 | try { 95 | //do something 96 | ws.id = id // 添加ws实例的唯一标识 97 | const obj = { 98 | "message": "连接成功", "retCode": 200, messageList 99 | } 100 | ws.send(JSON.stringify(obj)) 101 | } catch (error) { 102 | console.log('websocket connection error', error) 103 | return ws.close(); 104 | } 105 | }); 106 | } 107 | // 发送客户端数据 108 | sendToCliect (Data) { 109 | let iskeep = false // 加个变量做下发成功判断 110 | if (!(this.ws instanceof WebSocket.Server)) { 111 | return iskeep; 112 | } 113 | const { id } = Data 114 | this.ws.clients.forEach((client) => { 115 | if (client.readyState === WebSocket.OPEN && client.id === id) { 116 | // 发送给指定匹配id 117 | client.send(JSON.stringify(Data)); 118 | iskeep = true 119 | } 120 | }); 121 | return iskeep; 122 | } 123 | } 124 | 125 | 126 | module.exports = ws -------------------------------------------------------------------------------- /src/ssl/myutils.cn.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIGDjCCBPagAwIBAgIQDU7aeZPj86AXRtehurTNMjANBgkqhkiG9w0BAQsFADBy 3 | MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg 4 | SW5jLjEdMBsGA1UECxMURG9tYWluIFZhbGlkYXRlZCBTU0wxHTAbBgNVBAMTFFRy 5 | dXN0QXNpYSBUTFMgUlNBIENBMB4XDTIxMTEyMDAwMDAwMFoXDTIyMTExOTIzNTk1 6 | OVowFTETMBEGA1UEAxMKbXl1dGlscy5jbjCCASIwDQYJKoZIhvcNAQEBBQADggEP 7 | ADCCAQoCggEBANBm29fv6VhTgFj+v+PBt1FJM9HO0GYy/v74MhmdLgyuiGi6Xpo/ 8 | 2cYHLXcwaCl7mF7a0wC8fQ3C4/w4Di81glT9yyp2mLmCqMF0JXw6YlSR7cfUIT2L 9 | Z/wcGja38r5O+AxgrTB0Q0CsqBR8vHIGzl+zrZJY0FMfSszFiwm8LFtC+zxcUwap 10 | rQAU0iWuYlVbmSp48jgSaRMsJwtQ9ZorT7++pUx2RMSmJB6V+lIy2+wvcCsNPpTc 11 | jSXlAyhx4JnozrAUmoDfnWBTfzBI2WSAuOEr55ZkpkqPaDxjpxSiZY8yaw3IlDTO 12 | NeZcgMfN2atOQgpO//IvioXtWM6HqMODZXMCAwEAAaOCAvswggL3MB8GA1UdIwQY 13 | MBaAFH/TmfOgRw4xAFZWIo63zJ7dygGKMB0GA1UdDgQWBBSDrXOjlsmacpDvawKE 14 | hXNyJx3IaTAlBgNVHREEHjAcggpteXV0aWxzLmNugg53d3cubXl1dGlscy5jbjAO 15 | BgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMD4G 16 | A1UdIAQ3MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGln 17 | aWNlcnQuY29tL0NQUzCBkgYIKwYBBQUHAQEEgYUwgYIwNAYIKwYBBQUHMAGGKGh0 18 | dHA6Ly9zdGF0dXNlLmRpZ2l0YWxjZXJ0dmFsaWRhdGlvbi5jb20wSgYIKwYBBQUH 19 | MAKGPmh0dHA6Ly9jYWNlcnRzLmRpZ2l0YWxjZXJ0dmFsaWRhdGlvbi5jb20vVHJ1 20 | c3RBc2lhVExTUlNBQ0EuY3J0MAkGA1UdEwQCMAAwggF9BgorBgEEAdZ5AgQCBIIB 21 | bQSCAWkBZwB3ACl5vvCeOTkh8FZzn2Old+W+V32cYAr4+U1dJlwlXceEAAABfT2H 22 | 5+IAAAQDAEgwRgIhAOev1oEd6FqIe1TPWv04mwDIQ4TE/5q/9jguMgQ1GOtdAiEA 23 | 5zHvlQI7sEtQcMQWbm8AgTMhx4C4TWHxTTQg6kS6R7oAdQBByMqx3yJGShDGoToJ 24 | QodeTjGLGwPr60vHaPCQYpYG9gAAAX09h+gZAAAEAwBGMEQCIB9bW0hFkG/0ajYh 25 | 4zHIS9Yz9oHvHFJckBJpVSrZne8FAiBCDtnoVw39H9TbHuUDUp1Vtbn/qgCgInw9 26 | zcNzz8S3CgB1AN+lXqtogk8fbK3uuF9OPlrqzaISpGpejjsSwCBEXCpzAAABfT2H 27 | 5+EAAAQDAEYwRAIgMqAzHcYuVb8UuFJFAdpn63b2mPt85wACD+sYxxz8OmUCIGrc 28 | hYujqbKcZHGW2aJC0CJz3jORcIQm3SSjU0oHZ19/MA0GCSqGSIb3DQEBCwUAA4IB 29 | AQBl8KTGkUmP/0PwUoqsw73qPm3AeshI7uB+DaDOqBbc/VdyH3LHVWeswDyHlWT6 30 | 9sET9ckIGxnA9eInNPMmItpm9P0oEXHomV0CSKzWoWdAi12LeCHK1FNN/evtQsDi 31 | S3TzrT8/dvllY31pRi+gWKulrDyFE7fvztiRsUM0Sc2lzEo8HTgcVbwM2IVUDone 32 | QEoe3XycW1eeOxlPbYSPVEZ0wGuLW4YDfWGZYjt8hLtqP8DhHdcUrjSKzbn7D8nu 33 | vnWbcWy4025SVpU6gyX0IzhSiAafUddSBXrKxtfhCqKvbGcHmYv74OOEVUbBzE/6 34 | Ee/YEU1azhy5qOzxP7LyoSRu 35 | -----END CERTIFICATE----- 36 | -----BEGIN CERTIFICATE----- 37 | MIIErjCCA5agAwIBAgIQBYAmfwbylVM0jhwYWl7uLjANBgkqhkiG9w0BAQsFADBh 38 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 39 | d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD 40 | QTAeFw0xNzEyMDgxMjI4MjZaFw0yNzEyMDgxMjI4MjZaMHIxCzAJBgNVBAYTAkNO 41 | MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMR0wGwYDVQQL 42 | ExREb21haW4gVmFsaWRhdGVkIFNTTDEdMBsGA1UEAxMUVHJ1c3RBc2lhIFRMUyBS 43 | U0EgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgWa9X+ph+wAm8 44 | Yh1Fk1MjKbQ5QwBOOKVaZR/OfCh+F6f93u7vZHGcUU/lvVGgUQnbzJhR1UV2epJa 45 | e+m7cxnXIKdD0/VS9btAgwJszGFvwoqXeaCqFoP71wPmXjjUwLT70+qvX4hdyYfO 46 | JcjeTz5QKtg8zQwxaK9x4JT9CoOmoVdVhEBAiD3DwR5fFgOHDwwGxdJWVBvktnoA 47 | zjdTLXDdbSVC5jZ0u8oq9BiTDv7jAlsB5F8aZgvSZDOQeFrwaOTbKWSEInEhnchK 48 | ZTD1dz6aBlk1xGEI5PZWAnVAba/ofH33ktymaTDsE6xRDnW97pDkimCRak6CEbfe 49 | 3dXw6OV5AgMBAAGjggFPMIIBSzAdBgNVHQ4EFgQUf9OZ86BHDjEAVlYijrfMnt3K 50 | AYowHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQD 51 | AgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAG 52 | AQH/AgEAMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Au 53 | ZGlnaWNlcnQuY29tMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2lj 54 | ZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwTAYDVR0gBEUwQzA3Bglg 55 | hkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29t 56 | L0NQUzAIBgZngQwBAgEwDQYJKoZIhvcNAQELBQADggEBAK3dVOj5dlv4MzK2i233 57 | lDYvyJ3slFY2X2HKTYGte8nbK6i5/fsDImMYihAkp6VaNY/en8WZ5qcrQPVLuJrJ 58 | DSXT04NnMeZOQDUoj/NHAmdfCBB/h1bZ5OGK6Sf1h5Yx/5wR4f3TUoPgGlnU7EuP 59 | ISLNdMRiDrXntcImDAiRvkh5GJuH4YCVE6XEntqaNIgGkRwxKSgnU3Id3iuFbW9F 60 | UQ9Qqtb1GX91AJ7i4153TikGgYCdwYkBURD8gSVe8OAco6IfZOYt/TEwii1Ivi1C 61 | qnuUlWpsF1LdQNIdfbW3TSe0BhQa7ifbVIfvPWHYOu3rkg1ZeMo6XRU9B4n5VyJY 62 | RmE= 63 | -----END CERTIFICATE----- 64 | -------------------------------------------------------------------------------- /src/service/v1.article.service.js: -------------------------------------------------------------------------------- 1 | const V1article = require('../model/v1.article.model') 2 | const { Op } = require("sequelize"); 3 | class V1ArticleService { 4 | async articleFindOne (openid) { 5 | try { 6 | const opt = {} 7 | openid && Object.assign(opt, { openid }) 8 | const res = await V1article.findOne({ 9 | where: opt 10 | }) 11 | return res 12 | } catch (error) { 13 | console.log(error); 14 | } 15 | } 16 | 17 | async createArticle (title, content, img, tag, isTop, desc) { 18 | try { 19 | const res = await V1article.create({ 20 | title, content, img, tag, isTop, desc 21 | }) 22 | return res 23 | } catch (error) { 24 | console.log(error); 25 | } 26 | } 27 | 28 | async selectArticle (page, page_size) { 29 | try { 30 | const res = await V1article.findAndCountAll({ 31 | where: { 32 | 33 | }, 34 | order: [["isTop", 'DESC']], 35 | offset: (page * 1 - 1) * page_size, 36 | limit: page_size * 1 37 | }) 38 | return res 39 | } catch (error) { 40 | console.log(error); 41 | } 42 | } 43 | 44 | async selectArticleById (id) { 45 | try { 46 | const res = await V1article.findOne({ 47 | where: { 48 | id: id 49 | }, 50 | }) 51 | return res 52 | } catch (error) { 53 | console.log(error); 54 | } 55 | } 56 | 57 | async selectArticleByKeys (keyword) { 58 | try { 59 | const res = await V1article.findAll({ 60 | where: { 61 | [Op.or]: [ 62 | { 63 | title: { 64 | [Op.like]: `%${keyword}%` 65 | } 66 | }, 67 | { 68 | desc: { 69 | [Op.like]: `%${keyword}%` 70 | } 71 | } 72 | ] 73 | }, 74 | }) 75 | return res 76 | } catch (error) { 77 | console.log(error); 78 | } 79 | } 80 | 81 | async selectArticleStatistics () { 82 | try { 83 | const articleNum = await V1article.count() 84 | const praiseNum = await V1article.sum('praiseNum') 85 | const viewNum = await V1article.sum('viewNum') 86 | return { 87 | articleNum, 88 | praiseNum, 89 | viewNum 90 | } 91 | } catch (error) { 92 | console.log(error); 93 | } 94 | } 95 | 96 | async changeArticlev1Praise (id, isReduce) { 97 | try { 98 | const item = await V1article.findOne({ 99 | where: { 100 | id 101 | } 102 | }) 103 | 104 | let praiseNum = 0 105 | if (!isReduce) { 106 | praiseNum = (item.praiseNum || 0) + 1 107 | } else { 108 | praiseNum = (item.praiseNum || 0) - 1 109 | } 110 | 111 | await V1article.update({ praiseNum: praiseNum }, { 112 | where: { id } 113 | }) 114 | return '' 115 | 116 | } catch (error) { 117 | console.log(error); 118 | } 119 | } 120 | 121 | async changeArticlev1View (id, isReduce) { 122 | try { 123 | const item = await V1article.findOne({ 124 | where: { 125 | id 126 | } 127 | }) 128 | 129 | let viewNum = item.viewNum + 1 130 | 131 | await V1article.update({ viewNum: viewNum }, { 132 | where: { id } 133 | }) 134 | return '' 135 | 136 | } catch (error) { 137 | console.log(error); 138 | } 139 | } 140 | 141 | async getArticlePraiseNumById (id) { 142 | try { 143 | const item = await V1article.findOne({ 144 | where: { 145 | id 146 | } 147 | }) 148 | return item.praiseNum 149 | 150 | } catch (error) { 151 | console.log(error); 152 | } 153 | } 154 | 155 | 156 | } 157 | 158 | module.exports = new V1ArticleService() -------------------------------------------------------------------------------- /src/controller/v1.article.controller.js: -------------------------------------------------------------------------------- 1 | const { createArticle, selectArticle, selectArticleById, selectArticleByKeys, selectArticleStatistics, changeArticlev1Praise, changeArticlev1View ,getArticlePraiseNumById} = require("../service/v1.article.service"); 2 | class V1ArticleController { 3 | async v1AddArticle (ctx, next) { 4 | const { title, content, img, tag, isTop, desc } = (ctx.request.body); 5 | if (!title || !content || !img || !tag || !desc) { 6 | console.error("参数校验错误"); 7 | ctx.status = 400; 8 | ctx.app.emit( 9 | "error", 10 | { 11 | code: 400, 12 | msg: "参数校验错误", 13 | result: "", 14 | }, 15 | ctx 16 | ); 17 | return; 18 | } 19 | try { 20 | const res = await createArticle(title, content, img, tag, isTop, desc); 21 | console.log(res, "res"); 22 | ctx.body = { 23 | code: 200, 24 | msg: "操作成功", 25 | result: {}, 26 | }; 27 | } catch (error) { 28 | ctx.body = { 29 | code: 500, 30 | msg: "服务器错误", 31 | result: "", 32 | }; 33 | } 34 | } 35 | 36 | async v1SelectArticle (ctx, next) { 37 | const { page, page_size } = (ctx.request.query); 38 | if (!page && !page_size) { 39 | console.error("参数校验错误"); 40 | ctx.status = 500; 41 | ctx.app.emit( 42 | "error", 43 | { 44 | code: 500, 45 | msg: "参数校验错误", 46 | result: "", 47 | }, 48 | ctx 49 | ); 50 | return; 51 | } 52 | try { 53 | const res = await selectArticle(page, page_size); 54 | console.log(res, "res"); 55 | ctx.body = { 56 | code: 200, 57 | msg: "操作成功", 58 | result: { 59 | lists: res.rows, 60 | total: Math.ceil(res.count / page_size) 61 | }, 62 | }; 63 | } catch (error) { 64 | ctx.body = { 65 | code: 500, 66 | msg: "服务器错误", 67 | result: "", 68 | }; 69 | } 70 | } 71 | async v1FindOneArticle (ctx, next) { 72 | const { id } = (ctx.request.query); 73 | if (!id) { 74 | console.error("参数校验错误"); 75 | ctx.status = 500; 76 | ctx.app.emit( 77 | "error", 78 | { 79 | code: 500, 80 | msg: "参数校验错误", 81 | result: "", 82 | }, 83 | ctx 84 | ); 85 | return; 86 | } 87 | try { 88 | const res = await selectArticleById(id); 89 | console.log(res, "res"); 90 | ctx.body = { 91 | code: 200, 92 | msg: "操作成功", 93 | result: { 94 | ...res.dataValues, 95 | }, 96 | }; 97 | } catch (error) { 98 | ctx.body = { 99 | code: 500, 100 | msg: "服务器错误", 101 | result: "", 102 | }; 103 | } 104 | } 105 | 106 | async v1SearchArticle (ctx, next) { 107 | const { keyword } = (ctx.request.query); 108 | if (!keyword) { 109 | console.error("参数校验错误"); 110 | ctx.status = 500; 111 | ctx.app.emit( 112 | "error", 113 | { 114 | code: 500, 115 | msg: "参数校验错误", 116 | result: "", 117 | }, 118 | ctx 119 | ); 120 | return; 121 | } 122 | try { 123 | const res = await selectArticleByKeys(keyword); 124 | console.log(res, "res"); 125 | ctx.body = { 126 | code: 200, 127 | msg: "操作成功", 128 | result: res 129 | }; 130 | } catch (error) { 131 | ctx.body = { 132 | code: 500, 133 | msg: "服务器错误", 134 | result: "", 135 | }; 136 | } 137 | } 138 | async v1ArticleStatistics (ctx, next) { 139 | try { 140 | const res = await selectArticleStatistics(); 141 | console.log(res, "res"); 142 | ctx.body = { 143 | code: 200, 144 | msg: "操作成功", 145 | result: res 146 | }; 147 | } catch (error) { 148 | ctx.body = { 149 | code: 500, 150 | msg: "服务器错误", 151 | result: "", 152 | }; 153 | } 154 | } 155 | async v1ArticlePraise (ctx, next) { 156 | const { id, isReduce } = (ctx.request.body); 157 | if (!id) { 158 | console.error("参数校验错误"); 159 | ctx.status = 400; 160 | ctx.app.emit( 161 | "error", 162 | { 163 | code: 400, 164 | msg: "参数校验错误", 165 | result: "", 166 | }, 167 | ctx 168 | ); 169 | return; 170 | } 171 | try { 172 | const res = await changeArticlev1Praise(id, isReduce); 173 | console.log(res, "res"); 174 | ctx.body = { 175 | code: 200, 176 | msg: "操作成功", 177 | result: res 178 | }; 179 | } catch (error) { 180 | ctx.body = { 181 | code: 500, 182 | msg: "服务器错误", 183 | result: "", 184 | }; 185 | } 186 | } 187 | async v1ArticleView (ctx, next) { 188 | const { id } = (ctx.request.body); 189 | if (!id) { 190 | console.error("参数校验错误"); 191 | ctx.status = 400; 192 | ctx.app.emit( 193 | "error", 194 | { 195 | code: 400, 196 | msg: "参数校验错误", 197 | result: "", 198 | }, 199 | ctx 200 | ); 201 | return; 202 | } 203 | try { 204 | const res = await changeArticlev1View(id); 205 | console.log(res, "res"); 206 | ctx.body = { 207 | code: 200, 208 | msg: "操作成功", 209 | result: res 210 | }; 211 | } catch (error) { 212 | ctx.body = { 213 | code: 500, 214 | msg: "服务器错误", 215 | result: "", 216 | }; 217 | } 218 | } 219 | async v1ArticlePraiseNum (ctx, next) { 220 | const { id } = (ctx.request.query); 221 | if (!id) { 222 | console.error("参数校验错误"); 223 | ctx.status = 400; 224 | ctx.app.emit( 225 | "error", 226 | { 227 | code: 400, 228 | msg: "参数校验错误", 229 | result: "", 230 | }, 231 | ctx 232 | ); 233 | return; 234 | } 235 | try { 236 | const res = await getArticlePraiseNumById(id); 237 | console.log(res, "res"); 238 | ctx.body = { 239 | code: 200, 240 | msg: "操作成功", 241 | result: res 242 | }; 243 | } catch (error) { 244 | ctx.body = { 245 | code: 500, 246 | msg: "服务器错误", 247 | result: "", 248 | }; 249 | } 250 | } 251 | } 252 | 253 | module.exports = new V1ArticleController() -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sindresorhus/is@^0.14.0": 6 | "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" 7 | "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" 8 | "version" "0.14.0" 9 | 10 | "@szmarczak/http-timer@^1.1.2": 11 | "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" 12 | "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" 13 | "version" "1.1.2" 14 | dependencies: 15 | "defer-to-connect" "^1.0.1" 16 | 17 | "@types/formidable@^1.0.31": 18 | "integrity" "sha512-Z+ICLPV/BPYK5pHYDryNKRk26etA9WCicg620XZM0Uqto5gOv6XySMIlXQ3Ae6V3tS7CZNpE8UdHuuxOZxWVfw==" 19 | "resolved" "https://registry.npmmirror.com/@types/formidable/download/@types/formidable-1.2.4.tgz" 20 | "version" "1.2.4" 21 | dependencies: 22 | "@types/node" "*" 23 | 24 | "@types/node@*": 25 | "integrity" "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==" 26 | "resolved" "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz" 27 | "version" "18.14.6" 28 | 29 | "abbrev@1": 30 | "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 31 | "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" 32 | "version" "1.1.1" 33 | 34 | "accepts@^1.3.5": 35 | "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" 36 | "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" 37 | "version" "1.3.8" 38 | dependencies: 39 | "mime-types" "~2.1.34" 40 | "negotiator" "0.6.3" 41 | 42 | "adler-32@~1.2.0": 43 | "integrity" "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==" 44 | "resolved" "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz" 45 | "version" "1.2.0" 46 | dependencies: 47 | "exit-on-epipe" "~1.0.1" 48 | "printj" "~1.1.0" 49 | 50 | "adler-32@~1.3.0": 51 | "integrity" "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" 52 | "resolved" "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz" 53 | "version" "1.3.1" 54 | 55 | "ajv@^6.12.3": 56 | "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" 57 | "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" 58 | "version" "6.12.6" 59 | dependencies: 60 | "fast-deep-equal" "^3.1.1" 61 | "fast-json-stable-stringify" "^2.0.0" 62 | "json-schema-traverse" "^0.4.1" 63 | "uri-js" "^4.2.2" 64 | 65 | "ansi-align@^3.0.0": 66 | "integrity" "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==" 67 | "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" 68 | "version" "3.0.1" 69 | dependencies: 70 | "string-width" "^4.1.0" 71 | 72 | "ansi-regex@^5.0.1": 73 | "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 74 | "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 75 | "version" "5.0.1" 76 | 77 | "ansi-styles@^4.0.0", "ansi-styles@^4.1.0": 78 | "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" 79 | "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 80 | "version" "4.3.0" 81 | dependencies: 82 | "color-convert" "^2.0.1" 83 | 84 | "any-promise@^1.3.0": 85 | "integrity" "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" 86 | "resolved" "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" 87 | "version" "1.3.0" 88 | 89 | "anymatch@~3.1.2": 90 | "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" 91 | "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" 92 | "version" "3.1.3" 93 | dependencies: 94 | "normalize-path" "^3.0.0" 95 | "picomatch" "^2.0.4" 96 | 97 | "asn1@~0.2.3": 98 | "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" 99 | "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" 100 | "version" "0.2.6" 101 | dependencies: 102 | "safer-buffer" "~2.1.0" 103 | 104 | "assert-plus@^1.0.0", "assert-plus@1.0.0": 105 | "integrity" "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 106 | "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" 107 | "version" "1.0.0" 108 | 109 | "asynckit@^0.4.0": 110 | "integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 111 | "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" 112 | "version" "0.4.0" 113 | 114 | "aws-sign2@~0.7.0": 115 | "integrity" "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 116 | "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" 117 | "version" "0.7.0" 118 | 119 | "aws4@^1.8.0": 120 | "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" 121 | "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" 122 | "version" "1.11.0" 123 | 124 | "axios@^0.24.0": 125 | "integrity" "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==" 126 | "resolved" "https://registry.npmmirror.com/axios/download/axios-0.24.0.tgz" 127 | "version" "0.24.0" 128 | dependencies: 129 | "follow-redirects" "^1.14.4" 130 | 131 | "balanced-match@^1.0.0": 132 | "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 133 | "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 134 | "version" "1.0.2" 135 | 136 | "bcrypt-pbkdf@^1.0.0": 137 | "integrity" "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=" 138 | "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" 139 | "version" "1.0.2" 140 | dependencies: 141 | "tweetnacl" "^0.14.3" 142 | 143 | "bcryptjs@^2.4.3": 144 | "integrity" "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" 145 | "resolved" "https://registry.nlark.com/bcryptjs/download/bcryptjs-2.4.3.tgz" 146 | "version" "2.4.3" 147 | 148 | "binary-extensions@^2.0.0": 149 | "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 150 | "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" 151 | "version" "2.2.0" 152 | 153 | "boxen@^5.0.0": 154 | "integrity" "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==" 155 | "resolved" "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" 156 | "version" "5.1.2" 157 | dependencies: 158 | "ansi-align" "^3.0.0" 159 | "camelcase" "^6.2.0" 160 | "chalk" "^4.1.0" 161 | "cli-boxes" "^2.2.1" 162 | "string-width" "^4.2.2" 163 | "type-fest" "^0.20.2" 164 | "widest-line" "^3.1.0" 165 | "wrap-ansi" "^7.0.0" 166 | 167 | "brace-expansion@^1.1.7": 168 | "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" 169 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 170 | "version" "1.1.11" 171 | dependencies: 172 | "balanced-match" "^1.0.0" 173 | "concat-map" "0.0.1" 174 | 175 | "braces@~3.0.2": 176 | "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" 177 | "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" 178 | "version" "3.0.2" 179 | dependencies: 180 | "fill-range" "^7.0.1" 181 | 182 | "buffer-equal-constant-time@1.0.1": 183 | "integrity" "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" 184 | "resolved" "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" 185 | "version" "1.0.1" 186 | 187 | "bytes@3.1.2": 188 | "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 189 | "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" 190 | "version" "3.1.2" 191 | 192 | "cache-content-type@^1.0.0": 193 | "integrity" "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==" 194 | "resolved" "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz" 195 | "version" "1.0.1" 196 | dependencies: 197 | "mime-types" "^2.1.18" 198 | "ylru" "^1.2.0" 199 | 200 | "cacheable-request@^6.0.0": 201 | "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" 202 | "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" 203 | "version" "6.1.0" 204 | dependencies: 205 | "clone-response" "^1.0.2" 206 | "get-stream" "^5.1.0" 207 | "http-cache-semantics" "^4.0.0" 208 | "keyv" "^3.0.0" 209 | "lowercase-keys" "^2.0.0" 210 | "normalize-url" "^4.1.0" 211 | "responselike" "^1.0.2" 212 | 213 | "call-bind@^1.0.0": 214 | "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" 215 | "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" 216 | "version" "1.0.2" 217 | dependencies: 218 | "function-bind" "^1.1.1" 219 | "get-intrinsic" "^1.0.2" 220 | 221 | "camelcase@^6.2.0": 222 | "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" 223 | "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" 224 | "version" "6.3.0" 225 | 226 | "caseless@~0.12.0": 227 | "integrity" "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 228 | "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" 229 | "version" "0.12.0" 230 | 231 | "cfb@^1.1.4": 232 | "integrity" "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==" 233 | "resolved" "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz" 234 | "version" "1.2.2" 235 | dependencies: 236 | "adler-32" "~1.3.0" 237 | "crc-32" "~1.2.0" 238 | 239 | "chalk@^4.1.0": 240 | "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" 241 | "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 242 | "version" "4.1.2" 243 | dependencies: 244 | "ansi-styles" "^4.1.0" 245 | "supports-color" "^7.1.0" 246 | 247 | "chokidar@^3.2.2": 248 | "integrity" "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==" 249 | "resolved" "https://registry.nlark.com/chokidar/download/chokidar-3.5.2.tgz" 250 | "version" "3.5.2" 251 | dependencies: 252 | "anymatch" "~3.1.2" 253 | "braces" "~3.0.2" 254 | "glob-parent" "~5.1.2" 255 | "is-binary-path" "~2.1.0" 256 | "is-glob" "~4.0.1" 257 | "normalize-path" "~3.0.0" 258 | "readdirp" "~3.6.0" 259 | optionalDependencies: 260 | "fsevents" "~2.3.2" 261 | 262 | "ci-info@^2.0.0": 263 | "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" 264 | "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" 265 | "version" "2.0.0" 266 | 267 | "cli-boxes@^2.2.1": 268 | "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" 269 | "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" 270 | "version" "2.2.1" 271 | 272 | "clone-response@^1.0.2": 273 | "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" 274 | "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" 275 | "version" "1.0.3" 276 | dependencies: 277 | "mimic-response" "^1.0.0" 278 | 279 | "co-body@^5.1.1": 280 | "integrity" "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==" 281 | "resolved" "https://registry.nlark.com/co-body/download/co-body-5.2.0.tgz" 282 | "version" "5.2.0" 283 | dependencies: 284 | "inflation" "^2.0.0" 285 | "qs" "^6.4.0" 286 | "raw-body" "^2.2.0" 287 | "type-is" "^1.6.14" 288 | 289 | "co@^4.6.0": 290 | "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" 291 | "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" 292 | "version" "4.6.0" 293 | 294 | "codepage@~1.15.0": 295 | "integrity" "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" 296 | "resolved" "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz" 297 | "version" "1.15.0" 298 | 299 | "color-convert@^2.0.1": 300 | "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" 301 | "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 302 | "version" "2.0.1" 303 | dependencies: 304 | "color-name" "~1.1.4" 305 | 306 | "color-name@~1.1.4": 307 | "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 308 | "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 309 | "version" "1.1.4" 310 | 311 | "combined-stream@^1.0.6", "combined-stream@~1.0.6": 312 | "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" 313 | "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" 314 | "version" "1.0.8" 315 | dependencies: 316 | "delayed-stream" "~1.0.0" 317 | 318 | "concat-map@0.0.1": 319 | "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 320 | "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 321 | "version" "0.0.1" 322 | 323 | "configstore@^5.0.1": 324 | "integrity" "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==" 325 | "resolved" "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" 326 | "version" "5.0.1" 327 | dependencies: 328 | "dot-prop" "^5.2.0" 329 | "graceful-fs" "^4.1.2" 330 | "make-dir" "^3.0.0" 331 | "unique-string" "^2.0.0" 332 | "write-file-atomic" "^3.0.0" 333 | "xdg-basedir" "^4.0.0" 334 | 335 | "content-disposition@~0.5.2": 336 | "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" 337 | "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" 338 | "version" "0.5.4" 339 | dependencies: 340 | "safe-buffer" "5.2.1" 341 | 342 | "content-type@^1.0.4": 343 | "integrity" "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" 344 | "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" 345 | "version" "1.0.5" 346 | 347 | "cookies@~0.8.0": 348 | "integrity" "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==" 349 | "resolved" "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz" 350 | "version" "0.8.0" 351 | dependencies: 352 | "depd" "~2.0.0" 353 | "keygrip" "~1.1.0" 354 | 355 | "core-util-is@1.0.2": 356 | "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 357 | "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" 358 | "version" "1.0.2" 359 | 360 | "crc-32@~1.2.0": 361 | "integrity" "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" 362 | "resolved" "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" 363 | "version" "1.2.2" 364 | 365 | "crypto-random-string@^2.0.0": 366 | "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" 367 | "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" 368 | "version" "2.0.0" 369 | 370 | "dashdash@^1.12.0": 371 | "integrity" "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=" 372 | "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" 373 | "version" "1.14.1" 374 | dependencies: 375 | "assert-plus" "^1.0.0" 376 | 377 | "debug@^3.1.0": 378 | "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" 379 | "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" 380 | "version" "3.2.7" 381 | dependencies: 382 | "ms" "^2.1.1" 383 | 384 | "debug@^3.2.6": 385 | "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" 386 | "resolved" "https://registry.nlark.com/debug/download/debug-3.2.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz" 387 | "version" "3.2.7" 388 | dependencies: 389 | "ms" "^2.1.1" 390 | 391 | "debug@^4.1.1", "debug@^4.3.2": 392 | "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" 393 | "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" 394 | "version" "4.3.4" 395 | dependencies: 396 | "ms" "2.1.2" 397 | 398 | "decompress-response@^3.3.0": 399 | "integrity" "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==" 400 | "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" 401 | "version" "3.3.0" 402 | dependencies: 403 | "mimic-response" "^1.0.0" 404 | 405 | "deep-equal@~1.0.1": 406 | "integrity" "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" 407 | "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz" 408 | "version" "1.0.1" 409 | 410 | "deep-extend@^0.6.0": 411 | "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 412 | "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" 413 | "version" "0.6.0" 414 | 415 | "defer-to-connect@^1.0.1": 416 | "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" 417 | "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" 418 | "version" "1.1.3" 419 | 420 | "delayed-stream@~1.0.0": 421 | "integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 422 | "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" 423 | "version" "1.0.0" 424 | 425 | "delegates@^1.0.0": 426 | "integrity" "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" 427 | "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" 428 | "version" "1.0.0" 429 | 430 | "denque@^2.0.1": 431 | "integrity" "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" 432 | "resolved" "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" 433 | "version" "2.1.0" 434 | 435 | "depd@^2.0.0", "depd@~2.0.0", "depd@2.0.0": 436 | "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 437 | "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" 438 | "version" "2.0.0" 439 | 440 | "depd@~1.1.2": 441 | "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" 442 | "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" 443 | "version" "1.1.2" 444 | 445 | "destroy@^1.0.4": 446 | "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 447 | "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" 448 | "version" "1.2.0" 449 | 450 | "dot-prop@^5.2.0": 451 | "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" 452 | "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" 453 | "version" "5.3.0" 454 | dependencies: 455 | "is-obj" "^2.0.0" 456 | 457 | "dotenv@^10.0.0": 458 | "integrity" "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" 459 | "resolved" "https://registry.nlark.com/dotenv/download/dotenv-10.0.0.tgz" 460 | "version" "10.0.0" 461 | 462 | "dottie@^2.0.0": 463 | "integrity" "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" 464 | "resolved" "https://registry.nlark.com/dottie/download/dottie-2.0.2.tgz" 465 | "version" "2.0.2" 466 | 467 | "dtk-nodejs-api-sdk@^1.1.2": 468 | "integrity" "sha512-B4l/V1lYvUzVgtwFhbYt/5dZbKuxEJmxKKXIBn46yFdEtq3WWQXYUIo+uwvucSTEA6nfbenCuzq2OUVH0iE3xg==" 469 | "resolved" "https://registry.npmjs.org/dtk-nodejs-api-sdk/-/dtk-nodejs-api-sdk-1.1.2.tgz" 470 | "version" "1.1.2" 471 | dependencies: 472 | "qs" "^6.9.3" 473 | "request" "^2.88.0" 474 | 475 | "duplexer3@^0.1.4": 476 | "integrity" "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" 477 | "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" 478 | "version" "0.1.5" 479 | 480 | "ecc-jsbn@~0.1.1": 481 | "integrity" "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=" 482 | "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" 483 | "version" "0.1.2" 484 | dependencies: 485 | "jsbn" "~0.1.0" 486 | "safer-buffer" "^2.1.0" 487 | 488 | "ecdsa-sig-formatter@1.0.11": 489 | "integrity" "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==" 490 | "resolved" "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" 491 | "version" "1.0.11" 492 | dependencies: 493 | "safe-buffer" "^5.0.1" 494 | 495 | "ee-first@1.1.1": 496 | "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 497 | "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" 498 | "version" "1.1.1" 499 | 500 | "emoji-regex@^8.0.0": 501 | "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 502 | "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 503 | "version" "8.0.0" 504 | 505 | "encodeurl@^1.0.2": 506 | "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 507 | "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" 508 | "version" "1.0.2" 509 | 510 | "end-of-stream@^1.1.0": 511 | "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" 512 | "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" 513 | "version" "1.4.4" 514 | dependencies: 515 | "once" "^1.4.0" 516 | 517 | "escape-goat@^2.0.0": 518 | "integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" 519 | "resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" 520 | "version" "2.1.1" 521 | 522 | "escape-html@^1.0.3": 523 | "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 524 | "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" 525 | "version" "1.0.3" 526 | 527 | "exit-on-epipe@~1.0.1": 528 | "integrity" "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" 529 | "resolved" "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz" 530 | "version" "1.0.1" 531 | 532 | "extend@~3.0.2": 533 | "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 534 | "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" 535 | "version" "3.0.2" 536 | 537 | "extsprintf@^1.2.0", "extsprintf@1.3.0": 538 | "integrity" "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 539 | "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" 540 | "version" "1.3.0" 541 | 542 | "fast-deep-equal@^3.1.1": 543 | "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 544 | "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 545 | "version" "3.1.3" 546 | 547 | "fast-json-stable-stringify@^2.0.0": 548 | "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 549 | "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" 550 | "version" "2.1.0" 551 | 552 | "fill-range@^7.0.1": 553 | "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" 554 | "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" 555 | "version" "7.0.1" 556 | dependencies: 557 | "to-regex-range" "^5.0.1" 558 | 559 | "follow-redirects@^1.14.4": 560 | "integrity" "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" 561 | "resolved" "https://registry.npmmirror.com/follow-redirects/download/follow-redirects-1.14.5.tgz" 562 | "version" "1.14.5" 563 | 564 | "forever-agent@~0.6.1": 565 | "integrity" "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 566 | "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" 567 | "version" "0.6.1" 568 | 569 | "form-data@~2.3.2": 570 | "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" 571 | "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" 572 | "version" "2.3.3" 573 | dependencies: 574 | "asynckit" "^0.4.0" 575 | "combined-stream" "^1.0.6" 576 | "mime-types" "^2.1.12" 577 | 578 | "formidable@^1.1.1": 579 | "integrity" "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" 580 | "resolved" "https://registry.npmmirror.com/formidable/download/formidable-1.2.6.tgz" 581 | "version" "1.2.6" 582 | 583 | "frac@~1.1.2": 584 | "integrity" "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" 585 | "resolved" "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz" 586 | "version" "1.1.2" 587 | 588 | "fresh@~0.5.2": 589 | "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 590 | "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" 591 | "version" "0.5.2" 592 | 593 | "fsevents@~2.3.2": 594 | "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" 595 | "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" 596 | "version" "2.3.2" 597 | 598 | "function-bind@^1.1.1": 599 | "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 600 | "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" 601 | "version" "1.1.1" 602 | 603 | "generate-function@^2.3.1": 604 | "integrity" "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==" 605 | "resolved" "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz" 606 | "version" "2.3.1" 607 | dependencies: 608 | "is-property" "^1.0.2" 609 | 610 | "get-intrinsic@^1.0.2": 611 | "integrity" "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==" 612 | "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" 613 | "version" "1.2.0" 614 | dependencies: 615 | "function-bind" "^1.1.1" 616 | "has" "^1.0.3" 617 | "has-symbols" "^1.0.3" 618 | 619 | "get-stream@^4.1.0": 620 | "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" 621 | "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" 622 | "version" "4.1.0" 623 | dependencies: 624 | "pump" "^3.0.0" 625 | 626 | "get-stream@^5.1.0": 627 | "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" 628 | "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" 629 | "version" "5.2.0" 630 | dependencies: 631 | "pump" "^3.0.0" 632 | 633 | "getpass@^0.1.1": 634 | "integrity" "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=" 635 | "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" 636 | "version" "0.1.7" 637 | dependencies: 638 | "assert-plus" "^1.0.0" 639 | 640 | "glob-parent@~5.1.2": 641 | "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" 642 | "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 643 | "version" "5.1.2" 644 | dependencies: 645 | "is-glob" "^4.0.1" 646 | 647 | "global-dirs@^3.0.0": 648 | "integrity" "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==" 649 | "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" 650 | "version" "3.0.1" 651 | dependencies: 652 | "ini" "2.0.0" 653 | 654 | "got@^9.6.0": 655 | "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" 656 | "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" 657 | "version" "9.6.0" 658 | dependencies: 659 | "@sindresorhus/is" "^0.14.0" 660 | "@szmarczak/http-timer" "^1.1.2" 661 | "cacheable-request" "^6.0.0" 662 | "decompress-response" "^3.3.0" 663 | "duplexer3" "^0.1.4" 664 | "get-stream" "^4.1.0" 665 | "lowercase-keys" "^1.0.1" 666 | "mimic-response" "^1.0.1" 667 | "p-cancelable" "^1.0.0" 668 | "to-readable-stream" "^1.0.0" 669 | "url-parse-lax" "^3.0.0" 670 | 671 | "graceful-fs@^4.1.2": 672 | "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 673 | "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" 674 | "version" "4.2.10" 675 | 676 | "har-schema@^2.0.0": 677 | "integrity" "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 678 | "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" 679 | "version" "2.0.0" 680 | 681 | "har-validator@~5.1.3": 682 | "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" 683 | "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" 684 | "version" "5.1.5" 685 | dependencies: 686 | "ajv" "^6.12.3" 687 | "har-schema" "^2.0.0" 688 | 689 | "has-flag@^3.0.0": 690 | "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 691 | "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 692 | "version" "3.0.0" 693 | 694 | "has-flag@^4.0.0": 695 | "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 696 | "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 697 | "version" "4.0.0" 698 | 699 | "has-symbols@^1.0.2", "has-symbols@^1.0.3": 700 | "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 701 | "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" 702 | "version" "1.0.3" 703 | 704 | "has-tostringtag@^1.0.0": 705 | "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" 706 | "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" 707 | "version" "1.0.0" 708 | dependencies: 709 | "has-symbols" "^1.0.2" 710 | 711 | "has-yarn@^2.1.0": 712 | "integrity" "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" 713 | "resolved" "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" 714 | "version" "2.1.0" 715 | 716 | "has@^1.0.3": 717 | "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" 718 | "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" 719 | "version" "1.0.3" 720 | dependencies: 721 | "function-bind" "^1.1.1" 722 | 723 | "http-assert@^1.3.0": 724 | "integrity" "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==" 725 | "resolved" "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz" 726 | "version" "1.5.0" 727 | dependencies: 728 | "deep-equal" "~1.0.1" 729 | "http-errors" "~1.8.0" 730 | 731 | "http-cache-semantics@^4.0.0": 732 | "integrity" "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" 733 | "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" 734 | "version" "4.1.1" 735 | 736 | "http-errors@^1.6.3", "http-errors@^1.7.3", "http-errors@~1.8.0": 737 | "integrity" "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==" 738 | "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz" 739 | "version" "1.8.1" 740 | dependencies: 741 | "depd" "~1.1.2" 742 | "inherits" "2.0.4" 743 | "setprototypeof" "1.2.0" 744 | "statuses" ">= 1.5.0 < 2" 745 | "toidentifier" "1.0.1" 746 | 747 | "http-errors@~1.6.2": 748 | "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" 749 | "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" 750 | "version" "1.6.3" 751 | dependencies: 752 | "depd" "~1.1.2" 753 | "inherits" "2.0.3" 754 | "setprototypeof" "1.1.0" 755 | "statuses" ">= 1.4.0 < 2" 756 | 757 | "http-errors@2.0.0": 758 | "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" 759 | "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" 760 | "version" "2.0.0" 761 | dependencies: 762 | "depd" "2.0.0" 763 | "inherits" "2.0.4" 764 | "setprototypeof" "1.2.0" 765 | "statuses" "2.0.1" 766 | "toidentifier" "1.0.1" 767 | 768 | "http-signature@~1.2.0": 769 | "integrity" "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=" 770 | "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" 771 | "version" "1.2.0" 772 | dependencies: 773 | "assert-plus" "^1.0.0" 774 | "jsprim" "^1.2.2" 775 | "sshpk" "^1.7.0" 776 | 777 | "iconv-lite@^0.6.3": 778 | "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" 779 | "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" 780 | "version" "0.6.3" 781 | dependencies: 782 | "safer-buffer" ">= 2.1.2 < 3.0.0" 783 | 784 | "iconv-lite@0.4.24": 785 | "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" 786 | "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" 787 | "version" "0.4.24" 788 | dependencies: 789 | "safer-buffer" ">= 2.1.2 < 3" 790 | 791 | "ignore-by-default@^1.0.1": 792 | "integrity" "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" 793 | "resolved" "https://registry.npmmirror.com/ignore-by-default/download/ignore-by-default-1.0.1.tgz" 794 | "version" "1.0.1" 795 | 796 | "import-lazy@^2.1.0": 797 | "integrity" "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" 798 | "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" 799 | "version" "2.1.0" 800 | 801 | "imurmurhash@^0.1.4": 802 | "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" 803 | "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" 804 | "version" "0.1.4" 805 | 806 | "inflation@^2.0.0": 807 | "integrity" "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==" 808 | "resolved" "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz" 809 | "version" "2.0.0" 810 | 811 | "inflection@1.13.1": 812 | "integrity" "sha512-dldYtl2WlN0QDkIDtg8+xFwOS2Tbmp12t1cHa5/YClU6ZQjTFm7B66UcVbh9NQB+HvT5BAd2t5+yKsBkw5pcqA==" 813 | "resolved" "https://registry.nlark.com/inflection/download/inflection-1.13.1.tgz" 814 | "version" "1.13.1" 815 | 816 | "inherits@2.0.3": 817 | "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" 818 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" 819 | "version" "2.0.3" 820 | 821 | "inherits@2.0.4": 822 | "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 823 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 824 | "version" "2.0.4" 825 | 826 | "ini@~1.3.0": 827 | "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" 828 | "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" 829 | "version" "1.3.8" 830 | 831 | "ini@2.0.0": 832 | "integrity" "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" 833 | "resolved" "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" 834 | "version" "2.0.0" 835 | 836 | "is-binary-path@~2.1.0": 837 | "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" 838 | "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" 839 | "version" "2.1.0" 840 | dependencies: 841 | "binary-extensions" "^2.0.0" 842 | 843 | "is-ci@^2.0.0": 844 | "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" 845 | "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" 846 | "version" "2.0.0" 847 | dependencies: 848 | "ci-info" "^2.0.0" 849 | 850 | "is-extglob@^2.1.1": 851 | "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 852 | "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 853 | "version" "2.1.1" 854 | 855 | "is-fullwidth-code-point@^3.0.0": 856 | "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 857 | "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 858 | "version" "3.0.0" 859 | 860 | "is-generator-function@^1.0.7": 861 | "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" 862 | "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" 863 | "version" "1.0.10" 864 | dependencies: 865 | "has-tostringtag" "^1.0.0" 866 | 867 | "is-glob@^4.0.1", "is-glob@~4.0.1": 868 | "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" 869 | "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 870 | "version" "4.0.3" 871 | dependencies: 872 | "is-extglob" "^2.1.1" 873 | 874 | "is-installed-globally@^0.4.0": 875 | "integrity" "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==" 876 | "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" 877 | "version" "0.4.0" 878 | dependencies: 879 | "global-dirs" "^3.0.0" 880 | "is-path-inside" "^3.0.2" 881 | 882 | "is-npm@^5.0.0": 883 | "integrity" "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" 884 | "resolved" "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" 885 | "version" "5.0.0" 886 | 887 | "is-number@^7.0.0": 888 | "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 889 | "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 890 | "version" "7.0.0" 891 | 892 | "is-obj@^2.0.0": 893 | "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" 894 | "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" 895 | "version" "2.0.0" 896 | 897 | "is-path-inside@^3.0.2": 898 | "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" 899 | "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" 900 | "version" "3.0.3" 901 | 902 | "is-property@^1.0.2": 903 | "integrity" "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" 904 | "resolved" "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" 905 | "version" "1.0.2" 906 | 907 | "is-typedarray@^1.0.0", "is-typedarray@~1.0.0": 908 | "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" 909 | "resolved" "https://registry.nlark.com/is-typedarray/download/is-typedarray-1.0.0.tgz" 910 | "version" "1.0.0" 911 | 912 | "is-yarn-global@^0.3.0": 913 | "integrity" "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" 914 | "resolved" "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" 915 | "version" "0.3.0" 916 | 917 | "isstream@~0.1.2": 918 | "integrity" "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 919 | "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" 920 | "version" "0.1.2" 921 | 922 | "jsbn@~0.1.0": 923 | "integrity" "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 924 | "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" 925 | "version" "0.1.1" 926 | 927 | "json-buffer@3.0.0": 928 | "integrity" "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" 929 | "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" 930 | "version" "3.0.0" 931 | 932 | "json-schema-traverse@^0.4.1": 933 | "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 934 | "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 935 | "version" "0.4.1" 936 | 937 | "json-schema@0.4.0": 938 | "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" 939 | "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" 940 | "version" "0.4.0" 941 | 942 | "json-stringify-safe@~5.0.1": 943 | "integrity" "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 944 | "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" 945 | "version" "5.0.1" 946 | 947 | "jsonwebtoken@^8.5.1": 948 | "integrity" "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==" 949 | "resolved" "https://registry.nlark.com/jsonwebtoken/download/jsonwebtoken-8.5.1.tgz" 950 | "version" "8.5.1" 951 | dependencies: 952 | "jws" "^3.2.2" 953 | "lodash.includes" "^4.3.0" 954 | "lodash.isboolean" "^3.0.3" 955 | "lodash.isinteger" "^4.0.4" 956 | "lodash.isnumber" "^3.0.3" 957 | "lodash.isplainobject" "^4.0.6" 958 | "lodash.isstring" "^4.0.1" 959 | "lodash.once" "^4.0.0" 960 | "ms" "^2.1.1" 961 | "semver" "^5.6.0" 962 | 963 | "jsprim@^1.2.2": 964 | "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" 965 | "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" 966 | "version" "1.4.2" 967 | dependencies: 968 | "assert-plus" "1.0.0" 969 | "extsprintf" "1.3.0" 970 | "json-schema" "0.4.0" 971 | "verror" "1.10.0" 972 | 973 | "jwa@^1.4.1": 974 | "integrity" "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==" 975 | "resolved" "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" 976 | "version" "1.4.1" 977 | dependencies: 978 | "buffer-equal-constant-time" "1.0.1" 979 | "ecdsa-sig-formatter" "1.0.11" 980 | "safe-buffer" "^5.0.1" 981 | 982 | "jws@^3.2.2": 983 | "integrity" "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==" 984 | "resolved" "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" 985 | "version" "3.2.2" 986 | dependencies: 987 | "jwa" "^1.4.1" 988 | "safe-buffer" "^5.0.1" 989 | 990 | "keygrip@~1.1.0": 991 | "integrity" "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==" 992 | "resolved" "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz" 993 | "version" "1.1.0" 994 | dependencies: 995 | "tsscmp" "1.0.6" 996 | 997 | "keyv@^3.0.0": 998 | "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" 999 | "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" 1000 | "version" "3.1.0" 1001 | dependencies: 1002 | "json-buffer" "3.0.0" 1003 | 1004 | "koa-body@^4.2.0": 1005 | "integrity" "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==" 1006 | "resolved" "https://registry.nlark.com/koa-body/download/koa-body-4.2.0.tgz" 1007 | "version" "4.2.0" 1008 | dependencies: 1009 | "@types/formidable" "^1.0.31" 1010 | "co-body" "^5.1.1" 1011 | "formidable" "^1.1.1" 1012 | 1013 | "koa-compose@^4.1.0": 1014 | "integrity" "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" 1015 | "resolved" "https://registry.nlark.com/koa-compose/download/koa-compose-4.1.0.tgz" 1016 | "version" "4.1.0" 1017 | 1018 | "koa-convert@^2.0.0": 1019 | "integrity" "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==" 1020 | "resolved" "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz" 1021 | "version" "2.0.0" 1022 | dependencies: 1023 | "co" "^4.6.0" 1024 | "koa-compose" "^4.1.0" 1025 | 1026 | "koa-router@^10.1.1": 1027 | "integrity" "sha512-z/OzxVjf5NyuNO3t9nJpx7e1oR3FSBAauiwXtMQu4ppcnuNZzTaQ4p21P8A6r2Es8uJJM339oc4oVW+qX7SqnQ==" 1028 | "resolved" "https://registry.nlark.com/koa-router/download/koa-router-10.1.1.tgz" 1029 | "version" "10.1.1" 1030 | dependencies: 1031 | "debug" "^4.1.1" 1032 | "http-errors" "^1.7.3" 1033 | "koa-compose" "^4.1.0" 1034 | "methods" "^1.1.2" 1035 | "path-to-regexp" "^6.1.0" 1036 | 1037 | "koa-send@^5.0.0": 1038 | "integrity" "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==" 1039 | "resolved" "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz" 1040 | "version" "5.0.1" 1041 | dependencies: 1042 | "debug" "^4.1.1" 1043 | "http-errors" "^1.7.3" 1044 | "resolve-path" "^1.4.0" 1045 | 1046 | "koa-sslify@^5.0.0": 1047 | "integrity" "sha512-3Qc/DxPcH4BavYkt7xOVDFbaS7nR8oCozb/0dlIpLlyGVhFXcjHETWBwE3QrDLwjKOVJj6ykwRJoNzPT9QxCag==" 1048 | "resolved" "https://registry.nlark.com/koa-sslify/download/koa-sslify-5.0.0.tgz" 1049 | "version" "5.0.0" 1050 | 1051 | "koa-static@^5.0.0": 1052 | "integrity" "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==" 1053 | "resolved" "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz" 1054 | "version" "5.0.0" 1055 | dependencies: 1056 | "debug" "^3.1.0" 1057 | "koa-send" "^5.0.0" 1058 | 1059 | "koa@^2.13.4": 1060 | "integrity" "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==" 1061 | "resolved" "https://registry.npmmirror.com/koa/download/koa-2.13.4.tgz" 1062 | "version" "2.13.4" 1063 | dependencies: 1064 | "accepts" "^1.3.5" 1065 | "cache-content-type" "^1.0.0" 1066 | "content-disposition" "~0.5.2" 1067 | "content-type" "^1.0.4" 1068 | "cookies" "~0.8.0" 1069 | "debug" "^4.3.2" 1070 | "delegates" "^1.0.0" 1071 | "depd" "^2.0.0" 1072 | "destroy" "^1.0.4" 1073 | "encodeurl" "^1.0.2" 1074 | "escape-html" "^1.0.3" 1075 | "fresh" "~0.5.2" 1076 | "http-assert" "^1.3.0" 1077 | "http-errors" "^1.6.3" 1078 | "is-generator-function" "^1.0.7" 1079 | "koa-compose" "^4.1.0" 1080 | "koa-convert" "^2.0.0" 1081 | "on-finished" "^2.3.0" 1082 | "only" "~0.0.2" 1083 | "parseurl" "^1.3.2" 1084 | "statuses" "^1.5.0" 1085 | "type-is" "^1.6.16" 1086 | "vary" "^1.1.2" 1087 | 1088 | "koa2-cors@^2.0.6": 1089 | "integrity" "sha512-JRCcSM4lamM+8kvKGDKlesYk2ASrmSTczDtGUnIadqMgnHU4Ct5Gw7Bxt3w3m6d6dy3WN0PU4oMP43HbddDEWg==" 1090 | "resolved" "https://registry.npmjs.org/koa2-cors/-/koa2-cors-2.0.6.tgz" 1091 | "version" "2.0.6" 1092 | 1093 | "latest-version@^5.1.0": 1094 | "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" 1095 | "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" 1096 | "version" "5.1.0" 1097 | dependencies: 1098 | "package-json" "^6.3.0" 1099 | 1100 | "lodash.includes@^4.3.0": 1101 | "integrity" "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" 1102 | "resolved" "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" 1103 | "version" "4.3.0" 1104 | 1105 | "lodash.isboolean@^3.0.3": 1106 | "integrity" "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" 1107 | "resolved" "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" 1108 | "version" "3.0.3" 1109 | 1110 | "lodash.isinteger@^4.0.4": 1111 | "integrity" "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" 1112 | "resolved" "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" 1113 | "version" "4.0.4" 1114 | 1115 | "lodash.isnumber@^3.0.3": 1116 | "integrity" "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" 1117 | "resolved" "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" 1118 | "version" "3.0.3" 1119 | 1120 | "lodash.isplainobject@^4.0.6": 1121 | "integrity" "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" 1122 | "resolved" "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" 1123 | "version" "4.0.6" 1124 | 1125 | "lodash.isstring@^4.0.1": 1126 | "integrity" "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" 1127 | "resolved" "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" 1128 | "version" "4.0.1" 1129 | 1130 | "lodash.once@^4.0.0": 1131 | "integrity" "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" 1132 | "resolved" "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" 1133 | "version" "4.1.1" 1134 | 1135 | "lodash@^4.17.20": 1136 | "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1137 | "resolved" "https://registry.nlark.com/lodash/download/lodash-4.17.21.tgz" 1138 | "version" "4.17.21" 1139 | 1140 | "long@^4.0.0": 1141 | "integrity" "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" 1142 | "resolved" "https://registry.npmjs.org/long/-/long-4.0.0.tgz" 1143 | "version" "4.0.0" 1144 | 1145 | "lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": 1146 | "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" 1147 | "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" 1148 | "version" "1.0.1" 1149 | 1150 | "lowercase-keys@^2.0.0": 1151 | "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 1152 | "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" 1153 | "version" "2.0.0" 1154 | 1155 | "lru-cache@^6.0.0": 1156 | "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" 1157 | "resolved" "https://registry.nlark.com/lru-cache/download/lru-cache-6.0.0.tgz" 1158 | "version" "6.0.0" 1159 | dependencies: 1160 | "yallist" "^4.0.0" 1161 | 1162 | "lru-cache@^7.14.1": 1163 | "integrity" "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" 1164 | "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" 1165 | "version" "7.18.3" 1166 | 1167 | "make-dir@^3.0.0": 1168 | "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" 1169 | "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" 1170 | "version" "3.1.0" 1171 | dependencies: 1172 | "semver" "^6.0.0" 1173 | 1174 | "media-typer@0.3.0": 1175 | "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 1176 | "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" 1177 | "version" "0.3.0" 1178 | 1179 | "methods@^1.1.2": 1180 | "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 1181 | "resolved" "https://registry.nlark.com/methods/download/methods-1.1.2.tgz" 1182 | "version" "1.1.2" 1183 | 1184 | "mime-db@1.50.0": 1185 | "integrity" "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" 1186 | "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz" 1187 | "version" "1.50.0" 1188 | 1189 | "mime-db@1.52.0": 1190 | "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1191 | "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" 1192 | "version" "1.52.0" 1193 | 1194 | "mime-types@^2.1.12", "mime-types@^2.1.18", "mime-types@~2.1.19", "mime-types@~2.1.24": 1195 | "integrity" "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==" 1196 | "resolved" "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.33.tgz?cache=0&sync_timestamp=1633110073810&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.33.tgz" 1197 | "version" "2.1.33" 1198 | dependencies: 1199 | "mime-db" "1.50.0" 1200 | 1201 | "mime-types@~2.1.34": 1202 | "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" 1203 | "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" 1204 | "version" "2.1.35" 1205 | dependencies: 1206 | "mime-db" "1.52.0" 1207 | 1208 | "mimic-response@^1.0.0", "mimic-response@^1.0.1": 1209 | "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 1210 | "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" 1211 | "version" "1.0.1" 1212 | 1213 | "minimatch@^3.0.4": 1214 | "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" 1215 | "resolved" "https://registry.nlark.com/minimatch/download/minimatch-3.0.4.tgz" 1216 | "version" "3.0.4" 1217 | dependencies: 1218 | "brace-expansion" "^1.1.7" 1219 | 1220 | "minimist@^1.2.0": 1221 | "integrity" "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" 1222 | "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" 1223 | "version" "1.2.8" 1224 | 1225 | "moment-timezone@^0.5.31": 1226 | "integrity" "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==" 1227 | "resolved" "https://registry.nlark.com/moment-timezone/download/moment-timezone-0.5.33.tgz" 1228 | "version" "0.5.33" 1229 | dependencies: 1230 | "moment" ">= 2.9.0" 1231 | 1232 | "moment@^2.26.0", "moment@>= 2.9.0": 1233 | "integrity" "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" 1234 | "resolved" "https://registry.nlark.com/moment/download/moment-2.29.1.tgz" 1235 | "version" "2.29.1" 1236 | 1237 | "ms@^2.1.1": 1238 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1239 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1240 | "version" "2.1.3" 1241 | 1242 | "ms@2.1.2": 1243 | "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1244 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 1245 | "version" "2.1.2" 1246 | 1247 | "mysql2@^2.3.2": 1248 | "integrity" "sha512-JUSA50rt/nSew8aq8xe3pRk5Q4y/M5QdSJn7Ey3ndOlPp2KXuialQ0sS35DNhPT5Z5PnOiIwSSQvKkl1WorqRA==" 1249 | "resolved" "https://registry.npmmirror.com/mysql2/download/mysql2-2.3.2.tgz" 1250 | "version" "2.3.2" 1251 | dependencies: 1252 | "denque" "^2.0.1" 1253 | "generate-function" "^2.3.1" 1254 | "iconv-lite" "^0.6.3" 1255 | "long" "^4.0.0" 1256 | "lru-cache" "^6.0.0" 1257 | "named-placeholders" "^1.1.2" 1258 | "seq-queue" "^0.0.5" 1259 | "sqlstring" "^2.3.2" 1260 | 1261 | "named-placeholders@^1.1.2": 1262 | "integrity" "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==" 1263 | "resolved" "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz" 1264 | "version" "1.1.3" 1265 | dependencies: 1266 | "lru-cache" "^7.14.1" 1267 | 1268 | "negotiator@0.6.3": 1269 | "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 1270 | "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" 1271 | "version" "0.6.3" 1272 | 1273 | "node-xlsx@^0.21.0": 1274 | "integrity" "sha512-MB+KcNCuRzwjgr17scpKiVTPd4Vbj3V+7QwKpqACGyJzhvC67xCQUbw2vYEIKtNfMfcLxgB2q2kEuRS8rmak9g==" 1275 | "resolved" "https://registry.npmjs.org/node-xlsx/-/node-xlsx-0.21.0.tgz" 1276 | "version" "0.21.0" 1277 | dependencies: 1278 | "xlsx" "^0.17.4" 1279 | 1280 | "nodemon@^2.0.14": 1281 | "integrity" "sha512-frcpDx+PviKEQRSYzwhckuO2zoHcBYLHI754RE9z5h1RGtrngerc04mLpQQCPWBkH/2ObrX7We9YiwVSYZpFJQ==" 1282 | "resolved" "https://registry.npmmirror.com/nodemon/download/nodemon-2.0.14.tgz" 1283 | "version" "2.0.14" 1284 | dependencies: 1285 | "chokidar" "^3.2.2" 1286 | "debug" "^3.2.6" 1287 | "ignore-by-default" "^1.0.1" 1288 | "minimatch" "^3.0.4" 1289 | "pstree.remy" "^1.1.7" 1290 | "semver" "^5.7.1" 1291 | "supports-color" "^5.5.0" 1292 | "touch" "^3.1.0" 1293 | "undefsafe" "^2.0.3" 1294 | "update-notifier" "^5.1.0" 1295 | 1296 | "nopt@~1.0.10": 1297 | "integrity" "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==" 1298 | "resolved" "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" 1299 | "version" "1.0.10" 1300 | dependencies: 1301 | "abbrev" "1" 1302 | 1303 | "normalize-path@^3.0.0", "normalize-path@~3.0.0": 1304 | "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1305 | "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 1306 | "version" "3.0.0" 1307 | 1308 | "normalize-url@^4.1.0": 1309 | "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" 1310 | "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" 1311 | "version" "4.5.1" 1312 | 1313 | "oauth-sign@~0.9.0": 1314 | "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 1315 | "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" 1316 | "version" "0.9.0" 1317 | 1318 | "object-inspect@^1.9.0": 1319 | "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" 1320 | "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" 1321 | "version" "1.12.3" 1322 | 1323 | "on-finished@^2.3.0": 1324 | "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" 1325 | "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" 1326 | "version" "2.4.1" 1327 | dependencies: 1328 | "ee-first" "1.1.1" 1329 | 1330 | "once@^1.3.1", "once@^1.4.0": 1331 | "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" 1332 | "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1333 | "version" "1.4.0" 1334 | dependencies: 1335 | "wrappy" "1" 1336 | 1337 | "only@~0.0.2": 1338 | "integrity" "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" 1339 | "resolved" "https://registry.npmjs.org/only/-/only-0.0.2.tgz" 1340 | "version" "0.0.2" 1341 | 1342 | "p-cancelable@^1.0.0": 1343 | "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" 1344 | "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" 1345 | "version" "1.1.0" 1346 | 1347 | "package-json@^6.3.0": 1348 | "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" 1349 | "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" 1350 | "version" "6.5.0" 1351 | dependencies: 1352 | "got" "^9.6.0" 1353 | "registry-auth-token" "^4.0.0" 1354 | "registry-url" "^5.0.0" 1355 | "semver" "^6.2.0" 1356 | 1357 | "parseurl@^1.3.2": 1358 | "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1359 | "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" 1360 | "version" "1.3.3" 1361 | 1362 | "path-is-absolute@1.0.1": 1363 | "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 1364 | "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1365 | "version" "1.0.1" 1366 | 1367 | "path-to-regexp@^6.1.0": 1368 | "integrity" "sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==" 1369 | "resolved" "https://registry.nlark.com/path-to-regexp/download/path-to-regexp-6.2.0.tgz?cache=0&sync_timestamp=1628039878682&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-6.2.0.tgz" 1370 | "version" "6.2.0" 1371 | 1372 | "performance-now@^2.1.0": 1373 | "integrity" "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 1374 | "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" 1375 | "version" "2.1.0" 1376 | 1377 | "picomatch@^2.0.4", "picomatch@^2.2.1": 1378 | "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1379 | "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 1380 | "version" "2.3.1" 1381 | 1382 | "prepend-http@^2.0.0": 1383 | "integrity" "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" 1384 | "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" 1385 | "version" "2.0.0" 1386 | 1387 | "printj@~1.1.0": 1388 | "integrity" "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" 1389 | "resolved" "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz" 1390 | "version" "1.1.2" 1391 | 1392 | "psl@^1.1.28": 1393 | "integrity" "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 1394 | "resolved" "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" 1395 | "version" "1.8.0" 1396 | 1397 | "pstree.remy@^1.1.7": 1398 | "integrity" "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" 1399 | "resolved" "https://registry.nlark.com/pstree.remy/download/pstree.remy-1.1.8.tgz" 1400 | "version" "1.1.8" 1401 | 1402 | "pump@^3.0.0": 1403 | "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" 1404 | "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" 1405 | "version" "3.0.0" 1406 | dependencies: 1407 | "end-of-stream" "^1.1.0" 1408 | "once" "^1.3.1" 1409 | 1410 | "punycode@^2.1.0", "punycode@^2.1.1": 1411 | "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1412 | "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" 1413 | "version" "2.1.1" 1414 | 1415 | "pupa@^2.1.1": 1416 | "integrity" "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==" 1417 | "resolved" "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" 1418 | "version" "2.1.1" 1419 | dependencies: 1420 | "escape-goat" "^2.0.0" 1421 | 1422 | "qs@^6.11.0": 1423 | "integrity" "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==" 1424 | "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz" 1425 | "version" "6.11.1" 1426 | dependencies: 1427 | "side-channel" "^1.0.4" 1428 | 1429 | "qs@^6.4.0": 1430 | "integrity" "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==" 1431 | "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz" 1432 | "version" "6.11.1" 1433 | dependencies: 1434 | "side-channel" "^1.0.4" 1435 | 1436 | "qs@^6.9.3": 1437 | "integrity" "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==" 1438 | "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz" 1439 | "version" "6.10.1" 1440 | dependencies: 1441 | "side-channel" "^1.0.4" 1442 | 1443 | "qs@~6.5.2": 1444 | "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 1445 | "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" 1446 | "version" "6.5.2" 1447 | 1448 | "raw-body@^2.2.0": 1449 | "integrity" "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==" 1450 | "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" 1451 | "version" "2.5.2" 1452 | dependencies: 1453 | "bytes" "3.1.2" 1454 | "http-errors" "2.0.0" 1455 | "iconv-lite" "0.4.24" 1456 | "unpipe" "1.0.0" 1457 | 1458 | "rc@^1.2.8", "rc@1.2.8": 1459 | "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" 1460 | "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" 1461 | "version" "1.2.8" 1462 | dependencies: 1463 | "deep-extend" "^0.6.0" 1464 | "ini" "~1.3.0" 1465 | "minimist" "^1.2.0" 1466 | "strip-json-comments" "~2.0.1" 1467 | 1468 | "readdirp@~3.6.0": 1469 | "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" 1470 | "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" 1471 | "version" "3.6.0" 1472 | dependencies: 1473 | "picomatch" "^2.2.1" 1474 | 1475 | "registry-auth-token@^4.0.0": 1476 | "integrity" "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==" 1477 | "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" 1478 | "version" "4.2.2" 1479 | dependencies: 1480 | "rc" "1.2.8" 1481 | 1482 | "registry-url@^5.0.0": 1483 | "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" 1484 | "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" 1485 | "version" "5.1.0" 1486 | dependencies: 1487 | "rc" "^1.2.8" 1488 | 1489 | "request@^2.88.0": 1490 | "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" 1491 | "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" 1492 | "version" "2.88.2" 1493 | dependencies: 1494 | "aws-sign2" "~0.7.0" 1495 | "aws4" "^1.8.0" 1496 | "caseless" "~0.12.0" 1497 | "combined-stream" "~1.0.6" 1498 | "extend" "~3.0.2" 1499 | "forever-agent" "~0.6.1" 1500 | "form-data" "~2.3.2" 1501 | "har-validator" "~5.1.3" 1502 | "http-signature" "~1.2.0" 1503 | "is-typedarray" "~1.0.0" 1504 | "isstream" "~0.1.2" 1505 | "json-stringify-safe" "~5.0.1" 1506 | "mime-types" "~2.1.19" 1507 | "oauth-sign" "~0.9.0" 1508 | "performance-now" "^2.1.0" 1509 | "qs" "~6.5.2" 1510 | "safe-buffer" "^5.1.2" 1511 | "tough-cookie" "~2.5.0" 1512 | "tunnel-agent" "^0.6.0" 1513 | "uuid" "^3.3.2" 1514 | 1515 | "resolve-path@^1.4.0": 1516 | "integrity" "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==" 1517 | "resolved" "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz" 1518 | "version" "1.4.0" 1519 | dependencies: 1520 | "http-errors" "~1.6.2" 1521 | "path-is-absolute" "1.0.1" 1522 | 1523 | "responselike@^1.0.2": 1524 | "integrity" "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==" 1525 | "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" 1526 | "version" "1.0.2" 1527 | dependencies: 1528 | "lowercase-keys" "^1.0.0" 1529 | 1530 | "retry-as-promised@^3.2.0": 1531 | "integrity" "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==" 1532 | "resolved" "https://registry.nlark.com/retry-as-promised/download/retry-as-promised-3.2.0.tgz" 1533 | "version" "3.2.0" 1534 | dependencies: 1535 | "any-promise" "^1.3.0" 1536 | 1537 | "safe-buffer@^5.0.1": 1538 | "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1539 | "resolved" "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.1.2.tgz" 1540 | "version" "5.1.2" 1541 | 1542 | "safe-buffer@^5.1.2": 1543 | "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1544 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 1545 | "version" "5.2.1" 1546 | 1547 | "safe-buffer@5.2.1": 1548 | "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1549 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 1550 | "version" "5.2.1" 1551 | 1552 | "safer-buffer@^2.0.2": 1553 | "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1554 | "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 1555 | "version" "2.1.2" 1556 | 1557 | "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": 1558 | "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1559 | "resolved" "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz" 1560 | "version" "2.1.2" 1561 | 1562 | "semver-diff@^3.1.1": 1563 | "integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==" 1564 | "resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" 1565 | "version" "3.1.1" 1566 | dependencies: 1567 | "semver" "^6.3.0" 1568 | 1569 | "semver@^5.6.0": 1570 | "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1571 | "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" 1572 | "version" "5.7.1" 1573 | 1574 | "semver@^5.7.1": 1575 | "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1576 | "resolved" "https://registry.nlark.com/semver/download/semver-5.7.1.tgz" 1577 | "version" "5.7.1" 1578 | 1579 | "semver@^6.0.0": 1580 | "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1581 | "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" 1582 | "version" "6.3.0" 1583 | 1584 | "semver@^6.2.0": 1585 | "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1586 | "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" 1587 | "version" "6.3.0" 1588 | 1589 | "semver@^6.3.0": 1590 | "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1591 | "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" 1592 | "version" "6.3.0" 1593 | 1594 | "semver@^7.3.2": 1595 | "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==" 1596 | "resolved" "https://registry.nlark.com/semver/download/semver-7.3.5.tgz" 1597 | "version" "7.3.5" 1598 | dependencies: 1599 | "lru-cache" "^6.0.0" 1600 | 1601 | "semver@^7.3.4": 1602 | "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" 1603 | "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" 1604 | "version" "7.3.8" 1605 | dependencies: 1606 | "lru-cache" "^6.0.0" 1607 | 1608 | "seq-queue@^0.0.5": 1609 | "integrity" "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" 1610 | "resolved" "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz" 1611 | "version" "0.0.5" 1612 | 1613 | "sequelize-pool@^6.0.0": 1614 | "integrity" "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==" 1615 | "resolved" "https://registry.nlark.com/sequelize-pool/download/sequelize-pool-6.1.0.tgz" 1616 | "version" "6.1.0" 1617 | 1618 | "sequelize@^6.8.0": 1619 | "integrity" "sha512-tFROh9T9GgyY6aTV2+aGdfVNvrppuTOo1EFln9AtV8wXJTOOr7Nan7pZum5oLy87CGWl0YeHzAwg99tz04OqNA==" 1620 | "resolved" "https://registry.npmmirror.com/sequelize/download/sequelize-6.9.0.tgz" 1621 | "version" "6.9.0" 1622 | dependencies: 1623 | "debug" "^4.1.1" 1624 | "dottie" "^2.0.0" 1625 | "inflection" "1.13.1" 1626 | "lodash" "^4.17.20" 1627 | "moment" "^2.26.0" 1628 | "moment-timezone" "^0.5.31" 1629 | "retry-as-promised" "^3.2.0" 1630 | "semver" "^7.3.2" 1631 | "sequelize-pool" "^6.0.0" 1632 | "toposort-class" "^1.0.1" 1633 | "uuid" "^8.1.0" 1634 | "validator" "^13.6.0" 1635 | "wkx" "^0.5.0" 1636 | 1637 | "setprototypeof@1.1.0": 1638 | "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 1639 | "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" 1640 | "version" "1.1.0" 1641 | 1642 | "setprototypeof@1.2.0": 1643 | "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1644 | "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" 1645 | "version" "1.2.0" 1646 | 1647 | "side-channel@^1.0.4": 1648 | "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" 1649 | "resolved" "https://registry.nlark.com/side-channel/download/side-channel-1.0.4.tgz" 1650 | "version" "1.0.4" 1651 | dependencies: 1652 | "call-bind" "^1.0.0" 1653 | "get-intrinsic" "^1.0.2" 1654 | "object-inspect" "^1.9.0" 1655 | 1656 | "signal-exit@^3.0.2": 1657 | "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 1658 | "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" 1659 | "version" "3.0.7" 1660 | 1661 | "sqlstring@^2.3.2": 1662 | "integrity" "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==" 1663 | "resolved" "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz" 1664 | "version" "2.3.3" 1665 | 1666 | "ssf@~0.11.2": 1667 | "integrity" "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==" 1668 | "resolved" "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz" 1669 | "version" "0.11.2" 1670 | dependencies: 1671 | "frac" "~1.1.2" 1672 | 1673 | "sshpk@^1.7.0": 1674 | "integrity" "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==" 1675 | "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" 1676 | "version" "1.16.1" 1677 | dependencies: 1678 | "asn1" "~0.2.3" 1679 | "assert-plus" "^1.0.0" 1680 | "bcrypt-pbkdf" "^1.0.0" 1681 | "dashdash" "^1.12.0" 1682 | "ecc-jsbn" "~0.1.1" 1683 | "getpass" "^0.1.1" 1684 | "jsbn" "~0.1.0" 1685 | "safer-buffer" "^2.0.2" 1686 | "tweetnacl" "~0.14.0" 1687 | 1688 | "statuses@^1.5.0", "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": 1689 | "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" 1690 | "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" 1691 | "version" "1.5.0" 1692 | 1693 | "statuses@2.0.1": 1694 | "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1695 | "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" 1696 | "version" "2.0.1" 1697 | 1698 | "string-width@^4.0.0", "string-width@^4.1.0", "string-width@^4.2.2": 1699 | "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" 1700 | "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1701 | "version" "4.2.3" 1702 | dependencies: 1703 | "emoji-regex" "^8.0.0" 1704 | "is-fullwidth-code-point" "^3.0.0" 1705 | "strip-ansi" "^6.0.1" 1706 | 1707 | "strip-ansi@^6.0.0", "strip-ansi@^6.0.1": 1708 | "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" 1709 | "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 1710 | "version" "6.0.1" 1711 | dependencies: 1712 | "ansi-regex" "^5.0.1" 1713 | 1714 | "strip-json-comments@~2.0.1": 1715 | "integrity" "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" 1716 | "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" 1717 | "version" "2.0.1" 1718 | 1719 | "supports-color@^5.5.0": 1720 | "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" 1721 | "resolved" "https://registry.nlark.com/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1626703508574&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz" 1722 | "version" "5.5.0" 1723 | dependencies: 1724 | "has-flag" "^3.0.0" 1725 | 1726 | "supports-color@^7.1.0": 1727 | "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" 1728 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 1729 | "version" "7.2.0" 1730 | dependencies: 1731 | "has-flag" "^4.0.0" 1732 | 1733 | "to-readable-stream@^1.0.0": 1734 | "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" 1735 | "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" 1736 | "version" "1.0.0" 1737 | 1738 | "to-regex-range@^5.0.1": 1739 | "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" 1740 | "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 1741 | "version" "5.0.1" 1742 | dependencies: 1743 | "is-number" "^7.0.0" 1744 | 1745 | "toidentifier@1.0.0": 1746 | "integrity" "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1747 | "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" 1748 | "version" "1.0.0" 1749 | 1750 | "toidentifier@1.0.1": 1751 | "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1752 | "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" 1753 | "version" "1.0.1" 1754 | 1755 | "toposort-class@^1.0.1": 1756 | "integrity" "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" 1757 | "resolved" "https://registry.nlark.com/toposort-class/download/toposort-class-1.0.1.tgz" 1758 | "version" "1.0.1" 1759 | 1760 | "touch@^3.1.0": 1761 | "integrity" "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==" 1762 | "resolved" "https://registry.nlark.com/touch/download/touch-3.1.0.tgz" 1763 | "version" "3.1.0" 1764 | dependencies: 1765 | "nopt" "~1.0.10" 1766 | 1767 | "tough-cookie@~2.5.0": 1768 | "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" 1769 | "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" 1770 | "version" "2.5.0" 1771 | dependencies: 1772 | "psl" "^1.1.28" 1773 | "punycode" "^2.1.1" 1774 | 1775 | "tsscmp@1.0.6": 1776 | "integrity" "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" 1777 | "resolved" "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz" 1778 | "version" "1.0.6" 1779 | 1780 | "tunnel-agent@^0.6.0": 1781 | "integrity" "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" 1782 | "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" 1783 | "version" "0.6.0" 1784 | dependencies: 1785 | "safe-buffer" "^5.0.1" 1786 | 1787 | "tweetnacl@^0.14.3", "tweetnacl@~0.14.0": 1788 | "integrity" "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 1789 | "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" 1790 | "version" "0.14.5" 1791 | 1792 | "type-fest@^0.20.2": 1793 | "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" 1794 | "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" 1795 | "version" "0.20.2" 1796 | 1797 | "type-is@^1.6.14": 1798 | "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" 1799 | "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" 1800 | "version" "1.6.18" 1801 | dependencies: 1802 | "media-typer" "0.3.0" 1803 | "mime-types" "~2.1.24" 1804 | 1805 | "type-is@^1.6.16": 1806 | "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" 1807 | "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" 1808 | "version" "1.6.18" 1809 | dependencies: 1810 | "media-typer" "0.3.0" 1811 | "mime-types" "~2.1.24" 1812 | 1813 | "typedarray-to-buffer@^3.1.5": 1814 | "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" 1815 | "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" 1816 | "version" "3.1.5" 1817 | dependencies: 1818 | "is-typedarray" "^1.0.0" 1819 | 1820 | "undefsafe@^2.0.3": 1821 | "integrity" "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" 1822 | "resolved" "https://registry.npmmirror.com/undefsafe/download/undefsafe-2.0.5.tgz" 1823 | "version" "2.0.5" 1824 | 1825 | "unique-string@^2.0.0": 1826 | "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" 1827 | "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" 1828 | "version" "2.0.0" 1829 | dependencies: 1830 | "crypto-random-string" "^2.0.0" 1831 | 1832 | "unpipe@1.0.0": 1833 | "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 1834 | "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" 1835 | "version" "1.0.0" 1836 | 1837 | "update-notifier@^5.1.0": 1838 | "integrity" "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==" 1839 | "resolved" "https://registry.nlark.com/update-notifier/download/update-notifier-5.1.0.tgz" 1840 | "version" "5.1.0" 1841 | dependencies: 1842 | "boxen" "^5.0.0" 1843 | "chalk" "^4.1.0" 1844 | "configstore" "^5.0.1" 1845 | "has-yarn" "^2.1.0" 1846 | "import-lazy" "^2.1.0" 1847 | "is-ci" "^2.0.0" 1848 | "is-installed-globally" "^0.4.0" 1849 | "is-npm" "^5.0.0" 1850 | "is-yarn-global" "^0.3.0" 1851 | "latest-version" "^5.1.0" 1852 | "pupa" "^2.1.1" 1853 | "semver" "^7.3.4" 1854 | "semver-diff" "^3.1.1" 1855 | "xdg-basedir" "^4.0.0" 1856 | 1857 | "uri-js@^4.2.2": 1858 | "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" 1859 | "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" 1860 | "version" "4.4.1" 1861 | dependencies: 1862 | "punycode" "^2.1.0" 1863 | 1864 | "url-parse-lax@^3.0.0": 1865 | "integrity" "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==" 1866 | "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" 1867 | "version" "3.0.0" 1868 | dependencies: 1869 | "prepend-http" "^2.0.0" 1870 | 1871 | "uuid@^3.3.2": 1872 | "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 1873 | "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" 1874 | "version" "3.4.0" 1875 | 1876 | "uuid@^8.1.0": 1877 | "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 1878 | "resolved" "https://registry.nlark.com/uuid/download/uuid-8.3.2.tgz" 1879 | "version" "8.3.2" 1880 | 1881 | "uuid@^9.0.0": 1882 | "integrity" "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" 1883 | "resolved" "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz" 1884 | "version" "9.0.0" 1885 | 1886 | "validator@^13.6.0": 1887 | "integrity" "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" 1888 | "resolved" "https://registry.npmmirror.com/validator/download/validator-13.7.0.tgz" 1889 | "version" "13.7.0" 1890 | 1891 | "vary@^1.1.2": 1892 | "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 1893 | "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" 1894 | "version" "1.1.2" 1895 | 1896 | "verror@1.10.0": 1897 | "integrity" "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=" 1898 | "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" 1899 | "version" "1.10.0" 1900 | dependencies: 1901 | "assert-plus" "^1.0.0" 1902 | "core-util-is" "1.0.2" 1903 | "extsprintf" "^1.2.0" 1904 | 1905 | "widest-line@^3.1.0": 1906 | "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" 1907 | "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" 1908 | "version" "3.1.0" 1909 | dependencies: 1910 | "string-width" "^4.0.0" 1911 | 1912 | "wkx@^0.5.0": 1913 | "integrity" "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==" 1914 | "resolved" "https://registry.nlark.com/wkx/download/wkx-0.5.0.tgz" 1915 | "version" "0.5.0" 1916 | dependencies: 1917 | "@types/node" "*" 1918 | 1919 | "wmf@~1.0.1": 1920 | "integrity" "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" 1921 | "resolved" "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz" 1922 | "version" "1.0.2" 1923 | 1924 | "word@~0.3.0": 1925 | "integrity" "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" 1926 | "resolved" "https://registry.npmjs.org/word/-/word-0.3.0.tgz" 1927 | "version" "0.3.0" 1928 | 1929 | "wrap-ansi@^7.0.0": 1930 | "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" 1931 | "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1932 | "version" "7.0.0" 1933 | dependencies: 1934 | "ansi-styles" "^4.0.0" 1935 | "string-width" "^4.1.0" 1936 | "strip-ansi" "^6.0.0" 1937 | 1938 | "wrappy@1": 1939 | "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1940 | "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1941 | "version" "1.0.2" 1942 | 1943 | "write-file-atomic@^3.0.0": 1944 | "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" 1945 | "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" 1946 | "version" "3.0.3" 1947 | dependencies: 1948 | "imurmurhash" "^0.1.4" 1949 | "is-typedarray" "^1.0.0" 1950 | "signal-exit" "^3.0.2" 1951 | "typedarray-to-buffer" "^3.1.5" 1952 | 1953 | "ws@^8.8.1": 1954 | "integrity" "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==" 1955 | "resolved" "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz" 1956 | "version" "8.12.1" 1957 | 1958 | "xdg-basedir@^4.0.0": 1959 | "integrity" "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" 1960 | "resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" 1961 | "version" "4.0.0" 1962 | 1963 | "xlsx@^0.17.4": 1964 | "integrity" "sha512-lXNU0TuYsvElzvtI6O7WIVb9Zar1XYw7Xb3VAx2wn8N/n0whBYrCnHMxtFyIiUU1Wjf09WzmLALDfBO5PqTb1g==" 1965 | "resolved" "https://registry.npmjs.org/xlsx/-/xlsx-0.17.5.tgz" 1966 | "version" "0.17.5" 1967 | dependencies: 1968 | "adler-32" "~1.2.0" 1969 | "cfb" "^1.1.4" 1970 | "codepage" "~1.15.0" 1971 | "crc-32" "~1.2.0" 1972 | "ssf" "~0.11.2" 1973 | "wmf" "~1.0.1" 1974 | "word" "~0.3.0" 1975 | 1976 | "yallist@^4.0.0": 1977 | "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1978 | "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" 1979 | "version" "4.0.0" 1980 | 1981 | "ylru@^1.2.0": 1982 | "integrity" "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==" 1983 | "resolved" "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz" 1984 | "version" "1.3.2" 1985 | --------------------------------------------------------------------------------