├── .editorconfig ├── .env.example ├── .eslintrc ├── .gitignore ├── .nvmrc ├── .sequelizerc ├── JWT.postman_collection.json ├── LICENSE ├── README.md ├── config ├── crypto.js ├── database.js ├── dotenv-loader.js ├── index.js └── server.js ├── db └── migrations │ ├── 20191120172934-create-user.js │ ├── 20191120191110-users-rename-table.js │ ├── 20191120201051-users-index-email.js │ ├── 20201114163000-add-role.js │ └── 20201114184100-create-refresh-token.js ├── package-lock.json ├── package.json └── src ├── handlers ├── auth.js └── users.js ├── index.js ├── middlewares ├── auth.js └── error.js ├── models ├── index.js └── user.js ├── routes.js └── services ├── auth.js ├── crypto.js ├── token.js └── user.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | indent_style = space 9 | 10 | [*.{js,jsx,html,json,yml}] 11 | indent_size = 2 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | JWT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA3POpb9/1PwBK9A3vBfXXTJuGhTMy8CreeFXEM19/WB6bLqhI\nXE7IzH40KNnfWnQn1twMshViJBN9eHAiYErnF5dJrzjWtIp9xrFhmquYvz/2RyeV\nflWXH/ZmfO1v15nF7tKjN3+WTM4rAY9wGsslGahvs6ET0rp2PG0PLJXXEvYNxHp1\nOpP21xrWepb3RXCxlCqARq//UNENgFyazpsx9Q/V15xvlmUT74mYOGMMEhy/Xw71\nSEMr/rOElXj2cGZ65fgeBl+vi7Fj/0Z7jk23Ka4iuaXxElys8cieok77KJrhwFoR\nae4cJgjY86SfYgipc5PwepOtu1S5k3NRtIEVAQIDAQABAoIBAQDDAkM/PFkF28pL\nkKiviAUX1gRqN3/zvMJRTtE1zklkis7H5TrITbin05NRosmg2ff3iIuj+X9++7y3\nubB9cF550cr03aOSANF1tkTA8EaGNXu13VfyArS5Pw3BoQYfMdciK8JmTzNmYmhO\nnjyBSV5bQPAliDsot+1284J7BVynm+Mq+cT+ZrzQ9O1LxW8jRAaQWHWaAEscNRB5\n+F5huHZzTqnxHzv5KyU4fM4h6YTEs9jGSbRZ+sMh2f7fcod6eNmV0eqdiMhsrf3h\nmAnen8VAdzNbc272Y7SkMqVZnIeiN7BmB/CiWNqCXN8DIREq4kp6IWg0xcO3qSxr\nZu7QqzRhAoGBAPMjKnEJ71MvRjMRPagVsZ00RLl1J0i4ddQTr79iXzbTTfS0je5I\nXb/ibBbHSw5ScNopS6mo1x5QG36Q67KAcURoexjOjXEusE+pfODxrihxprlxMooo\ntp8dPdE+wbN/DbFSwzZKswfJdYnN3pUQ1godDcRHzM9stJ5F2jdJ/xz1AoGBAOik\nCOSiCNpTNaJWXhpY/XwdaG2OUI/gJtZBHL21DbHXP2ZdZJwNh7q3AXy9BCtTPETV\nlkgcKgYRG7dERNz81ev9xzspqUTvAtssM9y0WzSJZW0Kxwo1qgGUdYQWOVVw6909\ntX0dnPm9OtkZ7f7dAP5nQ2BQ/OEZE9ni8mFmS1BdAoGBAKjkAJNM52XNLOJEU6Py\njdI5gJOjAYrON2r90dMLrkATP89/rCedNSIZUiPwg/6K3cFtdhWAJw3zb2XXnSH9\nfrCaMwfkUvQQDoEHpqtKtkN5zup56zV1WoXkdhBnm33n/8bxSpDoCryaAH+c9cRu\nUX/s9qcliOt9A2n987r8N64RAoGBAKaE85Cjou6TbOqcI5N8a0Sx0BPLMEMr0OC/\njpEDzZ+kUM82vlMtJCAz6i6dJSTV2Wfz8jP/ZN0e1dXiWeBMYdsftcHVWkHrSwIS\nq7SorDf4uM7KThoyu1OSLmOzfKp5v3qHNyctUTU5i6vmcYJiMtnmlEWW8ss0pg7p\n8VBiZjpJAoGAGx45CeXakGjzCmGCGzenMOj1WDHweOHlletdqgqQMmHrbVdUUCiK\nl/B2AhV7k67z9OB6C8KGlEks/Jp3Qo429JCcJS8wIKtUNoXp9oApdcuo2ks7pxda\no5N3LZFWr1C5HWRcmQf3UdLtK6zwul+m7Qni8+ZUi2TZ+3P6hld+rdw=\n-----END RSA PRIVATE KEY-----\n" 2 | JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3POpb9/1PwBK9A3vBfXX\nTJuGhTMy8CreeFXEM19/WB6bLqhIXE7IzH40KNnfWnQn1twMshViJBN9eHAiYErn\nF5dJrzjWtIp9xrFhmquYvz/2RyeVflWXH/ZmfO1v15nF7tKjN3+WTM4rAY9wGssl\nGahvs6ET0rp2PG0PLJXXEvYNxHp1OpP21xrWepb3RXCxlCqARq//UNENgFyazpsx\n9Q/V15xvlmUT74mYOGMMEhy/Xw71SEMr/rOElXj2cGZ65fgeBl+vi7Fj/0Z7jk23\nKa4iuaXxElys8cieok77KJrhwFoRae4cJgjY86SfYgipc5PwepOtu1S5k3NRtIEV\nAQIDAQAB\n-----END PUBLIC KEY-----\n" -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ "standard" ], 3 | "plugins": [ "json" ], 4 | "rules": { 5 | "no-unused-expressions": "off", 6 | "complexity": ["error", 7], 7 | "eqeqeq": "error", 8 | "max-statements": [ "error", { "max": 15 } ], 9 | "comma-dangle": ["error", { 10 | "arrays": "always-multiline", 11 | "objects": "always-multiline", 12 | "imports": "always-multiline", 13 | "exports": "always", 14 | "functions": "never" 15 | }] 16 | }, 17 | "globals": { 18 | "it": true, 19 | "describe": true, 20 | "expect": true, 21 | "sinon": true, 22 | "before": true, 23 | "beforeEach": true, 24 | "after": true, 25 | "afterEach": true, 26 | "context": true 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | lts/erbium 2 | -------------------------------------------------------------------------------- /.sequelizerc: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | module.exports = { 4 | 'config': path.resolve('config', 'index.js'), 5 | 'migrations-path': path.resolve('db', 'migrations'), 6 | 'seeders-path': path.resolve('db', 'seeders'), 7 | 'models-path': path.resolve('src', 'models'), 8 | } -------------------------------------------------------------------------------- /JWT.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "39a3df59-e70f-42cf-b9ec-7a2434511ea5", 4 | "name": "JWT", 5 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" 6 | }, 7 | "item": [ 8 | { 9 | "name": "List users", 10 | "request": { 11 | "method": "GET", 12 | "header": [], 13 | "url": { 14 | "raw": "localhost:3000/users", 15 | "host": [ 16 | "localhost" 17 | ], 18 | "port": "3000", 19 | "path": [ 20 | "users" 21 | ] 22 | } 23 | }, 24 | "response": [] 25 | }, 26 | { 27 | "name": "Authenticate", 28 | "request": { 29 | "method": "POST", 30 | "header": [], 31 | "body": { 32 | "mode": "raw", 33 | "raw": "{\n \"email\": \"andre@kanayama.com\",\n \"password\": \"1234\"\n}", 34 | "options": { 35 | "raw": { 36 | "language": "json" 37 | } 38 | } 39 | }, 40 | "url": { 41 | "raw": "localhost:3000/auth", 42 | "host": [ 43 | "localhost" 44 | ], 45 | "port": "3000", 46 | "path": [ 47 | "auth" 48 | ] 49 | } 50 | }, 51 | "response": [] 52 | }, 53 | { 54 | "name": "Create user", 55 | "request": { 56 | "method": "POST", 57 | "header": [ 58 | { 59 | "key": "Authorization", 60 | "value": "Bearer ", 61 | "type": "text" 62 | } 63 | ], 64 | "body": { 65 | "mode": "raw", 66 | "raw": "{\n \"email\": \"teste@teste.com\",\n \"password\": \"1234\",\n \"name\": \"teste name\"\n}", 67 | "options": { 68 | "raw": { 69 | "language": "json" 70 | } 71 | } 72 | }, 73 | "url": { 74 | "raw": "localhost:3000/users", 75 | "host": [ 76 | "localhost" 77 | ], 78 | "port": "3000", 79 | "path": [ 80 | "users" 81 | ] 82 | } 83 | }, 84 | "response": [] 85 | } 86 | ], 87 | "protocolProfileBehavior": {} 88 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 André 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JWT - Autenticação e melhores práticas 2 | 3 | Repositório do Workshop de melhores práticas usando JWT. 4 | 5 | Na branch `complete` você encontra a versão final do projeto feita durante o workshop. 6 | 7 | Este projeto foi desenvolvido em um Mac, mas acredito que tudo rode em Linux, e no Windows com algumas modificações em alguns comandos. 8 | 9 | ## Requisitos 10 | 11 | Este projeto consiste de uma API feita em Node.js que consome um banco PostgreSQL. Há um arquivo `.nvmrc` no projeto caso queira realizar a instalação usando o [nvm](https://github.com/nvm-sh/nvm). 12 | 13 | O arquivo que possui o uso das libs do JWT em si, é o `src/services/token.js` 14 | 15 | ## Rodando o projeto 16 | 17 | Para rodar o projeto é necessário rodar um banco Postgres, sugiro o uso do docker. Pode ser usado o seguinte comando: 18 | 19 | `docker run --name db-jwt-example -p 5432:5432 -e POSTGRES_PASSWORD=password -d postgres` 20 | 21 | Caso queira rodar em outro local, lembre-se de editar a url no arquivo `config/database.js`. 22 | 23 | O próximo passo é instalar as depêndencias: 24 | 25 | `npm install` 26 | 27 | Depois é necessário rodar a migration para criar as tabelas no banco: 28 | 29 | `npm run sequelize:migrate` 30 | 31 | E então pode-se rodar com nodemon: 32 | 33 | `npm run dev` 34 | 35 | Para facilitar os testes dos endpoints, pode ser usado o arquivo `JWT.postman_collection.json` 36 | 37 | ## Comandos para criação de chaves privada e pública 38 | 39 | ``` 40 | openssl genrsa -out private-key.pem 2048 41 | openssl rsa -in private-key.pem -pubout -out public-key.pem 42 | ``` 43 | 44 | Caso queira usar chaves previamente geradas, copie o arquivo `.env.example` para o arquivo `.env`. Mas lembre-se: **Não** use essas chaves em produção, **apenas** para teste. 45 | 46 | ## Dúvidas 47 | 48 | Qualquer dúvida/problema referente ao projeto, sinta-se livre para abrir uma issue no projeto que eu vou responder assim que possível. 49 | 50 | ## Links e referências 51 | 52 | Escrevi um artigo em que falo de alguns conceitos abordados no workshop, ele pode ser acessado clicando [aqui](https://askanayama.medium.com/entendendo-a-autentica%C3%A7%C3%A3o-com-jwt-2c562697a240). 53 | 54 | - [jwt.io](https://jwt.io/) - Debugger e referências sobre JWT (em inglês) 55 | - [Melhores práticas ao usar JWT](https://auth0.com/blog/a-look-at-the-latest-draft-for-jwt-bcp/) (em inglês) 56 | - [RFC do JWT](https://tools.ietf.org/html/rfc7519) (em inglês) 57 | - [Claims do JWT](https://ldapwiki.com/wiki/JSON%20Web%20Token%20Claims) - Aqui você encontra as reserved claims com breves explicações e também as do - [OpenID Connect Standard Claims](https://ldapwiki.com/wiki/OpenID%20Connect%20Standard%20Claims) 58 | -------------------------------------------------------------------------------- /config/crypto.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | hashSaltRounds: 10, 3 | } 4 | -------------------------------------------------------------------------------- /config/database.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // For the sake of the example only, please use env vars 3 | url: 'postgresql://postgres:password@localhost/postgres', 4 | dialect: 'postgres', 5 | dialectOptions: { 6 | ssl: false, 7 | }, 8 | pool: { 9 | max: 15, 10 | min: 0, 11 | acquire: 10000, 12 | idle: 1000, 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /config/dotenv-loader.js: -------------------------------------------------------------------------------- 1 | const { join } = require('path') 2 | 3 | const DEV_ENVIRONMENTS = ['dev', 'development', 'local', 'debug'] 4 | const TEST_ENVIRONMENTS = ['test'] 5 | const DOTENV_ENVIRONMENTS = [...DEV_ENVIRONMENTS, ...TEST_ENVIRONMENTS] 6 | 7 | const loadDotEnv = nodeEnv => { 8 | const dotenv = require('dotenv') 9 | 10 | if (DEV_ENVIRONMENTS.includes(nodeEnv)) { 11 | return dotenv.config() 12 | } 13 | if (TEST_ENVIRONMENTS.includes(nodeEnv)) { 14 | return dotenv.config({ 15 | path: join(__dirname, 'test.env'), 16 | }) 17 | } 18 | } 19 | 20 | const load = nodeEnv => { 21 | if (!DOTENV_ENVIRONMENTS.includes(nodeEnv)) { 22 | console.info('Skipping dotenv configuration') 23 | return 24 | } 25 | loadDotEnv(nodeEnv) 26 | } 27 | 28 | module.exports = { 29 | load, 30 | } 31 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | require('./dotenv-loader').load(process.env.NODE_ENV) 2 | 3 | const database = require('./database') 4 | const server = require('./server') 5 | const crypto = require('./crypto') 6 | 7 | module.exports = { 8 | database, 9 | server, 10 | crypto, 11 | } 12 | -------------------------------------------------------------------------------- /config/server.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // For the sake of the example only, please use env vars 3 | port: 3000, 4 | } 5 | -------------------------------------------------------------------------------- /db/migrations/20191120172934-create-user.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | up: (queryInterface, Sequelize) => { 3 | return queryInterface.createTable('Users', { 4 | id: { 5 | allowNull: false, 6 | autoIncrement: true, 7 | primaryKey: true, 8 | type: Sequelize.INTEGER, 9 | }, 10 | name: { 11 | allowNull: false, 12 | type: Sequelize.STRING, 13 | }, 14 | email: { 15 | allowNull: false, 16 | type: Sequelize.STRING, 17 | unique: true, 18 | }, 19 | password: { 20 | allowNull: false, 21 | type: Sequelize.STRING, 22 | }, 23 | createdAt: { 24 | allowNull: false, 25 | type: Sequelize.DATE, 26 | }, 27 | updatedAt: { 28 | allowNull: false, 29 | type: Sequelize.DATE, 30 | }, 31 | }) 32 | }, 33 | down: (queryInterface, Sequelize) => { 34 | return queryInterface.dropTable('Users') 35 | }, 36 | } 37 | -------------------------------------------------------------------------------- /db/migrations/20191120191110-users-rename-table.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | up: (queryInterface, _Sequelize) => 3 | queryInterface.renameTable('Users', 'users'), 4 | down: (queryInterface, _Sequelize) => 5 | queryInterface.renameTable('users', 'Users'), 6 | } 7 | -------------------------------------------------------------------------------- /db/migrations/20191120201051-users-index-email.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | up: (queryInterface, _Sequelize) => 3 | queryInterface.addIndex('users', ['email'], { unique: true, name: 'users_email_unique' }), 4 | 5 | down: (queryInterface, _Sequelize) => 6 | queryInterface.removeIndex('users', 'users_email_unique'), 7 | } 8 | -------------------------------------------------------------------------------- /db/migrations/20201114163000-add-role.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | up: (queryInterface, Sequelize) => 3 | queryInterface.addColumn( 4 | 'users', 5 | 'role', 6 | { 7 | type: Sequelize.DataTypes.STRING, 8 | } 9 | ), 10 | 11 | down: (queryInterface, Sequelize) => 12 | queryInterface.removeColumn('users', 'role'), 13 | } -------------------------------------------------------------------------------- /db/migrations/20201114184100-create-refresh-token.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | up: (queryInterface, Sequelize) => { 3 | return queryInterface.createTable('tokens', { 4 | id: { 5 | allowNull: false, 6 | autoIncrement: true, 7 | primaryKey: true, 8 | type: Sequelize.INTEGER, 9 | }, 10 | user_id: { 11 | allowNull: false, 12 | type: Sequelize.INTEGER, 13 | }, 14 | token: { 15 | allowNull: false, 16 | type: Sequelize.STRING, 17 | unique: true, 18 | }, 19 | valid: { 20 | allowNull: false, 21 | type: Sequelize.BOOLEAN, 22 | }, 23 | createdAt: { 24 | allowNull: false, 25 | type: Sequelize.DATE, 26 | }, 27 | updatedAt: { 28 | allowNull: false, 29 | type: Sequelize.DATE, 30 | }, 31 | }) 32 | }, 33 | down: (queryInterface, Sequelize) => { 34 | return queryInterface.dropTable('tokens') 35 | }, 36 | } -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zero", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.5.5", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", 10 | "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/highlight": { 17 | "version": "7.5.0", 18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", 19 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", 20 | "dev": true, 21 | "requires": { 22 | "chalk": "^2.0.0", 23 | "esutils": "^2.0.2", 24 | "js-tokens": "^4.0.0" 25 | } 26 | }, 27 | "@types/node": { 28 | "version": "12.12.11", 29 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.11.tgz", 30 | "integrity": "sha512-O+x6uIpa6oMNTkPuHDa9MhMMehlxLAd5QcOvKRjAFsBVpeFWTOPnXbDvILvFgFFZfQ1xh1EZi1FbXxUix+zpsQ==" 31 | }, 32 | "abbrev": { 33 | "version": "1.1.1", 34 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 35 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 36 | }, 37 | "accepts": { 38 | "version": "1.3.7", 39 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 40 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 41 | "requires": { 42 | "mime-types": "~2.1.24", 43 | "negotiator": "0.6.2" 44 | } 45 | }, 46 | "acorn": { 47 | "version": "7.4.1", 48 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 49 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 50 | "dev": true 51 | }, 52 | "acorn-jsx": { 53 | "version": "5.1.0", 54 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", 55 | "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", 56 | "dev": true 57 | }, 58 | "ajv": { 59 | "version": "6.10.2", 60 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", 61 | "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", 62 | "dev": true, 63 | "requires": { 64 | "fast-deep-equal": "^2.0.1", 65 | "fast-json-stable-stringify": "^2.0.0", 66 | "json-schema-traverse": "^0.4.1", 67 | "uri-js": "^4.2.2" 68 | } 69 | }, 70 | "ansi-align": { 71 | "version": "2.0.0", 72 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", 73 | "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", 74 | "dev": true, 75 | "requires": { 76 | "string-width": "^2.0.0" 77 | } 78 | }, 79 | "ansi-escapes": { 80 | "version": "4.3.0", 81 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", 82 | "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", 83 | "dev": true, 84 | "requires": { 85 | "type-fest": "^0.8.1" 86 | } 87 | }, 88 | "ansi-regex": { 89 | "version": "3.0.0", 90 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 91 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" 92 | }, 93 | "ansi-styles": { 94 | "version": "3.2.1", 95 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 96 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 97 | "requires": { 98 | "color-convert": "^1.9.0" 99 | } 100 | }, 101 | "any-promise": { 102 | "version": "1.3.0", 103 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 104 | "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" 105 | }, 106 | "anymatch": { 107 | "version": "3.1.1", 108 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 109 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 110 | "dev": true, 111 | "requires": { 112 | "normalize-path": "^3.0.0", 113 | "picomatch": "^2.0.4" 114 | } 115 | }, 116 | "aproba": { 117 | "version": "1.2.0", 118 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 119 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" 120 | }, 121 | "are-we-there-yet": { 122 | "version": "1.1.5", 123 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", 124 | "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", 125 | "requires": { 126 | "delegates": "^1.0.0", 127 | "readable-stream": "^2.0.6" 128 | } 129 | }, 130 | "argparse": { 131 | "version": "1.0.10", 132 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 133 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 134 | "dev": true, 135 | "requires": { 136 | "sprintf-js": "~1.0.2" 137 | } 138 | }, 139 | "array-includes": { 140 | "version": "3.0.3", 141 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", 142 | "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", 143 | "dev": true, 144 | "requires": { 145 | "define-properties": "^1.1.2", 146 | "es-abstract": "^1.7.0" 147 | } 148 | }, 149 | "astral-regex": { 150 | "version": "1.0.0", 151 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 152 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 153 | "dev": true 154 | }, 155 | "babel-runtime": { 156 | "version": "6.26.0", 157 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 158 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 159 | "requires": { 160 | "core-js": "^2.4.0", 161 | "regenerator-runtime": "^0.11.0" 162 | } 163 | }, 164 | "balanced-match": { 165 | "version": "1.0.0", 166 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 167 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 168 | }, 169 | "bcrypt": { 170 | "version": "5.0.0", 171 | "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz", 172 | "integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==", 173 | "requires": { 174 | "node-addon-api": "^3.0.0", 175 | "node-pre-gyp": "0.15.0" 176 | } 177 | }, 178 | "binary-extensions": { 179 | "version": "2.0.0", 180 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", 181 | "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", 182 | "dev": true 183 | }, 184 | "bluebird": { 185 | "version": "3.7.1", 186 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", 187 | "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==" 188 | }, 189 | "boxen": { 190 | "version": "1.3.0", 191 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", 192 | "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", 193 | "dev": true, 194 | "requires": { 195 | "ansi-align": "^2.0.0", 196 | "camelcase": "^4.0.0", 197 | "chalk": "^2.0.1", 198 | "cli-boxes": "^1.0.0", 199 | "string-width": "^2.0.0", 200 | "term-size": "^1.2.0", 201 | "widest-line": "^2.0.0" 202 | } 203 | }, 204 | "brace-expansion": { 205 | "version": "1.1.11", 206 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 207 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 208 | "requires": { 209 | "balanced-match": "^1.0.0", 210 | "concat-map": "0.0.1" 211 | } 212 | }, 213 | "braces": { 214 | "version": "3.0.2", 215 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 216 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 217 | "dev": true, 218 | "requires": { 219 | "fill-range": "^7.0.1" 220 | } 221 | }, 222 | "buffer-equal-constant-time": { 223 | "version": "1.0.1", 224 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 225 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 226 | }, 227 | "buffer-writer": { 228 | "version": "2.0.0", 229 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 230 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" 231 | }, 232 | "bytes": { 233 | "version": "3.1.0", 234 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 235 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 236 | }, 237 | "cache-content-type": { 238 | "version": "1.0.1", 239 | "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", 240 | "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", 241 | "requires": { 242 | "mime-types": "^2.1.18", 243 | "ylru": "^1.2.0" 244 | } 245 | }, 246 | "callsites": { 247 | "version": "3.1.0", 248 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 249 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 250 | "dev": true 251 | }, 252 | "camelcase": { 253 | "version": "4.1.0", 254 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 255 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 256 | "dev": true 257 | }, 258 | "capture-stack-trace": { 259 | "version": "1.0.1", 260 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", 261 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", 262 | "dev": true 263 | }, 264 | "chalk": { 265 | "version": "2.4.2", 266 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 267 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 268 | "dev": true, 269 | "requires": { 270 | "ansi-styles": "^3.2.1", 271 | "escape-string-regexp": "^1.0.5", 272 | "supports-color": "^5.3.0" 273 | } 274 | }, 275 | "chardet": { 276 | "version": "0.7.0", 277 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 278 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 279 | "dev": true 280 | }, 281 | "chokidar": { 282 | "version": "3.3.0", 283 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", 284 | "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", 285 | "dev": true, 286 | "requires": { 287 | "anymatch": "~3.1.1", 288 | "braces": "~3.0.2", 289 | "fsevents": "~2.1.1", 290 | "glob-parent": "~5.1.0", 291 | "is-binary-path": "~2.1.0", 292 | "is-glob": "~4.0.1", 293 | "normalize-path": "~3.0.0", 294 | "readdirp": "~3.2.0" 295 | } 296 | }, 297 | "chownr": { 298 | "version": "1.1.4", 299 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 300 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 301 | }, 302 | "ci-info": { 303 | "version": "1.6.0", 304 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", 305 | "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", 306 | "dev": true 307 | }, 308 | "cli-boxes": { 309 | "version": "1.0.0", 310 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", 311 | "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", 312 | "dev": true 313 | }, 314 | "cli-color": { 315 | "version": "1.4.0", 316 | "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", 317 | "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", 318 | "requires": { 319 | "ansi-regex": "^2.1.1", 320 | "d": "1", 321 | "es5-ext": "^0.10.46", 322 | "es6-iterator": "^2.0.3", 323 | "memoizee": "^0.4.14", 324 | "timers-ext": "^0.1.5" 325 | }, 326 | "dependencies": { 327 | "ansi-regex": { 328 | "version": "2.1.1", 329 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 330 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 331 | } 332 | } 333 | }, 334 | "cli-cursor": { 335 | "version": "3.1.0", 336 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 337 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 338 | "dev": true, 339 | "requires": { 340 | "restore-cursor": "^3.1.0" 341 | } 342 | }, 343 | "cli-width": { 344 | "version": "2.2.0", 345 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 346 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 347 | "dev": true 348 | }, 349 | "cliui": { 350 | "version": "5.0.0", 351 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 352 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 353 | "requires": { 354 | "string-width": "^3.1.0", 355 | "strip-ansi": "^5.2.0", 356 | "wrap-ansi": "^5.1.0" 357 | }, 358 | "dependencies": { 359 | "ansi-regex": { 360 | "version": "4.1.0", 361 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 362 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 363 | }, 364 | "string-width": { 365 | "version": "3.1.0", 366 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 367 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 368 | "requires": { 369 | "emoji-regex": "^7.0.1", 370 | "is-fullwidth-code-point": "^2.0.0", 371 | "strip-ansi": "^5.1.0" 372 | } 373 | }, 374 | "strip-ansi": { 375 | "version": "5.2.0", 376 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 377 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 378 | "requires": { 379 | "ansi-regex": "^4.1.0" 380 | } 381 | } 382 | } 383 | }, 384 | "cls-bluebird": { 385 | "version": "2.1.0", 386 | "resolved": "https://registry.npmjs.org/cls-bluebird/-/cls-bluebird-2.1.0.tgz", 387 | "integrity": "sha1-N+8eCAqP+1XC9BZPU28ZGeeWiu4=", 388 | "requires": { 389 | "is-bluebird": "^1.0.2", 390 | "shimmer": "^1.1.0" 391 | } 392 | }, 393 | "co": { 394 | "version": "4.6.0", 395 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 396 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 397 | }, 398 | "co-body": { 399 | "version": "6.0.0", 400 | "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.0.0.tgz", 401 | "integrity": "sha512-9ZIcixguuuKIptnY8yemEOuhb71L/lLf+Rl5JfJEUiDNJk0e02MBt7BPxR2GEh5mw8dPthQYR4jPI/BnS1MQgw==", 402 | "requires": { 403 | "inflation": "^2.0.0", 404 | "qs": "^6.5.2", 405 | "raw-body": "^2.3.3", 406 | "type-is": "^1.6.16" 407 | } 408 | }, 409 | "code-point-at": { 410 | "version": "1.1.0", 411 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 412 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 413 | }, 414 | "color-convert": { 415 | "version": "1.9.3", 416 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 417 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 418 | "requires": { 419 | "color-name": "1.1.3" 420 | } 421 | }, 422 | "color-name": { 423 | "version": "1.1.3", 424 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 425 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 426 | }, 427 | "commander": { 428 | "version": "2.20.3", 429 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 430 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 431 | }, 432 | "concat-map": { 433 | "version": "0.0.1", 434 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 435 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 436 | }, 437 | "config-chain": { 438 | "version": "1.1.12", 439 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", 440 | "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", 441 | "requires": { 442 | "ini": "^1.3.4", 443 | "proto-list": "~1.2.1" 444 | } 445 | }, 446 | "configstore": { 447 | "version": "3.1.2", 448 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", 449 | "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", 450 | "dev": true, 451 | "requires": { 452 | "dot-prop": "^4.1.0", 453 | "graceful-fs": "^4.1.2", 454 | "make-dir": "^1.0.0", 455 | "unique-string": "^1.0.0", 456 | "write-file-atomic": "^2.0.0", 457 | "xdg-basedir": "^3.0.0" 458 | } 459 | }, 460 | "console-control-strings": { 461 | "version": "1.1.0", 462 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 463 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 464 | }, 465 | "contains-path": { 466 | "version": "0.1.0", 467 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 468 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 469 | "dev": true 470 | }, 471 | "content-disposition": { 472 | "version": "0.5.3", 473 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 474 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 475 | "requires": { 476 | "safe-buffer": "5.1.2" 477 | } 478 | }, 479 | "content-type": { 480 | "version": "1.0.4", 481 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 482 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 483 | }, 484 | "cookies": { 485 | "version": "0.8.0", 486 | "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", 487 | "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", 488 | "requires": { 489 | "depd": "~2.0.0", 490 | "keygrip": "~1.1.0" 491 | }, 492 | "dependencies": { 493 | "depd": { 494 | "version": "2.0.0", 495 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 496 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 497 | } 498 | } 499 | }, 500 | "copy-to": { 501 | "version": "2.0.1", 502 | "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", 503 | "integrity": "sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU=" 504 | }, 505 | "core-js": { 506 | "version": "2.6.10", 507 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", 508 | "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" 509 | }, 510 | "core-util-is": { 511 | "version": "1.0.2", 512 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 513 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 514 | }, 515 | "create-error-class": { 516 | "version": "3.0.2", 517 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 518 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", 519 | "dev": true, 520 | "requires": { 521 | "capture-stack-trace": "^1.0.0" 522 | } 523 | }, 524 | "cross-spawn": { 525 | "version": "5.1.0", 526 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 527 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 528 | "dev": true, 529 | "requires": { 530 | "lru-cache": "^4.0.1", 531 | "shebang-command": "^1.2.0", 532 | "which": "^1.2.9" 533 | } 534 | }, 535 | "crypto-random-string": { 536 | "version": "1.0.0", 537 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", 538 | "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", 539 | "dev": true 540 | }, 541 | "d": { 542 | "version": "1.0.1", 543 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 544 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 545 | "requires": { 546 | "es5-ext": "^0.10.50", 547 | "type": "^1.0.1" 548 | } 549 | }, 550 | "debug": { 551 | "version": "3.1.0", 552 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 553 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 554 | "requires": { 555 | "ms": "2.0.0" 556 | } 557 | }, 558 | "decamelize": { 559 | "version": "1.2.0", 560 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 561 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 562 | }, 563 | "deep-equal": { 564 | "version": "1.0.1", 565 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 566 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" 567 | }, 568 | "deep-extend": { 569 | "version": "0.6.0", 570 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 571 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 572 | }, 573 | "deep-is": { 574 | "version": "0.1.3", 575 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 576 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 577 | "dev": true 578 | }, 579 | "define-properties": { 580 | "version": "1.1.3", 581 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 582 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 583 | "dev": true, 584 | "requires": { 585 | "object-keys": "^1.0.12" 586 | } 587 | }, 588 | "delegates": { 589 | "version": "1.0.0", 590 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 591 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 592 | }, 593 | "depd": { 594 | "version": "1.1.2", 595 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 596 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 597 | }, 598 | "destroy": { 599 | "version": "1.0.4", 600 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 601 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 602 | }, 603 | "detect-libc": { 604 | "version": "1.0.3", 605 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 606 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" 607 | }, 608 | "doctrine": { 609 | "version": "3.0.0", 610 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 611 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 612 | "dev": true, 613 | "requires": { 614 | "esutils": "^2.0.2" 615 | } 616 | }, 617 | "dot-prop": { 618 | "version": "4.2.1", 619 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", 620 | "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", 621 | "dev": true, 622 | "requires": { 623 | "is-obj": "^1.0.0" 624 | } 625 | }, 626 | "dotenv": { 627 | "version": "8.2.0", 628 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", 629 | "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", 630 | "dev": true 631 | }, 632 | "dottie": { 633 | "version": "2.0.1", 634 | "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.1.tgz", 635 | "integrity": "sha512-ch5OQgvGDK2u8pSZeSYAQaV/lczImd7pMJ7BcEPXmnFVjy4yJIzP6CsODJUTH8mg1tyH1Z2abOiuJO3DjZ/GBw==" 636 | }, 637 | "duplexer3": { 638 | "version": "0.1.4", 639 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 640 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", 641 | "dev": true 642 | }, 643 | "ecdsa-sig-formatter": { 644 | "version": "1.0.11", 645 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 646 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 647 | "requires": { 648 | "safe-buffer": "^5.0.1" 649 | } 650 | }, 651 | "editorconfig": { 652 | "version": "0.15.3", 653 | "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", 654 | "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", 655 | "requires": { 656 | "commander": "^2.19.0", 657 | "lru-cache": "^4.1.5", 658 | "semver": "^5.6.0", 659 | "sigmund": "^1.0.1" 660 | }, 661 | "dependencies": { 662 | "semver": { 663 | "version": "5.7.1", 664 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 665 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 666 | } 667 | } 668 | }, 669 | "ee-first": { 670 | "version": "1.1.1", 671 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 672 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 673 | }, 674 | "emoji-regex": { 675 | "version": "7.0.3", 676 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 677 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" 678 | }, 679 | "encodeurl": { 680 | "version": "1.0.2", 681 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 682 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 683 | }, 684 | "error-ex": { 685 | "version": "1.3.2", 686 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 687 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 688 | "dev": true, 689 | "requires": { 690 | "is-arrayish": "^0.2.1" 691 | } 692 | }, 693 | "error-inject": { 694 | "version": "1.0.0", 695 | "resolved": "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz", 696 | "integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=" 697 | }, 698 | "es-abstract": { 699 | "version": "1.16.0", 700 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", 701 | "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", 702 | "dev": true, 703 | "requires": { 704 | "es-to-primitive": "^1.2.0", 705 | "function-bind": "^1.1.1", 706 | "has": "^1.0.3", 707 | "has-symbols": "^1.0.0", 708 | "is-callable": "^1.1.4", 709 | "is-regex": "^1.0.4", 710 | "object-inspect": "^1.6.0", 711 | "object-keys": "^1.1.1", 712 | "string.prototype.trimleft": "^2.1.0", 713 | "string.prototype.trimright": "^2.1.0" 714 | } 715 | }, 716 | "es-to-primitive": { 717 | "version": "1.2.1", 718 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 719 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 720 | "dev": true, 721 | "requires": { 722 | "is-callable": "^1.1.4", 723 | "is-date-object": "^1.0.1", 724 | "is-symbol": "^1.0.2" 725 | } 726 | }, 727 | "es5-ext": { 728 | "version": "0.10.52", 729 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz", 730 | "integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==", 731 | "requires": { 732 | "es6-iterator": "~2.0.3", 733 | "es6-symbol": "~3.1.2", 734 | "next-tick": "~1.0.0" 735 | } 736 | }, 737 | "es6-iterator": { 738 | "version": "2.0.3", 739 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 740 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 741 | "requires": { 742 | "d": "1", 743 | "es5-ext": "^0.10.35", 744 | "es6-symbol": "^3.1.1" 745 | } 746 | }, 747 | "es6-symbol": { 748 | "version": "3.1.3", 749 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", 750 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", 751 | "requires": { 752 | "d": "^1.0.1", 753 | "ext": "^1.1.2" 754 | } 755 | }, 756 | "es6-weak-map": { 757 | "version": "2.0.3", 758 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", 759 | "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", 760 | "requires": { 761 | "d": "1", 762 | "es5-ext": "^0.10.46", 763 | "es6-iterator": "^2.0.3", 764 | "es6-symbol": "^3.1.1" 765 | } 766 | }, 767 | "escape-html": { 768 | "version": "1.0.3", 769 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 770 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 771 | }, 772 | "escape-string-regexp": { 773 | "version": "1.0.5", 774 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 775 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 776 | "dev": true 777 | }, 778 | "eslint": { 779 | "version": "6.6.0", 780 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz", 781 | "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==", 782 | "dev": true, 783 | "requires": { 784 | "@babel/code-frame": "^7.0.0", 785 | "ajv": "^6.10.0", 786 | "chalk": "^2.1.0", 787 | "cross-spawn": "^6.0.5", 788 | "debug": "^4.0.1", 789 | "doctrine": "^3.0.0", 790 | "eslint-scope": "^5.0.0", 791 | "eslint-utils": "^1.4.3", 792 | "eslint-visitor-keys": "^1.1.0", 793 | "espree": "^6.1.2", 794 | "esquery": "^1.0.1", 795 | "esutils": "^2.0.2", 796 | "file-entry-cache": "^5.0.1", 797 | "functional-red-black-tree": "^1.0.1", 798 | "glob-parent": "^5.0.0", 799 | "globals": "^11.7.0", 800 | "ignore": "^4.0.6", 801 | "import-fresh": "^3.0.0", 802 | "imurmurhash": "^0.1.4", 803 | "inquirer": "^7.0.0", 804 | "is-glob": "^4.0.0", 805 | "js-yaml": "^3.13.1", 806 | "json-stable-stringify-without-jsonify": "^1.0.1", 807 | "levn": "^0.3.0", 808 | "lodash": "^4.17.14", 809 | "minimatch": "^3.0.4", 810 | "mkdirp": "^0.5.1", 811 | "natural-compare": "^1.4.0", 812 | "optionator": "^0.8.2", 813 | "progress": "^2.0.0", 814 | "regexpp": "^2.0.1", 815 | "semver": "^6.1.2", 816 | "strip-ansi": "^5.2.0", 817 | "strip-json-comments": "^3.0.1", 818 | "table": "^5.2.3", 819 | "text-table": "^0.2.0", 820 | "v8-compile-cache": "^2.0.3" 821 | }, 822 | "dependencies": { 823 | "ansi-regex": { 824 | "version": "4.1.0", 825 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 826 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 827 | "dev": true 828 | }, 829 | "cross-spawn": { 830 | "version": "6.0.5", 831 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 832 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 833 | "dev": true, 834 | "requires": { 835 | "nice-try": "^1.0.4", 836 | "path-key": "^2.0.1", 837 | "semver": "^5.5.0", 838 | "shebang-command": "^1.2.0", 839 | "which": "^1.2.9" 840 | }, 841 | "dependencies": { 842 | "semver": { 843 | "version": "5.7.1", 844 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 845 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 846 | "dev": true 847 | } 848 | } 849 | }, 850 | "debug": { 851 | "version": "4.1.1", 852 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 853 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 854 | "dev": true, 855 | "requires": { 856 | "ms": "^2.1.1" 857 | } 858 | }, 859 | "ms": { 860 | "version": "2.1.2", 861 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 862 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 863 | "dev": true 864 | }, 865 | "strip-ansi": { 866 | "version": "5.2.0", 867 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 868 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 869 | "dev": true, 870 | "requires": { 871 | "ansi-regex": "^4.1.0" 872 | } 873 | }, 874 | "strip-json-comments": { 875 | "version": "3.0.1", 876 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", 877 | "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", 878 | "dev": true 879 | } 880 | } 881 | }, 882 | "eslint-config-standard": { 883 | "version": "14.1.0", 884 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz", 885 | "integrity": "sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA==", 886 | "dev": true 887 | }, 888 | "eslint-import-resolver-node": { 889 | "version": "0.3.2", 890 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", 891 | "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", 892 | "dev": true, 893 | "requires": { 894 | "debug": "^2.6.9", 895 | "resolve": "^1.5.0" 896 | }, 897 | "dependencies": { 898 | "debug": { 899 | "version": "2.6.9", 900 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 901 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 902 | "dev": true, 903 | "requires": { 904 | "ms": "2.0.0" 905 | } 906 | } 907 | } 908 | }, 909 | "eslint-module-utils": { 910 | "version": "2.4.1", 911 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz", 912 | "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==", 913 | "dev": true, 914 | "requires": { 915 | "debug": "^2.6.8", 916 | "pkg-dir": "^2.0.0" 917 | }, 918 | "dependencies": { 919 | "debug": { 920 | "version": "2.6.9", 921 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 922 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 923 | "dev": true, 924 | "requires": { 925 | "ms": "2.0.0" 926 | } 927 | } 928 | } 929 | }, 930 | "eslint-plugin-es": { 931 | "version": "2.0.0", 932 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", 933 | "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", 934 | "dev": true, 935 | "requires": { 936 | "eslint-utils": "^1.4.2", 937 | "regexpp": "^3.0.0" 938 | }, 939 | "dependencies": { 940 | "regexpp": { 941 | "version": "3.0.0", 942 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", 943 | "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", 944 | "dev": true 945 | } 946 | } 947 | }, 948 | "eslint-plugin-import": { 949 | "version": "2.18.2", 950 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", 951 | "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", 952 | "dev": true, 953 | "requires": { 954 | "array-includes": "^3.0.3", 955 | "contains-path": "^0.1.0", 956 | "debug": "^2.6.9", 957 | "doctrine": "1.5.0", 958 | "eslint-import-resolver-node": "^0.3.2", 959 | "eslint-module-utils": "^2.4.0", 960 | "has": "^1.0.3", 961 | "minimatch": "^3.0.4", 962 | "object.values": "^1.1.0", 963 | "read-pkg-up": "^2.0.0", 964 | "resolve": "^1.11.0" 965 | }, 966 | "dependencies": { 967 | "debug": { 968 | "version": "2.6.9", 969 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 970 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 971 | "dev": true, 972 | "requires": { 973 | "ms": "2.0.0" 974 | } 975 | }, 976 | "doctrine": { 977 | "version": "1.5.0", 978 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 979 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 980 | "dev": true, 981 | "requires": { 982 | "esutils": "^2.0.2", 983 | "isarray": "^1.0.0" 984 | } 985 | }, 986 | "isarray": { 987 | "version": "1.0.0", 988 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 989 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 990 | "dev": true 991 | } 992 | } 993 | }, 994 | "eslint-plugin-json": { 995 | "version": "1.4.0", 996 | "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-1.4.0.tgz", 997 | "integrity": "sha512-CECvgRAWtUzuepdlPWd+VA7fhyF9HT183pZnl8wQw5x699Mk/MbME/q8xtULBfooi3LUbj6fToieNmsvUcDxWA==", 998 | "dev": true, 999 | "requires": { 1000 | "vscode-json-languageservice": "^3.2.1" 1001 | } 1002 | }, 1003 | "eslint-plugin-node": { 1004 | "version": "10.0.0", 1005 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", 1006 | "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", 1007 | "dev": true, 1008 | "requires": { 1009 | "eslint-plugin-es": "^2.0.0", 1010 | "eslint-utils": "^1.4.2", 1011 | "ignore": "^5.1.1", 1012 | "minimatch": "^3.0.4", 1013 | "resolve": "^1.10.1", 1014 | "semver": "^6.1.0" 1015 | }, 1016 | "dependencies": { 1017 | "ignore": { 1018 | "version": "5.1.4", 1019 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", 1020 | "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", 1021 | "dev": true 1022 | } 1023 | } 1024 | }, 1025 | "eslint-plugin-promise": { 1026 | "version": "4.2.1", 1027 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", 1028 | "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", 1029 | "dev": true 1030 | }, 1031 | "eslint-plugin-standard": { 1032 | "version": "4.0.1", 1033 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", 1034 | "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", 1035 | "dev": true 1036 | }, 1037 | "eslint-scope": { 1038 | "version": "5.0.0", 1039 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", 1040 | "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", 1041 | "dev": true, 1042 | "requires": { 1043 | "esrecurse": "^4.1.0", 1044 | "estraverse": "^4.1.1" 1045 | } 1046 | }, 1047 | "eslint-utils": { 1048 | "version": "1.4.3", 1049 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 1050 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 1051 | "dev": true, 1052 | "requires": { 1053 | "eslint-visitor-keys": "^1.1.0" 1054 | } 1055 | }, 1056 | "eslint-visitor-keys": { 1057 | "version": "1.1.0", 1058 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 1059 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 1060 | "dev": true 1061 | }, 1062 | "espree": { 1063 | "version": "6.1.2", 1064 | "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", 1065 | "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", 1066 | "dev": true, 1067 | "requires": { 1068 | "acorn": "^7.1.0", 1069 | "acorn-jsx": "^5.1.0", 1070 | "eslint-visitor-keys": "^1.1.0" 1071 | } 1072 | }, 1073 | "esprima": { 1074 | "version": "4.0.1", 1075 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1076 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1077 | "dev": true 1078 | }, 1079 | "esquery": { 1080 | "version": "1.0.1", 1081 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", 1082 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", 1083 | "dev": true, 1084 | "requires": { 1085 | "estraverse": "^4.0.0" 1086 | } 1087 | }, 1088 | "esrecurse": { 1089 | "version": "4.2.1", 1090 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 1091 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 1092 | "dev": true, 1093 | "requires": { 1094 | "estraverse": "^4.1.0" 1095 | } 1096 | }, 1097 | "estraverse": { 1098 | "version": "4.3.0", 1099 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1100 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1101 | "dev": true 1102 | }, 1103 | "esutils": { 1104 | "version": "2.0.3", 1105 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1106 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1107 | "dev": true 1108 | }, 1109 | "event-emitter": { 1110 | "version": "0.3.5", 1111 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", 1112 | "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", 1113 | "requires": { 1114 | "d": "1", 1115 | "es5-ext": "~0.10.14" 1116 | } 1117 | }, 1118 | "execa": { 1119 | "version": "0.7.0", 1120 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 1121 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 1122 | "dev": true, 1123 | "requires": { 1124 | "cross-spawn": "^5.0.1", 1125 | "get-stream": "^3.0.0", 1126 | "is-stream": "^1.1.0", 1127 | "npm-run-path": "^2.0.0", 1128 | "p-finally": "^1.0.0", 1129 | "signal-exit": "^3.0.0", 1130 | "strip-eof": "^1.0.0" 1131 | } 1132 | }, 1133 | "ext": { 1134 | "version": "1.2.0", 1135 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.2.0.tgz", 1136 | "integrity": "sha512-0ccUQK/9e3NreLFg6K6np8aPyRgwycx+oFGtfx1dSp7Wj00Ozw9r05FgBRlzjf2XBM7LAzwgLyDscRrtSU91hA==", 1137 | "requires": { 1138 | "type": "^2.0.0" 1139 | }, 1140 | "dependencies": { 1141 | "type": { 1142 | "version": "2.0.0", 1143 | "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", 1144 | "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" 1145 | } 1146 | } 1147 | }, 1148 | "external-editor": { 1149 | "version": "3.1.0", 1150 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 1151 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 1152 | "dev": true, 1153 | "requires": { 1154 | "chardet": "^0.7.0", 1155 | "iconv-lite": "^0.4.24", 1156 | "tmp": "^0.0.33" 1157 | } 1158 | }, 1159 | "fast-deep-equal": { 1160 | "version": "2.0.1", 1161 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 1162 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 1163 | "dev": true 1164 | }, 1165 | "fast-json-stable-stringify": { 1166 | "version": "2.0.0", 1167 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 1168 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 1169 | "dev": true 1170 | }, 1171 | "fast-levenshtein": { 1172 | "version": "2.0.6", 1173 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1174 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1175 | "dev": true 1176 | }, 1177 | "figures": { 1178 | "version": "3.1.0", 1179 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", 1180 | "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", 1181 | "dev": true, 1182 | "requires": { 1183 | "escape-string-regexp": "^1.0.5" 1184 | } 1185 | }, 1186 | "file-entry-cache": { 1187 | "version": "5.0.1", 1188 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 1189 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 1190 | "dev": true, 1191 | "requires": { 1192 | "flat-cache": "^2.0.1" 1193 | } 1194 | }, 1195 | "fill-range": { 1196 | "version": "7.0.1", 1197 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1198 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1199 | "dev": true, 1200 | "requires": { 1201 | "to-regex-range": "^5.0.1" 1202 | } 1203 | }, 1204 | "find-up": { 1205 | "version": "3.0.0", 1206 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 1207 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 1208 | "requires": { 1209 | "locate-path": "^3.0.0" 1210 | } 1211 | }, 1212 | "flat-cache": { 1213 | "version": "2.0.1", 1214 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 1215 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 1216 | "dev": true, 1217 | "requires": { 1218 | "flatted": "^2.0.0", 1219 | "rimraf": "2.6.3", 1220 | "write": "1.0.3" 1221 | }, 1222 | "dependencies": { 1223 | "rimraf": { 1224 | "version": "2.6.3", 1225 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1226 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1227 | "dev": true, 1228 | "requires": { 1229 | "glob": "^7.1.3" 1230 | } 1231 | } 1232 | } 1233 | }, 1234 | "flatted": { 1235 | "version": "2.0.1", 1236 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", 1237 | "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", 1238 | "dev": true 1239 | }, 1240 | "fresh": { 1241 | "version": "0.5.2", 1242 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1243 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1244 | }, 1245 | "fs-extra": { 1246 | "version": "7.0.1", 1247 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", 1248 | "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", 1249 | "requires": { 1250 | "graceful-fs": "^4.1.2", 1251 | "jsonfile": "^4.0.0", 1252 | "universalify": "^0.1.0" 1253 | } 1254 | }, 1255 | "fs-minipass": { 1256 | "version": "1.2.7", 1257 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", 1258 | "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", 1259 | "requires": { 1260 | "minipass": "^2.6.0" 1261 | } 1262 | }, 1263 | "fs.realpath": { 1264 | "version": "1.0.0", 1265 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1266 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1267 | }, 1268 | "fsevents": { 1269 | "version": "2.1.2", 1270 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", 1271 | "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", 1272 | "dev": true, 1273 | "optional": true 1274 | }, 1275 | "function-bind": { 1276 | "version": "1.1.1", 1277 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1278 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1279 | "dev": true 1280 | }, 1281 | "functional-red-black-tree": { 1282 | "version": "1.0.1", 1283 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1284 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1285 | "dev": true 1286 | }, 1287 | "gauge": { 1288 | "version": "2.7.4", 1289 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", 1290 | "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 1291 | "requires": { 1292 | "aproba": "^1.0.3", 1293 | "console-control-strings": "^1.0.0", 1294 | "has-unicode": "^2.0.0", 1295 | "object-assign": "^4.1.0", 1296 | "signal-exit": "^3.0.0", 1297 | "string-width": "^1.0.1", 1298 | "strip-ansi": "^3.0.1", 1299 | "wide-align": "^1.1.0" 1300 | }, 1301 | "dependencies": { 1302 | "ansi-regex": { 1303 | "version": "2.1.1", 1304 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1305 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 1306 | }, 1307 | "is-fullwidth-code-point": { 1308 | "version": "1.0.0", 1309 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1310 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1311 | "requires": { 1312 | "number-is-nan": "^1.0.0" 1313 | } 1314 | }, 1315 | "string-width": { 1316 | "version": "1.0.2", 1317 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 1318 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 1319 | "requires": { 1320 | "code-point-at": "^1.0.0", 1321 | "is-fullwidth-code-point": "^1.0.0", 1322 | "strip-ansi": "^3.0.0" 1323 | } 1324 | }, 1325 | "strip-ansi": { 1326 | "version": "3.0.1", 1327 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1328 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1329 | "requires": { 1330 | "ansi-regex": "^2.0.0" 1331 | } 1332 | } 1333 | } 1334 | }, 1335 | "get-caller-file": { 1336 | "version": "2.0.5", 1337 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1338 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 1339 | }, 1340 | "get-stream": { 1341 | "version": "3.0.0", 1342 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 1343 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 1344 | "dev": true 1345 | }, 1346 | "glob": { 1347 | "version": "7.1.6", 1348 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1349 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1350 | "requires": { 1351 | "fs.realpath": "^1.0.0", 1352 | "inflight": "^1.0.4", 1353 | "inherits": "2", 1354 | "minimatch": "^3.0.4", 1355 | "once": "^1.3.0", 1356 | "path-is-absolute": "^1.0.0" 1357 | } 1358 | }, 1359 | "glob-parent": { 1360 | "version": "5.1.0", 1361 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", 1362 | "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", 1363 | "dev": true, 1364 | "requires": { 1365 | "is-glob": "^4.0.1" 1366 | } 1367 | }, 1368 | "global-dirs": { 1369 | "version": "0.1.1", 1370 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", 1371 | "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", 1372 | "dev": true, 1373 | "requires": { 1374 | "ini": "^1.3.4" 1375 | } 1376 | }, 1377 | "globals": { 1378 | "version": "11.12.0", 1379 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1380 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1381 | "dev": true 1382 | }, 1383 | "got": { 1384 | "version": "6.7.1", 1385 | "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", 1386 | "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", 1387 | "dev": true, 1388 | "requires": { 1389 | "create-error-class": "^3.0.0", 1390 | "duplexer3": "^0.1.4", 1391 | "get-stream": "^3.0.0", 1392 | "is-redirect": "^1.0.0", 1393 | "is-retry-allowed": "^1.0.0", 1394 | "is-stream": "^1.0.0", 1395 | "lowercase-keys": "^1.0.0", 1396 | "safe-buffer": "^5.0.1", 1397 | "timed-out": "^4.0.0", 1398 | "unzip-response": "^2.0.1", 1399 | "url-parse-lax": "^1.0.0" 1400 | } 1401 | }, 1402 | "graceful-fs": { 1403 | "version": "4.2.3", 1404 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", 1405 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" 1406 | }, 1407 | "has": { 1408 | "version": "1.0.3", 1409 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1410 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1411 | "dev": true, 1412 | "requires": { 1413 | "function-bind": "^1.1.1" 1414 | } 1415 | }, 1416 | "has-flag": { 1417 | "version": "3.0.0", 1418 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1419 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1420 | "dev": true 1421 | }, 1422 | "has-symbols": { 1423 | "version": "1.0.1", 1424 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1425 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 1426 | "dev": true 1427 | }, 1428 | "has-unicode": { 1429 | "version": "2.0.1", 1430 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 1431 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 1432 | }, 1433 | "hosted-git-info": { 1434 | "version": "2.8.5", 1435 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", 1436 | "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", 1437 | "dev": true 1438 | }, 1439 | "http-assert": { 1440 | "version": "1.4.1", 1441 | "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.4.1.tgz", 1442 | "integrity": "sha512-rdw7q6GTlibqVVbXr0CKelfV5iY8G2HqEUkhSk297BMbSpSL8crXC+9rjKoMcZZEsksX30le6f/4ul4E28gegw==", 1443 | "requires": { 1444 | "deep-equal": "~1.0.1", 1445 | "http-errors": "~1.7.2" 1446 | } 1447 | }, 1448 | "http-errors": { 1449 | "version": "1.7.3", 1450 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 1451 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 1452 | "requires": { 1453 | "depd": "~1.1.2", 1454 | "inherits": "2.0.4", 1455 | "setprototypeof": "1.1.1", 1456 | "statuses": ">= 1.5.0 < 2", 1457 | "toidentifier": "1.0.0" 1458 | } 1459 | }, 1460 | "iconv-lite": { 1461 | "version": "0.4.24", 1462 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1463 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1464 | "requires": { 1465 | "safer-buffer": ">= 2.1.2 < 3" 1466 | } 1467 | }, 1468 | "ignore": { 1469 | "version": "4.0.6", 1470 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1471 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1472 | "dev": true 1473 | }, 1474 | "ignore-by-default": { 1475 | "version": "1.0.1", 1476 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 1477 | "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", 1478 | "dev": true 1479 | }, 1480 | "ignore-walk": { 1481 | "version": "3.0.3", 1482 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", 1483 | "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", 1484 | "requires": { 1485 | "minimatch": "^3.0.4" 1486 | } 1487 | }, 1488 | "import-fresh": { 1489 | "version": "3.2.1", 1490 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 1491 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 1492 | "dev": true, 1493 | "requires": { 1494 | "parent-module": "^1.0.0", 1495 | "resolve-from": "^4.0.0" 1496 | } 1497 | }, 1498 | "import-lazy": { 1499 | "version": "2.1.0", 1500 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 1501 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", 1502 | "dev": true 1503 | }, 1504 | "imurmurhash": { 1505 | "version": "0.1.4", 1506 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1507 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1508 | "dev": true 1509 | }, 1510 | "inflation": { 1511 | "version": "2.0.0", 1512 | "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", 1513 | "integrity": "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8=" 1514 | }, 1515 | "inflection": { 1516 | "version": "1.12.0", 1517 | "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", 1518 | "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" 1519 | }, 1520 | "inflight": { 1521 | "version": "1.0.6", 1522 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1523 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1524 | "requires": { 1525 | "once": "^1.3.0", 1526 | "wrappy": "1" 1527 | } 1528 | }, 1529 | "inherits": { 1530 | "version": "2.0.4", 1531 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1532 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1533 | }, 1534 | "ini": { 1535 | "version": "1.3.5", 1536 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 1537 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 1538 | }, 1539 | "inquirer": { 1540 | "version": "7.0.0", 1541 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", 1542 | "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", 1543 | "dev": true, 1544 | "requires": { 1545 | "ansi-escapes": "^4.2.1", 1546 | "chalk": "^2.4.2", 1547 | "cli-cursor": "^3.1.0", 1548 | "cli-width": "^2.0.0", 1549 | "external-editor": "^3.0.3", 1550 | "figures": "^3.0.0", 1551 | "lodash": "^4.17.15", 1552 | "mute-stream": "0.0.8", 1553 | "run-async": "^2.2.0", 1554 | "rxjs": "^6.4.0", 1555 | "string-width": "^4.1.0", 1556 | "strip-ansi": "^5.1.0", 1557 | "through": "^2.3.6" 1558 | }, 1559 | "dependencies": { 1560 | "ansi-regex": { 1561 | "version": "5.0.0", 1562 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 1563 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 1564 | "dev": true 1565 | }, 1566 | "emoji-regex": { 1567 | "version": "8.0.0", 1568 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1569 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1570 | "dev": true 1571 | }, 1572 | "is-fullwidth-code-point": { 1573 | "version": "3.0.0", 1574 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1575 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1576 | "dev": true 1577 | }, 1578 | "string-width": { 1579 | "version": "4.2.0", 1580 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 1581 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 1582 | "dev": true, 1583 | "requires": { 1584 | "emoji-regex": "^8.0.0", 1585 | "is-fullwidth-code-point": "^3.0.0", 1586 | "strip-ansi": "^6.0.0" 1587 | }, 1588 | "dependencies": { 1589 | "strip-ansi": { 1590 | "version": "6.0.0", 1591 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1592 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1593 | "dev": true, 1594 | "requires": { 1595 | "ansi-regex": "^5.0.0" 1596 | } 1597 | } 1598 | } 1599 | }, 1600 | "strip-ansi": { 1601 | "version": "5.2.0", 1602 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1603 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1604 | "dev": true, 1605 | "requires": { 1606 | "ansi-regex": "^4.1.0" 1607 | }, 1608 | "dependencies": { 1609 | "ansi-regex": { 1610 | "version": "4.1.0", 1611 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1612 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1613 | "dev": true 1614 | } 1615 | } 1616 | } 1617 | } 1618 | }, 1619 | "is-arrayish": { 1620 | "version": "0.2.1", 1621 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1622 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1623 | "dev": true 1624 | }, 1625 | "is-binary-path": { 1626 | "version": "2.1.0", 1627 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1628 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1629 | "dev": true, 1630 | "requires": { 1631 | "binary-extensions": "^2.0.0" 1632 | } 1633 | }, 1634 | "is-bluebird": { 1635 | "version": "1.0.2", 1636 | "resolved": "https://registry.npmjs.org/is-bluebird/-/is-bluebird-1.0.2.tgz", 1637 | "integrity": "sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI=" 1638 | }, 1639 | "is-callable": { 1640 | "version": "1.1.4", 1641 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 1642 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 1643 | "dev": true 1644 | }, 1645 | "is-ci": { 1646 | "version": "1.2.1", 1647 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", 1648 | "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", 1649 | "dev": true, 1650 | "requires": { 1651 | "ci-info": "^1.5.0" 1652 | } 1653 | }, 1654 | "is-date-object": { 1655 | "version": "1.0.1", 1656 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1657 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1658 | "dev": true 1659 | }, 1660 | "is-extglob": { 1661 | "version": "2.1.1", 1662 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1663 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1664 | "dev": true 1665 | }, 1666 | "is-fullwidth-code-point": { 1667 | "version": "2.0.0", 1668 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1669 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 1670 | }, 1671 | "is-generator-function": { 1672 | "version": "1.0.7", 1673 | "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", 1674 | "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==" 1675 | }, 1676 | "is-glob": { 1677 | "version": "4.0.1", 1678 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1679 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1680 | "dev": true, 1681 | "requires": { 1682 | "is-extglob": "^2.1.1" 1683 | } 1684 | }, 1685 | "is-installed-globally": { 1686 | "version": "0.1.0", 1687 | "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", 1688 | "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", 1689 | "dev": true, 1690 | "requires": { 1691 | "global-dirs": "^0.1.0", 1692 | "is-path-inside": "^1.0.0" 1693 | } 1694 | }, 1695 | "is-npm": { 1696 | "version": "1.0.0", 1697 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", 1698 | "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", 1699 | "dev": true 1700 | }, 1701 | "is-number": { 1702 | "version": "7.0.0", 1703 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1704 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1705 | "dev": true 1706 | }, 1707 | "is-obj": { 1708 | "version": "1.0.1", 1709 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1710 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 1711 | "dev": true 1712 | }, 1713 | "is-path-inside": { 1714 | "version": "1.0.1", 1715 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", 1716 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", 1717 | "dev": true, 1718 | "requires": { 1719 | "path-is-inside": "^1.0.1" 1720 | } 1721 | }, 1722 | "is-promise": { 1723 | "version": "2.1.0", 1724 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1725 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" 1726 | }, 1727 | "is-redirect": { 1728 | "version": "1.0.0", 1729 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", 1730 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", 1731 | "dev": true 1732 | }, 1733 | "is-regex": { 1734 | "version": "1.0.4", 1735 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1736 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1737 | "dev": true, 1738 | "requires": { 1739 | "has": "^1.0.1" 1740 | } 1741 | }, 1742 | "is-retry-allowed": { 1743 | "version": "1.2.0", 1744 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", 1745 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", 1746 | "dev": true 1747 | }, 1748 | "is-stream": { 1749 | "version": "1.1.0", 1750 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1751 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1752 | "dev": true 1753 | }, 1754 | "is-symbol": { 1755 | "version": "1.0.2", 1756 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1757 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1758 | "dev": true, 1759 | "requires": { 1760 | "has-symbols": "^1.0.0" 1761 | } 1762 | }, 1763 | "isarray": { 1764 | "version": "0.0.1", 1765 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1766 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 1767 | }, 1768 | "isexe": { 1769 | "version": "2.0.0", 1770 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1771 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1772 | "dev": true 1773 | }, 1774 | "js-beautify": { 1775 | "version": "1.13.0", 1776 | "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.0.tgz", 1777 | "integrity": "sha512-/Tbp1OVzZjbwzwJQFIlYLm9eWQ+3aYbBXLSaqb1mEJzhcQAfrqMMQYtjb6io+U6KpD0ID4F+Id3/xcjH3l/sqA==", 1778 | "requires": { 1779 | "config-chain": "^1.1.12", 1780 | "editorconfig": "^0.15.3", 1781 | "glob": "^7.1.3", 1782 | "mkdirp": "^1.0.4", 1783 | "nopt": "^5.0.0" 1784 | }, 1785 | "dependencies": { 1786 | "mkdirp": { 1787 | "version": "1.0.4", 1788 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1789 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" 1790 | }, 1791 | "nopt": { 1792 | "version": "5.0.0", 1793 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 1794 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 1795 | "requires": { 1796 | "abbrev": "1" 1797 | } 1798 | } 1799 | } 1800 | }, 1801 | "js-tokens": { 1802 | "version": "4.0.0", 1803 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1804 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1805 | "dev": true 1806 | }, 1807 | "js-yaml": { 1808 | "version": "3.13.1", 1809 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1810 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1811 | "dev": true, 1812 | "requires": { 1813 | "argparse": "^1.0.7", 1814 | "esprima": "^4.0.0" 1815 | } 1816 | }, 1817 | "json-schema-traverse": { 1818 | "version": "0.4.1", 1819 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1820 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1821 | "dev": true 1822 | }, 1823 | "json-stable-stringify-without-jsonify": { 1824 | "version": "1.0.1", 1825 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1826 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1827 | "dev": true 1828 | }, 1829 | "jsonc-parser": { 1830 | "version": "2.2.0", 1831 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.0.tgz", 1832 | "integrity": "sha512-4fLQxW1j/5fWj6p78vAlAafoCKtuBm6ghv+Ij5W2DrDx0qE+ZdEl2c6Ko1mgJNF5ftX1iEWQQ4Ap7+3GlhjkOA==", 1833 | "dev": true 1834 | }, 1835 | "jsonfile": { 1836 | "version": "4.0.0", 1837 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1838 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 1839 | "requires": { 1840 | "graceful-fs": "^4.1.6" 1841 | } 1842 | }, 1843 | "jsonwebtoken": { 1844 | "version": "8.5.1", 1845 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 1846 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 1847 | "requires": { 1848 | "jws": "^3.2.2", 1849 | "lodash.includes": "^4.3.0", 1850 | "lodash.isboolean": "^3.0.3", 1851 | "lodash.isinteger": "^4.0.4", 1852 | "lodash.isnumber": "^3.0.3", 1853 | "lodash.isplainobject": "^4.0.6", 1854 | "lodash.isstring": "^4.0.1", 1855 | "lodash.once": "^4.0.0", 1856 | "ms": "^2.1.1", 1857 | "semver": "^5.6.0" 1858 | }, 1859 | "dependencies": { 1860 | "ms": { 1861 | "version": "2.1.2", 1862 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1863 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1864 | }, 1865 | "semver": { 1866 | "version": "5.7.1", 1867 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1868 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1869 | } 1870 | } 1871 | }, 1872 | "jwa": { 1873 | "version": "1.4.1", 1874 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 1875 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 1876 | "requires": { 1877 | "buffer-equal-constant-time": "1.0.1", 1878 | "ecdsa-sig-formatter": "1.0.11", 1879 | "safe-buffer": "^5.0.1" 1880 | } 1881 | }, 1882 | "jws": { 1883 | "version": "3.2.2", 1884 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 1885 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 1886 | "requires": { 1887 | "jwa": "^1.4.1", 1888 | "safe-buffer": "^5.0.1" 1889 | } 1890 | }, 1891 | "keygrip": { 1892 | "version": "1.1.0", 1893 | "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", 1894 | "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", 1895 | "requires": { 1896 | "tsscmp": "1.0.6" 1897 | } 1898 | }, 1899 | "koa": { 1900 | "version": "2.11.0", 1901 | "resolved": "https://registry.npmjs.org/koa/-/koa-2.11.0.tgz", 1902 | "integrity": "sha512-EpR9dElBTDlaDgyhDMiLkXrPwp6ZqgAIBvhhmxQ9XN4TFgW+gEz6tkcsNI6BnUbUftrKDjVFj4lW2/J2aNBMMA==", 1903 | "requires": { 1904 | "accepts": "^1.3.5", 1905 | "cache-content-type": "^1.0.0", 1906 | "content-disposition": "~0.5.2", 1907 | "content-type": "^1.0.4", 1908 | "cookies": "~0.8.0", 1909 | "debug": "~3.1.0", 1910 | "delegates": "^1.0.0", 1911 | "depd": "^1.1.2", 1912 | "destroy": "^1.0.4", 1913 | "encodeurl": "^1.0.2", 1914 | "error-inject": "^1.0.0", 1915 | "escape-html": "^1.0.3", 1916 | "fresh": "~0.5.2", 1917 | "http-assert": "^1.3.0", 1918 | "http-errors": "^1.6.3", 1919 | "is-generator-function": "^1.0.7", 1920 | "koa-compose": "^4.1.0", 1921 | "koa-convert": "^1.2.0", 1922 | "on-finished": "^2.3.0", 1923 | "only": "~0.0.2", 1924 | "parseurl": "^1.3.2", 1925 | "statuses": "^1.5.0", 1926 | "type-is": "^1.6.16", 1927 | "vary": "^1.1.2" 1928 | } 1929 | }, 1930 | "koa-bodyparser": { 1931 | "version": "4.2.1", 1932 | "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.2.1.tgz", 1933 | "integrity": "sha512-UIjPAlMZfNYDDe+4zBaOAUKYqkwAGcIU6r2ARf1UOXPAlfennQys5IiShaVeNf7KkVBlf88f2LeLvBFvKylttw==", 1934 | "requires": { 1935 | "co-body": "^6.0.0", 1936 | "copy-to": "^2.0.1" 1937 | } 1938 | }, 1939 | "koa-compose": { 1940 | "version": "4.1.0", 1941 | "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", 1942 | "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" 1943 | }, 1944 | "koa-convert": { 1945 | "version": "1.2.0", 1946 | "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", 1947 | "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=", 1948 | "requires": { 1949 | "co": "^4.6.0", 1950 | "koa-compose": "^3.0.0" 1951 | }, 1952 | "dependencies": { 1953 | "koa-compose": { 1954 | "version": "3.2.1", 1955 | "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", 1956 | "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", 1957 | "requires": { 1958 | "any-promise": "^1.1.0" 1959 | } 1960 | } 1961 | } 1962 | }, 1963 | "koa-router": { 1964 | "version": "7.4.0", 1965 | "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-7.4.0.tgz", 1966 | "integrity": "sha512-IWhaDXeAnfDBEpWS6hkGdZ1ablgr6Q6pGdXCyK38RbzuH4LkUOpPqPw+3f8l8aTDrQmBQ7xJc0bs2yV4dzcO+g==", 1967 | "requires": { 1968 | "debug": "^3.1.0", 1969 | "http-errors": "^1.3.1", 1970 | "koa-compose": "^3.0.0", 1971 | "methods": "^1.0.1", 1972 | "path-to-regexp": "^1.1.1", 1973 | "urijs": "^1.19.0" 1974 | }, 1975 | "dependencies": { 1976 | "koa-compose": { 1977 | "version": "3.2.1", 1978 | "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", 1979 | "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", 1980 | "requires": { 1981 | "any-promise": "^1.1.0" 1982 | } 1983 | } 1984 | } 1985 | }, 1986 | "latest-version": { 1987 | "version": "3.1.0", 1988 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", 1989 | "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", 1990 | "dev": true, 1991 | "requires": { 1992 | "package-json": "^4.0.0" 1993 | } 1994 | }, 1995 | "levn": { 1996 | "version": "0.3.0", 1997 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1998 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1999 | "dev": true, 2000 | "requires": { 2001 | "prelude-ls": "~1.1.2", 2002 | "type-check": "~0.3.2" 2003 | } 2004 | }, 2005 | "load-json-file": { 2006 | "version": "2.0.0", 2007 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 2008 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 2009 | "dev": true, 2010 | "requires": { 2011 | "graceful-fs": "^4.1.2", 2012 | "parse-json": "^2.2.0", 2013 | "pify": "^2.0.0", 2014 | "strip-bom": "^3.0.0" 2015 | }, 2016 | "dependencies": { 2017 | "pify": { 2018 | "version": "2.3.0", 2019 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2020 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2021 | "dev": true 2022 | } 2023 | } 2024 | }, 2025 | "locate-path": { 2026 | "version": "3.0.0", 2027 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 2028 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 2029 | "requires": { 2030 | "p-locate": "^3.0.0", 2031 | "path-exists": "^3.0.0" 2032 | } 2033 | }, 2034 | "lodash": { 2035 | "version": "4.17.20", 2036 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 2037 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 2038 | }, 2039 | "lodash.includes": { 2040 | "version": "4.3.0", 2041 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 2042 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 2043 | }, 2044 | "lodash.isboolean": { 2045 | "version": "3.0.3", 2046 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 2047 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 2048 | }, 2049 | "lodash.isinteger": { 2050 | "version": "4.0.4", 2051 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 2052 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 2053 | }, 2054 | "lodash.isnumber": { 2055 | "version": "3.0.3", 2056 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 2057 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 2058 | }, 2059 | "lodash.isplainobject": { 2060 | "version": "4.0.6", 2061 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 2062 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 2063 | }, 2064 | "lodash.isstring": { 2065 | "version": "4.0.1", 2066 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 2067 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 2068 | }, 2069 | "lodash.once": { 2070 | "version": "4.1.1", 2071 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 2072 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 2073 | }, 2074 | "lowercase-keys": { 2075 | "version": "1.0.1", 2076 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 2077 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", 2078 | "dev": true 2079 | }, 2080 | "lru-cache": { 2081 | "version": "4.1.5", 2082 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 2083 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 2084 | "requires": { 2085 | "pseudomap": "^1.0.2", 2086 | "yallist": "^2.1.2" 2087 | } 2088 | }, 2089 | "lru-queue": { 2090 | "version": "0.1.0", 2091 | "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", 2092 | "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", 2093 | "requires": { 2094 | "es5-ext": "~0.10.2" 2095 | } 2096 | }, 2097 | "make-dir": { 2098 | "version": "1.3.0", 2099 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 2100 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 2101 | "dev": true, 2102 | "requires": { 2103 | "pify": "^3.0.0" 2104 | } 2105 | }, 2106 | "media-typer": { 2107 | "version": "0.3.0", 2108 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2109 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 2110 | }, 2111 | "memoizee": { 2112 | "version": "0.4.14", 2113 | "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", 2114 | "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", 2115 | "requires": { 2116 | "d": "1", 2117 | "es5-ext": "^0.10.45", 2118 | "es6-weak-map": "^2.0.2", 2119 | "event-emitter": "^0.3.5", 2120 | "is-promise": "^2.1", 2121 | "lru-queue": "0.1", 2122 | "next-tick": "1", 2123 | "timers-ext": "^0.1.5" 2124 | } 2125 | }, 2126 | "methods": { 2127 | "version": "1.1.2", 2128 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 2129 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 2130 | }, 2131 | "mime-db": { 2132 | "version": "1.42.0", 2133 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", 2134 | "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" 2135 | }, 2136 | "mime-types": { 2137 | "version": "2.1.25", 2138 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", 2139 | "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", 2140 | "requires": { 2141 | "mime-db": "1.42.0" 2142 | } 2143 | }, 2144 | "mimic-fn": { 2145 | "version": "2.1.0", 2146 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2147 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2148 | "dev": true 2149 | }, 2150 | "minimatch": { 2151 | "version": "3.0.4", 2152 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2153 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2154 | "requires": { 2155 | "brace-expansion": "^1.1.7" 2156 | } 2157 | }, 2158 | "minimist": { 2159 | "version": "1.2.5", 2160 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2161 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 2162 | }, 2163 | "minipass": { 2164 | "version": "2.9.0", 2165 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", 2166 | "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", 2167 | "requires": { 2168 | "safe-buffer": "^5.1.2", 2169 | "yallist": "^3.0.0" 2170 | }, 2171 | "dependencies": { 2172 | "yallist": { 2173 | "version": "3.1.1", 2174 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 2175 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 2176 | } 2177 | } 2178 | }, 2179 | "minizlib": { 2180 | "version": "1.3.3", 2181 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", 2182 | "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", 2183 | "requires": { 2184 | "minipass": "^2.9.0" 2185 | } 2186 | }, 2187 | "mkdirp": { 2188 | "version": "0.5.5", 2189 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 2190 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 2191 | "requires": { 2192 | "minimist": "^1.2.5" 2193 | } 2194 | }, 2195 | "moment": { 2196 | "version": "2.24.0", 2197 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", 2198 | "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" 2199 | }, 2200 | "moment-timezone": { 2201 | "version": "0.5.27", 2202 | "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.27.tgz", 2203 | "integrity": "sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw==", 2204 | "requires": { 2205 | "moment": ">= 2.9.0" 2206 | } 2207 | }, 2208 | "ms": { 2209 | "version": "2.0.0", 2210 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2211 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2212 | }, 2213 | "mute-stream": { 2214 | "version": "0.0.8", 2215 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 2216 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 2217 | "dev": true 2218 | }, 2219 | "natural-compare": { 2220 | "version": "1.4.0", 2221 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2222 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2223 | "dev": true 2224 | }, 2225 | "needle": { 2226 | "version": "2.5.2", 2227 | "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", 2228 | "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", 2229 | "requires": { 2230 | "debug": "^3.2.6", 2231 | "iconv-lite": "^0.4.4", 2232 | "sax": "^1.2.4" 2233 | }, 2234 | "dependencies": { 2235 | "debug": { 2236 | "version": "3.2.6", 2237 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 2238 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 2239 | "requires": { 2240 | "ms": "^2.1.1" 2241 | } 2242 | }, 2243 | "ms": { 2244 | "version": "2.1.2", 2245 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2246 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2247 | } 2248 | } 2249 | }, 2250 | "negotiator": { 2251 | "version": "0.6.2", 2252 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 2253 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 2254 | }, 2255 | "next-tick": { 2256 | "version": "1.0.0", 2257 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 2258 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" 2259 | }, 2260 | "nice-try": { 2261 | "version": "1.0.5", 2262 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 2263 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 2264 | "dev": true 2265 | }, 2266 | "node-addon-api": { 2267 | "version": "3.0.2", 2268 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz", 2269 | "integrity": "sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==" 2270 | }, 2271 | "node-pre-gyp": { 2272 | "version": "0.15.0", 2273 | "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz", 2274 | "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==", 2275 | "requires": { 2276 | "detect-libc": "^1.0.2", 2277 | "mkdirp": "^0.5.3", 2278 | "needle": "^2.5.0", 2279 | "nopt": "^4.0.1", 2280 | "npm-packlist": "^1.1.6", 2281 | "npmlog": "^4.0.2", 2282 | "rc": "^1.2.7", 2283 | "rimraf": "^2.6.1", 2284 | "semver": "^5.3.0", 2285 | "tar": "^4.4.2" 2286 | }, 2287 | "dependencies": { 2288 | "nopt": { 2289 | "version": "4.0.3", 2290 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", 2291 | "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", 2292 | "requires": { 2293 | "abbrev": "1", 2294 | "osenv": "^0.1.4" 2295 | } 2296 | }, 2297 | "semver": { 2298 | "version": "5.7.1", 2299 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2300 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 2301 | } 2302 | } 2303 | }, 2304 | "nodemon": { 2305 | "version": "2.0.0", 2306 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.0.tgz", 2307 | "integrity": "sha512-hs+lNmZc6pIamxCTDrOhMccqSsGjZENGZ/40etM/Zc3aoR4UTvwMH38XOnhD5pmU+Jn2u1OGOC5hZF2tjCHJMA==", 2308 | "dev": true, 2309 | "requires": { 2310 | "chokidar": "^3.2.2", 2311 | "debug": "^3.2.6", 2312 | "ignore-by-default": "^1.0.1", 2313 | "minimatch": "^3.0.4", 2314 | "pstree.remy": "^1.1.7", 2315 | "semver": "^5.7.1", 2316 | "supports-color": "^5.5.0", 2317 | "touch": "^3.1.0", 2318 | "undefsafe": "^2.0.2", 2319 | "update-notifier": "^2.5.0" 2320 | }, 2321 | "dependencies": { 2322 | "debug": { 2323 | "version": "3.2.6", 2324 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 2325 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 2326 | "dev": true, 2327 | "requires": { 2328 | "ms": "^2.1.1" 2329 | } 2330 | }, 2331 | "ms": { 2332 | "version": "2.1.2", 2333 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2334 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2335 | "dev": true 2336 | }, 2337 | "semver": { 2338 | "version": "5.7.1", 2339 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2340 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2341 | "dev": true 2342 | } 2343 | } 2344 | }, 2345 | "nopt": { 2346 | "version": "1.0.10", 2347 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 2348 | "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", 2349 | "dev": true, 2350 | "requires": { 2351 | "abbrev": "1" 2352 | } 2353 | }, 2354 | "normalize-package-data": { 2355 | "version": "2.5.0", 2356 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2357 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2358 | "dev": true, 2359 | "requires": { 2360 | "hosted-git-info": "^2.1.4", 2361 | "resolve": "^1.10.0", 2362 | "semver": "2 || 3 || 4 || 5", 2363 | "validate-npm-package-license": "^3.0.1" 2364 | }, 2365 | "dependencies": { 2366 | "semver": { 2367 | "version": "5.7.1", 2368 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2369 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2370 | "dev": true 2371 | } 2372 | } 2373 | }, 2374 | "normalize-path": { 2375 | "version": "3.0.0", 2376 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2377 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2378 | "dev": true 2379 | }, 2380 | "npm-bundled": { 2381 | "version": "1.1.1", 2382 | "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", 2383 | "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", 2384 | "requires": { 2385 | "npm-normalize-package-bin": "^1.0.1" 2386 | } 2387 | }, 2388 | "npm-normalize-package-bin": { 2389 | "version": "1.0.1", 2390 | "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", 2391 | "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" 2392 | }, 2393 | "npm-packlist": { 2394 | "version": "1.4.8", 2395 | "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", 2396 | "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", 2397 | "requires": { 2398 | "ignore-walk": "^3.0.1", 2399 | "npm-bundled": "^1.0.1", 2400 | "npm-normalize-package-bin": "^1.0.1" 2401 | } 2402 | }, 2403 | "npm-run-path": { 2404 | "version": "2.0.2", 2405 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 2406 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 2407 | "dev": true, 2408 | "requires": { 2409 | "path-key": "^2.0.0" 2410 | } 2411 | }, 2412 | "npmlog": { 2413 | "version": "4.1.2", 2414 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", 2415 | "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", 2416 | "requires": { 2417 | "are-we-there-yet": "~1.1.2", 2418 | "console-control-strings": "~1.1.0", 2419 | "gauge": "~2.7.3", 2420 | "set-blocking": "~2.0.0" 2421 | } 2422 | }, 2423 | "number-is-nan": { 2424 | "version": "1.0.1", 2425 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2426 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 2427 | }, 2428 | "object-assign": { 2429 | "version": "4.1.1", 2430 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2431 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2432 | }, 2433 | "object-inspect": { 2434 | "version": "1.7.0", 2435 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", 2436 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", 2437 | "dev": true 2438 | }, 2439 | "object-keys": { 2440 | "version": "1.1.1", 2441 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2442 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 2443 | "dev": true 2444 | }, 2445 | "object.values": { 2446 | "version": "1.1.0", 2447 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", 2448 | "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", 2449 | "dev": true, 2450 | "requires": { 2451 | "define-properties": "^1.1.3", 2452 | "es-abstract": "^1.12.0", 2453 | "function-bind": "^1.1.1", 2454 | "has": "^1.0.3" 2455 | } 2456 | }, 2457 | "on-finished": { 2458 | "version": "2.3.0", 2459 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2460 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2461 | "requires": { 2462 | "ee-first": "1.1.1" 2463 | } 2464 | }, 2465 | "once": { 2466 | "version": "1.4.0", 2467 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2468 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2469 | "requires": { 2470 | "wrappy": "1" 2471 | } 2472 | }, 2473 | "onetime": { 2474 | "version": "5.1.0", 2475 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 2476 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 2477 | "dev": true, 2478 | "requires": { 2479 | "mimic-fn": "^2.1.0" 2480 | } 2481 | }, 2482 | "only": { 2483 | "version": "0.0.2", 2484 | "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", 2485 | "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=" 2486 | }, 2487 | "optionator": { 2488 | "version": "0.8.3", 2489 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 2490 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 2491 | "dev": true, 2492 | "requires": { 2493 | "deep-is": "~0.1.3", 2494 | "fast-levenshtein": "~2.0.6", 2495 | "levn": "~0.3.0", 2496 | "prelude-ls": "~1.1.2", 2497 | "type-check": "~0.3.2", 2498 | "word-wrap": "~1.2.3" 2499 | } 2500 | }, 2501 | "os-homedir": { 2502 | "version": "1.0.2", 2503 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2504 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" 2505 | }, 2506 | "os-tmpdir": { 2507 | "version": "1.0.2", 2508 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2509 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 2510 | }, 2511 | "osenv": { 2512 | "version": "0.1.5", 2513 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", 2514 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", 2515 | "requires": { 2516 | "os-homedir": "^1.0.0", 2517 | "os-tmpdir": "^1.0.0" 2518 | } 2519 | }, 2520 | "p-finally": { 2521 | "version": "1.0.0", 2522 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 2523 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 2524 | "dev": true 2525 | }, 2526 | "p-limit": { 2527 | "version": "2.2.1", 2528 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", 2529 | "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", 2530 | "requires": { 2531 | "p-try": "^2.0.0" 2532 | } 2533 | }, 2534 | "p-locate": { 2535 | "version": "3.0.0", 2536 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2537 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2538 | "requires": { 2539 | "p-limit": "^2.0.0" 2540 | } 2541 | }, 2542 | "p-try": { 2543 | "version": "2.2.0", 2544 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2545 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 2546 | }, 2547 | "package-json": { 2548 | "version": "4.0.1", 2549 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", 2550 | "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", 2551 | "dev": true, 2552 | "requires": { 2553 | "got": "^6.7.1", 2554 | "registry-auth-token": "^3.0.1", 2555 | "registry-url": "^3.0.3", 2556 | "semver": "^5.1.0" 2557 | }, 2558 | "dependencies": { 2559 | "semver": { 2560 | "version": "5.7.1", 2561 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2562 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2563 | "dev": true 2564 | } 2565 | } 2566 | }, 2567 | "packet-reader": { 2568 | "version": "1.0.0", 2569 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 2570 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 2571 | }, 2572 | "parent-module": { 2573 | "version": "1.0.1", 2574 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2575 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2576 | "dev": true, 2577 | "requires": { 2578 | "callsites": "^3.0.0" 2579 | } 2580 | }, 2581 | "parse-json": { 2582 | "version": "2.2.0", 2583 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2584 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 2585 | "dev": true, 2586 | "requires": { 2587 | "error-ex": "^1.2.0" 2588 | } 2589 | }, 2590 | "parseurl": { 2591 | "version": "1.3.3", 2592 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2593 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 2594 | }, 2595 | "path-exists": { 2596 | "version": "3.0.0", 2597 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2598 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 2599 | }, 2600 | "path-is-absolute": { 2601 | "version": "1.0.1", 2602 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2603 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 2604 | }, 2605 | "path-is-inside": { 2606 | "version": "1.0.2", 2607 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 2608 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 2609 | "dev": true 2610 | }, 2611 | "path-key": { 2612 | "version": "2.0.1", 2613 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2614 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 2615 | "dev": true 2616 | }, 2617 | "path-parse": { 2618 | "version": "1.0.6", 2619 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2620 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 2621 | }, 2622 | "path-to-regexp": { 2623 | "version": "1.8.0", 2624 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", 2625 | "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", 2626 | "requires": { 2627 | "isarray": "0.0.1" 2628 | } 2629 | }, 2630 | "path-type": { 2631 | "version": "2.0.0", 2632 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 2633 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 2634 | "dev": true, 2635 | "requires": { 2636 | "pify": "^2.0.0" 2637 | }, 2638 | "dependencies": { 2639 | "pify": { 2640 | "version": "2.3.0", 2641 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2642 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2643 | "dev": true 2644 | } 2645 | } 2646 | }, 2647 | "pg": { 2648 | "version": "7.14.0", 2649 | "resolved": "https://registry.npmjs.org/pg/-/pg-7.14.0.tgz", 2650 | "integrity": "sha512-TLsdOWKFu44vHdejml4Uoo8h0EwCjdIj9Z9kpz7pA5i8iQxOTwVb1+Fy+X86kW5AXKxQpYpYDs4j/qPDbro/lg==", 2651 | "requires": { 2652 | "buffer-writer": "2.0.0", 2653 | "packet-reader": "1.0.0", 2654 | "pg-connection-string": "0.1.3", 2655 | "pg-pool": "^2.0.7", 2656 | "pg-types": "^2.1.0", 2657 | "pgpass": "1.x", 2658 | "semver": "4.3.2" 2659 | }, 2660 | "dependencies": { 2661 | "semver": { 2662 | "version": "4.3.2", 2663 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", 2664 | "integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=" 2665 | } 2666 | } 2667 | }, 2668 | "pg-connection-string": { 2669 | "version": "0.1.3", 2670 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", 2671 | "integrity": "sha1-2hhHsglA5C7hSSvq9l1J2RskXfc=" 2672 | }, 2673 | "pg-hstore": { 2674 | "version": "2.3.3", 2675 | "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.3.tgz", 2676 | "integrity": "sha512-qpeTpdkguFgfdoidtfeTho1Q1zPVPbtMHgs8eQ+Aan05iLmIs3Z3oo5DOZRclPGoQ4i68I1kCtQSJSa7i0ZVYg==", 2677 | "requires": { 2678 | "underscore": "^1.7.0" 2679 | } 2680 | }, 2681 | "pg-int8": { 2682 | "version": "1.0.1", 2683 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 2684 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 2685 | }, 2686 | "pg-pool": { 2687 | "version": "2.0.7", 2688 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.7.tgz", 2689 | "integrity": "sha512-UiJyO5B9zZpu32GSlP0tXy8J2NsJ9EFGFfz5v6PSbdz/1hBLX1rNiiy5+mAm5iJJYwfCv4A0EBcQLGWwjbpzZw==" 2690 | }, 2691 | "pg-types": { 2692 | "version": "2.2.0", 2693 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 2694 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 2695 | "requires": { 2696 | "pg-int8": "1.0.1", 2697 | "postgres-array": "~2.0.0", 2698 | "postgres-bytea": "~1.0.0", 2699 | "postgres-date": "~1.0.4", 2700 | "postgres-interval": "^1.1.0" 2701 | } 2702 | }, 2703 | "pgpass": { 2704 | "version": "1.0.2", 2705 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz", 2706 | "integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=", 2707 | "requires": { 2708 | "split": "^1.0.0" 2709 | } 2710 | }, 2711 | "picomatch": { 2712 | "version": "2.1.1", 2713 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", 2714 | "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", 2715 | "dev": true 2716 | }, 2717 | "pify": { 2718 | "version": "3.0.0", 2719 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2720 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 2721 | "dev": true 2722 | }, 2723 | "pkg-dir": { 2724 | "version": "2.0.0", 2725 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 2726 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 2727 | "dev": true, 2728 | "requires": { 2729 | "find-up": "^2.1.0" 2730 | }, 2731 | "dependencies": { 2732 | "find-up": { 2733 | "version": "2.1.0", 2734 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 2735 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 2736 | "dev": true, 2737 | "requires": { 2738 | "locate-path": "^2.0.0" 2739 | } 2740 | }, 2741 | "locate-path": { 2742 | "version": "2.0.0", 2743 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2744 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2745 | "dev": true, 2746 | "requires": { 2747 | "p-locate": "^2.0.0", 2748 | "path-exists": "^3.0.0" 2749 | } 2750 | }, 2751 | "p-limit": { 2752 | "version": "1.3.0", 2753 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2754 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2755 | "dev": true, 2756 | "requires": { 2757 | "p-try": "^1.0.0" 2758 | } 2759 | }, 2760 | "p-locate": { 2761 | "version": "2.0.0", 2762 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2763 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2764 | "dev": true, 2765 | "requires": { 2766 | "p-limit": "^1.1.0" 2767 | } 2768 | }, 2769 | "p-try": { 2770 | "version": "1.0.0", 2771 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2772 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2773 | "dev": true 2774 | } 2775 | } 2776 | }, 2777 | "postgres-array": { 2778 | "version": "2.0.0", 2779 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 2780 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 2781 | }, 2782 | "postgres-bytea": { 2783 | "version": "1.0.0", 2784 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 2785 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" 2786 | }, 2787 | "postgres-date": { 2788 | "version": "1.0.4", 2789 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.4.tgz", 2790 | "integrity": "sha512-bESRvKVuTrjoBluEcpv2346+6kgB7UlnqWZsnbnCccTNq/pqfj1j6oBaN5+b/NrDXepYUT/HKadqv3iS9lJuVA==" 2791 | }, 2792 | "postgres-interval": { 2793 | "version": "1.2.0", 2794 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 2795 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 2796 | "requires": { 2797 | "xtend": "^4.0.0" 2798 | } 2799 | }, 2800 | "prelude-ls": { 2801 | "version": "1.1.2", 2802 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2803 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 2804 | "dev": true 2805 | }, 2806 | "prepend-http": { 2807 | "version": "1.0.4", 2808 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 2809 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", 2810 | "dev": true 2811 | }, 2812 | "process-nextick-args": { 2813 | "version": "2.0.1", 2814 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2815 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2816 | }, 2817 | "progress": { 2818 | "version": "2.0.3", 2819 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2820 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2821 | "dev": true 2822 | }, 2823 | "proto-list": { 2824 | "version": "1.2.4", 2825 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 2826 | "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" 2827 | }, 2828 | "pseudomap": { 2829 | "version": "1.0.2", 2830 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2831 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" 2832 | }, 2833 | "pstree.remy": { 2834 | "version": "1.1.7", 2835 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz", 2836 | "integrity": "sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A==", 2837 | "dev": true 2838 | }, 2839 | "punycode": { 2840 | "version": "2.1.1", 2841 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2842 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2843 | "dev": true 2844 | }, 2845 | "qs": { 2846 | "version": "6.9.1", 2847 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", 2848 | "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==" 2849 | }, 2850 | "ramda": { 2851 | "version": "0.26.1", 2852 | "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", 2853 | "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" 2854 | }, 2855 | "raw-body": { 2856 | "version": "2.4.1", 2857 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", 2858 | "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", 2859 | "requires": { 2860 | "bytes": "3.1.0", 2861 | "http-errors": "1.7.3", 2862 | "iconv-lite": "0.4.24", 2863 | "unpipe": "1.0.0" 2864 | } 2865 | }, 2866 | "rc": { 2867 | "version": "1.2.8", 2868 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2869 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2870 | "requires": { 2871 | "deep-extend": "^0.6.0", 2872 | "ini": "~1.3.0", 2873 | "minimist": "^1.2.0", 2874 | "strip-json-comments": "~2.0.1" 2875 | } 2876 | }, 2877 | "read-pkg": { 2878 | "version": "2.0.0", 2879 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2880 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 2881 | "dev": true, 2882 | "requires": { 2883 | "load-json-file": "^2.0.0", 2884 | "normalize-package-data": "^2.3.2", 2885 | "path-type": "^2.0.0" 2886 | } 2887 | }, 2888 | "read-pkg-up": { 2889 | "version": "2.0.0", 2890 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2891 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 2892 | "dev": true, 2893 | "requires": { 2894 | "find-up": "^2.0.0", 2895 | "read-pkg": "^2.0.0" 2896 | }, 2897 | "dependencies": { 2898 | "find-up": { 2899 | "version": "2.1.0", 2900 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 2901 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 2902 | "dev": true, 2903 | "requires": { 2904 | "locate-path": "^2.0.0" 2905 | } 2906 | }, 2907 | "locate-path": { 2908 | "version": "2.0.0", 2909 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2910 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2911 | "dev": true, 2912 | "requires": { 2913 | "p-locate": "^2.0.0", 2914 | "path-exists": "^3.0.0" 2915 | } 2916 | }, 2917 | "p-limit": { 2918 | "version": "1.3.0", 2919 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2920 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2921 | "dev": true, 2922 | "requires": { 2923 | "p-try": "^1.0.0" 2924 | } 2925 | }, 2926 | "p-locate": { 2927 | "version": "2.0.0", 2928 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2929 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2930 | "dev": true, 2931 | "requires": { 2932 | "p-limit": "^1.1.0" 2933 | } 2934 | }, 2935 | "p-try": { 2936 | "version": "1.0.0", 2937 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2938 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2939 | "dev": true 2940 | } 2941 | } 2942 | }, 2943 | "readable-stream": { 2944 | "version": "2.3.7", 2945 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2946 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2947 | "requires": { 2948 | "core-util-is": "~1.0.0", 2949 | "inherits": "~2.0.3", 2950 | "isarray": "~1.0.0", 2951 | "process-nextick-args": "~2.0.0", 2952 | "safe-buffer": "~5.1.1", 2953 | "string_decoder": "~1.1.1", 2954 | "util-deprecate": "~1.0.1" 2955 | }, 2956 | "dependencies": { 2957 | "isarray": { 2958 | "version": "1.0.0", 2959 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2960 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 2961 | } 2962 | } 2963 | }, 2964 | "readdirp": { 2965 | "version": "3.2.0", 2966 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", 2967 | "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", 2968 | "dev": true, 2969 | "requires": { 2970 | "picomatch": "^2.0.4" 2971 | } 2972 | }, 2973 | "regenerator-runtime": { 2974 | "version": "0.11.1", 2975 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 2976 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 2977 | }, 2978 | "regexpp": { 2979 | "version": "2.0.1", 2980 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 2981 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 2982 | "dev": true 2983 | }, 2984 | "registry-auth-token": { 2985 | "version": "3.4.0", 2986 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", 2987 | "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", 2988 | "dev": true, 2989 | "requires": { 2990 | "rc": "^1.1.6", 2991 | "safe-buffer": "^5.0.1" 2992 | } 2993 | }, 2994 | "registry-url": { 2995 | "version": "3.1.0", 2996 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 2997 | "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", 2998 | "dev": true, 2999 | "requires": { 3000 | "rc": "^1.0.1" 3001 | } 3002 | }, 3003 | "require-directory": { 3004 | "version": "2.1.1", 3005 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3006 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 3007 | }, 3008 | "require-main-filename": { 3009 | "version": "2.0.0", 3010 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 3011 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" 3012 | }, 3013 | "resolve": { 3014 | "version": "1.12.0", 3015 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", 3016 | "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", 3017 | "requires": { 3018 | "path-parse": "^1.0.6" 3019 | } 3020 | }, 3021 | "resolve-from": { 3022 | "version": "4.0.0", 3023 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3024 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3025 | "dev": true 3026 | }, 3027 | "restore-cursor": { 3028 | "version": "3.1.0", 3029 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 3030 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 3031 | "dev": true, 3032 | "requires": { 3033 | "onetime": "^5.1.0", 3034 | "signal-exit": "^3.0.2" 3035 | } 3036 | }, 3037 | "retry-as-promised": { 3038 | "version": "3.2.0", 3039 | "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", 3040 | "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", 3041 | "requires": { 3042 | "any-promise": "^1.3.0" 3043 | } 3044 | }, 3045 | "rimraf": { 3046 | "version": "2.7.1", 3047 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 3048 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 3049 | "requires": { 3050 | "glob": "^7.1.3" 3051 | } 3052 | }, 3053 | "run-async": { 3054 | "version": "2.3.0", 3055 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 3056 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 3057 | "dev": true, 3058 | "requires": { 3059 | "is-promise": "^2.1.0" 3060 | } 3061 | }, 3062 | "rxjs": { 3063 | "version": "6.5.3", 3064 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", 3065 | "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", 3066 | "dev": true, 3067 | "requires": { 3068 | "tslib": "^1.9.0" 3069 | } 3070 | }, 3071 | "safe-buffer": { 3072 | "version": "5.1.2", 3073 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3074 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 3075 | }, 3076 | "safer-buffer": { 3077 | "version": "2.1.2", 3078 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3079 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 3080 | }, 3081 | "sax": { 3082 | "version": "1.2.4", 3083 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 3084 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 3085 | }, 3086 | "semver": { 3087 | "version": "6.3.0", 3088 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 3089 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 3090 | }, 3091 | "semver-diff": { 3092 | "version": "2.1.0", 3093 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", 3094 | "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", 3095 | "dev": true, 3096 | "requires": { 3097 | "semver": "^5.0.3" 3098 | }, 3099 | "dependencies": { 3100 | "semver": { 3101 | "version": "5.7.1", 3102 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3103 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 3104 | "dev": true 3105 | } 3106 | } 3107 | }, 3108 | "sequelize": { 3109 | "version": "5.21.2", 3110 | "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-5.21.2.tgz", 3111 | "integrity": "sha512-MEqJ9NwQi4oy/ylLb2WkfPmhki/BOXC/gJfc8uWUUTETcpLwD1y/5bI1kqVh+qWcECHNsE9G4lmhj5hFbsxqvA==", 3112 | "requires": { 3113 | "bluebird": "^3.5.0", 3114 | "cls-bluebird": "^2.1.0", 3115 | "debug": "^4.1.1", 3116 | "dottie": "^2.0.0", 3117 | "inflection": "1.12.0", 3118 | "lodash": "^4.17.15", 3119 | "moment": "^2.24.0", 3120 | "moment-timezone": "^0.5.21", 3121 | "retry-as-promised": "^3.2.0", 3122 | "semver": "^6.3.0", 3123 | "sequelize-pool": "^2.3.0", 3124 | "toposort-class": "^1.0.1", 3125 | "uuid": "^3.3.3", 3126 | "validator": "^10.11.0", 3127 | "wkx": "^0.4.8" 3128 | }, 3129 | "dependencies": { 3130 | "debug": { 3131 | "version": "4.1.1", 3132 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 3133 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 3134 | "requires": { 3135 | "ms": "^2.1.1" 3136 | } 3137 | }, 3138 | "ms": { 3139 | "version": "2.1.2", 3140 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3141 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 3142 | } 3143 | } 3144 | }, 3145 | "sequelize-cli": { 3146 | "version": "5.5.1", 3147 | "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-5.5.1.tgz", 3148 | "integrity": "sha512-ZM4kUZvY3y14y+Rq3cYxGH7YDJz11jWHcN2p2x7rhAIemouu4CEXr5ebw30lzTBtyXV4j2kTO+nUjZOqzG7k+Q==", 3149 | "requires": { 3150 | "bluebird": "^3.5.3", 3151 | "cli-color": "^1.4.0", 3152 | "fs-extra": "^7.0.1", 3153 | "js-beautify": "^1.8.8", 3154 | "lodash": "^4.17.5", 3155 | "resolve": "^1.5.0", 3156 | "umzug": "^2.1.0", 3157 | "yargs": "^13.1.0" 3158 | } 3159 | }, 3160 | "sequelize-pool": { 3161 | "version": "2.3.0", 3162 | "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-2.3.0.tgz", 3163 | "integrity": "sha512-Ibz08vnXvkZ8LJTiUOxRcj1Ckdn7qafNZ2t59jYHMX1VIebTAOYefWdRYFt6z6+hy52WGthAHAoLc9hvk3onqA==" 3164 | }, 3165 | "set-blocking": { 3166 | "version": "2.0.0", 3167 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 3168 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 3169 | }, 3170 | "setprototypeof": { 3171 | "version": "1.1.1", 3172 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 3173 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 3174 | }, 3175 | "shebang-command": { 3176 | "version": "1.2.0", 3177 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3178 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 3179 | "dev": true, 3180 | "requires": { 3181 | "shebang-regex": "^1.0.0" 3182 | } 3183 | }, 3184 | "shebang-regex": { 3185 | "version": "1.0.0", 3186 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3187 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 3188 | "dev": true 3189 | }, 3190 | "shimmer": { 3191 | "version": "1.2.1", 3192 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 3193 | "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 3194 | }, 3195 | "sigmund": { 3196 | "version": "1.0.1", 3197 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 3198 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" 3199 | }, 3200 | "signal-exit": { 3201 | "version": "3.0.2", 3202 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 3203 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 3204 | }, 3205 | "slice-ansi": { 3206 | "version": "2.1.0", 3207 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 3208 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 3209 | "dev": true, 3210 | "requires": { 3211 | "ansi-styles": "^3.2.0", 3212 | "astral-regex": "^1.0.0", 3213 | "is-fullwidth-code-point": "^2.0.0" 3214 | } 3215 | }, 3216 | "spdx-correct": { 3217 | "version": "3.1.0", 3218 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", 3219 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", 3220 | "dev": true, 3221 | "requires": { 3222 | "spdx-expression-parse": "^3.0.0", 3223 | "spdx-license-ids": "^3.0.0" 3224 | } 3225 | }, 3226 | "spdx-exceptions": { 3227 | "version": "2.2.0", 3228 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", 3229 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", 3230 | "dev": true 3231 | }, 3232 | "spdx-expression-parse": { 3233 | "version": "3.0.0", 3234 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 3235 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 3236 | "dev": true, 3237 | "requires": { 3238 | "spdx-exceptions": "^2.1.0", 3239 | "spdx-license-ids": "^3.0.0" 3240 | } 3241 | }, 3242 | "spdx-license-ids": { 3243 | "version": "3.0.5", 3244 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", 3245 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", 3246 | "dev": true 3247 | }, 3248 | "split": { 3249 | "version": "1.0.1", 3250 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", 3251 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", 3252 | "requires": { 3253 | "through": "2" 3254 | } 3255 | }, 3256 | "sprintf-js": { 3257 | "version": "1.0.3", 3258 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3259 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3260 | "dev": true 3261 | }, 3262 | "statuses": { 3263 | "version": "1.5.0", 3264 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 3265 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 3266 | }, 3267 | "string-width": { 3268 | "version": "2.1.1", 3269 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3270 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3271 | "requires": { 3272 | "is-fullwidth-code-point": "^2.0.0", 3273 | "strip-ansi": "^4.0.0" 3274 | } 3275 | }, 3276 | "string.prototype.trimleft": { 3277 | "version": "2.1.0", 3278 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", 3279 | "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", 3280 | "dev": true, 3281 | "requires": { 3282 | "define-properties": "^1.1.3", 3283 | "function-bind": "^1.1.1" 3284 | } 3285 | }, 3286 | "string.prototype.trimright": { 3287 | "version": "2.1.0", 3288 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", 3289 | "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", 3290 | "dev": true, 3291 | "requires": { 3292 | "define-properties": "^1.1.3", 3293 | "function-bind": "^1.1.1" 3294 | } 3295 | }, 3296 | "string_decoder": { 3297 | "version": "1.1.1", 3298 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3299 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3300 | "requires": { 3301 | "safe-buffer": "~5.1.0" 3302 | } 3303 | }, 3304 | "strip-ansi": { 3305 | "version": "4.0.0", 3306 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3307 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3308 | "requires": { 3309 | "ansi-regex": "^3.0.0" 3310 | } 3311 | }, 3312 | "strip-bom": { 3313 | "version": "3.0.0", 3314 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 3315 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 3316 | "dev": true 3317 | }, 3318 | "strip-eof": { 3319 | "version": "1.0.0", 3320 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 3321 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 3322 | "dev": true 3323 | }, 3324 | "strip-json-comments": { 3325 | "version": "2.0.1", 3326 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 3327 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 3328 | }, 3329 | "supports-color": { 3330 | "version": "5.5.0", 3331 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3332 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3333 | "dev": true, 3334 | "requires": { 3335 | "has-flag": "^3.0.0" 3336 | } 3337 | }, 3338 | "table": { 3339 | "version": "5.4.6", 3340 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 3341 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 3342 | "dev": true, 3343 | "requires": { 3344 | "ajv": "^6.10.2", 3345 | "lodash": "^4.17.14", 3346 | "slice-ansi": "^2.1.0", 3347 | "string-width": "^3.0.0" 3348 | }, 3349 | "dependencies": { 3350 | "ansi-regex": { 3351 | "version": "4.1.0", 3352 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 3353 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 3354 | "dev": true 3355 | }, 3356 | "string-width": { 3357 | "version": "3.1.0", 3358 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 3359 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 3360 | "dev": true, 3361 | "requires": { 3362 | "emoji-regex": "^7.0.1", 3363 | "is-fullwidth-code-point": "^2.0.0", 3364 | "strip-ansi": "^5.1.0" 3365 | } 3366 | }, 3367 | "strip-ansi": { 3368 | "version": "5.2.0", 3369 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 3370 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 3371 | "dev": true, 3372 | "requires": { 3373 | "ansi-regex": "^4.1.0" 3374 | } 3375 | } 3376 | } 3377 | }, 3378 | "tar": { 3379 | "version": "4.4.13", 3380 | "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", 3381 | "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", 3382 | "requires": { 3383 | "chownr": "^1.1.1", 3384 | "fs-minipass": "^1.2.5", 3385 | "minipass": "^2.8.6", 3386 | "minizlib": "^1.2.1", 3387 | "mkdirp": "^0.5.0", 3388 | "safe-buffer": "^5.1.2", 3389 | "yallist": "^3.0.3" 3390 | }, 3391 | "dependencies": { 3392 | "yallist": { 3393 | "version": "3.1.1", 3394 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 3395 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 3396 | } 3397 | } 3398 | }, 3399 | "term-size": { 3400 | "version": "1.2.0", 3401 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", 3402 | "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", 3403 | "dev": true, 3404 | "requires": { 3405 | "execa": "^0.7.0" 3406 | } 3407 | }, 3408 | "text-table": { 3409 | "version": "0.2.0", 3410 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3411 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3412 | "dev": true 3413 | }, 3414 | "through": { 3415 | "version": "2.3.8", 3416 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3417 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 3418 | }, 3419 | "timed-out": { 3420 | "version": "4.0.1", 3421 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", 3422 | "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", 3423 | "dev": true 3424 | }, 3425 | "timers-ext": { 3426 | "version": "0.1.7", 3427 | "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", 3428 | "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", 3429 | "requires": { 3430 | "es5-ext": "~0.10.46", 3431 | "next-tick": "1" 3432 | } 3433 | }, 3434 | "tmp": { 3435 | "version": "0.0.33", 3436 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 3437 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 3438 | "dev": true, 3439 | "requires": { 3440 | "os-tmpdir": "~1.0.2" 3441 | } 3442 | }, 3443 | "to-regex-range": { 3444 | "version": "5.0.1", 3445 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3446 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3447 | "dev": true, 3448 | "requires": { 3449 | "is-number": "^7.0.0" 3450 | } 3451 | }, 3452 | "toidentifier": { 3453 | "version": "1.0.0", 3454 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 3455 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 3456 | }, 3457 | "toposort-class": { 3458 | "version": "1.0.1", 3459 | "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", 3460 | "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" 3461 | }, 3462 | "touch": { 3463 | "version": "3.1.0", 3464 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 3465 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", 3466 | "dev": true, 3467 | "requires": { 3468 | "nopt": "~1.0.10" 3469 | } 3470 | }, 3471 | "tslib": { 3472 | "version": "1.10.0", 3473 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 3474 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", 3475 | "dev": true 3476 | }, 3477 | "tsscmp": { 3478 | "version": "1.0.6", 3479 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", 3480 | "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" 3481 | }, 3482 | "type": { 3483 | "version": "1.2.0", 3484 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", 3485 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" 3486 | }, 3487 | "type-check": { 3488 | "version": "0.3.2", 3489 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 3490 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 3491 | "dev": true, 3492 | "requires": { 3493 | "prelude-ls": "~1.1.2" 3494 | } 3495 | }, 3496 | "type-fest": { 3497 | "version": "0.8.1", 3498 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 3499 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 3500 | "dev": true 3501 | }, 3502 | "type-is": { 3503 | "version": "1.6.18", 3504 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 3505 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 3506 | "requires": { 3507 | "media-typer": "0.3.0", 3508 | "mime-types": "~2.1.24" 3509 | } 3510 | }, 3511 | "umzug": { 3512 | "version": "2.2.0", 3513 | "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", 3514 | "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", 3515 | "requires": { 3516 | "babel-runtime": "^6.23.0", 3517 | "bluebird": "^3.5.3" 3518 | } 3519 | }, 3520 | "undefsafe": { 3521 | "version": "2.0.2", 3522 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", 3523 | "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", 3524 | "dev": true, 3525 | "requires": { 3526 | "debug": "^2.2.0" 3527 | }, 3528 | "dependencies": { 3529 | "debug": { 3530 | "version": "2.6.9", 3531 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 3532 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 3533 | "dev": true, 3534 | "requires": { 3535 | "ms": "2.0.0" 3536 | } 3537 | } 3538 | } 3539 | }, 3540 | "underscore": { 3541 | "version": "1.9.1", 3542 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", 3543 | "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" 3544 | }, 3545 | "unique-string": { 3546 | "version": "1.0.0", 3547 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", 3548 | "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", 3549 | "dev": true, 3550 | "requires": { 3551 | "crypto-random-string": "^1.0.0" 3552 | } 3553 | }, 3554 | "universalify": { 3555 | "version": "0.1.2", 3556 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3557 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 3558 | }, 3559 | "unpipe": { 3560 | "version": "1.0.0", 3561 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3562 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 3563 | }, 3564 | "unzip-response": { 3565 | "version": "2.0.1", 3566 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", 3567 | "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", 3568 | "dev": true 3569 | }, 3570 | "update-notifier": { 3571 | "version": "2.5.0", 3572 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", 3573 | "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", 3574 | "dev": true, 3575 | "requires": { 3576 | "boxen": "^1.2.1", 3577 | "chalk": "^2.0.1", 3578 | "configstore": "^3.0.0", 3579 | "import-lazy": "^2.1.0", 3580 | "is-ci": "^1.0.10", 3581 | "is-installed-globally": "^0.1.0", 3582 | "is-npm": "^1.0.0", 3583 | "latest-version": "^3.0.0", 3584 | "semver-diff": "^2.0.0", 3585 | "xdg-basedir": "^3.0.0" 3586 | } 3587 | }, 3588 | "uri-js": { 3589 | "version": "4.2.2", 3590 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 3591 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 3592 | "dev": true, 3593 | "requires": { 3594 | "punycode": "^2.1.0" 3595 | } 3596 | }, 3597 | "urijs": { 3598 | "version": "1.19.2", 3599 | "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.2.tgz", 3600 | "integrity": "sha512-s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w==" 3601 | }, 3602 | "url-parse-lax": { 3603 | "version": "1.0.0", 3604 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 3605 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", 3606 | "dev": true, 3607 | "requires": { 3608 | "prepend-http": "^1.0.1" 3609 | } 3610 | }, 3611 | "util-deprecate": { 3612 | "version": "1.0.2", 3613 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3614 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 3615 | }, 3616 | "uuid": { 3617 | "version": "3.3.3", 3618 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", 3619 | "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" 3620 | }, 3621 | "v8-compile-cache": { 3622 | "version": "2.1.0", 3623 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", 3624 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", 3625 | "dev": true 3626 | }, 3627 | "validate-npm-package-license": { 3628 | "version": "3.0.4", 3629 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 3630 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 3631 | "dev": true, 3632 | "requires": { 3633 | "spdx-correct": "^3.0.0", 3634 | "spdx-expression-parse": "^3.0.0" 3635 | } 3636 | }, 3637 | "validator": { 3638 | "version": "10.11.0", 3639 | "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", 3640 | "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" 3641 | }, 3642 | "vary": { 3643 | "version": "1.1.2", 3644 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3645 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 3646 | }, 3647 | "vscode-json-languageservice": { 3648 | "version": "3.4.7", 3649 | "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.4.7.tgz", 3650 | "integrity": "sha512-y3MN2+/yph3yoIHGmHu4ScYpm285L58XVvfGkd49xTQzLja4apxSbwzsYcP9QsqS0W7KuvoyiPhqksiudoMwjg==", 3651 | "dev": true, 3652 | "requires": { 3653 | "jsonc-parser": "^2.2.0", 3654 | "vscode-languageserver-textdocument": "^1.0.0-next.4", 3655 | "vscode-languageserver-types": "^3.15.0-next.6", 3656 | "vscode-nls": "^4.1.1", 3657 | "vscode-uri": "^2.1.0" 3658 | } 3659 | }, 3660 | "vscode-languageserver-textdocument": { 3661 | "version": "1.0.0-next.5", 3662 | "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.0-next.5.tgz", 3663 | "integrity": "sha512-1jp/zAidN/bF/sqPimhBX1orH5G4rzRw63k75TesukJDuxm8yW79ECStWbDSy41BHGOwSGN4M69QFvhancSr5A==", 3664 | "dev": true 3665 | }, 3666 | "vscode-languageserver-types": { 3667 | "version": "3.15.0-next.8", 3668 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.8.tgz", 3669 | "integrity": "sha512-AEfWrSNyeamWMKPehh/kd3nBnKD9ZGCPhzfxMnW9YNqElSh28G2+Puk3knIQWyaWyV6Bzh28ok9BRJsPzXFCkQ==", 3670 | "dev": true 3671 | }, 3672 | "vscode-nls": { 3673 | "version": "4.1.1", 3674 | "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.1.tgz", 3675 | "integrity": "sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==", 3676 | "dev": true 3677 | }, 3678 | "vscode-uri": { 3679 | "version": "2.1.1", 3680 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.1.tgz", 3681 | "integrity": "sha512-eY9jmGoEnVf8VE8xr5znSah7Qt1P/xsCdErz+g8HYZtJ7bZqKH5E3d+6oVNm1AC/c6IHUDokbmVXKOi4qPAC9A==", 3682 | "dev": true 3683 | }, 3684 | "which": { 3685 | "version": "1.3.1", 3686 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3687 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3688 | "dev": true, 3689 | "requires": { 3690 | "isexe": "^2.0.0" 3691 | } 3692 | }, 3693 | "which-module": { 3694 | "version": "2.0.0", 3695 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 3696 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" 3697 | }, 3698 | "wide-align": { 3699 | "version": "1.1.3", 3700 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 3701 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 3702 | "requires": { 3703 | "string-width": "^1.0.2 || 2" 3704 | } 3705 | }, 3706 | "widest-line": { 3707 | "version": "2.0.1", 3708 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", 3709 | "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", 3710 | "dev": true, 3711 | "requires": { 3712 | "string-width": "^2.1.1" 3713 | } 3714 | }, 3715 | "wkx": { 3716 | "version": "0.4.8", 3717 | "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.4.8.tgz", 3718 | "integrity": "sha512-ikPXMM9IR/gy/LwiOSqWlSL3X/J5uk9EO2hHNRXS41eTLXaUFEVw9fn/593jW/tE5tedNg8YjT5HkCa4FqQZyQ==", 3719 | "requires": { 3720 | "@types/node": "*" 3721 | } 3722 | }, 3723 | "word-wrap": { 3724 | "version": "1.2.3", 3725 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 3726 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 3727 | "dev": true 3728 | }, 3729 | "wrap-ansi": { 3730 | "version": "5.1.0", 3731 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 3732 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 3733 | "requires": { 3734 | "ansi-styles": "^3.2.0", 3735 | "string-width": "^3.0.0", 3736 | "strip-ansi": "^5.0.0" 3737 | }, 3738 | "dependencies": { 3739 | "ansi-regex": { 3740 | "version": "4.1.0", 3741 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 3742 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 3743 | }, 3744 | "string-width": { 3745 | "version": "3.1.0", 3746 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 3747 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 3748 | "requires": { 3749 | "emoji-regex": "^7.0.1", 3750 | "is-fullwidth-code-point": "^2.0.0", 3751 | "strip-ansi": "^5.1.0" 3752 | } 3753 | }, 3754 | "strip-ansi": { 3755 | "version": "5.2.0", 3756 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 3757 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 3758 | "requires": { 3759 | "ansi-regex": "^4.1.0" 3760 | } 3761 | } 3762 | } 3763 | }, 3764 | "wrappy": { 3765 | "version": "1.0.2", 3766 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3767 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3768 | }, 3769 | "write": { 3770 | "version": "1.0.3", 3771 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 3772 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 3773 | "dev": true, 3774 | "requires": { 3775 | "mkdirp": "^0.5.1" 3776 | } 3777 | }, 3778 | "write-file-atomic": { 3779 | "version": "2.4.3", 3780 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", 3781 | "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", 3782 | "dev": true, 3783 | "requires": { 3784 | "graceful-fs": "^4.1.11", 3785 | "imurmurhash": "^0.1.4", 3786 | "signal-exit": "^3.0.2" 3787 | } 3788 | }, 3789 | "xdg-basedir": { 3790 | "version": "3.0.0", 3791 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", 3792 | "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", 3793 | "dev": true 3794 | }, 3795 | "xtend": { 3796 | "version": "4.0.2", 3797 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 3798 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 3799 | }, 3800 | "y18n": { 3801 | "version": "4.0.0", 3802 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 3803 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" 3804 | }, 3805 | "yallist": { 3806 | "version": "2.1.2", 3807 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 3808 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" 3809 | }, 3810 | "yargs": { 3811 | "version": "13.3.0", 3812 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", 3813 | "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", 3814 | "requires": { 3815 | "cliui": "^5.0.0", 3816 | "find-up": "^3.0.0", 3817 | "get-caller-file": "^2.0.1", 3818 | "require-directory": "^2.1.1", 3819 | "require-main-filename": "^2.0.0", 3820 | "set-blocking": "^2.0.0", 3821 | "string-width": "^3.0.0", 3822 | "which-module": "^2.0.0", 3823 | "y18n": "^4.0.0", 3824 | "yargs-parser": "^13.1.1" 3825 | }, 3826 | "dependencies": { 3827 | "ansi-regex": { 3828 | "version": "4.1.0", 3829 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 3830 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 3831 | }, 3832 | "string-width": { 3833 | "version": "3.1.0", 3834 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 3835 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 3836 | "requires": { 3837 | "emoji-regex": "^7.0.1", 3838 | "is-fullwidth-code-point": "^2.0.0", 3839 | "strip-ansi": "^5.1.0" 3840 | } 3841 | }, 3842 | "strip-ansi": { 3843 | "version": "5.2.0", 3844 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 3845 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 3846 | "requires": { 3847 | "ansi-regex": "^4.1.0" 3848 | } 3849 | } 3850 | } 3851 | }, 3852 | "yargs-parser": { 3853 | "version": "13.1.2", 3854 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 3855 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 3856 | "requires": { 3857 | "camelcase": "^5.0.0", 3858 | "decamelize": "^1.2.0" 3859 | }, 3860 | "dependencies": { 3861 | "camelcase": { 3862 | "version": "5.3.1", 3863 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 3864 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" 3865 | } 3866 | } 3867 | }, 3868 | "ylru": { 3869 | "version": "1.2.1", 3870 | "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", 3871 | "integrity": "sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==" 3872 | } 3873 | } 3874 | } 3875 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jwt-rs", 3 | "version": "1.0.0", 4 | "description": "Repositório do Workshop de JWT para a Rocketseat", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "npm run sequelize:migrate && node src/index.js", 8 | "dev": "NODE_ENV=dev nodemon --inspect=0.0.0.0 src/index.js", 9 | "lint": "eslint ./src ./config --ext .json --ext .js --fix", 10 | "sequelize:migrate": "sequelize db:migrate --env database" 11 | }, 12 | "engines": { 13 | "node": ">=12" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/askmon/jwt-rocketseat.git" 18 | }, 19 | "keywords": [], 20 | "author": "", 21 | "license": "ISC", 22 | "bugs": { 23 | "url": "https://github.com/askmon/jwt-rocketseat/issues" 24 | }, 25 | "homepage": "https://github.com/askmon/jwt-rocketseat#readme", 26 | "dependencies": { 27 | "bcrypt": "^5.0.0", 28 | "jsonwebtoken": "^8.5.1", 29 | "koa": "^2.11.0", 30 | "koa-bodyparser": "^4.2.1", 31 | "koa-router": "^7.4.0", 32 | "pg": "^7.14.0", 33 | "pg-hstore": "^2.3.3", 34 | "ramda": "^0.26.1", 35 | "sequelize": "^5.21.2", 36 | "sequelize-cli": "^5.5.1" 37 | }, 38 | "devDependencies": { 39 | "dotenv": "^8.2.0", 40 | "nodemon": "^2.0.0", 41 | "eslint": "^6.4.0", 42 | "eslint-config-standard": "^14.1.0", 43 | "eslint-plugin-import": "^2.18.2", 44 | "eslint-plugin-json": "^1.4.0", 45 | "eslint-plugin-node": "^10.0.0", 46 | "eslint-plugin-promise": "^4.2.1", 47 | "eslint-plugin-standard": "^4.0.1" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/handlers/auth.js: -------------------------------------------------------------------------------- 1 | const auth = require('../services/auth') 2 | 3 | const authenticate = async ctx => { 4 | const { email, password } = ctx.request.body 5 | ctx.body = { 6 | token: await auth.authenticate({ email, password }), 7 | } 8 | } 9 | 10 | module.exports = { 11 | authenticate, 12 | } 13 | -------------------------------------------------------------------------------- /src/handlers/users.js: -------------------------------------------------------------------------------- 1 | const userService = require('../services/user') 2 | 3 | const getAllUsers = async ctx => { 4 | ctx.body = await userService.getUsers() 5 | } 6 | 7 | const createUser = async ctx => { 8 | ctx.body = await userService.createUser(ctx.request.body) 9 | } 10 | 11 | module.exports = { 12 | getAllUsers, 13 | createUser, 14 | } 15 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const Koa = require('koa') 2 | const bodyParser = require('koa-bodyparser') 3 | 4 | const router = require('./routes') 5 | const config = require('../config') 6 | 7 | const app = new Koa() 8 | 9 | app.use(bodyParser()) 10 | app.use(router.routes()) 11 | 12 | const port = config.server.port 13 | 14 | app.listen(port) 15 | .on('listening', () => console.log(`Listening on port ${port}`)) 16 | -------------------------------------------------------------------------------- /src/middlewares/auth.js: -------------------------------------------------------------------------------- 1 | const { verify } = require('../services/token') 2 | 3 | const extractToken = ctx => { 4 | const authorization = ctx.headers.authorization || '' 5 | return authorization.replace('Bearer ', '') 6 | } 7 | 8 | const handleError = error => { 9 | console.error('Failed to verify token', error) 10 | // illustration purposes only 11 | // for production-ready code, use error codes/types and a catalog (maps codes -> responses) 12 | 13 | /* eslint-disable prefer-promise-reject-errors */ 14 | return Promise.reject({ 15 | status: 401, 16 | message: 'Invalid authentication token', 17 | code: 'UNAUTHENTICATED', 18 | }) 19 | } 20 | 21 | module.exports = (ctx, next) => { 22 | const token = extractToken(ctx) 23 | return verify(token) 24 | .catch(handleError) 25 | .then(({ role }) => (ctx.state.role = role)) 26 | .then(next) 27 | } 28 | -------------------------------------------------------------------------------- /src/middlewares/error.js: -------------------------------------------------------------------------------- 1 | const handleError = ctx => error => { 2 | console.error(error) 3 | const { status = 500, code = 'INTERNAL_SERVER_ERROR', message } = error 4 | ctx.status = status 5 | ctx.body = { 6 | statusCode: status, 7 | message, 8 | code, 9 | } 10 | } 11 | 12 | module.exports = (ctx, next) => 13 | next() 14 | .catch(handleError(ctx)) 15 | -------------------------------------------------------------------------------- /src/models/index.js: -------------------------------------------------------------------------------- 1 | // auto-generated by sequelize-cli 2 | 3 | const fs = require('fs') 4 | const path = require('path') 5 | const Sequelize = require('sequelize') 6 | const basename = path.basename(__filename) 7 | const { database: config } = require('../../config') 8 | 9 | const db = {} 10 | 11 | const sequelize = new Sequelize(config.url, config) 12 | 13 | fs 14 | .readdirSync(__dirname) 15 | .filter(file => (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js')) 16 | .forEach(file => { 17 | const model = sequelize.import(path.join(__dirname, file)) 18 | db[model.name] = model 19 | }) 20 | 21 | Object.keys(db).forEach(modelName => { 22 | if (db[modelName].associate) { 23 | db[modelName].associate(db) 24 | } 25 | }) 26 | 27 | db.sequelize = sequelize 28 | db.Sequelize = Sequelize 29 | 30 | db.authenticate = sequelize.authenticate.bind(sequelize) 31 | 32 | module.exports = db 33 | -------------------------------------------------------------------------------- /src/models/user.js: -------------------------------------------------------------------------------- 1 | module.exports = (sequelize, DataTypes) => { 2 | const schema = { 3 | name: DataTypes.STRING, 4 | email: DataTypes.STRING, 5 | password: DataTypes.STRING, 6 | role: DataTypes.STRING 7 | } 8 | const modelOptions = { 9 | tableName: 'users', 10 | } 11 | const User = sequelize.define('User', schema, modelOptions) 12 | 13 | User.associate = models => { 14 | // associations can be defined here 15 | } 16 | return User 17 | } 18 | -------------------------------------------------------------------------------- /src/routes.js: -------------------------------------------------------------------------------- 1 | const Router = require('koa-router') 2 | 3 | // middlewares 4 | const error = require('./middlewares/error') 5 | const authenticated = require('./middlewares/auth') 6 | 7 | // handlers 8 | const users = require('./handlers/users') 9 | const auth = require('./handlers/auth') 10 | 11 | const router = new Router() 12 | 13 | router.use(error) 14 | 15 | router.get('/users', users.getAllUsers) 16 | router.post('/users', authenticated, users.createUser) 17 | 18 | router.post('/auth', auth.authenticate) 19 | 20 | module.exports = router 21 | -------------------------------------------------------------------------------- /src/services/auth.js: -------------------------------------------------------------------------------- 1 | const users = require('./user') 2 | const crypto = require('./crypto') 3 | const token = require('./token') 4 | 5 | // illustration purposes only 6 | // for production-ready code, use error codes/types and a catalog (maps codes -> responses) 7 | 8 | /* eslint-disable prefer-promise-reject-errors */ 9 | const authFailed = email => Promise.reject({ 10 | status: 401, 11 | code: 'UNAUTHENTICATED', 12 | message: `Failed to authenticate user ${email}`, 13 | }) 14 | 15 | const authenticate = async ({ email, password }) => { 16 | const user = await users.findByEmail(email) 17 | if (!user) { 18 | return authFailed(email) 19 | } 20 | const isMatch = await crypto.compare(password, user.password) 21 | if (!isMatch) { 22 | return authFailed(email) 23 | } 24 | return token.sign(user.dataValues) 25 | } 26 | 27 | module.exports = { 28 | authenticate, 29 | } 30 | -------------------------------------------------------------------------------- /src/services/crypto.js: -------------------------------------------------------------------------------- 1 | const bcrypt = require('bcrypt') 2 | const { crypto: config } = require('../../config') 3 | 4 | const hash = value => 5 | bcrypt 6 | .hash(value, config.hashSaltRounds) 7 | 8 | const compare = (value, hash) => 9 | bcrypt.compare(value, hash) 10 | 11 | module.exports = { 12 | hash, 13 | compare, 14 | } 15 | -------------------------------------------------------------------------------- /src/services/token.js: -------------------------------------------------------------------------------- 1 | const sign = _ => "Generated token" 2 | 3 | const verify = _ => new Promise((resolve, reject) => resolve(true)) 4 | 5 | module.exports = { 6 | sign, 7 | verify, 8 | } 9 | -------------------------------------------------------------------------------- /src/services/user.js: -------------------------------------------------------------------------------- 1 | const R = require('ramda') 2 | 3 | const crypto = require('./crypto') 4 | const { User } = require('../models') 5 | 6 | const serializeUsers = users => 7 | users 8 | .map(user => user.get({ plain: true })) 9 | .map(R.omit(['password'])) 10 | 11 | const getUsers = () => 12 | User 13 | .findAll({}) 14 | .then(serializeUsers) 15 | 16 | const createUser = user => 17 | crypto 18 | .hash(user.password) 19 | .then(hash => User.create({ 20 | ...user, 21 | password: hash, 22 | })) 23 | 24 | const findByEmail = email => 25 | User.findOne({ where: { email } }) 26 | 27 | module.exports = { 28 | getUsers, 29 | createUser, 30 | findByEmail, 31 | } 32 | --------------------------------------------------------------------------------