├── .gitignore ├── README.md ├── app.js ├── controllers └── PatientController.js ├── data.json ├── middlewares ├── corona.js └── validate.js ├── package.json ├── routes.js ├── server.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Express 3 |

4 | 5 |

Express Tutorial

6 |

7 | A Rest API that register patients and detect Corona symphtoms 8 |

9 | 10 | 11 |

12 | About the project   |    13 | Goals   |    14 | Installation   |    15 | Routes   |    16 | Licence 17 |

18 | 19 | 20 | ## :rocket: About the project 21 | An API Rest made with Express to register patients and detect Corona symptoms. The file system API provided by Node was used to persist patients data, since the goal of the tutorial was to focus on Express Fundamentals and not to set up a database. 22 | 23 | 24 | ## :ballot_box_with_check: Goals 25 | Understand how to create a server with Express, setting the routes, separating the entity operations with controllers and creating middlewares to do configurations or logics between two points. 26 | 27 | 28 | ## :checkered_flag: Installation 29 | First of all, make sure that you have Node.js installed on your machine. 30 | Choose a package manager (NPM or Yarn) 31 | 32 |
33 | 34 | Now, to install the dependencies 35 | 36 | ``` 37 | yarn install 38 | ``` 39 | 40 | To start the application 41 | ``` 42 | yarn dev 43 | 44 | ``` 45 | 46 | ## :incoming_envelope: Routes 47 | 48 | ## Status Codes 49 | 50 | This API returns the following status codes: 51 | 52 | | Status Code | Description | 53 | | :--- | :--- | 54 | | 200 | `OK` | 55 | | 401 | `UNAUTHORIZED` | 56 | | 404 | `NOT FOUND` | 57 | | 500 | `INTERNAL SERVER ERROR` | 58 | 59 | ## :memo: Licence 60 | 61 | MIT Licence. See the file [LICENSE](LICENSE.md) for more details. 62 | 63 | --- 64 | 65 | Made with ♥ by Laura :wave: [See my linkedin!](https://www.linkedin.com/in/laurabeatris/) 66 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const routes = require('./routes') 3 | 4 | class App { 5 | constructor () { 6 | this.server = express() 7 | this.middlewares() 8 | this.routes() 9 | } 10 | 11 | routes () { 12 | this.server.use(routes) 13 | } 14 | 15 | middlewares () { 16 | this.server.use(express.json()) 17 | } 18 | } 19 | 20 | module.exports = new App().server -------------------------------------------------------------------------------- /controllers/PatientController.js: -------------------------------------------------------------------------------- 1 | const data = require('../data.json') 2 | const fs = require('fs') 3 | 4 | class PatientController { 5 | store (req, res) { 6 | const { name, age, weight, height, symptoms } = req.body; 7 | const id = data.patients.length + 1; 8 | 9 | data.patients.push({id, name, age, weight, height, symptoms }) 10 | 11 | // Registering the patient 12 | fs.writeFile("data.json", JSON.stringify(data, null, 2), (error) => { 13 | if (error) return res.status(error.status).json({ 14 | error: { 15 | message: "Something when wrong while registering the patient", 16 | name: error.name 17 | } 18 | }) 19 | 20 | return res.json({id, name, age, weight, height, symptoms }) 21 | }) 22 | } 23 | 24 | update (req, res) { 25 | const patientFound = data.patients.find(patient => patient.id == req.params.id) 26 | if (!patientFound) return res.status(404).json({error: { message: "Patient not found"}}) 27 | 28 | const patient = { 29 | ...patientFound, 30 | ...req.body 31 | } 32 | 33 | data.patients[patient.id - 1] = patient 34 | 35 | return res.json(patient) 36 | } 37 | 38 | index (req, res) { 39 | return res.json(data.patients) 40 | } 41 | 42 | show (req, res) { 43 | const patientFound = data.patients.find(patient => patient.id == req.params.id) 44 | if (!patientFound) return res.status(404).json({error: { message: "Patient not found"}}) 45 | return res.json(patientFound) 46 | } 47 | 48 | delete (req, res) { 49 | const filteredPatients = data.patients.filter(patient => patient.id != req.params.id) 50 | data.patients = filteredPatients 51 | 52 | return res.json(data.patients) 53 | } 54 | } 55 | 56 | module.exports = new PatientController() -------------------------------------------------------------------------------- /data.json: -------------------------------------------------------------------------------- 1 | { 2 | "patients": [ 3 | { 4 | "id": 1, 5 | "name": "Laura Beatris", 6 | "age": 17, 7 | "weight": 55, 8 | "height": 1.51, 9 | "symptoms": [ 10 | "fever", 11 | "cough" 12 | ] 13 | }, 14 | { 15 | "id": 2, 16 | "name": "Junior", 17 | "age": 17, 18 | "weight": 55, 19 | "height": 1.51, 20 | "symptoms": [ 21 | "fever" 22 | ] 23 | }, 24 | { 25 | "id": 3, 26 | "name": "Luis", 27 | "age": 17, 28 | "weight": 100, 29 | "height": 1.51, 30 | "symptoms": [ 31 | "fever" 32 | ] 33 | }, 34 | { 35 | "id": 4, 36 | "name": "Adriano", 37 | "age": 80, 38 | "weight": 100, 39 | "height": 1.51, 40 | "symptoms": [ 41 | "fever", 42 | "cough" 43 | ] 44 | }, 45 | { 46 | "id": 5, 47 | "name": "Adriano", 48 | "age": "", 49 | "weight": 100, 50 | "height": 1.51, 51 | "symptoms": [ 52 | "fever", 53 | "cough" 54 | ] 55 | }, 56 | { 57 | "id": 6, 58 | "name": "Adriano Silveira", 59 | "age": 80, 60 | "weight": 100, 61 | "height": 1.51, 62 | "symptoms": [ 63 | "fever", 64 | "cough" 65 | ] 66 | } 67 | ] 68 | } -------------------------------------------------------------------------------- /middlewares/corona.js: -------------------------------------------------------------------------------- 1 | module.exports = (req, res, next) => { 2 | const { symptoms } = req.body 3 | 4 | if ( 5 | symptoms.includes("fever") && 6 | symptoms.includes("cough") && 7 | symptoms.includes("muscle pain") 8 | ) { 9 | return res.status(401).json({message: `The patient ${req.body.name} has corona virus`}) 10 | } else { 11 | return next() 12 | } 13 | } -------------------------------------------------------------------------------- /middlewares/validate.js: -------------------------------------------------------------------------------- 1 | module.exports = (req, res, next) => { 2 | const dataKeys = Object.keys(req.body) 3 | dataKeys.forEach(key => { 4 | if (!req.body[key]) return res.json({error: `The field ${key} has an invalid value`}) 5 | }) 6 | 7 | return next() 8 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-tutorial", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "repository": "git@github.com:LauraBeatris/express-tutorial.git", 6 | "author": "LauraBeatris ", 7 | "license": "MIT", 8 | "dependencies": { 9 | "express": "^4.17.1" 10 | }, 11 | "devDependencies": { 12 | "nodemon": "^2.0.2" 13 | }, 14 | "scripts": { 15 | "dev": "nodemon server.js" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /routes.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const router = express.Router(); 3 | 4 | /* 1 - Criação de um servidor Express */ 5 | /* 2 - Como configurar as rotas do app */ 6 | /* 3 - Métodos http e operações CRUD */ 7 | /* 4 - Separação de operaçôes por meio de Controllers */ 8 | /* 5 - Criação de middlewares para executar lógicas */ 9 | 10 | /* Controllers */ 11 | const PatientController = require('./controllers/PatientController') 12 | 13 | /* Middlewares */ 14 | const checkCorona = require('./middlewares/corona') 15 | const validateBody = require('./middlewares/validate') 16 | 17 | router.get("/", (_, res) => res.json({message: "Hello World"})); 18 | 19 | router.use(validateBody) 20 | 21 | // Creating patient - POST 22 | router.post('/patients', checkCorona, PatientController.store) 23 | 24 | // Read - Listing patients - GET (INDEX) 25 | router.get('/patients', PatientController.index) 26 | 27 | // Read - Showing a patient - GET (SHOW) 28 | router.get('/patients/:id', PatientController.show) 29 | 30 | // Update - Updating a patient - PUT 31 | router.put('/patients/:id', PatientController.update) 32 | 33 | // Delete - Deleting a patient - DELETE 34 | router.delete('/patients/:id', PatientController.delete) 35 | 36 | module.exports = router; 37 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const app = require('./app') 2 | 3 | app.listen(3000) -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abbrev@1: 6 | version "1.1.1" 7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 8 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 9 | 10 | accepts@~1.3.7: 11 | version "1.3.7" 12 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 13 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 14 | dependencies: 15 | mime-types "~2.1.24" 16 | negotiator "0.6.2" 17 | 18 | ansi-align@^2.0.0: 19 | version "2.0.0" 20 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" 21 | integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= 22 | dependencies: 23 | string-width "^2.0.0" 24 | 25 | ansi-regex@^3.0.0: 26 | version "3.0.0" 27 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 28 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 29 | 30 | ansi-styles@^3.2.1: 31 | version "3.2.1" 32 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 33 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 34 | dependencies: 35 | color-convert "^1.9.0" 36 | 37 | anymatch@~3.1.1: 38 | version "3.1.1" 39 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 40 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 41 | dependencies: 42 | normalize-path "^3.0.0" 43 | picomatch "^2.0.4" 44 | 45 | array-flatten@1.1.1: 46 | version "1.1.1" 47 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 48 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 49 | 50 | balanced-match@^1.0.0: 51 | version "1.0.0" 52 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 53 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 54 | 55 | binary-extensions@^2.0.0: 56 | version "2.0.0" 57 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 58 | integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== 59 | 60 | body-parser@1.19.0: 61 | version "1.19.0" 62 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 63 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 64 | dependencies: 65 | bytes "3.1.0" 66 | content-type "~1.0.4" 67 | debug "2.6.9" 68 | depd "~1.1.2" 69 | http-errors "1.7.2" 70 | iconv-lite "0.4.24" 71 | on-finished "~2.3.0" 72 | qs "6.7.0" 73 | raw-body "2.4.0" 74 | type-is "~1.6.17" 75 | 76 | boxen@^1.2.1: 77 | version "1.3.0" 78 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" 79 | integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== 80 | dependencies: 81 | ansi-align "^2.0.0" 82 | camelcase "^4.0.0" 83 | chalk "^2.0.1" 84 | cli-boxes "^1.0.0" 85 | string-width "^2.0.0" 86 | term-size "^1.2.0" 87 | widest-line "^2.0.0" 88 | 89 | brace-expansion@^1.1.7: 90 | version "1.1.11" 91 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 92 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 93 | dependencies: 94 | balanced-match "^1.0.0" 95 | concat-map "0.0.1" 96 | 97 | braces@~3.0.2: 98 | version "3.0.2" 99 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 100 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 101 | dependencies: 102 | fill-range "^7.0.1" 103 | 104 | bytes@3.1.0: 105 | version "3.1.0" 106 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 107 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 108 | 109 | camelcase@^4.0.0: 110 | version "4.1.0" 111 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 112 | integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= 113 | 114 | capture-stack-trace@^1.0.0: 115 | version "1.0.1" 116 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" 117 | integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== 118 | 119 | chalk@^2.0.1: 120 | version "2.4.2" 121 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 122 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 123 | dependencies: 124 | ansi-styles "^3.2.1" 125 | escape-string-regexp "^1.0.5" 126 | supports-color "^5.3.0" 127 | 128 | chokidar@^3.2.2: 129 | version "3.3.1" 130 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" 131 | integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== 132 | dependencies: 133 | anymatch "~3.1.1" 134 | braces "~3.0.2" 135 | glob-parent "~5.1.0" 136 | is-binary-path "~2.1.0" 137 | is-glob "~4.0.1" 138 | normalize-path "~3.0.0" 139 | readdirp "~3.3.0" 140 | optionalDependencies: 141 | fsevents "~2.1.2" 142 | 143 | ci-info@^1.5.0: 144 | version "1.6.0" 145 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" 146 | integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== 147 | 148 | cli-boxes@^1.0.0: 149 | version "1.0.0" 150 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" 151 | integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= 152 | 153 | color-convert@^1.9.0: 154 | version "1.9.3" 155 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 156 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 157 | dependencies: 158 | color-name "1.1.3" 159 | 160 | color-name@1.1.3: 161 | version "1.1.3" 162 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 163 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 164 | 165 | concat-map@0.0.1: 166 | version "0.0.1" 167 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 168 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 169 | 170 | configstore@^3.0.0: 171 | version "3.1.2" 172 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" 173 | integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== 174 | dependencies: 175 | dot-prop "^4.1.0" 176 | graceful-fs "^4.1.2" 177 | make-dir "^1.0.0" 178 | unique-string "^1.0.0" 179 | write-file-atomic "^2.0.0" 180 | xdg-basedir "^3.0.0" 181 | 182 | content-disposition@0.5.3: 183 | version "0.5.3" 184 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 185 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 186 | dependencies: 187 | safe-buffer "5.1.2" 188 | 189 | content-type@~1.0.4: 190 | version "1.0.4" 191 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 192 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 193 | 194 | cookie-signature@1.0.6: 195 | version "1.0.6" 196 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 197 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 198 | 199 | cookie@0.4.0: 200 | version "0.4.0" 201 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 202 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 203 | 204 | create-error-class@^3.0.0: 205 | version "3.0.2" 206 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 207 | integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= 208 | dependencies: 209 | capture-stack-trace "^1.0.0" 210 | 211 | cross-spawn@^5.0.1: 212 | version "5.1.0" 213 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 214 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 215 | dependencies: 216 | lru-cache "^4.0.1" 217 | shebang-command "^1.2.0" 218 | which "^1.2.9" 219 | 220 | crypto-random-string@^1.0.0: 221 | version "1.0.0" 222 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" 223 | integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= 224 | 225 | debug@2.6.9, debug@^2.2.0: 226 | version "2.6.9" 227 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 228 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 229 | dependencies: 230 | ms "2.0.0" 231 | 232 | debug@^3.2.6: 233 | version "3.2.6" 234 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 235 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 236 | dependencies: 237 | ms "^2.1.1" 238 | 239 | deep-extend@^0.6.0: 240 | version "0.6.0" 241 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 242 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 243 | 244 | depd@~1.1.2: 245 | version "1.1.2" 246 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 247 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 248 | 249 | destroy@~1.0.4: 250 | version "1.0.4" 251 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 252 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 253 | 254 | dot-prop@^4.1.0: 255 | version "4.2.0" 256 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" 257 | integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== 258 | dependencies: 259 | is-obj "^1.0.0" 260 | 261 | duplexer3@^0.1.4: 262 | version "0.1.4" 263 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 264 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 265 | 266 | ee-first@1.1.1: 267 | version "1.1.1" 268 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 269 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 270 | 271 | encodeurl@~1.0.2: 272 | version "1.0.2" 273 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 274 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 275 | 276 | escape-html@~1.0.3: 277 | version "1.0.3" 278 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 279 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 280 | 281 | escape-string-regexp@^1.0.5: 282 | version "1.0.5" 283 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 284 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 285 | 286 | etag@~1.8.1: 287 | version "1.8.1" 288 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 289 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 290 | 291 | execa@^0.7.0: 292 | version "0.7.0" 293 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 294 | integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= 295 | dependencies: 296 | cross-spawn "^5.0.1" 297 | get-stream "^3.0.0" 298 | is-stream "^1.1.0" 299 | npm-run-path "^2.0.0" 300 | p-finally "^1.0.0" 301 | signal-exit "^3.0.0" 302 | strip-eof "^1.0.0" 303 | 304 | express@^4.17.1: 305 | version "4.17.1" 306 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 307 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 308 | dependencies: 309 | accepts "~1.3.7" 310 | array-flatten "1.1.1" 311 | body-parser "1.19.0" 312 | content-disposition "0.5.3" 313 | content-type "~1.0.4" 314 | cookie "0.4.0" 315 | cookie-signature "1.0.6" 316 | debug "2.6.9" 317 | depd "~1.1.2" 318 | encodeurl "~1.0.2" 319 | escape-html "~1.0.3" 320 | etag "~1.8.1" 321 | finalhandler "~1.1.2" 322 | fresh "0.5.2" 323 | merge-descriptors "1.0.1" 324 | methods "~1.1.2" 325 | on-finished "~2.3.0" 326 | parseurl "~1.3.3" 327 | path-to-regexp "0.1.7" 328 | proxy-addr "~2.0.5" 329 | qs "6.7.0" 330 | range-parser "~1.2.1" 331 | safe-buffer "5.1.2" 332 | send "0.17.1" 333 | serve-static "1.14.1" 334 | setprototypeof "1.1.1" 335 | statuses "~1.5.0" 336 | type-is "~1.6.18" 337 | utils-merge "1.0.1" 338 | vary "~1.1.2" 339 | 340 | fill-range@^7.0.1: 341 | version "7.0.1" 342 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 343 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 344 | dependencies: 345 | to-regex-range "^5.0.1" 346 | 347 | finalhandler@~1.1.2: 348 | version "1.1.2" 349 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 350 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 351 | dependencies: 352 | debug "2.6.9" 353 | encodeurl "~1.0.2" 354 | escape-html "~1.0.3" 355 | on-finished "~2.3.0" 356 | parseurl "~1.3.3" 357 | statuses "~1.5.0" 358 | unpipe "~1.0.0" 359 | 360 | forwarded@~0.1.2: 361 | version "0.1.2" 362 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 363 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 364 | 365 | fresh@0.5.2: 366 | version "0.5.2" 367 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 368 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 369 | 370 | fsevents@~2.1.2: 371 | version "2.1.2" 372 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" 373 | integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== 374 | 375 | get-stream@^3.0.0: 376 | version "3.0.0" 377 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 378 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 379 | 380 | glob-parent@~5.1.0: 381 | version "5.1.0" 382 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" 383 | integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== 384 | dependencies: 385 | is-glob "^4.0.1" 386 | 387 | global-dirs@^0.1.0: 388 | version "0.1.1" 389 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" 390 | integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= 391 | dependencies: 392 | ini "^1.3.4" 393 | 394 | got@^6.7.1: 395 | version "6.7.1" 396 | resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" 397 | integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= 398 | dependencies: 399 | create-error-class "^3.0.0" 400 | duplexer3 "^0.1.4" 401 | get-stream "^3.0.0" 402 | is-redirect "^1.0.0" 403 | is-retry-allowed "^1.0.0" 404 | is-stream "^1.0.0" 405 | lowercase-keys "^1.0.0" 406 | safe-buffer "^5.0.1" 407 | timed-out "^4.0.0" 408 | unzip-response "^2.0.1" 409 | url-parse-lax "^1.0.0" 410 | 411 | graceful-fs@^4.1.11, graceful-fs@^4.1.2: 412 | version "4.2.3" 413 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 414 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 415 | 416 | has-flag@^3.0.0: 417 | version "3.0.0" 418 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 419 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 420 | 421 | http-errors@1.7.2: 422 | version "1.7.2" 423 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 424 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 425 | dependencies: 426 | depd "~1.1.2" 427 | inherits "2.0.3" 428 | setprototypeof "1.1.1" 429 | statuses ">= 1.5.0 < 2" 430 | toidentifier "1.0.0" 431 | 432 | http-errors@~1.7.2: 433 | version "1.7.3" 434 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 435 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 436 | dependencies: 437 | depd "~1.1.2" 438 | inherits "2.0.4" 439 | setprototypeof "1.1.1" 440 | statuses ">= 1.5.0 < 2" 441 | toidentifier "1.0.0" 442 | 443 | iconv-lite@0.4.24: 444 | version "0.4.24" 445 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 446 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 447 | dependencies: 448 | safer-buffer ">= 2.1.2 < 3" 449 | 450 | ignore-by-default@^1.0.1: 451 | version "1.0.1" 452 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 453 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 454 | 455 | import-lazy@^2.1.0: 456 | version "2.1.0" 457 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 458 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 459 | 460 | imurmurhash@^0.1.4: 461 | version "0.1.4" 462 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 463 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 464 | 465 | inherits@2.0.3: 466 | version "2.0.3" 467 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 468 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 469 | 470 | inherits@2.0.4: 471 | version "2.0.4" 472 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 473 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 474 | 475 | ini@^1.3.4, ini@~1.3.0: 476 | version "1.3.5" 477 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 478 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 479 | 480 | ipaddr.js@1.9.1: 481 | version "1.9.1" 482 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 483 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 484 | 485 | is-binary-path@~2.1.0: 486 | version "2.1.0" 487 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 488 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 489 | dependencies: 490 | binary-extensions "^2.0.0" 491 | 492 | is-ci@^1.0.10: 493 | version "1.2.1" 494 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" 495 | integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== 496 | dependencies: 497 | ci-info "^1.5.0" 498 | 499 | is-extglob@^2.1.1: 500 | version "2.1.1" 501 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 502 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 503 | 504 | is-fullwidth-code-point@^2.0.0: 505 | version "2.0.0" 506 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 507 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 508 | 509 | is-glob@^4.0.1, is-glob@~4.0.1: 510 | version "4.0.1" 511 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 512 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 513 | dependencies: 514 | is-extglob "^2.1.1" 515 | 516 | is-installed-globally@^0.1.0: 517 | version "0.1.0" 518 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" 519 | integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= 520 | dependencies: 521 | global-dirs "^0.1.0" 522 | is-path-inside "^1.0.0" 523 | 524 | is-npm@^1.0.0: 525 | version "1.0.0" 526 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" 527 | integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= 528 | 529 | is-number@^7.0.0: 530 | version "7.0.0" 531 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 532 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 533 | 534 | is-obj@^1.0.0: 535 | version "1.0.1" 536 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 537 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 538 | 539 | is-path-inside@^1.0.0: 540 | version "1.0.1" 541 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" 542 | integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= 543 | dependencies: 544 | path-is-inside "^1.0.1" 545 | 546 | is-redirect@^1.0.0: 547 | version "1.0.0" 548 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 549 | integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= 550 | 551 | is-retry-allowed@^1.0.0: 552 | version "1.2.0" 553 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" 554 | integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== 555 | 556 | is-stream@^1.0.0, is-stream@^1.1.0: 557 | version "1.1.0" 558 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 559 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 560 | 561 | isexe@^2.0.0: 562 | version "2.0.0" 563 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 564 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 565 | 566 | latest-version@^3.0.0: 567 | version "3.1.0" 568 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" 569 | integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= 570 | dependencies: 571 | package-json "^4.0.0" 572 | 573 | lowercase-keys@^1.0.0: 574 | version "1.0.1" 575 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 576 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 577 | 578 | lru-cache@^4.0.1: 579 | version "4.1.5" 580 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 581 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 582 | dependencies: 583 | pseudomap "^1.0.2" 584 | yallist "^2.1.2" 585 | 586 | make-dir@^1.0.0: 587 | version "1.3.0" 588 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 589 | integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== 590 | dependencies: 591 | pify "^3.0.0" 592 | 593 | media-typer@0.3.0: 594 | version "0.3.0" 595 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 596 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 597 | 598 | merge-descriptors@1.0.1: 599 | version "1.0.1" 600 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 601 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 602 | 603 | methods@~1.1.2: 604 | version "1.1.2" 605 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 606 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 607 | 608 | mime-db@1.43.0: 609 | version "1.43.0" 610 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" 611 | integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== 612 | 613 | mime-types@~2.1.24: 614 | version "2.1.26" 615 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" 616 | integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== 617 | dependencies: 618 | mime-db "1.43.0" 619 | 620 | mime@1.6.0: 621 | version "1.6.0" 622 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 623 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 624 | 625 | minimatch@^3.0.4: 626 | version "3.0.4" 627 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 628 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 629 | dependencies: 630 | brace-expansion "^1.1.7" 631 | 632 | minimist@^1.2.0: 633 | version "1.2.5" 634 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 635 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 636 | 637 | ms@2.0.0: 638 | version "2.0.0" 639 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 640 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 641 | 642 | ms@2.1.1: 643 | version "2.1.1" 644 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 645 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 646 | 647 | ms@^2.1.1: 648 | version "2.1.2" 649 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 650 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 651 | 652 | negotiator@0.6.2: 653 | version "0.6.2" 654 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 655 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 656 | 657 | nodemon@^2.0.2: 658 | version "2.0.2" 659 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.2.tgz#9c7efeaaf9b8259295a97e5d4585ba8f0cbe50b0" 660 | integrity sha512-GWhYPMfde2+M0FsHnggIHXTqPDHXia32HRhh6H0d75Mt9FKUoCBvumNHr7LdrpPBTKxsWmIEOjoN+P4IU6Hcaw== 661 | dependencies: 662 | chokidar "^3.2.2" 663 | debug "^3.2.6" 664 | ignore-by-default "^1.0.1" 665 | minimatch "^3.0.4" 666 | pstree.remy "^1.1.7" 667 | semver "^5.7.1" 668 | supports-color "^5.5.0" 669 | touch "^3.1.0" 670 | undefsafe "^2.0.2" 671 | update-notifier "^2.5.0" 672 | 673 | nopt@~1.0.10: 674 | version "1.0.10" 675 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 676 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 677 | dependencies: 678 | abbrev "1" 679 | 680 | normalize-path@^3.0.0, normalize-path@~3.0.0: 681 | version "3.0.0" 682 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 683 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 684 | 685 | npm-run-path@^2.0.0: 686 | version "2.0.2" 687 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 688 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 689 | dependencies: 690 | path-key "^2.0.0" 691 | 692 | on-finished@~2.3.0: 693 | version "2.3.0" 694 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 695 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 696 | dependencies: 697 | ee-first "1.1.1" 698 | 699 | p-finally@^1.0.0: 700 | version "1.0.0" 701 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 702 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 703 | 704 | package-json@^4.0.0: 705 | version "4.0.1" 706 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" 707 | integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= 708 | dependencies: 709 | got "^6.7.1" 710 | registry-auth-token "^3.0.1" 711 | registry-url "^3.0.3" 712 | semver "^5.1.0" 713 | 714 | parseurl@~1.3.3: 715 | version "1.3.3" 716 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 717 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 718 | 719 | path-is-inside@^1.0.1: 720 | version "1.0.2" 721 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 722 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= 723 | 724 | path-key@^2.0.0: 725 | version "2.0.1" 726 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 727 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 728 | 729 | path-to-regexp@0.1.7: 730 | version "0.1.7" 731 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 732 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 733 | 734 | picomatch@^2.0.4, picomatch@^2.0.7: 735 | version "2.2.1" 736 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" 737 | integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== 738 | 739 | pify@^3.0.0: 740 | version "3.0.0" 741 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 742 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 743 | 744 | prepend-http@^1.0.1: 745 | version "1.0.4" 746 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 747 | integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= 748 | 749 | proxy-addr@~2.0.5: 750 | version "2.0.6" 751 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 752 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 753 | dependencies: 754 | forwarded "~0.1.2" 755 | ipaddr.js "1.9.1" 756 | 757 | pseudomap@^1.0.2: 758 | version "1.0.2" 759 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 760 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 761 | 762 | pstree.remy@^1.1.7: 763 | version "1.1.7" 764 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3" 765 | integrity sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A== 766 | 767 | qs@6.7.0: 768 | version "6.7.0" 769 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 770 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 771 | 772 | range-parser@~1.2.1: 773 | version "1.2.1" 774 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 775 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 776 | 777 | raw-body@2.4.0: 778 | version "2.4.0" 779 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 780 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 781 | dependencies: 782 | bytes "3.1.0" 783 | http-errors "1.7.2" 784 | iconv-lite "0.4.24" 785 | unpipe "1.0.0" 786 | 787 | rc@^1.0.1, rc@^1.1.6: 788 | version "1.2.8" 789 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 790 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 791 | dependencies: 792 | deep-extend "^0.6.0" 793 | ini "~1.3.0" 794 | minimist "^1.2.0" 795 | strip-json-comments "~2.0.1" 796 | 797 | readdirp@~3.3.0: 798 | version "3.3.0" 799 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" 800 | integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== 801 | dependencies: 802 | picomatch "^2.0.7" 803 | 804 | registry-auth-token@^3.0.1: 805 | version "3.4.0" 806 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" 807 | integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== 808 | dependencies: 809 | rc "^1.1.6" 810 | safe-buffer "^5.0.1" 811 | 812 | registry-url@^3.0.3: 813 | version "3.1.0" 814 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" 815 | integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= 816 | dependencies: 817 | rc "^1.0.1" 818 | 819 | safe-buffer@5.1.2: 820 | version "5.1.2" 821 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 822 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 823 | 824 | safe-buffer@^5.0.1: 825 | version "5.2.0" 826 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 827 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 828 | 829 | "safer-buffer@>= 2.1.2 < 3": 830 | version "2.1.2" 831 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 832 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 833 | 834 | semver-diff@^2.0.0: 835 | version "2.1.0" 836 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" 837 | integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= 838 | dependencies: 839 | semver "^5.0.3" 840 | 841 | semver@^5.0.3, semver@^5.1.0, semver@^5.7.1: 842 | version "5.7.1" 843 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 844 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 845 | 846 | send@0.17.1: 847 | version "0.17.1" 848 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 849 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 850 | dependencies: 851 | debug "2.6.9" 852 | depd "~1.1.2" 853 | destroy "~1.0.4" 854 | encodeurl "~1.0.2" 855 | escape-html "~1.0.3" 856 | etag "~1.8.1" 857 | fresh "0.5.2" 858 | http-errors "~1.7.2" 859 | mime "1.6.0" 860 | ms "2.1.1" 861 | on-finished "~2.3.0" 862 | range-parser "~1.2.1" 863 | statuses "~1.5.0" 864 | 865 | serve-static@1.14.1: 866 | version "1.14.1" 867 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 868 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 869 | dependencies: 870 | encodeurl "~1.0.2" 871 | escape-html "~1.0.3" 872 | parseurl "~1.3.3" 873 | send "0.17.1" 874 | 875 | setprototypeof@1.1.1: 876 | version "1.1.1" 877 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 878 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 879 | 880 | shebang-command@^1.2.0: 881 | version "1.2.0" 882 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 883 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 884 | dependencies: 885 | shebang-regex "^1.0.0" 886 | 887 | shebang-regex@^1.0.0: 888 | version "1.0.0" 889 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 890 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 891 | 892 | signal-exit@^3.0.0, signal-exit@^3.0.2: 893 | version "3.0.2" 894 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 895 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 896 | 897 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 898 | version "1.5.0" 899 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 900 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 901 | 902 | string-width@^2.0.0, string-width@^2.1.1: 903 | version "2.1.1" 904 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 905 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 906 | dependencies: 907 | is-fullwidth-code-point "^2.0.0" 908 | strip-ansi "^4.0.0" 909 | 910 | strip-ansi@^4.0.0: 911 | version "4.0.0" 912 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 913 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 914 | dependencies: 915 | ansi-regex "^3.0.0" 916 | 917 | strip-eof@^1.0.0: 918 | version "1.0.0" 919 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 920 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 921 | 922 | strip-json-comments@~2.0.1: 923 | version "2.0.1" 924 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 925 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 926 | 927 | supports-color@^5.3.0, supports-color@^5.5.0: 928 | version "5.5.0" 929 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 930 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 931 | dependencies: 932 | has-flag "^3.0.0" 933 | 934 | term-size@^1.2.0: 935 | version "1.2.0" 936 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" 937 | integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= 938 | dependencies: 939 | execa "^0.7.0" 940 | 941 | timed-out@^4.0.0: 942 | version "4.0.1" 943 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 944 | integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= 945 | 946 | to-regex-range@^5.0.1: 947 | version "5.0.1" 948 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 949 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 950 | dependencies: 951 | is-number "^7.0.0" 952 | 953 | toidentifier@1.0.0: 954 | version "1.0.0" 955 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 956 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 957 | 958 | touch@^3.1.0: 959 | version "3.1.0" 960 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 961 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 962 | dependencies: 963 | nopt "~1.0.10" 964 | 965 | type-is@~1.6.17, type-is@~1.6.18: 966 | version "1.6.18" 967 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 968 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 969 | dependencies: 970 | media-typer "0.3.0" 971 | mime-types "~2.1.24" 972 | 973 | undefsafe@^2.0.2: 974 | version "2.0.3" 975 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" 976 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== 977 | dependencies: 978 | debug "^2.2.0" 979 | 980 | unique-string@^1.0.0: 981 | version "1.0.0" 982 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" 983 | integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= 984 | dependencies: 985 | crypto-random-string "^1.0.0" 986 | 987 | unpipe@1.0.0, unpipe@~1.0.0: 988 | version "1.0.0" 989 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 990 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 991 | 992 | unzip-response@^2.0.1: 993 | version "2.0.1" 994 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" 995 | integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= 996 | 997 | update-notifier@^2.5.0: 998 | version "2.5.0" 999 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" 1000 | integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== 1001 | dependencies: 1002 | boxen "^1.2.1" 1003 | chalk "^2.0.1" 1004 | configstore "^3.0.0" 1005 | import-lazy "^2.1.0" 1006 | is-ci "^1.0.10" 1007 | is-installed-globally "^0.1.0" 1008 | is-npm "^1.0.0" 1009 | latest-version "^3.0.0" 1010 | semver-diff "^2.0.0" 1011 | xdg-basedir "^3.0.0" 1012 | 1013 | url-parse-lax@^1.0.0: 1014 | version "1.0.0" 1015 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 1016 | integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= 1017 | dependencies: 1018 | prepend-http "^1.0.1" 1019 | 1020 | utils-merge@1.0.1: 1021 | version "1.0.1" 1022 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1023 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1024 | 1025 | vary@~1.1.2: 1026 | version "1.1.2" 1027 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1028 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1029 | 1030 | which@^1.2.9: 1031 | version "1.3.1" 1032 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1033 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1034 | dependencies: 1035 | isexe "^2.0.0" 1036 | 1037 | widest-line@^2.0.0: 1038 | version "2.0.1" 1039 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" 1040 | integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== 1041 | dependencies: 1042 | string-width "^2.1.1" 1043 | 1044 | write-file-atomic@^2.0.0: 1045 | version "2.4.3" 1046 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" 1047 | integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== 1048 | dependencies: 1049 | graceful-fs "^4.1.11" 1050 | imurmurhash "^0.1.4" 1051 | signal-exit "^3.0.2" 1052 | 1053 | xdg-basedir@^3.0.0: 1054 | version "3.0.0" 1055 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" 1056 | integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= 1057 | 1058 | yallist@^2.1.2: 1059 | version "2.1.2" 1060 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1061 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 1062 | --------------------------------------------------------------------------------