├── .gitignore ├── .sequelizerc ├── README.md ├── config └── database │ ├── config.json │ └── migrations │ └── 20200323115131-init.ts ├── docker-compose.yaml ├── package-lock.json ├── package.json ├── prepare-layer.sh ├── serverless.yml ├── src ├── app.ts ├── book │ ├── converter │ │ └── BookConverter.ts │ ├── dto │ │ └── BookDto.ts │ ├── model │ │ └── BookModel.ts │ ├── routes │ │ └── BookController.ts │ └── service │ │ └── BookService.ts ├── config │ └── sequelize │ │ ├── config.sequelize.ts │ │ └── init.model.ts ├── environments │ ├── environment.dev.ts │ └── environment.ts └── generated │ └── routes.ts ├── tsconfig.json ├── tslint.json └── tsoa.json /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /dist/ 3 | /layer/ 4 | /.idea/ 5 | /.serverless/ 6 | -------------------------------------------------------------------------------- /.sequelizerc: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | 'config': 'config/database/config.json', 5 | 'migrations-path': 'config/database/migrations', 6 | 'seeders-path': 'config/database/seeders' 7 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Express Serverless Project 2 | 3 | This is a base project for an Express Serverless backend application, using AWS as Cloud Provider. 4 | 5 | By running this project you will have a CRUD application by Express as NodeJs web application framework. 6 | It is written in TypeScript to obtain all the advantages with respect to vanilla JavaScript. 7 | 8 | In this project we will use ```tsoa``` to register our Express routes and to obtain validation without using boilerplate code. 9 | 10 | As all good CRUD services, we need a data source to manage our data. 11 | To manage database object we are going to use Sequelize as ORM. 12 | 13 | ## Project setup 14 | 15 | Run ```npm install``` and install all the necessary dependencies. 16 | 17 | To test and deploy the application on your AWS account you should install Serverless framework by running: 18 | 19 | npm install -g serverless 20 | 21 | ## Local testing 22 | Before running locally our functions, we need to setup the database. 23 | You can run the docker-compose file to create a container with a Postgres database. 24 | 25 | docker-compose up 26 | 27 | When the container is up, run the migration file to correctly initialize the database: 28 | 29 | npm run migrate-db-local 30 | 31 | Since we can't directly test Lambda functions on our local machine, we can use the ```serverless-offline``` plugin to achieve this goal. 32 | Run the following command to emulate locally AWS Lambda and API Gateway: 33 | 34 | npm run start 35 | 36 | Keep in mind that all the API has `/{NODE_ENV}/api` as root prefix 37 | 38 | ## Serverless file 39 | 40 | [Serverless framework](https://github.com/serverless/serverless) comes in our help to easily manage our cloud infrastructure. 41 | 42 | Thanks to the configuration defined in the serverless.yml file, we are going to create an API Gateway with single resource which proxies the API calls to the proper Express route. 43 | 44 | 45 | ## AWS configuration 46 | 47 | Please be sure to have installed AWS CLI and configured it with your credentials. 48 | 49 | This example project uses Aurora Serverless as RDBMS and a Secret Manager where credentials are stored. 50 | 51 | To create/update the Serverless infrastructure on your account, run the command: 52 | 53 | npm run deploy-dev -------------------------------------------------------------------------------- /config/database/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "local": { 3 | "host": "localhost", 4 | "username": "postgres", 5 | "password": "postgres", 6 | "database": "postgres", 7 | "dialect": "postgresql", 8 | "log": true 9 | }, 10 | "dev": { 11 | "host": "xxxx", 12 | "username": "xxxx", 13 | "password": "xxxx", 14 | "database": "postgres", 15 | "dialect": "postgresql", 16 | "log": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /config/database/migrations/20200323115131-init.ts: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | up: async (queryInterface, Sequelize) => { 4 | // book table 5 | await queryInterface.createTable('book', { 6 | id: { 7 | type: Sequelize.DataTypes.INTEGER, 8 | primaryKey: true 9 | }, 10 | title: Sequelize.DataTypes.TEXT 11 | }) 12 | }, 13 | 14 | down: async (queryInterface) => { 15 | await queryInterface.dropTable("book"); 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | 3 | services: 4 | postgres: 5 | image: postgres:10.7-alpine 6 | restart: always 7 | environment: 8 | POSTGRES_PASSWORD: postgres 9 | ports: 10 | - "5432:5432" 11 | volumes: 12 | - my-db:/var/lib/postgresql 13 | 14 | volumes: 15 | my-db: {} -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-serverless", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.10.4", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 10 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 11 | "requires": { 12 | "@babel/highlight": "^7.10.4" 13 | } 14 | }, 15 | "@babel/helper-validator-identifier": { 16 | "version": "7.10.4", 17 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 18 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" 19 | }, 20 | "@babel/highlight": { 21 | "version": "7.10.4", 22 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 23 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 24 | "requires": { 25 | "@babel/helper-validator-identifier": "^7.10.4", 26 | "chalk": "^2.0.0", 27 | "js-tokens": "^4.0.0" 28 | } 29 | }, 30 | "@hapi/accept": { 31 | "version": "3.2.4", 32 | "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-3.2.4.tgz", 33 | "integrity": "sha512-soThGB+QMgfxlh0Vzhzlf3ZOEOPk5biEwcOXhkF0Eedqx8VnhGiggL9UYHrIsOb1rUg3Be3K8kp0iDL2wbVSOQ==", 34 | "requires": { 35 | "@hapi/boom": "7.x.x", 36 | "@hapi/hoek": "8.x.x" 37 | } 38 | }, 39 | "@hapi/address": { 40 | "version": "2.1.4", 41 | "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", 42 | "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" 43 | }, 44 | "@hapi/ammo": { 45 | "version": "3.1.2", 46 | "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-3.1.2.tgz", 47 | "integrity": "sha512-ej9OtFmiZv1qr45g1bxEZNGyaR4jRpyMxU6VhbxjaYThymvOwsyIsUKMZnP5Qw2tfYFuwqCJuIBHGpeIbdX9gQ==", 48 | "requires": { 49 | "@hapi/hoek": "8.x.x" 50 | } 51 | }, 52 | "@hapi/b64": { 53 | "version": "4.2.1", 54 | "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-4.2.1.tgz", 55 | "integrity": "sha512-zqHpQuH5CBMw6hADzKfU/IGNrxq1Q+/wTYV+OiZRQN9F3tMyk+9BUMeBvFRMamduuqL8iSp62QAnJ+7ATiYLWA==", 56 | "requires": { 57 | "@hapi/hoek": "8.x.x" 58 | } 59 | }, 60 | "@hapi/boom": { 61 | "version": "7.4.11", 62 | "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-7.4.11.tgz", 63 | "integrity": "sha512-VSU/Cnj1DXouukYxxkes4nNJonCnlogHvIff1v1RVoN4xzkKhMXX+GRmb3NyH1iar10I9WFPDv2JPwfH3GaV0A==", 64 | "requires": { 65 | "@hapi/hoek": "8.x.x" 66 | } 67 | }, 68 | "@hapi/bounce": { 69 | "version": "1.3.2", 70 | "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-1.3.2.tgz", 71 | "integrity": "sha512-3bnb1AlcEByFZnpDIidxQyw1Gds81z/1rSqlx4bIEE+wUN0ATj0D49B5cE1wGocy90Rp/de4tv7GjsKd5RQeew==", 72 | "requires": { 73 | "@hapi/boom": "7.x.x", 74 | "@hapi/hoek": "^8.3.1" 75 | } 76 | }, 77 | "@hapi/bourne": { 78 | "version": "1.3.2", 79 | "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", 80 | "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" 81 | }, 82 | "@hapi/call": { 83 | "version": "5.1.3", 84 | "resolved": "https://registry.npmjs.org/@hapi/call/-/call-5.1.3.tgz", 85 | "integrity": "sha512-5DfWpMk7qZiYhvBhM5oUiT4GQ/O8a2rFR121/PdwA/eZ2C1EsuD547ZggMKAR5bZ+FtxOf0fdM20zzcXzq2mZA==", 86 | "requires": { 87 | "@hapi/boom": "7.x.x", 88 | "@hapi/hoek": "8.x.x" 89 | } 90 | }, 91 | "@hapi/catbox": { 92 | "version": "10.2.3", 93 | "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-10.2.3.tgz", 94 | "integrity": "sha512-kN9hXO4NYyOHW09CXiuj5qW1syc/0XeVOBsNNk0Tz89wWNQE5h21WF+VsfAw3uFR8swn/Wj3YEVBnWqo82m/JQ==", 95 | "requires": { 96 | "@hapi/boom": "7.x.x", 97 | "@hapi/hoek": "8.x.x", 98 | "@hapi/joi": "16.x.x", 99 | "@hapi/podium": "3.x.x" 100 | } 101 | }, 102 | "@hapi/catbox-memory": { 103 | "version": "4.1.1", 104 | "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-4.1.1.tgz", 105 | "integrity": "sha512-T6Hdy8DExzG0jY7C8yYWZB4XHfc0v+p1EGkwxl2HoaPYAmW7I3E59M/IvmSVpis8RPcIoBp41ZpO2aZPBpM2Ww==", 106 | "requires": { 107 | "@hapi/boom": "7.x.x", 108 | "@hapi/hoek": "8.x.x" 109 | } 110 | }, 111 | "@hapi/content": { 112 | "version": "4.1.1", 113 | "resolved": "https://registry.npmjs.org/@hapi/content/-/content-4.1.1.tgz", 114 | "integrity": "sha512-3TWvmwpVPxFSF3KBjKZ8yDqIKKZZIm7VurDSweYpXYENZrJH3C1hd1+qEQW9wQaUaI76pPBLGrXl6I3B7i3ipA==", 115 | "requires": { 116 | "@hapi/boom": "7.x.x" 117 | } 118 | }, 119 | "@hapi/cryptiles": { 120 | "version": "4.2.1", 121 | "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-4.2.1.tgz", 122 | "integrity": "sha512-XoqgKsHK0l/VpqPs+tr6j6vE+VQ3+2bkF2stvttmc7xAOf1oSAwHcJ0tlp/6MxMysktt1IEY0Csy3khKaP9/uQ==", 123 | "requires": { 124 | "@hapi/boom": "7.x.x" 125 | } 126 | }, 127 | "@hapi/file": { 128 | "version": "1.0.0", 129 | "resolved": "https://registry.npmjs.org/@hapi/file/-/file-1.0.0.tgz", 130 | "integrity": "sha512-Bsfp/+1Gyf70eGtnIgmScvrH8sSypO3TcK3Zf0QdHnzn/ACnAkI6KLtGACmNRPEzzIy+W7aJX5E+1fc9GwIABQ==" 131 | }, 132 | "@hapi/formula": { 133 | "version": "1.2.0", 134 | "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-1.2.0.tgz", 135 | "integrity": "sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==" 136 | }, 137 | "@hapi/h2o2": { 138 | "version": "8.3.2", 139 | "resolved": "https://registry.npmjs.org/@hapi/h2o2/-/h2o2-8.3.2.tgz", 140 | "integrity": "sha512-2WkZq+QAkvYHWGqnUuG0stcVeGyv9T7bopBYnCJSUEuvBZlUf2BTX2JCVSKxsnTLOxCYwoC/aI4Rr0ZSRd2oVg==", 141 | "requires": { 142 | "@hapi/boom": "7.x.x", 143 | "@hapi/hoek": "8.x.x", 144 | "@hapi/joi": "16.x.x", 145 | "@hapi/wreck": "15.x.x" 146 | } 147 | }, 148 | "@hapi/hapi": { 149 | "version": "18.4.1", 150 | "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-18.4.1.tgz", 151 | "integrity": "sha512-9HjVGa0Z4Qv9jk9AVoUdJMQLA+KuZ+liKWyEEkVBx3e3H1F0JM6aGbPkY9jRfwsITBWGBU2iXazn65SFKSi/tg==", 152 | "requires": { 153 | "@hapi/accept": "^3.2.4", 154 | "@hapi/ammo": "^3.1.2", 155 | "@hapi/boom": "7.x.x", 156 | "@hapi/bounce": "1.x.x", 157 | "@hapi/call": "^5.1.3", 158 | "@hapi/catbox": "10.x.x", 159 | "@hapi/catbox-memory": "4.x.x", 160 | "@hapi/heavy": "6.x.x", 161 | "@hapi/hoek": "8.x.x", 162 | "@hapi/joi": "15.x.x", 163 | "@hapi/mimos": "4.x.x", 164 | "@hapi/podium": "3.x.x", 165 | "@hapi/shot": "4.x.x", 166 | "@hapi/somever": "2.x.x", 167 | "@hapi/statehood": "6.x.x", 168 | "@hapi/subtext": "^6.1.3", 169 | "@hapi/teamwork": "3.x.x", 170 | "@hapi/topo": "3.x.x" 171 | }, 172 | "dependencies": { 173 | "@hapi/joi": { 174 | "version": "15.1.1", 175 | "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", 176 | "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", 177 | "requires": { 178 | "@hapi/address": "2.x.x", 179 | "@hapi/bourne": "1.x.x", 180 | "@hapi/hoek": "8.x.x", 181 | "@hapi/topo": "3.x.x" 182 | } 183 | } 184 | } 185 | }, 186 | "@hapi/heavy": { 187 | "version": "6.2.2", 188 | "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-6.2.2.tgz", 189 | "integrity": "sha512-PY1dCCO6dsze7RlafIRhTaGeyTgVe49A/lSkxbhKGjQ7x46o/OFf7hLiRqTCDh3atcEKf6362EaB3+kTUbCsVA==", 190 | "requires": { 191 | "@hapi/boom": "7.x.x", 192 | "@hapi/hoek": "8.x.x", 193 | "@hapi/joi": "16.x.x" 194 | } 195 | }, 196 | "@hapi/hoek": { 197 | "version": "8.5.1", 198 | "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", 199 | "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" 200 | }, 201 | "@hapi/iron": { 202 | "version": "5.1.4", 203 | "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-5.1.4.tgz", 204 | "integrity": "sha512-+ElC+OCiwWLjlJBmm8ZEWjlfzTMQTdgPnU/TsoU5QsktspIWmWi9IU4kU83nH+X/SSya8TP8h8P11Wr5L7dkQQ==", 205 | "requires": { 206 | "@hapi/b64": "4.x.x", 207 | "@hapi/boom": "7.x.x", 208 | "@hapi/bourne": "1.x.x", 209 | "@hapi/cryptiles": "4.x.x", 210 | "@hapi/hoek": "8.x.x" 211 | } 212 | }, 213 | "@hapi/joi": { 214 | "version": "16.1.8", 215 | "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-16.1.8.tgz", 216 | "integrity": "sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg==", 217 | "requires": { 218 | "@hapi/address": "^2.1.2", 219 | "@hapi/formula": "^1.2.0", 220 | "@hapi/hoek": "^8.2.4", 221 | "@hapi/pinpoint": "^1.0.2", 222 | "@hapi/topo": "^3.1.3" 223 | } 224 | }, 225 | "@hapi/mimos": { 226 | "version": "4.1.1", 227 | "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-4.1.1.tgz", 228 | "integrity": "sha512-CXoi/zfcTWfKYX756eEea8rXJRIb9sR4d7VwyAH9d3BkDyNgAesZxvqIdm55npQc6S9mU3FExinMAQVlIkz0eA==", 229 | "requires": { 230 | "@hapi/hoek": "8.x.x", 231 | "mime-db": "1.x.x" 232 | } 233 | }, 234 | "@hapi/nigel": { 235 | "version": "3.1.1", 236 | "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-3.1.1.tgz", 237 | "integrity": "sha512-R9YWx4S8yu0gcCBrMUDCiEFm1SQT895dMlYoeNBp8I6YhF1BFF1iYPueKA2Kkp9BvyHdjmvrxCOns7GMmpl+Fw==", 238 | "requires": { 239 | "@hapi/hoek": "8.x.x", 240 | "@hapi/vise": "3.x.x" 241 | } 242 | }, 243 | "@hapi/pez": { 244 | "version": "4.1.2", 245 | "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-4.1.2.tgz", 246 | "integrity": "sha512-8zSdJ8cZrJLFldTgwjU9Fb1JebID+aBCrCsycgqKYe0OZtM2r3Yv3aAwW5z97VsZWCROC1Vx6Mdn4rujh5Ktcg==", 247 | "requires": { 248 | "@hapi/b64": "4.x.x", 249 | "@hapi/boom": "7.x.x", 250 | "@hapi/content": "^4.1.1", 251 | "@hapi/hoek": "8.x.x", 252 | "@hapi/nigel": "3.x.x" 253 | } 254 | }, 255 | "@hapi/pinpoint": { 256 | "version": "1.0.2", 257 | "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-1.0.2.tgz", 258 | "integrity": "sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==" 259 | }, 260 | "@hapi/podium": { 261 | "version": "3.4.3", 262 | "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-3.4.3.tgz", 263 | "integrity": "sha512-QJlnYLEYZWlKQ9fSOtuUcpANyoVGwT68GA9P0iQQCAetBK0fI+nbRBt58+aMixoifczWZUthuGkNjqKxgPh/CQ==", 264 | "requires": { 265 | "@hapi/hoek": "8.x.x", 266 | "@hapi/joi": "16.x.x" 267 | } 268 | }, 269 | "@hapi/shot": { 270 | "version": "4.1.2", 271 | "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-4.1.2.tgz", 272 | "integrity": "sha512-6LeHLjvsq/bQ0R+fhEyr7mqExRGguNTrxFZf5DyKe3CK6pNabiGgYO4JVFaRrLZ3JyuhkS0fo8iiRE2Ql2oA/A==", 273 | "requires": { 274 | "@hapi/hoek": "8.x.x", 275 | "@hapi/joi": "16.x.x" 276 | } 277 | }, 278 | "@hapi/somever": { 279 | "version": "2.1.1", 280 | "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-2.1.1.tgz", 281 | "integrity": "sha512-cic5Sto4KGd9B0oQSdKTokju+rYhCbdpzbMb0EBnrH5Oc1z048hY8PaZ1lx2vBD7I/XIfTQVQetBH57fU51XRA==", 282 | "requires": { 283 | "@hapi/bounce": "1.x.x", 284 | "@hapi/hoek": "8.x.x" 285 | } 286 | }, 287 | "@hapi/statehood": { 288 | "version": "6.1.2", 289 | "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-6.1.2.tgz", 290 | "integrity": "sha512-pYXw1x6npz/UfmtcpUhuMvdK5kuOGTKcJNfLqdNptzietK2UZH5RzNJSlv5bDHeSmordFM3kGItcuQWX2lj2nQ==", 291 | "requires": { 292 | "@hapi/boom": "7.x.x", 293 | "@hapi/bounce": "1.x.x", 294 | "@hapi/bourne": "1.x.x", 295 | "@hapi/cryptiles": "4.x.x", 296 | "@hapi/hoek": "8.x.x", 297 | "@hapi/iron": "5.x.x", 298 | "@hapi/joi": "16.x.x" 299 | } 300 | }, 301 | "@hapi/subtext": { 302 | "version": "6.1.3", 303 | "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-6.1.3.tgz", 304 | "integrity": "sha512-qWN6NbiHNzohVcJMeAlpku/vzbyH4zIpnnMPMPioQMwIxbPFKeNViDCNI6fVBbMPBiw/xB4FjqiJkRG5P9eWWg==", 305 | "requires": { 306 | "@hapi/boom": "7.x.x", 307 | "@hapi/bourne": "1.x.x", 308 | "@hapi/content": "^4.1.1", 309 | "@hapi/file": "1.x.x", 310 | "@hapi/hoek": "8.x.x", 311 | "@hapi/pez": "^4.1.2", 312 | "@hapi/wreck": "15.x.x" 313 | } 314 | }, 315 | "@hapi/teamwork": { 316 | "version": "3.3.1", 317 | "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-3.3.1.tgz", 318 | "integrity": "sha512-61tiqWCYvMKP7fCTXy0M4VE6uNIwA0qvgFoiDubgfj7uqJ0fdHJFQNnVPGrxhLWlwz0uBPWrQlBH7r8y9vFITQ==" 319 | }, 320 | "@hapi/topo": { 321 | "version": "3.1.6", 322 | "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", 323 | "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", 324 | "requires": { 325 | "@hapi/hoek": "^8.3.0" 326 | } 327 | }, 328 | "@hapi/vise": { 329 | "version": "3.1.1", 330 | "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-3.1.1.tgz", 331 | "integrity": "sha512-OXarbiCSadvtg+bSdVPqu31Z1JoBL+FwNYz3cYoBKQ5xq1/Cr4A3IkGpAZbAuxU5y4NL5pZFZG3d2a3ZGm/dOQ==", 332 | "requires": { 333 | "@hapi/hoek": "8.x.x" 334 | } 335 | }, 336 | "@hapi/wreck": { 337 | "version": "15.1.0", 338 | "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-15.1.0.tgz", 339 | "integrity": "sha512-tQczYRTTeYBmvhsek/D49En/5khcShaBEmzrAaDjMrFXKJRuF8xA8+tlq1ETLBFwGd6Do6g2OC74rt11kzawzg==", 340 | "requires": { 341 | "@hapi/boom": "7.x.x", 342 | "@hapi/bourne": "1.x.x", 343 | "@hapi/hoek": "8.x.x" 344 | } 345 | }, 346 | "@sindresorhus/is": { 347 | "version": "0.14.0", 348 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", 349 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" 350 | }, 351 | "@szmarczak/http-timer": { 352 | "version": "1.1.2", 353 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", 354 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", 355 | "requires": { 356 | "defer-to-connect": "^1.0.1" 357 | } 358 | }, 359 | "@types/aws-lambda": { 360 | "version": "8.10.59", 361 | "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.59.tgz", 362 | "integrity": "sha512-X/JclTKqHvo3nMTkHzClHhRz0yxn/VAr7J7LO6jBqaksZlhcDAWuU4oT1Yrt3E9MvX5jyyVIZtrwAI7oPXzXIg==", 363 | "optional": true 364 | }, 365 | "@types/bluebird": { 366 | "version": "3.5.32", 367 | "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.32.tgz", 368 | "integrity": "sha512-dIOxFfI0C+jz89g6lQ+TqhGgPQ0MxSnh/E4xuC0blhFtyW269+mPG5QeLgbdwst/LvdP8o1y0o/Gz5EHXLec/g==" 369 | }, 370 | "@types/body-parser": { 371 | "version": "1.19.0", 372 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", 373 | "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", 374 | "requires": { 375 | "@types/connect": "*", 376 | "@types/node": "*" 377 | } 378 | }, 379 | "@types/color-name": { 380 | "version": "1.1.1", 381 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 382 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" 383 | }, 384 | "@types/connect": { 385 | "version": "3.4.33", 386 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", 387 | "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", 388 | "requires": { 389 | "@types/node": "*" 390 | } 391 | }, 392 | "@types/continuation-local-storage": { 393 | "version": "3.2.2", 394 | "resolved": "https://registry.npmjs.org/@types/continuation-local-storage/-/continuation-local-storage-3.2.2.tgz", 395 | "integrity": "sha512-aItm+aYPJ4rT1cHmAxO+OdWjSviQ9iB5UKb5f0Uvgln0N4hS2mcDodHtPiqicYBXViUYhqyBjhA5uyOcT+S34Q==", 396 | "requires": { 397 | "@types/node": "*" 398 | } 399 | }, 400 | "@types/express": { 401 | "version": "4.17.7", 402 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", 403 | "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", 404 | "requires": { 405 | "@types/body-parser": "*", 406 | "@types/express-serve-static-core": "*", 407 | "@types/qs": "*", 408 | "@types/serve-static": "*" 409 | } 410 | }, 411 | "@types/express-serve-static-core": { 412 | "version": "4.17.9", 413 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", 414 | "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", 415 | "requires": { 416 | "@types/node": "*", 417 | "@types/qs": "*", 418 | "@types/range-parser": "*" 419 | } 420 | }, 421 | "@types/lodash": { 422 | "version": "4.14.159", 423 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.159.tgz", 424 | "integrity": "sha512-gF7A72f7WQN33DpqOWw9geApQPh4M3PxluMtaHxWHXEGSN12/WbcEk/eNSqWNQcQhF66VSZ06vCF94CrHwXJDg==" 425 | }, 426 | "@types/mime": { 427 | "version": "2.0.3", 428 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", 429 | "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" 430 | }, 431 | "@types/node": { 432 | "version": "14.0.27", 433 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", 434 | "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" 435 | }, 436 | "@types/qs": { 437 | "version": "6.9.4", 438 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", 439 | "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" 440 | }, 441 | "@types/range-parser": { 442 | "version": "1.2.3", 443 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", 444 | "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" 445 | }, 446 | "@types/retry": { 447 | "version": "0.12.0", 448 | "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", 449 | "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" 450 | }, 451 | "@types/sequelize": { 452 | "version": "4.28.9", 453 | "resolved": "https://registry.npmjs.org/@types/sequelize/-/sequelize-4.28.9.tgz", 454 | "integrity": "sha512-QqYgkw/2fEc0FyEQejnxM7cHKB8XBV3Y69k7GSFOToQBOXos0PJVqNpgROXZddXIkl2d6zicYssHuy75ws84sw==", 455 | "requires": { 456 | "@types/bluebird": "*", 457 | "@types/continuation-local-storage": "*", 458 | "@types/lodash": "*", 459 | "@types/validator": "*" 460 | } 461 | }, 462 | "@types/serve-static": { 463 | "version": "1.13.5", 464 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", 465 | "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", 466 | "requires": { 467 | "@types/express-serve-static-core": "*", 468 | "@types/mime": "*" 469 | } 470 | }, 471 | "@types/validator": { 472 | "version": "13.1.0", 473 | "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.1.0.tgz", 474 | "integrity": "sha512-gHUHI6pJaANIO2r6WcbT7+WMgbL9GZooR4tWpuBOETpDIqFNxwaJluE+6rj6VGYe8k6OkfhbHz2Fkm8kl06Igw==" 475 | }, 476 | "abbrev": { 477 | "version": "1.1.1", 478 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 479 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 480 | "dev": true 481 | }, 482 | "accepts": { 483 | "version": "1.3.7", 484 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 485 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 486 | "requires": { 487 | "mime-types": "~2.1.24", 488 | "negotiator": "0.6.2" 489 | } 490 | }, 491 | "ansi-align": { 492 | "version": "3.0.0", 493 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", 494 | "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", 495 | "requires": { 496 | "string-width": "^3.0.0" 497 | } 498 | }, 499 | "ansi-regex": { 500 | "version": "4.1.0", 501 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 502 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 503 | }, 504 | "ansi-styles": { 505 | "version": "3.2.1", 506 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 507 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 508 | "requires": { 509 | "color-convert": "^1.9.0" 510 | } 511 | }, 512 | "any-promise": { 513 | "version": "1.3.0", 514 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 515 | "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" 516 | }, 517 | "argparse": { 518 | "version": "1.0.10", 519 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 520 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 521 | "requires": { 522 | "sprintf-js": "~1.0.2" 523 | } 524 | }, 525 | "array-flatten": { 526 | "version": "1.1.1", 527 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 528 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 529 | }, 530 | "async": { 531 | "version": "2.6.3", 532 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 533 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 534 | "requires": { 535 | "lodash": "^4.17.14" 536 | } 537 | }, 538 | "aws-sdk": { 539 | "version": "2.728.0", 540 | "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.728.0.tgz", 541 | "integrity": "sha512-pUVSxb+04urr6BMHg32Op+kT1IWGmwbelrQKMdLnvgcgysmBu1P4XbGBg8/SmAXWfuqqWjz8YnmFNY46VJE43A==", 542 | "requires": { 543 | "buffer": "4.9.2", 544 | "events": "1.1.1", 545 | "ieee754": "1.1.13", 546 | "jmespath": "0.15.0", 547 | "querystring": "0.2.0", 548 | "sax": "1.2.1", 549 | "url": "0.10.3", 550 | "uuid": "3.3.2", 551 | "xml2js": "0.4.19" 552 | } 553 | }, 554 | "balanced-match": { 555 | "version": "1.0.0", 556 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 557 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 558 | }, 559 | "base64-js": { 560 | "version": "1.3.1", 561 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", 562 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" 563 | }, 564 | "bluebird": { 565 | "version": "3.7.2", 566 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 567 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 568 | "dev": true 569 | }, 570 | "body-parser": { 571 | "version": "1.19.0", 572 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 573 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 574 | "requires": { 575 | "bytes": "3.1.0", 576 | "content-type": "~1.0.4", 577 | "debug": "2.6.9", 578 | "depd": "~1.1.2", 579 | "http-errors": "1.7.2", 580 | "iconv-lite": "0.4.24", 581 | "on-finished": "~2.3.0", 582 | "qs": "6.7.0", 583 | "raw-body": "2.4.0", 584 | "type-is": "~1.6.17" 585 | } 586 | }, 587 | "boxen": { 588 | "version": "4.2.0", 589 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", 590 | "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", 591 | "requires": { 592 | "ansi-align": "^3.0.0", 593 | "camelcase": "^5.3.1", 594 | "chalk": "^3.0.0", 595 | "cli-boxes": "^2.2.0", 596 | "string-width": "^4.1.0", 597 | "term-size": "^2.1.0", 598 | "type-fest": "^0.8.1", 599 | "widest-line": "^3.1.0" 600 | }, 601 | "dependencies": { 602 | "ansi-regex": { 603 | "version": "5.0.0", 604 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 605 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" 606 | }, 607 | "ansi-styles": { 608 | "version": "4.2.1", 609 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 610 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 611 | "requires": { 612 | "@types/color-name": "^1.1.1", 613 | "color-convert": "^2.0.1" 614 | } 615 | }, 616 | "chalk": { 617 | "version": "3.0.0", 618 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 619 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 620 | "requires": { 621 | "ansi-styles": "^4.1.0", 622 | "supports-color": "^7.1.0" 623 | } 624 | }, 625 | "color-convert": { 626 | "version": "2.0.1", 627 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 628 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 629 | "requires": { 630 | "color-name": "~1.1.4" 631 | } 632 | }, 633 | "color-name": { 634 | "version": "1.1.4", 635 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 636 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 637 | }, 638 | "emoji-regex": { 639 | "version": "8.0.0", 640 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 641 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 642 | }, 643 | "has-flag": { 644 | "version": "4.0.0", 645 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 646 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 647 | }, 648 | "is-fullwidth-code-point": { 649 | "version": "3.0.0", 650 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 651 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 652 | }, 653 | "string-width": { 654 | "version": "4.2.0", 655 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 656 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 657 | "requires": { 658 | "emoji-regex": "^8.0.0", 659 | "is-fullwidth-code-point": "^3.0.0", 660 | "strip-ansi": "^6.0.0" 661 | } 662 | }, 663 | "strip-ansi": { 664 | "version": "6.0.0", 665 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 666 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 667 | "requires": { 668 | "ansi-regex": "^5.0.0" 669 | } 670 | }, 671 | "supports-color": { 672 | "version": "7.1.0", 673 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 674 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 675 | "requires": { 676 | "has-flag": "^4.0.0" 677 | } 678 | } 679 | } 680 | }, 681 | "brace-expansion": { 682 | "version": "1.1.11", 683 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 684 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 685 | "requires": { 686 | "balanced-match": "^1.0.0", 687 | "concat-map": "0.0.1" 688 | } 689 | }, 690 | "buffer": { 691 | "version": "4.9.2", 692 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 693 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 694 | "requires": { 695 | "base64-js": "^1.0.2", 696 | "ieee754": "^1.1.4", 697 | "isarray": "^1.0.0" 698 | } 699 | }, 700 | "buffer-equal-constant-time": { 701 | "version": "1.0.1", 702 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 703 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 704 | }, 705 | "buffer-writer": { 706 | "version": "2.0.0", 707 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 708 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" 709 | }, 710 | "builtin-modules": { 711 | "version": "1.1.1", 712 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 713 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" 714 | }, 715 | "bytes": { 716 | "version": "3.1.0", 717 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 718 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 719 | }, 720 | "cacheable-request": { 721 | "version": "6.1.0", 722 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", 723 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", 724 | "requires": { 725 | "clone-response": "^1.0.2", 726 | "get-stream": "^5.1.0", 727 | "http-cache-semantics": "^4.0.0", 728 | "keyv": "^3.0.0", 729 | "lowercase-keys": "^2.0.0", 730 | "normalize-url": "^4.1.0", 731 | "responselike": "^1.0.2" 732 | }, 733 | "dependencies": { 734 | "lowercase-keys": { 735 | "version": "2.0.0", 736 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 737 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 738 | } 739 | } 740 | }, 741 | "camelcase": { 742 | "version": "5.3.1", 743 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 744 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" 745 | }, 746 | "chalk": { 747 | "version": "2.4.2", 748 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 749 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 750 | "requires": { 751 | "ansi-styles": "^3.2.1", 752 | "escape-string-regexp": "^1.0.5", 753 | "supports-color": "^5.3.0" 754 | } 755 | }, 756 | "ci-info": { 757 | "version": "2.0.0", 758 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 759 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" 760 | }, 761 | "cli-boxes": { 762 | "version": "2.2.0", 763 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", 764 | "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==" 765 | }, 766 | "cli-color": { 767 | "version": "1.4.0", 768 | "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", 769 | "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", 770 | "dev": true, 771 | "requires": { 772 | "ansi-regex": "^2.1.1", 773 | "d": "1", 774 | "es5-ext": "^0.10.46", 775 | "es6-iterator": "^2.0.3", 776 | "memoizee": "^0.4.14", 777 | "timers-ext": "^0.1.5" 778 | }, 779 | "dependencies": { 780 | "ansi-regex": { 781 | "version": "2.1.1", 782 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 783 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 784 | "dev": true 785 | } 786 | } 787 | }, 788 | "cliui": { 789 | "version": "5.0.0", 790 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 791 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 792 | "requires": { 793 | "string-width": "^3.1.0", 794 | "strip-ansi": "^5.2.0", 795 | "wrap-ansi": "^5.1.0" 796 | } 797 | }, 798 | "clone-response": { 799 | "version": "1.0.2", 800 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 801 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 802 | "requires": { 803 | "mimic-response": "^1.0.0" 804 | } 805 | }, 806 | "color-convert": { 807 | "version": "1.9.3", 808 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 809 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 810 | "requires": { 811 | "color-name": "1.1.3" 812 | } 813 | }, 814 | "color-name": { 815 | "version": "1.1.3", 816 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 817 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 818 | }, 819 | "commander": { 820 | "version": "2.20.3", 821 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 822 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 823 | }, 824 | "commandpost": { 825 | "version": "1.4.0", 826 | "resolved": "https://registry.npmjs.org/commandpost/-/commandpost-1.4.0.tgz", 827 | "integrity": "sha512-aE2Y4MTFJ870NuB/+2z1cXBhSBBzRydVVjzhFC4gtenEhpnj15yu0qptWGJsO9YGrcPZ3ezX8AWb1VA391MKpQ==" 828 | }, 829 | "concat-map": { 830 | "version": "0.0.1", 831 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 832 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 833 | }, 834 | "config-chain": { 835 | "version": "1.1.12", 836 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", 837 | "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", 838 | "dev": true, 839 | "requires": { 840 | "ini": "^1.3.4", 841 | "proto-list": "~1.2.1" 842 | } 843 | }, 844 | "configstore": { 845 | "version": "5.0.1", 846 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", 847 | "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", 848 | "requires": { 849 | "dot-prop": "^5.2.0", 850 | "graceful-fs": "^4.1.2", 851 | "make-dir": "^3.0.0", 852 | "unique-string": "^2.0.0", 853 | "write-file-atomic": "^3.0.0", 854 | "xdg-basedir": "^4.0.0" 855 | } 856 | }, 857 | "content-disposition": { 858 | "version": "0.5.3", 859 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 860 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 861 | "requires": { 862 | "safe-buffer": "5.1.2" 863 | } 864 | }, 865 | "content-type": { 866 | "version": "1.0.4", 867 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 868 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 869 | }, 870 | "cookie": { 871 | "version": "0.4.0", 872 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 873 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 874 | }, 875 | "cookie-signature": { 876 | "version": "1.0.6", 877 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 878 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 879 | }, 880 | "core-util-is": { 881 | "version": "1.0.2", 882 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 883 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 884 | }, 885 | "cron-parser": { 886 | "version": "2.15.0", 887 | "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.15.0.tgz", 888 | "integrity": "sha512-rMFkrQw8+oG5OuwjiXesup4KeIlEG/IU82YtG4xyAHbO5jhKmYaHPp/ZNhq9+7TjSJ65E3zV3kQPUbmXSff2/g==", 889 | "requires": { 890 | "is-nan": "^1.3.0", 891 | "moment-timezone": "^0.5.31" 892 | } 893 | }, 894 | "cross-spawn": { 895 | "version": "7.0.3", 896 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 897 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 898 | "requires": { 899 | "path-key": "^3.1.0", 900 | "shebang-command": "^2.0.0", 901 | "which": "^2.0.1" 902 | } 903 | }, 904 | "crypto-random-string": { 905 | "version": "2.0.0", 906 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", 907 | "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" 908 | }, 909 | "cuid": { 910 | "version": "2.1.8", 911 | "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz", 912 | "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==" 913 | }, 914 | "d": { 915 | "version": "1.0.1", 916 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 917 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 918 | "dev": true, 919 | "requires": { 920 | "es5-ext": "^0.10.50", 921 | "type": "^1.0.1" 922 | } 923 | }, 924 | "debug": { 925 | "version": "2.6.9", 926 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 927 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 928 | "requires": { 929 | "ms": "2.0.0" 930 | } 931 | }, 932 | "decamelize": { 933 | "version": "1.2.0", 934 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 935 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 936 | }, 937 | "decompress-response": { 938 | "version": "3.3.0", 939 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 940 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", 941 | "requires": { 942 | "mimic-response": "^1.0.0" 943 | } 944 | }, 945 | "deep-extend": { 946 | "version": "0.6.0", 947 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 948 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 949 | }, 950 | "defer-to-connect": { 951 | "version": "1.1.3", 952 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", 953 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" 954 | }, 955 | "define-properties": { 956 | "version": "1.1.3", 957 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 958 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 959 | "requires": { 960 | "object-keys": "^1.0.12" 961 | } 962 | }, 963 | "depd": { 964 | "version": "1.1.2", 965 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 966 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 967 | }, 968 | "destroy": { 969 | "version": "1.0.4", 970 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 971 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 972 | }, 973 | "diff": { 974 | "version": "4.0.2", 975 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 976 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" 977 | }, 978 | "dot-prop": { 979 | "version": "5.2.0", 980 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", 981 | "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", 982 | "requires": { 983 | "is-obj": "^2.0.0" 984 | } 985 | }, 986 | "dottie": { 987 | "version": "2.0.2", 988 | "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", 989 | "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" 990 | }, 991 | "duplexer3": { 992 | "version": "0.1.4", 993 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 994 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" 995 | }, 996 | "ecdsa-sig-formatter": { 997 | "version": "1.0.11", 998 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 999 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 1000 | "requires": { 1001 | "safe-buffer": "^5.0.1" 1002 | } 1003 | }, 1004 | "editorconfig": { 1005 | "version": "0.15.3", 1006 | "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", 1007 | "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", 1008 | "requires": { 1009 | "commander": "^2.19.0", 1010 | "lru-cache": "^4.1.5", 1011 | "semver": "^5.6.0", 1012 | "sigmund": "^1.0.1" 1013 | }, 1014 | "dependencies": { 1015 | "semver": { 1016 | "version": "5.7.1", 1017 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1018 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1019 | } 1020 | } 1021 | }, 1022 | "ee-first": { 1023 | "version": "1.1.1", 1024 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1025 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 1026 | }, 1027 | "emoji-regex": { 1028 | "version": "7.0.3", 1029 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1030 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" 1031 | }, 1032 | "encodeurl": { 1033 | "version": "1.0.2", 1034 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1035 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 1036 | }, 1037 | "end-of-stream": { 1038 | "version": "1.4.4", 1039 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1040 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1041 | "requires": { 1042 | "once": "^1.4.0" 1043 | } 1044 | }, 1045 | "es-abstract": { 1046 | "version": "1.17.6", 1047 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", 1048 | "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", 1049 | "requires": { 1050 | "es-to-primitive": "^1.2.1", 1051 | "function-bind": "^1.1.1", 1052 | "has": "^1.0.3", 1053 | "has-symbols": "^1.0.1", 1054 | "is-callable": "^1.2.0", 1055 | "is-regex": "^1.1.0", 1056 | "object-inspect": "^1.7.0", 1057 | "object-keys": "^1.1.1", 1058 | "object.assign": "^4.1.0", 1059 | "string.prototype.trimend": "^1.0.1", 1060 | "string.prototype.trimstart": "^1.0.1" 1061 | } 1062 | }, 1063 | "es-to-primitive": { 1064 | "version": "1.2.1", 1065 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 1066 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 1067 | "requires": { 1068 | "is-callable": "^1.1.4", 1069 | "is-date-object": "^1.0.1", 1070 | "is-symbol": "^1.0.2" 1071 | } 1072 | }, 1073 | "es5-ext": { 1074 | "version": "0.10.53", 1075 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", 1076 | "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", 1077 | "dev": true, 1078 | "requires": { 1079 | "es6-iterator": "~2.0.3", 1080 | "es6-symbol": "~3.1.3", 1081 | "next-tick": "~1.0.0" 1082 | } 1083 | }, 1084 | "es6-iterator": { 1085 | "version": "2.0.3", 1086 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 1087 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 1088 | "dev": true, 1089 | "requires": { 1090 | "d": "1", 1091 | "es5-ext": "^0.10.35", 1092 | "es6-symbol": "^3.1.1" 1093 | } 1094 | }, 1095 | "es6-symbol": { 1096 | "version": "3.1.3", 1097 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", 1098 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", 1099 | "dev": true, 1100 | "requires": { 1101 | "d": "^1.0.1", 1102 | "ext": "^1.1.2" 1103 | } 1104 | }, 1105 | "es6-weak-map": { 1106 | "version": "2.0.3", 1107 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", 1108 | "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", 1109 | "dev": true, 1110 | "requires": { 1111 | "d": "1", 1112 | "es5-ext": "^0.10.46", 1113 | "es6-iterator": "^2.0.3", 1114 | "es6-symbol": "^3.1.1" 1115 | } 1116 | }, 1117 | "escape-goat": { 1118 | "version": "2.1.1", 1119 | "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", 1120 | "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" 1121 | }, 1122 | "escape-html": { 1123 | "version": "1.0.3", 1124 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1125 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 1126 | }, 1127 | "escape-string-regexp": { 1128 | "version": "1.0.5", 1129 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1130 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 1131 | }, 1132 | "esprima": { 1133 | "version": "4.0.1", 1134 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1135 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 1136 | }, 1137 | "etag": { 1138 | "version": "1.8.1", 1139 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1140 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 1141 | }, 1142 | "event-emitter": { 1143 | "version": "0.3.5", 1144 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", 1145 | "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", 1146 | "dev": true, 1147 | "requires": { 1148 | "d": "1", 1149 | "es5-ext": "~0.10.14" 1150 | } 1151 | }, 1152 | "eventemitter3": { 1153 | "version": "4.0.4", 1154 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", 1155 | "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" 1156 | }, 1157 | "events": { 1158 | "version": "1.1.1", 1159 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", 1160 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" 1161 | }, 1162 | "execa": { 1163 | "version": "4.0.3", 1164 | "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", 1165 | "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", 1166 | "requires": { 1167 | "cross-spawn": "^7.0.0", 1168 | "get-stream": "^5.0.0", 1169 | "human-signals": "^1.1.1", 1170 | "is-stream": "^2.0.0", 1171 | "merge-stream": "^2.0.0", 1172 | "npm-run-path": "^4.0.0", 1173 | "onetime": "^5.1.0", 1174 | "signal-exit": "^3.0.2", 1175 | "strip-final-newline": "^2.0.0" 1176 | } 1177 | }, 1178 | "express": { 1179 | "version": "4.17.1", 1180 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 1181 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 1182 | "requires": { 1183 | "accepts": "~1.3.7", 1184 | "array-flatten": "1.1.1", 1185 | "body-parser": "1.19.0", 1186 | "content-disposition": "0.5.3", 1187 | "content-type": "~1.0.4", 1188 | "cookie": "0.4.0", 1189 | "cookie-signature": "1.0.6", 1190 | "debug": "2.6.9", 1191 | "depd": "~1.1.2", 1192 | "encodeurl": "~1.0.2", 1193 | "escape-html": "~1.0.3", 1194 | "etag": "~1.8.1", 1195 | "finalhandler": "~1.1.2", 1196 | "fresh": "0.5.2", 1197 | "merge-descriptors": "1.0.1", 1198 | "methods": "~1.1.2", 1199 | "on-finished": "~2.3.0", 1200 | "parseurl": "~1.3.3", 1201 | "path-to-regexp": "0.1.7", 1202 | "proxy-addr": "~2.0.5", 1203 | "qs": "6.7.0", 1204 | "range-parser": "~1.2.1", 1205 | "safe-buffer": "5.1.2", 1206 | "send": "0.17.1", 1207 | "serve-static": "1.14.1", 1208 | "setprototypeof": "1.1.1", 1209 | "statuses": "~1.5.0", 1210 | "type-is": "~1.6.18", 1211 | "utils-merge": "1.0.1", 1212 | "vary": "~1.1.2" 1213 | } 1214 | }, 1215 | "ext": { 1216 | "version": "1.4.0", 1217 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", 1218 | "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", 1219 | "dev": true, 1220 | "requires": { 1221 | "type": "^2.0.0" 1222 | }, 1223 | "dependencies": { 1224 | "type": { 1225 | "version": "2.0.0", 1226 | "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", 1227 | "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", 1228 | "dev": true 1229 | } 1230 | } 1231 | }, 1232 | "extend": { 1233 | "version": "3.0.2", 1234 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1235 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 1236 | }, 1237 | "finalhandler": { 1238 | "version": "1.1.2", 1239 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1240 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1241 | "requires": { 1242 | "debug": "2.6.9", 1243 | "encodeurl": "~1.0.2", 1244 | "escape-html": "~1.0.3", 1245 | "on-finished": "~2.3.0", 1246 | "parseurl": "~1.3.3", 1247 | "statuses": "~1.5.0", 1248 | "unpipe": "~1.0.0" 1249 | } 1250 | }, 1251 | "find-up": { 1252 | "version": "3.0.0", 1253 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 1254 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 1255 | "requires": { 1256 | "locate-path": "^3.0.0" 1257 | } 1258 | }, 1259 | "forwarded": { 1260 | "version": "0.1.2", 1261 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 1262 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 1263 | }, 1264 | "fresh": { 1265 | "version": "0.5.2", 1266 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1267 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1268 | }, 1269 | "fs-extra": { 1270 | "version": "8.1.0", 1271 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1272 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1273 | "requires": { 1274 | "graceful-fs": "^4.2.0", 1275 | "jsonfile": "^4.0.0", 1276 | "universalify": "^0.1.0" 1277 | } 1278 | }, 1279 | "fs.realpath": { 1280 | "version": "1.0.0", 1281 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1282 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1283 | }, 1284 | "function-bind": { 1285 | "version": "1.1.1", 1286 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1287 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1288 | }, 1289 | "get-caller-file": { 1290 | "version": "2.0.5", 1291 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1292 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 1293 | }, 1294 | "get-stream": { 1295 | "version": "5.1.0", 1296 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", 1297 | "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", 1298 | "requires": { 1299 | "pump": "^3.0.0" 1300 | } 1301 | }, 1302 | "glob": { 1303 | "version": "7.1.6", 1304 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1305 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1306 | "requires": { 1307 | "fs.realpath": "^1.0.0", 1308 | "inflight": "^1.0.4", 1309 | "inherits": "2", 1310 | "minimatch": "^3.0.4", 1311 | "once": "^1.3.0", 1312 | "path-is-absolute": "^1.0.0" 1313 | } 1314 | }, 1315 | "global-dirs": { 1316 | "version": "2.0.1", 1317 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", 1318 | "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", 1319 | "requires": { 1320 | "ini": "^1.3.5" 1321 | } 1322 | }, 1323 | "got": { 1324 | "version": "9.6.0", 1325 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", 1326 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", 1327 | "requires": { 1328 | "@sindresorhus/is": "^0.14.0", 1329 | "@szmarczak/http-timer": "^1.1.2", 1330 | "cacheable-request": "^6.0.0", 1331 | "decompress-response": "^3.3.0", 1332 | "duplexer3": "^0.1.4", 1333 | "get-stream": "^4.1.0", 1334 | "lowercase-keys": "^1.0.1", 1335 | "mimic-response": "^1.0.1", 1336 | "p-cancelable": "^1.0.0", 1337 | "to-readable-stream": "^1.0.0", 1338 | "url-parse-lax": "^3.0.0" 1339 | }, 1340 | "dependencies": { 1341 | "get-stream": { 1342 | "version": "4.1.0", 1343 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 1344 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 1345 | "requires": { 1346 | "pump": "^3.0.0" 1347 | } 1348 | } 1349 | } 1350 | }, 1351 | "graceful-fs": { 1352 | "version": "4.2.4", 1353 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 1354 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" 1355 | }, 1356 | "handlebars": { 1357 | "version": "4.7.6", 1358 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", 1359 | "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", 1360 | "requires": { 1361 | "minimist": "^1.2.5", 1362 | "neo-async": "^2.6.0", 1363 | "source-map": "^0.6.1", 1364 | "uglify-js": "^3.1.4", 1365 | "wordwrap": "^1.0.0" 1366 | } 1367 | }, 1368 | "has": { 1369 | "version": "1.0.3", 1370 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1371 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1372 | "requires": { 1373 | "function-bind": "^1.1.1" 1374 | } 1375 | }, 1376 | "has-flag": { 1377 | "version": "3.0.0", 1378 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1379 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 1380 | }, 1381 | "has-symbols": { 1382 | "version": "1.0.1", 1383 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1384 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" 1385 | }, 1386 | "has-yarn": { 1387 | "version": "2.1.0", 1388 | "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", 1389 | "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" 1390 | }, 1391 | "http-cache-semantics": { 1392 | "version": "4.1.0", 1393 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 1394 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" 1395 | }, 1396 | "http-errors": { 1397 | "version": "1.7.2", 1398 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 1399 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 1400 | "requires": { 1401 | "depd": "~1.1.2", 1402 | "inherits": "2.0.3", 1403 | "setprototypeof": "1.1.1", 1404 | "statuses": ">= 1.5.0 < 2", 1405 | "toidentifier": "1.0.0" 1406 | } 1407 | }, 1408 | "human-signals": { 1409 | "version": "1.1.1", 1410 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", 1411 | "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" 1412 | }, 1413 | "iconv-lite": { 1414 | "version": "0.4.24", 1415 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1416 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1417 | "requires": { 1418 | "safer-buffer": ">= 2.1.2 < 3" 1419 | } 1420 | }, 1421 | "ieee754": { 1422 | "version": "1.1.13", 1423 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 1424 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" 1425 | }, 1426 | "immediate": { 1427 | "version": "3.0.6", 1428 | "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 1429 | "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" 1430 | }, 1431 | "import-lazy": { 1432 | "version": "2.1.0", 1433 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 1434 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" 1435 | }, 1436 | "imurmurhash": { 1437 | "version": "0.1.4", 1438 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1439 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" 1440 | }, 1441 | "inflection": { 1442 | "version": "1.12.0", 1443 | "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", 1444 | "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" 1445 | }, 1446 | "inflight": { 1447 | "version": "1.0.6", 1448 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1449 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1450 | "requires": { 1451 | "once": "^1.3.0", 1452 | "wrappy": "1" 1453 | } 1454 | }, 1455 | "inherits": { 1456 | "version": "2.0.3", 1457 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1458 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1459 | }, 1460 | "ini": { 1461 | "version": "1.3.5", 1462 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 1463 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 1464 | }, 1465 | "ipaddr.js": { 1466 | "version": "1.9.1", 1467 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1468 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1469 | }, 1470 | "is-callable": { 1471 | "version": "1.2.0", 1472 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", 1473 | "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" 1474 | }, 1475 | "is-ci": { 1476 | "version": "2.0.0", 1477 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", 1478 | "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", 1479 | "requires": { 1480 | "ci-info": "^2.0.0" 1481 | } 1482 | }, 1483 | "is-date-object": { 1484 | "version": "1.0.2", 1485 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1486 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" 1487 | }, 1488 | "is-fullwidth-code-point": { 1489 | "version": "2.0.0", 1490 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1491 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 1492 | }, 1493 | "is-installed-globally": { 1494 | "version": "0.3.2", 1495 | "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", 1496 | "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", 1497 | "requires": { 1498 | "global-dirs": "^2.0.1", 1499 | "is-path-inside": "^3.0.1" 1500 | } 1501 | }, 1502 | "is-nan": { 1503 | "version": "1.3.0", 1504 | "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.0.tgz", 1505 | "integrity": "sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==", 1506 | "requires": { 1507 | "define-properties": "^1.1.3" 1508 | } 1509 | }, 1510 | "is-npm": { 1511 | "version": "4.0.0", 1512 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", 1513 | "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" 1514 | }, 1515 | "is-obj": { 1516 | "version": "2.0.0", 1517 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", 1518 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" 1519 | }, 1520 | "is-path-inside": { 1521 | "version": "3.0.2", 1522 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", 1523 | "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" 1524 | }, 1525 | "is-promise": { 1526 | "version": "2.2.2", 1527 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", 1528 | "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", 1529 | "dev": true 1530 | }, 1531 | "is-regex": { 1532 | "version": "1.1.1", 1533 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 1534 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 1535 | "requires": { 1536 | "has-symbols": "^1.0.1" 1537 | } 1538 | }, 1539 | "is-stream": { 1540 | "version": "2.0.0", 1541 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", 1542 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" 1543 | }, 1544 | "is-symbol": { 1545 | "version": "1.0.3", 1546 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1547 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1548 | "requires": { 1549 | "has-symbols": "^1.0.1" 1550 | } 1551 | }, 1552 | "is-typedarray": { 1553 | "version": "1.0.0", 1554 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1555 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1556 | }, 1557 | "is-yarn-global": { 1558 | "version": "0.3.0", 1559 | "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", 1560 | "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" 1561 | }, 1562 | "isarray": { 1563 | "version": "1.0.0", 1564 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1565 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1566 | }, 1567 | "isexe": { 1568 | "version": "2.0.0", 1569 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1570 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 1571 | }, 1572 | "java-invoke-local": { 1573 | "version": "0.0.6", 1574 | "resolved": "https://registry.npmjs.org/java-invoke-local/-/java-invoke-local-0.0.6.tgz", 1575 | "integrity": "sha512-gZmQKe1QrfkkMjCn8Qv9cpyJFyogTYqkP5WCobX5RNaHsJzIV/6NvAnlnouOcwKr29QrxLGDGcqYuJ+ae98s1A==" 1576 | }, 1577 | "jmespath": { 1578 | "version": "0.15.0", 1579 | "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", 1580 | "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" 1581 | }, 1582 | "js-beautify": { 1583 | "version": "1.11.0", 1584 | "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz", 1585 | "integrity": "sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==", 1586 | "dev": true, 1587 | "requires": { 1588 | "config-chain": "^1.1.12", 1589 | "editorconfig": "^0.15.3", 1590 | "glob": "^7.1.3", 1591 | "mkdirp": "~1.0.3", 1592 | "nopt": "^4.0.3" 1593 | }, 1594 | "dependencies": { 1595 | "mkdirp": { 1596 | "version": "1.0.4", 1597 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1598 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 1599 | "dev": true 1600 | } 1601 | } 1602 | }, 1603 | "js-string-escape": { 1604 | "version": "1.0.1", 1605 | "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", 1606 | "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=" 1607 | }, 1608 | "js-tokens": { 1609 | "version": "4.0.0", 1610 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1611 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1612 | }, 1613 | "js-yaml": { 1614 | "version": "3.14.0", 1615 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", 1616 | "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", 1617 | "requires": { 1618 | "argparse": "^1.0.7", 1619 | "esprima": "^4.0.0" 1620 | } 1621 | }, 1622 | "json-buffer": { 1623 | "version": "3.0.0", 1624 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 1625 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" 1626 | }, 1627 | "jsonfile": { 1628 | "version": "4.0.0", 1629 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1630 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 1631 | "requires": { 1632 | "graceful-fs": "^4.1.6" 1633 | } 1634 | }, 1635 | "jsonpath-plus": { 1636 | "version": "3.0.0", 1637 | "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-3.0.0.tgz", 1638 | "integrity": "sha512-WQwgWEBgn+SJU1tlDa/GiY5/ngRpa9yrSj8n4BYPHcwoxTDaMEaYCHMOn42hIHHDd3CrUoRr3+HpsK0hCKoxzA==" 1639 | }, 1640 | "jsonschema": { 1641 | "version": "1.2.6", 1642 | "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.6.tgz", 1643 | "integrity": "sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA==" 1644 | }, 1645 | "jsonwebtoken": { 1646 | "version": "8.5.1", 1647 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 1648 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 1649 | "requires": { 1650 | "jws": "^3.2.2", 1651 | "lodash.includes": "^4.3.0", 1652 | "lodash.isboolean": "^3.0.3", 1653 | "lodash.isinteger": "^4.0.4", 1654 | "lodash.isnumber": "^3.0.3", 1655 | "lodash.isplainobject": "^4.0.6", 1656 | "lodash.isstring": "^4.0.1", 1657 | "lodash.once": "^4.0.0", 1658 | "ms": "^2.1.1", 1659 | "semver": "^5.6.0" 1660 | }, 1661 | "dependencies": { 1662 | "ms": { 1663 | "version": "2.1.2", 1664 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1665 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1666 | }, 1667 | "semver": { 1668 | "version": "5.7.1", 1669 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1670 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1671 | } 1672 | } 1673 | }, 1674 | "jszip": { 1675 | "version": "3.5.0", 1676 | "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", 1677 | "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", 1678 | "requires": { 1679 | "lie": "~3.3.0", 1680 | "pako": "~1.0.2", 1681 | "readable-stream": "~2.3.6", 1682 | "set-immediate-shim": "~1.0.1" 1683 | } 1684 | }, 1685 | "jwa": { 1686 | "version": "1.4.1", 1687 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 1688 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 1689 | "requires": { 1690 | "buffer-equal-constant-time": "1.0.1", 1691 | "ecdsa-sig-formatter": "1.0.11", 1692 | "safe-buffer": "^5.0.1" 1693 | } 1694 | }, 1695 | "jws": { 1696 | "version": "3.2.2", 1697 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 1698 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 1699 | "requires": { 1700 | "jwa": "^1.4.1", 1701 | "safe-buffer": "^5.0.1" 1702 | } 1703 | }, 1704 | "keyv": { 1705 | "version": "3.1.0", 1706 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 1707 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", 1708 | "requires": { 1709 | "json-buffer": "3.0.0" 1710 | } 1711 | }, 1712 | "latest-version": { 1713 | "version": "5.1.0", 1714 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", 1715 | "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", 1716 | "requires": { 1717 | "package-json": "^6.3.0" 1718 | } 1719 | }, 1720 | "lie": { 1721 | "version": "3.3.0", 1722 | "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", 1723 | "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", 1724 | "requires": { 1725 | "immediate": "~3.0.5" 1726 | } 1727 | }, 1728 | "locate-path": { 1729 | "version": "3.0.0", 1730 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 1731 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 1732 | "requires": { 1733 | "p-locate": "^3.0.0", 1734 | "path-exists": "^3.0.0" 1735 | } 1736 | }, 1737 | "lodash": { 1738 | "version": "4.17.19", 1739 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", 1740 | "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" 1741 | }, 1742 | "lodash.includes": { 1743 | "version": "4.3.0", 1744 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 1745 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 1746 | }, 1747 | "lodash.isboolean": { 1748 | "version": "3.0.3", 1749 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 1750 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 1751 | }, 1752 | "lodash.isinteger": { 1753 | "version": "4.0.4", 1754 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 1755 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 1756 | }, 1757 | "lodash.isnumber": { 1758 | "version": "3.0.3", 1759 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 1760 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 1761 | }, 1762 | "lodash.isplainobject": { 1763 | "version": "4.0.6", 1764 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1765 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 1766 | }, 1767 | "lodash.isstring": { 1768 | "version": "4.0.1", 1769 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1770 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 1771 | }, 1772 | "lodash.once": { 1773 | "version": "4.1.1", 1774 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 1775 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 1776 | }, 1777 | "long-timeout": { 1778 | "version": "0.1.1", 1779 | "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", 1780 | "integrity": "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" 1781 | }, 1782 | "lowercase-keys": { 1783 | "version": "1.0.1", 1784 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 1785 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" 1786 | }, 1787 | "lru-cache": { 1788 | "version": "4.1.5", 1789 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 1790 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 1791 | "requires": { 1792 | "pseudomap": "^1.0.2", 1793 | "yallist": "^2.1.2" 1794 | } 1795 | }, 1796 | "lru-queue": { 1797 | "version": "0.1.0", 1798 | "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", 1799 | "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", 1800 | "dev": true, 1801 | "requires": { 1802 | "es5-ext": "~0.10.2" 1803 | } 1804 | }, 1805 | "luxon": { 1806 | "version": "1.24.1", 1807 | "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.24.1.tgz", 1808 | "integrity": "sha512-CgnIMKAWT0ghcuWFfCWBnWGOddM0zu6c4wZAWmD0NN7MZTnro0+833DF6tJep+xlxRPg4KtsYEHYLfTMBQKwYg==" 1809 | }, 1810 | "make-dir": { 1811 | "version": "3.1.0", 1812 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 1813 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 1814 | "requires": { 1815 | "semver": "^6.0.0" 1816 | }, 1817 | "dependencies": { 1818 | "semver": { 1819 | "version": "6.3.0", 1820 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1821 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1822 | } 1823 | } 1824 | }, 1825 | "map-age-cleaner": { 1826 | "version": "0.1.3", 1827 | "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", 1828 | "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", 1829 | "requires": { 1830 | "p-defer": "^1.0.0" 1831 | } 1832 | }, 1833 | "media-typer": { 1834 | "version": "0.3.0", 1835 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1836 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1837 | }, 1838 | "mem": { 1839 | "version": "6.1.0", 1840 | "resolved": "https://registry.npmjs.org/mem/-/mem-6.1.0.tgz", 1841 | "integrity": "sha512-RlbnLQgRHk5lwqTtpEkBTQ2ll/CG/iB+J4Hy2Wh97PjgZgXgWJWrFF+XXujh3UUVLvR4OOTgZzcWMMwnehlEUg==", 1842 | "requires": { 1843 | "map-age-cleaner": "^0.1.3", 1844 | "mimic-fn": "^3.0.0" 1845 | }, 1846 | "dependencies": { 1847 | "mimic-fn": { 1848 | "version": "3.1.0", 1849 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", 1850 | "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" 1851 | } 1852 | } 1853 | }, 1854 | "memoizee": { 1855 | "version": "0.4.14", 1856 | "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", 1857 | "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", 1858 | "dev": true, 1859 | "requires": { 1860 | "d": "1", 1861 | "es5-ext": "^0.10.45", 1862 | "es6-weak-map": "^2.0.2", 1863 | "event-emitter": "^0.3.5", 1864 | "is-promise": "^2.1", 1865 | "lru-queue": "0.1", 1866 | "next-tick": "1", 1867 | "timers-ext": "^0.1.5" 1868 | } 1869 | }, 1870 | "merge": { 1871 | "version": "1.2.1", 1872 | "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", 1873 | "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==" 1874 | }, 1875 | "merge-descriptors": { 1876 | "version": "1.0.1", 1877 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1878 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1879 | }, 1880 | "merge-stream": { 1881 | "version": "2.0.0", 1882 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1883 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" 1884 | }, 1885 | "methods": { 1886 | "version": "1.1.2", 1887 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1888 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1889 | }, 1890 | "mime": { 1891 | "version": "1.6.0", 1892 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1893 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1894 | }, 1895 | "mime-db": { 1896 | "version": "1.44.0", 1897 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 1898 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" 1899 | }, 1900 | "mime-types": { 1901 | "version": "2.1.27", 1902 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 1903 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 1904 | "requires": { 1905 | "mime-db": "1.44.0" 1906 | } 1907 | }, 1908 | "mimic-fn": { 1909 | "version": "2.1.0", 1910 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1911 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" 1912 | }, 1913 | "mimic-response": { 1914 | "version": "1.0.1", 1915 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 1916 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 1917 | }, 1918 | "minimatch": { 1919 | "version": "3.0.4", 1920 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1921 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1922 | "requires": { 1923 | "brace-expansion": "^1.1.7" 1924 | } 1925 | }, 1926 | "minimist": { 1927 | "version": "1.2.5", 1928 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1929 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1930 | }, 1931 | "mkdirp": { 1932 | "version": "0.5.5", 1933 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1934 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1935 | "requires": { 1936 | "minimist": "^1.2.5" 1937 | } 1938 | }, 1939 | "moment": { 1940 | "version": "2.27.0", 1941 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", 1942 | "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" 1943 | }, 1944 | "moment-timezone": { 1945 | "version": "0.5.31", 1946 | "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz", 1947 | "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==", 1948 | "requires": { 1949 | "moment": ">= 2.9.0" 1950 | } 1951 | }, 1952 | "ms": { 1953 | "version": "2.0.0", 1954 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1955 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1956 | }, 1957 | "negotiator": { 1958 | "version": "0.6.2", 1959 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1960 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 1961 | }, 1962 | "neo-async": { 1963 | "version": "2.6.2", 1964 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 1965 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" 1966 | }, 1967 | "next-tick": { 1968 | "version": "1.0.0", 1969 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 1970 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", 1971 | "dev": true 1972 | }, 1973 | "node-fetch": { 1974 | "version": "2.6.0", 1975 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", 1976 | "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" 1977 | }, 1978 | "node-schedule": { 1979 | "version": "1.3.2", 1980 | "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.2.tgz", 1981 | "integrity": "sha512-GIND2pHMHiReSZSvS6dpZcDH7pGPGFfWBIEud6S00Q8zEIzAs9ommdyRK1ZbQt8y1LyZsJYZgPnyi7gpU2lcdw==", 1982 | "requires": { 1983 | "cron-parser": "^2.7.3", 1984 | "long-timeout": "0.1.1", 1985 | "sorted-array-functions": "^1.0.0" 1986 | } 1987 | }, 1988 | "nopt": { 1989 | "version": "4.0.3", 1990 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", 1991 | "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", 1992 | "dev": true, 1993 | "requires": { 1994 | "abbrev": "1", 1995 | "osenv": "^0.1.4" 1996 | } 1997 | }, 1998 | "normalize-url": { 1999 | "version": "4.5.0", 2000 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", 2001 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" 2002 | }, 2003 | "npm-run-path": { 2004 | "version": "4.0.1", 2005 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 2006 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 2007 | "requires": { 2008 | "path-key": "^3.0.0" 2009 | } 2010 | }, 2011 | "object-inspect": { 2012 | "version": "1.8.0", 2013 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", 2014 | "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" 2015 | }, 2016 | "object-keys": { 2017 | "version": "1.1.1", 2018 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2019 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 2020 | }, 2021 | "object.assign": { 2022 | "version": "4.1.0", 2023 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 2024 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 2025 | "requires": { 2026 | "define-properties": "^1.1.2", 2027 | "function-bind": "^1.1.1", 2028 | "has-symbols": "^1.0.0", 2029 | "object-keys": "^1.0.11" 2030 | } 2031 | }, 2032 | "object.fromentries": { 2033 | "version": "2.0.2", 2034 | "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", 2035 | "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", 2036 | "requires": { 2037 | "define-properties": "^1.1.3", 2038 | "es-abstract": "^1.17.0-next.1", 2039 | "function-bind": "^1.1.1", 2040 | "has": "^1.0.3" 2041 | } 2042 | }, 2043 | "on-finished": { 2044 | "version": "2.3.0", 2045 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2046 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2047 | "requires": { 2048 | "ee-first": "1.1.1" 2049 | } 2050 | }, 2051 | "once": { 2052 | "version": "1.4.0", 2053 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2054 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2055 | "requires": { 2056 | "wrappy": "1" 2057 | } 2058 | }, 2059 | "onetime": { 2060 | "version": "5.1.1", 2061 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.1.tgz", 2062 | "integrity": "sha512-ZpZpjcJeugQfWsfyQlshVoowIIQ1qBGSVll4rfDq6JJVO//fesjoX808hXWfBjY+ROZgpKDI5TRSRBSoJiZ8eg==", 2063 | "requires": { 2064 | "mimic-fn": "^2.1.0" 2065 | } 2066 | }, 2067 | "os-homedir": { 2068 | "version": "1.0.2", 2069 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2070 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2071 | "dev": true 2072 | }, 2073 | "os-tmpdir": { 2074 | "version": "1.0.2", 2075 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2076 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2077 | "dev": true 2078 | }, 2079 | "osenv": { 2080 | "version": "0.1.5", 2081 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", 2082 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", 2083 | "dev": true, 2084 | "requires": { 2085 | "os-homedir": "^1.0.0", 2086 | "os-tmpdir": "^1.0.0" 2087 | } 2088 | }, 2089 | "p-cancelable": { 2090 | "version": "1.1.0", 2091 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", 2092 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" 2093 | }, 2094 | "p-defer": { 2095 | "version": "1.0.0", 2096 | "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", 2097 | "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" 2098 | }, 2099 | "p-finally": { 2100 | "version": "1.0.0", 2101 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 2102 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" 2103 | }, 2104 | "p-limit": { 2105 | "version": "2.3.0", 2106 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2107 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2108 | "requires": { 2109 | "p-try": "^2.0.0" 2110 | } 2111 | }, 2112 | "p-locate": { 2113 | "version": "3.0.0", 2114 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2115 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2116 | "requires": { 2117 | "p-limit": "^2.0.0" 2118 | } 2119 | }, 2120 | "p-memoize": { 2121 | "version": "4.0.0", 2122 | "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-4.0.0.tgz", 2123 | "integrity": "sha512-oMxCJKVS75Bf2RWtXJNQNaX2K1G0FYpllOh2iTsPXZqnf9dWMcis3BL+pRdLeQY8lIdwwL01k/UV5LBdcVhZzg==", 2124 | "requires": { 2125 | "mem": "^6.0.1", 2126 | "mimic-fn": "^3.0.0" 2127 | }, 2128 | "dependencies": { 2129 | "mimic-fn": { 2130 | "version": "3.1.0", 2131 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", 2132 | "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" 2133 | } 2134 | } 2135 | }, 2136 | "p-queue": { 2137 | "version": "6.6.0", 2138 | "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.0.tgz", 2139 | "integrity": "sha512-zPHXPNy9jZsiym0PpJjvnHQysx1fSd/QdaNVwiDRLU2KFChD6h9CkCB6b8i3U8lBwJyA+mHgNZCzcy77glUssQ==", 2140 | "requires": { 2141 | "eventemitter3": "^4.0.4", 2142 | "p-timeout": "^3.1.0" 2143 | } 2144 | }, 2145 | "p-retry": { 2146 | "version": "4.2.0", 2147 | "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.2.0.tgz", 2148 | "integrity": "sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA==", 2149 | "requires": { 2150 | "@types/retry": "^0.12.0", 2151 | "retry": "^0.12.0" 2152 | } 2153 | }, 2154 | "p-timeout": { 2155 | "version": "3.2.0", 2156 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", 2157 | "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", 2158 | "requires": { 2159 | "p-finally": "^1.0.0" 2160 | } 2161 | }, 2162 | "p-try": { 2163 | "version": "2.2.0", 2164 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2165 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 2166 | }, 2167 | "package-json": { 2168 | "version": "6.5.0", 2169 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", 2170 | "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", 2171 | "requires": { 2172 | "got": "^9.6.0", 2173 | "registry-auth-token": "^4.0.0", 2174 | "registry-url": "^5.0.0", 2175 | "semver": "^6.2.0" 2176 | }, 2177 | "dependencies": { 2178 | "semver": { 2179 | "version": "6.3.0", 2180 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2181 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 2182 | } 2183 | } 2184 | }, 2185 | "packet-reader": { 2186 | "version": "1.0.0", 2187 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 2188 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" 2189 | }, 2190 | "pako": { 2191 | "version": "1.0.11", 2192 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 2193 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" 2194 | }, 2195 | "parseurl": { 2196 | "version": "1.3.3", 2197 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2198 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 2199 | }, 2200 | "path-exists": { 2201 | "version": "3.0.0", 2202 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2203 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 2204 | }, 2205 | "path-is-absolute": { 2206 | "version": "1.0.1", 2207 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2208 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 2209 | }, 2210 | "path-key": { 2211 | "version": "3.1.1", 2212 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2213 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 2214 | }, 2215 | "path-parse": { 2216 | "version": "1.0.6", 2217 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2218 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 2219 | }, 2220 | "path-to-regexp": { 2221 | "version": "0.1.7", 2222 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 2223 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 2224 | }, 2225 | "pg": { 2226 | "version": "8.3.0", 2227 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.3.0.tgz", 2228 | "integrity": "sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==", 2229 | "requires": { 2230 | "buffer-writer": "2.0.0", 2231 | "packet-reader": "1.0.0", 2232 | "pg-connection-string": "^2.3.0", 2233 | "pg-pool": "^3.2.1", 2234 | "pg-protocol": "^1.2.5", 2235 | "pg-types": "^2.1.0", 2236 | "pgpass": "1.x", 2237 | "semver": "4.3.2" 2238 | } 2239 | }, 2240 | "pg-connection-string": { 2241 | "version": "2.3.0", 2242 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", 2243 | "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" 2244 | }, 2245 | "pg-int8": { 2246 | "version": "1.0.1", 2247 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 2248 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 2249 | }, 2250 | "pg-pool": { 2251 | "version": "3.2.1", 2252 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.1.tgz", 2253 | "integrity": "sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==" 2254 | }, 2255 | "pg-protocol": { 2256 | "version": "1.2.5", 2257 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.2.5.tgz", 2258 | "integrity": "sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg==" 2259 | }, 2260 | "pg-types": { 2261 | "version": "2.2.0", 2262 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 2263 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 2264 | "requires": { 2265 | "pg-int8": "1.0.1", 2266 | "postgres-array": "~2.0.0", 2267 | "postgres-bytea": "~1.0.0", 2268 | "postgres-date": "~1.0.4", 2269 | "postgres-interval": "^1.1.0" 2270 | } 2271 | }, 2272 | "pgpass": { 2273 | "version": "1.0.2", 2274 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz", 2275 | "integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=", 2276 | "requires": { 2277 | "split": "^1.0.0" 2278 | } 2279 | }, 2280 | "please-upgrade-node": { 2281 | "version": "3.2.0", 2282 | "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", 2283 | "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", 2284 | "requires": { 2285 | "semver-compare": "^1.0.0" 2286 | } 2287 | }, 2288 | "portfinder": { 2289 | "version": "1.0.28", 2290 | "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", 2291 | "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", 2292 | "requires": { 2293 | "async": "^2.6.2", 2294 | "debug": "^3.1.1", 2295 | "mkdirp": "^0.5.5" 2296 | }, 2297 | "dependencies": { 2298 | "debug": { 2299 | "version": "3.2.6", 2300 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 2301 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 2302 | "requires": { 2303 | "ms": "^2.1.1" 2304 | } 2305 | }, 2306 | "ms": { 2307 | "version": "2.1.2", 2308 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2309 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2310 | } 2311 | } 2312 | }, 2313 | "postgres-array": { 2314 | "version": "2.0.0", 2315 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 2316 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 2317 | }, 2318 | "postgres-bytea": { 2319 | "version": "1.0.0", 2320 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 2321 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" 2322 | }, 2323 | "postgres-date": { 2324 | "version": "1.0.6", 2325 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.6.tgz", 2326 | "integrity": "sha512-o2a4gxeFcox+CgB3Ig/kNHBP23PiEXHCXx7pcIIsvzoNz4qv+lKTyiSkjOXIMNUl12MO/mOYl2K6wR9X5K6Plg==" 2327 | }, 2328 | "postgres-interval": { 2329 | "version": "1.2.0", 2330 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 2331 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 2332 | "requires": { 2333 | "xtend": "^4.0.0" 2334 | } 2335 | }, 2336 | "prepend-http": { 2337 | "version": "2.0.0", 2338 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 2339 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" 2340 | }, 2341 | "process-nextick-args": { 2342 | "version": "2.0.1", 2343 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2344 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2345 | }, 2346 | "proto-list": { 2347 | "version": "1.2.4", 2348 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 2349 | "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", 2350 | "dev": true 2351 | }, 2352 | "proxy-addr": { 2353 | "version": "2.0.6", 2354 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 2355 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 2356 | "requires": { 2357 | "forwarded": "~0.1.2", 2358 | "ipaddr.js": "1.9.1" 2359 | } 2360 | }, 2361 | "pseudomap": { 2362 | "version": "1.0.2", 2363 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2364 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" 2365 | }, 2366 | "pump": { 2367 | "version": "3.0.0", 2368 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2369 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2370 | "requires": { 2371 | "end-of-stream": "^1.1.0", 2372 | "once": "^1.3.1" 2373 | } 2374 | }, 2375 | "punycode": { 2376 | "version": "1.3.2", 2377 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 2378 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" 2379 | }, 2380 | "pupa": { 2381 | "version": "2.0.1", 2382 | "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", 2383 | "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", 2384 | "requires": { 2385 | "escape-goat": "^2.0.0" 2386 | } 2387 | }, 2388 | "qs": { 2389 | "version": "6.7.0", 2390 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 2391 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 2392 | }, 2393 | "querystring": { 2394 | "version": "0.2.0", 2395 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 2396 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" 2397 | }, 2398 | "range-parser": { 2399 | "version": "1.2.1", 2400 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2401 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 2402 | }, 2403 | "raw-body": { 2404 | "version": "2.4.0", 2405 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 2406 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 2407 | "requires": { 2408 | "bytes": "3.1.0", 2409 | "http-errors": "1.7.2", 2410 | "iconv-lite": "0.4.24", 2411 | "unpipe": "1.0.0" 2412 | } 2413 | }, 2414 | "rc": { 2415 | "version": "1.2.8", 2416 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2417 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2418 | "requires": { 2419 | "deep-extend": "^0.6.0", 2420 | "ini": "~1.3.0", 2421 | "minimist": "^1.2.0", 2422 | "strip-json-comments": "~2.0.1" 2423 | } 2424 | }, 2425 | "readable-stream": { 2426 | "version": "2.3.7", 2427 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2428 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2429 | "requires": { 2430 | "core-util-is": "~1.0.0", 2431 | "inherits": "~2.0.3", 2432 | "isarray": "~1.0.0", 2433 | "process-nextick-args": "~2.0.0", 2434 | "safe-buffer": "~5.1.1", 2435 | "string_decoder": "~1.1.1", 2436 | "util-deprecate": "~1.0.1" 2437 | } 2438 | }, 2439 | "registry-auth-token": { 2440 | "version": "4.2.0", 2441 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", 2442 | "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", 2443 | "requires": { 2444 | "rc": "^1.2.8" 2445 | } 2446 | }, 2447 | "registry-url": { 2448 | "version": "5.1.0", 2449 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", 2450 | "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", 2451 | "requires": { 2452 | "rc": "^1.2.8" 2453 | } 2454 | }, 2455 | "require-directory": { 2456 | "version": "2.1.1", 2457 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2458 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 2459 | }, 2460 | "require-main-filename": { 2461 | "version": "2.0.0", 2462 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 2463 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" 2464 | }, 2465 | "resolve": { 2466 | "version": "1.17.0", 2467 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 2468 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 2469 | "requires": { 2470 | "path-parse": "^1.0.6" 2471 | } 2472 | }, 2473 | "responselike": { 2474 | "version": "1.0.2", 2475 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", 2476 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", 2477 | "requires": { 2478 | "lowercase-keys": "^1.0.0" 2479 | } 2480 | }, 2481 | "retry": { 2482 | "version": "0.12.0", 2483 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 2484 | "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" 2485 | }, 2486 | "retry-as-promised": { 2487 | "version": "3.2.0", 2488 | "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", 2489 | "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", 2490 | "requires": { 2491 | "any-promise": "^1.3.0" 2492 | } 2493 | }, 2494 | "safe-buffer": { 2495 | "version": "5.1.2", 2496 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2497 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2498 | }, 2499 | "safer-buffer": { 2500 | "version": "2.1.2", 2501 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2502 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2503 | }, 2504 | "sax": { 2505 | "version": "1.2.1", 2506 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", 2507 | "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" 2508 | }, 2509 | "semver": { 2510 | "version": "4.3.2", 2511 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", 2512 | "integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=" 2513 | }, 2514 | "semver-compare": { 2515 | "version": "1.0.0", 2516 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", 2517 | "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" 2518 | }, 2519 | "semver-diff": { 2520 | "version": "3.1.1", 2521 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", 2522 | "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", 2523 | "requires": { 2524 | "semver": "^6.3.0" 2525 | }, 2526 | "dependencies": { 2527 | "semver": { 2528 | "version": "6.3.0", 2529 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2530 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 2531 | } 2532 | } 2533 | }, 2534 | "send": { 2535 | "version": "0.17.1", 2536 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 2537 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 2538 | "requires": { 2539 | "debug": "2.6.9", 2540 | "depd": "~1.1.2", 2541 | "destroy": "~1.0.4", 2542 | "encodeurl": "~1.0.2", 2543 | "escape-html": "~1.0.3", 2544 | "etag": "~1.8.1", 2545 | "fresh": "0.5.2", 2546 | "http-errors": "~1.7.2", 2547 | "mime": "1.6.0", 2548 | "ms": "2.1.1", 2549 | "on-finished": "~2.3.0", 2550 | "range-parser": "~1.2.1", 2551 | "statuses": "~1.5.0" 2552 | }, 2553 | "dependencies": { 2554 | "ms": { 2555 | "version": "2.1.1", 2556 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 2557 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 2558 | } 2559 | } 2560 | }, 2561 | "sequelize": { 2562 | "version": "6.3.4", 2563 | "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.3.4.tgz", 2564 | "integrity": "sha512-W6Y96N5QHTgEz5Q37v2GYbKufSXaw0b3v4rCLTPbcCMfIG0MHI42Ozp7IwiyV9bdNkfFEdY7XP8R6lWrWg4hUw==", 2565 | "requires": { 2566 | "debug": "^4.1.1", 2567 | "dottie": "^2.0.0", 2568 | "inflection": "1.12.0", 2569 | "lodash": "^4.17.15", 2570 | "moment": "^2.26.0", 2571 | "moment-timezone": "^0.5.31", 2572 | "retry-as-promised": "^3.2.0", 2573 | "semver": "^7.3.2", 2574 | "sequelize-pool": "^6.0.0", 2575 | "toposort-class": "^1.0.1", 2576 | "uuid": "^8.1.0", 2577 | "validator": "^10.11.0", 2578 | "wkx": "^0.5.0" 2579 | }, 2580 | "dependencies": { 2581 | "debug": { 2582 | "version": "4.1.1", 2583 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 2584 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 2585 | "requires": { 2586 | "ms": "^2.1.1" 2587 | } 2588 | }, 2589 | "ms": { 2590 | "version": "2.1.2", 2591 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2592 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2593 | }, 2594 | "semver": { 2595 | "version": "7.3.2", 2596 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", 2597 | "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" 2598 | }, 2599 | "uuid": { 2600 | "version": "8.3.0", 2601 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", 2602 | "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" 2603 | } 2604 | } 2605 | }, 2606 | "sequelize-cli": { 2607 | "version": "6.2.0", 2608 | "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.2.0.tgz", 2609 | "integrity": "sha512-6WQ2x91hg30dUn66mXHnzvHATZ4pyI1GHSNbS/TNN/vRR4BLRSLijadeMgC8zqmKDsL0VqzVVopJWfJakuP++Q==", 2610 | "dev": true, 2611 | "requires": { 2612 | "cli-color": "^1.4.0", 2613 | "fs-extra": "^7.0.1", 2614 | "js-beautify": "^1.8.8", 2615 | "lodash": "^4.17.5", 2616 | "resolve": "^1.5.0", 2617 | "umzug": "^2.3.0", 2618 | "yargs": "^13.1.0" 2619 | }, 2620 | "dependencies": { 2621 | "fs-extra": { 2622 | "version": "7.0.1", 2623 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", 2624 | "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", 2625 | "dev": true, 2626 | "requires": { 2627 | "graceful-fs": "^4.1.2", 2628 | "jsonfile": "^4.0.0", 2629 | "universalify": "^0.1.0" 2630 | } 2631 | }, 2632 | "yargs": { 2633 | "version": "13.3.2", 2634 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", 2635 | "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", 2636 | "dev": true, 2637 | "requires": { 2638 | "cliui": "^5.0.0", 2639 | "find-up": "^3.0.0", 2640 | "get-caller-file": "^2.0.1", 2641 | "require-directory": "^2.1.1", 2642 | "require-main-filename": "^2.0.0", 2643 | "set-blocking": "^2.0.0", 2644 | "string-width": "^3.0.0", 2645 | "which-module": "^2.0.0", 2646 | "y18n": "^4.0.0", 2647 | "yargs-parser": "^13.1.2" 2648 | } 2649 | }, 2650 | "yargs-parser": { 2651 | "version": "13.1.2", 2652 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 2653 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 2654 | "dev": true, 2655 | "requires": { 2656 | "camelcase": "^5.0.0", 2657 | "decamelize": "^1.2.0" 2658 | } 2659 | } 2660 | } 2661 | }, 2662 | "sequelize-pool": { 2663 | "version": "6.1.0", 2664 | "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", 2665 | "integrity": "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==" 2666 | }, 2667 | "serve-static": { 2668 | "version": "1.14.1", 2669 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 2670 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 2671 | "requires": { 2672 | "encodeurl": "~1.0.2", 2673 | "escape-html": "~1.0.3", 2674 | "parseurl": "~1.3.3", 2675 | "send": "0.17.1" 2676 | } 2677 | }, 2678 | "serverless-http": { 2679 | "version": "2.5.0", 2680 | "resolved": "https://registry.npmjs.org/serverless-http/-/serverless-http-2.5.0.tgz", 2681 | "integrity": "sha512-p0c1aTQ7mLZEtQkaP+K/zT4zFUY1YZs+mRlw/Q0yl+HptJL6IOLLylx6WXXFlQoH5+uUibivRzBbNotatvqDkg==", 2682 | "requires": { 2683 | "@types/aws-lambda": "^8.10.19" 2684 | } 2685 | }, 2686 | "serverless-offline": { 2687 | "version": "6.5.0", 2688 | "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-6.5.0.tgz", 2689 | "integrity": "sha512-BTNI68Tfl5zahsqDV6WBGJ7Mj57C7EaMNFzs9u/SBafOnQPKpk6dyNi2qDNCol/W8F3zIlEdADjWtDZPr8PR7g==", 2690 | "requires": { 2691 | "@hapi/boom": "^7.4.11", 2692 | "@hapi/h2o2": "^8.3.2", 2693 | "@hapi/hapi": "^18.4.1", 2694 | "boxen": "^4.2.0", 2695 | "chalk": "^3.0.0", 2696 | "cuid": "^2.1.8", 2697 | "execa": "^4.0.0", 2698 | "extend": "^3.0.2", 2699 | "fs-extra": "^8.1.0", 2700 | "java-invoke-local": "0.0.6", 2701 | "js-string-escape": "^1.0.1", 2702 | "jsonpath-plus": "^3.0.0", 2703 | "jsonschema": "^1.2.6", 2704 | "jsonwebtoken": "^8.5.1", 2705 | "jszip": "^3.2.2", 2706 | "luxon": "^1.22.0", 2707 | "node-fetch": "^2.6.0", 2708 | "node-schedule": "^1.3.2", 2709 | "object.fromentries": "^2.0.2", 2710 | "p-memoize": "^4.0.0", 2711 | "p-queue": "^6.3.0", 2712 | "p-retry": "^4.2.0", 2713 | "please-upgrade-node": "^3.2.0", 2714 | "portfinder": "^1.0.25", 2715 | "semver": "^7.1.3", 2716 | "update-notifier": "^4.1.0", 2717 | "velocityjs": "^2.0.0", 2718 | "ws": "^7.2.1" 2719 | }, 2720 | "dependencies": { 2721 | "ansi-styles": { 2722 | "version": "4.2.1", 2723 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 2724 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 2725 | "requires": { 2726 | "@types/color-name": "^1.1.1", 2727 | "color-convert": "^2.0.1" 2728 | } 2729 | }, 2730 | "chalk": { 2731 | "version": "3.0.0", 2732 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 2733 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 2734 | "requires": { 2735 | "ansi-styles": "^4.1.0", 2736 | "supports-color": "^7.1.0" 2737 | } 2738 | }, 2739 | "color-convert": { 2740 | "version": "2.0.1", 2741 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2742 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2743 | "requires": { 2744 | "color-name": "~1.1.4" 2745 | } 2746 | }, 2747 | "color-name": { 2748 | "version": "1.1.4", 2749 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2750 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 2751 | }, 2752 | "has-flag": { 2753 | "version": "4.0.0", 2754 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2755 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 2756 | }, 2757 | "semver": { 2758 | "version": "7.3.2", 2759 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", 2760 | "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" 2761 | }, 2762 | "supports-color": { 2763 | "version": "7.1.0", 2764 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 2765 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 2766 | "requires": { 2767 | "has-flag": "^4.0.0" 2768 | } 2769 | } 2770 | } 2771 | }, 2772 | "set-blocking": { 2773 | "version": "2.0.0", 2774 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2775 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 2776 | }, 2777 | "set-immediate-shim": { 2778 | "version": "1.0.1", 2779 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 2780 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" 2781 | }, 2782 | "setprototypeof": { 2783 | "version": "1.1.1", 2784 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 2785 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 2786 | }, 2787 | "shebang-command": { 2788 | "version": "2.0.0", 2789 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2790 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2791 | "requires": { 2792 | "shebang-regex": "^3.0.0" 2793 | } 2794 | }, 2795 | "shebang-regex": { 2796 | "version": "3.0.0", 2797 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2798 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 2799 | }, 2800 | "sigmund": { 2801 | "version": "1.0.1", 2802 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2803 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" 2804 | }, 2805 | "signal-exit": { 2806 | "version": "3.0.3", 2807 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 2808 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" 2809 | }, 2810 | "sorted-array-functions": { 2811 | "version": "1.2.0", 2812 | "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.2.0.tgz", 2813 | "integrity": "sha512-sWpjPhIZJtqO77GN+LD8dDsDKcWZ9GCOJNqKzi1tvtjGIzwfoyuRH8S0psunmc6Z5P+qfDqztSbwYR5X/e1UTg==" 2814 | }, 2815 | "source-map": { 2816 | "version": "0.6.1", 2817 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2818 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 2819 | }, 2820 | "split": { 2821 | "version": "1.0.1", 2822 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", 2823 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", 2824 | "requires": { 2825 | "through": "2" 2826 | } 2827 | }, 2828 | "sprintf-js": { 2829 | "version": "1.0.3", 2830 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2831 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 2832 | }, 2833 | "statuses": { 2834 | "version": "1.5.0", 2835 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2836 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 2837 | }, 2838 | "string-width": { 2839 | "version": "3.1.0", 2840 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 2841 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 2842 | "requires": { 2843 | "emoji-regex": "^7.0.1", 2844 | "is-fullwidth-code-point": "^2.0.0", 2845 | "strip-ansi": "^5.1.0" 2846 | } 2847 | }, 2848 | "string.prototype.trimend": { 2849 | "version": "1.0.1", 2850 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", 2851 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", 2852 | "requires": { 2853 | "define-properties": "^1.1.3", 2854 | "es-abstract": "^1.17.5" 2855 | } 2856 | }, 2857 | "string.prototype.trimstart": { 2858 | "version": "1.0.1", 2859 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", 2860 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", 2861 | "requires": { 2862 | "define-properties": "^1.1.3", 2863 | "es-abstract": "^1.17.5" 2864 | } 2865 | }, 2866 | "string_decoder": { 2867 | "version": "1.1.1", 2868 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2869 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2870 | "requires": { 2871 | "safe-buffer": "~5.1.0" 2872 | } 2873 | }, 2874 | "strip-ansi": { 2875 | "version": "5.2.0", 2876 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2877 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2878 | "requires": { 2879 | "ansi-regex": "^4.1.0" 2880 | } 2881 | }, 2882 | "strip-final-newline": { 2883 | "version": "2.0.0", 2884 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 2885 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" 2886 | }, 2887 | "strip-json-comments": { 2888 | "version": "2.0.1", 2889 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2890 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 2891 | }, 2892 | "supports-color": { 2893 | "version": "5.5.0", 2894 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2895 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2896 | "requires": { 2897 | "has-flag": "^3.0.0" 2898 | } 2899 | }, 2900 | "swagger-ui-dist": { 2901 | "version": "3.31.1", 2902 | "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.31.1.tgz", 2903 | "integrity": "sha512-+IuIxXX8grZcDVLaC12WCGy62iHJ2v8kTptU4H4EgY/ue6tKeMu/jzIAs+pLFOuYwfG4+VQ+CrC9UeHR9oNKBw==" 2904 | }, 2905 | "swagger-ui-express": { 2906 | "version": "4.1.4", 2907 | "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.1.4.tgz", 2908 | "integrity": "sha512-Ea96ecpC+Iq9GUqkeD/LFR32xSs8gYqmTW1gXCuKg81c26WV6ZC2FsBSPVExQP6WkyUuz5HEiR0sEv/HCC343g==", 2909 | "requires": { 2910 | "swagger-ui-dist": "^3.18.1" 2911 | } 2912 | }, 2913 | "term-size": { 2914 | "version": "2.2.0", 2915 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", 2916 | "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==" 2917 | }, 2918 | "through": { 2919 | "version": "2.3.8", 2920 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2921 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 2922 | }, 2923 | "timers-ext": { 2924 | "version": "0.1.7", 2925 | "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", 2926 | "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", 2927 | "dev": true, 2928 | "requires": { 2929 | "es5-ext": "~0.10.46", 2930 | "next-tick": "1" 2931 | } 2932 | }, 2933 | "to-readable-stream": { 2934 | "version": "1.0.0", 2935 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", 2936 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" 2937 | }, 2938 | "toidentifier": { 2939 | "version": "1.0.0", 2940 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 2941 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 2942 | }, 2943 | "toposort-class": { 2944 | "version": "1.0.1", 2945 | "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", 2946 | "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" 2947 | }, 2948 | "tslib": { 2949 | "version": "1.13.0", 2950 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", 2951 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" 2952 | }, 2953 | "tslint": { 2954 | "version": "6.1.3", 2955 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", 2956 | "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", 2957 | "requires": { 2958 | "@babel/code-frame": "^7.0.0", 2959 | "builtin-modules": "^1.1.1", 2960 | "chalk": "^2.3.0", 2961 | "commander": "^2.12.1", 2962 | "diff": "^4.0.1", 2963 | "glob": "^7.1.1", 2964 | "js-yaml": "^3.13.1", 2965 | "minimatch": "^3.0.4", 2966 | "mkdirp": "^0.5.3", 2967 | "resolve": "^1.3.2", 2968 | "semver": "^5.3.0", 2969 | "tslib": "^1.13.0", 2970 | "tsutils": "^2.29.0" 2971 | }, 2972 | "dependencies": { 2973 | "semver": { 2974 | "version": "5.7.1", 2975 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2976 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 2977 | } 2978 | } 2979 | }, 2980 | "tsoa": { 2981 | "version": "2.5.14", 2982 | "resolved": "https://registry.npmjs.org/tsoa/-/tsoa-2.5.14.tgz", 2983 | "integrity": "sha512-wBqUCgsWaypR3J5oWsp7AnOHoD4Yfa6g9CnZ+5ImHdXg3VGjBj8BKCO+k3u5gGj5xf3/rjpuAAihAAWV0wHBhw==", 2984 | "requires": { 2985 | "fs-extra": "^8.1.0", 2986 | "handlebars": "^4.5.3", 2987 | "merge": "^1.2.1", 2988 | "minimatch": "^3.0.4", 2989 | "moment": "^2.24.0", 2990 | "typescript": "^3.5.3", 2991 | "typescript-formatter": "^7.2.2", 2992 | "validator": "^11.1.0", 2993 | "yamljs": "^0.3.0", 2994 | "yargs": "^14.0.0" 2995 | }, 2996 | "dependencies": { 2997 | "validator": { 2998 | "version": "11.1.0", 2999 | "resolved": "https://registry.npmjs.org/validator/-/validator-11.1.0.tgz", 3000 | "integrity": "sha512-qiQ5ktdO7CD6C/5/mYV4jku/7qnqzjrxb3C/Q5wR3vGGinHTgJZN/TdFT3ZX4vXhX2R1PXx42fB1cn5W+uJ4lg==" 3001 | } 3002 | } 3003 | }, 3004 | "tsutils": { 3005 | "version": "2.29.0", 3006 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", 3007 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", 3008 | "requires": { 3009 | "tslib": "^1.8.1" 3010 | } 3011 | }, 3012 | "type": { 3013 | "version": "1.2.0", 3014 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", 3015 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", 3016 | "dev": true 3017 | }, 3018 | "type-fest": { 3019 | "version": "0.8.1", 3020 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 3021 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" 3022 | }, 3023 | "type-is": { 3024 | "version": "1.6.18", 3025 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 3026 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 3027 | "requires": { 3028 | "media-typer": "0.3.0", 3029 | "mime-types": "~2.1.24" 3030 | } 3031 | }, 3032 | "typedarray-to-buffer": { 3033 | "version": "3.1.5", 3034 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 3035 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 3036 | "requires": { 3037 | "is-typedarray": "^1.0.0" 3038 | } 3039 | }, 3040 | "typescript": { 3041 | "version": "3.9.7", 3042 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", 3043 | "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" 3044 | }, 3045 | "typescript-formatter": { 3046 | "version": "7.2.2", 3047 | "resolved": "https://registry.npmjs.org/typescript-formatter/-/typescript-formatter-7.2.2.tgz", 3048 | "integrity": "sha512-V7vfI9XArVhriOTYHPzMU2WUnm5IMdu9X/CPxs8mIMGxmTBFpDABlbkBka64PZJ9/xgQeRpK8KzzAG4MPzxBDQ==", 3049 | "requires": { 3050 | "commandpost": "^1.0.0", 3051 | "editorconfig": "^0.15.0" 3052 | } 3053 | }, 3054 | "uglify-js": { 3055 | "version": "3.10.1", 3056 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.1.tgz", 3057 | "integrity": "sha512-RjxApKkrPJB6kjJxQS3iZlf///REXWYxYJxO/MpmlQzVkDWVI3PSnCBWezMecmTU/TRkNxrl8bmsfFQCp+LO+Q==", 3058 | "optional": true 3059 | }, 3060 | "umzug": { 3061 | "version": "2.3.0", 3062 | "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", 3063 | "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", 3064 | "dev": true, 3065 | "requires": { 3066 | "bluebird": "^3.7.2" 3067 | } 3068 | }, 3069 | "unique-string": { 3070 | "version": "2.0.0", 3071 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", 3072 | "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", 3073 | "requires": { 3074 | "crypto-random-string": "^2.0.0" 3075 | } 3076 | }, 3077 | "universalify": { 3078 | "version": "0.1.2", 3079 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3080 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 3081 | }, 3082 | "unpipe": { 3083 | "version": "1.0.0", 3084 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3085 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 3086 | }, 3087 | "update-notifier": { 3088 | "version": "4.1.0", 3089 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", 3090 | "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", 3091 | "requires": { 3092 | "boxen": "^4.2.0", 3093 | "chalk": "^3.0.0", 3094 | "configstore": "^5.0.1", 3095 | "has-yarn": "^2.1.0", 3096 | "import-lazy": "^2.1.0", 3097 | "is-ci": "^2.0.0", 3098 | "is-installed-globally": "^0.3.1", 3099 | "is-npm": "^4.0.0", 3100 | "is-yarn-global": "^0.3.0", 3101 | "latest-version": "^5.0.0", 3102 | "pupa": "^2.0.1", 3103 | "semver-diff": "^3.1.1", 3104 | "xdg-basedir": "^4.0.0" 3105 | }, 3106 | "dependencies": { 3107 | "ansi-styles": { 3108 | "version": "4.2.1", 3109 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 3110 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 3111 | "requires": { 3112 | "@types/color-name": "^1.1.1", 3113 | "color-convert": "^2.0.1" 3114 | } 3115 | }, 3116 | "chalk": { 3117 | "version": "3.0.0", 3118 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 3119 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 3120 | "requires": { 3121 | "ansi-styles": "^4.1.0", 3122 | "supports-color": "^7.1.0" 3123 | } 3124 | }, 3125 | "color-convert": { 3126 | "version": "2.0.1", 3127 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3128 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3129 | "requires": { 3130 | "color-name": "~1.1.4" 3131 | } 3132 | }, 3133 | "color-name": { 3134 | "version": "1.1.4", 3135 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3136 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 3137 | }, 3138 | "has-flag": { 3139 | "version": "4.0.0", 3140 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3141 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 3142 | }, 3143 | "supports-color": { 3144 | "version": "7.1.0", 3145 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 3146 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 3147 | "requires": { 3148 | "has-flag": "^4.0.0" 3149 | } 3150 | } 3151 | } 3152 | }, 3153 | "url": { 3154 | "version": "0.10.3", 3155 | "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", 3156 | "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", 3157 | "requires": { 3158 | "punycode": "1.3.2", 3159 | "querystring": "0.2.0" 3160 | } 3161 | }, 3162 | "url-parse-lax": { 3163 | "version": "3.0.0", 3164 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", 3165 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", 3166 | "requires": { 3167 | "prepend-http": "^2.0.0" 3168 | } 3169 | }, 3170 | "util-deprecate": { 3171 | "version": "1.0.2", 3172 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3173 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 3174 | }, 3175 | "utils-merge": { 3176 | "version": "1.0.1", 3177 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 3178 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 3179 | }, 3180 | "uuid": { 3181 | "version": "3.3.2", 3182 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", 3183 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" 3184 | }, 3185 | "validator": { 3186 | "version": "10.11.0", 3187 | "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", 3188 | "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" 3189 | }, 3190 | "vary": { 3191 | "version": "1.1.2", 3192 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3193 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 3194 | }, 3195 | "velocityjs": { 3196 | "version": "2.0.0", 3197 | "resolved": "https://registry.npmjs.org/velocityjs/-/velocityjs-2.0.0.tgz", 3198 | "integrity": "sha512-ykI/zV9K51pcxOvD8Nd3jzVtRHcgG9w/a/BxsHh4sDwV0ZJAjWJk7Wa2TM5c9MWtCMn+FgqePkQFajwAvcNx7w==" 3199 | }, 3200 | "which": { 3201 | "version": "2.0.2", 3202 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3203 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3204 | "requires": { 3205 | "isexe": "^2.0.0" 3206 | } 3207 | }, 3208 | "which-module": { 3209 | "version": "2.0.0", 3210 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 3211 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" 3212 | }, 3213 | "widest-line": { 3214 | "version": "3.1.0", 3215 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 3216 | "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", 3217 | "requires": { 3218 | "string-width": "^4.0.0" 3219 | }, 3220 | "dependencies": { 3221 | "ansi-regex": { 3222 | "version": "5.0.0", 3223 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 3224 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" 3225 | }, 3226 | "emoji-regex": { 3227 | "version": "8.0.0", 3228 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3229 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 3230 | }, 3231 | "is-fullwidth-code-point": { 3232 | "version": "3.0.0", 3233 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3234 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 3235 | }, 3236 | "string-width": { 3237 | "version": "4.2.0", 3238 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 3239 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 3240 | "requires": { 3241 | "emoji-regex": "^8.0.0", 3242 | "is-fullwidth-code-point": "^3.0.0", 3243 | "strip-ansi": "^6.0.0" 3244 | } 3245 | }, 3246 | "strip-ansi": { 3247 | "version": "6.0.0", 3248 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 3249 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 3250 | "requires": { 3251 | "ansi-regex": "^5.0.0" 3252 | } 3253 | } 3254 | } 3255 | }, 3256 | "wkx": { 3257 | "version": "0.5.0", 3258 | "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", 3259 | "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", 3260 | "requires": { 3261 | "@types/node": "*" 3262 | } 3263 | }, 3264 | "wordwrap": { 3265 | "version": "1.0.0", 3266 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 3267 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" 3268 | }, 3269 | "wrap-ansi": { 3270 | "version": "5.1.0", 3271 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 3272 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 3273 | "requires": { 3274 | "ansi-styles": "^3.2.0", 3275 | "string-width": "^3.0.0", 3276 | "strip-ansi": "^5.0.0" 3277 | } 3278 | }, 3279 | "wrappy": { 3280 | "version": "1.0.2", 3281 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3282 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3283 | }, 3284 | "write-file-atomic": { 3285 | "version": "3.0.3", 3286 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 3287 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 3288 | "requires": { 3289 | "imurmurhash": "^0.1.4", 3290 | "is-typedarray": "^1.0.0", 3291 | "signal-exit": "^3.0.2", 3292 | "typedarray-to-buffer": "^3.1.5" 3293 | } 3294 | }, 3295 | "ws": { 3296 | "version": "7.3.1", 3297 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", 3298 | "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" 3299 | }, 3300 | "xdg-basedir": { 3301 | "version": "4.0.0", 3302 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", 3303 | "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" 3304 | }, 3305 | "xml2js": { 3306 | "version": "0.4.19", 3307 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", 3308 | "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", 3309 | "requires": { 3310 | "sax": ">=0.6.0", 3311 | "xmlbuilder": "~9.0.1" 3312 | } 3313 | }, 3314 | "xmlbuilder": { 3315 | "version": "9.0.7", 3316 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", 3317 | "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" 3318 | }, 3319 | "xtend": { 3320 | "version": "4.0.2", 3321 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 3322 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 3323 | }, 3324 | "y18n": { 3325 | "version": "4.0.0", 3326 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 3327 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" 3328 | }, 3329 | "yallist": { 3330 | "version": "2.1.2", 3331 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 3332 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" 3333 | }, 3334 | "yamljs": { 3335 | "version": "0.3.0", 3336 | "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", 3337 | "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", 3338 | "requires": { 3339 | "argparse": "^1.0.7", 3340 | "glob": "^7.0.5" 3341 | } 3342 | }, 3343 | "yargs": { 3344 | "version": "14.2.3", 3345 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", 3346 | "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", 3347 | "requires": { 3348 | "cliui": "^5.0.0", 3349 | "decamelize": "^1.2.0", 3350 | "find-up": "^3.0.0", 3351 | "get-caller-file": "^2.0.1", 3352 | "require-directory": "^2.1.1", 3353 | "require-main-filename": "^2.0.0", 3354 | "set-blocking": "^2.0.0", 3355 | "string-width": "^3.0.0", 3356 | "which-module": "^2.0.0", 3357 | "y18n": "^4.0.0", 3358 | "yargs-parser": "^15.0.1" 3359 | } 3360 | }, 3361 | "yargs-parser": { 3362 | "version": "15.0.1", 3363 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", 3364 | "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", 3365 | "requires": { 3366 | "camelcase": "^5.0.0", 3367 | "decamelize": "^1.2.0" 3368 | } 3369 | } 3370 | } 3371 | } 3372 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-serverless", 3 | "version": "1.0.0", 4 | "description": "Express serverless app", 5 | "main": "app.js", 6 | "scripts": { 7 | "generate-swagger": "./node_modules/tsoa/dist/cli.js swagger", 8 | "generate-routes": "./node_modules/tsoa/dist/cli.js routes", 9 | "build": "./node_modules/typescript/bin/tsc", 10 | "prebuild": "npm run generate-routes && ./node_modules/tslint/bin/tslint -c tslint.json -p tsconfig.json --fix && rm -rf dist/", 11 | "prestart": "npm install && npm run build", 12 | "start": "isLocal=true NODE_ENV=dev sls offline start", 13 | "pre-deploy": "rm -rf node_modules .serverless && npm install --production && npm run build && ./prepare-layer.sh", 14 | "deploy-dev": "npm run pre-deploy && NODE_ENV=dev sls deploy", 15 | "migrate-db-local": "NODE_ENV=local ./node_modules/sequelize-cli/lib/sequelize db:migrate", 16 | "migrate-db-dev": "NODE_ENV=dev ./node_modules/sequelize-cli/lib/sequelize db:migrate" 17 | }, 18 | "author": "beSharp", 19 | "license": "MIT", 20 | "dependencies": { 21 | "@types/express": "~4.17.5", 22 | "@types/sequelize": "^4.28.9", 23 | "aws-sdk": "^2.713.0", 24 | "express": "~4.17.1", 25 | "pg": "^8.3.0", 26 | "sequelize": "~6.3.0", 27 | "serverless-http": "~2.5.0", 28 | "serverless-offline": "^6.5.0", 29 | "swagger-ui-express": "~4.1.4", 30 | "tslint": "~6.1.2", 31 | "tsoa": "~2.5.13" 32 | }, 33 | "devDependencies": { 34 | "sequelize-cli": "~6.2.0", 35 | "serverless-offline": "~6.5.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /prepare-layer.sh: -------------------------------------------------------------------------------- 1 | mkdir -p layer/nodejs 2 | cp -r ./node_modules ./layer/nodejs 3 | cp package.json ./layer/nodejs 4 | -------------------------------------------------------------------------------- /serverless.yml: -------------------------------------------------------------------------------- 1 | service: express-serverless 2 | provider: 3 | name: aws 4 | runtime: nodejs12.x 5 | region: eu-west-1 6 | stage: ${env:NODE_ENV} 7 | environment: 8 | NODE_ENV: ${env:NODE_ENV} 9 | iamRoleStatements: 10 | - Effect: 'Allow' 11 | Action: 12 | - 'secretsmanager:GetSecretValue' 13 | Resource: 14 | - '*' 15 | 16 | package: 17 | exclude: 18 | - node_modules/** 19 | - src/** 20 | 21 | layers: 22 | nodeModules: 23 | path: layer 24 | compatibleRuntimes: 25 | - nodejs12.x 26 | 27 | resources: 28 | Resources: 29 | LambdaSecurityGroup: 30 | Properties: 31 | GroupDescription: Lambda security group 32 | GroupName: !Join 33 | - '-' 34 | - - express-lambda- 35 | - ${env:NODE_ENV} 36 | - private-sg 37 | VpcId: 'vpc-a2918ac0' 38 | Type: AWS::EC2::SecurityGroup 39 | 40 | functions: 41 | app: 42 | handler: dist/app.handler 43 | layers: 44 | - {Ref: NodeModulesLambdaLayer} 45 | events: 46 | - http: 47 | path: /api 48 | method: ANY 49 | cors: true 50 | - http: 51 | path: /api/{proxy+} 52 | method: ANY 53 | cors: true 54 | vpc: 55 | securityGroupIds: 56 | - {Ref: LambdaSecurityGroup} 57 | subnetIds: 58 | - "subnet-7963881c" 59 | - "subnet-35392e41" 60 | - "subnet-75af9b33" 61 | 62 | plugins: 63 | - serverless-offline -------------------------------------------------------------------------------- /src/app.ts: -------------------------------------------------------------------------------- 1 | import {RegisterRoutes} from "./generated/routes"; 2 | import * as bodyParser from 'body-parser'; 3 | import { 4 | Response as ExResponse, 5 | Request as ExRequest, 6 | NextFunction, 7 | } from "express"; 8 | import {ValidateError} from "tsoa"; 9 | import {ConfigSequelize} from "./config/sequelize/config.sequelize"; 10 | 11 | const express = require( "express"); 12 | const sls = require('serverless-http'); 13 | const app = express(express.json()); 14 | 15 | app.use(bodyParser.urlencoded({ extended: true })); 16 | app.use(bodyParser.json()); 17 | 18 | // Register tsoa routes to express 19 | RegisterRoutes(app); 20 | 21 | // Setup Sequelize connection with the database 22 | const config = new ConfigSequelize(); 23 | config.setupConnection(); 24 | 25 | // Error handler function 26 | app.use(function errorHandler( 27 | err: unknown, 28 | req: ExRequest, 29 | res: ExResponse, 30 | next: NextFunction 31 | ): ExResponse | void { 32 | if (err instanceof ValidateError) { 33 | console.warn(`Caught Validation Error for ${req.path}:`, err.fields); 34 | return res.status(422).json({ 35 | message: "Validation Failed", 36 | details: err?.fields, 37 | }); 38 | } 39 | if (err instanceof Error) { 40 | const errorBody: {} = { 41 | message: "Internal Server Error", 42 | cause: err.message, 43 | name: err.name, 44 | }; 45 | return res.status(500).json(errorBody); 46 | } 47 | next(); 48 | }); 49 | 50 | module.exports.handler = sls(app); 51 | -------------------------------------------------------------------------------- /src/book/converter/BookConverter.ts: -------------------------------------------------------------------------------- 1 | import {BookDto} from "../dto/BookDto"; 2 | import {BookModel} from "../model/BookModel"; 3 | 4 | 5 | export class BookConverter{ 6 | static toDto(val: BookModel): BookDto { 7 | return { 8 | id: val.id, 9 | title: val.title 10 | }; 11 | } 12 | 13 | static toDtoList(val: BookModel[]): BookDto[] { 14 | return val.map(element => { 15 | return { 16 | id: element.id, 17 | title: element.title 18 | } 19 | }); 20 | } 21 | 22 | static toModel(val: BookDto): BookModel { 23 | return { 24 | id: val.id, 25 | title: val.title 26 | }; 27 | } 28 | } -------------------------------------------------------------------------------- /src/book/dto/BookDto.ts: -------------------------------------------------------------------------------- 1 | export interface BookDto{ 2 | id: number; 3 | title: string 4 | } -------------------------------------------------------------------------------- /src/book/model/BookModel.ts: -------------------------------------------------------------------------------- 1 | const { Model } = require('sequelize'); 2 | 3 | export class BookModel extends Model{ 4 | id: number; 5 | title: string 6 | } -------------------------------------------------------------------------------- /src/book/routes/BookController.ts: -------------------------------------------------------------------------------- 1 | import {Body, Controller, Delete, Get, Path, Post, Put, Route, Tags} from "tsoa"; 2 | import {BookDto} from "../dto/BookDto"; 3 | import {BookService} from "../service/BookService"; 4 | import {BookConverter} from "../converter/BookConverter"; 5 | 6 | 7 | @Tags('Book') 8 | @Route('book') 9 | export class BookController extends Controller { 10 | 11 | @Get('{id}') 12 | public async getBook( 13 | @Path() id: string, 14 | ): Promise { 15 | return BookConverter.toDto( 16 | await BookService.getBookById(id) 17 | ); 18 | } 19 | 20 | @Get('') 21 | public async listBooks(): Promise { 22 | return BookConverter.toDtoList( 23 | await BookService.listBooks() 24 | ); 25 | } 26 | 27 | @Post('') 28 | public async saveBook( 29 | @Body() book: BookDto, 30 | ) { 31 | await BookService.saveBook( 32 | BookConverter.toModel(book) 33 | ); 34 | 35 | return { 36 | status: "Book inserted" 37 | } 38 | } 39 | 40 | @Put('') 41 | public async updateBook( 42 | @Body() book: BookDto 43 | ) { 44 | await BookService.updateBook( 45 | BookConverter.toModel(book) 46 | ); 47 | 48 | return { 49 | status: "Book updated" 50 | } 51 | } 52 | 53 | @Delete('{id}') 54 | public async deleteBook( 55 | @Path() id: string 56 | ) { 57 | await BookService.deleteBook(id); 58 | 59 | return { 60 | status: "Book deleted" 61 | } 62 | 63 | } 64 | } -------------------------------------------------------------------------------- /src/book/service/BookService.ts: -------------------------------------------------------------------------------- 1 | import {BookModel} from "../model/BookModel"; 2 | 3 | export class BookService{ 4 | public static async saveBook(book: BookModel){ 5 | try { 6 | await BookModel.create({ 7 | id: book.id, 8 | title: book.title 9 | }); 10 | 11 | } catch (error) { 12 | console.error(error); 13 | throw new Error(error); 14 | } 15 | } 16 | 17 | 18 | public static async updateBook(book: BookModel){ 19 | try{ 20 | await BookModel.update({ 21 | title: book.title 22 | },{ 23 | where: { 24 | id: book.id 25 | } 26 | }); 27 | 28 | }catch (error){ 29 | console.error(error.name); 30 | throw error; 31 | } 32 | } 33 | 34 | public static async getBookById(bookId: string): Promise{ 35 | try{ 36 | const resp = await BookModel.findByPk(bookId); 37 | 38 | if (typeof resp !== 'undefined' && resp !== null){ 39 | return resp; 40 | }else{ 41 | 42 | throw new Error(`Book ${bookId} not found`); 43 | } 44 | 45 | }catch (error){ 46 | console.error(error.name); 47 | throw error; 48 | } 49 | } 50 | 51 | public static async listBooks(): Promise{ 52 | try{ 53 | 54 | return await BookModel.findAll(); 55 | 56 | }catch (error){ 57 | console.error(error.name); 58 | throw error; 59 | } 60 | } 61 | 62 | public static async deleteBook(bookId: string){ 63 | try{ 64 | const deletedRows = await BookModel.destroy({ 65 | where: { 66 | id: bookId 67 | } 68 | }); 69 | 70 | console.log(`deleted ${deletedRows} rows`); 71 | if (deletedRows === 0){ 72 | throw new Error(`Book ${bookId} not found`); 73 | } 74 | 75 | }catch (error) { 76 | console.error(error); 77 | throw error 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /src/config/sequelize/config.sequelize.ts: -------------------------------------------------------------------------------- 1 | import {environment} from "../../environments/environment"; 2 | import { Sequelize } from "sequelize"; 3 | import {GetSecretValueResponse} from "aws-sdk/clients/secretsmanager"; 4 | import {InitModel} from "./init.model"; 5 | const AWS = require('aws-sdk'); 6 | 7 | export class ConfigSequelize{ 8 | private static _instance: ConfigSequelize = null; 9 | public sequelize: Sequelize = null; 10 | 11 | constructor() { 12 | if (!ConfigSequelize._instance) { 13 | console.log("creating instance ConfigSequelize"); 14 | ConfigSequelize._instance = this; 15 | }else{ 16 | console.log("retrieve instance ConfigSequelize"); 17 | return ConfigSequelize._instance 18 | } 19 | } 20 | 21 | public static getInstance(){ 22 | return ConfigSequelize._instance; 23 | } 24 | 25 | public async setupConnection(){ 26 | if(this.sequelize){ 27 | return; 28 | } 29 | 30 | if(environment.isLocal){ 31 | this.sequelize = new Sequelize('postgresql://postgres:postgres@localhost:5432/postgres'); 32 | }else{ 33 | await this.setupAwsConnection() 34 | } 35 | 36 | console.log("Connection to database concluded"); 37 | 38 | InitModel(this.sequelize); 39 | } 40 | 41 | private async setupAwsConnection(){ 42 | console.log("Connecting to RDS"); 43 | 44 | try{ 45 | const resp = await this.getSecret(); 46 | 47 | this.sequelize = new Sequelize(environment.rds.database, resp.username, resp.password, { 48 | host: environment.rds.hostname, 49 | dialect: 'postgres' 50 | }); 51 | } catch (e) { 52 | console.error(e); 53 | throw e 54 | } 55 | 56 | console.log("Connected to RDS successfully"); 57 | } 58 | 59 | private async getSecret() { 60 | const secretsManager = new AWS.SecretsManager({ 61 | region: environment.region 62 | }); 63 | 64 | try { 65 | const resp = await new Promise((resolve, reject) => { 66 | secretsManager.getSecretValue({SecretId: environment.rds.secretId}, (err, data) => { 67 | if (err){ 68 | return reject(err) 69 | } 70 | else{ 71 | return resolve(data) 72 | } 73 | })}); 74 | 75 | console.log("RDS secrets correctly retrieved"); 76 | 77 | const jsonResp = JSON.parse(resp.SecretString); 78 | return { 79 | username: jsonResp.username, 80 | password: jsonResp.password 81 | } 82 | } 83 | catch(error){ 84 | console.log(error) 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/config/sequelize/init.model.ts: -------------------------------------------------------------------------------- 1 | import {BookModel} from "../../book/model/BookModel"; 2 | const {DataTypes } = require('sequelize'); 3 | 4 | export function InitModel(sequelize){ 5 | BookModel.init({ 6 | id: { 7 | type: DataTypes.INTEGER, 8 | primaryKey: true 9 | }, 10 | title: DataTypes.TEXT, 11 | }, { 12 | tableName: 'book', 13 | createdAt: false, 14 | updatedAt: false, 15 | sequelize, // We need to pass the connection instance 16 | }) 17 | 18 | } -------------------------------------------------------------------------------- /src/environments/environment.dev.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: false, 3 | region: "eu-west-1", 4 | rds:{ 5 | hostname:"xxxxxx.eu-west-1.rds.amazonaws.com", 6 | port:5432, 7 | database:"expressServerlessAurora", 8 | secretId: "expressServerlessAuroraSecret" 9 | }, 10 | ...process.env 11 | }; 12 | -------------------------------------------------------------------------------- /src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | export const environment = require(`./environment.${process.env.NODE_ENV}`).environment; 2 | -------------------------------------------------------------------------------- /src/generated/routes.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable */ 2 | /* eslint-disable */ 3 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 4 | import { Controller, ValidationService, FieldErrors, ValidateError, TsoaRoute } from 'tsoa'; 5 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 6 | import { BookController } from './../book/routes/BookController'; 7 | import * as express from 'express'; 8 | 9 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 10 | 11 | const models: TsoaRoute.Models = { 12 | "BookDto": { 13 | "dataType": "refObject", 14 | "properties": { 15 | "id": { "dataType": "double", "required": true }, 16 | "title": { "dataType": "string", "required": true }, 17 | }, 18 | "additionalProperties": true, 19 | }, 20 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 21 | }; 22 | const validationService = new ValidationService(models); 23 | 24 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 25 | 26 | export function RegisterRoutes(app: express.Express) { 27 | // ########################################################################################################### 28 | // NOTE: If you do not see routes for all of your controllers in this file, then you might not have informed tsoa of where to look 29 | // Please look into the "controllerPathGlobs" config option described in the readme: https://github.com/lukeautry/tsoa 30 | // ########################################################################################################### 31 | app.get('/api/book/:id', 32 | function(request: any, response: any, next: any) { 33 | const args = { 34 | id: { "in": "path", "name": "id", "required": true, "dataType": "string" }, 35 | }; 36 | 37 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 38 | 39 | let validatedArgs: any[] = []; 40 | try { 41 | validatedArgs = getValidatedArgs(args, request); 42 | } catch (err) { 43 | return next(err); 44 | } 45 | 46 | const controller = new BookController(); 47 | 48 | 49 | const promise = controller.getBook.apply(controller, validatedArgs as any); 50 | promiseHandler(controller, promise, response, next); 51 | }); 52 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 53 | app.get('/api/book', 54 | function(request: any, response: any, next: any) { 55 | const args = { 56 | }; 57 | 58 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 59 | 60 | let validatedArgs: any[] = []; 61 | try { 62 | validatedArgs = getValidatedArgs(args, request); 63 | } catch (err) { 64 | return next(err); 65 | } 66 | 67 | const controller = new BookController(); 68 | 69 | 70 | const promise = controller.listBooks.apply(controller, validatedArgs as any); 71 | promiseHandler(controller, promise, response, next); 72 | }); 73 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 74 | app.post('/api/book', 75 | function(request: any, response: any, next: any) { 76 | const args = { 77 | book: { "in": "body", "name": "book", "required": true, "ref": "BookDto" }, 78 | }; 79 | 80 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 81 | 82 | let validatedArgs: any[] = []; 83 | try { 84 | validatedArgs = getValidatedArgs(args, request); 85 | } catch (err) { 86 | return next(err); 87 | } 88 | 89 | const controller = new BookController(); 90 | 91 | 92 | const promise = controller.saveBook.apply(controller, validatedArgs as any); 93 | promiseHandler(controller, promise, response, next); 94 | }); 95 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 96 | app.put('/api/book', 97 | function(request: any, response: any, next: any) { 98 | const args = { 99 | book: { "in": "body", "name": "book", "required": true, "ref": "BookDto" }, 100 | }; 101 | 102 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 103 | 104 | let validatedArgs: any[] = []; 105 | try { 106 | validatedArgs = getValidatedArgs(args, request); 107 | } catch (err) { 108 | return next(err); 109 | } 110 | 111 | const controller = new BookController(); 112 | 113 | 114 | const promise = controller.updateBook.apply(controller, validatedArgs as any); 115 | promiseHandler(controller, promise, response, next); 116 | }); 117 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 118 | app.delete('/api/book/:id', 119 | function(request: any, response: any, next: any) { 120 | const args = { 121 | id: { "in": "path", "name": "id", "required": true, "dataType": "string" }, 122 | }; 123 | 124 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 125 | 126 | let validatedArgs: any[] = []; 127 | try { 128 | validatedArgs = getValidatedArgs(args, request); 129 | } catch (err) { 130 | return next(err); 131 | } 132 | 133 | const controller = new BookController(); 134 | 135 | 136 | const promise = controller.deleteBook.apply(controller, validatedArgs as any); 137 | promiseHandler(controller, promise, response, next); 138 | }); 139 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 140 | 141 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 142 | 143 | 144 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 145 | 146 | function isController(object: any): object is Controller { 147 | return 'getHeaders' in object && 'getStatus' in object && 'setStatus' in object; 148 | } 149 | 150 | function promiseHandler(controllerObj: any, promise: any, response: any, next: any) { 151 | return Promise.resolve(promise) 152 | .then((data: any) => { 153 | let statusCode; 154 | if (isController(controllerObj)) { 155 | const headers = controllerObj.getHeaders(); 156 | Object.keys(headers).forEach((name: string) => { 157 | response.set(name, headers[name]); 158 | }); 159 | 160 | statusCode = controllerObj.getStatus(); 161 | } 162 | 163 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 164 | 165 | if (data && typeof data.pipe === 'function' && data.readable && typeof data._read === 'function') { 166 | data.pipe(response); 167 | } else if (data || data === false) { // === false allows boolean result 168 | response.status(statusCode || 200).json(data); 169 | } else { 170 | response.status(statusCode || 204).end(); 171 | } 172 | }) 173 | .catch((error: any) => next(error)); 174 | } 175 | 176 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 177 | 178 | function getValidatedArgs(args: any, request: any): any[] { 179 | const fieldErrors: FieldErrors = {}; 180 | const values = Object.keys(args).map((key) => { 181 | const name = args[key].name; 182 | switch (args[key].in) { 183 | case 'request': 184 | return request; 185 | case 'query': 186 | return validationService.ValidateParam(args[key], request.query[name], name, fieldErrors, undefined, { "controllerPathGlobs": ["./src/**/*Controller.ts"], "specVersion": 2 }); 187 | case 'path': 188 | return validationService.ValidateParam(args[key], request.params[name], name, fieldErrors, undefined, { "controllerPathGlobs": ["./src/**/*Controller.ts"], "specVersion": 2 }); 189 | case 'header': 190 | return validationService.ValidateParam(args[key], request.header(name), name, fieldErrors, undefined, { "controllerPathGlobs": ["./src/**/*Controller.ts"], "specVersion": 2 }); 191 | case 'body': 192 | return validationService.ValidateParam(args[key], request.body, name, fieldErrors, name + '.', { "controllerPathGlobs": ["./src/**/*Controller.ts"], "specVersion": 2 }); 193 | case 'body-prop': 194 | return validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, 'body.', { "controllerPathGlobs": ["./src/**/*Controller.ts"], "specVersion": 2 }); 195 | } 196 | }); 197 | 198 | if (Object.keys(fieldErrors).length > 0) { 199 | throw new ValidateError(fieldErrors, ''); 200 | } 201 | return values; 202 | } 203 | 204 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 205 | } 206 | 207 | // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa 208 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "esModuleInterop": true, 5 | "target": "es6", 6 | "noImplicitAny": false, 7 | "moduleResolution": "node", 8 | "sourceMap": true, 9 | "experimentalDecorators": true, 10 | "outDir": "dist", 11 | "baseUrl": "./src", 12 | "paths": { 13 | "*": [ 14 | "node_modules/*" 15 | ] 16 | } 17 | }, 18 | "include": [ 19 | "src/**/*" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "error", 3 | "extends": [ 4 | "tslint:recommended" 5 | ], 6 | "jsRules": {}, 7 | "rules": { 8 | "no-var-requires": false, 9 | "no-console": false, 10 | "no-empty-interface": false, 11 | "trailing-comma": [ false ] 12 | }, 13 | "rulesDirectory": [ 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /tsoa.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": { 3 | "name": "Express serverless swagger API", 4 | "description": "Express serverless API definitions", 5 | "version": "1.0.0", 6 | "schemes": [ "http" ], 7 | "outputDirectory": "./src/generated", 8 | "entryFile": "./src/app.ts", 9 | "host": "localhost:3000", 10 | "controllerPathGlobs": [ 11 | "./src/**/*Controller.ts" 12 | ], 13 | "basePath": "/api" 14 | }, 15 | "routes": { 16 | "basePath": "/api", 17 | "entryFile": "./src/app.ts", 18 | "routesDir": "./src/generated", 19 | "middleware": "express" 20 | } 21 | } 22 | --------------------------------------------------------------------------------