From faf2c46899d02bb8e2a8b7d7072ae19d9b82bca3 Mon Sep 17 00:00:00 2001 From: SkySun Date: Thu, 25 Mar 2021 10:18:10 +0800 Subject: [PATCH] rename & Gitlab OAuth login --- README.md | 97 +- benchmark/README.md | 8 +- config/development.js | 36 +- config/production.js | 34 +- config/test.js | 30 +- db.js | 2 +- debugMode.js | 2 +- help/help.md | 32 +- package-lock.json | 2793 ------------------------------- package.json | 16 +- proxyWeb.js | 2 +- server.js | 10 +- staticTransfer/send.js | 2 +- staticTransfer/serve_static.js | 2 +- test/staticTest/index.html | 2 +- test/test.js | 30 +- web/auth.js | 9 +- web/route.js | 68 +- web/static/css/filePreview.css | 22 +- web/static/css/index.css | 68 +- web/static/css/login.css | 16 + web/static/img/gitlab.png | Bin 0 -> 14917 bytes web/static/js/caches.js | 12 +- web/static/js/domain.js | 8 +- web/static/js/filePreview.js | 4 +- web/static/js/index.js | 20 +- web/static/js/login.js | 4 +- web/static/js/permissions.js | 8 +- web/static/js/servers.js | 8 +- web/views/cache-list.pug | 36 +- web/views/domain-list.pug | 22 +- web/views/file-preview.pug | 18 +- web/views/help.pug | 8 +- web/views/info.pug | 10 +- web/views/layout.pug | 34 +- web/views/login.pug | 22 +- web/views/partials/route-tr.pug | 2 +- web/views/permission-list.pug | 32 +- web/views/route-list.pug | 42 +- web/views/server-list.pug | 26 +- yarn.lock | 2455 +++++++++++++++++++++++++++ 41 files changed, 2910 insertions(+), 3142 deletions(-) delete mode 100644 package-lock.json create mode 100644 web/static/img/gitlab.png create mode 100644 yarn.lock diff --git a/README.md b/README.md index 4b82bb4..33739fb 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,14 @@ - + -# Noginx +# Node Proxy 基于 Node.js 的高性能 HTTP 及反向代理服务器,类似于 [Nginx](http://nginx.org/)。 -[![Build Status](https://travis-ci.org/eshengsky/noginx.svg?branch=master)](https://travis-ci.org/eshengsky/noginx) +[![Build Status](https://travis-ci.org/eshengsky/node-proxy.svg?branch=master)](https://travis-ci.org/eshengsky/node-proxy) -### Noginx的含义 +### 为什么使用Node Proxy -Noginx 不是 No nginx(否定 nginx),而是 Node.js based nginx(基于 Node.js 的 nginx),更是 Not only nginx(不仅仅是 nginx)。 - -### 为什么使用Noginx - -如果你的项目符合以下任一点,你就可以尝试使用 Noginx: +如果你的项目符合以下任一点,你就可以尝试使用 Node Proxy: * 你的项目本身就是基于 Node.js,你希望代理服务器也使用相同的技术; * 你的团队更熟悉 JavaScript,而不是 C/C++/Lua; * 你希望有一个 WebUI 配置界面,而不是过时的纯文本配置方式; @@ -22,7 +18,7 @@ Noginx 不是 No nginx(否定 nginx),而是 Node.js based nginx(基于 N ### 界面预览 -![image](https://raw.githubusercontent.com/eshengsky/noginx/master/preview.png) +![image](./preview.png) ### 功能与特色 @@ -45,52 +41,53 @@ Noginx 不是 No nginx(否定 nginx),而是 Node.js based nginx(基于 N * 无需开发人员自己判断登录、跳转登录 * WebUI 配置界面 * 美观、优雅、现代的 UI 设计 + * 支持内置账号、Gitlab两种登录方式 * 支持权限管理 (只读、可写) * 修改规则配置后无需重启服务器 * 集成日志查看神器 [chrome-extension-server-log](https://github.com/eshengsky/ServerLog/tree/master/chrome-extension-server-log) -* Noginx 处理的网页都支持 [调试模式](#调试模式) +* Node Proxy 处理的网页都支持 [调试模式](#调试模式) ### 与 Nginx 的比较 | 服务器 | 并发能力 | 静态资源处理能力 | 配置方式 | 配置备份 | 是否需重启 | 扩展能力 | |:----------:|----------|---------------|--------------|------------|------------|------------| | Nginx | 很强 | 很快 | 纯文本配置方式,易拼写错误或重复,配置存储在本地文件中。 | 通常需手动备份,也没有配置修改记录。 | 通常需重启服务。 | 强,但需要掌握 C、Lua 等语言,且要运维去担任开发角色。 | -| Noginx | 很强 | 一般(但通常有CDN) | WebUI 配置界面,支持下拉选择、格式检查等,配置存储在数据库中。 | 任何配置操作(包括删除)都会在数据库中存档以供追溯和恢复。| 支持运行时修改并生效,无需重启。 | 强,全端技术统一(JavaScript),可方便地添加任何想要的逻辑。 | +| Node Proxy | 很强 | 一般(但通常有CDN) | WebUI 配置界面,支持下拉选择、格式检查等,配置存储在数据库中。 | 任何配置操作(包括删除)都会在数据库中存档以供追溯和恢复。| 支持运行时修改并生效,无需重启。 | 强,全端技术统一(JavaScript),可方便地添加任何想要的逻辑。 | ### 流程图 -Noginx 处理请求从接收到响应的基本流程示意: -[Noginx Workflow](https://www.processon.com/view/link/5b46c90be4b00c2f18c9b5f7) +Node Proxy 处理请求从接收到响应的基本流程示意: +[Node Proxy Workflow](https://www.processon.com/view/link/5b46c90be4b00c2f18c9b5f7) ### 快速开始 #### 下载源码 -点击 `Clone or download` 下载源码,或在 [Release](https://github.com/eshengsky/noginx/releases) 页面下载指定版本代码。 +点击 `Clone or download` 下载源码,或在 [Release](https://github.com/eshengsky/node-proxy/releases) 页面下载指定版本代码。 #### 安装依赖 ```bash -$ npm install +$ yarn ``` -#### 启动 Noginx +#### 启动 Node Proxy ```bash -$ node server.js +$ yarn start ``` -访问 [http://localhost:9000/noginx/](http://localhost:9000/noginx/),默认用户名/密码:dev/123456. +访问 [http://localhost:9000/node-proxy/](http://localhost:9000/node-proxy/),默认账号:admin/123456. -如果你使用了 [chrome-extension-server-log](https://github.com/eshengsky/ServerLog/tree/master/chrome-extension-server-log),默认 secret key 请填写:`noginx_secret_key`. +如果你使用了 [chrome-extension-server-log](https://github.com/eshengsky/ServerLog/tree/master/chrome-extension-server-log),默认 secret key 请填写:`node-proxy_secret_key`. ### 配置说明 -Noginx 中的配置可分为 2 类:系统配置和规则配置。 +Node Proxy 中的配置可分为 2 类:系统配置和规则配置。 * 系统配置 -一般是服务器启动时就需要获取并生效的配置参数,如数据库连接等,需要手动修改配置文件,修改后必须重启 Noginx。 +一般是服务器启动时就需要获取并生效的配置参数,如数据库连接等,需要手动修改配置文件,修改后必须重启 Node-Proxy。 配置文件必须放置于 `/config/` 目录下,你可以通过启动服务器时传入变量 `config` 来指定当前环境使用哪个配置文件。如: @@ -142,44 +139,62 @@ Array 类型,请求方式配置 Array 类型,页面的身份验证 ##### auth -Object 类型,Noginx系统的访问权限配置 +Object 类型,Node-Proxy系统的访问权限配置 + +##### auth.local +Array 类型,用户名密码方式的用户列表,数组元素是用户对象,属性username是登录名,属性password是密码,密码必须经过md5加密 + +##### auth.gitlab +Object 类型,Gitlab - OAuth2方式登录的相关配置 + +##### auth.gitlab.enable +Booleana 类型,是否开启Gitlab登录方式 + +##### auth.gitlab.baseURL +String 类型,Gitlab的地址,可以配置成内网部署的Gitlab站点URL + +##### auth.gitlab.clientID +String 类型,Gitlab应用的ID + +##### auth.gitlab.clientSecret +String 类型,Gitlab应用的Secret -#### auth.users -Object 类型,允许登录的用户,属性名是登录名,属性值是密码,密码必须经过md5加密 +##### auth.gitlab.callbackURL +String 类型,Gitlab应用的回调地址 -#### auth.editableUsers +##### auth.editableUsers Array 类型,允许编辑的用户,如:['user1', 'user2'],配置为 ['*'] 则所有用户都有编辑权限 -#### serverFileCache +##### serverFileCache Object 类型,静态资源服务端缓存设置 -#### serverFileCache.enable +##### serverFileCache.enable Boolean 类型,是否开启服务端缓存 -#### serverFileCache.max +##### serverFileCache.max Number 类型,所有缓存值的总大小限制 -#### serverFileCache.maxAge +##### serverFileCache.maxAge Number 类型,缓存过期时间,单位毫秒 -#### db +##### db Object 类型,数据库配置 -#### db.mongodb +##### db.mongodb String 类型,MongoDB 连接字符串,支持集群 -#### db.redisKeyPrefix +##### db.redisKeyPrefix String 类型,Redis 键前缀 -#### db.redisConnect +##### db.redisConnect String 或 Array 类型,Redis 连接信息,如果配置为一个数组则视为集群 -#### serverlog +##### serverlog Object 类型,[ServerLog](https://github.com/eshengsky/ServerLog/blob/master/README_zh.md#configoptions) 模块配置参数 * 规则配置 -规则配置是指与请求相关联的路由、服务器、缓存等配置信息,通过访问 [http://localhost:9000/noginx/](http://localhost:9000/noginx/) 进行修改,系统会定时自动更新配置,故修改后无需重启服务器。 +规则配置是指与请求相关联的路由、服务器、缓存等配置信息,通过访问 [http://localhost:9000/node-proxy/](http://localhost:9000/node-proxy/) 进行修改,系统会定时自动更新配置,故修改后无需重启服务器。 ### 环境部署 @@ -189,13 +204,13 @@ Object 类型,[ServerLog](https://github.com/eshengsky/ServerLog/blob/master/R #### 安装pm2 ```bash -$ npm install -g pm2 +$ yarn global add pm2 ``` #### 启动服务 ```bash -$ NODE_ENV=production pm2 start server.js -i 0 +$ config=production NODE_ENV=production pm2 start server.js -i 0 ``` ### 日志查看 @@ -212,14 +227,14 @@ $ NODE_ENV=production pm2 start server.js -i 0 ### 使用帮助 -登录后访问 http://localhost:9000/noginx/help/ 查看帮助。 +登录后访问 http://localhost:9000/node-proxy/help/ 查看帮助。 ### 测试 #### 功能测试 ```bash -$ npm test +$ yarn test ``` #### 性能测试 -见 [benchmark](https://github.com/eshengsky/noginx/tree/master/benchmark) 目录。 +见 [benchmark](https://github.com/eshengsky/node-proxy/tree/master/benchmark) 目录。 diff --git a/benchmark/README.md b/benchmark/README.md index f8c213d..ae74e3f 100755 --- a/benchmark/README.md +++ b/benchmark/README.md @@ -1,6 +1,6 @@ # 性能测试 -noginx 性能基准测试。 +node-proxy 性能基准测试。 ### 先决条件 @@ -31,7 +31,7 @@ Usage: wrk * Ubuntu 16.04, 6G, 4核 * Node.js v8.9.4 * pm2 v3.0.0 -* noginx v1.1.0 +* node-proxy v1.1.0 * nginx v1.10.3 #### 服务器 @@ -42,7 +42,7 @@ $ NODE_ENV=production pm2 reverseServer.js -i 4 ``` 运行在 `http://127.0.0.1:9001` 。 -* noginx 服务器 +* node-proxy 服务器 ```bash $ NODE_ENV=production config=development pm2 server.js -i 4 ``` @@ -94,7 +94,7 @@ Requests/sec: 52267.42 Transfer/sec: 6.48MB ``` -* noginx 反向代理 +* node-proxy 反向代理 ``` sky@sky-ubuntu:~$ wrk -c 200 -d 10s http://127.0.0.1:9000/testProxy Running 10s test @ http://127.0.0.1:9000/testProxy diff --git a/config/development.js b/config/development.js index 7273aeb..b9efaba 100644 --- a/config/development.js +++ b/config/development.js @@ -2,7 +2,7 @@ * @Author: Sky.Sun * @Date: 2018-07-09 16:23:41 * @Last Modified by: Sky.Sun - * @Last Modified time: 2019-05-14 10:31:54 + * @Last Modified time: 2021-03-24 16:59:32 */ module.exports = { /** @@ -44,7 +44,7 @@ module.exports = { /** * 文件选择器中的静态文件根目录 */ - staticDirPath: 'C:', + staticDirPath: '/usr/local', /** * 调试模式的参数名 @@ -66,19 +66,33 @@ module.exports = { }], /** - * noginx系统的访问权限 + * node-proxy系统的访问权限 */ auth: { /** - * 允许登录的用户,密码必须经过md5加密 + * 用户名密码方式的用户列表 + * 密码必须经过md5加密 */ - users: { - dev: 'e10adc3949ba59abbe56e057f20f883e', - admin: 'e10adc3949ba59abbe56e057f20f883e' + local: [{ + username: 'admin', + password: 'e10adc3949ba59abbe56e057f20f883e' + }], + + /** + * Gitlab - OAuth2方式登录 + */ + gitlab: { + enable: true, + baseURL: 'http://10.0.13.97:58888/', + clientID: '1cd7928d7262b102ac042dbc929d6cb5e10e5e8f4260d94fb772f888f695a789', + clientSecret: '2008b8cb5e5c3a04a3db8d74d9a1c25fa23a98453961fa2d630e17a8785f35f1', + callbackURL: 'http://localhost:9000/node-proxy/auth/gitlab/callback', }, /** - * 拥有编辑权限的用户,如:['user1', 'user2'],配置为 ['*'] 则所有用户都有编辑权限 + * 拥有编辑权限的用户 + * 如:['user1', 'user2'] + * 配置为 ['*'] 则所有用户都有编辑权限 */ editableUsers: ['*'] }, @@ -110,12 +124,12 @@ module.exports = { /** * MongoDB 连接字符串,支持集群 */ - mongodb: 'mongodb://127.0.0.1:27017/noginx', + mongodb: 'mongodb://127.0.0.1:27017/node-proxy', /** * Redis 键前缀 */ - redisKeyPrefix: 'Noginx:', + redisKeyPrefix: 'nodeproxy:', /** * Redis 连接信息,如果配置为一个数组则视为集群 @@ -135,7 +149,7 @@ module.exports = { }, extension: { enable: true, - key: 'noginx_secret_key' + key: 'node-proxy_secret_key' } } }; diff --git a/config/production.js b/config/production.js index 11f4ac7..6fbc99d 100644 --- a/config/production.js +++ b/config/production.js @@ -2,7 +2,7 @@ * @Author: Sky.Sun * @Date: 2018-07-09 16:23:41 * @Last Modified by: Sky.Sun - * @Last Modified time: 2019-05-14 10:32:11 + * @Last Modified time: 2021-03-24 16:59:37 */ module.exports = { /** @@ -44,7 +44,7 @@ module.exports = { /** * 文件选择器中的静态文件根目录 */ - staticDirPath: '/data/nfsroot/client/static', + staticDirPath: '/usr/local', /** * 调试模式的参数名 @@ -66,21 +66,33 @@ module.exports = { }], /** - * noginx系统的访问权限 + * node-proxy系统的访问权限 */ auth: { /** - * 允许登录的用户,密码必须经过md5加密 + * 用户名密码方式的用户列表 + * 密码必须经过md5加密 */ - users: { - dev: 'e10adc3949ba59abbe56e057f20f883e', - admin: 'e10adc3949ba59abbe56e057f20f883e' + local: [{ + username: 'admin', + password: 'e10adc3949ba59abbe56e057f20f883e' + }], + + /** + * Gitlab - OAuth2方式登录 + */ + gitlab: { + enable: true, + baseURL: 'http://10.0.13.97:58888/', + clientID: '1cd7928d7262b102ac042dbc929d6cb5e10e5e8f4260d94fb772f888f695a789', + clientSecret: '2008b8cb5e5c3a04a3db8d74d9a1c25fa23a98453961fa2d630e17a8785f35f1', + callbackURL: 'http://localhost:9000/node-proxy/auth/gitlab/callback', }, /** * 拥有编辑权限的用户,如:['user1', 'user2'],配置为 ['*'] 则所有用户都有编辑权限 */ - editableUsers: ['admin'] + editableUsers: ['*'] }, /** @@ -110,12 +122,12 @@ module.exports = { /** * MongoDB 连接字符串,支持集群 */ - mongodb: 'mongodb://127.0.0.1:27017/noginx?replicaSet=testrs', + mongodb: 'mongodb://127.0.0.1:27017/node-proxy?replicaSet=testrs', /** * Redis 键前缀 */ - redisKeyPrefix: 'Noginx:', + redisKeyPrefix: 'nodeproxy:', /** * Redis 连接信息,如果配置为一个数组则视为集群 @@ -153,7 +165,7 @@ module.exports = { }, extension: { enable: true, - key: 'noginx_secret_key' + key: 'node-proxy_secret_key' } } }; diff --git a/config/test.js b/config/test.js index dbefd0a..d7a8ca6 100644 --- a/config/test.js +++ b/config/test.js @@ -2,7 +2,7 @@ * @Author: Sky.Sun * @Date: 2018-07-09 16:23:41 * @Last Modified by: Sky.Sun - * @Last Modified time: 2019-05-14 10:32:12 + * @Last Modified time: 2021-03-24 16:43:45 */ /** @@ -71,15 +71,27 @@ module.exports = { }], /** - * noginx系统的访问权限 + * node-proxy系统的访问权限 */ auth: { /** - * 允许登录的用户,密码必须经过md5加密 + * 用户名密码方式的用户列表 + * 密码必须经过md5加密 */ - users: { - dev: 'e10adc3949ba59abbe56e057f20f883e', - admin: 'e10adc3949ba59abbe56e057f20f883e' + local: [{ + username: 'admin', + password: 'e10adc3949ba59abbe56e057f20f883e' + }], + + /** + * Gitlab - OAuth2方式登录 + */ + gitlab: { + enable: true, + baseURL: 'http://10.0.13.97:58888/', + clientID: '1cd7928d7262b102ac042dbc929d6cb5e10e5e8f4260d94fb772f888f695a789', + clientSecret: '2008b8cb5e5c3a04a3db8d74d9a1c25fa23a98453961fa2d630e17a8785f35f1', + callbackURL: 'http://localhost:9000/node-proxy/auth/gitlab/callback', }, /** @@ -115,12 +127,12 @@ module.exports = { /** * MongoDB 连接字符串,支持集群 */ - mongodb: 'mongodb://127.0.0.1:27017/noginxtest', + mongodb: 'mongodb://127.0.0.1:27017/node-proxytest', /** * Redis 键前缀 */ - redisKeyPrefix: 'Noginxtest:', + redisKeyPrefix: 'Node-Proxytest:', /** * Redis 连接信息,如果配置为一个数组则视为集群 @@ -140,7 +152,7 @@ module.exports = { }, extension: { enable: true, - key: 'noginx_secret_key' + key: 'node-proxy_secret_key' } } }; diff --git a/db.js b/db.js index 26f2435..de37bd5 100644 --- a/db.js +++ b/db.js @@ -9,7 +9,7 @@ const configPath = require('./getConfigPath')(); const config = require(configPath); const dbPath = config.db.mongodb; const serverlog = require('serverlog-node'); -const logger = serverlog.getLogger('noginx'); +const logger = serverlog.getLogger('node-proxy'); // mongoose.set('bufferCommands', false); mongoose.connect(dbPath, { diff --git a/debugMode.js b/debugMode.js index 75e18d4..5c6aa83 100644 --- a/debugMode.js +++ b/debugMode.js @@ -91,7 +91,7 @@ function getDebugHtml(sourceHtml, logs) { const serverlogHtml = generateServerLogHtml(logs); // 使用 prepend 添加到 body 顶部,使得 console 重写等功能提前于其它脚本 - $('body').prepend(``); + $('body').prepend(``); $('body').prepend(''); $('body').prepend(serverlogHtml); return $.html(); diff --git a/help/help.md b/help/help.md index d3492fb..af860a0 100644 --- a/help/help.md +++ b/help/help.md @@ -1,6 +1,6 @@ ###### **修改规则后要重启吗?** -不需要。Noginx 会根据配置每隔一段时间自动获取最新的路由、服务器等规则。 +不需要。Node Proxy 会根据配置每隔一段时间自动获取最新的路由、服务器等规则。 ###### **如何设置匹配路径?** @@ -73,7 +73,7 @@ 设置完匹配路径后,选择处理方式类型为 "静态文件",在 "文件或目录:/data/nfsroot/client/static/" 后输入你想要对应的服务器的目录或文件路径即可。示例: -![image](/noginx/static/img/1.png) +![image](/node-proxy/static/img/1.png) 当接收到请求: `/visa` @@ -91,7 +91,7 @@ 但对于单页应用,路由由前端脚本控制,上面第 2 个例子就不适用了,此时可以尝试勾选 try_file,这样当找不到文件时,会尝试发送所配置文件路径下的index.html。示例: -![image](/noginx/static/img/2.png) +![image](/node-proxy/static/img/2.png) 勾选 try_file 后,当接收到请求: `/visa/aaa/bbb/test.html` @@ -104,7 +104,7 @@ 设置完匹配路径后,选择处理方式类型为 "URL重写",在 "地址:" 后输入你想要重定向的 URL 即可。重写后的 URL 可以是相对路径、绝对路径或者带协议的完整网址。示例: -![image](/noginx/static/img/3.png) +![image](/node-proxy/static/img/3.png) 当接收到请求: `/webapp/around` @@ -113,7 +113,7 @@ 如果匹配路径是正则匹配,重定向后的地址支持替换子表达式(使用变量 $1, $2...)。示例: -![image](/noginx/static/img/4.png) +![image](/node-proxy/static/img/4.png) 当接收到请求: `/webapp/product-123` @@ -122,7 +122,7 @@ 如果你要支持将查询字符串一并带到重写后的 URL 中,可以使用变量 $query。示例: -![image](/noginx/static/img/9.png) +![image](/node-proxy/static/img/9.png) 当接收到请求: `/place/123?a=1&b=2` @@ -131,9 +131,9 @@ ###### **如何设置转发?** -设置完匹配路径后,选择处理方式类型为 "转发",在 "服务器:" 后选择你要转发到的服务器即可。服务器需要预先在 [服务器](/noginx/servers) 页面进行添加操作。示例: +设置完匹配路径后,选择处理方式类型为 "转发",在 "服务器:" 后选择你要转发到的服务器即可。服务器需要预先在 [服务器](/node-proxy/servers) 页面进行添加操作。示例: -![image](/noginx/static/img/5.png) +![image](/node-proxy/static/img/5.png) 当接收到请求: `/mainSearch/index.html` @@ -141,26 +141,26 @@ ###### **如何创建服务器?** -在 [服务器](/noginx/servers/) 页面可以配置转发到的服务器信息。其中 "服务器地址" 必须是以 `http` 或 `https` 开头的完整地址。支持配置多个地址,系统会自动进行负载均衡。示例: +在 [服务器](/node-proxy/servers/) 页面可以配置转发到的服务器信息。其中 "服务器地址" 必须是以 `http` 或 `https` 开头的完整地址。支持配置多个地址,系统会自动进行负载均衡。示例: -![image](/noginx/static/img/8.png) +![image](/node-proxy/static/img/8.png) ###### **如何设置登录后才能访问?** -在 [身份验证](/noginx/permissions/) 页面可以配置哪些请求必须在身份验证通过后才能继续处理。 +在 [身份验证](/node-proxy/permissions/) 页面可以配置哪些请求必须在身份验证通过后才能继续处理。 当前有 2 种验证方式: * 仅允许已登录用户访问 -系统会根据 Cookie 中的 `lvsessionid` 调用用户接口来判断当前用户是否已登录,如果未登录,则自动跳转到登录页面;如果已登录,则查找 [路由处理](/noginx/) 中是否有匹配的路由规则以进行后续操作。 +系统会根据 Cookie 中的 `lvsessionid` 调用用户接口来判断当前用户是否已登录,如果未登录,则自动跳转到登录页面;如果已登录,则查找 [路由处理](/node-proxy/) 中是否有匹配的路由规则以进行后续操作。 * 微信访问时需要微信授权登录 -如果当前页面是在微信中访问,且 Cookie 中没有 `session_id`,则认为未登录,自动跳转到微信授权页面;如果已登录,则查找 [路由处理](/noginx/) 中是否有匹配的路由规则以进行后续操作。 +如果当前页面是在微信中访问,且 Cookie 中没有 `session_id`,则认为未登录,自动跳转到微信授权页面;如果已登录,则查找 [路由处理](/node-proxy/) 中是否有匹配的路由规则以进行后续操作。 示例: -![image](/noginx/static/img/6.png) +![image](/node-proxy/static/img/6.png) 当接收到请求: `/webapp/my` @@ -168,9 +168,9 @@ ###### **什么是身份验证的排除项?** -在 [身份验证](/noginx/permissions/) 页面配置请求时,可以设置排除项,排除项将不走身份验证。示例: +在 [身份验证](/node-proxy/permissions/) 页面配置请求时,可以设置排除项,排除项将不走身份验证。示例: -![image](/noginx/static/img/7.png) +![image](/node-proxy/static/img/7.png) 当接收到请求: `/webapp/my/main` diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 8c014c4..0000000 --- a/package-lock.json +++ /dev/null @@ -1,2793 +0,0 @@ -{ - "name": "noginx", - "version": "1.2.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@types/babel-types": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.4.tgz", - "integrity": "sha512-WiZhq3SVJHFRgRYLXvpf65XnV6ipVHhnNaNvE8yCimejrGglkg38kEj0JcizqwSHxmPSjcTlig/6JouxLGEhGw==" - }, - "@types/babylon": { - "version": "6.16.3", - "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.3.tgz", - "integrity": "sha512-lyJ8sW1PbY3uwuvpOBZ9zMYKshMnQpXmeDHh8dj9j2nJm/xrW0FgB5gLSYOArj5X0IfaXnmhFoJnhS4KbqIMug==", - "requires": { - "@types/babel-types": "7.0.4" - } - }, - "@types/node": { - "version": "10.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.1.tgz", - "integrity": "sha512-AFLl1IALIuyt6oK4AYZsgWVJ/5rnyzQWud7IebaZWWV3YmgtPZkQmYio9R5Ze/2pdd7XfqF5bP+hWS11mAKoOQ==" - }, - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - }, - "acorn-globals": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "requires": { - "acorn": "4.0.13" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - } - } - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "1.9.1" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "http://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", - "dev": true - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" - }, - "blueimp-md5": { - "version": "2.10.0", - "resolved": "http://registry.npm.taobao.org/blueimp-md5/download/blueimp-md5-2.10.0.tgz", - "integrity": "sha1-AvCEOSH5DcoU9biSCjhZMgHWlk0=" - }, - "body-parser": { - "version": "1.18.2", - "resolved": "http://registry.npm.taobao.org/body-parser/download/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.15" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "bootstrap": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.1.tgz", - "integrity": "sha512-SpiDSOcbg4J/PjVSt4ny5eY6j74VbVSjROY4Fb/WIUXBV9cnb5luyR4KnPvNoXuGnBK1T+nJIWqRsvU3yP8Mcg==" - }, - "bootswatch": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/bootswatch/-/bootswatch-4.1.1.tgz", - "integrity": "sha1-604FPEadTcjNr/Ef9N2+9j6GpW0=", - "requires": { - "bootstrap": "4.1.1" - }, - "dependencies": { - "bootstrap": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.1.tgz", - "integrity": "sha512-SpiDSOcbg4J/PjVSt4ny5eY6j74VbVSjROY4Fb/WIUXBV9cnb5luyR4KnPvNoXuGnBK1T+nJIWqRsvU3yP8Mcg==" - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "bson": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz", - "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw=" - }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/buffer-shims/download/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" - }, - "bytes": { - "version": "3.0.0", - "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chai": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", - "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", - "dev": true, - "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.8" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "requires": { - "is-regex": "1.0.4" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", - "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash": "4.17.5", - "parse5": "3.0.3" - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "cluster-key-slot": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", - "integrity": "sha1-dlRVYIWmUzCTKi6LWXb44tCz5BQ=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "connect-ensure-login": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/connect-ensure-login/-/connect-ensure-login-0.1.1.tgz", - "integrity": "sha1-F03MUSQ7nqwj+NmCFa62aU4uihI=" - }, - "connect-mongo": { - "version": "2.0.1", - "resolved": "http://registry.npm.taobao.org/connect-mongo/download/connect-mongo-2.0.1.tgz", - "integrity": "sha1-UU1knP8dXVVGwIcZMkW7VP9bcDs=", - "requires": { - "mongodb": "2.2.34" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "mongodb": { - "version": "2.2.34", - "resolved": "http://registry.npm.taobao.org/mongodb/download/mongodb-2.2.34.tgz", - "integrity": "sha1-o09Zu+thdUrsQy3nLD/iFSakTBo=", - "requires": { - "es6-promise": "3.2.1", - "mongodb-core": "2.1.18", - "readable-stream": "2.2.7" - } - }, - "mongodb-core": { - "version": "2.1.18", - "resolved": "http://registry.npm.taobao.org/mongodb-core/download/mongodb-core-2.1.18.tgz", - "integrity": "sha1-TEYTm986HwMt7ZHbSfOO7AFlkFA=", - "requires": { - "bson": "1.0.4", - "require_optional": "1.0.1" - } - }, - "readable-stream": { - "version": "2.2.7", - "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.2.7.tgz", - "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, - "constantinople": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", - "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", - "requires": { - "@types/babel-types": "7.0.4", - "@types/babylon": "6.16.3", - "babel-types": "6.26.0", - "babylon": "6.18.0" - } - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-security-policy-builder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.0.0.tgz", - "integrity": "sha512-j+Nhmj1yfZAikJLImCvPJFE29x/UuBi+/MWqggGGc515JKaZrjuei2RhULJmy0MsstW3E3htl002bwmBNMKr7w==" - }, - "content-type": { - "version": "1.0.4", - "resolved": "http://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" - }, - "cookie": { - "version": "0.3.1", - "resolved": "http://registry.npm.taobao.org/cookie/download/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-parser": { - "version": "1.4.3", - "resolved": "http://registry.npm.taobao.org/cookie-parser/download/cookie-parser-1.4.3.tgz", - "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", - "requires": { - "cookie": "0.3.1", - "cookie-signature": "1.0.6" - } - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "http://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "crc": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz", - "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms=" - }, - "cron-parser": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.4.4.tgz", - "integrity": "sha512-lNWu5pGRGF7y4kl/uRXY69mC8n0qhjTIDQmc3MIfNY5eEvGyYqFPewn+2YQXybJoa2LVVOmDQ/1WTWyQzAM8uA==", - "requires": { - "is-nan": "1.2.1", - "moment-timezone": "0.5.14" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", - "domutils": "1.5.1", - "nth-check": "1.0.1" - } - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "dasherize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", - "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg=" - }, - "debug": { - "version": "2.6.9", - "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "denque": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.2.3.tgz", - "integrity": "sha512-BOjyD1zPf7gqgXlXBCnCsz84cbRNfqpQNvWOUiw3Onu9s7a2afW2LyHzctoie/2KELfUoZkNHTnW02C3hCU20w==" - }, - "depd": { - "version": "1.1.2", - "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "dns-prefetch-control": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz", - "integrity": "sha1-YN20V3dOF48flBXwyrsOhbCzALI=" - }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } - } - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "dont-sniff-mimetype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.0.0.tgz", - "integrity": "sha1-WTKJDcn04vGeXrAqIAJuXl78j1g=" - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "echarts": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.1.0.tgz", - "integrity": "sha512-gP1e1fNnAj9KJpTDLXV21brklbfJlqeINmpQDJCDta9TX3cPoqyQOiDVcEPzbOVHqgBRgTOwNxC5iGwJ89014A==", - "requires": { - "zrender": "4.0.4" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" - }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" - }, - "es6-promise": { - "version": "3.2.1", - "resolved": "http://registry.npm.taobao.org/es6-promise/download/es6-promise-3.2.1.tgz", - "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.1", - "resolved": "http://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "expect-ct": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.1.1.tgz", - "integrity": "sha512-ngXzTfoRGG7fYens3/RMb6yYoVLvLMfmsSllP/mZPxNHgFq41TmPSLF/nLY7fwoclI2vElvAmILFWGUYqdjfCg==" - }, - "express": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", - "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", - "requires": { - "accepts": "1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.3", - "qs": "6.5.1", - "range-parser": "1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "1.4.0", - "type-is": "1.6.16", - "utils-merge": "1.0.1", - "vary": "1.1.2" - }, - "dependencies": { - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "requires": { - "mime-types": "2.1.18", - "negotiator": "0.6.1" - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.4.0", - "unpipe": "1.0.0" - } - }, - "ipaddr.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", - "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "requires": { - "mime-db": "1.33.0" - } - }, - "proxy-addr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", - "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", - "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.6.0" - } - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "requires": { - "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.4.0" - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.2" - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.18" - } - } - } - }, - "express-session": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz", - "integrity": "sha512-r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==", - "requires": { - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "crc": "3.4.4", - "debug": "2.6.9", - "depd": "1.1.2", - "on-headers": "1.0.1", - "parseurl": "1.3.2", - "uid-safe": "2.1.5", - "utils-merge": "1.0.1" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "2.0.0" - } - }, - "flexbuffer": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/flexbuffer/-/flexbuffer-0.0.6.tgz", - "integrity": "sha1-A5/fI/iCPkQMOPMnfm/vEXQhWzA=" - }, - "follow-redirects": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", - "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", - "requires": { - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.17" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "http://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "frameguard": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.0.0.tgz", - "integrity": "sha1-e8rUae57lukdEs6zlZx4I1qScuk=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "helmet": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.12.1.tgz", - "integrity": "sha512-/CsAcbPIHgiGde395IkHUZyRLW126RJ6AtxFy6Y6bxhd44Qq8cZ5BBFZ0xNUSbcgX57j32Emh3OhWz/0XgAB5Q==", - "requires": { - "dns-prefetch-control": "0.1.0", - "dont-sniff-mimetype": "1.0.0", - "expect-ct": "0.1.1", - "frameguard": "3.0.0", - "helmet-csp": "2.7.0", - "hide-powered-by": "1.0.0", - "hpkp": "2.0.0", - "hsts": "2.1.0", - "ienoopen": "1.0.0", - "nocache": "2.0.0", - "referrer-policy": "1.1.0", - "x-xss-protection": "1.1.0" - } - }, - "helmet-csp": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.7.0.tgz", - "integrity": "sha512-IGIAkWnxjRbgMXFA2/kmDqSIrIaSfZ6vhMHlSHw7jm7Gm9nVVXqwJ2B1YEpYrJsLrqY+w2Bbimk7snux9+sZAw==", - "requires": { - "camelize": "1.0.0", - "content-security-policy-builder": "2.0.0", - "dasherize": "2.0.0", - "lodash.reduce": "4.6.0", - "platform": "1.3.5" - } - }, - "hide-powered-by": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.0.0.tgz", - "integrity": "sha1-SoWtZYgfYoV/xwr3F0oRhNzM4ys=" - }, - "hpkp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz", - "integrity": "sha1-EOFCJk52IVpdMMROxD3mTe5tFnI=" - }, - "hsts": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.1.0.tgz", - "integrity": "sha512-zXhh/DqgrTXJ7erTN6Fh5k/xjMhDGXCqdYN3wvxUvGUQvnxcFfUd8E+6vLg/nk3ss1TYMb+DhRl25fYABioTvA==" - }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.2", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, - "http-errors": { - "version": "1.6.2", - "resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" - } - } - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "requires": { - "eventemitter3": "3.1.0", - "follow-redirects": "1.5.1", - "requires-port": "1.0.0" - }, - "dependencies": { - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.2" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.19.tgz", - "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" - }, - "ienoopen": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.0.0.tgz", - "integrity": "sha1-NGpCj0dKrI9QzzeE6i0PFvYr2ms=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "ioredis": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-3.2.2.tgz", - "integrity": "sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA==", - "requires": { - "bluebird": "3.5.0", - "cluster-key-slot": "1.0.8", - "debug": "2.6.9", - "denque": "1.2.3", - "flexbuffer": "0.0.6", - "lodash.assign": "4.2.0", - "lodash.bind": "4.2.1", - "lodash.clone": "4.5.0", - "lodash.clonedeep": "4.5.0", - "lodash.defaults": "4.2.0", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "lodash.foreach": "4.5.0", - "lodash.isempty": "4.4.0", - "lodash.keys": "4.2.0", - "lodash.noop": "3.0.1", - "lodash.partial": "4.2.1", - "lodash.pick": "4.4.0", - "lodash.sample": "4.2.1", - "lodash.shuffle": "4.2.0", - "lodash.values": "4.3.0", - "redis-commands": "1.3.5", - "redis-parser": "2.6.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", - "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", - "requires": { - "acorn": "4.0.13", - "object-assign": "4.1.1" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-nan": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.2.1.tgz", - "integrity": "sha1-n69ltvttskt/XAYoR16nH5iEAeI=", - "requires": { - "define-properties": "1.1.2" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "1.0.3" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "jquery": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", - "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" - }, - "js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "requires": { - "is-promise": "2.1.0", - "promise": "7.3.1" - } - }, - "kareem": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.2.1.tgz", - "integrity": "sha512-xpDFy8OxkFM+vK6pXy6JmH92ibeEFUuDWzas5M9L7MzVmHW3jzwAHxodCPV/BYkf4A31bVDLyonrMfp9RXb/oA==" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "1.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" - }, - "lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.isempty": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", - "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" - }, - "lodash.keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz", - "integrity": "sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU=" - }, - "lodash.noop": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-3.0.1.tgz", - "integrity": "sha1-OBiPTWUKOkdCWEObluxFsyYXEzw=" - }, - "lodash.partial": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.partial/-/lodash.partial-4.2.1.tgz", - "integrity": "sha1-SfPYz9qjv/izqR0SfpIyRUGJYdQ=" - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" - }, - "lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" - }, - "lodash.sample": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.sample/-/lodash.sample-4.2.1.tgz", - "integrity": "sha1-XkKRsMdT+hq+sKq4+ynfG2bwf20=" - }, - "lodash.shuffle": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.shuffle/-/lodash.shuffle-4.2.0.tgz", - "integrity": "sha1-FFtQU8+HX29cKjP0i26ZSMbse0s=" - }, - "lodash.values": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", - "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=" - }, - "long-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "lz-string": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "http://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "1.2.0" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "http://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.4.1", - "resolved": "http://registry.npm.taobao.org/mime/download/mime-1.4.1.tgz", - "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" - }, - "mime-db": { - "version": "1.30.0", - "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" - }, - "mime-types": { - "version": "2.1.17", - "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "requires": { - "mime-db": "1.30.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "moment": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", - "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" - }, - "moment-timezone": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.14.tgz", - "integrity": "sha1-TrOP+VOLgBCLpGekWPPtQmjM/LE=", - "requires": { - "moment": "2.20.1" - } - }, - "monaco-editor": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.13.1.tgz", - "integrity": "sha512-0Kssg/O3cl1tXP0qAIxhrtMbRnzusFUEvFyt5/fpUbmuVeY3z+TnUx13+3kW16pgacFPXGUTEO/hOPlDeFU/dw==" - }, - "mongodb": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.1.tgz", - "integrity": "sha512-GU9oWK4pi8PC7NyGiwjFMwZyMqwGWoMEMvM0LZh7UKW/FFAqgmZKjjriD+5MEOCDUJE2dtHX93/K5UtDxO0otg==", - "requires": { - "mongodb-core": "3.1.0" - } - }, - "mongodb-core": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.0.tgz", - "integrity": "sha512-qRjG62Fu//CZhkgn0jA/k8jh5MhACIq8cOJUryH6sck87pgt+C222MSD02tsCq5zNo/B6ZFHtNodZ2qpf8E86g==", - "requires": { - "bson": "1.0.4", - "require_optional": "1.0.1", - "saslprep": "1.0.0" - } - }, - "mongoose": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.2.2.tgz", - "integrity": "sha512-DpQGUHEUbKrxWGOU9uzKV1mtN/DFmXUjhYEzByqeQ2FwQeFWhXJdl+UPCsItqvFOwsFDMY1J6fxHOnWlOoHU8g==", - "requires": { - "async": "2.6.1", - "bson": "1.0.9", - "kareem": "2.2.1", - "lodash.get": "4.4.2", - "mongodb": "3.1.1", - "mongodb-core": "3.1.0", - "mongoose-legacy-pluralize": "1.0.2", - "mpath": "0.4.1", - "mquery": "3.0.0", - "ms": "2.0.0", - "regexp-clone": "0.0.1", - "sliced": "1.0.1" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "4.17.10" - } - }, - "bson": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.9.tgz", - "integrity": "sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg==" - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - }, - "mpath": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.4.1.tgz", - "integrity": "sha512-NNY/MpBkALb9jJmjpBlIi6GRoLveLUM0pJzgbp9vY9F7IQEb/HREC/nxrixechcQwd1NevOhJnWWV8QQQRE+OA==" - } - } - }, - "mongoose-legacy-pluralize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", - "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" - }, - "mquery": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.0.0.tgz", - "integrity": "sha512-WL1Lk8v4l8VFSSwN3yCzY9TXw+fKVYKn6f+w86TRzOLSE8k1yTgGaLBPUByJQi8VcLbOdnUneFV/y3Kv874pnQ==", - "requires": { - "bluebird": "3.5.0", - "debug": "2.6.9", - "regexp-clone": "0.0.1", - "sliced": "0.0.5" - }, - "dependencies": { - "sliced": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", - "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8=" - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "nanoid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.0.1.tgz", - "integrity": "sha512-k1u2uemjIGsn25zmujKnotgniC/gxQ9sdegdezeDiKdkDW56THUMqlz3urndKCXJxA6yPzSZbXx/QCMe/pxqsA==" - }, - "negotiator": { - "version": "0.6.1", - "resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "nocache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.0.0.tgz", - "integrity": "sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA=" - }, - "node-schedule": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.0.tgz", - "integrity": "sha512-NNwO9SUPjBwFmPh3vXiPVEhJLn4uqYmZYvJV358SRGM06BR4UoIqxJpeJwDDXB6atULsgQA97MfD1zMd5xsu+A==", - "requires": { - "cron-parser": "2.4.4", - "long-timeout": "0.1.1", - "sorted-array-functions": "1.1.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "2.0.1" - } - }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "requires": { - "boolbase": "1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", - "requires": { - "p-try": "1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "1.2.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "requires": { - "@types/node": "10.5.1" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" - }, - "passport": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.0.tgz", - "integrity": "sha1-xQlWkTR71a07XhgCOMORTRbwWBE=", - "requires": { - "passport-strategy": "1.0.0", - "pause": "0.0.1" - } - }, - "passport-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=", - "requires": { - "passport-strategy": "1.0.0" - } - }, - "passport-strategy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pause": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "platform": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", - "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==" - }, - "popper.js": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.3.tgz", - "integrity": "sha1-FDj5jQRqz3tNeM1QK/QYrGTU8JU=" - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "2.0.6" - } - }, - "promise-polyfill": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", - "integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "pug": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", - "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", - "requires": { - "pug-code-gen": "2.0.1", - "pug-filters": "3.1.0", - "pug-lexer": "4.0.0", - "pug-linker": "3.0.5", - "pug-load": "2.0.11", - "pug-parser": "5.0.0", - "pug-runtime": "2.0.4", - "pug-strip-comments": "1.0.3" - }, - "dependencies": { - "pug-lexer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", - "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", - "requires": { - "character-parser": "2.2.0", - "is-expression": "3.0.0", - "pug-error": "1.3.2" - } - }, - "pug-runtime": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz", - "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g=" - }, - "pug-strip-comments": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz", - "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=", - "requires": { - "pug-error": "1.3.2" - } - } - } - }, - "pug-code-gen": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", - "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", - "requires": { - "constantinople": "3.1.2", - "doctypes": "1.1.0", - "js-stringify": "1.0.2", - "pug-attrs": "2.0.3", - "pug-error": "1.3.2", - "pug-runtime": "2.0.4", - "void-elements": "2.0.1", - "with": "5.1.1" - }, - "dependencies": { - "pug-attrs": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz", - "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=", - "requires": { - "constantinople": "3.1.2", - "js-stringify": "1.0.2", - "pug-runtime": "2.0.4" - } - }, - "pug-runtime": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz", - "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g=" - } - } - }, - "pug-error": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz", - "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=" - }, - "pug-filters": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", - "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", - "requires": { - "clean-css": "4.1.11", - "constantinople": "3.1.2", - "jstransformer": "1.0.0", - "pug-error": "1.3.2", - "pug-walk": "1.1.7", - "resolve": "1.8.1", - "uglify-js": "2.8.29" - }, - "dependencies": { - "clean-css": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", - "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", - "requires": { - "source-map": "0.5.7" - } - } - } - }, - "pug-linker": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", - "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", - "requires": { - "pug-error": "1.3.2", - "pug-walk": "1.1.7" - } - }, - "pug-load": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz", - "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=", - "requires": { - "object-assign": "4.1.1", - "pug-walk": "1.1.7" - } - }, - "pug-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", - "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", - "requires": { - "pug-error": "1.3.2", - "token-stream": "0.0.1" - } - }, - "pug-walk": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.7.tgz", - "integrity": "sha1-wA1cUSi6xYBr7BXSt+fNq+QlMfM=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.1.tgz", - "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" - }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" - }, - "range-parser": { - "version": "1.2.0", - "resolved": "http://registry.npm.taobao.org/range-parser/download/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.3.2", - "resolved": "http://registry.npm.taobao.org/raw-body/download/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - } - }, - "redis-commands": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.5.tgz", - "integrity": "sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA==" - }, - "redis-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", - "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=" - }, - "referrer-policy": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.1.0.tgz", - "integrity": "sha1-NXdOtzW/UPtsB46DM0tHI1AgfXk=" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" - }, - "regexp-clone": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", - "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "dev": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true, - "requires": { - "lodash": "4.17.5" - } - }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "dev": true, - "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.4" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "require_optional": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", - "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", - "requires": { - "resolve-from": "2.0.0", - "semver": "5.5.0" - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "0.1.4" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "saslprep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.0.tgz", - "integrity": "sha512-5lvKUEQ7lAN5/vPl5d3k8FQeDbEamu9kizfATfLLWV5h6Mkh1xcieR1FSsJkcSRUk49lF2tAW8gzXWVwtwZVhw==", - "optional": true - }, - "select2": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.7.tgz", - "integrity": "sha512-t46Z2nkEEYnBYdRpLNw5dj9qqO+YTiTlWKnpJ/B5e1Q3hPND00JRgcLJxYRzqpeLZd+ZkszkHEMagLKIfbTjVA==" - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" - }, - "serve-favicon": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", - "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", - "requires": { - "etag": "1.8.1", - "fresh": "0.5.2", - "ms": "2.1.1", - "parseurl": "1.3.2", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serverlog-node": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/serverlog-node/-/serverlog-node-1.0.2.tgz", - "integrity": "sha512-Q4R4g+R55rUOn1y6saku4qx/tAirSZqWw4/9mnEzwYticbfBMOm2ym3LH/Njft6LPCb8dZnaSjTawOaOGlvWog==", - "requires": { - "chalk": "2.4.2", - "json-stringify-safe": "5.0.1", - "lz-string": "1.4.4", - "moment": "2.24.0", - "shortid": "2.2.14" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - } - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz", - "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shortid": { - "version": "2.2.14", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.14.tgz", - "integrity": "sha512-4UnZgr9gDdA1kaKj/38IiudfC3KHKhDc1zi/HSxd9FQDR0VLwH3/y79tZJLsVYPsJgIjeHjqIWaWVRJUj9qZOQ==", - "requires": { - "nanoid": "2.0.1" - } - }, - "showdown": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.8.6.tgz", - "integrity": "sha1-kepO47elRIqspoIKTifmkMatdxw=", - "requires": { - "yargs": "10.1.2" - }, - "dependencies": { - "cliui": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "yargs": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", - "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", - "requires": { - "cliui": "4.0.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" - } - } - } - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" - }, - "sortablejs": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.7.0.tgz", - "integrity": "sha1-gKKyNwq9Vo4c7IwnETHvMKkE+ig=" - }, - "sorted-array-functions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.1.0.tgz", - "integrity": "sha512-zq6fLdGQixb9VZfT/tLgU+LzoedJyTbcf1I/TKETFeUVoWIfcs5HNr+SJSvQJLXRlEZjB1gpILTrxamxAdCcgA==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", - "dev": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" - } - }, - "statuses": { - "version": "1.3.1", - "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "requires": { - "has-flag": "3.0.0" - } - }, - "sweetalert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-2.1.0.tgz", - "integrity": "sha512-9YKj0SvjKyBfRWco50UOsIbXVeifYbxzT9Qda7EsqC01eafHGCSG0IR7g942ufjzt7lnwO8ZZBwr6emXv2fQrg==", - "requires": { - "es6-object-assign": "1.1.0", - "promise-polyfill": "6.1.0" - } - }, - "switchery": { - "version": "git+https://github.com/abpetkov/switchery.git#778104eb5bd2579a24f4d9bd124592dcdb8598aa" - }, - "tippy.js": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-4.3.1.tgz", - "integrity": "sha512-H09joePakSu6eDSL1wj5LjEWwvpEELyJQlgsts4wVH7223t4DlyzGCaZNDO8/MQAnSuic4JhKpXtgzSYGlobvg==", - "requires": { - "popper.js": "1.15.0" - }, - "dependencies": { - "popper.js": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", - "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==" - } - } - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" - }, - "token-stream": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "dev": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-is": { - "version": "1.6.15", - "resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.17" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, - "uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "requires": { - "random-bytes": "1.0.0" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "vary": { - "version": "1.1.2", - "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, - "with": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", - "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", - "requires": { - "acorn": "3.3.0", - "acorn-globals": "3.1.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" - } - } - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "x-xss-protection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.1.0.tgz", - "integrity": "sha512-rx3GzJlgEeZ08MIcDsU2vY2B1QEriUKJTSiNHHUIem6eg9pzVOr2TL3Y4Pd6TMAM5D5azGjcxqI62piITBDHVg==" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - }, - "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - } - } - }, - "zrender": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.0.4.tgz", - "integrity": "sha512-03Vd/BDl/cPXp8E61f5+Xbgr/a4vDyFA+uUtUc1s+5KgcPbyY2m+78R/9LQwkR6QwFYHG8qk25Q8ESGs/qpkZw==" - } - } -} diff --git a/package.json b/package.json index 824d896..0862abd 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,21 @@ { - "name": "noginx", - "version": "2.0.0", - "description": "High performance HTTP and reverse proxy server based on Node.js.", + "name": "node-proxy", + "version": "3.0.0", + "description": "High performance HTTP and reverse proxy server, based on Node.js.", "main": "server.js", "scripts": { - "start": "node server.js", - "test": "NODE_ENV=test mocha ./test/test.js" + "dev": "config=development node server.js", + "start": "config=production node server.js", + "test": "config=test mocha ./test/test.js" }, "author": "eshengsky@163.com", "repository": { "type": "git", - "url": "https://github.com/eshengsky/noginx" + "url": "https://github.com/eshengsky/node-proxy" }, "license": "MIT", "dependencies": { + "@flexem/switchery": "0.8.2", "blueimp-md5": "^2.10.0", "bootstrap": "^4.1.1", "bootswatch": "^4.1.1", @@ -37,6 +39,7 @@ "node-schedule": "^1.3.0", "parseurl": "^1.3.2", "passport": "^0.4.0", + "passport-gitlab2": "^5.0.0", "passport-local": "^1.0.0", "popper.js": "^1.14.3", "pug": "^2.0.3", @@ -46,7 +49,6 @@ "showdown": "^1.8.6", "sortablejs": "^1.7.0", "sweetalert": "^2.1.0", - "switchery": "git+https://github.com/abpetkov/switchery.git", "tippy.js": "^4.3.1", "uuid": "^3.3.2" }, diff --git a/proxyWeb.js b/proxyWeb.js index 1795f8e..559353d 100644 --- a/proxyWeb.js +++ b/proxyWeb.js @@ -11,7 +11,7 @@ const config = require(configPath); const settings = require('./settings'); const debugMode = require('./debugMode'); const serverlog = require('serverlog-node'); -const logger = serverlog.getLogger('noginx-webui'); +const logger = serverlog.getLogger('node-proxy-webui'); const proxy = httpProxy.createProxyServer({ xfwd: true, diff --git a/server.js b/server.js index b3e9324..74de27b 100644 --- a/server.js +++ b/server.js @@ -2,7 +2,7 @@ * @Author: Sky.Sun * @Date: 2018-01-17 16:07:30 * @Last Modified by: Sky.Sun - * @Last Modified time: 2019-06-12 16:22:08 + * @Last Modified time: 2021-03-24 15:57:16 */ const express = require('express'); const app = express(); @@ -18,7 +18,7 @@ const cookieParser = require('cookie-parser'); const helmet = require('helmet'); const serverlog = require('serverlog-node'); serverlog.config(config.serverlog); -const logger = serverlog.getLogger('noginx'); +const logger = serverlog.getLogger('node-proxy'); const webRoute = require('./web/route'); const schedule = require('./schedule'); const common = require('./utilities/common'); @@ -223,14 +223,14 @@ app.use(helmet()); * 添加Server头 */ app.use((req, res, next) => { - res.setHeader('Server', `noginx v${version}`); + res.setHeader('Server', `node-proxy v${version}`); next(); }); /** * 配置界面 */ -app.use('/noginx', webRoute); +app.use('/node-proxy', webRoute); /** * 处理网站icon请求 @@ -545,5 +545,5 @@ if (config.ssl.enable) { } server.listen(app.get('port'), () => { const port = server.address().port; - logger.info(`Noginx listening on port ${port} with pid ${process.pid}, Admin URL: ${config.ssl.enable ? 'https' : 'http'}://localhost:${port}/noginx`); + logger.info(`Node Proxy listening on port ${port} with pid ${process.pid}, Admin URL: ${config.ssl.enable ? 'https' : 'http'}://localhost:${port}/node-proxy`); }); diff --git a/staticTransfer/send.js b/staticTransfer/send.js index 0d680c1..ae42777 100644 --- a/staticTransfer/send.js +++ b/staticTransfer/send.js @@ -30,7 +30,7 @@ const statuses = require('statuses'); const Stream = require('stream'); const util = require('util'); const serverlog = require('serverlog-node'); -const logger = serverlog.getLogger('noginx'); +const logger = serverlog.getLogger('node-proxy'); /** * Path function references. diff --git a/staticTransfer/serve_static.js b/staticTransfer/serve_static.js index 08dc591..3227903 100644 --- a/staticTransfer/serve_static.js +++ b/staticTransfer/serve_static.js @@ -21,7 +21,7 @@ const resolve = require('path') const send = require('./send'); const url = require('url'); const serverlog = require('serverlog-node'); -const logger = serverlog.getLogger('noginx'); +const logger = serverlog.getLogger('node-proxy'); /** * Module exports. diff --git a/test/staticTest/index.html b/test/staticTest/index.html index 47369da..d0e9d01 100644 --- a/test/staticTest/index.html +++ b/test/staticTest/index.html @@ -1 +1 @@ -

