├── .autorc ├── .gitignore ├── test ├── testModule │ └── index.js └── index.test.js ├── renovate.json ├── example ├── components │ └── users.js ├── api │ └── index.js ├── package.json ├── client │ └── index.js ├── index.js └── yarn.lock ├── .github └── workflows │ └── run-danger-yarn.yml ├── .circleci └── config.yml ├── package.json ├── LICENSE ├── index.js ├── README.md ├── CHANGELOG.md └── yarn.lock /.autorc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@artsy" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | npm-debug.log 3 | node_modules 4 | -------------------------------------------------------------------------------- /test/testModule/index.js: -------------------------------------------------------------------------------- 1 | module.exports = (req, res, next) => { 2 | next() 3 | } -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@artsy:lib"], 3 | "assignees": [ 4 | "damassi" 5 | ], 6 | "ignorePaths": [ 7 | "example" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /example/components/users.js: -------------------------------------------------------------------------------- 1 | module.exports.otherUsers = () => { 2 | return [ 3 | { 4 | name: 'Leif' 5 | }, 6 | { 7 | name: 'The' 8 | }, 9 | { 10 | name: 'Cat' 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /.github/workflows/run-danger-yarn.yml: -------------------------------------------------------------------------------- 1 | name: ☢️ Danger - Yarn 2 | 3 | on: 4 | pull_request: 5 | types: [opened, reopened, synchronize] 6 | 7 | jobs: 8 | run-danger-yarn: 9 | uses: artsy/duchamp/.github/workflows/danger-yarn.yml@main 10 | secrets: 11 | danger-token: ${{ secrets.DANGER_TOKEN }} 12 | -------------------------------------------------------------------------------- /example/api/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const app = module.exports = express() 3 | const { otherUsers } = require('../components/users') 4 | 5 | app.get('/users', (req, res) => { 6 | res.json([ 7 | { 8 | name: 'Katherine' 9 | }, 10 | { 11 | name: 'Dusty' 12 | }, 13 | { 14 | name: 'Moira' 15 | }, 16 | ...otherUsers() 17 | ]) 18 | }) 19 | 20 | return app 21 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-reloadable-example", 3 | "version": "1.0.0", 4 | "description": "Example app for express-reloadable", 5 | "main": "index.js", 6 | "repository": "none", 7 | "author": "Christopher Pappas ", 8 | "license": "MIT", 9 | "dependencies": { 10 | "axios": "^0.18.0", 11 | "express": "^4.15.4", 12 | "glob": "^7.1.2" 13 | }, 14 | "scripts": { 15 | "start": "NODE_ENV=development node index.js" 16 | }, 17 | "devDependencies": { 18 | "@artsy/express-reloadable": "1.4.3" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | 3 | orbs: 4 | yarn: artsy/yarn@6.5.0 5 | auto: artsy/auto@2.3.0 6 | 7 | workflows: 8 | build_and_verify: 9 | jobs: 10 | - yarn/update-cache 11 | - yarn/test 12 | - auto/publish-canary: 13 | context: npm-deploy 14 | filters: 15 | branches: 16 | ignore: 17 | - master 18 | requires: 19 | - yarn/test 20 | - yarn/update-cache 21 | - auto/publish: 22 | context: npm-deploy 23 | filters: 24 | branches: 25 | only: 26 | - master 27 | requires: 28 | - yarn/test 29 | - yarn/update-cache 30 | -------------------------------------------------------------------------------- /example/client/index.js: -------------------------------------------------------------------------------- 1 | const http = require('axios') 2 | const express = require('express') 3 | const app = module.exports = express() 4 | 5 | app.get('/', async (req, res, next) => { 6 | try { 7 | const { data: users } = await http.get('http://localhost:3000/api/users') 8 | 9 | res.send(` 10 | 11 | 12 | Example 13 | 14 | 15 |

16 | Change this file, or the file located in /api, and reload the page 17 |

18 |

19 | Users: 20 |

21 |

22 | ${users.map(({ name }) => name).join(', ')} 23 |

24 | 25 | 26 | `) 27 | } catch (error) { 28 | next(error) 29 | } 30 | }) 31 | 32 | return app 33 | -------------------------------------------------------------------------------- /test/index.test.js: -------------------------------------------------------------------------------- 1 | const test = require('tape') 2 | const express = require('express') 3 | const decache = require('decache') 4 | 5 | test('checks if NODE_ENV is set to development', (t) => { 6 | const app = express() 7 | process.env.NODE_ENV = 'production' 8 | 9 | try { 10 | const mountAndReload = require('../index').createReloadable(app, require) 11 | mountAndReload('./testModule') 12 | t.fail('No error thrown') 13 | t.end() 14 | } catch (e) { 15 | t.pass('This should throw an error') 16 | t.end() 17 | } 18 | }) 19 | 20 | test('checks if throws except if NODE_ENV is set to production', (t) => { 21 | const app = express() 22 | 23 | decache('../index') 24 | process.env.NODE_ENV = 'development' 25 | const mountAndReload = require('../index').createReloadable(app, require) 26 | mountAndReload('./testModule') 27 | 28 | t.pass('No error thrown') 29 | t.end() 30 | }) 31 | 32 | test('---', (t) => { 33 | t.end() 34 | process.exit(0) 35 | }) 36 | 37 | 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@artsy/express-reloadable", 3 | "version": "1.8.0", 4 | "description": "Development tool that enables hot-swapping Express server code without a restart", 5 | "keywords": [ 6 | "express", 7 | "hot-swap", 8 | "development tool" 9 | ], 10 | "main": "index.js", 11 | "repository": "git@github.com:artsy/express-reloadable.git", 12 | "authors": [ 13 | "Artsy ", 14 | "Christopher Pappas ", 15 | "Eloy Durán " 16 | ], 17 | "scripts": { 18 | "test": "./node_modules/tape/bin/tape ./test/*.js" 19 | }, 20 | "homepage": "https://github.com/artsy/express-reloadable", 21 | "license": "MIT", 22 | "dependencies": { 23 | "chalk": "^2.3.1", 24 | "chokidar": "^3.0.0", 25 | "decache": "^4.4.0" 26 | }, 27 | "devDependencies": { 28 | "@artsy/auto-config": "1.1.0", 29 | "express": "4.17.3", 30 | "tape": "4.10.1" 31 | }, 32 | "publishConfig": { 33 | "registry": "https://registry.npmjs.org", 34 | "access": "public" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /example/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const glob = require('glob') 3 | const path = require('path') 4 | const { createReloadable, isDevelopment } = require('@artsy/express-reloadable') 5 | 6 | const app = express() 7 | 8 | if (isDevelopment) { 9 | const mountAndReload = createReloadable(app, require) 10 | 11 | const modules = glob.sync('./components/**/*.js').map(name => path.resolve(name)) 12 | 13 | // Note that if you need to mount an app at a particular root (`/api`), pass 14 | // in `mountPoint` as an option. 15 | app.use('/api', mountAndReload(path.resolve(__dirname, 'api'), { 16 | mountPoint: '/api', 17 | watchModules: [ 18 | ...modules 19 | // or, `some-linked-npm-module` 20 | ] 21 | })) 22 | 23 | // Otherwise, just pass in the path to the express app and everything is taken care of 24 | mountAndReload(path.resolve(__dirname, 'client')) 25 | } else { 26 | app.use('/api', require('./api')) 27 | app.use(require('./client')) 28 | } 29 | 30 | app.listen(3000, () => { 31 | console.log('Listening on http://localhost:3000') 32 | }) 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 4 | Artsy 5 | Christopher Pappas 6 | Eloy Durán 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. 25 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const chalk = require('chalk') 2 | const path = require('path') 3 | const { NODE_ENV } = process.env 4 | const isDevelopment = !NODE_ENV || NODE_ENV === 'development' 5 | const decache = require('decache') 6 | const { watch } = require('chokidar') 7 | 8 | function createReloadable (app, require) { 9 | return (folderPath, options = {}) => { 10 | if (!isDevelopment) { 11 | throw new Error( 12 | '[lib/reloadable.js] NODE_ENV must be set to "development" to use ' + 13 | 'reloadable.js' 14 | ) 15 | } 16 | 17 | const { 18 | watchModules = [], 19 | mountPoint = '/', 20 | recursive = false 21 | } = options 22 | 23 | // On new request re-require app files 24 | const onReload = (req, res, next) => { 25 | const module = require(folderPath) 26 | 27 | // Check if ES6 default export 28 | if (module.default) { 29 | module.default(req, res, next) 30 | } else { 31 | module(req, res, next) 32 | } 33 | } 34 | 35 | const rootPath = path.resolve(folderPath) 36 | 37 | const watchPaths = watchModules 38 | .map(module => path.dirname(require.resolve(module))) 39 | .concat([rootPath]) 40 | 41 | // Watch a subset of files for changes 42 | watchPaths.forEach(folder => { 43 | const watcher = watch(folder) 44 | 45 | watcher.on('ready', () => { 46 | watcher.on('change', file => console.log(`[@artsy/express-reloadable] File ${chalk.grey(file)} has changed.`)) 47 | 48 | watcher.on('all', () => { 49 | Object.keys(require.cache).forEach(id => { 50 | if (id.startsWith(rootPath) || id.startsWith(folder)) { 51 | if (recursive) { 52 | decache(id) 53 | } else { 54 | delete require.cache[id] 55 | } 56 | } 57 | }) 58 | }) 59 | }) 60 | }) 61 | 62 | let currentResponse = null 63 | let currentNext = null 64 | 65 | app.use((req, res, next) => { 66 | currentResponse = res 67 | currentNext = next 68 | 69 | res.on('finish', () => { 70 | currentResponse = null 71 | currentNext = null 72 | }) 73 | 74 | next() 75 | }) 76 | 77 | /** 78 | * In case of an uncaught exception show it to the user and proceed, rather 79 | * than exiting the process. 80 | */ 81 | process.on('uncaughtException', (error) => { 82 | if (currentResponse) { 83 | currentNext(error) 84 | currentResponse = null 85 | currentNext = null 86 | } else { 87 | console.log(error) 88 | } 89 | }) 90 | 91 | app.use(mountPoint, (req, res, next) => { 92 | try { 93 | onReload(req, res, next) 94 | } catch (error) { 95 | console.error(error) 96 | next(error) 97 | } 98 | }) 99 | 100 | console.log(`\n\n[@artsy/express-reloadable] Mounting: \n${chalk.grey(watchPaths.join('\n'))}\n`) 101 | return onReload 102 | } 103 | } 104 | 105 | module.exports = { 106 | isDevelopment, 107 | createReloadable 108 | } 109 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # @artsy/express-reloadable 2 | 3 | When developing a Node app it's common to rely on tools like [`node-dev`](https://github.com/fgnass/node-dev) or [`nodemon`](https://github.com/remy/nodemon) to make the development process more rapid by automatically restarting the server instance on file-change. What `express-reloadable` does is listen for source-code changes within a subset of your app and, scanning Node's internal module cache, clears the `require` call if found. This tricks Node into thinking the module has not yet been loaded, effectively hot-swapping out your code without a full restart. Additionally, when the `watchModules` option is passed, `express-reloadable` will listen for changes to NPM module code and reload on change. Useful when working with `yarn link` across packages / repos. Crazy-fast development speed! 4 | 5 | > **Disclaimer**: While this works for most of our use-cases, this is an example of "`require hacking"` and hasn't been tested in all environments. Your mileage may vary. 6 | 7 | **How it works**: 8 | - `express-reloadable` is called with a path to an app, which it then mounts 9 | - When source-code within that folder / app changes an internal lookup is made to Node, scanning its `require` cache for the changed file 10 | - If found, it is cleared internally via `delete require.cache[id]` 11 | - When a new request is made `express-reloadable` executes a callback that re-requires the code and changes are instantly available. 12 | 13 | **Installation**: 14 | 15 | ```sh 16 | yarn add @artsy/express-reloadable 17 | ``` 18 | 19 | **Example**: 20 | 21 | The below example assumes that the folders `/api` and `/client` exist, and that each contain an index file that exports a mountable express.js route. 22 | 23 | ```js 24 | import express from 'express' 25 | import { createReloadable, isDevelopment } from '@artsy/express-reloadable' 26 | 27 | const app = express() 28 | 29 | if (isDevelopment) { 30 | 31 | // Pass in `app` and current `require` context 32 | const mountAndReload = createReloadable(app, require) 33 | 34 | // Pass in the path to an express sub-app and everything is taken care of 35 | mountAndReload(path.resolve(__dirname, './client')) 36 | 37 | // Full example: 38 | app.use('/api', mountAndReload(path.resolve(__dirname, './api')), { 39 | 40 | // If you need to mount an app at a particular root (`/api`), pass in 41 | // `mountPoint` as an option. 42 | mountPoint: '/api', 43 | 44 | // Or if you're using `yarn link` (or npm) to symlink external dependencies 45 | // during dev, pass in an array of modules to watch. Changes made internally 46 | // will be instantly available in the app. Additionally, using something like 47 | // `glob`, other modules outside of express route path can be passed. 48 | watchModules: [ 49 | '@artsy/reaction', 50 | '@artsy/artsy-xapp' 51 | ] 52 | })) 53 | 54 | // If prod, mount apps like normal 55 | } else { 56 | app.use('/api', require('./api') 57 | app.use(require('./client') 58 | } 59 | 60 | app.listen(3000, () => { 61 | console.log(`Listening on port 3000`) 62 | }) 63 | ``` 64 | 65 | **Troubleshooting**: 66 | 67 | > Help! I've mounted my app using reloadable but I'm not seeing any changes? 68 | 69 | For the utility to work you need to a) ensure that `NODE_ENV=development` (for safety) and b) the path to your app is absolute: 70 | 71 | ```js 72 | // Incorrect 73 | app.use(reloadAndMount('./path/to/app')) 74 | 75 | // Correct 76 | app.use(reloadAndMount(path.resolve(__dirname, 'path/to/app'))) 77 | ``` 78 | 79 | **Thanks**: 80 | 81 | This package was heavily inspired by @glenjamin's [ultimate-hot-loading-example](https://github.com/glenjamin/ultimate-hot-reloading-example). 82 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # v1.8.0 (Wed Nov 19 2025) 2 | 3 | #### 🚀 Enhancement 4 | 5 | - feat: add yarn check github action [#72](https://github.com/artsy/express-reloadable/pull/72) ([@mc-jones](https://github.com/mc-jones)) 6 | 7 | #### 🏠 Internal 8 | 9 | - chore(deps): update auto orb from 2.1.0 to v2.2.0 [#68](https://github.com/artsy/express-reloadable/pull/68) ([@renovate[bot]](https://github.com/renovate[bot])) 10 | - chore(deps): update yarn orb from 6.4.0 to v6.5.0 [#67](https://github.com/artsy/express-reloadable/pull/67) ([@renovate[bot]](https://github.com/renovate[bot])) 11 | - chore(deps): update yarn orb from 6.2.0 to v6.4.0 [#61](https://github.com/artsy/express-reloadable/pull/61) ([@renovate[bot]](https://github.com/renovate[bot])) 12 | - Bump express from 4.16.4 to 4.17.3 [#63](https://github.com/artsy/express-reloadable/pull/63) ([@dependabot[bot]](https://github.com/dependabot[bot])) 13 | 14 | #### Authors: 3 15 | 16 | - [@dependabot[bot]](https://github.com/dependabot[bot]) 17 | - [@renovate[bot]](https://github.com/renovate[bot]) 18 | - Matt Jones ([@mc-jones](https://github.com/mc-jones)) 19 | 20 | --- 21 | 22 | # v1.7.0 (Thu Jun 02 2022) 23 | 24 | #### 🚀 Enhancement 25 | 26 | - fix(setup): import lib at top [#59](https://github.com/artsy/express-reloadable/pull/59) ([@damassi](https://github.com/damassi)) 27 | 28 | #### 🏠 Internal 29 | 30 | - chore(deps): update yarn orb from 6.1.0 to v6.2.0 [#58](https://github.com/artsy/express-reloadable/pull/58) ([@renovate-bot](https://github.com/renovate-bot)) 31 | - chore(deps): update auto orb from 2.0.0 to v2.1.0 [#57](https://github.com/artsy/express-reloadable/pull/57) ([@renovate-bot](https://github.com/renovate-bot)) 32 | - chore(deps): update yarn orb from 6.0.0 to v6.1.0 [#54](https://github.com/artsy/express-reloadable/pull/54) ([@renovate-bot](https://github.com/renovate-bot)) 33 | 34 | #### Authors: 2 35 | 36 | - Christopher Pappas ([@damassi](https://github.com/damassi)) 37 | - WhiteSource Renovate ([@renovate-bot](https://github.com/renovate-bot)) 38 | 39 | --- 40 | 41 | # v1.6.0 (Mon Oct 11 2021) 42 | 43 | #### 🚀 Enhancement 44 | 45 | - Bump path-parse from 1.0.6 to 1.0.7 [#48](https://github.com/artsy/express-reloadable/pull/48) ([@dependabot[bot]](https://github.com/dependabot[bot])) 46 | 47 | #### 🏠 Internal 48 | 49 | - Bump minimist from 1.2.0 to 1.2.5 [#49](https://github.com/artsy/express-reloadable/pull/49) ([@dependabot[bot]](https://github.com/dependabot[bot])) 50 | - Bump glob-parent from 5.0.0 to 5.1.2 [#50](https://github.com/artsy/express-reloadable/pull/50) ([@dependabot[bot]](https://github.com/dependabot[bot])) 51 | - chore(deps): update dep @artsy/auto-config from 1.0.2 to v1.1.0 [#46](https://github.com/artsy/express-reloadable/pull/46) ([@renovate-bot](https://github.com/renovate-bot) [@renovate[bot]](https://github.com/renovate[bot])) 52 | - chore(deps): update auto orb from 1.4.0 to v2 [#47](https://github.com/artsy/express-reloadable/pull/47) ([@renovate-bot](https://github.com/renovate-bot) [@renovate[bot]](https://github.com/renovate[bot])) 53 | 54 | #### Authors: 3 55 | 56 | - [@dependabot[bot]](https://github.com/dependabot[bot]) 57 | - [@renovate[bot]](https://github.com/renovate[bot]) 58 | - WhiteSource Renovate ([@renovate-bot](https://github.com/renovate-bot)) 59 | 60 | --- 61 | 62 | # v1.5.0 (Sun Aug 29 2021) 63 | 64 | #### 🚀 Enhancement 65 | 66 | - Remove meeee [#42](https://github.com/artsy/express-reloadable/pull/42) ([@zephraph](https://github.com/zephraph)) 67 | 68 | #### 🐛 Bug Fix 69 | 70 | - bugfix: Dont consume errors in reload cycle [#45](https://github.com/artsy/express-reloadable/pull/45) ([@damassi](https://github.com/damassi)) 71 | 72 | #### ⚠️ Pushed to `master` 73 | 74 | - Update README.md ([@damassi](https://github.com/damassi)) 75 | 76 | #### 🏠 Internal 77 | 78 | - Update yarn orb from 5.1.1 to v5.1.3 [#40](https://github.com/artsy/express-reloadable/pull/40) ([@renovate-bot](https://github.com/renovate-bot)) 79 | - Update auto orb from 1.2.1 to v1.3.2 [#39](https://github.com/artsy/express-reloadable/pull/39) ([@renovate-bot](https://github.com/renovate-bot)) 80 | - Update yarn orb from 5.1.0 to v5.1.1 [#38](https://github.com/artsy/express-reloadable/pull/38) ([@renovate-bot](https://github.com/renovate-bot)) 81 | - Update yarn orb from 5.0.0 to v5.1.0 [#37](https://github.com/artsy/express-reloadable/pull/37) ([@renovate-bot](https://github.com/renovate-bot)) 82 | - Update auto orb from 1.2.0 to v1.2.1 [#35](https://github.com/artsy/express-reloadable/pull/35) ([@renovate-bot](https://github.com/renovate-bot)) 83 | - Update yarn orb from 4.0.2 to v5 [#36](https://github.com/artsy/express-reloadable/pull/36) ([@renovate-bot](https://github.com/renovate-bot) [@renovate[bot]](https://github.com/renovate[bot])) 84 | - Update auto orb from 1.1.0 to v1.2.0 [#34](https://github.com/artsy/express-reloadable/pull/34) ([@renovate-bot](https://github.com/renovate-bot)) 85 | - Update yarn orb to v4 [#33](https://github.com/artsy/express-reloadable/pull/33) ([@renovate-bot](https://github.com/renovate-bot) [@zephraph](https://github.com/zephraph) [@renovate[bot]](https://github.com/renovate[bot])) 86 | 87 | #### Authors: 4 88 | 89 | - [@renovate[bot]](https://github.com/renovate[bot]) 90 | - Christopher Pappas ([@damassi](https://github.com/damassi)) 91 | - Justin Bennett ([@zephraph](https://github.com/zephraph)) 92 | - WhiteSource Renovate ([@renovate-bot](https://github.com/renovate-bot)) 93 | 94 | --- 95 | 96 | # v1.4.8 (Tue Mar 10 2020) 97 | 98 | #### 🐛 Bug Fix 99 | 100 | - Update dep @artsy/auto-config from 1.0.1 to v1.0.2 [#32](https://github.com/artsy/express-reloadable/pull/32) ([@renovate-bot](https://github.com/renovate-bot)) 101 | - Update yarn orb to v2.1.1 [#31](https://github.com/artsy/express-reloadable/pull/31) ([@renovate-bot](https://github.com/renovate-bot)) 102 | 103 | #### Authors: 1 104 | 105 | - WhiteSource Renovate ([@renovate-bot](https://github.com/renovate-bot)) 106 | 107 | --- 108 | 109 | # v1.4.7 (Tue Sep 03 2019) 110 | 111 | #### 🐛 Bug Fix 112 | 113 | - Fix symlinks not being watched due to chokidar bug [#30](https://github.com/artsy/express-reloadable/pull/30) ([@zephraph](https://github.com/zephraph)) 114 | 115 | #### 🏠 Internal 116 | 117 | - Update dep @artsy/auto-config from 1.0.0 to v1.0.1 [#29](https://github.com/artsy/express-reloadable/pull/29) ([@renovate-bot](https://github.com/renovate-bot)) 118 | - Update yarn orb to v2 [#28](https://github.com/artsy/express-reloadable/pull/28) ([@renovate-bot](https://github.com/renovate-bot)) 119 | - Update yarn orb to v1.1.1 [#27](https://github.com/artsy/express-reloadable/pull/27) ([@renovate-bot](https://github.com/renovate-bot)) 120 | 121 | #### Authors: 2 122 | 123 | - Justin Bennett ([@zephraph](https://github.com/zephraph)) 124 | - Renovate Bot ([@renovate-bot](https://github.com/renovate-bot)) 125 | 126 | --- 127 | 128 | # v1.4.6 (Mon May 06 2019) 129 | 130 | #### ⚠️ Pushed to master 131 | 132 | - Update README.md ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 133 | 134 | #### Authors: 1 135 | 136 | - [@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com) 137 | 138 | --- 139 | 140 | # v1.4.5 (Mon May 06 2019) 141 | 142 | #### 🐛 Bug Fix 143 | 144 | - [Renovate] Ignore example folder [#26](https://github.com/artsy/express-reloadable/pull/26) ([@damassi](https://github.com/damassi)) 145 | 146 | #### Authors: 1 147 | 148 | - Christopher Pappas ([@damassi](https://github.com/damassi)) 149 | 150 | --- 151 | 152 | # v1.4.4 (Mon May 06 2019) 153 | 154 | #### 🏠 Internal 155 | 156 | - Update dep @artsy/express-reloadable from 1.4.2 to v1.4.3 [#24](https://github.com/artsy/express-reloadable/pull/24) ([@renovate-bot](https://github.com/renovate-bot)) 157 | 158 | #### ⚠️ Pushed to master 159 | 160 | - Update README with additionalModules globbing ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 161 | 162 | #### Authors: 2 163 | 164 | - Renovate Bot ([@renovate-bot](https://github.com/renovate-bot)) 165 | - [@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com) 166 | 167 | --- 168 | 169 | # v1.4.3 (Mon May 06 2019) 170 | 171 | #### 🏠 Internal 172 | 173 | - Update dep @artsy/express-reloadable from 1.4.1 to v1.4.2 [#23](https://github.com/artsy/express-reloadable/pull/23) ([@renovate-bot](https://github.com/renovate-bot)) 174 | 175 | #### ⚠️ Pushed to master 176 | 177 | - Update README.md ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 178 | 179 | #### Authors: 2 180 | 181 | - Renovate Bot ([@renovate-bot](https://github.com/renovate-bot)) 182 | - [@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com) 183 | 184 | --- 185 | 186 | # v1.4.2 (Mon May 06 2019) 187 | 188 | #### 🐛 Bug Fix 189 | 190 | - Update dep chokidar from ^1.7.0 to v3 [#20](https://github.com/artsy/express-reloadable/pull/20) ([@renovate-bot](https://github.com/renovate-bot)) 191 | 192 | #### 🏠 Internal 193 | 194 | - Update dep @artsy/auto-config from 0.1.2 to v1 [#22](https://github.com/artsy/express-reloadable/pull/22) ([@renovate-bot](https://github.com/renovate-bot)) 195 | - Update dep @artsy/auto-config from 0.1.0 to v0.1.2 [#21](https://github.com/artsy/express-reloadable/pull/21) ([@renovate-bot](https://github.com/renovate-bot)) 196 | - Update dep @artsy/express-reloadable from 1.4.0 to v1.4.1 [#19](https://github.com/artsy/express-reloadable/pull/19) ([@renovate-bot](https://github.com/renovate-bot)) 197 | 198 | #### Authors: 1 199 | 200 | - Renovate Bot ([@renovate-bot](https://github.com/renovate-bot)) 201 | 202 | --- 203 | 204 | # v1.4.1 (Mon Apr 29 2019) 205 | 206 | #### 🏠 Internal 207 | 208 | - Update dep express from 4.16.2 to v4.16.4 [#17](https://github.com/artsy/express-reloadable/pull/17) ([@renovate-bot](https://github.com/renovate-bot)) 209 | - Update dep tape from 4.9.0 to v4.10.1 [#18](https://github.com/artsy/express-reloadable/pull/18) ([@renovate-bot](https://github.com/renovate-bot)) 210 | - Pin dependencies [#15](https://github.com/artsy/express-reloadable/pull/15) ([@renovate-bot](https://github.com/renovate-bot)) 211 | - Add circle, renovate, auto [#12](https://github.com/artsy/express-reloadable/pull/12) ([@zephraph](https://github.com/zephraph)) 212 | 213 | #### ⚠️ Pushed to master 214 | 215 | - Update README.md ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 216 | - Delete circle.yml ([@zephraph](https://github.com/zephraph)) 217 | - 1.4.0 ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 218 | - v1.4.0 ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 219 | - v1.3.1 ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 220 | - Dont exit on errors ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 221 | - Fix log ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 222 | - Make resolve safer ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 223 | - v1.2.0 ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 224 | - Bump example version ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 225 | - Update README.md ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 226 | - Update README.md ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 227 | - Fix line-breaks in logs ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 228 | - Update examples and add log on mount ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 229 | - Initial file addition ([@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com)) 230 | 231 | #### Authors: 3 232 | 233 | - Renovate Bot ([@renovate-bot](https://github.com/renovate-bot)) 234 | - Justin Bennett ([@zephraph](https://github.com/zephraph)) 235 | - [@damassi.pappas@gmail.com](https://github.com/damassi.pappas@gmail.com) -------------------------------------------------------------------------------- /example/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@artsy/express-reloadable@1.4.3": 6 | version "1.4.3" 7 | resolved "https://registry.yarnpkg.com/@artsy/express-reloadable/-/express-reloadable-1.4.3.tgz#dcc5f15d6370209e538104d6db74dd3756b6a151" 8 | integrity sha512-J+otTWHUayPwiB1YW/OXe8vBSvkzdkmAo3kOcmKDN9/Mk370mTtGyk1/AJ5Qj+2jIStr9SnzZveBUPHAbE7qbg== 9 | dependencies: 10 | chalk "^2.3.1" 11 | chokidar "^3.0.0" 12 | decache "^4.4.0" 13 | 14 | accepts@~1.3.3: 15 | version "1.3.4" 16 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" 17 | dependencies: 18 | mime-types "~2.1.16" 19 | negotiator "0.6.1" 20 | 21 | ansi-styles@^3.2.1: 22 | version "3.2.1" 23 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 24 | dependencies: 25 | color-convert "^1.9.0" 26 | 27 | anymatch@^3.0.1: 28 | version "3.0.1" 29 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.1.tgz#a47b8a9e3c3f7f17420276e05ef39746ac1777df" 30 | integrity sha512-WQdpV5fo7XSY76HPN4pqdUl13Q282JsV0gQ8OnIxQsqDEHDZJCBkQ89fL1Mb3tNiPzGQnxMHM5G2iG3k9O6yng== 31 | dependencies: 32 | normalize-path "^3.0.0" 33 | picomatch "^2.0.4" 34 | 35 | array-flatten@1.1.1: 36 | version "1.1.1" 37 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 38 | 39 | async-each@^1.0.3: 40 | version "1.0.3" 41 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" 42 | integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== 43 | 44 | axios@^0.18.0: 45 | version "0.18.0" 46 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" 47 | integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI= 48 | dependencies: 49 | follow-redirects "^1.3.0" 50 | is-buffer "^1.1.5" 51 | 52 | balanced-match@^1.0.0: 53 | version "1.0.0" 54 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 55 | 56 | binary-extensions@^2.0.0: 57 | version "2.0.0" 58 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 59 | integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== 60 | 61 | brace-expansion@^1.1.7: 62 | version "1.1.8" 63 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 64 | dependencies: 65 | balanced-match "^1.0.0" 66 | concat-map "0.0.1" 67 | 68 | braces@^3.0.2: 69 | version "3.0.2" 70 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 71 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 72 | dependencies: 73 | fill-range "^7.0.1" 74 | 75 | callsite@^1.0.0: 76 | version "1.0.0" 77 | resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" 78 | 79 | chalk@^2.3.1: 80 | version "2.4.1" 81 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 82 | dependencies: 83 | ansi-styles "^3.2.1" 84 | escape-string-regexp "^1.0.5" 85 | supports-color "^5.3.0" 86 | 87 | chokidar@^3.0.0: 88 | version "3.0.0" 89 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.0.tgz#6b538f0fd6d5d31d5dd2b59e05426bec0f49aa40" 90 | integrity sha512-ebzWopcacB2J19Jsb5RPtMrzmjUZ5VAQnsL0Ztrix3lswozHbiDp+1Lg3AWSKHdwsps/W2vtshA/x3I827F78g== 91 | dependencies: 92 | anymatch "^3.0.1" 93 | async-each "^1.0.3" 94 | braces "^3.0.2" 95 | glob-parent "^5.0.0" 96 | is-binary-path "^2.1.0" 97 | is-glob "^4.0.1" 98 | normalize-path "^3.0.0" 99 | readdirp "^3.0.1" 100 | optionalDependencies: 101 | fsevents "^2.0.6" 102 | 103 | color-convert@^1.9.0: 104 | version "1.9.1" 105 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 106 | dependencies: 107 | color-name "^1.1.1" 108 | 109 | color-name@^1.1.1: 110 | version "1.1.3" 111 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 112 | 113 | concat-map@0.0.1: 114 | version "0.0.1" 115 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 116 | 117 | content-disposition@0.5.2: 118 | version "0.5.2" 119 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 120 | 121 | content-type@~1.0.2: 122 | version "1.0.2" 123 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" 124 | 125 | cookie-signature@1.0.6: 126 | version "1.0.6" 127 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 128 | 129 | cookie@0.3.1: 130 | version "0.3.1" 131 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 132 | 133 | debug@2.6.8: 134 | version "2.6.8" 135 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" 136 | dependencies: 137 | ms "2.0.0" 138 | 139 | debug@^3.2.6: 140 | version "3.2.6" 141 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 142 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 143 | dependencies: 144 | ms "^2.1.1" 145 | 146 | decache@^4.4.0: 147 | version "4.4.0" 148 | resolved "https://registry.yarnpkg.com/decache/-/decache-4.4.0.tgz#6f6df6b85d7e7c4410a932ffc26489b78e9acd13" 149 | dependencies: 150 | callsite "^1.0.0" 151 | 152 | depd@1.1.1, depd@~1.1.1: 153 | version "1.1.1" 154 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" 155 | 156 | destroy@~1.0.4: 157 | version "1.0.4" 158 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 159 | 160 | ee-first@1.1.1: 161 | version "1.1.1" 162 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 163 | 164 | encodeurl@~1.0.1: 165 | version "1.0.1" 166 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" 167 | 168 | escape-html@~1.0.3: 169 | version "1.0.3" 170 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 171 | 172 | escape-string-regexp@^1.0.5: 173 | version "1.0.5" 174 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 175 | 176 | etag@~1.8.0: 177 | version "1.8.0" 178 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" 179 | 180 | express@^4.15.4: 181 | version "4.15.4" 182 | resolved "https://registry.yarnpkg.com/express/-/express-4.15.4.tgz#032e2253489cf8fce02666beca3d11ed7a2daed1" 183 | dependencies: 184 | accepts "~1.3.3" 185 | array-flatten "1.1.1" 186 | content-disposition "0.5.2" 187 | content-type "~1.0.2" 188 | cookie "0.3.1" 189 | cookie-signature "1.0.6" 190 | debug "2.6.8" 191 | depd "~1.1.1" 192 | encodeurl "~1.0.1" 193 | escape-html "~1.0.3" 194 | etag "~1.8.0" 195 | finalhandler "~1.0.4" 196 | fresh "0.5.0" 197 | merge-descriptors "1.0.1" 198 | methods "~1.1.2" 199 | on-finished "~2.3.0" 200 | parseurl "~1.3.1" 201 | path-to-regexp "0.1.7" 202 | proxy-addr "~1.1.5" 203 | qs "6.5.0" 204 | range-parser "~1.2.0" 205 | send "0.15.4" 206 | serve-static "1.12.4" 207 | setprototypeof "1.0.3" 208 | statuses "~1.3.1" 209 | type-is "~1.6.15" 210 | utils-merge "1.0.0" 211 | vary "~1.1.1" 212 | 213 | fill-range@^7.0.1: 214 | version "7.0.1" 215 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 216 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 217 | dependencies: 218 | to-regex-range "^5.0.1" 219 | 220 | finalhandler@~1.0.4: 221 | version "1.0.4" 222 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.4.tgz#18574f2e7c4b98b8ae3b230c21f201f31bdb3fb7" 223 | dependencies: 224 | debug "2.6.8" 225 | encodeurl "~1.0.1" 226 | escape-html "~1.0.3" 227 | on-finished "~2.3.0" 228 | parseurl "~1.3.1" 229 | statuses "~1.3.1" 230 | unpipe "~1.0.0" 231 | 232 | follow-redirects@^1.3.0: 233 | version "1.7.0" 234 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" 235 | integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ== 236 | dependencies: 237 | debug "^3.2.6" 238 | 239 | forwarded@~0.1.0: 240 | version "0.1.0" 241 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" 242 | 243 | fresh@0.5.0: 244 | version "0.5.0" 245 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" 246 | 247 | fs.realpath@^1.0.0: 248 | version "1.0.0" 249 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 250 | 251 | fsevents@^2.0.6: 252 | version "2.0.6" 253 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.6.tgz#87b19df0bfb4a1a51d7ddb51b01b5f3bedb40c33" 254 | integrity sha512-vfmKZp3XPM36DNF0qhW+Cdxk7xm7gTEHY1clv1Xq1arwRQuKZgAhw+NZNWbJBtuaNxzNXwhfdPYRrvIbjfS33A== 255 | 256 | glob-parent@^5.0.0: 257 | version "5.0.0" 258 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" 259 | integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== 260 | dependencies: 261 | is-glob "^4.0.1" 262 | 263 | glob@^7.1.2: 264 | version "7.1.2" 265 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 266 | dependencies: 267 | fs.realpath "^1.0.0" 268 | inflight "^1.0.4" 269 | inherits "2" 270 | minimatch "^3.0.4" 271 | once "^1.3.0" 272 | path-is-absolute "^1.0.0" 273 | 274 | has-flag@^3.0.0: 275 | version "3.0.0" 276 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 277 | 278 | http-errors@~1.6.2: 279 | version "1.6.2" 280 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" 281 | dependencies: 282 | depd "1.1.1" 283 | inherits "2.0.3" 284 | setprototypeof "1.0.3" 285 | statuses ">= 1.3.1 < 2" 286 | 287 | inflight@^1.0.4: 288 | version "1.0.6" 289 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 290 | dependencies: 291 | once "^1.3.0" 292 | wrappy "1" 293 | 294 | inherits@2, inherits@2.0.3: 295 | version "2.0.3" 296 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 297 | 298 | ipaddr.js@1.4.0: 299 | version "1.4.0" 300 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0" 301 | 302 | is-binary-path@^2.1.0: 303 | version "2.1.0" 304 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 305 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 306 | dependencies: 307 | binary-extensions "^2.0.0" 308 | 309 | is-buffer@^1.1.5: 310 | version "1.1.5" 311 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 312 | 313 | is-extglob@^2.1.1: 314 | version "2.1.1" 315 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 316 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 317 | 318 | is-glob@^4.0.1: 319 | version "4.0.1" 320 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 321 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 322 | dependencies: 323 | is-extglob "^2.1.1" 324 | 325 | is-number@^7.0.0: 326 | version "7.0.0" 327 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 328 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 329 | 330 | media-typer@0.3.0: 331 | version "0.3.0" 332 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 333 | 334 | merge-descriptors@1.0.1: 335 | version "1.0.1" 336 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 337 | 338 | methods@~1.1.2: 339 | version "1.1.2" 340 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 341 | 342 | mime-db@~1.29.0: 343 | version "1.29.0" 344 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" 345 | 346 | mime-types@~2.1.15, mime-types@~2.1.16: 347 | version "2.1.16" 348 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" 349 | dependencies: 350 | mime-db "~1.29.0" 351 | 352 | mime@1.3.4: 353 | version "1.3.4" 354 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 355 | 356 | minimatch@^3.0.4: 357 | version "3.0.4" 358 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 359 | dependencies: 360 | brace-expansion "^1.1.7" 361 | 362 | ms@2.0.0: 363 | version "2.0.0" 364 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 365 | 366 | ms@^2.1.1: 367 | version "2.1.1" 368 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 369 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 370 | 371 | negotiator@0.6.1: 372 | version "0.6.1" 373 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 374 | 375 | normalize-path@^3.0.0: 376 | version "3.0.0" 377 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 378 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 379 | 380 | on-finished@~2.3.0: 381 | version "2.3.0" 382 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 383 | dependencies: 384 | ee-first "1.1.1" 385 | 386 | once@^1.3.0: 387 | version "1.4.0" 388 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 389 | dependencies: 390 | wrappy "1" 391 | 392 | parseurl@~1.3.1: 393 | version "1.3.1" 394 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" 395 | 396 | path-is-absolute@^1.0.0: 397 | version "1.0.1" 398 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 399 | 400 | path-to-regexp@0.1.7: 401 | version "0.1.7" 402 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 403 | 404 | picomatch@^2.0.4: 405 | version "2.0.6" 406 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.6.tgz#f39cfedd26213982733ae6b819d3da0e736598d5" 407 | integrity sha512-Btng9qVvFsW6FkXYQQK5nEI5i8xdXFDmlKxC7Q8S2Bu5HGWnbQf7ts2kOoxJIrZn5hmw61RZIayAg2zBuJDtyQ== 408 | 409 | proxy-addr@~1.1.5: 410 | version "1.1.5" 411 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918" 412 | dependencies: 413 | forwarded "~0.1.0" 414 | ipaddr.js "1.4.0" 415 | 416 | qs@6.5.0: 417 | version "6.5.0" 418 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" 419 | 420 | range-parser@~1.2.0: 421 | version "1.2.0" 422 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 423 | 424 | readdirp@^3.0.1: 425 | version "3.0.1" 426 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.0.1.tgz#14a8875883c5575c235579624a1e177cb0b1ec58" 427 | integrity sha512-emMp13NEwWQQX1yeDgrzDNCSY7NHV6k9HTW0OhyQqOAzYacbqQhnmWiCYjxNPcqMTQ9k77oXQJp28jkytm3+jg== 428 | dependencies: 429 | picomatch "^2.0.4" 430 | 431 | send@0.15.4: 432 | version "0.15.4" 433 | resolved "https://registry.yarnpkg.com/send/-/send-0.15.4.tgz#985faa3e284b0273c793364a35c6737bd93905b9" 434 | dependencies: 435 | debug "2.6.8" 436 | depd "~1.1.1" 437 | destroy "~1.0.4" 438 | encodeurl "~1.0.1" 439 | escape-html "~1.0.3" 440 | etag "~1.8.0" 441 | fresh "0.5.0" 442 | http-errors "~1.6.2" 443 | mime "1.3.4" 444 | ms "2.0.0" 445 | on-finished "~2.3.0" 446 | range-parser "~1.2.0" 447 | statuses "~1.3.1" 448 | 449 | serve-static@1.12.4: 450 | version "1.12.4" 451 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.4.tgz#9b6aa98eeb7253c4eedc4c1f6fdbca609901a961" 452 | dependencies: 453 | encodeurl "~1.0.1" 454 | escape-html "~1.0.3" 455 | parseurl "~1.3.1" 456 | send "0.15.4" 457 | 458 | setprototypeof@1.0.3: 459 | version "1.0.3" 460 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" 461 | 462 | "statuses@>= 1.3.1 < 2", statuses@~1.3.1: 463 | version "1.3.1" 464 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" 465 | 466 | supports-color@^5.3.0: 467 | version "5.4.0" 468 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 469 | dependencies: 470 | has-flag "^3.0.0" 471 | 472 | to-regex-range@^5.0.1: 473 | version "5.0.1" 474 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 475 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 476 | dependencies: 477 | is-number "^7.0.0" 478 | 479 | type-is@~1.6.15: 480 | version "1.6.15" 481 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" 482 | dependencies: 483 | media-typer "0.3.0" 484 | mime-types "~2.1.15" 485 | 486 | unpipe@~1.0.0: 487 | version "1.0.0" 488 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 489 | 490 | utils-merge@1.0.0: 491 | version "1.0.0" 492 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" 493 | 494 | vary@~1.1.1: 495 | version "1.1.1" 496 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" 497 | 498 | wrappy@1: 499 | version "1.0.2" 500 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 501 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@artsy/auto-config@1.1.0": 6 | version "1.1.0" 7 | resolved "https://registry.yarnpkg.com/@artsy/auto-config/-/auto-config-1.1.0.tgz#5134a87f73869f63eca040ed019c42e2f509be05" 8 | integrity sha512-zZS4o3nz40YNegoQnWdKpr+sQOlAGfU/sgRQBOEuHCPLEBv/KxlxeielvpZ6Gy8iEvAiHy7PEiyQxKLK2O4uFw== 9 | 10 | accepts@~1.3.8: 11 | version "1.3.8" 12 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 13 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 14 | dependencies: 15 | mime-types "~2.1.34" 16 | negotiator "0.6.3" 17 | 18 | ansi-styles@^3.2.0: 19 | version "3.2.0" 20 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 21 | dependencies: 22 | color-convert "^1.9.0" 23 | 24 | anymatch@^3.0.1: 25 | version "3.1.0" 26 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.0.tgz#e609350e50a9313b472789b2f14ef35808ee14d6" 27 | integrity sha512-Ozz7l4ixzI7Oxj2+cw+p0tVUt27BpaJ+1+q1TCeANWxHpvyn2+Un+YamBdfKu0uh8xLodGhoa1v7595NhKDAuA== 28 | dependencies: 29 | normalize-path "^3.0.0" 30 | picomatch "^2.0.4" 31 | 32 | array-flatten@1.1.1: 33 | version "1.1.1" 34 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 35 | 36 | balanced-match@^1.0.0: 37 | version "1.0.0" 38 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 39 | 40 | binary-extensions@^2.0.0: 41 | version "2.0.0" 42 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 43 | integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== 44 | 45 | body-parser@1.19.2: 46 | version "1.19.2" 47 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" 48 | integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== 49 | dependencies: 50 | bytes "3.1.2" 51 | content-type "~1.0.4" 52 | debug "2.6.9" 53 | depd "~1.1.2" 54 | http-errors "1.8.1" 55 | iconv-lite "0.4.24" 56 | on-finished "~2.3.0" 57 | qs "6.9.7" 58 | raw-body "2.4.3" 59 | type-is "~1.6.18" 60 | 61 | brace-expansion@^1.1.7: 62 | version "1.1.11" 63 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 64 | dependencies: 65 | balanced-match "^1.0.0" 66 | concat-map "0.0.1" 67 | 68 | braces@^3.0.2: 69 | version "3.0.2" 70 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 71 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 72 | dependencies: 73 | fill-range "^7.0.1" 74 | 75 | bytes@3.1.2: 76 | version "3.1.2" 77 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 78 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 79 | 80 | callsite@^1.0.0: 81 | version "1.0.0" 82 | resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" 83 | 84 | chalk@^2.3.1: 85 | version "2.3.1" 86 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" 87 | dependencies: 88 | ansi-styles "^3.2.0" 89 | escape-string-regexp "^1.0.5" 90 | supports-color "^5.2.0" 91 | 92 | chokidar@^3.0.0: 93 | version "3.0.2" 94 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.2.tgz#0d1cd6d04eb2df0327446188cd13736a3367d681" 95 | integrity sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA== 96 | dependencies: 97 | anymatch "^3.0.1" 98 | braces "^3.0.2" 99 | glob-parent "^5.0.0" 100 | is-binary-path "^2.1.0" 101 | is-glob "^4.0.1" 102 | normalize-path "^3.0.0" 103 | readdirp "^3.1.1" 104 | optionalDependencies: 105 | fsevents "^2.0.6" 106 | 107 | color-convert@^1.9.0: 108 | version "1.9.1" 109 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 110 | dependencies: 111 | color-name "^1.1.1" 112 | 113 | color-name@^1.1.1: 114 | version "1.1.3" 115 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 116 | 117 | concat-map@0.0.1: 118 | version "0.0.1" 119 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 120 | 121 | content-disposition@0.5.4: 122 | version "0.5.4" 123 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 124 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 125 | dependencies: 126 | safe-buffer "5.2.1" 127 | 128 | content-type@~1.0.4: 129 | version "1.0.4" 130 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 131 | 132 | cookie-signature@1.0.6: 133 | version "1.0.6" 134 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 135 | 136 | cookie@0.4.2: 137 | version "0.4.2" 138 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" 139 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== 140 | 141 | debug@2.6.9: 142 | version "2.6.9" 143 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 144 | dependencies: 145 | ms "2.0.0" 146 | 147 | decache@^4.4.0: 148 | version "4.4.0" 149 | resolved "https://registry.yarnpkg.com/decache/-/decache-4.4.0.tgz#6f6df6b85d7e7c4410a932ffc26489b78e9acd13" 150 | dependencies: 151 | callsite "^1.0.0" 152 | 153 | deep-equal@~1.0.1: 154 | version "1.0.1" 155 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 156 | 157 | define-properties@^1.1.2: 158 | version "1.1.2" 159 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" 160 | dependencies: 161 | foreach "^2.0.5" 162 | object-keys "^1.0.8" 163 | 164 | defined@~1.0.0: 165 | version "1.0.0" 166 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 167 | 168 | depd@~1.1.2: 169 | version "1.1.2" 170 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 171 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 172 | 173 | destroy@~1.0.4: 174 | version "1.0.4" 175 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 176 | 177 | ee-first@1.1.1: 178 | version "1.1.1" 179 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 180 | 181 | encodeurl@~1.0.2: 182 | version "1.0.2" 183 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 184 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 185 | 186 | es-abstract@^1.5.0: 187 | version "1.10.0" 188 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" 189 | dependencies: 190 | es-to-primitive "^1.1.1" 191 | function-bind "^1.1.1" 192 | has "^1.0.1" 193 | is-callable "^1.1.3" 194 | is-regex "^1.0.4" 195 | 196 | es-to-primitive@^1.1.1: 197 | version "1.1.1" 198 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 199 | dependencies: 200 | is-callable "^1.1.1" 201 | is-date-object "^1.0.1" 202 | is-symbol "^1.0.1" 203 | 204 | escape-html@~1.0.3: 205 | version "1.0.3" 206 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 207 | 208 | escape-string-regexp@^1.0.5: 209 | version "1.0.5" 210 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 211 | 212 | etag@~1.8.1: 213 | version "1.8.1" 214 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 215 | 216 | express@4.17.3: 217 | version "4.17.3" 218 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" 219 | integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== 220 | dependencies: 221 | accepts "~1.3.8" 222 | array-flatten "1.1.1" 223 | body-parser "1.19.2" 224 | content-disposition "0.5.4" 225 | content-type "~1.0.4" 226 | cookie "0.4.2" 227 | cookie-signature "1.0.6" 228 | debug "2.6.9" 229 | depd "~1.1.2" 230 | encodeurl "~1.0.2" 231 | escape-html "~1.0.3" 232 | etag "~1.8.1" 233 | finalhandler "~1.1.2" 234 | fresh "0.5.2" 235 | merge-descriptors "1.0.1" 236 | methods "~1.1.2" 237 | on-finished "~2.3.0" 238 | parseurl "~1.3.3" 239 | path-to-regexp "0.1.7" 240 | proxy-addr "~2.0.7" 241 | qs "6.9.7" 242 | range-parser "~1.2.1" 243 | safe-buffer "5.2.1" 244 | send "0.17.2" 245 | serve-static "1.14.2" 246 | setprototypeof "1.2.0" 247 | statuses "~1.5.0" 248 | type-is "~1.6.18" 249 | utils-merge "1.0.1" 250 | vary "~1.1.2" 251 | 252 | fill-range@^7.0.1: 253 | version "7.0.1" 254 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 255 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 256 | dependencies: 257 | to-regex-range "^5.0.1" 258 | 259 | finalhandler@~1.1.2: 260 | version "1.1.2" 261 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 262 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 263 | dependencies: 264 | debug "2.6.9" 265 | encodeurl "~1.0.2" 266 | escape-html "~1.0.3" 267 | on-finished "~2.3.0" 268 | parseurl "~1.3.3" 269 | statuses "~1.5.0" 270 | unpipe "~1.0.0" 271 | 272 | for-each@~0.3.3: 273 | version "0.3.3" 274 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 275 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 276 | dependencies: 277 | is-callable "^1.1.3" 278 | 279 | foreach@^2.0.5: 280 | version "2.0.5" 281 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 282 | 283 | forwarded@0.2.0: 284 | version "0.2.0" 285 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 286 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 287 | 288 | fresh@0.5.2: 289 | version "0.5.2" 290 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 291 | 292 | fs.realpath@^1.0.0: 293 | version "1.0.0" 294 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 295 | 296 | fsevents@^2.0.6: 297 | version "2.0.7" 298 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" 299 | integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== 300 | 301 | function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: 302 | version "1.1.1" 303 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 304 | 305 | glob-parent@^5.0.0: 306 | version "5.1.2" 307 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 308 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 309 | dependencies: 310 | is-glob "^4.0.1" 311 | 312 | glob@~7.1.3: 313 | version "7.1.3" 314 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 315 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 316 | dependencies: 317 | fs.realpath "^1.0.0" 318 | inflight "^1.0.4" 319 | inherits "2" 320 | minimatch "^3.0.4" 321 | once "^1.3.0" 322 | path-is-absolute "^1.0.0" 323 | 324 | has-flag@^3.0.0: 325 | version "3.0.0" 326 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 327 | 328 | has@^1.0.1: 329 | version "1.0.1" 330 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 331 | dependencies: 332 | function-bind "^1.0.2" 333 | 334 | has@~1.0.3: 335 | version "1.0.3" 336 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 337 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 338 | dependencies: 339 | function-bind "^1.1.1" 340 | 341 | http-errors@1.8.1: 342 | version "1.8.1" 343 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" 344 | integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== 345 | dependencies: 346 | depd "~1.1.2" 347 | inherits "2.0.4" 348 | setprototypeof "1.2.0" 349 | statuses ">= 1.5.0 < 2" 350 | toidentifier "1.0.1" 351 | 352 | iconv-lite@0.4.24: 353 | version "0.4.24" 354 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 355 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 356 | dependencies: 357 | safer-buffer ">= 2.1.2 < 3" 358 | 359 | inflight@^1.0.4: 360 | version "1.0.6" 361 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 362 | dependencies: 363 | once "^1.3.0" 364 | wrappy "1" 365 | 366 | inherits@2, inherits@~2.0.3: 367 | version "2.0.3" 368 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 369 | 370 | inherits@2.0.4: 371 | version "2.0.4" 372 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 373 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 374 | 375 | ipaddr.js@1.9.1: 376 | version "1.9.1" 377 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 378 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 379 | 380 | is-binary-path@^2.1.0: 381 | version "2.1.0" 382 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 383 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 384 | dependencies: 385 | binary-extensions "^2.0.0" 386 | 387 | is-callable@^1.1.1, is-callable@^1.1.3: 388 | version "1.1.3" 389 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" 390 | 391 | is-date-object@^1.0.1: 392 | version "1.0.1" 393 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 394 | 395 | is-extglob@^2.1.1: 396 | version "2.1.1" 397 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 398 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 399 | 400 | is-glob@^4.0.1: 401 | version "4.0.3" 402 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 403 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 404 | dependencies: 405 | is-extglob "^2.1.1" 406 | 407 | is-number@^7.0.0: 408 | version "7.0.0" 409 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 410 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 411 | 412 | is-regex@^1.0.4: 413 | version "1.0.4" 414 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 415 | dependencies: 416 | has "^1.0.1" 417 | 418 | is-symbol@^1.0.1: 419 | version "1.0.1" 420 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 421 | 422 | media-typer@0.3.0: 423 | version "0.3.0" 424 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 425 | 426 | merge-descriptors@1.0.1: 427 | version "1.0.1" 428 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 429 | 430 | methods@~1.1.2: 431 | version "1.1.2" 432 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 433 | 434 | mime-db@1.40.0: 435 | version "1.40.0" 436 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" 437 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== 438 | 439 | mime-db@1.52.0: 440 | version "1.52.0" 441 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 442 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 443 | 444 | mime-types@~2.1.24: 445 | version "2.1.24" 446 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" 447 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== 448 | dependencies: 449 | mime-db "1.40.0" 450 | 451 | mime-types@~2.1.34: 452 | version "2.1.35" 453 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 454 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 455 | dependencies: 456 | mime-db "1.52.0" 457 | 458 | mime@1.6.0: 459 | version "1.6.0" 460 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 461 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 462 | 463 | minimatch@^3.0.4: 464 | version "3.0.4" 465 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 466 | dependencies: 467 | brace-expansion "^1.1.7" 468 | 469 | minimist@~1.2.0: 470 | version "1.2.5" 471 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 472 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 473 | 474 | ms@2.0.0: 475 | version "2.0.0" 476 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 477 | 478 | ms@2.1.3: 479 | version "2.1.3" 480 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 481 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 482 | 483 | negotiator@0.6.3: 484 | version "0.6.3" 485 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 486 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 487 | 488 | normalize-path@^3.0.0: 489 | version "3.0.0" 490 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 491 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 492 | 493 | object-inspect@~1.6.0: 494 | version "1.6.0" 495 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" 496 | integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== 497 | 498 | object-keys@^1.0.8: 499 | version "1.0.11" 500 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" 501 | 502 | on-finished@~2.3.0: 503 | version "2.3.0" 504 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 505 | dependencies: 506 | ee-first "1.1.1" 507 | 508 | once@^1.3.0: 509 | version "1.4.0" 510 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 511 | dependencies: 512 | wrappy "1" 513 | 514 | parseurl@~1.3.3: 515 | version "1.3.3" 516 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 517 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 518 | 519 | path-is-absolute@^1.0.0: 520 | version "1.0.1" 521 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 522 | 523 | path-parse@^1.0.6: 524 | version "1.0.7" 525 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 526 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 527 | 528 | path-to-regexp@0.1.7: 529 | version "0.1.7" 530 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 531 | 532 | picomatch@^2.0.4: 533 | version "2.0.7" 534 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" 535 | integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== 536 | 537 | proxy-addr@~2.0.7: 538 | version "2.0.7" 539 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 540 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 541 | dependencies: 542 | forwarded "0.2.0" 543 | ipaddr.js "1.9.1" 544 | 545 | qs@6.9.7: 546 | version "6.9.7" 547 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" 548 | integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== 549 | 550 | range-parser@~1.2.1: 551 | version "1.2.1" 552 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 553 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 554 | 555 | raw-body@2.4.3: 556 | version "2.4.3" 557 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" 558 | integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== 559 | dependencies: 560 | bytes "3.1.2" 561 | http-errors "1.8.1" 562 | iconv-lite "0.4.24" 563 | unpipe "1.0.0" 564 | 565 | readdirp@^3.1.1: 566 | version "3.1.2" 567 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.2.tgz#fa85d2d14d4289920e4671dead96431add2ee78a" 568 | integrity sha512-8rhl0xs2cxfVsqzreYCvs8EwBfn/DhVdqtoLmw19uI3SC5avYX9teCurlErfpPXGmYtMHReGaP2RsLnFvz/lnw== 569 | dependencies: 570 | picomatch "^2.0.4" 571 | 572 | resolve@~1.10.0: 573 | version "1.10.1" 574 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" 575 | integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA== 576 | dependencies: 577 | path-parse "^1.0.6" 578 | 579 | resumer@~0.0.0: 580 | version "0.0.0" 581 | resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" 582 | dependencies: 583 | through "~2.3.4" 584 | 585 | safe-buffer@5.2.1: 586 | version "5.2.1" 587 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 588 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 589 | 590 | "safer-buffer@>= 2.1.2 < 3": 591 | version "2.1.2" 592 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 593 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 594 | 595 | send@0.17.2: 596 | version "0.17.2" 597 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" 598 | integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== 599 | dependencies: 600 | debug "2.6.9" 601 | depd "~1.1.2" 602 | destroy "~1.0.4" 603 | encodeurl "~1.0.2" 604 | escape-html "~1.0.3" 605 | etag "~1.8.1" 606 | fresh "0.5.2" 607 | http-errors "1.8.1" 608 | mime "1.6.0" 609 | ms "2.1.3" 610 | on-finished "~2.3.0" 611 | range-parser "~1.2.1" 612 | statuses "~1.5.0" 613 | 614 | serve-static@1.14.2: 615 | version "1.14.2" 616 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" 617 | integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== 618 | dependencies: 619 | encodeurl "~1.0.2" 620 | escape-html "~1.0.3" 621 | parseurl "~1.3.3" 622 | send "0.17.2" 623 | 624 | setprototypeof@1.2.0: 625 | version "1.2.0" 626 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 627 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 628 | 629 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 630 | version "1.5.0" 631 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 632 | integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== 633 | 634 | string.prototype.trim@~1.1.2: 635 | version "1.1.2" 636 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" 637 | dependencies: 638 | define-properties "^1.1.2" 639 | es-abstract "^1.5.0" 640 | function-bind "^1.0.2" 641 | 642 | supports-color@^5.2.0: 643 | version "5.2.0" 644 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a" 645 | dependencies: 646 | has-flag "^3.0.0" 647 | 648 | tape@4.10.1: 649 | version "4.10.1" 650 | resolved "https://registry.yarnpkg.com/tape/-/tape-4.10.1.tgz#f73be60888dcb120f08b57f947af65a829506a5f" 651 | integrity sha512-G0DywYV1jQeY3axeYnXUOt6ktnxS9OPJh97FGR3nrua8lhWi1zPflLxcAHavZ7Jf3qUfY7cxcVIVFa4mY2IY1w== 652 | dependencies: 653 | deep-equal "~1.0.1" 654 | defined "~1.0.0" 655 | for-each "~0.3.3" 656 | function-bind "~1.1.1" 657 | glob "~7.1.3" 658 | has "~1.0.3" 659 | inherits "~2.0.3" 660 | minimist "~1.2.0" 661 | object-inspect "~1.6.0" 662 | resolve "~1.10.0" 663 | resumer "~0.0.0" 664 | string.prototype.trim "~1.1.2" 665 | through "~2.3.8" 666 | 667 | through@~2.3.4, through@~2.3.8: 668 | version "2.3.8" 669 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 670 | 671 | to-regex-range@^5.0.1: 672 | version "5.0.1" 673 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 674 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 675 | dependencies: 676 | is-number "^7.0.0" 677 | 678 | toidentifier@1.0.1: 679 | version "1.0.1" 680 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 681 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 682 | 683 | type-is@~1.6.18: 684 | version "1.6.18" 685 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 686 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 687 | dependencies: 688 | media-typer "0.3.0" 689 | mime-types "~2.1.24" 690 | 691 | unpipe@1.0.0, unpipe@~1.0.0: 692 | version "1.0.0" 693 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 694 | 695 | utils-merge@1.0.1: 696 | version "1.0.1" 697 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 698 | 699 | vary@~1.1.2: 700 | version "1.1.2" 701 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 702 | 703 | wrappy@1: 704 | version "1.0.2" 705 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 706 | --------------------------------------------------------------------------------