├── .gitignore ├── Controller └── products.js ├── Model └── product.js ├── Services └── product.js ├── dbconfigs.js ├── package-lock.json ├── package.json ├── readme.md ├── sample.env └── serverless.yml /.gitignore: -------------------------------------------------------------------------------- 1 | # package directories 2 | node_modules 3 | jspm_packages 4 | 5 | # Serverless directories 6 | .serverless 7 | 8 | # Environment Variables 9 | .env 10 | -------------------------------------------------------------------------------- /Controller/products.js: -------------------------------------------------------------------------------- 1 | const serverless = require('serverless-http'); 2 | const express = require('express'); 3 | const app = express(); 4 | 5 | const bodyParser = require('body-parser'); 6 | const uuid = require('uuid/v4'); 7 | 8 | const dbConnection = require('../dbConfigs'); 9 | const ProductService = require('../Services/product'); 10 | 11 | 12 | app.use(bodyParser.json()); 13 | app.use(bodyParser.urlencoded({ extended: true })); 14 | 15 | 16 | // base url to test our API 17 | app.get('/index', async (req, res) => { 18 | await res.send("

Welcome to the Product API for LogRocket Blog serverless Example!!

") 19 | }) 20 | 21 | // function for creating a new product 22 | app.post('/', async (req, res) => { 23 | try { 24 | await dbConnection(); 25 | const data = req.body; 26 | const {name, type, description, cost} = data; 27 | if(!data) { 28 | return "Please pass all required fields!" 29 | } 30 | const dataToSave = {name,type,description,cost,productId:uuid()}; 31 | let createProduct = await ProductService.createProduct(dataToSave); 32 | if (createProduct) { 33 | return res.status(200).send( 34 | createProduct 35 | ) 36 | } 37 | } catch (error) { 38 | // handle errors here 39 | console.log(error, "error!!"); 40 | } 41 | }) 42 | 43 | // function for getting all products 44 | app.get('/', async (req, res) => { 45 | try { 46 | await dbConnection(); 47 | const allProducts = await ProductService.getAllProduct(); 48 | if (allProducts) { 49 | return res.status(200).send({ 50 | data: allProducts 51 | }) 52 | } 53 | } catch (error) { 54 | // handle errors here 55 | console.log(error, "error!!"); 56 | } 57 | }) 58 | 59 | 60 | // function for getting a product by Id 61 | app.get('/:productId/', async (req, res) => { 62 | try { 63 | await dbConnection(); 64 | const {productId} = req.params; 65 | const getProduct = await ProductService.getProductById({productId}); 66 | if(getProduct) { 67 | return res.status(200).send({ 68 | data: getProduct 69 | }) 70 | } 71 | } catch (error) { 72 | // handle errors here 73 | console.log(error, "error!!"); 74 | } 75 | }); 76 | 77 | module.exports.handler = serverless(app); 78 | -------------------------------------------------------------------------------- /Model/product.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const ProductSchema = new mongoose.Schema ( 4 | { 5 | name: {type: String}, 6 | type: {type: String}, 7 | cost: {type: Number}, 8 | description: {type: String}, 9 | productId: { type: String }, 10 | }, 11 | {timestamps: true} 12 | ); 13 | 14 | const ProductModel = mongoose.model("product", ProductSchema); 15 | 16 | module.exports = ProductModel; 17 | 18 | -------------------------------------------------------------------------------- /Services/product.js: -------------------------------------------------------------------------------- 1 | const Product = require('../Model/product'); 2 | 3 | 4 | module.exports = { 5 | 6 | async createProduct (product) { 7 | let result = await Product.create(product); 8 | if(result) { 9 | return { 10 | data: product, 11 | message: "Product successfully created!" 12 | }; 13 | } 14 | return "Error creating new product" 15 | 16 | }, 17 | 18 | 19 | async getAllProduct() { 20 | let product = await Product.find(); 21 | if(product) return product; 22 | return "Error fetching products from db" 23 | }, 24 | 25 | 26 | async getProductById(productId) { 27 | let product = await Product.findOne(productId); 28 | if(product) return product; 29 | return "Error fetching product from db"; 30 | }, 31 | }; 32 | -------------------------------------------------------------------------------- /dbconfigs.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | require("dotenv").config(); 3 | mongoose.Promise = global.Promise; 4 | 5 | const connectToDatabase = async () => { 6 | let isConnected; 7 | if (isConnected) { 8 | console.log('using existing database connection'); 9 | return Promise.resolve(); 10 | } 11 | 12 | console.log('using new database connection'); 13 | const database = await mongoose.connect(process.env.MONGODB_URL, {useNewUrlParser: true}); 14 | isConnected = database.connections[0].readyState; 15 | // return isConnected; 16 | }; 17 | 18 | module.exports = connectToDatabase; 19 | 20 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "serverless-example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@cto.af/textdecoder": { 8 | "version": "0.0.0", 9 | "resolved": "https://registry.npmjs.org/@cto.af/textdecoder/-/textdecoder-0.0.0.tgz", 10 | "integrity": "sha512-sJpx3F5xcVV/9jNYJQtvimo4Vfld/nD3ph+ZWtQzZ03Zo8rJC7QKQTRcIGS13Rcz80DwFNthCWMrd58vpY4ZAQ==", 11 | "dev": true 12 | }, 13 | "@hapi/accept": { 14 | "version": "3.2.3", 15 | "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-3.2.3.tgz", 16 | "integrity": "sha512-qEzsOJkCAJZxwj3iF83bSG9Lxy8Bpbrt8mRLNdvSALT6vlU2cYh6ZEHKEZPy4h/Mo31Su3j0rJgFF91+W1RWDQ==", 17 | "dev": true, 18 | "requires": { 19 | "@hapi/boom": "7.x.x", 20 | "@hapi/hoek": "8.x.x" 21 | } 22 | }, 23 | "@hapi/address": { 24 | "version": "2.1.2", 25 | "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.2.tgz", 26 | "integrity": "sha512-O4QDrx+JoGKZc6aN64L04vqa7e41tIiLU+OvKdcYaEMP97UttL0f9GIi9/0A4WAMx0uBd6SidDIhktZhgOcN8Q==", 27 | "dev": true 28 | }, 29 | "@hapi/ammo": { 30 | "version": "3.1.1", 31 | "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-3.1.1.tgz", 32 | "integrity": "sha512-NYFK27VSPGyQ/KmOQedpQH4PSjE7awLntepX68vrYtRvuJO21W1kX0bK2p3C+6ltUwtCQSvmNT8a4uMVAysC6Q==", 33 | "dev": true, 34 | "requires": { 35 | "@hapi/hoek": "8.x.x" 36 | } 37 | }, 38 | "@hapi/b64": { 39 | "version": "4.2.1", 40 | "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-4.2.1.tgz", 41 | "integrity": "sha512-zqHpQuH5CBMw6hADzKfU/IGNrxq1Q+/wTYV+OiZRQN9F3tMyk+9BUMeBvFRMamduuqL8iSp62QAnJ+7ATiYLWA==", 42 | "dev": true, 43 | "requires": { 44 | "@hapi/hoek": "8.x.x" 45 | } 46 | }, 47 | "@hapi/boom": { 48 | "version": "7.4.11", 49 | "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-7.4.11.tgz", 50 | "integrity": "sha512-VSU/Cnj1DXouukYxxkes4nNJonCnlogHvIff1v1RVoN4xzkKhMXX+GRmb3NyH1iar10I9WFPDv2JPwfH3GaV0A==", 51 | "dev": true, 52 | "requires": { 53 | "@hapi/hoek": "8.x.x" 54 | } 55 | }, 56 | "@hapi/bounce": { 57 | "version": "1.3.2", 58 | "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-1.3.2.tgz", 59 | "integrity": "sha512-3bnb1AlcEByFZnpDIidxQyw1Gds81z/1rSqlx4bIEE+wUN0ATj0D49B5cE1wGocy90Rp/de4tv7GjsKd5RQeew==", 60 | "dev": true, 61 | "requires": { 62 | "@hapi/boom": "7.x.x", 63 | "@hapi/hoek": "^8.3.1" 64 | } 65 | }, 66 | "@hapi/bourne": { 67 | "version": "1.3.2", 68 | "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", 69 | "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", 70 | "dev": true 71 | }, 72 | "@hapi/call": { 73 | "version": "5.1.2", 74 | "resolved": "https://registry.npmjs.org/@hapi/call/-/call-5.1.2.tgz", 75 | "integrity": "sha512-10XyXbpo0fAXmOf/Q4BCgsQrrTZuwa6/FcSnuKqD06sZz5yMCmJTD8VpmolEjEfwJqXtQBZHj9g/IYcmHk3nxQ==", 76 | "dev": true, 77 | "requires": { 78 | "@hapi/boom": "7.x.x", 79 | "@hapi/hoek": "8.x.x" 80 | } 81 | }, 82 | "@hapi/catbox": { 83 | "version": "10.2.3", 84 | "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-10.2.3.tgz", 85 | "integrity": "sha512-kN9hXO4NYyOHW09CXiuj5qW1syc/0XeVOBsNNk0Tz89wWNQE5h21WF+VsfAw3uFR8swn/Wj3YEVBnWqo82m/JQ==", 86 | "dev": true, 87 | "requires": { 88 | "@hapi/boom": "7.x.x", 89 | "@hapi/hoek": "8.x.x", 90 | "@hapi/joi": "16.x.x", 91 | "@hapi/podium": "3.x.x" 92 | } 93 | }, 94 | "@hapi/catbox-memory": { 95 | "version": "4.1.1", 96 | "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-4.1.1.tgz", 97 | "integrity": "sha512-T6Hdy8DExzG0jY7C8yYWZB4XHfc0v+p1EGkwxl2HoaPYAmW7I3E59M/IvmSVpis8RPcIoBp41ZpO2aZPBpM2Ww==", 98 | "dev": true, 99 | "requires": { 100 | "@hapi/boom": "7.x.x", 101 | "@hapi/hoek": "8.x.x" 102 | } 103 | }, 104 | "@hapi/content": { 105 | "version": "4.1.0", 106 | "resolved": "https://registry.npmjs.org/@hapi/content/-/content-4.1.0.tgz", 107 | "integrity": "sha512-hv2Czsl49hnWDEfRZOFow/BmYbKyfEknmk3k83gOp6moFn5ceHB4xVcna8OwsGfy8dxO81lhpPy+JgQEaU4SWw==", 108 | "dev": true, 109 | "requires": { 110 | "@hapi/boom": "7.x.x" 111 | } 112 | }, 113 | "@hapi/cryptiles": { 114 | "version": "4.2.1", 115 | "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-4.2.1.tgz", 116 | "integrity": "sha512-XoqgKsHK0l/VpqPs+tr6j6vE+VQ3+2bkF2stvttmc7xAOf1oSAwHcJ0tlp/6MxMysktt1IEY0Csy3khKaP9/uQ==", 117 | "dev": true, 118 | "requires": { 119 | "@hapi/boom": "7.x.x" 120 | } 121 | }, 122 | "@hapi/file": { 123 | "version": "1.0.0", 124 | "resolved": "https://registry.npmjs.org/@hapi/file/-/file-1.0.0.tgz", 125 | "integrity": "sha512-Bsfp/+1Gyf70eGtnIgmScvrH8sSypO3TcK3Zf0QdHnzn/ACnAkI6KLtGACmNRPEzzIy+W7aJX5E+1fc9GwIABQ==", 126 | "dev": true 127 | }, 128 | "@hapi/formula": { 129 | "version": "1.2.0", 130 | "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-1.2.0.tgz", 131 | "integrity": "sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==", 132 | "dev": true 133 | }, 134 | "@hapi/h2o2": { 135 | "version": "8.3.2", 136 | "resolved": "https://registry.npmjs.org/@hapi/h2o2/-/h2o2-8.3.2.tgz", 137 | "integrity": "sha512-2WkZq+QAkvYHWGqnUuG0stcVeGyv9T7bopBYnCJSUEuvBZlUf2BTX2JCVSKxsnTLOxCYwoC/aI4Rr0ZSRd2oVg==", 138 | "dev": true, 139 | "requires": { 140 | "@hapi/boom": "7.x.x", 141 | "@hapi/hoek": "8.x.x", 142 | "@hapi/joi": "16.x.x", 143 | "@hapi/wreck": "15.x.x" 144 | } 145 | }, 146 | "@hapi/hapi": { 147 | "version": "18.4.0", 148 | "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-18.4.0.tgz", 149 | "integrity": "sha512-uk9zqknRLcNVQKgrPURm85DqkdroWP8eDRekh/IPoKvC4VjdZSn6EH2eUriOwyud/CldeBS3HDIJ/PtRj3VxDQ==", 150 | "dev": true, 151 | "requires": { 152 | "@hapi/accept": "3.x.x", 153 | "@hapi/ammo": "3.x.x", 154 | "@hapi/boom": "7.x.x", 155 | "@hapi/bounce": "1.x.x", 156 | "@hapi/call": "5.x.x", 157 | "@hapi/catbox": "10.x.x", 158 | "@hapi/catbox-memory": "4.x.x", 159 | "@hapi/heavy": "6.x.x", 160 | "@hapi/hoek": "8.x.x", 161 | "@hapi/joi": "15.x.x", 162 | "@hapi/mimos": "4.x.x", 163 | "@hapi/podium": "3.x.x", 164 | "@hapi/shot": "4.x.x", 165 | "@hapi/somever": "2.x.x", 166 | "@hapi/statehood": "6.x.x", 167 | "@hapi/subtext": "6.x.x", 168 | "@hapi/teamwork": "3.x.x", 169 | "@hapi/topo": "3.x.x" 170 | }, 171 | "dependencies": { 172 | "@hapi/joi": { 173 | "version": "15.1.1", 174 | "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", 175 | "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", 176 | "dev": true, 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 | "dev": true, 191 | "requires": { 192 | "@hapi/boom": "7.x.x", 193 | "@hapi/hoek": "8.x.x", 194 | "@hapi/joi": "16.x.x" 195 | } 196 | }, 197 | "@hapi/hoek": { 198 | "version": "8.5.0", 199 | "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.0.tgz", 200 | "integrity": "sha512-7XYT10CZfPsH7j9F1Jmg1+d0ezOux2oM2GfArAzLwWe4mE2Dr3hVjsAL6+TFY49RRJlCdJDMw3nJsLFroTc8Kw==", 201 | "dev": true 202 | }, 203 | "@hapi/iron": { 204 | "version": "5.1.4", 205 | "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-5.1.4.tgz", 206 | "integrity": "sha512-+ElC+OCiwWLjlJBmm8ZEWjlfzTMQTdgPnU/TsoU5QsktspIWmWi9IU4kU83nH+X/SSya8TP8h8P11Wr5L7dkQQ==", 207 | "dev": true, 208 | "requires": { 209 | "@hapi/b64": "4.x.x", 210 | "@hapi/boom": "7.x.x", 211 | "@hapi/bourne": "1.x.x", 212 | "@hapi/cryptiles": "4.x.x", 213 | "@hapi/hoek": "8.x.x" 214 | } 215 | }, 216 | "@hapi/joi": { 217 | "version": "16.1.7", 218 | "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-16.1.7.tgz", 219 | "integrity": "sha512-anaIgnZhNooG3LJLrTFzgGALTiO97zRA1UkvQHm9KxxoSiIzCozB3RCNCpDnfhTJD72QlrHA8nwGmNgpFFCIeg==", 220 | "dev": true, 221 | "requires": { 222 | "@hapi/address": "^2.1.2", 223 | "@hapi/formula": "^1.2.0", 224 | "@hapi/hoek": "^8.2.4", 225 | "@hapi/pinpoint": "^1.0.2", 226 | "@hapi/topo": "^3.1.3" 227 | } 228 | }, 229 | "@hapi/mimos": { 230 | "version": "4.1.1", 231 | "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-4.1.1.tgz", 232 | "integrity": "sha512-CXoi/zfcTWfKYX756eEea8rXJRIb9sR4d7VwyAH9d3BkDyNgAesZxvqIdm55npQc6S9mU3FExinMAQVlIkz0eA==", 233 | "dev": true, 234 | "requires": { 235 | "@hapi/hoek": "8.x.x", 236 | "mime-db": "1.x.x" 237 | } 238 | }, 239 | "@hapi/nigel": { 240 | "version": "3.1.1", 241 | "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-3.1.1.tgz", 242 | "integrity": "sha512-R9YWx4S8yu0gcCBrMUDCiEFm1SQT895dMlYoeNBp8I6YhF1BFF1iYPueKA2Kkp9BvyHdjmvrxCOns7GMmpl+Fw==", 243 | "dev": true, 244 | "requires": { 245 | "@hapi/hoek": "8.x.x", 246 | "@hapi/vise": "3.x.x" 247 | } 248 | }, 249 | "@hapi/pez": { 250 | "version": "4.1.1", 251 | "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-4.1.1.tgz", 252 | "integrity": "sha512-TUa2C7Xk6J69HWrm+Ad+O6dFvdVAG0BiFUYaRsmkdWjFIfwHBCaOI1dWT/juNukSb39Lj6/mDVyjN+H4nKB3xg==", 253 | "dev": true, 254 | "requires": { 255 | "@hapi/b64": "4.x.x", 256 | "@hapi/boom": "7.x.x", 257 | "@hapi/content": "4.x.x", 258 | "@hapi/hoek": "8.x.x", 259 | "@hapi/nigel": "3.x.x" 260 | } 261 | }, 262 | "@hapi/pinpoint": { 263 | "version": "1.0.2", 264 | "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-1.0.2.tgz", 265 | "integrity": "sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==", 266 | "dev": true 267 | }, 268 | "@hapi/podium": { 269 | "version": "3.4.3", 270 | "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-3.4.3.tgz", 271 | "integrity": "sha512-QJlnYLEYZWlKQ9fSOtuUcpANyoVGwT68GA9P0iQQCAetBK0fI+nbRBt58+aMixoifczWZUthuGkNjqKxgPh/CQ==", 272 | "dev": true, 273 | "requires": { 274 | "@hapi/hoek": "8.x.x", 275 | "@hapi/joi": "16.x.x" 276 | } 277 | }, 278 | "@hapi/shot": { 279 | "version": "4.1.2", 280 | "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-4.1.2.tgz", 281 | "integrity": "sha512-6LeHLjvsq/bQ0R+fhEyr7mqExRGguNTrxFZf5DyKe3CK6pNabiGgYO4JVFaRrLZ3JyuhkS0fo8iiRE2Ql2oA/A==", 282 | "dev": true, 283 | "requires": { 284 | "@hapi/hoek": "8.x.x", 285 | "@hapi/joi": "16.x.x" 286 | } 287 | }, 288 | "@hapi/somever": { 289 | "version": "2.1.1", 290 | "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-2.1.1.tgz", 291 | "integrity": "sha512-cic5Sto4KGd9B0oQSdKTokju+rYhCbdpzbMb0EBnrH5Oc1z048hY8PaZ1lx2vBD7I/XIfTQVQetBH57fU51XRA==", 292 | "dev": true, 293 | "requires": { 294 | "@hapi/bounce": "1.x.x", 295 | "@hapi/hoek": "8.x.x" 296 | } 297 | }, 298 | "@hapi/statehood": { 299 | "version": "6.1.2", 300 | "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-6.1.2.tgz", 301 | "integrity": "sha512-pYXw1x6npz/UfmtcpUhuMvdK5kuOGTKcJNfLqdNptzietK2UZH5RzNJSlv5bDHeSmordFM3kGItcuQWX2lj2nQ==", 302 | "dev": true, 303 | "requires": { 304 | "@hapi/boom": "7.x.x", 305 | "@hapi/bounce": "1.x.x", 306 | "@hapi/bourne": "1.x.x", 307 | "@hapi/cryptiles": "4.x.x", 308 | "@hapi/hoek": "8.x.x", 309 | "@hapi/iron": "5.x.x", 310 | "@hapi/joi": "16.x.x" 311 | } 312 | }, 313 | "@hapi/subtext": { 314 | "version": "6.1.2", 315 | "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-6.1.2.tgz", 316 | "integrity": "sha512-G1kqD1E2QdxpvpL26WieIyo3z0qCa/sAGSa2TJI/PYPWCR9rL0rqFvhWY774xPZ4uK1PV3TIaJcx8AruAvxclg==", 317 | "dev": true, 318 | "requires": { 319 | "@hapi/boom": "7.x.x", 320 | "@hapi/bourne": "1.x.x", 321 | "@hapi/content": "4.x.x", 322 | "@hapi/file": "1.x.x", 323 | "@hapi/hoek": "8.x.x", 324 | "@hapi/pez": "4.x.x", 325 | "@hapi/wreck": "15.x.x" 326 | } 327 | }, 328 | "@hapi/teamwork": { 329 | "version": "3.3.1", 330 | "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-3.3.1.tgz", 331 | "integrity": "sha512-61tiqWCYvMKP7fCTXy0M4VE6uNIwA0qvgFoiDubgfj7uqJ0fdHJFQNnVPGrxhLWlwz0uBPWrQlBH7r8y9vFITQ==", 332 | "dev": true 333 | }, 334 | "@hapi/topo": { 335 | "version": "3.1.6", 336 | "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", 337 | "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", 338 | "dev": true, 339 | "requires": { 340 | "@hapi/hoek": "^8.3.0" 341 | } 342 | }, 343 | "@hapi/vise": { 344 | "version": "3.1.1", 345 | "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-3.1.1.tgz", 346 | "integrity": "sha512-OXarbiCSadvtg+bSdVPqu31Z1JoBL+FwNYz3cYoBKQ5xq1/Cr4A3IkGpAZbAuxU5y4NL5pZFZG3d2a3ZGm/dOQ==", 347 | "dev": true, 348 | "requires": { 349 | "@hapi/hoek": "8.x.x" 350 | } 351 | }, 352 | "@hapi/wreck": { 353 | "version": "15.1.0", 354 | "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-15.1.0.tgz", 355 | "integrity": "sha512-tQczYRTTeYBmvhsek/D49En/5khcShaBEmzrAaDjMrFXKJRuF8xA8+tlq1ETLBFwGd6Do6g2OC74rt11kzawzg==", 356 | "dev": true, 357 | "requires": { 358 | "@hapi/boom": "7.x.x", 359 | "@hapi/bourne": "1.x.x", 360 | "@hapi/hoek": "8.x.x" 361 | } 362 | }, 363 | "@sindresorhus/is": { 364 | "version": "0.14.0", 365 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", 366 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", 367 | "dev": true 368 | }, 369 | "@szmarczak/http-timer": { 370 | "version": "1.1.2", 371 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", 372 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", 373 | "dev": true, 374 | "requires": { 375 | "defer-to-connect": "^1.0.1" 376 | } 377 | }, 378 | "@types/aws-lambda": { 379 | "version": "8.10.35", 380 | "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.35.tgz", 381 | "integrity": "sha512-2z7tI/cRpwQwx9eFFhnBgyJppQEkL3YZ+4PadhNcDuB5y+BmMY25h1N16WufdtMzOVK2WQYrLUGt6ajTzVBJUQ==", 382 | "optional": true 383 | }, 384 | "@types/bson": { 385 | "version": "4.0.5", 386 | "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz", 387 | "integrity": "sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==", 388 | "requires": { 389 | "@types/node": "*" 390 | } 391 | }, 392 | "@types/mongodb": { 393 | "version": "3.6.20", 394 | "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz", 395 | "integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==", 396 | "requires": { 397 | "@types/bson": "*", 398 | "@types/node": "*" 399 | } 400 | }, 401 | "@types/node": { 402 | "version": "16.4.13", 403 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.13.tgz", 404 | "integrity": "sha512-bLL69sKtd25w7p1nvg9pigE4gtKVpGTPojBFLMkGHXuUgap2sLqQt2qUnqmVCDfzGUL0DRNZP+1prIZJbMeAXg==" 405 | }, 406 | "accepts": { 407 | "version": "1.3.7", 408 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 409 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 410 | "requires": { 411 | "mime-types": "~2.1.24", 412 | "negotiator": "0.6.2" 413 | } 414 | }, 415 | "ansi-align": { 416 | "version": "3.0.0", 417 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", 418 | "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", 419 | "dev": true, 420 | "requires": { 421 | "string-width": "^3.0.0" 422 | } 423 | }, 424 | "ansi-regex": { 425 | "version": "4.1.0", 426 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 427 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 428 | "dev": true 429 | }, 430 | "ansi-styles": { 431 | "version": "3.2.1", 432 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 433 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 434 | "dev": true, 435 | "requires": { 436 | "color-convert": "^1.9.0" 437 | } 438 | }, 439 | "array-flatten": { 440 | "version": "1.1.1", 441 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 442 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 443 | }, 444 | "bl": { 445 | "version": "2.2.1", 446 | "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", 447 | "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", 448 | "requires": { 449 | "readable-stream": "^2.3.5", 450 | "safe-buffer": "^5.1.1" 451 | } 452 | }, 453 | "bluebird": { 454 | "version": "3.5.1", 455 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", 456 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" 457 | }, 458 | "body-parser": { 459 | "version": "1.19.0", 460 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 461 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 462 | "requires": { 463 | "bytes": "3.1.0", 464 | "content-type": "~1.0.4", 465 | "debug": "2.6.9", 466 | "depd": "~1.1.2", 467 | "http-errors": "1.7.2", 468 | "iconv-lite": "0.4.24", 469 | "on-finished": "~2.3.0", 470 | "qs": "6.7.0", 471 | "raw-body": "2.4.0", 472 | "type-is": "~1.6.17" 473 | } 474 | }, 475 | "boxen": { 476 | "version": "3.2.0", 477 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz", 478 | "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==", 479 | "dev": true, 480 | "requires": { 481 | "ansi-align": "^3.0.0", 482 | "camelcase": "^5.3.1", 483 | "chalk": "^2.4.2", 484 | "cli-boxes": "^2.2.0", 485 | "string-width": "^3.0.0", 486 | "term-size": "^1.2.0", 487 | "type-fest": "^0.3.0", 488 | "widest-line": "^2.0.0" 489 | } 490 | }, 491 | "bson": { 492 | "version": "1.1.6", 493 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", 494 | "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==" 495 | }, 496 | "buffer-equal-constant-time": { 497 | "version": "1.0.1", 498 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 499 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", 500 | "dev": true 501 | }, 502 | "bytes": { 503 | "version": "3.1.0", 504 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 505 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 506 | }, 507 | "cacheable-request": { 508 | "version": "6.1.0", 509 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", 510 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", 511 | "dev": true, 512 | "requires": { 513 | "clone-response": "^1.0.2", 514 | "get-stream": "^5.1.0", 515 | "http-cache-semantics": "^4.0.0", 516 | "keyv": "^3.0.0", 517 | "lowercase-keys": "^2.0.0", 518 | "normalize-url": "^4.1.0", 519 | "responselike": "^1.0.2" 520 | }, 521 | "dependencies": { 522 | "get-stream": { 523 | "version": "5.1.0", 524 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", 525 | "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", 526 | "dev": true, 527 | "requires": { 528 | "pump": "^3.0.0" 529 | } 530 | }, 531 | "lowercase-keys": { 532 | "version": "2.0.0", 533 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 534 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 535 | "dev": true 536 | } 537 | } 538 | }, 539 | "camelcase": { 540 | "version": "5.3.1", 541 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 542 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 543 | "dev": true 544 | }, 545 | "chalk": { 546 | "version": "2.4.2", 547 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 548 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 549 | "dev": true, 550 | "requires": { 551 | "ansi-styles": "^3.2.1", 552 | "escape-string-regexp": "^1.0.5", 553 | "supports-color": "^5.3.0" 554 | } 555 | }, 556 | "ci-info": { 557 | "version": "2.0.0", 558 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 559 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", 560 | "dev": true 561 | }, 562 | "cli-boxes": { 563 | "version": "2.2.0", 564 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", 565 | "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", 566 | "dev": true 567 | }, 568 | "clone-response": { 569 | "version": "1.0.2", 570 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 571 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 572 | "dev": true, 573 | "requires": { 574 | "mimic-response": "^1.0.0" 575 | } 576 | }, 577 | "color-convert": { 578 | "version": "1.9.3", 579 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 580 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 581 | "dev": true, 582 | "requires": { 583 | "color-name": "1.1.3" 584 | } 585 | }, 586 | "color-name": { 587 | "version": "1.1.3", 588 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 589 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 590 | "dev": true 591 | }, 592 | "configstore": { 593 | "version": "4.0.0", 594 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", 595 | "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", 596 | "dev": true, 597 | "requires": { 598 | "dot-prop": "^4.1.0", 599 | "graceful-fs": "^4.1.2", 600 | "make-dir": "^1.0.0", 601 | "unique-string": "^1.0.0", 602 | "write-file-atomic": "^2.0.0", 603 | "xdg-basedir": "^3.0.0" 604 | } 605 | }, 606 | "content-disposition": { 607 | "version": "0.5.3", 608 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 609 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 610 | "requires": { 611 | "safe-buffer": "5.1.2" 612 | }, 613 | "dependencies": { 614 | "safe-buffer": { 615 | "version": "5.1.2", 616 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 617 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 618 | } 619 | } 620 | }, 621 | "content-type": { 622 | "version": "1.0.4", 623 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 624 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 625 | }, 626 | "cookie": { 627 | "version": "0.4.0", 628 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 629 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 630 | }, 631 | "cookie-signature": { 632 | "version": "1.0.6", 633 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 634 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 635 | }, 636 | "core-util-is": { 637 | "version": "1.0.2", 638 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 639 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 640 | }, 641 | "cross-spawn": { 642 | "version": "5.1.0", 643 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 644 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 645 | "dev": true, 646 | "requires": { 647 | "lru-cache": "^4.0.1", 648 | "shebang-command": "^1.2.0", 649 | "which": "^1.2.9" 650 | } 651 | }, 652 | "crypto-random-string": { 653 | "version": "1.0.0", 654 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", 655 | "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", 656 | "dev": true 657 | }, 658 | "cuid": { 659 | "version": "2.1.6", 660 | "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.6.tgz", 661 | "integrity": "sha512-ZFp7PS6cSYMJNch9fc3tyHdE4T8TDo3Y5qAxb0KSA9mpiYDo7z9ql1CznFuuzxea9STVIDy0tJWm2lYiX2ZU1Q==", 662 | "dev": true 663 | }, 664 | "debug": { 665 | "version": "2.6.9", 666 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 667 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 668 | "requires": { 669 | "ms": "2.0.0" 670 | }, 671 | "dependencies": { 672 | "ms": { 673 | "version": "2.0.0", 674 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 675 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 676 | } 677 | } 678 | }, 679 | "decompress-response": { 680 | "version": "3.3.0", 681 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 682 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", 683 | "dev": true, 684 | "requires": { 685 | "mimic-response": "^1.0.0" 686 | } 687 | }, 688 | "deep-extend": { 689 | "version": "0.6.0", 690 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 691 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 692 | "dev": true 693 | }, 694 | "defer-to-connect": { 695 | "version": "1.1.0", 696 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.0.tgz", 697 | "integrity": "sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ==", 698 | "dev": true 699 | }, 700 | "define-properties": { 701 | "version": "1.1.3", 702 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 703 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 704 | "dev": true, 705 | "requires": { 706 | "object-keys": "^1.0.12" 707 | } 708 | }, 709 | "denque": { 710 | "version": "1.5.0", 711 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", 712 | "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==" 713 | }, 714 | "depd": { 715 | "version": "1.1.2", 716 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 717 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 718 | }, 719 | "destroy": { 720 | "version": "1.0.4", 721 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 722 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 723 | }, 724 | "dot-prop": { 725 | "version": "4.2.1", 726 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", 727 | "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", 728 | "dev": true, 729 | "requires": { 730 | "is-obj": "^1.0.0" 731 | } 732 | }, 733 | "dotenv": { 734 | "version": "4.0.0", 735 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", 736 | "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", 737 | "dev": true 738 | }, 739 | "dotenv-expand": { 740 | "version": "4.2.0", 741 | "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", 742 | "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=", 743 | "dev": true 744 | }, 745 | "duplexer3": { 746 | "version": "0.1.4", 747 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 748 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", 749 | "dev": true 750 | }, 751 | "ecdsa-sig-formatter": { 752 | "version": "1.0.11", 753 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 754 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 755 | "dev": true, 756 | "requires": { 757 | "safe-buffer": "^5.0.1" 758 | } 759 | }, 760 | "ee-first": { 761 | "version": "1.1.1", 762 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 763 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 764 | }, 765 | "emoji-regex": { 766 | "version": "7.0.3", 767 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 768 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 769 | "dev": true 770 | }, 771 | "encodeurl": { 772 | "version": "1.0.2", 773 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 774 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 775 | }, 776 | "end-of-stream": { 777 | "version": "1.4.4", 778 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 779 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 780 | "dev": true, 781 | "requires": { 782 | "once": "^1.4.0" 783 | } 784 | }, 785 | "es-abstract": { 786 | "version": "1.16.0", 787 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", 788 | "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", 789 | "dev": true, 790 | "requires": { 791 | "es-to-primitive": "^1.2.0", 792 | "function-bind": "^1.1.1", 793 | "has": "^1.0.3", 794 | "has-symbols": "^1.0.0", 795 | "is-callable": "^1.1.4", 796 | "is-regex": "^1.0.4", 797 | "object-inspect": "^1.6.0", 798 | "object-keys": "^1.1.1", 799 | "string.prototype.trimleft": "^2.1.0", 800 | "string.prototype.trimright": "^2.1.0" 801 | } 802 | }, 803 | "es-to-primitive": { 804 | "version": "1.2.1", 805 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 806 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 807 | "dev": true, 808 | "requires": { 809 | "is-callable": "^1.1.4", 810 | "is-date-object": "^1.0.1", 811 | "is-symbol": "^1.0.2" 812 | } 813 | }, 814 | "escape-html": { 815 | "version": "1.0.3", 816 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 817 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 818 | }, 819 | "escape-string-regexp": { 820 | "version": "1.0.5", 821 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 822 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 823 | "dev": true 824 | }, 825 | "etag": { 826 | "version": "1.8.1", 827 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 828 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 829 | }, 830 | "event-lite": { 831 | "version": "0.1.2", 832 | "resolved": "https://registry.npmjs.org/event-lite/-/event-lite-0.1.2.tgz", 833 | "integrity": "sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g==", 834 | "dev": true 835 | }, 836 | "execa": { 837 | "version": "0.7.0", 838 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 839 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 840 | "dev": true, 841 | "requires": { 842 | "cross-spawn": "^5.0.1", 843 | "get-stream": "^3.0.0", 844 | "is-stream": "^1.1.0", 845 | "npm-run-path": "^2.0.0", 846 | "p-finally": "^1.0.0", 847 | "signal-exit": "^3.0.0", 848 | "strip-eof": "^1.0.0" 849 | } 850 | }, 851 | "express": { 852 | "version": "4.17.1", 853 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 854 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 855 | "requires": { 856 | "accepts": "~1.3.7", 857 | "array-flatten": "1.1.1", 858 | "body-parser": "1.19.0", 859 | "content-disposition": "0.5.3", 860 | "content-type": "~1.0.4", 861 | "cookie": "0.4.0", 862 | "cookie-signature": "1.0.6", 863 | "debug": "2.6.9", 864 | "depd": "~1.1.2", 865 | "encodeurl": "~1.0.2", 866 | "escape-html": "~1.0.3", 867 | "etag": "~1.8.1", 868 | "finalhandler": "~1.1.2", 869 | "fresh": "0.5.2", 870 | "merge-descriptors": "1.0.1", 871 | "methods": "~1.1.2", 872 | "on-finished": "~2.3.0", 873 | "parseurl": "~1.3.3", 874 | "path-to-regexp": "0.1.7", 875 | "proxy-addr": "~2.0.5", 876 | "qs": "6.7.0", 877 | "range-parser": "~1.2.1", 878 | "safe-buffer": "5.1.2", 879 | "send": "0.17.1", 880 | "serve-static": "1.14.1", 881 | "setprototypeof": "1.1.1", 882 | "statuses": "~1.5.0", 883 | "type-is": "~1.6.18", 884 | "utils-merge": "1.0.1", 885 | "vary": "~1.1.2" 886 | }, 887 | "dependencies": { 888 | "safe-buffer": { 889 | "version": "5.1.2", 890 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 891 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 892 | } 893 | } 894 | }, 895 | "finalhandler": { 896 | "version": "1.1.2", 897 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 898 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 899 | "requires": { 900 | "debug": "2.6.9", 901 | "encodeurl": "~1.0.2", 902 | "escape-html": "~1.0.3", 903 | "on-finished": "~2.3.0", 904 | "parseurl": "~1.3.3", 905 | "statuses": "~1.5.0", 906 | "unpipe": "~1.0.0" 907 | } 908 | }, 909 | "forwarded": { 910 | "version": "0.1.2", 911 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 912 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 913 | }, 914 | "fresh": { 915 | "version": "0.5.2", 916 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 917 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 918 | }, 919 | "function-bind": { 920 | "version": "1.1.1", 921 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 922 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 923 | "dev": true 924 | }, 925 | "get-stream": { 926 | "version": "3.0.0", 927 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 928 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 929 | "dev": true 930 | }, 931 | "global-dirs": { 932 | "version": "0.1.1", 933 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", 934 | "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", 935 | "dev": true, 936 | "requires": { 937 | "ini": "^1.3.4" 938 | } 939 | }, 940 | "got": { 941 | "version": "9.6.0", 942 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", 943 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", 944 | "dev": true, 945 | "requires": { 946 | "@sindresorhus/is": "^0.14.0", 947 | "@szmarczak/http-timer": "^1.1.2", 948 | "cacheable-request": "^6.0.0", 949 | "decompress-response": "^3.3.0", 950 | "duplexer3": "^0.1.4", 951 | "get-stream": "^4.1.0", 952 | "lowercase-keys": "^1.0.1", 953 | "mimic-response": "^1.0.1", 954 | "p-cancelable": "^1.0.0", 955 | "to-readable-stream": "^1.0.0", 956 | "url-parse-lax": "^3.0.0" 957 | }, 958 | "dependencies": { 959 | "get-stream": { 960 | "version": "4.1.0", 961 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 962 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 963 | "dev": true, 964 | "requires": { 965 | "pump": "^3.0.0" 966 | } 967 | } 968 | } 969 | }, 970 | "graceful-fs": { 971 | "version": "4.2.3", 972 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", 973 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", 974 | "dev": true 975 | }, 976 | "hapi-plugin-websocket": { 977 | "version": "2.3.4", 978 | "resolved": "https://registry.npmjs.org/hapi-plugin-websocket/-/hapi-plugin-websocket-2.3.4.tgz", 979 | "integrity": "sha512-QsoTR6NdCzhVnQe4denz0X+2QbhP44guPhxENqU/EPNXERIrfCV6h31eedZR176nMEfu3BSegLhqfQ6jwAv2Rg==", 980 | "dev": true, 981 | "requires": { 982 | "@hapi/boom": "9.1.2", 983 | "@hapi/hoek": "9.2.0", 984 | "urijs": "1.19.6", 985 | "websocket-framed": "1.2.5", 986 | "ws": "7.5.1" 987 | }, 988 | "dependencies": { 989 | "@hapi/boom": { 990 | "version": "9.1.2", 991 | "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.2.tgz", 992 | "integrity": "sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q==", 993 | "dev": true, 994 | "requires": { 995 | "@hapi/hoek": "9.x.x" 996 | } 997 | }, 998 | "@hapi/hoek": { 999 | "version": "9.2.0", 1000 | "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", 1001 | "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==", 1002 | "dev": true 1003 | }, 1004 | "bignumber.js": { 1005 | "version": "9.0.1", 1006 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", 1007 | "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", 1008 | "dev": true 1009 | }, 1010 | "cbor": { 1011 | "version": "7.0.5", 1012 | "resolved": "https://registry.npmjs.org/cbor/-/cbor-7.0.5.tgz", 1013 | "integrity": "sha512-0aaAPgW92lLmypb9iCd22k7tSD1FbF6dps8VQzmIBKY6ych2gO09b2vo/SbaLTmezJuB8Kh88Rvpl/Uq52mNZg==", 1014 | "dev": true, 1015 | "requires": { 1016 | "@cto.af/textdecoder": "^0.0.0", 1017 | "nofilter": "^2.0.3" 1018 | } 1019 | }, 1020 | "encodr": { 1021 | "version": "1.3.0", 1022 | "resolved": "https://registry.npmjs.org/encodr/-/encodr-1.3.0.tgz", 1023 | "integrity": "sha512-yPTpvcJdVDqBA6hde6K/S1Q8zO3npKDwKl7oHLJbKLs0WVoc5w8wHApzw2qu8yPG8idEGYh0cXtk0D53O7gV8w==", 1024 | "dev": true, 1025 | "requires": { 1026 | "bignumber.js": "9.0.1", 1027 | "cbor": "7.0.5", 1028 | "msgpack-lite": "0.1.26", 1029 | "node-inspect-extracted": "1.0.7", 1030 | "utf8": "3.0.0" 1031 | } 1032 | }, 1033 | "eventemitter3": { 1034 | "version": "4.0.7", 1035 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 1036 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 1037 | "dev": true 1038 | }, 1039 | "nofilter": { 1040 | "version": "2.0.3", 1041 | "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-2.0.3.tgz", 1042 | "integrity": "sha512-FbuXC+lK+GU2+63D1kC1ETiZo+Z7SIi7B+mxKTCH1byrh6WFvfBCN/wpherFz0a0bjGd7EKTst/cz0yLeNngug==", 1043 | "dev": true, 1044 | "requires": { 1045 | "@cto.af/textdecoder": "^0.0.0" 1046 | } 1047 | }, 1048 | "urijs": { 1049 | "version": "1.19.6", 1050 | "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.6.tgz", 1051 | "integrity": "sha512-eSXsXZ2jLvGWeLYlQA3Gh36BcjF+0amo92+wHPyN1mdR8Nxf75fuEuYTd9c0a+m/vhCjRK0ESlE9YNLW+E1VEw==", 1052 | "dev": true 1053 | }, 1054 | "websocket-framed": { 1055 | "version": "1.2.5", 1056 | "resolved": "https://registry.npmjs.org/websocket-framed/-/websocket-framed-1.2.5.tgz", 1057 | "integrity": "sha512-iqz8MvWXGcucx5VzRMyfgM6iCR0QuubGRakJJdIJtz5zXzm4hbsqxnXXgcqqY5ZoA2P+6xghbfn9u5CFZPW3lw==", 1058 | "dev": true, 1059 | "requires": { 1060 | "encodr": "1.3.0", 1061 | "eventemitter3": "4.0.7" 1062 | } 1063 | }, 1064 | "ws": { 1065 | "version": "7.5.1", 1066 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz", 1067 | "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==", 1068 | "dev": true 1069 | } 1070 | } 1071 | }, 1072 | "has": { 1073 | "version": "1.0.3", 1074 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1075 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1076 | "dev": true, 1077 | "requires": { 1078 | "function-bind": "^1.1.1" 1079 | } 1080 | }, 1081 | "has-flag": { 1082 | "version": "3.0.0", 1083 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1084 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1085 | "dev": true 1086 | }, 1087 | "has-symbols": { 1088 | "version": "1.0.0", 1089 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 1090 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 1091 | "dev": true 1092 | }, 1093 | "has-yarn": { 1094 | "version": "2.1.0", 1095 | "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", 1096 | "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", 1097 | "dev": true 1098 | }, 1099 | "http-cache-semantics": { 1100 | "version": "4.0.3", 1101 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", 1102 | "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==", 1103 | "dev": true 1104 | }, 1105 | "http-errors": { 1106 | "version": "1.7.2", 1107 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 1108 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 1109 | "requires": { 1110 | "depd": "~1.1.2", 1111 | "inherits": "2.0.3", 1112 | "setprototypeof": "1.1.1", 1113 | "statuses": ">= 1.5.0 < 2", 1114 | "toidentifier": "1.0.0" 1115 | } 1116 | }, 1117 | "iconv-lite": { 1118 | "version": "0.4.24", 1119 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1120 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1121 | "requires": { 1122 | "safer-buffer": ">= 2.1.2 < 3" 1123 | } 1124 | }, 1125 | "ieee754": { 1126 | "version": "1.1.13", 1127 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 1128 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", 1129 | "dev": true 1130 | }, 1131 | "import-lazy": { 1132 | "version": "2.1.0", 1133 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 1134 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", 1135 | "dev": true 1136 | }, 1137 | "imurmurhash": { 1138 | "version": "0.1.4", 1139 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1140 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1141 | "dev": true 1142 | }, 1143 | "inherits": { 1144 | "version": "2.0.3", 1145 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1146 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1147 | }, 1148 | "ini": { 1149 | "version": "1.3.8", 1150 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1151 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1152 | "dev": true 1153 | }, 1154 | "int64-buffer": { 1155 | "version": "0.1.10", 1156 | "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", 1157 | "integrity": "sha1-J3siiofZWtd30HwTgyAiQGpHNCM=", 1158 | "dev": true 1159 | }, 1160 | "ipaddr.js": { 1161 | "version": "1.9.0", 1162 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", 1163 | "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" 1164 | }, 1165 | "is-callable": { 1166 | "version": "1.1.4", 1167 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 1168 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 1169 | "dev": true 1170 | }, 1171 | "is-ci": { 1172 | "version": "2.0.0", 1173 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", 1174 | "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", 1175 | "dev": true, 1176 | "requires": { 1177 | "ci-info": "^2.0.0" 1178 | } 1179 | }, 1180 | "is-date-object": { 1181 | "version": "1.0.1", 1182 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1183 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1184 | "dev": true 1185 | }, 1186 | "is-fullwidth-code-point": { 1187 | "version": "2.0.0", 1188 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1189 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1190 | "dev": true 1191 | }, 1192 | "is-installed-globally": { 1193 | "version": "0.1.0", 1194 | "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", 1195 | "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", 1196 | "dev": true, 1197 | "requires": { 1198 | "global-dirs": "^0.1.0", 1199 | "is-path-inside": "^1.0.0" 1200 | } 1201 | }, 1202 | "is-npm": { 1203 | "version": "3.0.0", 1204 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz", 1205 | "integrity": "sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==", 1206 | "dev": true 1207 | }, 1208 | "is-obj": { 1209 | "version": "1.0.1", 1210 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1211 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 1212 | "dev": true 1213 | }, 1214 | "is-path-inside": { 1215 | "version": "1.0.1", 1216 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", 1217 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", 1218 | "dev": true, 1219 | "requires": { 1220 | "path-is-inside": "^1.0.1" 1221 | } 1222 | }, 1223 | "is-regex": { 1224 | "version": "1.0.4", 1225 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1226 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1227 | "dev": true, 1228 | "requires": { 1229 | "has": "^1.0.1" 1230 | } 1231 | }, 1232 | "is-stream": { 1233 | "version": "1.1.0", 1234 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1235 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1236 | "dev": true 1237 | }, 1238 | "is-symbol": { 1239 | "version": "1.0.2", 1240 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1241 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1242 | "dev": true, 1243 | "requires": { 1244 | "has-symbols": "^1.0.0" 1245 | } 1246 | }, 1247 | "is-yarn-global": { 1248 | "version": "0.3.0", 1249 | "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", 1250 | "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", 1251 | "dev": true 1252 | }, 1253 | "isarray": { 1254 | "version": "1.0.0", 1255 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1256 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1257 | }, 1258 | "isexe": { 1259 | "version": "2.0.0", 1260 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1261 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1262 | "dev": true 1263 | }, 1264 | "js-string-escape": { 1265 | "version": "1.0.1", 1266 | "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", 1267 | "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", 1268 | "dev": true 1269 | }, 1270 | "json-buffer": { 1271 | "version": "3.0.0", 1272 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 1273 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", 1274 | "dev": true 1275 | }, 1276 | "jsonpath-plus": { 1277 | "version": "1.1.0", 1278 | "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-1.1.0.tgz", 1279 | "integrity": "sha512-ydqTBOuLcFCUr9e7AxJlKCFgxzEQ03HjnIim0hJSdk2NxD8MOsaMOrRgP6XWEm5q3VuDY5+cRT1DM9vLlGo/qA==", 1280 | "dev": true 1281 | }, 1282 | "jsonwebtoken": { 1283 | "version": "8.5.1", 1284 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 1285 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 1286 | "dev": true, 1287 | "requires": { 1288 | "jws": "^3.2.2", 1289 | "lodash.includes": "^4.3.0", 1290 | "lodash.isboolean": "^3.0.3", 1291 | "lodash.isinteger": "^4.0.4", 1292 | "lodash.isnumber": "^3.0.3", 1293 | "lodash.isplainobject": "^4.0.6", 1294 | "lodash.isstring": "^4.0.1", 1295 | "lodash.once": "^4.0.0", 1296 | "ms": "^2.1.1", 1297 | "semver": "^5.6.0" 1298 | }, 1299 | "dependencies": { 1300 | "semver": { 1301 | "version": "5.7.1", 1302 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1303 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1304 | "dev": true 1305 | } 1306 | } 1307 | }, 1308 | "jwa": { 1309 | "version": "1.4.1", 1310 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 1311 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 1312 | "dev": true, 1313 | "requires": { 1314 | "buffer-equal-constant-time": "1.0.1", 1315 | "ecdsa-sig-formatter": "1.0.11", 1316 | "safe-buffer": "^5.0.1" 1317 | } 1318 | }, 1319 | "jws": { 1320 | "version": "3.2.2", 1321 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 1322 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 1323 | "dev": true, 1324 | "requires": { 1325 | "jwa": "^1.4.1", 1326 | "safe-buffer": "^5.0.1" 1327 | } 1328 | }, 1329 | "kareem": { 1330 | "version": "2.3.2", 1331 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", 1332 | "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" 1333 | }, 1334 | "keyv": { 1335 | "version": "3.1.0", 1336 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 1337 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", 1338 | "dev": true, 1339 | "requires": { 1340 | "json-buffer": "3.0.0" 1341 | } 1342 | }, 1343 | "latest-version": { 1344 | "version": "5.1.0", 1345 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", 1346 | "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", 1347 | "dev": true, 1348 | "requires": { 1349 | "package-json": "^6.3.0" 1350 | } 1351 | }, 1352 | "lodash.includes": { 1353 | "version": "4.3.0", 1354 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 1355 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", 1356 | "dev": true 1357 | }, 1358 | "lodash.isboolean": { 1359 | "version": "3.0.3", 1360 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 1361 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", 1362 | "dev": true 1363 | }, 1364 | "lodash.isinteger": { 1365 | "version": "4.0.4", 1366 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 1367 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", 1368 | "dev": true 1369 | }, 1370 | "lodash.isnumber": { 1371 | "version": "3.0.3", 1372 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 1373 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", 1374 | "dev": true 1375 | }, 1376 | "lodash.isplainobject": { 1377 | "version": "4.0.6", 1378 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1379 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", 1380 | "dev": true 1381 | }, 1382 | "lodash.isstring": { 1383 | "version": "4.0.1", 1384 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1385 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", 1386 | "dev": true 1387 | }, 1388 | "lodash.once": { 1389 | "version": "4.1.1", 1390 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 1391 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", 1392 | "dev": true 1393 | }, 1394 | "lowercase-keys": { 1395 | "version": "1.0.1", 1396 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 1397 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", 1398 | "dev": true 1399 | }, 1400 | "lru-cache": { 1401 | "version": "4.1.5", 1402 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 1403 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 1404 | "dev": true, 1405 | "requires": { 1406 | "pseudomap": "^1.0.2", 1407 | "yallist": "^2.1.2" 1408 | } 1409 | }, 1410 | "luxon": { 1411 | "version": "1.21.1", 1412 | "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.21.1.tgz", 1413 | "integrity": "sha512-3zxaKX7mj7eA80TU0sm4CfNEtiUZ2QXGjMc80rfG4d1dOnnOOWz63U9j4nYR7+1w716DYtWfdOeVhDXYlH+D4w==", 1414 | "dev": true 1415 | }, 1416 | "make-dir": { 1417 | "version": "1.3.0", 1418 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 1419 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 1420 | "dev": true, 1421 | "requires": { 1422 | "pify": "^3.0.0" 1423 | } 1424 | }, 1425 | "media-typer": { 1426 | "version": "0.3.0", 1427 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1428 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1429 | }, 1430 | "memory-pager": { 1431 | "version": "1.5.0", 1432 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 1433 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 1434 | "optional": true 1435 | }, 1436 | "merge-descriptors": { 1437 | "version": "1.0.1", 1438 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1439 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1440 | }, 1441 | "methods": { 1442 | "version": "1.1.2", 1443 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1444 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1445 | }, 1446 | "mime": { 1447 | "version": "1.6.0", 1448 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1449 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1450 | }, 1451 | "mime-db": { 1452 | "version": "1.42.0", 1453 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", 1454 | "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", 1455 | "dev": true 1456 | }, 1457 | "mime-types": { 1458 | "version": "2.1.24", 1459 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", 1460 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", 1461 | "requires": { 1462 | "mime-db": "1.40.0" 1463 | }, 1464 | "dependencies": { 1465 | "mime-db": { 1466 | "version": "1.40.0", 1467 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", 1468 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" 1469 | } 1470 | } 1471 | }, 1472 | "mimic-response": { 1473 | "version": "1.0.1", 1474 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 1475 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 1476 | "dev": true 1477 | }, 1478 | "minimist": { 1479 | "version": "1.2.5", 1480 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1481 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1482 | "dev": true 1483 | }, 1484 | "mongodb": { 1485 | "version": "3.6.11", 1486 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.11.tgz", 1487 | "integrity": "sha512-4Y4lTFHDHZZdgMaHmojtNAlqkvddX2QQBEN0K//GzxhGwlI9tZ9R0vhbjr1Decw+TF7qK0ZLjQT292XgHRRQgw==", 1488 | "requires": { 1489 | "bl": "^2.2.1", 1490 | "bson": "^1.1.4", 1491 | "denque": "^1.4.1", 1492 | "optional-require": "^1.0.3", 1493 | "safe-buffer": "^5.1.2", 1494 | "saslprep": "^1.0.0" 1495 | } 1496 | }, 1497 | "mongoose": { 1498 | "version": "5.13.6", 1499 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.6.tgz", 1500 | "integrity": "sha512-IyswXkgxnnl+rpiU+lzXl5/BOEle2llDfuPBrN6K+Eb5vS6a/HN/A9zrdtOcSTb0tVoCZ0QN5PfDSwa/EEGBuQ==", 1501 | "requires": { 1502 | "@types/mongodb": "^3.5.27", 1503 | "bson": "^1.1.4", 1504 | "kareem": "2.3.2", 1505 | "mongodb": "3.6.11", 1506 | "mongoose-legacy-pluralize": "1.0.2", 1507 | "mpath": "0.8.3", 1508 | "mquery": "3.2.5", 1509 | "ms": "2.1.2", 1510 | "optional-require": "1.0.x", 1511 | "regexp-clone": "1.0.0", 1512 | "safe-buffer": "5.2.1", 1513 | "sift": "13.5.2", 1514 | "sliced": "1.0.1" 1515 | }, 1516 | "dependencies": { 1517 | "safe-buffer": { 1518 | "version": "5.2.1", 1519 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1520 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1521 | } 1522 | } 1523 | }, 1524 | "mongoose-legacy-pluralize": { 1525 | "version": "1.0.2", 1526 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", 1527 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" 1528 | }, 1529 | "mpath": { 1530 | "version": "0.8.3", 1531 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.3.tgz", 1532 | "integrity": "sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA==" 1533 | }, 1534 | "mquery": { 1535 | "version": "3.2.5", 1536 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz", 1537 | "integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==", 1538 | "requires": { 1539 | "bluebird": "3.5.1", 1540 | "debug": "3.1.0", 1541 | "regexp-clone": "^1.0.0", 1542 | "safe-buffer": "5.1.2", 1543 | "sliced": "1.0.1" 1544 | }, 1545 | "dependencies": { 1546 | "debug": { 1547 | "version": "3.1.0", 1548 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1549 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1550 | "requires": { 1551 | "ms": "2.0.0" 1552 | } 1553 | }, 1554 | "ms": { 1555 | "version": "2.0.0", 1556 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1557 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1558 | }, 1559 | "safe-buffer": { 1560 | "version": "5.1.2", 1561 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1562 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1563 | } 1564 | } 1565 | }, 1566 | "ms": { 1567 | "version": "2.1.2", 1568 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1569 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1570 | }, 1571 | "msgpack-lite": { 1572 | "version": "0.1.26", 1573 | "resolved": "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz", 1574 | "integrity": "sha1-3TxQsm8FnyXn7e42REGDWOKprYk=", 1575 | "dev": true, 1576 | "requires": { 1577 | "event-lite": "^0.1.1", 1578 | "ieee754": "^1.1.8", 1579 | "int64-buffer": "^0.1.9", 1580 | "isarray": "^1.0.0" 1581 | } 1582 | }, 1583 | "negotiator": { 1584 | "version": "0.6.2", 1585 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1586 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 1587 | }, 1588 | "node-inspect-extracted": { 1589 | "version": "1.0.7", 1590 | "resolved": "https://registry.npmjs.org/node-inspect-extracted/-/node-inspect-extracted-1.0.7.tgz", 1591 | "integrity": "sha512-FDdIQtuAVzkmV8Qh/Z0MdUvj4p6rRHYl28PkwnlRzwXNGFMd5leouoLtqaAqvtG0RG0jj0/RzYOznNe5XZw1lg==", 1592 | "dev": true 1593 | }, 1594 | "normalize-url": { 1595 | "version": "4.5.1", 1596 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", 1597 | "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", 1598 | "dev": true 1599 | }, 1600 | "npm-run-path": { 1601 | "version": "2.0.2", 1602 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 1603 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 1604 | "dev": true, 1605 | "requires": { 1606 | "path-key": "^2.0.0" 1607 | } 1608 | }, 1609 | "object-inspect": { 1610 | "version": "1.6.0", 1611 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", 1612 | "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", 1613 | "dev": true 1614 | }, 1615 | "object-keys": { 1616 | "version": "1.1.1", 1617 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1618 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1619 | "dev": true 1620 | }, 1621 | "object.fromentries": { 1622 | "version": "2.0.1", 1623 | "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", 1624 | "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", 1625 | "dev": true, 1626 | "requires": { 1627 | "define-properties": "^1.1.3", 1628 | "es-abstract": "^1.15.0", 1629 | "function-bind": "^1.1.1", 1630 | "has": "^1.0.3" 1631 | } 1632 | }, 1633 | "on-finished": { 1634 | "version": "2.3.0", 1635 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1636 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1637 | "requires": { 1638 | "ee-first": "1.1.1" 1639 | } 1640 | }, 1641 | "once": { 1642 | "version": "1.4.0", 1643 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1644 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1645 | "dev": true, 1646 | "requires": { 1647 | "wrappy": "1" 1648 | } 1649 | }, 1650 | "optional-require": { 1651 | "version": "1.0.3", 1652 | "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz", 1653 | "integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==" 1654 | }, 1655 | "p-cancelable": { 1656 | "version": "1.1.0", 1657 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", 1658 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", 1659 | "dev": true 1660 | }, 1661 | "p-finally": { 1662 | "version": "1.0.0", 1663 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 1664 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 1665 | "dev": true 1666 | }, 1667 | "package-json": { 1668 | "version": "6.5.0", 1669 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", 1670 | "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", 1671 | "dev": true, 1672 | "requires": { 1673 | "got": "^9.6.0", 1674 | "registry-auth-token": "^4.0.0", 1675 | "registry-url": "^5.0.0", 1676 | "semver": "^6.2.0" 1677 | } 1678 | }, 1679 | "parseurl": { 1680 | "version": "1.3.3", 1681 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1682 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1683 | }, 1684 | "path-is-inside": { 1685 | "version": "1.0.2", 1686 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1687 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1688 | "dev": true 1689 | }, 1690 | "path-key": { 1691 | "version": "2.0.1", 1692 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1693 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1694 | "dev": true 1695 | }, 1696 | "path-to-regexp": { 1697 | "version": "0.1.7", 1698 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1699 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1700 | }, 1701 | "pify": { 1702 | "version": "3.0.0", 1703 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1704 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1705 | "dev": true 1706 | }, 1707 | "prepend-http": { 1708 | "version": "2.0.0", 1709 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 1710 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", 1711 | "dev": true 1712 | }, 1713 | "process-nextick-args": { 1714 | "version": "2.0.1", 1715 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1716 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1717 | }, 1718 | "proxy-addr": { 1719 | "version": "2.0.5", 1720 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", 1721 | "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", 1722 | "requires": { 1723 | "forwarded": "~0.1.2", 1724 | "ipaddr.js": "1.9.0" 1725 | } 1726 | }, 1727 | "pseudomap": { 1728 | "version": "1.0.2", 1729 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1730 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 1731 | "dev": true 1732 | }, 1733 | "pump": { 1734 | "version": "3.0.0", 1735 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1736 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1737 | "dev": true, 1738 | "requires": { 1739 | "end-of-stream": "^1.1.0", 1740 | "once": "^1.3.1" 1741 | } 1742 | }, 1743 | "qs": { 1744 | "version": "6.7.0", 1745 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 1746 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 1747 | }, 1748 | "range-parser": { 1749 | "version": "1.2.1", 1750 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1751 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1752 | }, 1753 | "raw-body": { 1754 | "version": "2.4.0", 1755 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 1756 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 1757 | "requires": { 1758 | "bytes": "3.1.0", 1759 | "http-errors": "1.7.2", 1760 | "iconv-lite": "0.4.24", 1761 | "unpipe": "1.0.0" 1762 | } 1763 | }, 1764 | "rc": { 1765 | "version": "1.2.8", 1766 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 1767 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1768 | "dev": true, 1769 | "requires": { 1770 | "deep-extend": "^0.6.0", 1771 | "ini": "~1.3.0", 1772 | "minimist": "^1.2.0", 1773 | "strip-json-comments": "~2.0.1" 1774 | } 1775 | }, 1776 | "readable-stream": { 1777 | "version": "2.3.7", 1778 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1779 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1780 | "requires": { 1781 | "core-util-is": "~1.0.0", 1782 | "inherits": "~2.0.3", 1783 | "isarray": "~1.0.0", 1784 | "process-nextick-args": "~2.0.0", 1785 | "safe-buffer": "~5.1.1", 1786 | "string_decoder": "~1.1.1", 1787 | "util-deprecate": "~1.0.1" 1788 | }, 1789 | "dependencies": { 1790 | "safe-buffer": { 1791 | "version": "5.1.2", 1792 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1793 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1794 | } 1795 | } 1796 | }, 1797 | "regexp-clone": { 1798 | "version": "1.0.0", 1799 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", 1800 | "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" 1801 | }, 1802 | "registry-auth-token": { 1803 | "version": "4.0.0", 1804 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz", 1805 | "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==", 1806 | "dev": true, 1807 | "requires": { 1808 | "rc": "^1.2.8", 1809 | "safe-buffer": "^5.0.1" 1810 | } 1811 | }, 1812 | "registry-url": { 1813 | "version": "5.1.0", 1814 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", 1815 | "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", 1816 | "dev": true, 1817 | "requires": { 1818 | "rc": "^1.2.8" 1819 | } 1820 | }, 1821 | "responselike": { 1822 | "version": "1.0.2", 1823 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", 1824 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", 1825 | "dev": true, 1826 | "requires": { 1827 | "lowercase-keys": "^1.0.0" 1828 | } 1829 | }, 1830 | "safe-buffer": { 1831 | "version": "5.2.0", 1832 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", 1833 | "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" 1834 | }, 1835 | "safer-buffer": { 1836 | "version": "2.1.2", 1837 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1838 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1839 | }, 1840 | "saslprep": { 1841 | "version": "1.0.3", 1842 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", 1843 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", 1844 | "optional": true, 1845 | "requires": { 1846 | "sparse-bitfield": "^3.0.3" 1847 | } 1848 | }, 1849 | "semver": { 1850 | "version": "6.3.0", 1851 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1852 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1853 | "dev": true 1854 | }, 1855 | "semver-diff": { 1856 | "version": "2.1.0", 1857 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", 1858 | "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", 1859 | "dev": true, 1860 | "requires": { 1861 | "semver": "^5.0.3" 1862 | }, 1863 | "dependencies": { 1864 | "semver": { 1865 | "version": "5.7.1", 1866 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1867 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1868 | "dev": true 1869 | } 1870 | } 1871 | }, 1872 | "send": { 1873 | "version": "0.17.1", 1874 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1875 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 1876 | "requires": { 1877 | "debug": "2.6.9", 1878 | "depd": "~1.1.2", 1879 | "destroy": "~1.0.4", 1880 | "encodeurl": "~1.0.2", 1881 | "escape-html": "~1.0.3", 1882 | "etag": "~1.8.1", 1883 | "fresh": "0.5.2", 1884 | "http-errors": "~1.7.2", 1885 | "mime": "1.6.0", 1886 | "ms": "2.1.1", 1887 | "on-finished": "~2.3.0", 1888 | "range-parser": "~1.2.1", 1889 | "statuses": "~1.5.0" 1890 | }, 1891 | "dependencies": { 1892 | "ms": { 1893 | "version": "2.1.1", 1894 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1895 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 1896 | } 1897 | } 1898 | }, 1899 | "serve-static": { 1900 | "version": "1.14.1", 1901 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 1902 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 1903 | "requires": { 1904 | "encodeurl": "~1.0.2", 1905 | "escape-html": "~1.0.3", 1906 | "parseurl": "~1.3.3", 1907 | "send": "0.17.1" 1908 | } 1909 | }, 1910 | "serverless-dotenv": { 1911 | "version": "1.0.0-beta.2", 1912 | "resolved": "https://registry.npmjs.org/serverless-dotenv/-/serverless-dotenv-1.0.0-beta.2.tgz", 1913 | "integrity": "sha1-g4he/ebBsG8j7sCKzi/zRUO3qUE=", 1914 | "dev": true 1915 | }, 1916 | "serverless-dotenv-plugin": { 1917 | "version": "2.1.1", 1918 | "resolved": "https://registry.npmjs.org/serverless-dotenv-plugin/-/serverless-dotenv-plugin-2.1.1.tgz", 1919 | "integrity": "sha512-T08fI0XoWGMKfs1KEpYrFwG/6A+qR2UZyANgchV7jJAhRhCtO0my1oMTLovyone5UHXOwTojrwUw3pm8NYa3rg==", 1920 | "dev": true, 1921 | "requires": { 1922 | "chalk": "^2.1.0", 1923 | "dotenv": "^4.0.0", 1924 | "dotenv-expand": "^4.0.1" 1925 | } 1926 | }, 1927 | "serverless-http": { 1928 | "version": "2.3.0", 1929 | "resolved": "https://registry.npmjs.org/serverless-http/-/serverless-http-2.3.0.tgz", 1930 | "integrity": "sha512-z1820kGkw/XlaXCZ3HMA6fY/SQXrbtlQjuTaxB1fMJTe5GJqjQRE0EyLKkeQDT3Qd4nmtfM1p7XEUuNv2chnFA==", 1931 | "requires": { 1932 | "@types/aws-lambda": "^8.10.19" 1933 | } 1934 | }, 1935 | "serverless-offline": { 1936 | "version": "5.12.0", 1937 | "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-5.12.0.tgz", 1938 | "integrity": "sha512-iYnToFs/PWQe1V68ChueD6+pzMlla8hJNA2O7jThYGiDgC8EyO+R6uAK+cD89VW8kneQNy/eGJzEcA8VUJOkbg==", 1939 | "dev": true, 1940 | "requires": { 1941 | "@hapi/boom": "^7.4.11", 1942 | "@hapi/h2o2": "^8.3.2", 1943 | "@hapi/hapi": "^18.4.0", 1944 | "cuid": "^2.1.6", 1945 | "hapi-plugin-websocket": "^2.1.2", 1946 | "js-string-escape": "^1.0.1", 1947 | "jsonpath-plus": "^1.1.0", 1948 | "jsonwebtoken": "^8.5.1", 1949 | "luxon": "^1.19.3", 1950 | "object.fromentries": "^2.0.0", 1951 | "semver": "^6.2.0", 1952 | "trim-newlines": "^3.0.0", 1953 | "update-notifier": "^3.0.1", 1954 | "velocityjs": "^1.1.5" 1955 | } 1956 | }, 1957 | "setprototypeof": { 1958 | "version": "1.1.1", 1959 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1960 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1961 | }, 1962 | "shebang-command": { 1963 | "version": "1.2.0", 1964 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1965 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1966 | "dev": true, 1967 | "requires": { 1968 | "shebang-regex": "^1.0.0" 1969 | } 1970 | }, 1971 | "shebang-regex": { 1972 | "version": "1.0.0", 1973 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1974 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1975 | "dev": true 1976 | }, 1977 | "sift": { 1978 | "version": "13.5.2", 1979 | "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", 1980 | "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" 1981 | }, 1982 | "signal-exit": { 1983 | "version": "3.0.2", 1984 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1985 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1986 | "dev": true 1987 | }, 1988 | "sliced": { 1989 | "version": "1.0.1", 1990 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", 1991 | "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" 1992 | }, 1993 | "sparse-bitfield": { 1994 | "version": "3.0.3", 1995 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 1996 | "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", 1997 | "optional": true, 1998 | "requires": { 1999 | "memory-pager": "^1.0.2" 2000 | } 2001 | }, 2002 | "statuses": { 2003 | "version": "1.5.0", 2004 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2005 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 2006 | }, 2007 | "string-width": { 2008 | "version": "3.1.0", 2009 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 2010 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 2011 | "dev": true, 2012 | "requires": { 2013 | "emoji-regex": "^7.0.1", 2014 | "is-fullwidth-code-point": "^2.0.0", 2015 | "strip-ansi": "^5.1.0" 2016 | } 2017 | }, 2018 | "string.prototype.trimleft": { 2019 | "version": "2.1.0", 2020 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", 2021 | "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", 2022 | "dev": true, 2023 | "requires": { 2024 | "define-properties": "^1.1.3", 2025 | "function-bind": "^1.1.1" 2026 | } 2027 | }, 2028 | "string.prototype.trimright": { 2029 | "version": "2.1.0", 2030 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", 2031 | "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", 2032 | "dev": true, 2033 | "requires": { 2034 | "define-properties": "^1.1.3", 2035 | "function-bind": "^1.1.1" 2036 | } 2037 | }, 2038 | "string_decoder": { 2039 | "version": "1.1.1", 2040 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2041 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2042 | "requires": { 2043 | "safe-buffer": "~5.1.0" 2044 | }, 2045 | "dependencies": { 2046 | "safe-buffer": { 2047 | "version": "5.1.2", 2048 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2049 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2050 | } 2051 | } 2052 | }, 2053 | "strip-ansi": { 2054 | "version": "5.2.0", 2055 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2056 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2057 | "dev": true, 2058 | "requires": { 2059 | "ansi-regex": "^4.1.0" 2060 | } 2061 | }, 2062 | "strip-eof": { 2063 | "version": "1.0.0", 2064 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 2065 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 2066 | "dev": true 2067 | }, 2068 | "strip-json-comments": { 2069 | "version": "2.0.1", 2070 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2071 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 2072 | "dev": true 2073 | }, 2074 | "supports-color": { 2075 | "version": "5.5.0", 2076 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2077 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2078 | "dev": true, 2079 | "requires": { 2080 | "has-flag": "^3.0.0" 2081 | } 2082 | }, 2083 | "term-size": { 2084 | "version": "1.2.0", 2085 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", 2086 | "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", 2087 | "dev": true, 2088 | "requires": { 2089 | "execa": "^0.7.0" 2090 | } 2091 | }, 2092 | "to-readable-stream": { 2093 | "version": "1.0.0", 2094 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", 2095 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", 2096 | "dev": true 2097 | }, 2098 | "toidentifier": { 2099 | "version": "1.0.0", 2100 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 2101 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 2102 | }, 2103 | "trim-newlines": { 2104 | "version": "3.0.1", 2105 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", 2106 | "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", 2107 | "dev": true 2108 | }, 2109 | "type-fest": { 2110 | "version": "0.3.1", 2111 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", 2112 | "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", 2113 | "dev": true 2114 | }, 2115 | "type-is": { 2116 | "version": "1.6.18", 2117 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2118 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2119 | "requires": { 2120 | "media-typer": "0.3.0", 2121 | "mime-types": "~2.1.24" 2122 | } 2123 | }, 2124 | "unique-string": { 2125 | "version": "1.0.0", 2126 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", 2127 | "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", 2128 | "dev": true, 2129 | "requires": { 2130 | "crypto-random-string": "^1.0.0" 2131 | } 2132 | }, 2133 | "unpipe": { 2134 | "version": "1.0.0", 2135 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2136 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 2137 | }, 2138 | "update-notifier": { 2139 | "version": "3.0.1", 2140 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz", 2141 | "integrity": "sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==", 2142 | "dev": true, 2143 | "requires": { 2144 | "boxen": "^3.0.0", 2145 | "chalk": "^2.0.1", 2146 | "configstore": "^4.0.0", 2147 | "has-yarn": "^2.1.0", 2148 | "import-lazy": "^2.1.0", 2149 | "is-ci": "^2.0.0", 2150 | "is-installed-globally": "^0.1.0", 2151 | "is-npm": "^3.0.0", 2152 | "is-yarn-global": "^0.3.0", 2153 | "latest-version": "^5.0.0", 2154 | "semver-diff": "^2.0.0", 2155 | "xdg-basedir": "^3.0.0" 2156 | } 2157 | }, 2158 | "url-parse-lax": { 2159 | "version": "3.0.0", 2160 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", 2161 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", 2162 | "dev": true, 2163 | "requires": { 2164 | "prepend-http": "^2.0.0" 2165 | } 2166 | }, 2167 | "utf8": { 2168 | "version": "3.0.0", 2169 | "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", 2170 | "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", 2171 | "dev": true 2172 | }, 2173 | "util-deprecate": { 2174 | "version": "1.0.2", 2175 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2176 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2177 | }, 2178 | "utils-merge": { 2179 | "version": "1.0.1", 2180 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2181 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 2182 | }, 2183 | "uuid": { 2184 | "version": "3.3.3", 2185 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", 2186 | "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" 2187 | }, 2188 | "vary": { 2189 | "version": "1.1.2", 2190 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2191 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2192 | }, 2193 | "velocityjs": { 2194 | "version": "1.1.5", 2195 | "resolved": "https://registry.npmjs.org/velocityjs/-/velocityjs-1.1.5.tgz", 2196 | "integrity": "sha512-U4ANK4MRYSczVZjOp9FkAQoPO9geKSy3CWrBShPxMoWyqDox8SW8AZYiKtlCrV21ucONUtlU0iF3+KKK9AGoyA==", 2197 | "dev": true 2198 | }, 2199 | "which": { 2200 | "version": "1.3.1", 2201 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2202 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2203 | "dev": true, 2204 | "requires": { 2205 | "isexe": "^2.0.0" 2206 | } 2207 | }, 2208 | "widest-line": { 2209 | "version": "2.0.1", 2210 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", 2211 | "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", 2212 | "dev": true, 2213 | "requires": { 2214 | "string-width": "^2.1.1" 2215 | }, 2216 | "dependencies": { 2217 | "ansi-regex": { 2218 | "version": "3.0.0", 2219 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 2220 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 2221 | "dev": true 2222 | }, 2223 | "string-width": { 2224 | "version": "2.1.1", 2225 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 2226 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 2227 | "dev": true, 2228 | "requires": { 2229 | "is-fullwidth-code-point": "^2.0.0", 2230 | "strip-ansi": "^4.0.0" 2231 | } 2232 | }, 2233 | "strip-ansi": { 2234 | "version": "4.0.0", 2235 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2236 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2237 | "dev": true, 2238 | "requires": { 2239 | "ansi-regex": "^3.0.0" 2240 | } 2241 | } 2242 | } 2243 | }, 2244 | "wrappy": { 2245 | "version": "1.0.2", 2246 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2247 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2248 | "dev": true 2249 | }, 2250 | "write-file-atomic": { 2251 | "version": "2.4.3", 2252 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", 2253 | "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", 2254 | "dev": true, 2255 | "requires": { 2256 | "graceful-fs": "^4.1.11", 2257 | "imurmurhash": "^0.1.4", 2258 | "signal-exit": "^3.0.2" 2259 | } 2260 | }, 2261 | "xdg-basedir": { 2262 | "version": "3.0.0", 2263 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", 2264 | "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", 2265 | "dev": true 2266 | }, 2267 | "yallist": { 2268 | "version": "2.1.2", 2269 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 2270 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 2271 | "dev": true 2272 | } 2273 | } 2274 | } 2275 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "serverless-example", 3 | "version": "1.0.0", 4 | "description": "Serverless Example for LogRocket Blog", 5 | "main": "handler.js", 6 | "scripts": { 7 | "start": "serverless offline start --skipCacheInvalidation", 8 | "deploy": "sls deploy -v" 9 | }, 10 | "dependencies": { 11 | "body-parser": "^1.19.0", 12 | "express": "^4.17.1", 13 | "mongoose": "^5.13.6", 14 | "serverless-http": "^2.3.0", 15 | "uuid": "^3.3.3" 16 | }, 17 | "author": "Alexander Nnakwue", 18 | "license": "MIT", 19 | "devDependencies": { 20 | "serverless-offline": "^5.12.0", 21 | "serverless-dotenv": "^1.0.0-beta.2", 22 | "serverless-dotenv-plugin": "^2.1.1" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ## Serverless example for LogRocket blog 2 | 3 | 4 | To start the application? Run ```npm start``` 5 | 6 | 7 | Then go to the base url here:===> ```http://localhost:3000``` 8 | 9 | 10 | Path: 11 | 12 | /index - base path 13 | 14 | / - To create a new product 15 | 16 | / - To get all the products from the db 17 | 18 | /{productId} - To get a product by Id from the db 19 | 20 | ## Payload to create a new product 21 | 22 | http://localhost:3000/ 23 | 24 | `Requestbody` 25 | 26 | ``` 27 | { 28 | "name": " ", 29 | "type": " ", 30 | "cost": "", 31 | "description": "" 32 | } 33 | ``` 34 | -------------------------------------------------------------------------------- /sample.env: -------------------------------------------------------------------------------- 1 | MONGODB_URL = mongodb://localhost:27017 2 | -------------------------------------------------------------------------------- /serverless.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Serverless! 2 | service: serverless-example 3 | app: product-api 4 | 5 | 6 | provider: 7 | name: aws 8 | runtime: nodejs14.17. 4 9 | stage: dev 10 | region: us-east-1 11 | 12 | 13 | functions: 14 | productAPI: 15 | handler: Controller/products.handler 16 | events: 17 | - http: 18 | path: /index 19 | method: get 20 | 21 | 22 | - http: 23 | path: / 24 | method: post 25 | 26 | 27 | - http: 28 | path: / 29 | method: get 30 | 31 | - http: 32 | path: /{productId} 33 | method: get 34 | 35 | 36 | plugins: 37 | - serverless-offline 38 | - serverless-dotenv-plugin 39 | --------------------------------------------------------------------------------