hello noginx

\ No newline at end of file +

hello node-proxy

\ No newline at end of file diff --git a/test/test.js b/test/test.js index 36a68f8..e7364b2 100644 --- a/test/test.js +++ b/test/test.js @@ -9,7 +9,7 @@ const serverModel = require('../models/servers').serverModel; const port = 8900; should(); -describe('noginx test', function () { +describe('node-proxy test', function () { this.timeout(5000); let stdout = ''; let child; @@ -57,7 +57,7 @@ describe('noginx test', function () { describe('base', () => { it('should startup server successfully', () => { - stdout.should.contains(`Noginx listening on port ${port}`); + stdout.should.contains(`Node Proxy listening on port ${port}`); stdout.should.contains('Redis connected'); stdout.should.contains('MongoDB connected'); }); @@ -476,7 +476,7 @@ describe('noginx test', function () { it('should handle properly when domain is specified', done => { const domain = new domainModel({ - domainPath: 'noginxtest1.com' + domainPath: 'node-proxytest1.com' }); domain.save((err, item) => { if (err) { @@ -503,7 +503,7 @@ describe('noginx test', function () { rp({ url: `http://127.0.0.1:${port}/hasDomain`, headers: { - host: 'noginxtest1.com' + host: 'node-proxytest1.com' }, simple: false, resolveWithFullResponse: true @@ -511,7 +511,7 @@ describe('noginx test', function () { rp({ url: `http://127.0.0.1:${port}/hasDomain`, headers: { - host: 'noginxtest2.com' + host: 'node-proxytest2.com' }, simple: false, resolveWithFullResponse: true @@ -598,10 +598,10 @@ describe('noginx test', function () { ]).then(results => { results[0].statusCode.should.eq(200); results[0].headers['content-type'].should.contains('text/html'); - results[0].body.should.eq('

hello noginx

'); + results[0].body.should.eq('

hello node-proxy

'); results[1].statusCode.should.eq(200); results[1].headers['content-type'].should.contains('text/html'); - results[1].body.should.eq('

hello noginx

'); + results[1].body.should.eq('

hello node-proxy

'); results[2].statusCode.should.eq(404); results[2].headers['content-type'].should.contains('text/plain'); results[2].body.should.eq('Not Found'); @@ -685,13 +685,13 @@ describe('noginx test', function () { ]).then(results => { results[0].statusCode.should.eq(200); results[0].headers['content-type'].should.contains('text/html'); - results[0].body.should.eq('

hello noginx

'); + results[0].body.should.eq('

hello node-proxy

'); results[1].statusCode.should.eq(200); results[1].headers['content-type'].should.contains('text/html'); - results[1].body.should.eq('

hello noginx

'); + results[1].body.should.eq('

hello node-proxy

'); results[2].statusCode.should.eq(200); results[2].headers['content-type'].should.contains('text/html'); - results[2].body.should.eq('

hello noginx

'); + results[2].body.should.eq('

hello node-proxy

'); results[3].statusCode.should.eq(404); results[3].headers['content-type'].should.contains('text/plain'); results[3].body.should.eq('Not Found'); @@ -872,19 +872,19 @@ describe('noginx test', function () { ]).then(results => { results[0].statusCode.should.eq(200); results[0].headers['content-type'].should.contains('text/html'); - results[0].body.should.eq('

hello noginx

'); + results[0].body.should.eq('

hello node-proxy

'); results[1].statusCode.should.eq(200); results[1].headers['content-type'].should.contains('text/html'); - results[1].body.should.eq('

hello noginx

'); + results[1].body.should.eq('

hello node-proxy

'); results[2].statusCode.should.eq(200); results[2].headers['content-type'].should.contains('text/html'); - results[2].body.should.eq('

hello noginx

'); + results[2].body.should.eq('

hello node-proxy

'); results[3].statusCode.should.eq(200); results[3].headers['content-type'].should.contains('text/html'); - results[3].body.should.eq('

hello noginx

'); + results[3].body.should.eq('

hello node-proxy

'); results[4].statusCode.should.eq(200); results[4].headers['content-type'].should.contains('text/html'); - results[4].body.should.eq('

hello noginx

'); + results[4].body.should.eq('

hello node-proxy

'); done(); }).catch(err => { done(err); diff --git a/web/auth.js b/web/auth.js index fcb8799..03e43cf 100644 --- a/web/auth.js +++ b/web/auth.js @@ -2,7 +2,7 @@ * @Author: Sky.Sun * @Date: 2018-02-13 09:46:39 * @Last Modified by: Sky.Sun - * @Last Modified time: 2018-07-12 15:27:38 + * @Last Modified time: 2021-03-24 15:30:36 */ const configPath = require('../getConfigPath')(); const config = require(configPath); @@ -13,14 +13,13 @@ const editableUsers = config.auth.editableUsers; * @param {object} req - 请求对象 */ const canEdit = req => { - const user = req.user; - // 如果配置项包含了*,则所有用户可编辑 if (editableUsers.includes('*')) { return true; } - - return editableUsers.includes(user); + + const user = req.user; + return editableUsers.includes(user.username); }; module.exports.canEdit = canEdit; diff --git a/web/route.js b/web/route.js index 58701f5..6155928 100644 --- a/web/route.js +++ b/web/route.js @@ -2,7 +2,7 @@ * @Author: Sky.Sun * @Date: 2018-02-07 12:02:40 * @Last Modified by: Sky.Sun - * @Last Modified time: 2019-06-12 16:27:32 + * @Last Modified time: 2021-03-24 15:55:22 */ const express = require('express'); const router = express.Router(); @@ -11,9 +11,10 @@ const session = require('express-session'); const MongoStore = require('connect-mongo')(session); const passport = require('passport'); const Strategy = require('passport-local').Strategy; +const GitLabStrategy = require('passport-gitlab2').Strategy; const ensureLogin = require('connect-ensure-login'); const serverlog = require('serverlog-node'); -const logger = serverlog.getLogger('noginx-webui'); +const logger = serverlog.getLogger('node-proxy-webui'); const pug = require('pug'); const routeCompiledFunc = pug.compileFile('./web/views/partials/route-tr.pug'); const serverCompiledFunc = pug.compileFile('./web/views/partials/server-item.pug'); @@ -28,7 +29,8 @@ const cacheModel = require('../models/caches').cacheModel; const domainModel = require('../models/domains').domainModel; const configPath = require('../getConfigPath')(); const config = require(configPath); -const userConfig = config.auth.users; +const localUsers = config.auth.local; +const gitlabOptions = config.auth.gitlab; const canEdit = require('./auth').canEdit; const authMw = require('./auth').authMw; const common = require('../utilities/common'); @@ -57,30 +59,41 @@ const mongoUrl = config.db.mongodb; * @param {object} req - request */ const getCurrentUser = req => { - return `${req.user} [${req.ip}]`; + return `${req.user.username} [${req.ip}]`; } +// 本地用户验证策略 passport.use(new Strategy( (username, password, cb) => { // Check if user valid - if (userConfig[username] && userConfig[username] === password) { + const findUser = localUsers.find(t => t.username === username && t.password === password); + if (findUser) { // Pass - return cb(null, username); + return cb(null, findUser); } // Failure return cb(null, false); })); +// Gitlab OAuth 验证策略 +passport.use(new GitLabStrategy({ + clientID: gitlabOptions.clientID, + clientSecret: gitlabOptions.clientSecret, + callbackURL: gitlabOptions.callbackURL, + baseURL: gitlabOptions.baseURL + }, + function(accessToken, refreshToken, profile, cb) { + cb(null, profile); + } +)); + passport.serializeUser((username, cb) => { cb(null, username); }); -passport.deserializeUser((username, cb) => { - if (userConfig[username]) { - return cb(null, username); - } - return cb(new Error('用户名或密码错误!')); +passport.deserializeUser((user, cb) => { + return cb(null, user); }); /** @@ -98,7 +111,7 @@ router.use(express.urlencoded({ })); router.use(session({ - secret: 'noginxproxyserverbyskysun', + secret: 'node-proxyproxyserverbyskysun', saveUninitialized: true, resave: true, store: new MongoStore({ @@ -112,7 +125,9 @@ router.use(passport.session()); * 登录页面 */ router.get('/login', (req, res) => { - res.render('login'); + res.render('login', { + showGitlab: gitlabOptions.enable + }); }); /** @@ -135,7 +150,7 @@ router.post('/login', (req, res) => { } else { // 登录操作 req.logIn(user, err => { - let returnTo = '/noginx/'; + let returnTo = '/node-proxy/'; if (err) { logger.error(err); res.json({ @@ -162,13 +177,24 @@ router.post('/login', (req, res) => { */ router.post('/logout', (req, res) => { req.logout(); - res.redirect('/noginx/login'); + res.redirect('/node-proxy/login'); }); +router.get('/auth/gitlab', passport.authenticate('gitlab')); + +router.get('/auth/gitlab/callback', + passport.authenticate('gitlab', { + failureRedirect: '/node-proxy/login' + }), + function(req, res) { + // Successful authentication, redirect home. + res.redirect('/node-proxy/'); + }); + /** * 这之后的路由需要登录后才允许访问 */ -router.use(ensureLogin.ensureLoggedIn('/noginx/login')); +router.use(ensureLogin.ensureLoggedIn('/node-proxy/login')); /** * 首页 @@ -507,7 +533,7 @@ router.get('/exportRoutes', (req, res) => { res.status(500).send(err.message); return; } - res.setHeader('Content-disposition', 'attachment; filename=noginx_routes.json'); + res.setHeader('Content-disposition', 'attachment; filename=node-proxy_routes.json'); res.setHeader('Content-type', 'application/json'); res.send(routes); }); @@ -770,7 +796,7 @@ router.get('/exportServers', (req, res) => { res.status(500).send(err.message); return; } - res.setHeader('Content-disposition', 'attachment; filename=noginx_servers.json'); + res.setHeader('Content-disposition', 'attachment; filename=node-proxy_servers.json'); res.setHeader('Content-type', 'application/json'); res.send(servers); }); @@ -1047,7 +1073,7 @@ router.get('/exportPermissions', (req, res) => { res.status(500).send(err.message); return; } - res.setHeader('Content-disposition', 'attachment; filename=noginx_permissions.json'); + res.setHeader('Content-disposition', 'attachment; filename=node-proxy_permissions.json'); res.setHeader('Content-type', 'application/json'); res.send(permissions); }); @@ -1353,7 +1379,7 @@ router.get('/exportCaches', (req, res) => { res.status(500).send(err.message); return; } - res.setHeader('Content-disposition', 'attachment; filename=noginx_caches.json'); + res.setHeader('Content-disposition', 'attachment; filename=node-proxy_caches.json'); res.setHeader('Content-type', 'application/json'); res.send(caches); }); @@ -1725,7 +1751,7 @@ router.get('/exportDomains', (req, res) => { res.status(500).send(err.message); return; } - res.setHeader('Content-disposition', 'attachment; filename=noginx_domains.json'); + res.setHeader('Content-disposition', 'attachment; filename=node-proxy_domains.json'); res.setHeader('Content-type', 'application/json'); res.send(domains); }); diff --git a/web/static/css/filePreview.css b/web/static/css/filePreview.css index ede7639..39e8926 100644 --- a/web/static/css/filePreview.css +++ b/web/static/css/filePreview.css @@ -81,7 +81,7 @@ body * { .file-name:before { content: ' '; - background-image: url("/noginx/static/img/default_file.svg"); + background-image: url("/node-proxy/static/img/default_file.svg"); background-position: 0; background-repeat: no-repeat; top: 7px; @@ -92,31 +92,31 @@ body * { } .file-name.file-js::before { - background-image: url("/noginx/static/img/file_type_light_js.svg") + background-image: url("/node-proxy/static/img/file_type_light_js.svg") } .file-name.file-css::before { - background-image: url("/noginx/static/img/file_type_css.svg") + background-image: url("/node-proxy/static/img/file_type_css.svg") } .file-name.file-md::before { - background-image: url("/noginx/static/img/file_type_markdown.svg") + background-image: url("/node-proxy/static/img/file_type_markdown.svg") } .file-name.file-html::before, .file-name.file-htm::before { - background-image: url("/noginx/static/img/file_type_html.svg") + background-image: url("/node-proxy/static/img/file_type_html.svg") } .file-name.file-json::before { - background-image: url("/noginx/static/img/file_type_light_json.svg") + background-image: url("/node-proxy/static/img/file_type_light_json.svg") } .file-name.file-vue::before { - background-image: url("/noginx/static/img/file_type_vue.svg") + background-image: url("/node-proxy/static/img/file_type_vue.svg") } .file-name.file-txt::before { - background-image: url("/noginx/static/img/file_type_text.svg") + background-image: url("/node-proxy/static/img/file_type_text.svg") } .file-name.file-bmp::before, @@ -125,15 +125,15 @@ body * { .file-name.file-png::before, .file-name.file-gif::before, .file-name.file-ico::before { - background-image: url("/noginx/static/img/file_type_image.svg") + background-image: url("/node-proxy/static/img/file_type_image.svg") } .file-name.file-pug::before { - background-image: url("/noginx/static/img/file_type_pug.svg") + background-image: url("/node-proxy/static/img/file_type_pug.svg") } .file-name.file-hbs::before { - background-image: url("/noginx/static/img/file_type_handlebars.svg") + background-image: url("/node-proxy/static/img/file_type_handlebars.svg") } .err { diff --git a/web/static/css/index.css b/web/static/css/index.css index 9391e49..7c7c201 100644 --- a/web/static/css/index.css +++ b/web/static/css/index.css @@ -148,6 +148,13 @@ input[type="search"]::before { color: #888; } +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-results-button, +input[type="search"]::-webkit-search-results-decoration { + display: none; +} + .search-wrap input { width: 210px !important; } @@ -161,10 +168,10 @@ input[type="search"]::before { .icon-x { font-style: normal; font-size: 15px; - line-height: 12px; - margin: 0 -2px 0 3px; - display: inline-block; - margin-top: -1px; + display: flex; + align-items: center; + margin-top: -2px; + margin-left: 4px; } input[type="search"]:focus { @@ -268,8 +275,9 @@ tfoot { .search-count { border: none; width: 60px; - text-align: center; - display: inline-block; + display: flex; + justify-content: center; + align-items: center; -webkit-user-select: none; user-select: none; font-size: 12px; @@ -1076,65 +1084,65 @@ input::-webkit-inner-spin-button { .file-list ul li.file-type::before { content: ' '; - background-image: url("/noginx/static/img/default_file.svg") + background-image: url("/node-proxy/static/img/default_file.svg") } .file-list ul li.dir-type::before { content: ' '; - background-image: url("/noginx/static/img/default_folder.svg") + background-image: url("/node-proxy/static/img/default_folder.svg") } .file-list ul li.dir-js::before, .file-list ul li.dir-javascript::before { - background-image: url("/noginx/static/img/folder_type_js.svg") + background-image: url("/node-proxy/static/img/folder_type_js.svg") } .file-list ul li.dir-css::before, .file-list ul li.dir-stylesheet::before, .file-list ul li.dir-stylesheets::before { - background-image: url("/noginx/static/img/folder_type_css.svg") + background-image: url("/node-proxy/static/img/folder_type_css.svg") } .file-list ul li.dir-img::before, .file-list ul li.dir-image::before, .file-list ul li.dir-images::before { - background-image: url("/noginx/static/img/folder_type_images.svg") + background-image: url("/node-proxy/static/img/folder_type_images.svg") } .file-list ul li.dir-asset::before, .file-list ul li.dir-assets::before { - background-image: url("/noginx/static/img/folder_type_asset.svg") + background-image: url("/node-proxy/static/img/folder_type_asset.svg") } .file-list ul li.dir-route::before, .file-list ul li.dir-routes::before, .file-list ul li.dir-router::before { - background-image: url("/noginx/static/img/folder_type_route.svg") + background-image: url("/node-proxy/static/img/folder_type_route.svg") } .file-list ul li.dir-src::before { - background-image: url("/noginx/static/img/folder_type_src.svg") + background-image: url("/node-proxy/static/img/folder_type_src.svg") } .file-list ul li.dir-dist::before { - background-image: url("/noginx/static/img/folder_type_dist.svg") + background-image: url("/node-proxy/static/img/folder_type_dist.svg") } .file-list ul li.dir-config::before { - background-image: url("/noginx/static/img/folder_type_config.svg") + background-image: url("/node-proxy/static/img/folder_type_config.svg") } .file-list ul li.dir-component::before, .file-list ul li.dir-components::before { - background-image: url("/noginx/static/img/folder_type_component.svg") + background-image: url("/node-proxy/static/img/folder_type_component.svg") } .file-list ul li.dir-node_modules::before { - background-image: url("/noginx/static/img/folder_type_node.svg") + background-image: url("/node-proxy/static/img/folder_type_node.svg") } .file-list ul li.dir-view::before, .file-list ul li.dir-views::before { - background-image: url("/noginx/static/img/folder_type_view.svg") + background-image: url("/node-proxy/static/img/folder_type_view.svg") } .file-list ul li.dir-model::before, .file-list ul li.dir-models::before { - background-image: url("/noginx/static/img/folder_type_model.svg") + background-image: url("/node-proxy/static/img/folder_type_model.svg") } .file-list ul li.back-type::before { @@ -1146,31 +1154,31 @@ input::-webkit-inner-spin-button { } .file-list ul li.file-js::before { - background-image: url("/noginx/static/img/file_type_light_js.svg") + background-image: url("/node-proxy/static/img/file_type_light_js.svg") } .file-list ul li.file-css::before { - background-image: url("/noginx/static/img/file_type_css.svg") + background-image: url("/node-proxy/static/img/file_type_css.svg") } .file-list ul li.file-md::before { - background-image: url("/noginx/static/img/file_type_markdown.svg") + background-image: url("/node-proxy/static/img/file_type_markdown.svg") } .file-list ul li.file-html::before, .file-list ul li.file-htm::before { - background-image: url("/noginx/static/img/file_type_html.svg") + background-image: url("/node-proxy/static/img/file_type_html.svg") } .file-list ul li.file-json::before { - background-image: url("/noginx/static/img/file_type_light_json.svg") + background-image: url("/node-proxy/static/img/file_type_light_json.svg") } .file-list ul li.file-vue::before { - background-image: url("/noginx/static/img/file_type_vue.svg") + background-image: url("/node-proxy/static/img/file_type_vue.svg") } .file-list ul li.file-txt::before { - background-image: url("/noginx/static/img/file_type_text.svg") + background-image: url("/node-proxy/static/img/file_type_text.svg") } .file-list ul li.file-bmp::before, @@ -1179,15 +1187,15 @@ input::-webkit-inner-spin-button { .file-list ul li.file-png::before, .file-list ul li.file-gif::before, .file-list ul li.file-ico::before { - background-image: url("/noginx/static/img/file_type_image.svg") + background-image: url("/node-proxy/static/img/file_type_image.svg") } .file-list ul li.file-pug::before { - background-image: url("/noginx/static/img/file_type_pug.svg") + background-image: url("/node-proxy/static/img/file_type_pug.svg") } .file-list ul li.file-hbs::before { - background-image: url("/noginx/static/img/file_type_handlebars.svg") + background-image: url("/node-proxy/static/img/file_type_handlebars.svg") } .remove-hidden { diff --git a/web/static/css/login.css b/web/static/css/login.css index 1a58f68..ff89633 100644 --- a/web/static/css/login.css +++ b/web/static/css/login.css @@ -114,6 +114,22 @@ body { border-radius: 6px; } +.gitlab { + display: block; + width: 50px; + height: 50px; + background-image: url("../img/gitlab.png"); + background-color: transparent; + background-size: cover; + margin: 10px auto 0 auto; + border-radius: 50%; + transition: background-color .3s; +} + +.gitlab:hover { + background-color: #0000002e; +} + @media (max-width: 767px) { body { background: #f9f9f9; diff --git a/web/static/img/gitlab.png b/web/static/img/gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..89109e4899710245b9a7b1f0498bad4600b59ffd GIT binary patch literal 14917 zcmeIZV{~L)&@dWX6Wg}Yv2EM7IpIu_nP_6$b~3STTN5W8+h0H5yY9Mw@6Y?=UF+<1 zcAwr|U8i=rYX4GEl14_rM*sr@Lzb11Py+)4xA||t!GNCl9hxqIZcx^uilSg(^>K*r zrqH0zyp}q$R*H&X^q@H$7WxI$rfm{>}O7b_LEO8U-zgx1!c!3PH*S6Kg z_ZvL^?M{K?YO~slnA+#ai`7^R{*|diy=q#c-LoS)HN9U&l;}_; z3}3|P2Vm}=GxvOVS5Mco>V^+XD?Mi~C9jpW6-oa@At*)u_xfK7{QrOge~=&&khn6{ z<;|lBw|VdR%qwRYRON48{?6ZOI$8$>ehPPA2fC~68Lo)!&N_-$Mmu(wCAE!3>OBAJ zF`;{z->kjxZO8Uy#6SVZKXKt*(U|DdhYj4JeOUX~-ymHH1mK^Vu`AF~Ur!H*=ntm! z44?)`?`f*C*GL3ih1Ont+L;1o_Qgd;q_OPOWOheO`ZDDStZ7p5*l%xe5bo}>pya-} zZ1-y@1zK0Qdfnn%stvF9ICeXK*Dr5Sh{^#&_PBRcQ42Fr`fwRT#6gc~5Vq!aR?;3H zu%~pnZowij{S7;j$l8cP66kIJa^8tf1;Uc{G`0L~clmt7^)!|}b%usu$!-p7Edoh25Y9#;y!k_WUV&@Lf$B+nV&HsAzE|MAPRs1FMy@w4 zW`w(@>a|ldc>t*!BQNBU$o2z*>UjFPKf))~*XMi1Cq7;NH+aIp$C>5*h`^F4e|v(~ zkt>h*I9)Mn5P0@$yQTD*YTLfuUBji@!&-uc?Ol-H<`%bQ+L1mpFvpr(B@<19t5Jexk$TM^XaL(@4d+8=# zRMSvAVmEqL9;)#+a>0ibwxVwR;Hmd@a>luA0LBl{pxyLQC_&lenJ?n|iZh%Mv(V!e zS`mJ_%=ocbrnTO{9}I8Bm}4f4;>Bf$_4f;){s7UNRL35}?|E@spD^sanX|vB^P#;< ztM?tA(nM(A(6(&@5Awz+mMWAS^m3SM_y-wTZMETMv}QZ|&xH026KXM1ySu}E=erF$ zCokQsCjr+njk%8ovCt3{pdaAsIfvfCET{Q*CAa_CC~J$IsV`|@T=anguJ4pdEUnAh z2t>R7rNBSoZG!ON?KC~qV+jMOFHQTxm1pRsKzIU{Za^ zdLEzMQEY6(;LvDJp(2a#UWfNB`4H&qog?Q1C&g#pho+iStoefAXGPv78m(+w%GNgt zaO^w+Vq>rBt)O-4$lwm%(>|TgfQ+0_V?LWu$R0@ReWwq!=GZIM2wQ}n6bhZedLwKI z&YNZad?yBQlDsD0qSUvq9bEJe<0Bz-US4OZ9^3*I_ZAA)n%NftWkYBU@R z(#09+nM%ldljYC8c6Jg52E?#e7q1#u%#FFRxk4b`^SM7m~iZw~h#%YSa)se=XSzq>mtoLDWO z3Wkt3d~wdk=WE+(975dQ;o+aaZEyiAP@N6x!Sp?9Z+eV4e4ZbZKRzdlC0aqux0QfE zO0p~nH~0t8J?hO6WlW!y~UW1Cd~ub}*^3QtOe+fqya~OyBGfdvx+!tR<3( zddzLOD^P$D#0|9ozqg7BiuSIO+7uW-gEZ+bulh4(oC9tZ;j5&=#lS6yb_ZW+|U3{RTN zCXd1<`KI1ISG1PqI>u-(^Iq_t9>Soi0V#ySyY_UTn3db^@8@6%m-~2G-vJni@nGRv zJ5P4~1z+0P;Ko?AUbJLhvEG2`Zv)Ty-otX!tJaVR@QQv6P?f^S9(4gxMM2l;nhQ6@ zuO4$h!O*iw)rF43yM1?(|Vw6DYj<%s&8iab(*~f8IfnMW76K$O1|B z0E)og$1HzM(&h=x6J@5}ZId-BV33=?#nlo9(wjiM3Y{VSUlf;++?Q$EtauqinQj@D z=FHE{wz4t>cY~r3l=|$Esb`{V#MTHM%WnEir`Wo9SiPNJOgvuy_}0;EsHlDrsI~@r z4`kG!r>0?|fg~chHwB%b-QQdczHs@w&#}wXp!BCQcSs{iP#yFHRFQZOqPd(}X@D6;S2x6G9>6sVl8J~ZBT52|WpE4H)@MD?xb<#gqs#E_y%!7N2kc`vYL^EwF za{+f`l~4zo8M+YXdud_R1aMLd7DN!hZX45YB9?!9Us%oYpW?06*gXN#!`t0N!)$&$ z$*Kz|x%@u*?{Hi>Qk=8kt>wPYrZHpW^)5`j-STfpAPk&tdk07Qy4YOZTYk%ynv3Pb zd?-T_xeO2oJSx`{7NujkaMcWLfGo%qy%OHk@p6+%fsBM{#t@~%V#@of+znO9vrI6| zx^!BxgzT!lbCOyC>C}zse2@+pC0S|2HlUFVdmk6aXV0%?YYhw5abL9x`)wD1K<s}lPVUweyiCNQJAHjxfkvOo^>>pl^$0T;0J+)d+Z2D6>`@}2Vt(&pH`){&u_f9 zeV59nd24GU>{b!!-|tU_JIJi$K&v@tMY&4{JsTA{K4vp>SrzC)6+s7RrBv)v}R8~blMTaT&uq)yO zF{j=_^honlz+QOFn%j0O9vay1ho8NDieWtFd3-JWcKfgg4c<;f?Zc^=#ec{_d?6|G zE*qT7L)-{Ev59hj?jDe7$;`n=4fPMZL>D1ya5-69Zo{H@P6T$=D8kuzEl%|*A57wn zp52<#D__5R+k^s6yhsAViDEfB9_pH*k{sDXm$TWJwe7}2pbmlucA&`4`6O7Lc)iZ8 zdS49gZ$|r&_((A<4-)DMQzXQ1xLFY#vU1@*Znh_3cku?mAAoS87RRe4AYT zaY{xPlFtF?*xChaBus6ZkeeIIHXi29syPq$#kEWIs09&aDz%YgjLc=;n~IecGV+W9 ztE@S~xj!t%m6T&$uAkfq%Y1aG!a~|MdEXtPIQFftBm>yEXO)&sX=ZULqw07Zch>&8 zL8o97U2D<9w8gZ)j)v#2N@ouSC)s1!Lh*>~7s9C=wKNdGEZ{Wx*koPP_A{&IZ z9T#s-;_3EZm#@epo#{0bAweY1$Zs10D$+NjQU69Ha|t+*w(iTRKuf`1K99~zOkG^U zPz%VhMR}wLk@Fn*^Y?L~ckAAK3iuhIThU+Wkeg5yugBUJyv-N8mS9!CMagu#M&gXzrdgR zT{_SWI;rPG{HeI9f-Wc5rf^Nd;+>))yG{nfeW==?l{Q=an6cN|na7?~%J_#ZocQYx zho}2FbNp#UATP4llF+@xkt26UtRA3^Pmlqnosp_$Ras*dz8S7*u2)PU#Myo`steAprHQFK8vW(F|MfNbPUe^J+j;5D&k7G9)v>uSlm>APrE71?8KJ!pHt3Ru6ZuhT4k~<8~KL9RgtudUNc}ipmACaB{B!gMIjBv6VoF|meba=^NbmpGG;fktf&#r=uBQ zxU337YQQ(=O22?G4kv5Z^7QyaELzBM5$EK`IBRy{+r{7G*4mr*U_=dhJc#gY^X!9p zYJf*+!*+`RWCx3=#?N1Ap_XvF<}5# z1YBO?9d33ufjhrB7n=MM?Guz@oRvp>MPvAR_c+SnU8T8^4J9=rIs(%fofcdEhtO1)l-(`tNf zXs=n6(Z2&)jso>IenU7=3DMOTFtNby&?F?VvExP*YSq1d3 zU{;?#yY#qKR8o`dx~4{tDx7n={O!PSl2L@l5Q)sja_q#_7}Ku01nieyM(yn9?IyC@ zQz3;fr!1_u&fqdO7UU*am!E=Q9g16J%&9a2n92@Xm6FK%bT7R1JZKz4jaz3+cQ6cA zzhA0iZ7lb#Pdw8OUSe&Keot!~Zq>1XS2{?g1sG?`>j2tprB&73*%s@<=`l=%#N_eM(9 zb+VGJ1Q?}lM;=cda3D8)NLVl~(Ia1N&vGmw&O0t+)pKqlR7T4Fgu*{Ta6w>6emfko z-(YMOBO1!v^D+ID;#Y3YFdgw;w|T;P{IKYlVt%jVnZ&j&em?c`C16wfcy_{k$=nO; z-V|s6W~d#eX(@ob@if`fB!muelk!Xk#U8&BkG^45T)9E< zA3t)%DXUG&f-RIS_jQP9UusMa5P`9M3n4qZpi?miq+kAl*Da-08V9(ix2st%+A~W~ zvq$aoW64ibslDLRZV4$~^!G{*C_T?9X{hTzRCmmF7@2jm{{_G(qWk}6GPvS9wAr7r zIefYn5)#yF2B{en_xYzh)<7m})hWBnYvA?z!NYfnv|@}2e}mY2>C}~>R`qU9MB7&P z?xa@@$pJ}w%oG5Zq1)9zfY+_&`bPHCCrZbn`P;|6)EkD>Uc7?XFnsycO{KP zd%=<)Rqf0x79b(4D@;e zRm>}i{ccWv;EeUsF&0N~_Vkn|j?sJT=7zi@{&rqO+flKjM4K($)G5Vi$z`GMX6URa zv+zt@Jt@C%BtRo+6%2m9Hb)9`p+e7T=%_nYvmS)Lhz0SL@sAu)#W1|c*SbaYW|4Wf zCNZpEor~KOJ~k}KuutK(jso_wT9X20O979)XoIXS*-O*q0-I{ z9)yFwzfa|+Zyi3!4rQYeTF+|Pp4bRZ$)#9uO`aKDFV^{DIYovEjLWM!WoK@xy!n+! z^_CNfURS1P@{ooh+}#>nZ9E8)_{g~z!7oy#dh;`VmVVMSD@QIHv1`P4Asd~tqY<>l z3w9##n}%zC56$js+B9X`ulq(hFzpJ6=_3)$1GoC!3bM@{XV_fIf`%m(64cgylcy5& z#3A!8&Wtg6>%A46VOFSGW%@vMXix9ZfO(1(Gn>2#&M3h%CpWqDf0ASD%7#qY4Lv7f zViK#nxj{|8_2-W?;4D(7JY6JyI0RXg&R`l$Ah5+;xm;Vc-{F`^8 z`Zy+wTsW2ez%3h|Y&mKaGc_yt)51m$mp^)$Um3mi+oXTK7Osiqe08@YTK0iA)?*vt z7NKR{yhtjTIdP90F(9J*0iC*nRga04;gCOuy*K5Q3;D*JV@^o)UD-QLQgjqqzr?E` zzDDKlc22fi+v((pb|49+9SYYU2>kFti%OAWj9>Cs8#gddF(JEy;l-b7J@Za1s%J*r zB)EG|A!rexK^Q~YxY{?ef>PyyA*gi|(+m5P?UBwoOQnZ~s*u-nG9Q+FWi=W_RiUJj zu&?hpkr94V`G!nl@60KIB*0z#3{wyfv1QRqTrF%ie)Sj?CV+oJR~-xTRd+$r{_Z>~M~gq6?*ki(hs@$>B)7|=&T$kQ49UTz4~~& zG)3~nl)ThSJ`+G0Rc~za!>g~%1|X}x!OEPw7S=tB-sZlaE2_+mWjTN=U!4N(OD{)c zSKZOIaJ__itvBz6#37lwG|pDxHv7VejVc(^%+_8w-&c-9R>PA%qD6TN%M9nlIh$HG zYzDQa3uZW@_Deqpv#W-R$?<5GDr?F&T4h z%2K%#m72AW%Iv$6-~lWJe9NY#$=!M9vY`R^Hl@krzqiZogLgge5C#jn_2`s0YxufX zmSHx-=9rEhYVrFR07ky>CMsyxVwMcObTa)C(jf`%@47K$C=L%m!}<-UORb!q)JC5)ZdV2+ zOq%N@W^7Npt|FPSEi%yaE$Sr3O<7au-nl%30d9vrl}70lUr1*Jhkz!#f0k;&@o{fS z0B@%>{mgg4artLo@iHLmScpd`P`Ub$pxA(&xGdNvv&T5SkLBS4{MVBrHAG_PD z7!QmZJWu3dM_4p~QN?ZEgRzM2*g#BsZH3vajCBzT(m+<5-oOc-JIm(jaqynQSGt*- zA*=R_?}6jdja9LyH^1^(CQjXa`<>KzlDdc&5L?m)ze|5etS!RmnXxu6*_)f8%SYg` z+GeZKbfqA31o@}R{ZMW(qQ<7i=o?})sLdjskWU3B==M47W2b#m>tY1GAI&bp;BS;h zzan!Y`T8gt+Mt$yi@r5cV9tqv&gJ`58dB%~YO=d(@jf;l`oK7?q_ow%stDxZhi6Vp z;9(wnk4@=J#YfLv7a5qnC=byU_+7NrYz2?46?Yn9j8a)R0*o#9>n=||?Zf}UCMYrS z7eB>&4x7Wg!pyTdn(~QX@8h!K$i@ybhWMnl0{you%qdr^OzxnU@<1%}61I7OXJvTW z6$f1>-69h$DLBYCU`x@(`}3?aXjg5FQe2RxH4l1sf{$FZ@x(IdUkJGr_t8yyMcB5C zO-5cEc=GTDJL-#XbdB*O{FcR!88xcO2_2JljUE zg^babF1js*l8g*W&5^dBCABPmG&nk|ckpCMBMNH>5JDW)A3klge85KTDPB$%Q=HN9 z@|!hYw+~>UuC5inF#$(1qwz9hr=3s~lwPb>2;b~@d39uFXI!9b9}1Xe-e80pA!b2)j1`P!?MmJ(or_ChOYBt zsD=$))L!QWX+x1`vMsKkklB~I^7{d&@WmnBgJNT09mcIG*3OuRNW{ZD!+%8%WlLGZ zZ5s^~6S03Sah^|l_$TDZeu1T~{$2Vl=xpX86Bi)=I?2SQHr7nP`w~+8@Uc7{KQj(F zlkI9)2hTn)qHJr?_FBwlfBYF#o!m_%^}0ouYX0?2%C8%r+u1BTepP2kLr;rWXk&H2 zz1+lK`!mKQV*(groyg4>jm3>!aFO`*9otu`wM1*|@xvIIPy>QN#waWtO4kec1zW9O z`(tANO1xse)lNaKnoa&tb_Z&i4z6*PoygE@;4dG@19tH9eL2Y{b4L#g{k2}T{A*qW z_5`PDIr;n`MDS|yC6dd*6$M?(Ru31ap5)>yl>L@NX;mi~SloIR&K&)eaTV4Jt)s@C9mkm;9E6(0Yho+?Q`lY)w8kT13O^+9Q8nK#jd z*u7DvSzh@W>*U_f3@(JVoNbqzURZM@Yp`oJ+lDvfeLSMhFLfFJ_Si$>^AlMO9JwhX zJjq{5NuOVeSY!S5*k=`;O_GoUIdu#HBP#fd_r*z&^KGb#mA#~S;NDmv@&rm1Ktifl zx&Ut)Ed#B*6uKegIM)1p`JPc4I+@k0x`WH9XZP0ql`m-wP4Q8UTc)lF&A1p?*dGeY z=D=j-7b_wIgf@dK;S~bf)h|L+v%Z1S&QSbwd}%$;04=kuD{}t>-P!G+qEc@oCe#?t zNmAD|m9?;%_!bO>xa++08?aC6&+D$3Co)iMijUYTU0%H3adDy%f2K0?;r+NyvZ%ft z*KmX&aom)qGiAc)Y5c5YA`bsz6ulFWyZNDZz}%t+peBofX^+(s^O@xn2o^3FYDcVf zr8z^x@=>LMfMz-7D5laA~g4I$;n&20@xFdh}G)1yZWNA+&opQz4a2-Mza zz)iy7;-{bDEO4DXTqS^><5N9VsWzewU$uInvftj!wA}b?tvEb>I0MzGDmmPe2XxyP z*So*CaeIQ|A~;+2EYb$uigmHKrg!Tmzh7kAwK9~kjsF0jekxFdO;nvWF?*q19r7Y$ z5xA3PL-Qekfe4ZldU#kB`ciE+t$vsnS&^%e;1ehsUKhHha@6H9)vV!>xA-MJ&)G>m zlX6_3M!jGkgsZvLyqr0m_k}-47IvF3_pBRpPIl(p%+0`t_N?rx$yV<7U*6bFXXMd0 zdwLjPrH5T%nyp$3?eeB6*&+d)sIJ&eLOMlxAo|OLtsskXyf5}qwB_W4P|EJyoG0$4 z)bz4`7`~@?ZgE%=f>PFX5R$3{U|aAB4g%{sU5zm_NASn4ox(@#j1azo z=-zyE=uDBUzQ?ujbDy5(&nNL~@1$>3U@RTkPZtX28ESSp|8P4o$tV*8Wy=W&P_M6S zC#w3u#u>o14|N3sGNPvb{IXcF05&D05o_zi5Xk%tIB5cyrlbqeyiy-jRBA=!+)?;h zz0zO$s9|Yt;o0P!OX(Pb8GSvTZ&R)8^?hEPwTVy1YuP`bzxa(dS9lB?5qf1eFGkF^ z^CY9Jd_|Mo5mFZt4x^rA>3N`3Ao)#|CZAmRaBR|LdVMF<5KQv_1%`Z2g&mSJMij*J z8}`juH)T5%R#40STVAeL<9&rnY1qK?r1L}>WQf?4s85SF(Yi zY&?Es)0ZvHa-ug9#CH1e9*JO>SM(^A>AK%5J0~8Q7#trDD)b(z@MiW*%@Rz1ntq(w zU!05)x#t@d>8=AV+Dz&5z8RW(XFQlL>y|THr!Wqy26FW*%sy)GlqIFEy#JRR6<(-7 zKMc`E(cfs@`t6BDJd8uC-7Er!H(Pk2KJfTvdKrNJ(|HAPT!Y_lCbUaV3{WKAWr}8q zq2{Ss+1L0|)7Xdxg4(}kTV@Atb)5~W3SY@=!DITawzQBuqo$$zBL*xucQ9Z%Fc;Qy zE#zUa+-BeV-vCda=O=x}8X@{LrvGw5v<}b7`Z03S`vaqo{?E z4Tb^8v@=_n%K;k!3n)Q_??0nJR-&GNk;yJcfXGJ@hd#1@G5jK9ZY`0=@?Kg}sK|FvO5GX|IY&y3W#0@up4nHSd2oA^fYKh1Z&+}0zcxkKs( z*&v;A4uvb>S_R{UZJb6@H`tD9oOgo#%UN|Lt+?-MFyXSv8oIAuE4>_>&&ifc$KIFc zaJI%gE&7)DeLDVP7J{hz5QuaDL_3hOK7!8$74n}a4OeLSA3us)^w2nBwlXOIMI%)U z90xnfx#9borIA`z>uV}v!zN}is?~Go-{m2d>R|(N< z2X#(dplfKXS!`T}X`LtMia8(4s}3scKj=@A-xqF#W~-*cj~$w$f-z_fC zhuNgVp}e1E^`?F*P1=2^T1)4_X_zDv!$GafU+2L#wv(C=6a5|HZj(0UJnk61w8ySr zf};*IwsPx}NW-P*h`U^12+(YYF)dH>3(^XzA&7=N?L1M!6TNz2A4L^blU`h@T29Gk zovhF8(-mLfvWOQU?hmKL3d`(Y)>A&y`YVw1uDN<bibmXr;Hy zqmmEdSe~dQS6%g|_(=Z6CQZxJaSFnYHj?D0@ErU1g|d) zVWB?6Lc{G-xf3JYS3aMMl7c=7ydV^R**ADtxEx1f5p%LU}EquA}iZp z?$A_^9n^6_)3`Nm7i0Txe>oQNOUZsMSoN*f`Z)b3dr|#tfbLHLBbR{Qv?ladGu5(% z+cLW$;4Aw>QMPIyOX!bm-|MiJ`L*)W0@fiPA+U#2L>#O#x&3-0i z8hkx;cb@RkU`LmI}y#vOD;cmfwcR6MI#DZ zO_Y`Y6i>-i!%91|3K>O#{6-Qs6}b*u4Fp{Rd&Tz+ zx&-mbV39p2nhK))|6KTYS6dgY>^48g8CcZPMWvTJC7hlmXCNrkC7mMBF)CKhX&_>M z-tV~-=qbq6+=^<%!!>Q-z4rzRHJe*hZoXZp^wUKpnTVZ0o&19%^1a836$V`ArEOl3 zU#>o-`===ch+QNQ8r@p2xR=I?0@{Twfm!etXAeJ|vbWBDPV=?BT0c)|%uJAbGNrwK zW`~*vYE~|WOfoN0JW%2tdjHu92*AFVy6k^NB-vP%%n{E-uyHCvogo zO77HEURbtAXOiXiFy-!Bu#~x(U2KP#Pv&YI@;j7SNziny?F=qwfWDE|!rp1MEdkwI zmVi5u>wDo2Q*e&2)1})RWgwItLPMfcvpkdd*IMb)l}Q$=UE(@3|I=%C_pcowEsFpI zP&8r$@W|D7Wm|Re7Ni@s8SHM%jRC4EiTUeXNGs=23%5EAA@u-Y3FSkaCsu2h9kTS7 zT$>f9ZYOy8`43D=votxUi}fnn7Hsk|J3i#MyBv1D(7gh>5u{$@6Yx5zTguKS(S7^v z>k(f{E!(46>X&{#Sidcv_Rl!Y?1kcL54a(Pg*I-c(50dZ>sd>llT2Uz3CngHKQ#Bd zL(dCw+HR@!IbPK}r;tDcN?du;z@XW)Tm8h6scn;dl2!D_H;b_`F2v2+4zSNWWm%lL z;FA+HXHGRxik$_rtj_lo)y`$6Z<4!yf8ut$}a}boqkiNpX zqZY|ypn;_Z6|ePF)iBxMO%-^CRx;idTP|Ib9_b%yEp0mXpejm7lFA02-`*Ej4+e_Y zV7VfMJQpGes+H|2;1Z+jbfqc;i0ni3rHMP95iq9oAfCd1?J<4Y_td!Fw! zb<_7mtehkESP`13uv2aip)0pKp^L4D3JVvHSVm_f7D?)9(Pn!QINxEQeAyLogIBg-@fm*JdBec4gUKF7QWC1BltM7zC?OWIFLnoL*^NPQ(*a?JSm3^j0c~r= zj;Fv(e+h@L9x=J?d_F}%afCn#pn=+l!J>5KG5!$EA)>{z9Xs- zxBoUK-n88sqC7(Cv%@LAayBYpP2Ti0T-m3jV>DJF_ag^q?WeCk$GG8@Z=2utFK#+U z{R={8w4k(|dKi9CKlj8rKp^V_HE2K++`nv*xc}x({~w&?*GUKP4P2{oRt6Rqq-$)&HGllxJFrVKw-d= z-J+shx{f>IcnX@e%l~rm6+xIH;{Z}2?{u)&Qs30C-2FZSInXDNt%m~HtAs8&!j^Iu z)N^MeOsgiP3jxaVL^hjmII`LZ$MjUZeXU)bNm-MW2_p!vivKdnX|6xe##F7_@%$O90WOvJ5gONREF(zwEGj~Ln$(Az|8w(n$0RPcB z9IB192C(H%%C@WoRxeU1NbwbhPvYrp)~KyybK)KdPhT-My6?1(ADRN-q5dcEOfrlI zaio84j_@(yFKS?=fm8aZ#diW)9W`t7Pd=G9q;s&+K5faWb8$UOp#s|QH+nL0FI zodnwFk=oANR%jAsdP+KB`;8^$-c2kf+Ih8&(cUUDWUn7NsIki83jYy-0{L38V1PR`>CPrb?}P%>a}v66LN_eY;CW0tV3v&3@>te##m5L<7JIBY1Mn!x%rVT)aQS*dzI zz@hOq`F)y=b6Wl8+Fb%9!4wcPc2V%7v4#<793Qs06D2!)`m?LUYjk8ehpZ{){ZC9B6-4=dHISp{7R^ zNS^Vkm;9bXchZx{s+Z4(bVPb~Z8A&bYIsxaRIhZg|A{aYvi9>eiV=n9=W@iSe6if3 zuG>jE+y@7<1Gg!^H{C9d7DQ6$ya+!Q@Jb(o8#Nnu8A{j~Xm2y4-m zKeQQ18)N*#A#zs~;^x2h{~51*EodkcnXf1%-Ie~jqwlkIW#8>q14$Bfruo*^JAktF zlV)QP*k)zf_VXd%QCS86zBnkj2P3!qy+GdUe-ij#i6RD|cwwa3vTTJC;&!)ttG)RN zA9r=flNpzZVbbjm`IwO5sQSmu%Rfw@L+x5jNG~SRgLImBq*CkY5BYub;)kb!RcCLn zVAt^*(vZKPQzEhch^jqNAPGC3?(O}|D{kI@d=|0%HX)##6AryhBxtuIF|44?Oi~PL zXwhcFvxJ9%GxqZGlXcwrioo!F&V@<6wT6W} z*oo#JfPLh#M2%?SqHE#Rv?_Jnq59rBTM;tB*LyJos${Z(91UHD9Q pf571X_xfK7{C}swqR8$Sq>B{wVS?0;uDWhIp)YQ#)J{|`U^t7`xN literal 0 HcmV?d00001 diff --git a/web/static/js/caches.js b/web/static/js/caches.js index 5886f77..a5df436 100644 --- a/web/static/js/caches.js +++ b/web/static/js/caches.js @@ -108,7 +108,7 @@ $('#btn-new-cache').on('click', () => { // 点击导出 $('#btn-export').on('click', () => { - window.location.href = '/noginx/exportCaches'; + window.location.href = '/node-proxy/exportCaches'; }); // 点击导入 @@ -116,7 +116,7 @@ $('#btn-import').on('change', () => { const file = $('#btn-import')[0].files[0]; const reader = new FileReader(); reader.onload = () => { - $.post('/noginx/importCaches', { + $.post('/node-proxy/importCaches', { data: reader.result }).done(data => { if (data.code === 1) { @@ -178,7 +178,7 @@ $('#btn-confirm-clear').on('click', () => { inputkey.focus(); return; } - $.post('/noginx/clearAllCache', { + $.post('/node-proxy/clearAllCache', { key }).done(data => { if (data.code === 1) { @@ -231,7 +231,7 @@ window.editCache = uid => { // 点击切换启用 window.activeCache = (el, uid) => { const active = el.checked; - $.post('/noginx/activeCache', { + $.post('/node-proxy/activeCache', { uid, active }).done(data => { @@ -283,7 +283,7 @@ window.delCache = uid => { dangerMode: true }).then(value => { if (value === 'btnConfirm') { - $.post('/noginx/delCache', { + $.post('/node-proxy/delCache', { uid }).done(data => { if (data.code === 1) { @@ -358,7 +358,7 @@ $('#btn-save').on('click', () => { $('#btn-save').attr('disabled', 'disabled'); const uid = $('#uid').val(); - $.post('/noginx/saveCache', { + $.post('/node-proxy/saveCache', { uid, type: $('#select-type').val(), uri, diff --git a/web/static/js/domain.js b/web/static/js/domain.js index 8ef7121..ac65269 100644 --- a/web/static/js/domain.js +++ b/web/static/js/domain.js @@ -50,7 +50,7 @@ $('#btn-new-domain').on('click', () => { // 点击导出 $('#btn-export').on('click', () => { - window.location.href = '/noginx/exportDomains'; + window.location.href = '/node-proxy/exportDomains'; }); // 点击导入 @@ -58,7 +58,7 @@ $('#btn-import').on('change', () => { const file = $('#btn-import')[0].files[0]; const reader = new FileReader(); reader.onload = () => { - $.post('/noginx/importDomains', { + $.post('/node-proxy/importDomains', { data: reader.result }).done(data => { if (data.code === 1) { @@ -125,7 +125,7 @@ window.delDomain = uid => { dangerMode: true }).then(value => { if (value === 'btnConfirm') { - $.post('/noginx/delDomain', { + $.post('/node-proxy/delDomain', { uid }).done(data => { if (data.code === 1) { @@ -180,7 +180,7 @@ $('#btn-save').on('click', () => { $('#btn-save').attr('disabled', 'disabled'); const uid = $('#uid').val(); - $.post('/noginx/saveDomain', { + $.post('/node-proxy/saveDomain', { uid, domainPath, remarks: $('#input-remarks').val() diff --git a/web/static/js/filePreview.js b/web/static/js/filePreview.js index ca1415d..b6c0de9 100644 --- a/web/static/js/filePreview.js +++ b/web/static/js/filePreview.js @@ -1,6 +1,6 @@ // 编辑器单例 let editor; -require.config({ paths: { 'vs': '/noginx/static/monaco-editor/min/vs' }}); +require.config({ paths: { 'vs': '/node-proxy/static/monaco-editor/min/vs' }}); require.config({ 'vs/nls' : { availableLanguages: { @@ -82,7 +82,7 @@ if (matched && matched[0]) { } $('#select-mode').val(mode).change(); -$.get('/noginx/getFileContent', { +$.get('/node-proxy/getFileContent', { path }).done(data => { initEditor(data, mode); diff --git a/web/static/js/index.js b/web/static/js/index.js index f008934..9cbdeb9 100644 --- a/web/static/js/index.js +++ b/web/static/js/index.js @@ -5,7 +5,7 @@ const editable = $('#editable').val() === 'true'; // 编辑器单例 let editor; -require.config({ paths: { 'vs': '/noginx/static/monaco-editor/min/vs' }}); +require.config({ paths: { 'vs': '/node-proxy/static/monaco-editor/min/vs' }}); require.config({ 'vs/nls' : { availableLanguages: { @@ -61,7 +61,7 @@ function draggerInit() { seq: i + 1 }); } - $.post('/noginx/seq', { + $.post('/node-proxy/seq', { seqList }).done(data => { if (data.code === 1) { @@ -243,7 +243,7 @@ $('#btn-new-route').on('click', () => { // 点击导出 $('#btn-export').on('click', () => { - window.location.href = '/noginx/exportRoutes'; + window.location.href = '/node-proxy/exportRoutes'; }); // 点击导入 @@ -251,7 +251,7 @@ $('#btn-import').on('change', () => { const file = $('#btn-import')[0].files[0]; const reader = new FileReader(); reader.onload = () => { - $.post('/noginx/importRoutes', { + $.post('/node-proxy/importRoutes', { data: reader.result }).done(data => { if (data.code === 1) { @@ -303,7 +303,7 @@ window.editRoute = uid => { // 点击切换启用 window.activeRoute = (el, uid) => { const active = el.checked; - $.post('/noginx/active', { + $.post('/node-proxy/active', { uid, active }).done(data => { @@ -355,7 +355,7 @@ window.delRoute = uid => { dangerMode: true }).then(value => { if (value === 'btnConfirm') { - $.post('/noginx/del', { + $.post('/node-proxy/del', { uid }).done(data => { if (data.code === 1) { @@ -453,7 +453,7 @@ $('#btn-save').on('click', () => { $('#btn-save').attr('disabled', 'disabled'); const uid = $('#uid').val(); const tryFile = $('#check-tryFile').prop('checked'); - $.post('/noginx/save', { + $.post('/node-proxy/save', { uid, type: $('#select-type').val(), uri, @@ -792,7 +792,7 @@ $('#route-modal').on('hide.bs.modal', () => { * 检查 static 目录是否存在(新的测试环境可能缺少该目录,故给出明显提示) */ function checkIfStaticExists(cb) { - $.get(`/noginx/getFiles?path=${topPath}`).done(data => { + $.get(`/node-proxy/getFiles?path=${topPath}`).done(data => { if (data.code === '-1') { swal({ title: '服务器目录异常', @@ -814,7 +814,7 @@ checkIfStaticExists(); function showFileList(path = topPath) { $('.file-list').addClass('cursor-wait'); - $.get(`/noginx/getFiles?path=${path}`).done(data => { + $.get(`/node-proxy/getFiles?path=${path}`).done(data => { if (data.code === '1') { const currentDirPath = data.data.dirPath; $('.current-path').html(currentDirPath); @@ -836,7 +836,7 @@ function showFileList(path = topPath) { // 支持文件预览功能 let previewBtn = ''; if (item.isFile) { - previewBtn = `文件预览`; + previewBtn = `文件预览`; } return `
  • ${item.name}${previewBtn}

  • `; diff --git a/web/static/js/login.js b/web/static/js/login.js index d242f53..86fff34 100644 --- a/web/static/js/login.js +++ b/web/static/js/login.js @@ -17,13 +17,13 @@ $('#btn-login').on('click', () => { const btnLogin = $('#btn-login'); btnLogin.attr('disabled', 'disabled'); btnLogin.text('登录中...'); - $.post('/noginx/login', { + $.post('/node-proxy/login', { username, password: md5(password) }).done(data => { if (data.code === 1) { // 成功 - window.location.href = data.data || '/noginx/'; + window.location.href = data.data || '/node-proxy/'; } else { // 失败 swal({ diff --git a/web/static/js/permissions.js b/web/static/js/permissions.js index 2e4adda..7a23d94 100644 --- a/web/static/js/permissions.js +++ b/web/static/js/permissions.js @@ -147,7 +147,7 @@ $('#btn-new-permission').on('click', () => { // 点击导出 $('#btn-export').on('click', () => { - window.location.href = '/noginx/exportPermissions'; + window.location.href = '/node-proxy/exportPermissions'; }); // 点击导入 @@ -155,7 +155,7 @@ $('#btn-import').on('change', () => { const file = $('#btn-import')[0].files[0]; const reader = new FileReader(); reader.onload = () => { - $.post('/noginx/importPermissions', { + $.post('/node-proxy/importPermissions', { data: reader.result }).done(data => { if (data.code === 1) { @@ -222,7 +222,7 @@ window.delPermission = uid => { dangerMode: true }).then(value => { if (value === 'btnConfirm') { - $.post('/noginx/delPermission', { + $.post('/node-proxy/delPermission', { uid }).done(data => { if (data.code === 1) { @@ -305,7 +305,7 @@ $('#btn-save').on('click', () => { $('#btn-save').attr('disabled', 'disabled'); const uid = $('#uid').val(); - $.post('/noginx/savePermission', { + $.post('/node-proxy/savePermission', { uid, auth, type: $('#select-type').val(), diff --git a/web/static/js/servers.js b/web/static/js/servers.js index 106ab16..142de33 100644 --- a/web/static/js/servers.js +++ b/web/static/js/servers.js @@ -30,7 +30,7 @@ $('#btn-new-server').on('click', () => { // 点击导出 $('#btn-export').on('click', () => { - window.location.href = '/noginx/exportServers'; + window.location.href = '/node-proxy/exportServers'; }); // 点击导入 @@ -38,7 +38,7 @@ $('#btn-import').on('change', () => { const file = $('#btn-import')[0].files[0]; const reader = new FileReader(); reader.onload = () => { - $.post('/noginx/importServers', { + $.post('/node-proxy/importServers', { data: reader.result }).done(data => { if (data.code === 1) { @@ -105,7 +105,7 @@ window.delServer = uid => { dangerMode: true }).then(value => { if (value === 'btnConfirm') { - $.post('/noginx/delServer', { + $.post('/node-proxy/delServer', { uid }).done(data => { if (data.code === 1) { @@ -186,7 +186,7 @@ $('#btn-save').on('click', () => { $('#btn-save').attr('disabled', 'disabled'); const uid = $('#uid').val(); - $.post('/noginx/saveServer', { + $.post('/node-proxy/saveServer', { uid, name, addresses: JSON.stringify(addresses), diff --git a/web/views/cache-list.pug b/web/views/cache-list.pug index 6e64066..4e2533b 100644 --- a/web/views/cache-list.pug +++ b/web/views/cache-list.pug @@ -1,11 +1,11 @@ extends layout.pug block styles - link(rel='stylesheet', href='/noginx/static/switchery/dist/switchery.min.css') - link(rel='stylesheet', href='/noginx/static/css/animate.min.css') - link(rel='stylesheet', href='/noginx/static/select2/dist/css/select2.min.css') - link(rel='stylesheet', href='/noginx/static/tippy.js/themes/light-border.css') - link(rel='stylesheet', href='/noginx/static/css/index.css') + link(rel='stylesheet', href='/node-proxy/static/@flexem/switchery/dist/switchery.min.css') + link(rel='stylesheet', href='/node-proxy/static/css/animate.min.css') + link(rel='stylesheet', href='/node-proxy/static/select2/dist/css/select2.min.css') + link(rel='stylesheet', href='/node-proxy/static/tippy.js/themes/light-border.css') + link(rel='stylesheet', href='/node-proxy/static/css/index.css') if (!editable) style(type='text/css'). .results tr:hover .seq { @@ -18,7 +18,7 @@ block styles block content .main-content .col.btn-line - a(href="/noginx/caches/") 缓存设置 + a(href="/node-proxy/caches/") 缓存设置 if (editable) button.btn.btn-info.mr-2#btn-new-cache i.iconfont.icon-add1 @@ -78,7 +78,7 @@ block content option(value=domain.id)=domain.domainPath .input-group-append span.my-input-group-text.my-input-group-text2 - a(href="/noginx/domains/") + a(href="/node-proxy/domains/") i.iconfont.icon-global(title="配置域名") .form-group label(for='input-uri') 匹配路径 @@ -116,7 +116,7 @@ block content .input-group-append span.input-group-text 秒 .modal-footer - a.btn.btn-link.btn-howto.text-info(href="/noginx/help/#如何配置缓存?", target="_blank") 如何配置? + a.btn.btn-link.btn-howto.text-info(href="/node-proxy/help/#如何配置缓存?", target="_blank") 如何配置? button.btn.btn-default(type='button' data-dismiss='modal') 取消 button.btn.btn-info#btn-save(type='button') 保存修改 .modal#clear-modal @@ -134,17 +134,17 @@ block content span.input-group-text=cacheKeyPrefix input.form-control#input-clear-key(placeholder="", spellcheck="false", value="*") .modal-footer - a.btn.btn-link.btn-howto.text-info(href="/noginx/help/#如何清除缓存?", target="_blank") 如何配置? + a.btn.btn-link.btn-howto.text-info(href="/node-proxy/help/#如何清除缓存?", target="_blank") 如何配置? button.btn.btn-default(type='button' data-dismiss='modal') 取消 button.btn.btn-secondary#btn-confirm-clear(type='button') 确认清除 input#uid(type="hidden") input#editable(type="hidden", value=editable.toString()) - script(src='/noginx/static/jquery/dist/jquery.min.js') - script(src='/noginx/static/popper.js/dist/umd/popper.min.js') - script(src='/noginx/static/bootstrap/dist/js/bootstrap.min.js') - script(src='/noginx/static/switchery/dist/switchery.min.js') - script(src='/noginx/static/js/search.js') - script(src='/noginx/static/sweetalert/dist/sweetalert.min.js') - script(src='/noginx/static/tippy.js/umd/index.all.min.js') - script(src='/noginx/static/select2/dist/js/select2.js') - script(src='/noginx/static/js/caches.js') + script(src='/node-proxy/static/jquery/dist/jquery.min.js') + script(src='/node-proxy/static/popper.js/dist/umd/popper.min.js') + script(src='/node-proxy/static/bootstrap/dist/js/bootstrap.min.js') + script(src='/node-proxy/static/@flexem/switchery/dist/switchery.min.js') + script(src='/node-proxy/static/js/search.js') + script(src='/node-proxy/static/sweetalert/dist/sweetalert.min.js') + script(src='/node-proxy/static/tippy.js/umd/index.all.min.js') + script(src='/node-proxy/static/select2/dist/js/select2.js') + script(src='/node-proxy/static/js/caches.js') diff --git a/web/views/domain-list.pug b/web/views/domain-list.pug index e079f00..75af49a 100644 --- a/web/views/domain-list.pug +++ b/web/views/domain-list.pug @@ -1,9 +1,9 @@ extends layout.pug block styles - link(rel='stylesheet', href='/noginx/static/switchery/dist/switchery.min.css') - link(rel='stylesheet', href='/noginx/static/css/animate.min.css') - link(rel='stylesheet', href='/noginx/static/css/index.css') + link(rel='stylesheet', href='/node-proxy/static/@flexem/switchery/dist/switchery.min.css') + link(rel='stylesheet', href='/node-proxy/static/css/animate.min.css') + link(rel='stylesheet', href='/node-proxy/static/css/index.css') if (!editable) style(type='text/css'). .results tr:hover .seq { @@ -16,7 +16,7 @@ block styles block content .main-content .col.btn-line - a(href="/noginx/domains/") 域名 + a(href="/node-proxy/domains/") 域名 if (editable) button.btn.btn-info.mr-2#btn-new-domain i.iconfont.icon-add1 @@ -59,14 +59,14 @@ block content label(for='input-remarks') 备注 textarea.form-control#input-remarks(rows='3', placeholder='备注信息', spellcheck="false") .modal-footer - a.btn.btn-link.btn-howto.text-info(href="/noginx/help/#如何创建域名?") 如何配置? + a.btn.btn-link.btn-howto.text-info(href="/node-proxy/help/#如何创建域名?") 如何配置? button.btn.btn-default(type='button' data-dismiss='modal') 取消 button.btn.btn-info#btn-save(type='button') 保存修改 input#uid(type="hidden") input#editable(type="hidden", value=editable.toString()) - script(src='/noginx/static/jquery/dist/jquery.min.js') - script(src='/noginx/static/popper.js/dist/umd/popper.min.js') - script(src='/noginx/static/bootstrap/dist/js/bootstrap.min.js') - script(src='/noginx/static/js/search.js') - script(src='/noginx/static/sweetalert/dist/sweetalert.min.js') - script(src='/noginx/static/js/domain.js') + script(src='/node-proxy/static/jquery/dist/jquery.min.js') + script(src='/node-proxy/static/popper.js/dist/umd/popper.min.js') + script(src='/node-proxy/static/bootstrap/dist/js/bootstrap.min.js') + script(src='/node-proxy/static/js/search.js') + script(src='/node-proxy/static/sweetalert/dist/sweetalert.min.js') + script(src='/node-proxy/static/js/domain.js') diff --git a/web/views/file-preview.pug b/web/views/file-preview.pug index 67589df..2d256d6 100644 --- a/web/views/file-preview.pug +++ b/web/views/file-preview.pug @@ -2,12 +2,12 @@ doctype html html(lang='en') head meta(charset='utf-8') - link(rel='shortcut icon' href='/noginx/static/img/noginx.ico') - link(rel='stylesheet', href='/noginx/static/bootswatch/dist/minty/bootstrap.min.css') - link(rel='stylesheet', href='/noginx/static/css/iconfont.css') - link(rel='stylesheet', data-name='vs/editor/editor.main', href='/noginx/static/monaco-editor/min/vs/editor/editor.main.css') - link(rel='stylesheet', href='/noginx/static/css/filePreview.css') - title Noginx - 文件预览 + link(rel='shortcut icon' href='/node-proxy/static/img/node-proxy.ico') + link(rel='stylesheet', href='/node-proxy/static/bootswatch/dist/minty/bootstrap.min.css') + link(rel='stylesheet', href='/node-proxy/static/css/iconfont.css') + link(rel='stylesheet', data-name='vs/editor/editor.main', href='/node-proxy/static/monaco-editor/min/vs/editor/editor.main.css') + link(rel='stylesheet', href='/node-proxy/static/css/filePreview.css') + title Node Proxy - 文件预览 body .file-name(class=cls) p=fileName @@ -30,7 +30,7 @@ html(lang='en') option(value='jade') Pug option(value='html') Vue option(value='plaintext') 纯文本 - script(src='/noginx/static/jquery/dist/jquery.min.js') - script(src='/noginx/static/monaco-editor/min/vs/loader.js') - script(src='/noginx/static/js/filePreview.js') + script(src='/node-proxy/static/jquery/dist/jquery.min.js') + script(src='/node-proxy/static/monaco-editor/min/vs/loader.js') + script(src='/node-proxy/static/js/filePreview.js') diff --git a/web/views/help.pug b/web/views/help.pug index f79adb3..4378089 100644 --- a/web/views/help.pug +++ b/web/views/help.pug @@ -1,14 +1,14 @@ extends layout.pug block styles - link(rel='stylesheet', href='/noginx/static/css/index.css') + link(rel='stylesheet', href='/node-proxy/static/css/index.css') block content .main-content .col.btn-line - a(href="/noginx/help/") 帮助 + a(href="/node-proxy/help/") 帮助 .help-content !=html - script(src='/noginx/static/jquery/dist/jquery.min.js') - script(src='/noginx/static/bootstrap/dist/js/bootstrap.min.js') + script(src='/node-proxy/static/jquery/dist/jquery.min.js') + script(src='/node-proxy/static/bootstrap/dist/js/bootstrap.min.js') \ No newline at end of file diff --git a/web/views/info.pug b/web/views/info.pug index 5875a0e..6ca2b79 100644 --- a/web/views/info.pug +++ b/web/views/info.pug @@ -1,12 +1,12 @@ extends layout.pug block styles - link(rel='stylesheet', href='/noginx/static/css/index.css') + link(rel='stylesheet', href='/node-proxy/static/css/index.css') block content .main-content .col.btn-line - a(href="/noginx/info/") 环境信息 + a(href="/node-proxy/info/") 环境信息 .table-responsive table.table.server-info tbody @@ -17,7 +17,7 @@ block content td NODE_ENV 环境变量 td=info.nodeEnv tr - td Noginx 版本 + td Node Proxy 版本 td=`v${info.proxyVersion}` tr td MongoDB 连接字符串 @@ -49,6 +49,6 @@ block content tr td 配置热更新调度规则 td=info.config.job - script(src='/noginx/static/jquery/dist/jquery.min.js') - script(src='/noginx/static/bootstrap/dist/js/bootstrap.min.js') + script(src='/node-proxy/static/jquery/dist/jquery.min.js') + script(src='/node-proxy/static/bootstrap/dist/js/bootstrap.min.js') \ No newline at end of file diff --git a/web/views/layout.pug b/web/views/layout.pug index 74656b6..1d820da 100644 --- a/web/views/layout.pug +++ b/web/views/layout.pug @@ -2,25 +2,25 @@ doctype html html(lang='en') head meta(charset='utf-8') - link(rel='shortcut icon' href='/noginx/static/img/noginx.ico') - link(rel='stylesheet', href='/noginx/static/bootswatch/dist/minty/bootstrap.min.css') - link(rel='stylesheet', href='/noginx/static/css/iconfont.css') + link(rel='shortcut icon' href='/node-proxy/static/img/node-proxy.ico') + link(rel='stylesheet', href='/node-proxy/static/bootswatch/dist/minty/bootstrap.min.css') + link(rel='stylesheet', href='/node-proxy/static/css/iconfont.css') block styles - title Noginx - #{title} + title Node Proxy - #{title} body //- 顶部导航 nav.navbar.navbar-expand.fixed-top .container-fluid - a.navbar-brand(href='/noginx/', title='高性能 HTTP 及反向代理服务器') + a.navbar-brand(href='/node-proxy/', title='高性能 HTTP 及反向代理服务器') i.iconfont.icon-shujufangwendaili - |Noginx + |Node Proxy ul.navbar-nav li.nav-item - a.nav-link.text-muted(href='/noginx/help/') + a.nav-link.text-muted(href='/node-proxy/help/') i.iconfont.icon-question | 帮助 li.nav-item - a.nav-link.text-muted(href='https://github.com/eshengsky/noginx', target='_blank') + a.nav-link.text-muted(href='https://github.com/eshengsky/node-proxy', target='_blank') i.iconfont.icon-github(style='font-size: 17px;') | 源码 li.nav-item @@ -38,24 +38,24 @@ html(lang='en') span i.icon-x × .user-info - span=user - form(action="/noginx/logout", method="Post") + span=user.username + form(action="/node-proxy/logout", method="Post") button(type="submit", title="退出登录") i.iconfont.icon-log_out //- 左侧导航 .sub-core .navigation-core - a.item-1(class={ current: path === '/' }, href='/noginx/') + a.item-1(class={ current: path === '/' }, href='/node-proxy/') .title h3 路由 .corner i.icon-layout1.iconfont.icon-direction - a.item-2(class={ current: path === '/servers/' }, href='/noginx/servers/') + a.item-2(class={ current: path === '/servers/' }, href='/node-proxy/servers/') .title h3 服务器 .corner i.icon-layout2.iconfont.icon-server - a.item-3(class={ current: path === '/caches/' }, href='/noginx/caches/') + a.item-3(class={ current: path === '/caches/' }, href='/node-proxy/caches/') .title h3 缓存设置 .desc @@ -65,17 +65,17 @@ html(lang='en') | 条缓存 .corner i.icon-layout3.iconfont.icon-redis - a.item-4(class={ current: path === '/domains/' }, href='/noginx/domains/') + a.item-4(class={ current: path === '/domains/' }, href='/node-proxy/domains/') .title h3 域名 .corner i.icon-layout4.iconfont.icon-global - a.item-5(class={ current: path === '/info/' }, href='/noginx/info/') + a.item-5(class={ current: path === '/info/' }, href='/node-proxy/info/') .title h3 信息 .corner i.icon-layout5.iconfont.icon-info - a.item-6(class={ current: path === '/permissions/' }, href='/noginx/permissions/') + a.item-6(class={ current: path === '/permissions/' }, href='/node-proxy/permissions/') .title h3 |身份 @@ -93,7 +93,7 @@ html(lang='en') script. document.querySelector('.search-wrap .input-group-prepend').onclick = () => document.querySelector('.search-wrap input').focus(); document.querySelector('.search-wrap .input-group-append').onclick = () => document.querySelector('.search-wrap input').focus(); - $.get('/noginx/getCacheKeyLen').done(data => { + $.get('/node-proxy/getCacheKeyLen').done(data => { document.querySelector('.key-count').textContent = data.data || 0; }); window.clearSearch = () => { diff --git a/web/views/login.pug b/web/views/login.pug index 5ec348d..f283021 100644 --- a/web/views/login.pug +++ b/web/views/login.pug @@ -3,16 +3,16 @@ html(lang='en') head meta(charset='utf-8') meta(name='viewport', content='width=device-width, initial-scale=1, shrink-to-fit=no') - link(rel='shortcut icon' href='/noginx/static/img/noginx.ico') - link(rel='stylesheet', href='/noginx/static/bootswatch/dist/minty/bootstrap.min.css') - link(rel='stylesheet', href='/noginx/static/css/iconfont.css') - link(rel='stylesheet', href='/noginx/static/css/login.css') - title Noginx - 用户登录 + link(rel='shortcut icon' href='/node-proxy/static/img/node-proxy.ico') + link(rel='stylesheet', href='/node-proxy/static/bootswatch/dist/minty/bootstrap.min.css') + link(rel='stylesheet', href='/node-proxy/static/css/iconfont.css') + link(rel='stylesheet', href='/node-proxy/static/css/login.css') + title Node Proxy - 用户登录 body .login .login-header .brand - span 登录到 Noginx + span 登录到 Node Proxy .icon .login-content .form-group @@ -22,7 +22,9 @@ html(lang='en') label.iconfont.icon-password(for="input-password") input.form-control.form-control-lg#input-password(type="password", name="password", placeholder="密码", autocomplete="new-password") button.btn.btn-success.btn-block.btn-lg#btn-login 登 录 - script(src='/noginx/static/jquery/dist/jquery.min.js') - script(src='/noginx/static/sweetalert/dist/sweetalert.min.js') - script(src='/noginx/static/blueimp-md5/js/md5.min.js') - script(src='/noginx/static/js/login.js') + if showGitlab + a.gitlab(href='/node-proxy/auth/gitlab', title='使用Gitlab账号登录系统') + script(src='/node-proxy/static/jquery/dist/jquery.min.js') + script(src='/node-proxy/static/sweetalert/dist/sweetalert.min.js') + script(src='/node-proxy/static/blueimp-md5/js/md5.min.js') + script(src='/node-proxy/static/js/login.js') diff --git a/web/views/partials/route-tr.pug b/web/views/partials/route-tr.pug index 32f3e3e..2f2ea35 100644 --- a/web/views/partials/route-tr.pug +++ b/web/views/partials/route-tr.pug @@ -63,7 +63,7 @@ tr(id=route.id, data-type=route.type, data-uri=route.uri, data-params=route.para if (server) { serverName = server.name; } - a.text-info(href='/noginx/servers/') #{serverName} + a.text-info(href='/node-proxy/servers/') #{serverName} .d-none=route.id td(class={inactive: !route.active}) if route.remarks diff --git a/web/views/permission-list.pug b/web/views/permission-list.pug index 230e342..2fccf37 100644 --- a/web/views/permission-list.pug +++ b/web/views/permission-list.pug @@ -1,16 +1,16 @@ extends layout.pug block styles - link(rel='stylesheet', href='/noginx/static/switchery/dist/switchery.min.css') - link(rel='stylesheet', href='/noginx/static/css/animate.min.css') - link(rel='stylesheet', href='/noginx/static/select2/dist/css/select2.min.css') - link(rel='stylesheet', href='/noginx/static/tippy.js/themes/light-border.css') - link(rel='stylesheet', href='/noginx/static/css/index.css') + link(rel='stylesheet', href='/node-proxy/static/@flexem/switchery/dist/switchery.min.css') + link(rel='stylesheet', href='/node-proxy/static/css/animate.min.css') + link(rel='stylesheet', href='/node-proxy/static/select2/dist/css/select2.min.css') + link(rel='stylesheet', href='/node-proxy/static/tippy.js/themes/light-border.css') + link(rel='stylesheet', href='/node-proxy/static/css/index.css') block content .main-content .col.btn-line - a(href="/noginx/permissions/") 身份验证 + a(href="/node-proxy/permissions/") 身份验证 if (editable) button.btn.btn-info.mr-2#btn-new-permission i.iconfont.icon-add1 @@ -69,7 +69,7 @@ block content option(value=domain.id)=domain.domainPath .input-group-append span.my-input-group-text.my-input-group-text2 - a(href="/noginx/domains/") + a(href="/node-proxy/domains/") i.iconfont.icon-global(title="配置域名") .form-group label(for='input-uri') 匹配路径 @@ -90,7 +90,7 @@ block content button.btn.btn-sm.btn-info.float-right.btn-new-exc#btn-new-exclude(type="button", title="添加") i.iconfont.icon-add .modal-footer - a.btn.btn-link.btn-howto.text-info(href="/noginx/help/#如何设置登录后才能访问?", target="_blank") 如何配置? + a.btn.btn-link.btn-howto.text-info(href="/node-proxy/help/#如何设置登录后才能访问?", target="_blank") 如何配置? button.btn.btn-default(type='button' data-dismiss='modal') 取消 button.btn.btn-info#btn-save(type='button') 保存修改 .modal.animated.bounceInDown#excludes-modal(data-keyboard="false") @@ -105,11 +105,11 @@ block content button.btn.btn-info(type='button' data-dismiss='modal') 关闭 input#uid(type="hidden") input#editable(type="hidden", value=editable.toString()) - script(src='/noginx/static/jquery/dist/jquery.min.js') - script(src='/noginx/static/popper.js/dist/umd/popper.min.js') - script(src='/noginx/static/bootstrap/dist/js/bootstrap.min.js') - script(src='/noginx/static/js/search.js') - script(src='/noginx/static/sweetalert/dist/sweetalert.min.js') - script(src='/noginx/static/tippy.js/umd/index.all.min.js') - script(src='/noginx/static/select2/dist/js/select2.js') - script(src='/noginx/static/js/permissions.js') + script(src='/node-proxy/static/jquery/dist/jquery.min.js') + script(src='/node-proxy/static/popper.js/dist/umd/popper.min.js') + script(src='/node-proxy/static/bootstrap/dist/js/bootstrap.min.js') + script(src='/node-proxy/static/js/search.js') + script(src='/node-proxy/static/sweetalert/dist/sweetalert.min.js') + script(src='/node-proxy/static/tippy.js/umd/index.all.min.js') + script(src='/node-proxy/static/select2/dist/js/select2.js') + script(src='/node-proxy/static/js/permissions.js') diff --git a/web/views/route-list.pug b/web/views/route-list.pug index c1df0fb..80655e6 100644 --- a/web/views/route-list.pug +++ b/web/views/route-list.pug @@ -1,12 +1,12 @@ extends layout.pug block styles - link(rel='stylesheet', href='/noginx/static/switchery/dist/switchery.min.css') - link(rel='stylesheet', href='/noginx/static/css/animate.min.css') - link(rel='stylesheet', data-name='vs/editor/editor.main', href='/noginx/static/monaco-editor/min/vs/editor/editor.main.css') - link(rel='stylesheet', href='/noginx/static/select2/dist/css/select2.min.css') - link(rel='stylesheet', href='/noginx/static/tippy.js/themes/light-border.css') - link(rel='stylesheet', href='/noginx/static/css/index.css') + link(rel='stylesheet', href='/node-proxy/static/@flexem/switchery/dist/switchery.min.css') + link(rel='stylesheet', href='/node-proxy/static/css/animate.min.css') + link(rel='stylesheet', data-name='vs/editor/editor.main', href='/node-proxy/static/monaco-editor/min/vs/editor/editor.main.css') + link(rel='stylesheet', href='/node-proxy/static/select2/dist/css/select2.min.css') + link(rel='stylesheet', href='/node-proxy/static/tippy.js/themes/light-border.css') + link(rel='stylesheet', href='/node-proxy/static/css/index.css') if (!editable) style(type='text/css'). .results tr:hover .seq { @@ -19,7 +19,7 @@ block styles block content .main-content .col.btn-line - a(href="/noginx/") 路由 + a(href="/node-proxy/") 路由 if (editable) button.btn.btn-info.mr-2#btn-new-route i.iconfont.icon-add1 @@ -76,7 +76,7 @@ block content option(value=domain.id)=domain.domainPath .input-group-append span.my-input-group-text.my-input-group-text2 - a(href="/noginx/domains/") + a(href="/node-proxy/domains/") i.iconfont.icon-global(title="配置域名") .form-group label(for='input-uri') @@ -132,7 +132,7 @@ block content option(value="url") [指定URL] .input-group-append span.my-input-group-text - a(href="/noginx/servers/") + a(href="/node-proxy/servers/") i.iconfont.icon-server(title="配置服务器") input.form-control#input-forward(placeholder="请以http(s)开头", spellcheck="false") #custom-wrap @@ -172,7 +172,7 @@ block content label(for='input-remarks') 备注 textarea.form-control#input-remarks(rows='2', placeholder='特别说明、示例URL等...', spellcheck="false") .modal-footer - a.btn.btn-link.btn-howto.text-info(href="/noginx/help/#常见问题") 如何配置? + a.btn.btn-link.btn-howto.text-info(href="/node-proxy/help/#常见问题") 如何配置? button.btn.btn-default(type='button' data-dismiss='modal') 取消 button.btn.btn-info#btn-save(type='button') 保存修改 .modal.animated.flipInY#file-modal(data-keyboard="false", data-backdrop="false") @@ -224,14 +224,14 @@ block content input#editable(type="hidden", value=editable.toString()) script. const topPath = '#{staticDirPath}'; - script(src='/noginx/static/jquery/dist/jquery.min.js') - script(src='/noginx/static/popper.js/dist/umd/popper.min.js') - script(src='/noginx/static/bootstrap/dist/js/bootstrap.min.js') - script(src='/noginx/static/switchery/dist/switchery.min.js') - script(src='/noginx/static/sortablejs/Sortable.min.js') - script(src='/noginx/static/js/search.js') - script(src='/noginx/static/sweetalert/dist/sweetalert.min.js') - script(src='/noginx/static/tippy.js/umd/index.all.min.js') - script(src='/noginx/static/select2/dist/js/select2.js') - script(src='/noginx/static/monaco-editor/min/vs/loader.js') - script(src='/noginx/static/js/index.js') + script(src='/node-proxy/static/jquery/dist/jquery.min.js') + script(src='/node-proxy/static/popper.js/dist/umd/popper.min.js') + script(src='/node-proxy/static/bootstrap/dist/js/bootstrap.min.js') + script(src='/node-proxy/static/@flexem/switchery/dist/switchery.min.js') + script(src='/node-proxy/static/sortablejs/Sortable.min.js') + script(src='/node-proxy/static/js/search.js') + script(src='/node-proxy/static/sweetalert/dist/sweetalert.min.js') + script(src='/node-proxy/static/tippy.js/umd/index.all.min.js') + script(src='/node-proxy/static/select2/dist/js/select2.js') + script(src='/node-proxy/static/monaco-editor/min/vs/loader.js') + script(src='/node-proxy/static/js/index.js') diff --git a/web/views/server-list.pug b/web/views/server-list.pug index 9b68348..c85ecf2 100644 --- a/web/views/server-list.pug +++ b/web/views/server-list.pug @@ -1,13 +1,13 @@ extends layout.pug block styles - link(rel='stylesheet', href='/noginx/static/css/animate.min.css') - link(rel='stylesheet', href='/noginx/static/tippy.js/themes/light-border.css') - link(rel='stylesheet', href='/noginx/static/css/index.css') + link(rel='stylesheet', href='/node-proxy/static/css/animate.min.css') + link(rel='stylesheet', href='/node-proxy/static/tippy.js/themes/light-border.css') + link(rel='stylesheet', href='/node-proxy/static/css/index.css') block content .main-content .col.btn-line - a(href="/noginx/servers/") 服务器 + a(href="/node-proxy/servers/") 服务器 if (editable) button.btn.btn-info.mr-2#btn-new-server i.iconfont.icon-add1 @@ -46,15 +46,15 @@ block content label(for='input-remarks') 备注 textarea.form-control#input-remarks(rows='3', placeholder='备注信息', spellcheck="false") .modal-footer - a.btn.btn-link.btn-howto.text-info(href="/noginx/help/#如何创建服务器?", target="_blank") 如何配置? + a.btn.btn-link.btn-howto.text-info(href="/node-proxy/help/#如何创建服务器?", target="_blank") 如何配置? button.btn.btn-default(type='button' data-dismiss='modal') 取消 button.btn.btn-info#btn-save(type='button') 保存修改 input#uid(type="hidden") - script(src='/noginx/static/jquery/dist/jquery.min.js') - script(src='/noginx/static/popper.js/dist/umd/popper.min.js') - script(src='/noginx/static/bootstrap/dist/js/bootstrap.min.js') - script(src='/noginx/static/sweetalert/dist/sweetalert.min.js') - script(src='/noginx/static/tippy.js/umd/index.all.min.js') - script(src='/noginx/static/echarts/dist/echarts.min.js') - script(src='/noginx/static/js/search.js') - script(src='/noginx/static/js/servers.js') + script(src='/node-proxy/static/jquery/dist/jquery.min.js') + script(src='/node-proxy/static/popper.js/dist/umd/popper.min.js') + script(src='/node-proxy/static/bootstrap/dist/js/bootstrap.min.js') + script(src='/node-proxy/static/sweetalert/dist/sweetalert.min.js') + script(src='/node-proxy/static/tippy.js/umd/index.all.min.js') + script(src='/node-proxy/static/echarts/dist/echarts.min.js') + script(src='/node-proxy/static/js/search.js') + script(src='/node-proxy/static/js/servers.js') diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..8d2eb8c --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2455 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@flexem/switchery@0.8.2": + version "0.8.2" + resolved "https://registry.yarnpkg.com/@flexem/switchery/-/switchery-0.8.2.tgz#ba12f421e12835b539a2a1f84f8562f759437b32" + integrity sha512-JEWDO3iz9tzwgkyC0dQoP7nQx594OTlTdcez6ITXBp/NKtpit5NEyt/1qpfDTONK/SHJvk7ztdUFeggz95RH2Q== + +"@types/babel-types@*", "@types/babel-types@^7.0.0": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.9.tgz#01d7b86949f455402a94c788883fe4ba574cad41" + integrity sha512-qZLoYeXSTgQuK1h7QQS16hqLGdmqtRmN8w/rl3Au/l5x/zkHx+a4VHrHyBsi1I1vtK2oBHxSzKIu0R5p6spdOA== + +"@types/babylon@^6.16.2": + version "6.16.5" + resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz#1c5641db69eb8cdf378edd25b4be7754beeb48b4" + integrity sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w== + dependencies: + "@types/babel-types" "*" + +"@types/bson@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.0.3.tgz#30889d2ffde6262abbe38659364c631454999fbf" + integrity sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw== + dependencies: + "@types/node" "*" + +"@types/mongodb@^3.5.27": + version "3.6.10" + resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.10.tgz#80cceaabeec9f460e5b46844e938e8eba74f9266" + integrity sha512-BkwAHFiZSSWdTIqbUVGmgvIsiXXjqAketeK7Izy7oSs6G3N8Bn993tK9eq6QEovQDx6OQ2FGP2KWDDxBzdlJ6Q== + dependencies: + "@types/bson" "*" + "@types/node" "*" + +"@types/node@*": + version "14.14.35" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313" + integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== + +accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" + integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8= + dependencies: + acorn "^4.0.4" + +acorn@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= + +acorn@^4.0.4, acorn@~4.0.2: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= + +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64url@3.x.x: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bl@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" + integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bluebird@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== + +bluebird@^3.3.4: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +blueimp-md5@^2.10.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.18.0.tgz#1152be1335f0c6b3911ed9e36db54f3e6ac52935" + integrity sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +bootstrap@^4.1.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.0.tgz#97b9f29ac98f98dfa43bf7468262d84392552fd7" + integrity sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw== + +bootswatch@^4.1.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/bootswatch/-/bootswatch-4.6.0.tgz#295237ed0e118decb3e3543f2ac14e9bb8ae48ea" + integrity sha512-Yr6YqFBC8jwTzoJoLViYlvO97IhPWGqZEm+6FXHfD/G6gbUok6sZkdXxdh4Zb6iCGEwr9p7zGCn38yKQD/bh2Q== + +bowser@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.9.0.tgz#3bed854233b419b9a7422d9ee3e85504373821c9" + integrity sha512-2ld76tuLBNFekRgmJfT2+3j5MIrP6bFict8WAIT3beq+srz1gcKNAdNKMqHqauQt63NmAa88HfP1/Ypa9Er3HA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +bson@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.6.tgz#fb819be9a60cd677e0853aee4ca712a785d6618a" + integrity sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg== + +bson@~1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.9.tgz#12319f8323b1254739b7c6bef8d3e89ae05a2f57" + integrity sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg== + +buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelize@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai@^4.1.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" + integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.1" + type-detect "^4.0.5" + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +character-parser@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" + integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= + dependencies: + is-regex "^1.0.3" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +cheerio-select-tmp@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz#55bbef02a4771710195ad736d5e346763ca4e646" + integrity sha512-YYs5JvbpU19VYJyj+F7oYrIE2BOll1/hRU7rEy/5+v9BzkSo3bK81iAeeQEMI92vRIxz677m72UmJUiVwwgjfQ== + dependencies: + css-select "^3.1.2" + css-what "^4.0.0" + domelementtype "^2.1.0" + domhandler "^4.0.0" + domutils "^2.4.4" + +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.5" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.5.tgz#88907e1828674e8f9fee375188b27dadd4f0fa2f" + integrity sha512-yoqps/VCaZgN4pfXtenwHROTp8NG6/Hlt4Jpz2FEP0ZJQ+ZUkVDd0hAPDNKhj3nakpfPt/CNs57yEtxD1bXQiw== + dependencies: + cheerio-select-tmp "^0.1.0" + dom-serializer "~1.2.0" + domhandler "^4.0.0" + entities "~2.1.0" + htmlparser2 "^6.0.0" + parse5 "^6.0.0" + parse5-htmlparser2-tree-adapter "^6.0.0" + +clean-css@^4.1.11: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cluster-key-slot@^1.0.6: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" + integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +connect-ensure-login@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/connect-ensure-login/-/connect-ensure-login-0.1.1.tgz#174dcc51243b9eac23f8d98215aeb6694e2e8a12" + integrity sha1-F03MUSQ7nqwj+NmCFa62aU4uihI= + +connect-mongo@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/connect-mongo/-/connect-mongo-2.0.3.tgz#db6cabe1e3add5acc9ef9c486681027675a58ee5" + integrity sha512-Vs+QZ/6X6gbCrP1Ls7Oh/wlyY6pgpbPSrUKF5yRT+zd+4GZPNbjNquxquZ+Clv2+03HBXE7T4lVM0PUcaBhihg== + dependencies: + mongodb "^2.0.36" + +constantinople@^3.0.1, constantinople@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647" + integrity sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw== + dependencies: + "@types/babel-types" "^7.0.0" + "@types/babylon" "^6.16.2" + babel-types "^6.26.0" + babylon "^6.18.0" + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-security-policy-builder@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/content-security-policy-builder/-/content-security-policy-builder-2.1.0.tgz#0a2364d769a3d7014eec79ff7699804deb8cfcbb" + integrity sha512-/MtLWhJVvJNkA9dVLAp6fg9LxD2gfI6R2Fi1hPmfjYXSahJJzcfvoeDOxSyp4NvxMuwWv3WMssE9o31DoULHrQ== + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie-parser@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" + integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== + dependencies: + cookie "0.4.0" + cookie-signature "1.0.6" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cron-parser@^2.18.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.18.0.tgz#de1bb0ad528c815548371993f81a54e5a089edcf" + integrity sha512-s4odpheTyydAbTBQepsqd2rNWGa2iV3cyo8g7zbI2QQYGLVsfbhmwukayS1XHppe02Oy1fg7mg6xoaraVJeEcg== + dependencies: + is-nan "^1.3.0" + moment-timezone "^0.5.31" + +css-select@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-3.1.2.tgz#d52cbdc6fee379fba97fb0d3925abbd18af2d9d8" + integrity sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA== + dependencies: + boolbase "^1.0.0" + css-what "^4.0.0" + domhandler "^4.0.0" + domutils "^2.4.3" + nth-check "^2.0.0" + +css-what@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" + integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +dasherize@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dasherize/-/dasherize-2.0.0.tgz#6d809c9cd0cf7bb8952d80fc84fa13d47ddb1308" + integrity sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg= + +debug@2.6.9, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +denque@^1.1.0, denque@^1.4.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" + integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== + +depd@2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +doctypes@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" + integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= + +dom-serializer@^1.0.1, dom-serializer@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" + integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + +domhandler@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" + integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== + dependencies: + domelementtype "^2.1.0" + +domutils@^2.4.3, domutils@^2.4.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.5.0.tgz#42f49cffdabb92ad243278b331fd761c1c2d3039" + integrity sha512-Ho16rzNMOFk2fPwChGh3D2D9OEHAfG19HgmRR2l+WLSsIstNsAYBzePH412bL0y5T44ejABIVfTHQ8nqi/tBCg== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.0.1" + domhandler "^4.0.0" + +dont-sniff-mimetype@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz#c7d0427f8bcb095762751252af59d148b0a623b2" + integrity sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug== + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +echarts@^4.1.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/echarts/-/echarts-4.9.0.tgz#a9b9baa03f03a2a731e6340c55befb57a9e1347d" + integrity sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA== + dependencies: + zrender "4.3.2" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +encodeurl@^1.0.2, encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + +es6-promise@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.2.1.tgz#ec56233868032909207170c39448e24449dd1fc4" + integrity sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q= + +escape-html@^1.0.3, escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +express-session@^1.15.6: + version "1.17.1" + resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.1.tgz#36ecbc7034566d38c8509885c044d461c11bf357" + integrity sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q== + dependencies: + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~2.0.0" + on-headers "~1.0.2" + parseurl "~1.3.3" + safe-buffer "5.2.0" + uid-safe "~2.1.5" + +express@^4.16.3: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +feature-policy@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/feature-policy/-/feature-policy-0.3.0.tgz#7430e8e54a40da01156ca30aaec1a381ce536069" + integrity sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ== + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flexbuffer@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/flexbuffer/-/flexbuffer-0.0.6.tgz#039fdf23f8823e440c38f3277e6fef1174215b30" + integrity sha1-A5/fI/iCPkQMOPMnfm/vEXQhWzA= + +follow-redirects@^1.0.0: + version "1.13.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" + integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= + +helmet-crossdomain@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/helmet-crossdomain/-/helmet-crossdomain-0.4.0.tgz#5f1fe5a836d0325f1da0a78eaa5fd8429078894e" + integrity sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA== + +helmet-csp@2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-2.10.0.tgz#685dde1747bc16c5e28ad9d91e229a69f0a85e84" + integrity sha512-Rz953ZNEFk8sT2XvewXkYN0Ho4GEZdjAZy4stjiEQV3eN7GDxg1QKmYggH7otDyIA7uGA6XnUMVSgeJwbR5X+w== + dependencies: + bowser "2.9.0" + camelize "1.0.0" + content-security-policy-builder "2.1.0" + dasherize "2.0.0" + +helmet@^3.12.1: + version "3.23.3" + resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.23.3.tgz#5ba30209c5f73ded4ab65746a3a11bedd4579ab7" + integrity sha512-U3MeYdzPJQhtvqAVBPntVgAvNSOJyagwZwyKsFdyRa8TV3pOKVFljalPOCxbw5Wwf2kncGhmP0qHjyazIdNdSA== + dependencies: + depd "2.0.0" + dont-sniff-mimetype "1.1.0" + feature-policy "0.3.0" + helmet-crossdomain "0.4.0" + helmet-csp "2.10.0" + hide-powered-by "1.1.0" + hpkp "2.0.0" + hsts "2.2.0" + nocache "2.1.0" + referrer-policy "1.2.0" + x-xss-protection "1.3.0" + +hide-powered-by@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hide-powered-by/-/hide-powered-by-1.1.0.tgz#be3ea9cab4bdb16f8744be873755ca663383fa7a" + integrity sha512-Io1zA2yOA1YJslkr+AJlWSf2yWFkKjvkcL9Ni1XSUqnGLr/qRQe2UI3Cn/J9MsJht7yEVCe0SscY1HgVMujbgg== + +hpkp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hpkp/-/hpkp-2.0.0.tgz#10e142264e76215a5d30c44ec43de64dee6d1672" + integrity sha1-EOFCJk52IVpdMMROxD3mTe5tFnI= + +hsts@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hsts/-/hsts-2.2.0.tgz#09119d42f7a8587035d027dda4522366fe75d964" + integrity sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ== + dependencies: + depd "2.0.0" + +htmlparser2@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.0.1.tgz#422521231ef6d42e56bd411da8ba40aa36e91446" + integrity sha512-GDKPd+vk4jvSuvCbyuzx/unmXkk090Azec7LovXP8as1Hn8q9p3hbjmDGbUqqhknw0ajwit6LiiWqfiTUPMK7w== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.4.4" + entities "^2.0.0" + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ioredis@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" + integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== + dependencies: + bluebird "^3.3.4" + cluster-key-slot "^1.0.6" + debug "^2.6.9" + denque "^1.1.0" + flexbuffer "0.0.6" + lodash.assign "^4.2.0" + lodash.bind "^4.2.1" + lodash.clone "^4.5.0" + lodash.clonedeep "^4.5.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.foreach "^4.5.0" + lodash.isempty "^4.4.0" + lodash.keys "^4.2.0" + lodash.noop "^3.0.1" + lodash.partial "^4.2.1" + lodash.pick "^4.4.0" + lodash.sample "^4.2.1" + lodash.shuffle "^4.2.0" + lodash.values "^4.3.0" + redis-commands "^1.2.0" + redis-parser "^2.4.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-core-module@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + +is-expression@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" + integrity sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8= + dependencies: + acorn "~4.0.2" + object-assign "^4.0.1" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-nan@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-promise@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-regex@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +"jquery@1.9.1 - 3": + version "3.6.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" + integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== + +js-stringify@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" + integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jstransformer@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" + integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= + dependencies: + is-promise "^2.0.0" + promise "^7.0.1" + +kareem@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.2.tgz#78c4508894985b8d38a0dc15e1a8e11078f2ca93" + integrity sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ== + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= + +lodash.bind@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" + integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= + +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.foreach@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= + +lodash.isempty@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= + +lodash.keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" + integrity sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU= + +lodash.noop@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c" + integrity sha1-OBiPTWUKOkdCWEObluxFsyYXEzw= + +lodash.partial@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.partial/-/lodash.partial-4.2.1.tgz#49f3d8cfdaa3bff8b3a91d127e923245418961d4" + integrity sha1-SfPYz9qjv/izqR0SfpIyRUGJYdQ= + +lodash.pick@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + +lodash.sample@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.sample/-/lodash.sample-4.2.1.tgz#5e4291b0c753fa1abeb0aab8fb29df1b66f07f6d" + integrity sha1-XkKRsMdT+hq+sKq4+ynfG2bwf20= + +lodash.shuffle@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.shuffle/-/lodash.shuffle-4.2.0.tgz#145b5053cf875f6f5c2a33f48b6e9948c6ec7b4b" + integrity sha1-FFtQU8+HX29cKjP0i26ZSMbse0s= + +lodash.values@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" + integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c= + +lodash@^4.17.19, lodash@^4.17.4: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +long-timeout@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/long-timeout/-/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514" + integrity sha1-lyHXiLR+C8taJMLivuGg2lXatRQ= + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +lru-cache@^4.1.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +mime-db@1.46.0: + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.29" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" + integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== + dependencies: + mime-db "1.46.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mocha@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + +moment-timezone@^0.5.31: + version "0.5.33" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" + integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== + dependencies: + moment ">= 2.9.0" + +"moment@>= 2.9.0", moment@^2.24.0: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + +monaco-editor@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.13.1.tgz#6b9ce20e4d1c945042d256825eb133cb23315a52" + integrity sha512-0Kssg/O3cl1tXP0qAIxhrtMbRnzusFUEvFyt5/fpUbmuVeY3z+TnUx13+3kW16pgacFPXGUTEO/hOPlDeFU/dw== + +mongodb-core@2.1.20: + version "2.1.20" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.20.tgz#fece8dd76b59ee7d7f2d313b65322c160492d8f1" + integrity sha512-IN57CX5/Q1bhDq6ShAR6gIv4koFsZP7L8WOK1S0lR0pVDQaScffSMV5jxubLsmZ7J+UdqmykKw4r9hG3XQEGgQ== + dependencies: + bson "~1.0.4" + require_optional "~1.0.0" + +mongodb@3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.5.tgz#c27d786fd4d3c83dc19302483707d12a9d2aee5f" + integrity sha512-mQlYKw1iGbvJJejcPuyTaytq0xxlYbIoVDm2FODR+OHxyEiMR021vc32bTvamgBjCswsD54XIRwhg3yBaWqJjg== + dependencies: + bl "^2.2.1" + bson "^1.1.4" + denque "^1.4.1" + require_optional "^1.0.1" + safe-buffer "^5.1.2" + optionalDependencies: + saslprep "^1.0.0" + +mongodb@^2.0.36: + version "2.2.36" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.36.tgz#1c573680b2849fb0f47acbba3dc5fa228de975f5" + integrity sha512-P2SBLQ8Z0PVx71ngoXwo12+FiSfbNfGOClAao03/bant5DgLNkOPAck5IaJcEk4gKlQhDEURzfR3xuBG1/B+IA== + dependencies: + es6-promise "3.2.1" + mongodb-core "2.1.20" + readable-stream "2.2.7" + +mongoose-legacy-pluralize@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" + integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== + +mongoose@^5.2.2: + version "5.12.2" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.12.2.tgz#3274630dfb9a8e63dbda0c6e7124fd475623c6ff" + integrity sha512-kT9t6Nvu9WPsfssn7Gzke446Il8UdMilY7Sa5vALtwoOoNOGtZEVjekZBFwsBFzTWtBA/x5gBmJoYFP+1LeDlg== + dependencies: + "@types/mongodb" "^3.5.27" + bson "^1.1.4" + kareem "2.3.2" + mongodb "3.6.5" + mongoose-legacy-pluralize "1.0.2" + mpath "0.8.3" + mquery "3.2.4" + ms "2.1.2" + regexp-clone "1.0.0" + safe-buffer "5.2.1" + sift "7.0.1" + sliced "1.0.1" + +mpath@0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.8.3.tgz#828ac0d187f7f42674839d74921970979abbdd8f" + integrity sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA== + +mquery@3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.4.tgz#9c5c2e285ea6c6f20673f3528973c99ee1aaa1a0" + integrity sha512-uOLpp7iRX0BV1Uu6YpsqJ5b42LwYnmu0WeF/f8qgD/On3g0XDaQM6pfn0m6UxO6SM8DioZ9Bk6xxbWIGHm2zHg== + dependencies: + bluebird "3.5.1" + debug "3.1.0" + regexp-clone "^1.0.0" + safe-buffer "5.1.2" + sliced "1.0.1" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanoid@^2.1.0: + version "2.1.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" + integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +nocache@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f" + integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q== + +node-schedule@^1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/node-schedule/-/node-schedule-1.3.3.tgz#f8e01c5fb9597f09ecf9c4c25d6938e5e7a06f48" + integrity sha512-uF9Ubn6luOPrcAYKfsXWimcJ1tPFtQ8I85wb4T3NgJQrXazEzojcFZVk46ZlLHby3eEJChgkV/0T689IsXh2Gw== + dependencies: + cron-parser "^2.18.0" + long-timeout "0.1.1" + sorted-array-functions "^1.3.0" + +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +oauth@0.9.x: + version "0.9.15" + resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1" + integrity sha1-vR/vr2hslrdUda7VGWQS/2DPucE= + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@^6.0.0, parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@^1.3.2, parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +passport-gitlab2@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/passport-gitlab2/-/passport-gitlab2-5.0.0.tgz#ea37e5285321c026a02671e87469cac28cce9b69" + integrity sha512-cXQMgM6JQx9wHVh7JLH30D8fplfwjsDwRz+zS0pqC8JS+4bNmc1J04NGp5g2M4yfwylH9kQRrMN98GxMw7q7cg== + dependencies: + passport-oauth2 "^1.4.0" + +passport-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-local/-/passport-local-1.0.0.tgz#1fe63268c92e75606626437e3b906662c15ba6ee" + integrity sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4= + dependencies: + passport-strategy "1.x.x" + +passport-oauth2@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/passport-oauth2/-/passport-oauth2-1.5.0.tgz#64babbb54ac46a4dcab35e7f266ed5294e3c4108" + integrity sha512-kqBt6vR/5VlCK8iCx1/KpY42kQ+NEHZwsSyt4Y6STiNjU+wWICG1i8ucc1FapXDGO15C5O5VZz7+7vRzrDPXXQ== + dependencies: + base64url "3.x.x" + oauth "0.9.x" + passport-strategy "1.x.x" + uid2 "0.0.x" + utils-merge "1.x.x" + +passport-strategy@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" + integrity sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ= + +passport@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.1.tgz#941446a21cb92fc688d97a0861c38ce9f738f270" + integrity sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg== + dependencies: + passport-strategy "1.x.x" + pause "0.0.1" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pause@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" + integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +popper.js@^1.14.3, popper.js@^1.14.7: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise-polyfill@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" + integrity sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc= + +promise@^7.0.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +pug-attrs@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz#b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336" + integrity sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ== + dependencies: + constantinople "^3.0.1" + js-stringify "^1.0.1" + pug-runtime "^2.0.5" + +pug-code-gen@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.3.tgz#122eb9ada9b5bf601705fe15aaa0a7d26bc134ab" + integrity sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA== + dependencies: + constantinople "^3.1.2" + doctypes "^1.1.0" + js-stringify "^1.0.1" + pug-attrs "^2.0.4" + pug-error "^1.3.3" + pug-runtime "^2.0.5" + void-elements "^2.0.1" + with "^5.0.0" + +pug-error@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz#f342fb008752d58034c185de03602dd9ffe15fa6" + integrity sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ== + +pug-filters@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz#ab2cc82db9eeccf578bda89130e252a0db026aa7" + integrity sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg== + dependencies: + clean-css "^4.1.11" + constantinople "^3.0.1" + jstransformer "1.0.0" + pug-error "^1.3.3" + pug-walk "^1.1.8" + resolve "^1.1.6" + uglify-js "^2.6.1" + +pug-lexer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz#531cde48c7c0b1fcbbc2b85485c8665e31489cfd" + integrity sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA== + dependencies: + character-parser "^2.1.1" + is-expression "^3.0.0" + pug-error "^1.3.3" + +pug-linker@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz#f5bf218b0efd65ce6670f7afc51658d0f82989fb" + integrity sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg== + dependencies: + pug-error "^1.3.3" + pug-walk "^1.1.8" + +pug-load@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz#d38c85eb85f6e2f704dea14dcca94144d35d3e7b" + integrity sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg== + dependencies: + object-assign "^4.1.0" + pug-walk "^1.1.8" + +pug-parser@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz#03e7ada48b6840bd3822f867d7d90f842d0ffdc9" + integrity sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA== + dependencies: + pug-error "^1.3.3" + token-stream "0.0.1" + +pug-runtime@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz#6da7976c36bf22f68e733c359240d8ae7a32953a" + integrity sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw== + +pug-strip-comments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz#cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8" + integrity sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw== + dependencies: + pug-error "^1.3.3" + +pug-walk@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz#b408f67f27912f8c21da2f45b7230c4bd2a5ea7a" + integrity sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA== + +pug@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz#ee7682ec0a60494b38d48a88f05f3b0ac931377d" + integrity sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw== + dependencies: + pug-code-gen "^2.0.2" + pug-filters "^3.1.1" + pug-lexer "^4.1.0" + pug-linker "^3.0.6" + pug-load "^2.0.12" + pug-parser "^5.0.1" + pug-runtime "^2.0.5" + pug-strip-comments "^1.0.4" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +random-bytes@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" + integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.7.tgz#07057acbe2467b22042d36f98c5ad507054e95b1" + integrity sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE= + dependencies: + buffer-shims "~1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +readable-stream@^2.3.5: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +redis-commands@^1.2.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" + integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== + +redis-parser@^2.4.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" + integrity sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs= + +referrer-policy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/referrer-policy/-/referrer-policy-1.2.0.tgz#b99cfb8b57090dc454895ef897a4cc35ef67a98e" + integrity sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regexp-clone@1.0.0, regexp-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" + integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +require_optional@^1.0.1, require_optional@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" + integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== + dependencies: + resolve-from "^2.0.0" + semver "^5.1.0" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= + +resolve@^1.1.6: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + +safe-buffer@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saslprep@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" + integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== + dependencies: + sparse-bitfield "^3.0.3" + +select2@^4.0.7: + version "4.0.13" + resolved "https://registry.yarnpkg.com/select2/-/select2-4.0.13.tgz#0dbe377df3f96167c4c1626033e924372d8ef44d" + integrity sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw== + +semver@^5.1.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serve-favicon@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" + integrity sha1-k10kDN/g9YBTB/3+ln2IlCosvPA= + dependencies: + etag "~1.8.1" + fresh "0.5.2" + ms "2.1.1" + parseurl "~1.3.2" + safe-buffer "5.1.1" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +serverlog-node@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/serverlog-node/-/serverlog-node-1.0.2.tgz#f01b6fac50c2bbe7a104a27f0de59a6922bb9118" + integrity sha512-Q4R4g+R55rUOn1y6saku4qx/tAirSZqWw4/9mnEzwYticbfBMOm2ym3LH/Njft6LPCb8dZnaSjTawOaOGlvWog== + dependencies: + chalk "^2.4.2" + json-stringify-safe "^5.0.1" + lz-string "^1.4.4" + moment "^2.24.0" + shortid "^2.2.14" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +shortid@^2.2.14: + version "2.2.16" + resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.16.tgz#b742b8f0cb96406fd391c76bfc18a67a57fe5608" + integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g== + dependencies: + nanoid "^2.1.0" + +showdown@^1.8.6: + version "1.9.1" + resolved "https://registry.yarnpkg.com/showdown/-/showdown-1.9.1.tgz#134e148e75cd4623e09c21b0511977d79b5ad0ef" + integrity sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA== + dependencies: + yargs "^14.2" + +sift@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08" + integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g== + +sliced@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" + integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= + +sortablejs@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.13.0.tgz#3ab2473f8c69ca63569e80b1cd1b5669b51269e9" + integrity sha512-RBJirPY0spWCrU5yCmWM1eFs/XgX2J5c6b275/YyxFRgnzPhKl/TDeU2hNR8Dt7ITq66NRPM4UlOt+e5O4CFHg== + +sorted-array-functions@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz#8605695563294dffb2c9796d602bd8459f7a0dd5" + integrity sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA== + +source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE= + dependencies: + memory-pager "^1.0.2" + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string_decoder@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +supports-color@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== + dependencies: + has-flag "^3.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +sweetalert@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.2.tgz#010baaa80d0dbdc86f96bfcaa96b490728594b79" + integrity sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA== + dependencies: + es6-object-assign "^1.1.0" + promise-polyfill "^6.0.2" + +tippy.js@^4.3.1: + version "4.3.5" + resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-4.3.5.tgz#882bff8d92f09bb0546d2826d5668c0560006f54" + integrity sha512-NDq3efte8nGK6BOJ1dDN1/WelAwfmh3UtIYXXck6+SxLzbIQNZE/cmRSnwScZ/FyiKdIcvFHvYUgqmoGx8CcyA== + dependencies: + popper.js "^1.14.7" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +token-stream@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" + integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +uglify-js@^2.6.1: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +uid-safe@~2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" + integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== + dependencies: + random-bytes "~1.0.0" + +uid2@0.0.x: + version "0.0.3" + resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" + integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I= + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1, utils-merge@1.x.x: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +void-elements@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + +with@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" + integrity sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4= + dependencies: + acorn "^3.1.0" + acorn-globals "^3.0.0" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +x-xss-protection@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/x-xss-protection/-/x-xss-protection-1.3.0.tgz#3e3a8dd638da80421b0e9fff11a2dbe168f6d52c" + integrity sha512-kpyBI9TlVipZO4diReZMAHWtS0MMa/7Kgx8hwG/EuZLiA6sg4Ah/4TRdASHhRRN3boobzcYgFRUFSgHRge6Qhg== + +y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^14.2: + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== + dependencies: + cliui "^5.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^15.0.1" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +zrender@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/zrender/-/zrender-4.3.2.tgz#ec7432f9415c82c73584b6b7b8c47e1b016209c6" + integrity sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==