├── README.md └── my-service ├── .gitignore ├── handler.js ├── package-lock.json ├── package.json └── serverless.yml /README.md: -------------------------------------------------------------------------------- 1 | # a-crash-course-on-serverless-with-nodejs 2 | 3 | The article is based around the main concepts of Serverless architecture. 4 | After explaining the core features and understanding why it is a great tool we move on to concrete examples. 5 | Step by step explanations show how to use the Serverless framework in tandem with Node.js to create an awesome REST API. 6 | Moving on, the REST API is both deployed to AWS and emulated locally to create a local development environment. 7 | Lastly, we touch upon the concept of monitoring the serverless application using Dashbird. 8 | 9 | Check it out here: https://hackernoon.com/a-crash-course-on-serverless-with-node-js-632b37d58b44 10 | -------------------------------------------------------------------------------- /my-service/.gitignore: -------------------------------------------------------------------------------- 1 | # package directories 2 | node_modules 3 | jspm_packages 4 | 5 | # Serverless directories 6 | .serverless -------------------------------------------------------------------------------- /my-service/handler.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports.hello = (event, context, callback) => { 4 | const response = { statusCode: 200, body: 'Go Serverless!' }; 5 | callback(null, response); 6 | }; 7 | -------------------------------------------------------------------------------- /my-service/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-service", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accept": { 8 | "version": "2.1.4", 9 | "resolved": "https://registry.npmjs.org/accept/-/accept-2.1.4.tgz", 10 | "integrity": "sha1-iHr1TO7lx/RDBGGXHsQAxh0JrLs=", 11 | "dev": true, 12 | "requires": { 13 | "boom": "5.2.0", 14 | "hoek": "4.2.0" 15 | }, 16 | "dependencies": { 17 | "boom": { 18 | "version": "5.2.0", 19 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 20 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 21 | "dev": true, 22 | "requires": { 23 | "hoek": "4.2.0" 24 | } 25 | } 26 | } 27 | }, 28 | "ammo": { 29 | "version": "2.0.4", 30 | "resolved": "https://registry.npmjs.org/ammo/-/ammo-2.0.4.tgz", 31 | "integrity": "sha1-v4CqshFpjqePY+9efxE91dnokX8=", 32 | "dev": true, 33 | "requires": { 34 | "boom": "5.2.0", 35 | "hoek": "4.2.0" 36 | }, 37 | "dependencies": { 38 | "boom": { 39 | "version": "5.2.0", 40 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 41 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 42 | "dev": true, 43 | "requires": { 44 | "hoek": "4.2.0" 45 | } 46 | } 47 | } 48 | }, 49 | "ansi-regex": { 50 | "version": "2.1.1", 51 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 52 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 53 | "dev": true 54 | }, 55 | "ansi-styles": { 56 | "version": "2.2.1", 57 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 58 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 59 | "dev": true 60 | }, 61 | "b64": { 62 | "version": "3.0.3", 63 | "resolved": "https://registry.npmjs.org/b64/-/b64-3.0.3.tgz", 64 | "integrity": "sha512-Pbeh0i6OLubPJdIdCepn8ZQHwN2MWznZHbHABSTEfQ706ie+yuxNSaPdqX1xRatT6WanaS1EazMiSg0NUW2XxQ==", 65 | "dev": true 66 | }, 67 | "babel-code-frame": { 68 | "version": "6.26.0", 69 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 70 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 71 | "dev": true, 72 | "requires": { 73 | "chalk": "1.1.3", 74 | "esutils": "2.0.2", 75 | "js-tokens": "3.0.2" 76 | } 77 | }, 78 | "babel-core": { 79 | "version": "6.26.0", 80 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", 81 | "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", 82 | "dev": true, 83 | "requires": { 84 | "babel-code-frame": "6.26.0", 85 | "babel-generator": "6.26.0", 86 | "babel-helpers": "6.24.1", 87 | "babel-messages": "6.23.0", 88 | "babel-register": "6.26.0", 89 | "babel-runtime": "6.26.0", 90 | "babel-template": "6.26.0", 91 | "babel-traverse": "6.26.0", 92 | "babel-types": "6.26.0", 93 | "babylon": "6.18.0", 94 | "convert-source-map": "1.5.0", 95 | "debug": "2.6.9", 96 | "json5": "0.5.1", 97 | "lodash": "4.17.4", 98 | "minimatch": "3.0.4", 99 | "path-is-absolute": "1.0.1", 100 | "private": "0.1.7", 101 | "slash": "1.0.0", 102 | "source-map": "0.5.7" 103 | } 104 | }, 105 | "babel-generator": { 106 | "version": "6.26.0", 107 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", 108 | "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", 109 | "dev": true, 110 | "requires": { 111 | "babel-messages": "6.23.0", 112 | "babel-runtime": "6.26.0", 113 | "babel-types": "6.26.0", 114 | "detect-indent": "4.0.0", 115 | "jsesc": "1.3.0", 116 | "lodash": "4.17.4", 117 | "source-map": "0.5.7", 118 | "trim-right": "1.0.1" 119 | } 120 | }, 121 | "babel-helpers": { 122 | "version": "6.24.1", 123 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 124 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 125 | "dev": true, 126 | "requires": { 127 | "babel-runtime": "6.26.0", 128 | "babel-template": "6.26.0" 129 | } 130 | }, 131 | "babel-messages": { 132 | "version": "6.23.0", 133 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 134 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 135 | "dev": true, 136 | "requires": { 137 | "babel-runtime": "6.26.0" 138 | } 139 | }, 140 | "babel-register": { 141 | "version": "6.26.0", 142 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", 143 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", 144 | "dev": true, 145 | "requires": { 146 | "babel-core": "6.26.0", 147 | "babel-runtime": "6.26.0", 148 | "core-js": "2.5.1", 149 | "home-or-tmp": "2.0.0", 150 | "lodash": "4.17.4", 151 | "mkdirp": "0.5.1", 152 | "source-map-support": "0.4.18" 153 | } 154 | }, 155 | "babel-runtime": { 156 | "version": "6.26.0", 157 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 158 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 159 | "dev": true, 160 | "requires": { 161 | "core-js": "2.5.1", 162 | "regenerator-runtime": "0.11.0" 163 | } 164 | }, 165 | "babel-template": { 166 | "version": "6.26.0", 167 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", 168 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 169 | "dev": true, 170 | "requires": { 171 | "babel-runtime": "6.26.0", 172 | "babel-traverse": "6.26.0", 173 | "babel-types": "6.26.0", 174 | "babylon": "6.18.0", 175 | "lodash": "4.17.4" 176 | } 177 | }, 178 | "babel-traverse": { 179 | "version": "6.26.0", 180 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 181 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 182 | "dev": true, 183 | "requires": { 184 | "babel-code-frame": "6.26.0", 185 | "babel-messages": "6.23.0", 186 | "babel-runtime": "6.26.0", 187 | "babel-types": "6.26.0", 188 | "babylon": "6.18.0", 189 | "debug": "2.6.9", 190 | "globals": "9.18.0", 191 | "invariant": "2.2.2", 192 | "lodash": "4.17.4" 193 | } 194 | }, 195 | "babel-types": { 196 | "version": "6.26.0", 197 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 198 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 199 | "dev": true, 200 | "requires": { 201 | "babel-runtime": "6.26.0", 202 | "esutils": "2.0.2", 203 | "lodash": "4.17.4", 204 | "to-fast-properties": "1.0.3" 205 | } 206 | }, 207 | "babylon": { 208 | "version": "6.18.0", 209 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 210 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 211 | "dev": true 212 | }, 213 | "balanced-match": { 214 | "version": "1.0.0", 215 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 216 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 217 | "dev": true 218 | }, 219 | "base64url": { 220 | "version": "2.0.0", 221 | "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", 222 | "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=", 223 | "dev": true 224 | }, 225 | "boom": { 226 | "version": "4.3.1", 227 | "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", 228 | "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", 229 | "dev": true, 230 | "requires": { 231 | "hoek": "4.2.0" 232 | } 233 | }, 234 | "brace-expansion": { 235 | "version": "1.1.8", 236 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 237 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 238 | "dev": true, 239 | "requires": { 240 | "balanced-match": "1.0.0", 241 | "concat-map": "0.0.1" 242 | } 243 | }, 244 | "buffer-equal-constant-time": { 245 | "version": "1.0.1", 246 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 247 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", 248 | "dev": true 249 | }, 250 | "call": { 251 | "version": "3.0.4", 252 | "resolved": "https://registry.npmjs.org/call/-/call-3.0.4.tgz", 253 | "integrity": "sha1-44Dy8qSRMwqnkIU1X4vggId9VZ4=", 254 | "dev": true, 255 | "requires": { 256 | "boom": "4.3.1", 257 | "hoek": "4.2.0" 258 | } 259 | }, 260 | "catbox": { 261 | "version": "7.1.5", 262 | "resolved": "https://registry.npmjs.org/catbox/-/catbox-7.1.5.tgz", 263 | "integrity": "sha512-4fui5lELzqZ+9cnaAP/BcqXTH6LvWLBRtFhJ0I4FfgfXiSaZcf6k9m9dqOyChiTxNYtvLk7ZMYSf7ahMq3bf5A==", 264 | "dev": true, 265 | "requires": { 266 | "boom": "5.2.0", 267 | "hoek": "4.2.0", 268 | "joi": "10.6.0" 269 | }, 270 | "dependencies": { 271 | "boom": { 272 | "version": "5.2.0", 273 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 274 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 275 | "dev": true, 276 | "requires": { 277 | "hoek": "4.2.0" 278 | } 279 | }, 280 | "joi": { 281 | "version": "10.6.0", 282 | "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", 283 | "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", 284 | "dev": true, 285 | "requires": { 286 | "hoek": "4.2.0", 287 | "isemail": "2.2.1", 288 | "items": "2.1.1", 289 | "topo": "2.0.2" 290 | } 291 | } 292 | } 293 | }, 294 | "catbox-memory": { 295 | "version": "2.0.4", 296 | "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.4.tgz", 297 | "integrity": "sha1-Qz4lWQLK9UIz0ShkKcj03xToItU=", 298 | "dev": true, 299 | "requires": { 300 | "hoek": "4.2.0" 301 | } 302 | }, 303 | "chalk": { 304 | "version": "1.1.3", 305 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 306 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 307 | "dev": true, 308 | "requires": { 309 | "ansi-styles": "2.2.1", 310 | "escape-string-regexp": "1.0.5", 311 | "has-ansi": "2.0.0", 312 | "strip-ansi": "3.0.1", 313 | "supports-color": "2.0.0" 314 | } 315 | }, 316 | "concat-map": { 317 | "version": "0.0.1", 318 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 319 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 320 | "dev": true 321 | }, 322 | "content": { 323 | "version": "3.0.6", 324 | "resolved": "https://registry.npmjs.org/content/-/content-3.0.6.tgz", 325 | "integrity": "sha512-tyl3fRp8jOHsQR0X9vrIy0mKQccv0tA9/RlvLl514eA7vHOJr/TnmMTpgQjInwbeW9IOQVy0OECGAuQNUa0nnQ==", 326 | "dev": true, 327 | "requires": { 328 | "boom": "5.2.0" 329 | }, 330 | "dependencies": { 331 | "boom": { 332 | "version": "5.2.0", 333 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 334 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 335 | "dev": true, 336 | "requires": { 337 | "hoek": "4.2.0" 338 | } 339 | } 340 | } 341 | }, 342 | "convert-source-map": { 343 | "version": "1.5.0", 344 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 345 | "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", 346 | "dev": true 347 | }, 348 | "core-js": { 349 | "version": "2.5.1", 350 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", 351 | "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", 352 | "dev": true 353 | }, 354 | "cryptiles": { 355 | "version": "3.1.2", 356 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", 357 | "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", 358 | "dev": true, 359 | "requires": { 360 | "boom": "5.2.0" 361 | }, 362 | "dependencies": { 363 | "boom": { 364 | "version": "5.2.0", 365 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 366 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 367 | "dev": true, 368 | "requires": { 369 | "hoek": "4.2.0" 370 | } 371 | } 372 | } 373 | }, 374 | "debug": { 375 | "version": "2.6.9", 376 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 377 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 378 | "dev": true, 379 | "requires": { 380 | "ms": "2.0.0" 381 | } 382 | }, 383 | "detect-indent": { 384 | "version": "4.0.0", 385 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 386 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 387 | "dev": true, 388 | "requires": { 389 | "repeating": "2.0.1" 390 | } 391 | }, 392 | "ecdsa-sig-formatter": { 393 | "version": "1.0.9", 394 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", 395 | "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", 396 | "dev": true, 397 | "requires": { 398 | "base64url": "2.0.0", 399 | "safe-buffer": "5.1.1" 400 | } 401 | }, 402 | "escape-string-regexp": { 403 | "version": "1.0.5", 404 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 405 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 406 | "dev": true 407 | }, 408 | "esutils": { 409 | "version": "2.0.2", 410 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 411 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 412 | "dev": true 413 | }, 414 | "globals": { 415 | "version": "9.18.0", 416 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 417 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 418 | "dev": true 419 | }, 420 | "h2o2": { 421 | "version": "5.4.0", 422 | "resolved": "https://registry.npmjs.org/h2o2/-/h2o2-5.4.0.tgz", 423 | "integrity": "sha1-1oV8oFNVIAyJCzSmZgbKugIp7Vg=", 424 | "dev": true, 425 | "requires": { 426 | "boom": "3.2.2", 427 | "hoek": "4.2.0", 428 | "joi": "9.2.0", 429 | "wreck": "9.0.0" 430 | }, 431 | "dependencies": { 432 | "boom": { 433 | "version": "3.2.2", 434 | "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 435 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 436 | "dev": true, 437 | "requires": { 438 | "hoek": "4.2.0" 439 | } 440 | } 441 | } 442 | }, 443 | "hapi": { 444 | "version": "14.2.0", 445 | "resolved": "https://registry.npmjs.org/hapi/-/hapi-14.2.0.tgz", 446 | "integrity": "sha1-5P4vwYJZig+B6HtBtr4PvTHHVAk=", 447 | "dev": true, 448 | "requires": { 449 | "accept": "2.1.4", 450 | "ammo": "2.0.4", 451 | "boom": "3.2.2", 452 | "call": "3.0.4", 453 | "catbox": "7.1.5", 454 | "catbox-memory": "2.0.4", 455 | "cryptiles": "3.1.2", 456 | "heavy": "4.0.4", 457 | "hoek": "4.2.0", 458 | "iron": "4.0.5", 459 | "items": "2.1.1", 460 | "joi": "9.2.0", 461 | "kilt": "2.0.2", 462 | "mimos": "3.0.3", 463 | "peekaboo": "2.0.2", 464 | "shot": "3.4.2", 465 | "statehood": "4.1.0", 466 | "subtext": "4.4.1", 467 | "topo": "2.0.2" 468 | }, 469 | "dependencies": { 470 | "boom": { 471 | "version": "3.2.2", 472 | "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 473 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 474 | "dev": true, 475 | "requires": { 476 | "hoek": "4.2.0" 477 | } 478 | } 479 | } 480 | }, 481 | "hapi-cors-headers": { 482 | "version": "1.0.0", 483 | "resolved": "https://registry.npmjs.org/hapi-cors-headers/-/hapi-cors-headers-1.0.0.tgz", 484 | "integrity": "sha1-qwExiv89OkqopLkOJQtQnW2JKPA=", 485 | "dev": true 486 | }, 487 | "has-ansi": { 488 | "version": "2.0.0", 489 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 490 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 491 | "dev": true, 492 | "requires": { 493 | "ansi-regex": "2.1.1" 494 | } 495 | }, 496 | "heavy": { 497 | "version": "4.0.4", 498 | "resolved": "https://registry.npmjs.org/heavy/-/heavy-4.0.4.tgz", 499 | "integrity": "sha1-NskTNsAMz+hSyqTRUwhjNc0vAOk=", 500 | "dev": true, 501 | "requires": { 502 | "boom": "5.2.0", 503 | "hoek": "4.2.0", 504 | "joi": "10.6.0" 505 | }, 506 | "dependencies": { 507 | "boom": { 508 | "version": "5.2.0", 509 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 510 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 511 | "dev": true, 512 | "requires": { 513 | "hoek": "4.2.0" 514 | } 515 | }, 516 | "joi": { 517 | "version": "10.6.0", 518 | "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", 519 | "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", 520 | "dev": true, 521 | "requires": { 522 | "hoek": "4.2.0", 523 | "isemail": "2.2.1", 524 | "items": "2.1.1", 525 | "topo": "2.0.2" 526 | } 527 | } 528 | } 529 | }, 530 | "hoek": { 531 | "version": "4.2.0", 532 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", 533 | "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", 534 | "dev": true 535 | }, 536 | "home-or-tmp": { 537 | "version": "2.0.0", 538 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 539 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 540 | "dev": true, 541 | "requires": { 542 | "os-homedir": "1.0.2", 543 | "os-tmpdir": "1.0.2" 544 | } 545 | }, 546 | "invariant": { 547 | "version": "2.2.2", 548 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", 549 | "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", 550 | "dev": true, 551 | "requires": { 552 | "loose-envify": "1.3.1" 553 | } 554 | }, 555 | "iron": { 556 | "version": "4.0.5", 557 | "resolved": "https://registry.npmjs.org/iron/-/iron-4.0.5.tgz", 558 | "integrity": "sha1-TwQszri5c480a1mqc0yDqJvDFCg=", 559 | "dev": true, 560 | "requires": { 561 | "boom": "5.2.0", 562 | "cryptiles": "3.1.2", 563 | "hoek": "4.2.0" 564 | }, 565 | "dependencies": { 566 | "boom": { 567 | "version": "5.2.0", 568 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 569 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 570 | "dev": true, 571 | "requires": { 572 | "hoek": "4.2.0" 573 | } 574 | } 575 | } 576 | }, 577 | "is-finite": { 578 | "version": "1.0.2", 579 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 580 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 581 | "dev": true, 582 | "requires": { 583 | "number-is-nan": "1.0.1" 584 | } 585 | }, 586 | "isemail": { 587 | "version": "2.2.1", 588 | "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", 589 | "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=", 590 | "dev": true 591 | }, 592 | "items": { 593 | "version": "2.1.1", 594 | "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", 595 | "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=", 596 | "dev": true 597 | }, 598 | "joi": { 599 | "version": "9.2.0", 600 | "resolved": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz", 601 | "integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=", 602 | "dev": true, 603 | "requires": { 604 | "hoek": "4.2.0", 605 | "isemail": "2.2.1", 606 | "items": "2.1.1", 607 | "moment": "2.18.1", 608 | "topo": "2.0.2" 609 | } 610 | }, 611 | "js-string-escape": { 612 | "version": "1.0.1", 613 | "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", 614 | "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", 615 | "dev": true 616 | }, 617 | "js-tokens": { 618 | "version": "3.0.2", 619 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 620 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 621 | "dev": true 622 | }, 623 | "jsesc": { 624 | "version": "1.3.0", 625 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 626 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 627 | "dev": true 628 | }, 629 | "json5": { 630 | "version": "0.5.1", 631 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 632 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 633 | "dev": true 634 | }, 635 | "jsonpath-plus": { 636 | "version": "0.16.0", 637 | "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-0.16.0.tgz", 638 | "integrity": "sha1-/kQbI/A+xpeaVgNROYjNPtt9tdw=", 639 | "dev": true 640 | }, 641 | "jsonwebtoken": { 642 | "version": "7.4.3", 643 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", 644 | "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=", 645 | "dev": true, 646 | "requires": { 647 | "joi": "6.10.1", 648 | "jws": "3.1.4", 649 | "lodash.once": "4.1.1", 650 | "ms": "2.0.0", 651 | "xtend": "4.0.1" 652 | }, 653 | "dependencies": { 654 | "hoek": { 655 | "version": "2.16.3", 656 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", 657 | "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", 658 | "dev": true 659 | }, 660 | "isemail": { 661 | "version": "1.2.0", 662 | "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", 663 | "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=", 664 | "dev": true 665 | }, 666 | "joi": { 667 | "version": "6.10.1", 668 | "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", 669 | "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", 670 | "dev": true, 671 | "requires": { 672 | "hoek": "2.16.3", 673 | "isemail": "1.2.0", 674 | "moment": "2.18.1", 675 | "topo": "1.1.0" 676 | } 677 | }, 678 | "topo": { 679 | "version": "1.1.0", 680 | "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", 681 | "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", 682 | "dev": true, 683 | "requires": { 684 | "hoek": "2.16.3" 685 | } 686 | } 687 | } 688 | }, 689 | "jwa": { 690 | "version": "1.1.5", 691 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", 692 | "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", 693 | "dev": true, 694 | "requires": { 695 | "base64url": "2.0.0", 696 | "buffer-equal-constant-time": "1.0.1", 697 | "ecdsa-sig-formatter": "1.0.9", 698 | "safe-buffer": "5.1.1" 699 | } 700 | }, 701 | "jws": { 702 | "version": "3.1.4", 703 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", 704 | "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", 705 | "dev": true, 706 | "requires": { 707 | "base64url": "2.0.0", 708 | "jwa": "1.1.5", 709 | "safe-buffer": "5.1.1" 710 | } 711 | }, 712 | "kilt": { 713 | "version": "2.0.2", 714 | "resolved": "https://registry.npmjs.org/kilt/-/kilt-2.0.2.tgz", 715 | "integrity": "sha1-BNcYPCmKEjLv3ffdyllZqPYwHiA=", 716 | "dev": true, 717 | "requires": { 718 | "hoek": "4.2.0" 719 | } 720 | }, 721 | "lodash": { 722 | "version": "4.17.4", 723 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 724 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 725 | "dev": true 726 | }, 727 | "lodash.once": { 728 | "version": "4.1.1", 729 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 730 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", 731 | "dev": true 732 | }, 733 | "loose-envify": { 734 | "version": "1.3.1", 735 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 736 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 737 | "dev": true, 738 | "requires": { 739 | "js-tokens": "3.0.2" 740 | } 741 | }, 742 | "mime-db": { 743 | "version": "1.30.0", 744 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", 745 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", 746 | "dev": true 747 | }, 748 | "mimos": { 749 | "version": "3.0.3", 750 | "resolved": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz", 751 | "integrity": "sha1-uRCQcq03jCty9qAQHEPd+ys2ZB8=", 752 | "dev": true, 753 | "requires": { 754 | "hoek": "4.2.0", 755 | "mime-db": "1.30.0" 756 | } 757 | }, 758 | "minimatch": { 759 | "version": "3.0.4", 760 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 761 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 762 | "dev": true, 763 | "requires": { 764 | "brace-expansion": "1.1.8" 765 | } 766 | }, 767 | "minimist": { 768 | "version": "0.0.8", 769 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 770 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 771 | "dev": true 772 | }, 773 | "mkdirp": { 774 | "version": "0.5.1", 775 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 776 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 777 | "dev": true, 778 | "requires": { 779 | "minimist": "0.0.8" 780 | } 781 | }, 782 | "moment": { 783 | "version": "2.18.1", 784 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", 785 | "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=", 786 | "dev": true 787 | }, 788 | "ms": { 789 | "version": "2.0.0", 790 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 791 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 792 | "dev": true 793 | }, 794 | "nigel": { 795 | "version": "2.0.2", 796 | "resolved": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz", 797 | "integrity": "sha1-k6GGb7DFLYc5CqdeKxYfS1x15bE=", 798 | "dev": true, 799 | "requires": { 800 | "hoek": "4.2.0", 801 | "vise": "2.0.2" 802 | } 803 | }, 804 | "number-is-nan": { 805 | "version": "1.0.1", 806 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 807 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 808 | "dev": true 809 | }, 810 | "os-homedir": { 811 | "version": "1.0.2", 812 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 813 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 814 | "dev": true 815 | }, 816 | "os-tmpdir": { 817 | "version": "1.0.2", 818 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 819 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 820 | "dev": true 821 | }, 822 | "path-is-absolute": { 823 | "version": "1.0.1", 824 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 825 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 826 | "dev": true 827 | }, 828 | "peekaboo": { 829 | "version": "2.0.2", 830 | "resolved": "https://registry.npmjs.org/peekaboo/-/peekaboo-2.0.2.tgz", 831 | "integrity": "sha1-/ELhOe/WmMb/KHCmsgwEfNmqKf8=", 832 | "dev": true 833 | }, 834 | "pez": { 835 | "version": "2.1.5", 836 | "resolved": "https://registry.npmjs.org/pez/-/pez-2.1.5.tgz", 837 | "integrity": "sha1-XsLMYlAMw+tCNtSkFM9aF7XrUAc=", 838 | "dev": true, 839 | "requires": { 840 | "b64": "3.0.3", 841 | "boom": "5.2.0", 842 | "content": "3.0.6", 843 | "hoek": "4.2.0", 844 | "nigel": "2.0.2" 845 | }, 846 | "dependencies": { 847 | "boom": { 848 | "version": "5.2.0", 849 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 850 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 851 | "dev": true, 852 | "requires": { 853 | "hoek": "4.2.0" 854 | } 855 | } 856 | } 857 | }, 858 | "private": { 859 | "version": "0.1.7", 860 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", 861 | "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", 862 | "dev": true 863 | }, 864 | "regenerator-runtime": { 865 | "version": "0.11.0", 866 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", 867 | "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", 868 | "dev": true 869 | }, 870 | "repeating": { 871 | "version": "2.0.1", 872 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 873 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 874 | "dev": true, 875 | "requires": { 876 | "is-finite": "1.0.2" 877 | } 878 | }, 879 | "safe-buffer": { 880 | "version": "5.1.1", 881 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 882 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 883 | "dev": true 884 | }, 885 | "serverless-offline": { 886 | "version": "3.16.0", 887 | "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-3.16.0.tgz", 888 | "integrity": "sha512-lgew1Hyh9FW5uvQFO00375hBX2bNkb9VmP8LecrxMXtmbonO6vQuyKdzGFjFofuRGTS32r8FZ3HXUVOI8brhVw==", 889 | "dev": true, 890 | "requires": { 891 | "babel-register": "6.26.0", 892 | "boom": "4.3.1", 893 | "h2o2": "5.4.0", 894 | "hapi": "14.2.0", 895 | "hapi-cors-headers": "1.0.0", 896 | "js-string-escape": "1.0.1", 897 | "jsonpath-plus": "0.16.0", 898 | "jsonwebtoken": "7.4.3", 899 | "lodash": "4.17.4", 900 | "velocityjs": "0.9.6" 901 | } 902 | }, 903 | "shot": { 904 | "version": "3.4.2", 905 | "resolved": "https://registry.npmjs.org/shot/-/shot-3.4.2.tgz", 906 | "integrity": "sha1-Hlw/bysmZJrcQvfrNQIUpaApHWc=", 907 | "dev": true, 908 | "requires": { 909 | "hoek": "4.2.0", 910 | "joi": "10.6.0" 911 | }, 912 | "dependencies": { 913 | "joi": { 914 | "version": "10.6.0", 915 | "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", 916 | "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", 917 | "dev": true, 918 | "requires": { 919 | "hoek": "4.2.0", 920 | "isemail": "2.2.1", 921 | "items": "2.1.1", 922 | "topo": "2.0.2" 923 | } 924 | } 925 | } 926 | }, 927 | "slash": { 928 | "version": "1.0.0", 929 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 930 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 931 | "dev": true 932 | }, 933 | "source-map": { 934 | "version": "0.5.7", 935 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 936 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 937 | "dev": true 938 | }, 939 | "source-map-support": { 940 | "version": "0.4.18", 941 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 942 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 943 | "dev": true, 944 | "requires": { 945 | "source-map": "0.5.7" 946 | } 947 | }, 948 | "statehood": { 949 | "version": "4.1.0", 950 | "resolved": "https://registry.npmjs.org/statehood/-/statehood-4.1.0.tgz", 951 | "integrity": "sha1-iih30T2YUKq2zod6VLd43w9DrNs=", 952 | "dev": true, 953 | "requires": { 954 | "boom": "3.2.2", 955 | "cryptiles": "3.1.2", 956 | "hoek": "4.2.0", 957 | "iron": "4.0.5", 958 | "items": "2.1.1", 959 | "joi": "9.2.0" 960 | }, 961 | "dependencies": { 962 | "boom": { 963 | "version": "3.2.2", 964 | "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 965 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 966 | "dev": true, 967 | "requires": { 968 | "hoek": "4.2.0" 969 | } 970 | } 971 | } 972 | }, 973 | "strip-ansi": { 974 | "version": "3.0.1", 975 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 976 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 977 | "dev": true, 978 | "requires": { 979 | "ansi-regex": "2.1.1" 980 | } 981 | }, 982 | "subtext": { 983 | "version": "4.4.1", 984 | "resolved": "https://registry.npmjs.org/subtext/-/subtext-4.4.1.tgz", 985 | "integrity": "sha1-L87JRd5CkoPD0YsVH/D6HxuHrsk=", 986 | "dev": true, 987 | "requires": { 988 | "boom": "5.2.0", 989 | "content": "3.0.6", 990 | "hoek": "4.2.0", 991 | "pez": "2.1.5", 992 | "wreck": "12.5.1" 993 | }, 994 | "dependencies": { 995 | "boom": { 996 | "version": "5.2.0", 997 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 998 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 999 | "dev": true, 1000 | "requires": { 1001 | "hoek": "4.2.0" 1002 | } 1003 | }, 1004 | "wreck": { 1005 | "version": "12.5.1", 1006 | "resolved": "https://registry.npmjs.org/wreck/-/wreck-12.5.1.tgz", 1007 | "integrity": "sha512-l5DUGrc+yDyIflpty1x9XuMj1ehVjC/dTbF3/BasOO77xk0EdEa4M/DuOY8W88MQDAD0fEDqyjc8bkIMHd2E9A==", 1008 | "dev": true, 1009 | "requires": { 1010 | "boom": "5.2.0", 1011 | "hoek": "4.2.0" 1012 | } 1013 | } 1014 | } 1015 | }, 1016 | "supports-color": { 1017 | "version": "2.0.0", 1018 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1019 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1020 | "dev": true 1021 | }, 1022 | "to-fast-properties": { 1023 | "version": "1.0.3", 1024 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 1025 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 1026 | "dev": true 1027 | }, 1028 | "topo": { 1029 | "version": "2.0.2", 1030 | "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", 1031 | "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", 1032 | "dev": true, 1033 | "requires": { 1034 | "hoek": "4.2.0" 1035 | } 1036 | }, 1037 | "trim-right": { 1038 | "version": "1.0.1", 1039 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 1040 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 1041 | "dev": true 1042 | }, 1043 | "velocityjs": { 1044 | "version": "0.9.6", 1045 | "resolved": "https://registry.npmjs.org/velocityjs/-/velocityjs-0.9.6.tgz", 1046 | "integrity": "sha1-bsgumaonSS0tYjYMFhr8T4LbieI=", 1047 | "dev": true 1048 | }, 1049 | "vise": { 1050 | "version": "2.0.2", 1051 | "resolved": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz", 1052 | "integrity": "sha1-awjo+0y3bjpQzW3Q7DczjoEaDTk=", 1053 | "dev": true, 1054 | "requires": { 1055 | "hoek": "4.2.0" 1056 | } 1057 | }, 1058 | "wreck": { 1059 | "version": "9.0.0", 1060 | "resolved": "https://registry.npmjs.org/wreck/-/wreck-9.0.0.tgz", 1061 | "integrity": "sha1-HeY9SbsHuU/nGIZLi+YxduYzMew=", 1062 | "dev": true, 1063 | "requires": { 1064 | "boom": "3.2.2", 1065 | "hoek": "4.2.0" 1066 | }, 1067 | "dependencies": { 1068 | "boom": { 1069 | "version": "3.2.2", 1070 | "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", 1071 | "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", 1072 | "dev": true, 1073 | "requires": { 1074 | "hoek": "4.2.0" 1075 | } 1076 | } 1077 | } 1078 | }, 1079 | "xtend": { 1080 | "version": "4.0.1", 1081 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 1082 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 1083 | "dev": true 1084 | } 1085 | } 1086 | } 1087 | -------------------------------------------------------------------------------- /my-service/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-service", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "handler.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "serverless-offline": "^3.16.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /my-service/serverless.yml: -------------------------------------------------------------------------------- 1 | service: my-service 2 | 3 | provider: 4 | name: aws 5 | runtime: nodejs6.10 6 | memorySize: 128 7 | stage: dev 8 | region: eu-central-1 9 | 10 | functions: 11 | hello: 12 | handler: handler.hello 13 | events: 14 | - http: 15 | path: hello/get 16 | method: get 17 | plugins: 18 | - serverless-offline --------------------------------------------------------------------------------