├── .gitignore ├── README.md ├── package-lock.json ├── package.json ├── prisma ├── migrations │ ├── 20210405003848_example_schema │ │ └── migration.sql │ └── migration_lock.toml └── schema.prisma ├── serverless.ts ├── src ├── graphql │ └── schema.ts ├── handlers.ts └── lambda.ts ├── tsconfig.json └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | # package directories 2 | node_modules 3 | jspm_packages 4 | 5 | # Serverless directories 6 | .serverless 7 | 8 | # Webpack directories 9 | .webpack 10 | 11 | # Other 12 | .vscode -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Graphql Subscriptions on AWS Lambda (with Prisma) 2 | 3 | This is a [graphql-lambda](https://github.com/guerrerocarlos/graphql-lambda) module usage example that shows how to create a GraphQL endpoint with Subscriptions that stores new users using [prisma](https://prisma.io) ORM and shows the newly created users in real-time through a GraphQL subscription query. 4 | 5 | # This example includes: 6 | 7 | * Prisma schemas definitions and client 8 | * GraphQL SDL schemas definitions 9 | * `Subscription` queries implementation with Prisma module 10 | 11 | # How to 12 | 13 | Deploy as usual with [serverless](https://serverles.com/) framework: 14 | 15 | `serverless deploy` 16 | 17 | # Playground Screenshots 18 | 19 | Creating new users and receiving them in real time through `subscription` query: 20 | 21 | ![Screenshot 2021-04-05 at 2 39 52 AM](https://user-images.githubusercontent.com/82532/113528358-3de6f780-95b8-11eb-9d20-3f7000bb2e3d.jpg) 22 | 23 | ![Screenshot 2021-04-05 at 2 39 55 AM](https://user-images.githubusercontent.com/82532/113528362-42131500-95b8-11eb-8ca0-b390db97c1bd.jpg) 24 | 25 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "graphql-lambda-sdl-example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@apollo/protobufjs": { 8 | "version": "1.0.5", 9 | "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.0.5.tgz", 10 | "integrity": "sha512-ZtyaBH1icCgqwIGb3zrtopV2D5Q8yxibkJzlaViM08eOhTQc7rACdYu0pfORFfhllvdMZ3aq69vifYHszY4gNA==", 11 | "requires": { 12 | "@protobufjs/aspromise": "^1.1.2", 13 | "@protobufjs/base64": "^1.1.2", 14 | "@protobufjs/codegen": "^2.0.4", 15 | "@protobufjs/eventemitter": "^1.1.0", 16 | "@protobufjs/fetch": "^1.1.0", 17 | "@protobufjs/float": "^1.0.2", 18 | "@protobufjs/inquire": "^1.1.0", 19 | "@protobufjs/path": "^1.1.2", 20 | "@protobufjs/pool": "^1.1.0", 21 | "@protobufjs/utf8": "^1.1.0", 22 | "@types/long": "^4.0.0", 23 | "@types/node": "^10.1.0", 24 | "long": "^4.0.0" 25 | }, 26 | "dependencies": { 27 | "@types/node": { 28 | "version": "10.17.55", 29 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.55.tgz", 30 | "integrity": "sha512-koZJ89uLZufDvToeWO5BrC4CR4OUfHnUz2qoPs/daQH6qq3IN62QFxCTZ+bKaCE0xaoCAJYE4AXre8AbghCrhg==" 31 | } 32 | } 33 | }, 34 | "@apollographql/apollo-tools": { 35 | "version": "0.4.9", 36 | "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.4.9.tgz", 37 | "integrity": "sha512-M50pk8oo3CGTu4waGOklIX3YtTZoPfWG9K/G9WB8NpyQGA1OwYTiBFv94XqUtKElTDoFwoMXpMQd3Wy5dINvxA==", 38 | "requires": { 39 | "apollo-env": "^0.6.6" 40 | } 41 | }, 42 | "@apollographql/graphql-playground-html": { 43 | "version": "1.6.27", 44 | "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz", 45 | "integrity": "sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw==", 46 | "requires": { 47 | "xss": "^1.0.8" 48 | } 49 | }, 50 | "@apollographql/graphql-upload-8-fork": { 51 | "version": "8.1.3", 52 | "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz", 53 | "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==", 54 | "requires": { 55 | "@types/express": "*", 56 | "@types/fs-capacitor": "*", 57 | "@types/koa": "*", 58 | "busboy": "^0.3.1", 59 | "fs-capacitor": "^2.0.4", 60 | "http-errors": "^1.7.3", 61 | "object-path": "^0.11.4" 62 | } 63 | }, 64 | "@babel/code-frame": { 65 | "version": "7.12.13", 66 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", 67 | "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", 68 | "dev": true, 69 | "requires": { 70 | "@babel/highlight": "^7.12.13" 71 | } 72 | }, 73 | "@babel/helper-validator-identifier": { 74 | "version": "7.12.11", 75 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", 76 | "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", 77 | "dev": true 78 | }, 79 | "@babel/highlight": { 80 | "version": "7.13.10", 81 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", 82 | "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", 83 | "dev": true, 84 | "requires": { 85 | "@babel/helper-validator-identifier": "^7.12.11", 86 | "chalk": "^2.0.0", 87 | "js-tokens": "^4.0.0" 88 | }, 89 | "dependencies": { 90 | "chalk": { 91 | "version": "2.4.2", 92 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 93 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 94 | "dev": true, 95 | "requires": { 96 | "ansi-styles": "^3.2.1", 97 | "escape-string-regexp": "^1.0.5", 98 | "supports-color": "^5.3.0" 99 | } 100 | } 101 | } 102 | }, 103 | "@prisma/client": { 104 | "version": "2.20.1", 105 | "resolved": "https://registry.npmjs.org/@prisma/client/-/client-2.20.1.tgz", 106 | "integrity": "sha512-/IYPubBi55rNMHfE0wwglA6eTWEZD77oz+x+3Mm9ji2lDKdS1lnYKZ0wZX0E3AB8gTNL/zsGtfzmfjgn3ePyIw==", 107 | "requires": { 108 | "@prisma/engines-version": "2.20.0-26.60ba6551f29b17d7d6ce479e5733c70d9c00860e" 109 | } 110 | }, 111 | "@prisma/engines": { 112 | "version": "2.20.0-26.60ba6551f29b17d7d6ce479e5733c70d9c00860e", 113 | "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-2.20.0-26.60ba6551f29b17d7d6ce479e5733c70d9c00860e.tgz", 114 | "integrity": "sha512-zOWETm7DTRvlwf/CekPNSeJe6EC5bn2IFexd74wM9zgBXCZo+1sMDuNGtCqIt4Rzv8CcimEgyzrEFVq0LPV8qg==", 115 | "dev": true 116 | }, 117 | "@prisma/engines-version": { 118 | "version": "2.20.0-26.60ba6551f29b17d7d6ce479e5733c70d9c00860e", 119 | "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-2.20.0-26.60ba6551f29b17d7d6ce479e5733c70d9c00860e.tgz", 120 | "integrity": "sha512-fJhbGZXm2SPs/RsI79Ew4SFe+6QmChNdgU2I/SIjmU18bUgK8f1TBEWnVtFdBqEDHYPGxbpaianF7lp04KN7EA==" 121 | }, 122 | "@protobufjs/aspromise": { 123 | "version": "1.1.2", 124 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", 125 | "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" 126 | }, 127 | "@protobufjs/base64": { 128 | "version": "1.1.2", 129 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", 130 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" 131 | }, 132 | "@protobufjs/codegen": { 133 | "version": "2.0.4", 134 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", 135 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" 136 | }, 137 | "@protobufjs/eventemitter": { 138 | "version": "1.1.0", 139 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", 140 | "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" 141 | }, 142 | "@protobufjs/fetch": { 143 | "version": "1.1.0", 144 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", 145 | "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", 146 | "requires": { 147 | "@protobufjs/aspromise": "^1.1.1", 148 | "@protobufjs/inquire": "^1.1.0" 149 | } 150 | }, 151 | "@protobufjs/float": { 152 | "version": "1.0.2", 153 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", 154 | "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" 155 | }, 156 | "@protobufjs/inquire": { 157 | "version": "1.1.0", 158 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", 159 | "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" 160 | }, 161 | "@protobufjs/path": { 162 | "version": "1.1.2", 163 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", 164 | "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" 165 | }, 166 | "@protobufjs/pool": { 167 | "version": "1.1.0", 168 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", 169 | "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" 170 | }, 171 | "@protobufjs/utf8": { 172 | "version": "1.1.0", 173 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", 174 | "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" 175 | }, 176 | "@serverless/typescript": { 177 | "version": "2.30.3", 178 | "resolved": "https://registry.npmjs.org/@serverless/typescript/-/typescript-2.30.3.tgz", 179 | "integrity": "sha512-ULlTcOQ8a9KEcnnWzZdrapNFEVDFNTe75HQaAa3qAFf4usQaXrS6QztEOZhopVYg74JRStWd6LrxXrxjs5ZThA==", 180 | "dev": true 181 | }, 182 | "@types/accepts": { 183 | "version": "1.3.5", 184 | "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", 185 | "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", 186 | "requires": { 187 | "@types/node": "*" 188 | } 189 | }, 190 | "@types/aws-lambda": { 191 | "version": "8.10.72", 192 | "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.72.tgz", 193 | "integrity": "sha512-jOrTwAhSiUtBIN/QsWNKlI4+4aDtpZ0sr2BRvKW6XQZdspgHUSHPcuzxbzCRiHUiDQ+0026u5TSE38VyIhNnfA==" 194 | }, 195 | "@types/body-parser": { 196 | "version": "1.19.0", 197 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", 198 | "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", 199 | "requires": { 200 | "@types/connect": "*", 201 | "@types/node": "*" 202 | } 203 | }, 204 | "@types/connect": { 205 | "version": "3.4.34", 206 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", 207 | "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", 208 | "requires": { 209 | "@types/node": "*" 210 | } 211 | }, 212 | "@types/content-disposition": { 213 | "version": "0.5.3", 214 | "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.3.tgz", 215 | "integrity": "sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg==" 216 | }, 217 | "@types/cookies": { 218 | "version": "0.7.6", 219 | "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.6.tgz", 220 | "integrity": "sha512-FK4U5Qyn7/Sc5ih233OuHO0qAkOpEcD/eG6584yEiLKizTFRny86qHLe/rej3HFQrkBuUjF4whFliAdODbVN/w==", 221 | "requires": { 222 | "@types/connect": "*", 223 | "@types/express": "*", 224 | "@types/keygrip": "*", 225 | "@types/node": "*" 226 | } 227 | }, 228 | "@types/eslint": { 229 | "version": "7.2.7", 230 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz", 231 | "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==", 232 | "dev": true, 233 | "requires": { 234 | "@types/estree": "*", 235 | "@types/json-schema": "*" 236 | } 237 | }, 238 | "@types/eslint-scope": { 239 | "version": "3.7.0", 240 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", 241 | "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", 242 | "dev": true, 243 | "requires": { 244 | "@types/eslint": "*", 245 | "@types/estree": "*" 246 | } 247 | }, 248 | "@types/estree": { 249 | "version": "0.0.46", 250 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", 251 | "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", 252 | "dev": true 253 | }, 254 | "@types/express": { 255 | "version": "4.17.11", 256 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", 257 | "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", 258 | "requires": { 259 | "@types/body-parser": "*", 260 | "@types/express-serve-static-core": "^4.17.18", 261 | "@types/qs": "*", 262 | "@types/serve-static": "*" 263 | } 264 | }, 265 | "@types/express-serve-static-core": { 266 | "version": "4.17.19", 267 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", 268 | "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", 269 | "requires": { 270 | "@types/node": "*", 271 | "@types/qs": "*", 272 | "@types/range-parser": "*" 273 | } 274 | }, 275 | "@types/fs-capacitor": { 276 | "version": "2.0.0", 277 | "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", 278 | "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", 279 | "requires": { 280 | "@types/node": "*" 281 | } 282 | }, 283 | "@types/http-assert": { 284 | "version": "1.5.1", 285 | "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.1.tgz", 286 | "integrity": "sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ==" 287 | }, 288 | "@types/http-errors": { 289 | "version": "1.8.0", 290 | "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.0.tgz", 291 | "integrity": "sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA==" 292 | }, 293 | "@types/json-schema": { 294 | "version": "7.0.7", 295 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", 296 | "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", 297 | "dev": true 298 | }, 299 | "@types/keygrip": { 300 | "version": "1.0.2", 301 | "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", 302 | "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" 303 | }, 304 | "@types/koa": { 305 | "version": "2.13.1", 306 | "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.1.tgz", 307 | "integrity": "sha512-Qbno7FWom9nNqu0yHZ6A0+RWt4mrYBhw3wpBAQ3+IuzGcLlfeYkzZrnMq5wsxulN2np8M4KKeUpTodsOsSad5Q==", 308 | "requires": { 309 | "@types/accepts": "*", 310 | "@types/content-disposition": "*", 311 | "@types/cookies": "*", 312 | "@types/http-assert": "*", 313 | "@types/http-errors": "*", 314 | "@types/keygrip": "*", 315 | "@types/koa-compose": "*", 316 | "@types/node": "*" 317 | } 318 | }, 319 | "@types/koa-compose": { 320 | "version": "3.2.5", 321 | "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", 322 | "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", 323 | "requires": { 324 | "@types/koa": "*" 325 | } 326 | }, 327 | "@types/long": { 328 | "version": "4.0.1", 329 | "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", 330 | "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" 331 | }, 332 | "@types/mime": { 333 | "version": "1.3.2", 334 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 335 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 336 | }, 337 | "@types/node": { 338 | "version": "14.14.35", 339 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", 340 | "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==" 341 | }, 342 | "@types/node-fetch": { 343 | "version": "2.5.7", 344 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", 345 | "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", 346 | "requires": { 347 | "@types/node": "*", 348 | "form-data": "^3.0.0" 349 | } 350 | }, 351 | "@types/parse-json": { 352 | "version": "4.0.0", 353 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 354 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", 355 | "dev": true 356 | }, 357 | "@types/qs": { 358 | "version": "6.9.6", 359 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", 360 | "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" 361 | }, 362 | "@types/range-parser": { 363 | "version": "1.2.3", 364 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", 365 | "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" 366 | }, 367 | "@types/serve-static": { 368 | "version": "1.13.9", 369 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", 370 | "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", 371 | "requires": { 372 | "@types/mime": "^1", 373 | "@types/node": "*" 374 | } 375 | }, 376 | "@types/ws": { 377 | "version": "7.4.0", 378 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.0.tgz", 379 | "integrity": "sha512-Y29uQ3Uy+58bZrFLhX36hcI3Np37nqWE7ky5tjiDoy1GDZnIwVxS0CgF+s+1bXMzjKBFy+fqaRfb708iNzdinw==", 380 | "requires": { 381 | "@types/node": "*" 382 | } 383 | }, 384 | "@webassemblyjs/ast": { 385 | "version": "1.11.0", 386 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", 387 | "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", 388 | "dev": true, 389 | "requires": { 390 | "@webassemblyjs/helper-numbers": "1.11.0", 391 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0" 392 | } 393 | }, 394 | "@webassemblyjs/floating-point-hex-parser": { 395 | "version": "1.11.0", 396 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", 397 | "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", 398 | "dev": true 399 | }, 400 | "@webassemblyjs/helper-api-error": { 401 | "version": "1.11.0", 402 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", 403 | "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", 404 | "dev": true 405 | }, 406 | "@webassemblyjs/helper-buffer": { 407 | "version": "1.11.0", 408 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", 409 | "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", 410 | "dev": true 411 | }, 412 | "@webassemblyjs/helper-numbers": { 413 | "version": "1.11.0", 414 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", 415 | "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", 416 | "dev": true, 417 | "requires": { 418 | "@webassemblyjs/floating-point-hex-parser": "1.11.0", 419 | "@webassemblyjs/helper-api-error": "1.11.0", 420 | "@xtuc/long": "4.2.2" 421 | } 422 | }, 423 | "@webassemblyjs/helper-wasm-bytecode": { 424 | "version": "1.11.0", 425 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", 426 | "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", 427 | "dev": true 428 | }, 429 | "@webassemblyjs/helper-wasm-section": { 430 | "version": "1.11.0", 431 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", 432 | "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", 433 | "dev": true, 434 | "requires": { 435 | "@webassemblyjs/ast": "1.11.0", 436 | "@webassemblyjs/helper-buffer": "1.11.0", 437 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0", 438 | "@webassemblyjs/wasm-gen": "1.11.0" 439 | } 440 | }, 441 | "@webassemblyjs/ieee754": { 442 | "version": "1.11.0", 443 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", 444 | "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", 445 | "dev": true, 446 | "requires": { 447 | "@xtuc/ieee754": "^1.2.0" 448 | } 449 | }, 450 | "@webassemblyjs/leb128": { 451 | "version": "1.11.0", 452 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", 453 | "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", 454 | "dev": true, 455 | "requires": { 456 | "@xtuc/long": "4.2.2" 457 | } 458 | }, 459 | "@webassemblyjs/utf8": { 460 | "version": "1.11.0", 461 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", 462 | "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", 463 | "dev": true 464 | }, 465 | "@webassemblyjs/wasm-edit": { 466 | "version": "1.11.0", 467 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", 468 | "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", 469 | "dev": true, 470 | "requires": { 471 | "@webassemblyjs/ast": "1.11.0", 472 | "@webassemblyjs/helper-buffer": "1.11.0", 473 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0", 474 | "@webassemblyjs/helper-wasm-section": "1.11.0", 475 | "@webassemblyjs/wasm-gen": "1.11.0", 476 | "@webassemblyjs/wasm-opt": "1.11.0", 477 | "@webassemblyjs/wasm-parser": "1.11.0", 478 | "@webassemblyjs/wast-printer": "1.11.0" 479 | } 480 | }, 481 | "@webassemblyjs/wasm-gen": { 482 | "version": "1.11.0", 483 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", 484 | "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", 485 | "dev": true, 486 | "requires": { 487 | "@webassemblyjs/ast": "1.11.0", 488 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0", 489 | "@webassemblyjs/ieee754": "1.11.0", 490 | "@webassemblyjs/leb128": "1.11.0", 491 | "@webassemblyjs/utf8": "1.11.0" 492 | } 493 | }, 494 | "@webassemblyjs/wasm-opt": { 495 | "version": "1.11.0", 496 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", 497 | "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", 498 | "dev": true, 499 | "requires": { 500 | "@webassemblyjs/ast": "1.11.0", 501 | "@webassemblyjs/helper-buffer": "1.11.0", 502 | "@webassemblyjs/wasm-gen": "1.11.0", 503 | "@webassemblyjs/wasm-parser": "1.11.0" 504 | } 505 | }, 506 | "@webassemblyjs/wasm-parser": { 507 | "version": "1.11.0", 508 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", 509 | "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", 510 | "dev": true, 511 | "requires": { 512 | "@webassemblyjs/ast": "1.11.0", 513 | "@webassemblyjs/helper-api-error": "1.11.0", 514 | "@webassemblyjs/helper-wasm-bytecode": "1.11.0", 515 | "@webassemblyjs/ieee754": "1.11.0", 516 | "@webassemblyjs/leb128": "1.11.0", 517 | "@webassemblyjs/utf8": "1.11.0" 518 | } 519 | }, 520 | "@webassemblyjs/wast-printer": { 521 | "version": "1.11.0", 522 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", 523 | "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", 524 | "dev": true, 525 | "requires": { 526 | "@webassemblyjs/ast": "1.11.0", 527 | "@xtuc/long": "4.2.2" 528 | } 529 | }, 530 | "@wry/equality": { 531 | "version": "0.1.11", 532 | "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", 533 | "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", 534 | "requires": { 535 | "tslib": "^1.9.3" 536 | } 537 | }, 538 | "@xtuc/ieee754": { 539 | "version": "1.2.0", 540 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 541 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 542 | "dev": true 543 | }, 544 | "@xtuc/long": { 545 | "version": "4.2.2", 546 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 547 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 548 | "dev": true 549 | }, 550 | "acorn": { 551 | "version": "8.1.0", 552 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", 553 | "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", 554 | "dev": true 555 | }, 556 | "ajv": { 557 | "version": "6.12.6", 558 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 559 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 560 | "dev": true, 561 | "requires": { 562 | "fast-deep-equal": "^3.1.1", 563 | "fast-json-stable-stringify": "^2.0.0", 564 | "json-schema-traverse": "^0.4.1", 565 | "uri-js": "^4.2.2" 566 | } 567 | }, 568 | "ajv-keywords": { 569 | "version": "3.5.2", 570 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 571 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 572 | "dev": true 573 | }, 574 | "ansi-regex": { 575 | "version": "5.0.0", 576 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 577 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 578 | "dev": true 579 | }, 580 | "ansi-styles": { 581 | "version": "3.2.1", 582 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 583 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 584 | "dev": true, 585 | "requires": { 586 | "color-convert": "^1.9.0" 587 | } 588 | }, 589 | "anymatch": { 590 | "version": "3.1.1", 591 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 592 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 593 | "dev": true, 594 | "requires": { 595 | "normalize-path": "^3.0.0", 596 | "picomatch": "^2.0.4" 597 | } 598 | }, 599 | "apollo-cache-control": { 600 | "version": "0.11.6", 601 | "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.11.6.tgz", 602 | "integrity": "sha512-YZ+uuIG+fPy+mkpBS2qKF0v1qlzZ3PW6xZVaDukeK3ed3iAs4L/2YnkTqau3OmoF/VPzX2FmSkocX/OVd59YSw==", 603 | "requires": { 604 | "apollo-server-env": "^3.0.0", 605 | "apollo-server-plugin-base": "^0.10.4" 606 | } 607 | }, 608 | "apollo-datasource": { 609 | "version": "0.7.3", 610 | "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.7.3.tgz", 611 | "integrity": "sha512-PE0ucdZYjHjUyXrFWRwT02yLcx2DACsZ0jm1Mp/0m/I9nZu/fEkvJxfsryXB6JndpmQO77gQHixf/xGCN976kA==", 612 | "requires": { 613 | "apollo-server-caching": "^0.5.3", 614 | "apollo-server-env": "^3.0.0" 615 | } 616 | }, 617 | "apollo-env": { 618 | "version": "0.6.6", 619 | "resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.6.6.tgz", 620 | "integrity": "sha512-hXI9PjJtzmD34XviBU+4sPMOxnifYrHVmxpjykqI/dUD2G3yTiuRaiQqwRwB2RCdwC1Ug/jBfoQ/NHDTnnjndQ==", 621 | "requires": { 622 | "@types/node-fetch": "2.5.7", 623 | "core-js": "^3.0.1", 624 | "node-fetch": "^2.2.0", 625 | "sha.js": "^2.4.11" 626 | } 627 | }, 628 | "apollo-graphql": { 629 | "version": "0.6.1", 630 | "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.6.1.tgz", 631 | "integrity": "sha512-ZRXAV+k+hboCVS+FW86FW/QgnDR7gm/xMUwJPGXEbV53OLGuQQdIT0NCYK7AzzVkCfsbb7NJ3mmEclkZY9uuxQ==", 632 | "requires": { 633 | "apollo-env": "^0.6.6", 634 | "lodash.sortby": "^4.7.0" 635 | } 636 | }, 637 | "apollo-link": { 638 | "version": "1.2.14", 639 | "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", 640 | "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", 641 | "requires": { 642 | "apollo-utilities": "^1.3.0", 643 | "ts-invariant": "^0.4.0", 644 | "tslib": "^1.9.3", 645 | "zen-observable-ts": "^0.8.21" 646 | } 647 | }, 648 | "apollo-reporting-protobuf": { 649 | "version": "0.6.2", 650 | "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.6.2.tgz", 651 | "integrity": "sha512-WJTJxLM+MRHNUxt1RTl4zD0HrLdH44F2mDzMweBj1yHL0kSt8I1WwoiF/wiGVSpnG48LZrBegCaOJeuVbJTbtw==", 652 | "requires": { 653 | "@apollo/protobufjs": "^1.0.3" 654 | } 655 | }, 656 | "apollo-server-caching": { 657 | "version": "0.5.3", 658 | "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.5.3.tgz", 659 | "integrity": "sha512-iMi3087iphDAI0U2iSBE9qtx9kQoMMEWr6w+LwXruBD95ek9DWyj7OeC2U/ngLjRsXM43DoBDXlu7R+uMjahrQ==", 660 | "requires": { 661 | "lru-cache": "^6.0.0" 662 | } 663 | }, 664 | "apollo-server-core": { 665 | "version": "2.21.2", 666 | "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.21.2.tgz", 667 | "integrity": "sha512-jIXMVQPOUzIOl4El/mzSixxJ5IDrqSk3L9uJ1U+ncwiQj0IjtkkyDSuYngcgyEi+KfO2lAzxeOiAy9fIjjkC2A==", 668 | "requires": { 669 | "@apollographql/apollo-tools": "^0.4.3", 670 | "@apollographql/graphql-playground-html": "1.6.27", 671 | "@apollographql/graphql-upload-8-fork": "^8.1.3", 672 | "@types/ws": "^7.0.0", 673 | "apollo-cache-control": "^0.11.6", 674 | "apollo-datasource": "^0.7.3", 675 | "apollo-graphql": "^0.6.0", 676 | "apollo-reporting-protobuf": "^0.6.2", 677 | "apollo-server-caching": "^0.5.3", 678 | "apollo-server-env": "^3.0.0", 679 | "apollo-server-errors": "^2.4.2", 680 | "apollo-server-plugin-base": "^0.10.4", 681 | "apollo-server-types": "^0.6.3", 682 | "apollo-tracing": "^0.12.2", 683 | "async-retry": "^1.2.1", 684 | "fast-json-stable-stringify": "^2.0.0", 685 | "graphql-extensions": "^0.12.8", 686 | "graphql-tag": "^2.11.0", 687 | "graphql-tools": "^4.0.8", 688 | "loglevel": "^1.6.7", 689 | "lru-cache": "^6.0.0", 690 | "sha.js": "^2.4.11", 691 | "subscriptions-transport-ws": "^0.9.11", 692 | "uuid": "^8.0.0", 693 | "ws": "^6.0.0" 694 | } 695 | }, 696 | "apollo-server-env": { 697 | "version": "3.0.0", 698 | "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.0.0.tgz", 699 | "integrity": "sha512-tPSN+VttnPsoQAl/SBVUpGbLA97MXG990XIwq6YUnJyAixrrsjW1xYG7RlaOqetxm80y5mBZKLrRDiiSsW/vog==", 700 | "requires": { 701 | "node-fetch": "^2.1.2", 702 | "util.promisify": "^1.0.0" 703 | } 704 | }, 705 | "apollo-server-errors": { 706 | "version": "2.4.2", 707 | "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.4.2.tgz", 708 | "integrity": "sha512-FeGxW3Batn6sUtX3OVVUm7o56EgjxDlmgpTLNyWcLb0j6P8mw9oLNyAm3B+deHA4KNdNHO5BmHS2g1SJYjqPCQ==" 709 | }, 710 | "apollo-server-lambda": { 711 | "version": "2.21.2", 712 | "resolved": "https://registry.npmjs.org/apollo-server-lambda/-/apollo-server-lambda-2.21.2.tgz", 713 | "integrity": "sha512-lpVn+wGvV8SQGusDIl21sJeFokI97TTP136clZoJ8CzI17k9ASOt+Dq97fnEc6uNwCA/RESypMjEwprnE1lvyA==", 714 | "requires": { 715 | "@apollographql/graphql-playground-html": "1.6.27", 716 | "@types/aws-lambda": "^8.10.31", 717 | "apollo-server-core": "^2.21.2", 718 | "apollo-server-env": "^3.0.0", 719 | "apollo-server-types": "^0.6.3", 720 | "graphql-tools": "^4.0.8" 721 | } 722 | }, 723 | "apollo-server-plugin-base": { 724 | "version": "0.10.4", 725 | "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.10.4.tgz", 726 | "integrity": "sha512-HRhbyHgHFTLP0ImubQObYhSgpmVH4Rk1BinnceZmwudIVLKrqayIVOELdyext/QnSmmzg5W7vF3NLGBcVGMqDg==", 727 | "requires": { 728 | "apollo-server-types": "^0.6.3" 729 | } 730 | }, 731 | "apollo-server-types": { 732 | "version": "0.6.3", 733 | "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.6.3.tgz", 734 | "integrity": "sha512-aVR7SlSGGY41E1f11YYz5bvwA89uGmkVUtzMiklDhZ7IgRJhysT5Dflt5IuwDxp+NdQkIhVCErUXakopocFLAg==", 735 | "requires": { 736 | "apollo-reporting-protobuf": "^0.6.2", 737 | "apollo-server-caching": "^0.5.3", 738 | "apollo-server-env": "^3.0.0" 739 | } 740 | }, 741 | "apollo-tracing": { 742 | "version": "0.12.2", 743 | "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.12.2.tgz", 744 | "integrity": "sha512-SYN4o0C0wR1fyS3+P0FthyvsQVHFopdmN3IU64IaspR/RZScPxZ3Ae8uu++fTvkQflAkglnFM0aX6DkZERBp6w==", 745 | "requires": { 746 | "apollo-server-env": "^3.0.0", 747 | "apollo-server-plugin-base": "^0.10.4" 748 | } 749 | }, 750 | "apollo-utilities": { 751 | "version": "1.3.4", 752 | "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", 753 | "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", 754 | "requires": { 755 | "@wry/equality": "^0.1.2", 756 | "fast-json-stable-stringify": "^2.0.0", 757 | "ts-invariant": "^0.4.0", 758 | "tslib": "^1.10.0" 759 | } 760 | }, 761 | "archiver": { 762 | "version": "5.3.0", 763 | "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", 764 | "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", 765 | "dev": true, 766 | "requires": { 767 | "archiver-utils": "^2.1.0", 768 | "async": "^3.2.0", 769 | "buffer-crc32": "^0.2.1", 770 | "readable-stream": "^3.6.0", 771 | "readdir-glob": "^1.0.0", 772 | "tar-stream": "^2.2.0", 773 | "zip-stream": "^4.1.0" 774 | } 775 | }, 776 | "archiver-utils": { 777 | "version": "2.1.0", 778 | "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", 779 | "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", 780 | "dev": true, 781 | "requires": { 782 | "glob": "^7.1.4", 783 | "graceful-fs": "^4.2.0", 784 | "lazystream": "^1.0.0", 785 | "lodash.defaults": "^4.2.0", 786 | "lodash.difference": "^4.5.0", 787 | "lodash.flatten": "^4.4.0", 788 | "lodash.isplainobject": "^4.0.6", 789 | "lodash.union": "^4.6.0", 790 | "normalize-path": "^3.0.0", 791 | "readable-stream": "^2.0.0" 792 | }, 793 | "dependencies": { 794 | "readable-stream": { 795 | "version": "2.3.7", 796 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 797 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 798 | "dev": true, 799 | "requires": { 800 | "core-util-is": "~1.0.0", 801 | "inherits": "~2.0.3", 802 | "isarray": "~1.0.0", 803 | "process-nextick-args": "~2.0.0", 804 | "safe-buffer": "~5.1.1", 805 | "string_decoder": "~1.1.1", 806 | "util-deprecate": "~1.0.1" 807 | } 808 | } 809 | } 810 | }, 811 | "arg": { 812 | "version": "4.1.3", 813 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 814 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 815 | "dev": true 816 | }, 817 | "async": { 818 | "version": "3.2.0", 819 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", 820 | "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", 821 | "dev": true 822 | }, 823 | "async-limiter": { 824 | "version": "1.0.1", 825 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", 826 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" 827 | }, 828 | "async-retry": { 829 | "version": "1.3.1", 830 | "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz", 831 | "integrity": "sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA==", 832 | "requires": { 833 | "retry": "0.12.0" 834 | } 835 | }, 836 | "asynckit": { 837 | "version": "0.4.0", 838 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 839 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 840 | }, 841 | "at-least-node": { 842 | "version": "1.0.0", 843 | "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", 844 | "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", 845 | "dev": true 846 | }, 847 | "aws-sdk": { 848 | "version": "2.868.0", 849 | "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.868.0.tgz", 850 | "integrity": "sha512-ZayPsA/ycaAXqqa2oDyf8iUpl1WOLODZS8ZdvYj77L5owMQm0XC7yqiD+WHj9nToUECF9VAD+AKQMIN6695tVQ==", 851 | "requires": { 852 | "buffer": "4.9.2", 853 | "events": "1.1.1", 854 | "ieee754": "1.1.13", 855 | "jmespath": "0.15.0", 856 | "querystring": "0.2.0", 857 | "sax": "1.2.1", 858 | "url": "0.10.3", 859 | "uuid": "3.3.2", 860 | "xml2js": "0.4.19" 861 | }, 862 | "dependencies": { 863 | "buffer": { 864 | "version": "4.9.2", 865 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 866 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 867 | "requires": { 868 | "base64-js": "^1.0.2", 869 | "ieee754": "^1.1.4", 870 | "isarray": "^1.0.0" 871 | } 872 | }, 873 | "events": { 874 | "version": "1.1.1", 875 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", 876 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" 877 | }, 878 | "ieee754": { 879 | "version": "1.1.13", 880 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 881 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" 882 | }, 883 | "uuid": { 884 | "version": "3.3.2", 885 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", 886 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" 887 | } 888 | } 889 | }, 890 | "backo2": { 891 | "version": "1.0.2", 892 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", 893 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" 894 | }, 895 | "balanced-match": { 896 | "version": "1.0.0", 897 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 898 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 899 | "dev": true 900 | }, 901 | "base64-js": { 902 | "version": "1.5.1", 903 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 904 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 905 | }, 906 | "bestzip": { 907 | "version": "2.2.0", 908 | "resolved": "https://registry.npmjs.org/bestzip/-/bestzip-2.2.0.tgz", 909 | "integrity": "sha512-MCuN3sjLA//zKhheXSOAMlFtj4oZEHKCa+gHGLYUDnL2VRuuwARVV+QKMwtbDk5CL2AQs+3Dw20h8KJJrbENSg==", 910 | "dev": true, 911 | "requires": { 912 | "archiver": "^5.3.0", 913 | "async": "^3.2.0", 914 | "glob": "^7.1.6", 915 | "which": "^2.0.2", 916 | "yargs": "^16.2.0" 917 | } 918 | }, 919 | "big.js": { 920 | "version": "5.2.2", 921 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 922 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 923 | "dev": true 924 | }, 925 | "binary-extensions": { 926 | "version": "2.2.0", 927 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 928 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 929 | "dev": true 930 | }, 931 | "bl": { 932 | "version": "4.1.0", 933 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 934 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 935 | "dev": true, 936 | "requires": { 937 | "buffer": "^5.5.0", 938 | "inherits": "^2.0.4", 939 | "readable-stream": "^3.4.0" 940 | } 941 | }, 942 | "bluebird": { 943 | "version": "3.7.2", 944 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 945 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 946 | "dev": true 947 | }, 948 | "brace-expansion": { 949 | "version": "1.1.11", 950 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 951 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 952 | "dev": true, 953 | "requires": { 954 | "balanced-match": "^1.0.0", 955 | "concat-map": "0.0.1" 956 | } 957 | }, 958 | "braces": { 959 | "version": "3.0.2", 960 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 961 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 962 | "dev": true, 963 | "requires": { 964 | "fill-range": "^7.0.1" 965 | } 966 | }, 967 | "browserslist": { 968 | "version": "4.16.3", 969 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", 970 | "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", 971 | "dev": true, 972 | "requires": { 973 | "caniuse-lite": "^1.0.30001181", 974 | "colorette": "^1.2.1", 975 | "electron-to-chromium": "^1.3.649", 976 | "escalade": "^3.1.1", 977 | "node-releases": "^1.1.70" 978 | } 979 | }, 980 | "buffer": { 981 | "version": "5.7.1", 982 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 983 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 984 | "dev": true, 985 | "requires": { 986 | "base64-js": "^1.3.1", 987 | "ieee754": "^1.1.13" 988 | } 989 | }, 990 | "buffer-crc32": { 991 | "version": "0.2.13", 992 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 993 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 994 | "dev": true 995 | }, 996 | "buffer-from": { 997 | "version": "1.1.1", 998 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 999 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 1000 | }, 1001 | "builtin-modules": { 1002 | "version": "3.2.0", 1003 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", 1004 | "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", 1005 | "dev": true 1006 | }, 1007 | "busboy": { 1008 | "version": "0.3.1", 1009 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", 1010 | "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", 1011 | "requires": { 1012 | "dicer": "0.3.0" 1013 | } 1014 | }, 1015 | "call-bind": { 1016 | "version": "1.0.2", 1017 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1018 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1019 | "requires": { 1020 | "function-bind": "^1.1.1", 1021 | "get-intrinsic": "^1.0.2" 1022 | } 1023 | }, 1024 | "callsites": { 1025 | "version": "3.1.0", 1026 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1027 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1028 | "dev": true 1029 | }, 1030 | "caniuse-lite": { 1031 | "version": "1.0.30001203", 1032 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", 1033 | "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==", 1034 | "dev": true 1035 | }, 1036 | "chalk": { 1037 | "version": "4.1.0", 1038 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 1039 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 1040 | "dev": true, 1041 | "requires": { 1042 | "ansi-styles": "^4.1.0", 1043 | "supports-color": "^7.1.0" 1044 | }, 1045 | "dependencies": { 1046 | "ansi-styles": { 1047 | "version": "4.3.0", 1048 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1049 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1050 | "dev": true, 1051 | "requires": { 1052 | "color-convert": "^2.0.1" 1053 | } 1054 | }, 1055 | "color-convert": { 1056 | "version": "2.0.1", 1057 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1058 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1059 | "dev": true, 1060 | "requires": { 1061 | "color-name": "~1.1.4" 1062 | } 1063 | }, 1064 | "color-name": { 1065 | "version": "1.1.4", 1066 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1067 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1068 | "dev": true 1069 | }, 1070 | "has-flag": { 1071 | "version": "4.0.0", 1072 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1073 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1074 | "dev": true 1075 | }, 1076 | "supports-color": { 1077 | "version": "7.2.0", 1078 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1079 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1080 | "dev": true, 1081 | "requires": { 1082 | "has-flag": "^4.0.0" 1083 | } 1084 | } 1085 | } 1086 | }, 1087 | "chokidar": { 1088 | "version": "3.5.1", 1089 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 1090 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 1091 | "dev": true, 1092 | "requires": { 1093 | "anymatch": "~3.1.1", 1094 | "braces": "~3.0.2", 1095 | "fsevents": "~2.3.1", 1096 | "glob-parent": "~5.1.0", 1097 | "is-binary-path": "~2.1.0", 1098 | "is-glob": "~4.0.1", 1099 | "normalize-path": "~3.0.0", 1100 | "readdirp": "~3.5.0" 1101 | } 1102 | }, 1103 | "chrome-trace-event": { 1104 | "version": "1.0.2", 1105 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", 1106 | "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", 1107 | "dev": true, 1108 | "requires": { 1109 | "tslib": "^1.9.0" 1110 | } 1111 | }, 1112 | "cliui": { 1113 | "version": "7.0.4", 1114 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1115 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1116 | "dev": true, 1117 | "requires": { 1118 | "string-width": "^4.2.0", 1119 | "strip-ansi": "^6.0.0", 1120 | "wrap-ansi": "^7.0.0" 1121 | } 1122 | }, 1123 | "color-convert": { 1124 | "version": "1.9.3", 1125 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1126 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1127 | "dev": true, 1128 | "requires": { 1129 | "color-name": "1.1.3" 1130 | } 1131 | }, 1132 | "color-name": { 1133 | "version": "1.1.3", 1134 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1135 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1136 | "dev": true 1137 | }, 1138 | "colorette": { 1139 | "version": "1.2.2", 1140 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", 1141 | "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", 1142 | "dev": true 1143 | }, 1144 | "combined-stream": { 1145 | "version": "1.0.8", 1146 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1147 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1148 | "requires": { 1149 | "delayed-stream": "~1.0.0" 1150 | } 1151 | }, 1152 | "commander": { 1153 | "version": "2.20.3", 1154 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1155 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 1156 | }, 1157 | "compress-commons": { 1158 | "version": "4.1.0", 1159 | "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz", 1160 | "integrity": "sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA==", 1161 | "dev": true, 1162 | "requires": { 1163 | "buffer-crc32": "^0.2.13", 1164 | "crc32-stream": "^4.0.1", 1165 | "normalize-path": "^3.0.0", 1166 | "readable-stream": "^3.6.0" 1167 | } 1168 | }, 1169 | "concat-map": { 1170 | "version": "0.0.1", 1171 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1172 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1173 | "dev": true 1174 | }, 1175 | "core-js": { 1176 | "version": "3.9.1", 1177 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", 1178 | "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==" 1179 | }, 1180 | "core-util-is": { 1181 | "version": "1.0.2", 1182 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1183 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1184 | "dev": true 1185 | }, 1186 | "cosmiconfig": { 1187 | "version": "6.0.0", 1188 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", 1189 | "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", 1190 | "dev": true, 1191 | "requires": { 1192 | "@types/parse-json": "^4.0.0", 1193 | "import-fresh": "^3.1.0", 1194 | "parse-json": "^5.0.0", 1195 | "path-type": "^4.0.0", 1196 | "yaml": "^1.7.2" 1197 | } 1198 | }, 1199 | "crc-32": { 1200 | "version": "1.2.0", 1201 | "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", 1202 | "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", 1203 | "dev": true, 1204 | "requires": { 1205 | "exit-on-epipe": "~1.0.1", 1206 | "printj": "~1.1.0" 1207 | } 1208 | }, 1209 | "crc32-stream": { 1210 | "version": "4.0.2", 1211 | "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", 1212 | "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", 1213 | "dev": true, 1214 | "requires": { 1215 | "crc-32": "^1.2.0", 1216 | "readable-stream": "^3.4.0" 1217 | } 1218 | }, 1219 | "create-require": { 1220 | "version": "1.1.1", 1221 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 1222 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 1223 | "dev": true 1224 | }, 1225 | "cssfilter": { 1226 | "version": "0.0.10", 1227 | "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", 1228 | "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" 1229 | }, 1230 | "deepmerge": { 1231 | "version": "4.2.2", 1232 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 1233 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 1234 | "dev": true 1235 | }, 1236 | "define-properties": { 1237 | "version": "1.1.3", 1238 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1239 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1240 | "requires": { 1241 | "object-keys": "^1.0.12" 1242 | } 1243 | }, 1244 | "delayed-stream": { 1245 | "version": "1.0.0", 1246 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1247 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 1248 | }, 1249 | "depd": { 1250 | "version": "1.1.2", 1251 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 1252 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 1253 | }, 1254 | "deprecated-decorator": { 1255 | "version": "0.1.6", 1256 | "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", 1257 | "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" 1258 | }, 1259 | "dicer": { 1260 | "version": "0.3.0", 1261 | "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", 1262 | "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", 1263 | "requires": { 1264 | "streamsearch": "0.1.2" 1265 | } 1266 | }, 1267 | "diff": { 1268 | "version": "4.0.2", 1269 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 1270 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 1271 | "dev": true 1272 | }, 1273 | "electron-to-chromium": { 1274 | "version": "1.3.693", 1275 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz", 1276 | "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==", 1277 | "dev": true 1278 | }, 1279 | "emoji-regex": { 1280 | "version": "8.0.0", 1281 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1282 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1283 | "dev": true 1284 | }, 1285 | "emojis-list": { 1286 | "version": "3.0.0", 1287 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 1288 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", 1289 | "dev": true 1290 | }, 1291 | "end-of-stream": { 1292 | "version": "1.4.4", 1293 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1294 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1295 | "dev": true, 1296 | "requires": { 1297 | "once": "^1.4.0" 1298 | } 1299 | }, 1300 | "enhanced-resolve": { 1301 | "version": "4.5.0", 1302 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", 1303 | "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", 1304 | "dev": true, 1305 | "requires": { 1306 | "graceful-fs": "^4.1.2", 1307 | "memory-fs": "^0.5.0", 1308 | "tapable": "^1.0.0" 1309 | } 1310 | }, 1311 | "errno": { 1312 | "version": "0.1.8", 1313 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", 1314 | "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", 1315 | "dev": true, 1316 | "requires": { 1317 | "prr": "~1.0.1" 1318 | } 1319 | }, 1320 | "error-ex": { 1321 | "version": "1.3.2", 1322 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1323 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1324 | "dev": true, 1325 | "requires": { 1326 | "is-arrayish": "^0.2.1" 1327 | } 1328 | }, 1329 | "es-abstract": { 1330 | "version": "1.18.0", 1331 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", 1332 | "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", 1333 | "requires": { 1334 | "call-bind": "^1.0.2", 1335 | "es-to-primitive": "^1.2.1", 1336 | "function-bind": "^1.1.1", 1337 | "get-intrinsic": "^1.1.1", 1338 | "has": "^1.0.3", 1339 | "has-symbols": "^1.0.2", 1340 | "is-callable": "^1.2.3", 1341 | "is-negative-zero": "^2.0.1", 1342 | "is-regex": "^1.1.2", 1343 | "is-string": "^1.0.5", 1344 | "object-inspect": "^1.9.0", 1345 | "object-keys": "^1.1.1", 1346 | "object.assign": "^4.1.2", 1347 | "string.prototype.trimend": "^1.0.4", 1348 | "string.prototype.trimstart": "^1.0.4", 1349 | "unbox-primitive": "^1.0.0" 1350 | } 1351 | }, 1352 | "es-module-lexer": { 1353 | "version": "0.4.1", 1354 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", 1355 | "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", 1356 | "dev": true 1357 | }, 1358 | "es-to-primitive": { 1359 | "version": "1.2.1", 1360 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 1361 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 1362 | "requires": { 1363 | "is-callable": "^1.1.4", 1364 | "is-date-object": "^1.0.1", 1365 | "is-symbol": "^1.0.2" 1366 | } 1367 | }, 1368 | "escalade": { 1369 | "version": "3.1.1", 1370 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1371 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1372 | "dev": true 1373 | }, 1374 | "escape-string-regexp": { 1375 | "version": "1.0.5", 1376 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1377 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1378 | "dev": true 1379 | }, 1380 | "eslint-scope": { 1381 | "version": "5.1.1", 1382 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1383 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1384 | "dev": true, 1385 | "requires": { 1386 | "esrecurse": "^4.3.0", 1387 | "estraverse": "^4.1.1" 1388 | } 1389 | }, 1390 | "esrecurse": { 1391 | "version": "4.3.0", 1392 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1393 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1394 | "dev": true, 1395 | "requires": { 1396 | "estraverse": "^5.2.0" 1397 | }, 1398 | "dependencies": { 1399 | "estraverse": { 1400 | "version": "5.2.0", 1401 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1402 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1403 | "dev": true 1404 | } 1405 | } 1406 | }, 1407 | "estraverse": { 1408 | "version": "4.3.0", 1409 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1410 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1411 | "dev": true 1412 | }, 1413 | "eventemitter3": { 1414 | "version": "3.1.2", 1415 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", 1416 | "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" 1417 | }, 1418 | "events": { 1419 | "version": "3.3.0", 1420 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1421 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1422 | "dev": true 1423 | }, 1424 | "exit-on-epipe": { 1425 | "version": "1.0.1", 1426 | "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", 1427 | "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", 1428 | "dev": true 1429 | }, 1430 | "fast-deep-equal": { 1431 | "version": "3.1.3", 1432 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1433 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1434 | "dev": true 1435 | }, 1436 | "fast-json-stable-stringify": { 1437 | "version": "2.1.0", 1438 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1439 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1440 | }, 1441 | "fill-range": { 1442 | "version": "7.0.1", 1443 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1444 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1445 | "dev": true, 1446 | "requires": { 1447 | "to-regex-range": "^5.0.1" 1448 | } 1449 | }, 1450 | "for-each": { 1451 | "version": "0.3.3", 1452 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 1453 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 1454 | "requires": { 1455 | "is-callable": "^1.1.3" 1456 | } 1457 | }, 1458 | "fork-ts-checker-webpack-plugin": { 1459 | "version": "6.2.0", 1460 | "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.0.tgz", 1461 | "integrity": "sha512-DTNbOhq6lRdjYprukX54JMeYJgQ0zMow+R5BMLwWxEX2NAXthIkwnV8DBmsWjwNLSUItKZM4TCCJbtgrtKBu2Q==", 1462 | "dev": true, 1463 | "requires": { 1464 | "@babel/code-frame": "^7.8.3", 1465 | "@types/json-schema": "^7.0.5", 1466 | "chalk": "^4.1.0", 1467 | "chokidar": "^3.4.2", 1468 | "cosmiconfig": "^6.0.0", 1469 | "deepmerge": "^4.2.2", 1470 | "fs-extra": "^9.0.0", 1471 | "memfs": "^3.1.2", 1472 | "minimatch": "^3.0.4", 1473 | "schema-utils": "2.7.0", 1474 | "semver": "^7.3.2", 1475 | "tapable": "^1.0.0" 1476 | } 1477 | }, 1478 | "form-data": { 1479 | "version": "3.0.1", 1480 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", 1481 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", 1482 | "requires": { 1483 | "asynckit": "^0.4.0", 1484 | "combined-stream": "^1.0.8", 1485 | "mime-types": "^2.1.12" 1486 | } 1487 | }, 1488 | "fs-capacitor": { 1489 | "version": "2.0.4", 1490 | "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", 1491 | "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==" 1492 | }, 1493 | "fs-constants": { 1494 | "version": "1.0.0", 1495 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1496 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 1497 | "dev": true 1498 | }, 1499 | "fs-extra": { 1500 | "version": "9.1.0", 1501 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", 1502 | "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", 1503 | "dev": true, 1504 | "requires": { 1505 | "at-least-node": "^1.0.0", 1506 | "graceful-fs": "^4.2.0", 1507 | "jsonfile": "^6.0.1", 1508 | "universalify": "^2.0.0" 1509 | } 1510 | }, 1511 | "fs-monkey": { 1512 | "version": "1.0.1", 1513 | "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.1.tgz", 1514 | "integrity": "sha512-fcSa+wyTqZa46iWweI7/ZiUfegOZl0SG8+dltIwFXo7+zYU9J9kpS3NB6pZcSlJdhvIwp81Adx2XhZorncxiaA==", 1515 | "dev": true 1516 | }, 1517 | "fs.realpath": { 1518 | "version": "1.0.0", 1519 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1520 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1521 | "dev": true 1522 | }, 1523 | "fsevents": { 1524 | "version": "2.3.2", 1525 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1526 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1527 | "dev": true, 1528 | "optional": true 1529 | }, 1530 | "function-bind": { 1531 | "version": "1.1.1", 1532 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1533 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1534 | }, 1535 | "get-caller-file": { 1536 | "version": "2.0.5", 1537 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1538 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1539 | "dev": true 1540 | }, 1541 | "get-intrinsic": { 1542 | "version": "1.1.1", 1543 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1544 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1545 | "requires": { 1546 | "function-bind": "^1.1.1", 1547 | "has": "^1.0.3", 1548 | "has-symbols": "^1.0.1" 1549 | } 1550 | }, 1551 | "glob": { 1552 | "version": "7.1.6", 1553 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1554 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1555 | "dev": true, 1556 | "requires": { 1557 | "fs.realpath": "^1.0.0", 1558 | "inflight": "^1.0.4", 1559 | "inherits": "2", 1560 | "minimatch": "^3.0.4", 1561 | "once": "^1.3.0", 1562 | "path-is-absolute": "^1.0.0" 1563 | } 1564 | }, 1565 | "glob-parent": { 1566 | "version": "5.1.2", 1567 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1568 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1569 | "dev": true, 1570 | "requires": { 1571 | "is-glob": "^4.0.1" 1572 | } 1573 | }, 1574 | "glob-to-regexp": { 1575 | "version": "0.4.1", 1576 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 1577 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 1578 | "dev": true 1579 | }, 1580 | "graceful-fs": { 1581 | "version": "4.2.6", 1582 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", 1583 | "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", 1584 | "dev": true 1585 | }, 1586 | "graphql": { 1587 | "version": "15.5.0", 1588 | "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.0.tgz", 1589 | "integrity": "sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA==" 1590 | }, 1591 | "graphql-extensions": { 1592 | "version": "0.12.8", 1593 | "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.12.8.tgz", 1594 | "integrity": "sha512-xjsSaB6yKt9jarFNNdivl2VOx52WySYhxPgf8Y16g6GKZyAzBoIFiwyGw5PJDlOSUa6cpmzn6o7z8fVMbSAbkg==", 1595 | "requires": { 1596 | "@apollographql/apollo-tools": "^0.4.3", 1597 | "apollo-server-env": "^3.0.0", 1598 | "apollo-server-types": "^0.6.3" 1599 | } 1600 | }, 1601 | "graphql-lambda": { 1602 | "version": "1.0.0", 1603 | "resolved": "https://registry.npmjs.org/graphql-lambda/-/graphql-lambda-1.0.0.tgz", 1604 | "integrity": "sha512-ASZTDR9ft1LTYumqeD69/sltsVGKXLpFa1gRsg+zG+hSUeysagvOC37XxEVkgb7Sj0OZ6dSWdk/GQoMPC65QKQ==", 1605 | "requires": { 1606 | "@types/aws-lambda": "^8.10.36", 1607 | "apollo-server-core": "^2.9.14", 1608 | "apollo-server-lambda": "^2.9.14", 1609 | "aws-sdk": "^2.859.0", 1610 | "graphql": "^15.5.0", 1611 | "graphql-subscriptions": "^1.2.0", 1612 | "iterall": "^1.2.2", 1613 | "ulid": "^2.3.0" 1614 | } 1615 | }, 1616 | "graphql-subscriptions": { 1617 | "version": "1.2.1", 1618 | "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", 1619 | "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", 1620 | "requires": { 1621 | "iterall": "^1.3.0" 1622 | } 1623 | }, 1624 | "graphql-tag": { 1625 | "version": "2.11.0", 1626 | "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.11.0.tgz", 1627 | "integrity": "sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA==" 1628 | }, 1629 | "graphql-tools": { 1630 | "version": "4.0.8", 1631 | "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", 1632 | "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", 1633 | "requires": { 1634 | "apollo-link": "^1.2.14", 1635 | "apollo-utilities": "^1.0.1", 1636 | "deprecated-decorator": "^0.1.6", 1637 | "iterall": "^1.1.3", 1638 | "uuid": "^3.1.0" 1639 | }, 1640 | "dependencies": { 1641 | "uuid": { 1642 | "version": "3.4.0", 1643 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1644 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 1645 | } 1646 | } 1647 | }, 1648 | "has": { 1649 | "version": "1.0.3", 1650 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1651 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1652 | "requires": { 1653 | "function-bind": "^1.1.1" 1654 | } 1655 | }, 1656 | "has-bigints": { 1657 | "version": "1.0.1", 1658 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 1659 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" 1660 | }, 1661 | "has-flag": { 1662 | "version": "3.0.0", 1663 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1664 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1665 | "dev": true 1666 | }, 1667 | "has-symbols": { 1668 | "version": "1.0.2", 1669 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 1670 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" 1671 | }, 1672 | "http-errors": { 1673 | "version": "1.8.0", 1674 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", 1675 | "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", 1676 | "requires": { 1677 | "depd": "~1.1.2", 1678 | "inherits": "2.0.4", 1679 | "setprototypeof": "1.2.0", 1680 | "statuses": ">= 1.5.0 < 2", 1681 | "toidentifier": "1.0.0" 1682 | } 1683 | }, 1684 | "ieee754": { 1685 | "version": "1.2.1", 1686 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1687 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1688 | "dev": true 1689 | }, 1690 | "import-fresh": { 1691 | "version": "3.3.0", 1692 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1693 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1694 | "dev": true, 1695 | "requires": { 1696 | "parent-module": "^1.0.0", 1697 | "resolve-from": "^4.0.0" 1698 | } 1699 | }, 1700 | "inflight": { 1701 | "version": "1.0.6", 1702 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1703 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1704 | "dev": true, 1705 | "requires": { 1706 | "once": "^1.3.0", 1707 | "wrappy": "1" 1708 | } 1709 | }, 1710 | "inherits": { 1711 | "version": "2.0.4", 1712 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1713 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1714 | }, 1715 | "is-arrayish": { 1716 | "version": "0.2.1", 1717 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1718 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1719 | "dev": true 1720 | }, 1721 | "is-bigint": { 1722 | "version": "1.0.1", 1723 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", 1724 | "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" 1725 | }, 1726 | "is-binary-path": { 1727 | "version": "2.1.0", 1728 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1729 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1730 | "dev": true, 1731 | "requires": { 1732 | "binary-extensions": "^2.0.0" 1733 | } 1734 | }, 1735 | "is-boolean-object": { 1736 | "version": "1.1.0", 1737 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", 1738 | "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", 1739 | "requires": { 1740 | "call-bind": "^1.0.0" 1741 | } 1742 | }, 1743 | "is-builtin-module": { 1744 | "version": "3.0.0", 1745 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.0.0.tgz", 1746 | "integrity": "sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw==", 1747 | "dev": true, 1748 | "requires": { 1749 | "builtin-modules": "^3.0.0" 1750 | } 1751 | }, 1752 | "is-callable": { 1753 | "version": "1.2.3", 1754 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", 1755 | "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" 1756 | }, 1757 | "is-date-object": { 1758 | "version": "1.0.2", 1759 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1760 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" 1761 | }, 1762 | "is-extglob": { 1763 | "version": "2.1.1", 1764 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1765 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1766 | "dev": true 1767 | }, 1768 | "is-fullwidth-code-point": { 1769 | "version": "3.0.0", 1770 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1771 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1772 | "dev": true 1773 | }, 1774 | "is-glob": { 1775 | "version": "4.0.1", 1776 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1777 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1778 | "dev": true, 1779 | "requires": { 1780 | "is-extglob": "^2.1.1" 1781 | } 1782 | }, 1783 | "is-negative-zero": { 1784 | "version": "2.0.1", 1785 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", 1786 | "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" 1787 | }, 1788 | "is-number": { 1789 | "version": "7.0.0", 1790 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1791 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1792 | "dev": true 1793 | }, 1794 | "is-number-object": { 1795 | "version": "1.0.4", 1796 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", 1797 | "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" 1798 | }, 1799 | "is-regex": { 1800 | "version": "1.1.2", 1801 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", 1802 | "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", 1803 | "requires": { 1804 | "call-bind": "^1.0.2", 1805 | "has-symbols": "^1.0.1" 1806 | } 1807 | }, 1808 | "is-string": { 1809 | "version": "1.0.5", 1810 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 1811 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" 1812 | }, 1813 | "is-symbol": { 1814 | "version": "1.0.3", 1815 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1816 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1817 | "requires": { 1818 | "has-symbols": "^1.0.1" 1819 | } 1820 | }, 1821 | "isarray": { 1822 | "version": "1.0.0", 1823 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1824 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1825 | }, 1826 | "isexe": { 1827 | "version": "2.0.0", 1828 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1829 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1830 | "dev": true 1831 | }, 1832 | "iterall": { 1833 | "version": "1.3.0", 1834 | "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", 1835 | "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" 1836 | }, 1837 | "jest-worker": { 1838 | "version": "26.6.2", 1839 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", 1840 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", 1841 | "dev": true, 1842 | "requires": { 1843 | "@types/node": "*", 1844 | "merge-stream": "^2.0.0", 1845 | "supports-color": "^7.0.0" 1846 | }, 1847 | "dependencies": { 1848 | "has-flag": { 1849 | "version": "4.0.0", 1850 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1851 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1852 | "dev": true 1853 | }, 1854 | "supports-color": { 1855 | "version": "7.2.0", 1856 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1857 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1858 | "dev": true, 1859 | "requires": { 1860 | "has-flag": "^4.0.0" 1861 | } 1862 | } 1863 | } 1864 | }, 1865 | "jmespath": { 1866 | "version": "0.15.0", 1867 | "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", 1868 | "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" 1869 | }, 1870 | "js-tokens": { 1871 | "version": "4.0.0", 1872 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1873 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1874 | "dev": true 1875 | }, 1876 | "json-parse-better-errors": { 1877 | "version": "1.0.2", 1878 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1879 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1880 | "dev": true 1881 | }, 1882 | "json-parse-even-better-errors": { 1883 | "version": "2.3.1", 1884 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1885 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 1886 | "dev": true 1887 | }, 1888 | "json-schema-traverse": { 1889 | "version": "0.4.1", 1890 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1891 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1892 | "dev": true 1893 | }, 1894 | "json5": { 1895 | "version": "2.2.0", 1896 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 1897 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 1898 | "dev": true, 1899 | "requires": { 1900 | "minimist": "^1.2.5" 1901 | } 1902 | }, 1903 | "jsonfile": { 1904 | "version": "6.1.0", 1905 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 1906 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 1907 | "dev": true, 1908 | "requires": { 1909 | "graceful-fs": "^4.1.6", 1910 | "universalify": "^2.0.0" 1911 | } 1912 | }, 1913 | "lazystream": { 1914 | "version": "1.0.0", 1915 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", 1916 | "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", 1917 | "dev": true, 1918 | "requires": { 1919 | "readable-stream": "^2.0.5" 1920 | }, 1921 | "dependencies": { 1922 | "readable-stream": { 1923 | "version": "2.3.7", 1924 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1925 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1926 | "dev": true, 1927 | "requires": { 1928 | "core-util-is": "~1.0.0", 1929 | "inherits": "~2.0.3", 1930 | "isarray": "~1.0.0", 1931 | "process-nextick-args": "~2.0.0", 1932 | "safe-buffer": "~5.1.1", 1933 | "string_decoder": "~1.1.1", 1934 | "util-deprecate": "~1.0.1" 1935 | } 1936 | } 1937 | } 1938 | }, 1939 | "lines-and-columns": { 1940 | "version": "1.1.6", 1941 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", 1942 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", 1943 | "dev": true 1944 | }, 1945 | "loader-runner": { 1946 | "version": "4.2.0", 1947 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", 1948 | "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", 1949 | "dev": true 1950 | }, 1951 | "loader-utils": { 1952 | "version": "2.0.0", 1953 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", 1954 | "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", 1955 | "dev": true, 1956 | "requires": { 1957 | "big.js": "^5.2.2", 1958 | "emojis-list": "^3.0.0", 1959 | "json5": "^2.1.2" 1960 | } 1961 | }, 1962 | "lodash": { 1963 | "version": "4.17.21", 1964 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1965 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1966 | "dev": true 1967 | }, 1968 | "lodash.defaults": { 1969 | "version": "4.2.0", 1970 | "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", 1971 | "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", 1972 | "dev": true 1973 | }, 1974 | "lodash.difference": { 1975 | "version": "4.5.0", 1976 | "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", 1977 | "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", 1978 | "dev": true 1979 | }, 1980 | "lodash.flatten": { 1981 | "version": "4.4.0", 1982 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 1983 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", 1984 | "dev": true 1985 | }, 1986 | "lodash.isplainobject": { 1987 | "version": "4.0.6", 1988 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1989 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", 1990 | "dev": true 1991 | }, 1992 | "lodash.sortby": { 1993 | "version": "4.7.0", 1994 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 1995 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" 1996 | }, 1997 | "lodash.union": { 1998 | "version": "4.6.0", 1999 | "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", 2000 | "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", 2001 | "dev": true 2002 | }, 2003 | "loglevel": { 2004 | "version": "1.7.1", 2005 | "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", 2006 | "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" 2007 | }, 2008 | "long": { 2009 | "version": "4.0.0", 2010 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", 2011 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" 2012 | }, 2013 | "lru-cache": { 2014 | "version": "6.0.0", 2015 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2016 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2017 | "requires": { 2018 | "yallist": "^4.0.0" 2019 | } 2020 | }, 2021 | "make-error": { 2022 | "version": "1.3.6", 2023 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 2024 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 2025 | "dev": true 2026 | }, 2027 | "memfs": { 2028 | "version": "3.2.0", 2029 | "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.0.tgz", 2030 | "integrity": "sha512-f/xxz2TpdKv6uDn6GtHee8ivFyxwxmPuXatBb1FBwxYNuVpbM3k/Y1Z+vC0mH/dIXXrukYfe3qe5J32Dfjg93A==", 2031 | "dev": true, 2032 | "requires": { 2033 | "fs-monkey": "1.0.1" 2034 | } 2035 | }, 2036 | "memory-fs": { 2037 | "version": "0.5.0", 2038 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", 2039 | "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", 2040 | "dev": true, 2041 | "requires": { 2042 | "errno": "^0.1.3", 2043 | "readable-stream": "^2.0.1" 2044 | }, 2045 | "dependencies": { 2046 | "readable-stream": { 2047 | "version": "2.3.7", 2048 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2049 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2050 | "dev": true, 2051 | "requires": { 2052 | "core-util-is": "~1.0.0", 2053 | "inherits": "~2.0.3", 2054 | "isarray": "~1.0.0", 2055 | "process-nextick-args": "~2.0.0", 2056 | "safe-buffer": "~5.1.1", 2057 | "string_decoder": "~1.1.1", 2058 | "util-deprecate": "~1.0.1" 2059 | } 2060 | } 2061 | } 2062 | }, 2063 | "merge-stream": { 2064 | "version": "2.0.0", 2065 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2066 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 2067 | "dev": true 2068 | }, 2069 | "micromatch": { 2070 | "version": "4.0.2", 2071 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", 2072 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", 2073 | "dev": true, 2074 | "requires": { 2075 | "braces": "^3.0.1", 2076 | "picomatch": "^2.0.5" 2077 | } 2078 | }, 2079 | "mime-db": { 2080 | "version": "1.46.0", 2081 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", 2082 | "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==" 2083 | }, 2084 | "mime-types": { 2085 | "version": "2.1.29", 2086 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", 2087 | "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", 2088 | "requires": { 2089 | "mime-db": "1.46.0" 2090 | } 2091 | }, 2092 | "minimatch": { 2093 | "version": "3.0.4", 2094 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2095 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2096 | "dev": true, 2097 | "requires": { 2098 | "brace-expansion": "^1.1.7" 2099 | } 2100 | }, 2101 | "minimist": { 2102 | "version": "1.2.5", 2103 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2104 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2105 | "dev": true 2106 | }, 2107 | "neo-async": { 2108 | "version": "2.6.2", 2109 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 2110 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 2111 | "dev": true 2112 | }, 2113 | "node-fetch": { 2114 | "version": "2.6.1", 2115 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 2116 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 2117 | }, 2118 | "node-releases": { 2119 | "version": "1.1.71", 2120 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", 2121 | "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", 2122 | "dev": true 2123 | }, 2124 | "normalize-path": { 2125 | "version": "3.0.0", 2126 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2127 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2128 | "dev": true 2129 | }, 2130 | "object-inspect": { 2131 | "version": "1.9.0", 2132 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", 2133 | "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" 2134 | }, 2135 | "object-keys": { 2136 | "version": "1.1.1", 2137 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2138 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 2139 | }, 2140 | "object-path": { 2141 | "version": "0.11.5", 2142 | "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.5.tgz", 2143 | "integrity": "sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg==" 2144 | }, 2145 | "object.assign": { 2146 | "version": "4.1.2", 2147 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 2148 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 2149 | "requires": { 2150 | "call-bind": "^1.0.0", 2151 | "define-properties": "^1.1.3", 2152 | "has-symbols": "^1.0.1", 2153 | "object-keys": "^1.1.1" 2154 | } 2155 | }, 2156 | "object.getownpropertydescriptors": { 2157 | "version": "2.1.2", 2158 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", 2159 | "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", 2160 | "requires": { 2161 | "call-bind": "^1.0.2", 2162 | "define-properties": "^1.1.3", 2163 | "es-abstract": "^1.18.0-next.2" 2164 | } 2165 | }, 2166 | "once": { 2167 | "version": "1.4.0", 2168 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2169 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2170 | "dev": true, 2171 | "requires": { 2172 | "wrappy": "1" 2173 | } 2174 | }, 2175 | "p-limit": { 2176 | "version": "3.1.0", 2177 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2178 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2179 | "dev": true, 2180 | "requires": { 2181 | "yocto-queue": "^0.1.0" 2182 | } 2183 | }, 2184 | "parent-module": { 2185 | "version": "1.0.1", 2186 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2187 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2188 | "dev": true, 2189 | "requires": { 2190 | "callsites": "^3.0.0" 2191 | } 2192 | }, 2193 | "parse-json": { 2194 | "version": "5.2.0", 2195 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 2196 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 2197 | "dev": true, 2198 | "requires": { 2199 | "@babel/code-frame": "^7.0.0", 2200 | "error-ex": "^1.3.1", 2201 | "json-parse-even-better-errors": "^2.3.0", 2202 | "lines-and-columns": "^1.1.6" 2203 | } 2204 | }, 2205 | "path-is-absolute": { 2206 | "version": "1.0.1", 2207 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2208 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2209 | "dev": true 2210 | }, 2211 | "path-type": { 2212 | "version": "4.0.0", 2213 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2214 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2215 | "dev": true 2216 | }, 2217 | "picomatch": { 2218 | "version": "2.2.2", 2219 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 2220 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 2221 | "dev": true 2222 | }, 2223 | "printj": { 2224 | "version": "1.1.2", 2225 | "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", 2226 | "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", 2227 | "dev": true 2228 | }, 2229 | "prisma": { 2230 | "version": "2.20.1", 2231 | "resolved": "https://registry.npmjs.org/prisma/-/prisma-2.20.1.tgz", 2232 | "integrity": "sha512-zyPvJSUfJrmciP2D/4aUrsyIefiH8AIJUeuq1a0X1df1AFw9QQ+ata/7VQdoP+RIQHnCb6Kln9kqfUw/fieljw==", 2233 | "dev": true, 2234 | "requires": { 2235 | "@prisma/engines": "2.20.0-26.60ba6551f29b17d7d6ce479e5733c70d9c00860e" 2236 | } 2237 | }, 2238 | "process-nextick-args": { 2239 | "version": "2.0.1", 2240 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2241 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 2242 | "dev": true 2243 | }, 2244 | "prr": { 2245 | "version": "1.0.1", 2246 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 2247 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", 2248 | "dev": true 2249 | }, 2250 | "punycode": { 2251 | "version": "2.1.1", 2252 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2253 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2254 | "dev": true 2255 | }, 2256 | "querystring": { 2257 | "version": "0.2.0", 2258 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 2259 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" 2260 | }, 2261 | "randombytes": { 2262 | "version": "2.1.0", 2263 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2264 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2265 | "dev": true, 2266 | "requires": { 2267 | "safe-buffer": "^5.1.0" 2268 | } 2269 | }, 2270 | "readable-stream": { 2271 | "version": "3.6.0", 2272 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2273 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2274 | "dev": true, 2275 | "requires": { 2276 | "inherits": "^2.0.3", 2277 | "string_decoder": "^1.1.1", 2278 | "util-deprecate": "^1.0.1" 2279 | } 2280 | }, 2281 | "readdir-glob": { 2282 | "version": "1.1.1", 2283 | "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", 2284 | "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", 2285 | "dev": true, 2286 | "requires": { 2287 | "minimatch": "^3.0.4" 2288 | } 2289 | }, 2290 | "readdirp": { 2291 | "version": "3.5.0", 2292 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 2293 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 2294 | "dev": true, 2295 | "requires": { 2296 | "picomatch": "^2.2.1" 2297 | } 2298 | }, 2299 | "require-directory": { 2300 | "version": "2.1.1", 2301 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2302 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 2303 | "dev": true 2304 | }, 2305 | "resolve-from": { 2306 | "version": "4.0.0", 2307 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2308 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2309 | "dev": true 2310 | }, 2311 | "retry": { 2312 | "version": "0.12.0", 2313 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 2314 | "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" 2315 | }, 2316 | "safe-buffer": { 2317 | "version": "5.1.2", 2318 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2319 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2320 | }, 2321 | "sax": { 2322 | "version": "1.2.1", 2323 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", 2324 | "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" 2325 | }, 2326 | "schema-utils": { 2327 | "version": "2.7.0", 2328 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", 2329 | "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", 2330 | "dev": true, 2331 | "requires": { 2332 | "@types/json-schema": "^7.0.4", 2333 | "ajv": "^6.12.2", 2334 | "ajv-keywords": "^3.4.1" 2335 | } 2336 | }, 2337 | "semver": { 2338 | "version": "7.3.4", 2339 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", 2340 | "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", 2341 | "dev": true, 2342 | "requires": { 2343 | "lru-cache": "^6.0.0" 2344 | } 2345 | }, 2346 | "serialize-javascript": { 2347 | "version": "5.0.1", 2348 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", 2349 | "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", 2350 | "dev": true, 2351 | "requires": { 2352 | "randombytes": "^2.1.0" 2353 | } 2354 | }, 2355 | "serverless-webpack": { 2356 | "version": "5.4.0", 2357 | "resolved": "https://registry.npmjs.org/serverless-webpack/-/serverless-webpack-5.4.0.tgz", 2358 | "integrity": "sha512-d/BrLoiyBUmzhtDcqm4XiZSIwv/NDnEGBASfsbu4DJBiMv1Kgw3EXrn+QPKfSv+a0a2qcfUahT75IzrdJR2Irw==", 2359 | "dev": true, 2360 | "requires": { 2361 | "bestzip": "^2.1.7", 2362 | "bluebird": "^3.7.2", 2363 | "fs-extra": "^9.1.0", 2364 | "glob": "^7.1.6", 2365 | "is-builtin-module": "^3.0.0", 2366 | "lodash": "^4.17.21", 2367 | "semver": "^7.3.4", 2368 | "ts-node": ">= 8.3.0" 2369 | } 2370 | }, 2371 | "setprototypeof": { 2372 | "version": "1.2.0", 2373 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 2374 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 2375 | }, 2376 | "sha.js": { 2377 | "version": "2.4.11", 2378 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 2379 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 2380 | "requires": { 2381 | "inherits": "^2.0.1", 2382 | "safe-buffer": "^5.0.1" 2383 | } 2384 | }, 2385 | "source-list-map": { 2386 | "version": "2.0.1", 2387 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", 2388 | "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", 2389 | "dev": true 2390 | }, 2391 | "source-map": { 2392 | "version": "0.6.1", 2393 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2394 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 2395 | }, 2396 | "source-map-support": { 2397 | "version": "0.5.19", 2398 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 2399 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 2400 | "requires": { 2401 | "buffer-from": "^1.0.0", 2402 | "source-map": "^0.6.0" 2403 | } 2404 | }, 2405 | "statuses": { 2406 | "version": "1.5.0", 2407 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2408 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 2409 | }, 2410 | "streamsearch": { 2411 | "version": "0.1.2", 2412 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", 2413 | "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" 2414 | }, 2415 | "string-width": { 2416 | "version": "4.2.2", 2417 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 2418 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 2419 | "dev": true, 2420 | "requires": { 2421 | "emoji-regex": "^8.0.0", 2422 | "is-fullwidth-code-point": "^3.0.0", 2423 | "strip-ansi": "^6.0.0" 2424 | } 2425 | }, 2426 | "string.prototype.trimend": { 2427 | "version": "1.0.4", 2428 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 2429 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 2430 | "requires": { 2431 | "call-bind": "^1.0.2", 2432 | "define-properties": "^1.1.3" 2433 | } 2434 | }, 2435 | "string.prototype.trimstart": { 2436 | "version": "1.0.4", 2437 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 2438 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 2439 | "requires": { 2440 | "call-bind": "^1.0.2", 2441 | "define-properties": "^1.1.3" 2442 | } 2443 | }, 2444 | "string_decoder": { 2445 | "version": "1.1.1", 2446 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2447 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2448 | "dev": true, 2449 | "requires": { 2450 | "safe-buffer": "~5.1.0" 2451 | } 2452 | }, 2453 | "strip-ansi": { 2454 | "version": "6.0.0", 2455 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 2456 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 2457 | "dev": true, 2458 | "requires": { 2459 | "ansi-regex": "^5.0.0" 2460 | } 2461 | }, 2462 | "subscriptions-transport-ws": { 2463 | "version": "0.9.18", 2464 | "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz", 2465 | "integrity": "sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA==", 2466 | "requires": { 2467 | "backo2": "^1.0.2", 2468 | "eventemitter3": "^3.1.0", 2469 | "iterall": "^1.2.1", 2470 | "symbol-observable": "^1.0.4", 2471 | "ws": "^5.2.0" 2472 | }, 2473 | "dependencies": { 2474 | "ws": { 2475 | "version": "5.2.2", 2476 | "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", 2477 | "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", 2478 | "requires": { 2479 | "async-limiter": "~1.0.0" 2480 | } 2481 | } 2482 | } 2483 | }, 2484 | "supports-color": { 2485 | "version": "5.5.0", 2486 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2487 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2488 | "dev": true, 2489 | "requires": { 2490 | "has-flag": "^3.0.0" 2491 | } 2492 | }, 2493 | "symbol-observable": { 2494 | "version": "1.2.0", 2495 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", 2496 | "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" 2497 | }, 2498 | "tapable": { 2499 | "version": "1.1.3", 2500 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", 2501 | "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", 2502 | "dev": true 2503 | }, 2504 | "tar-stream": { 2505 | "version": "2.2.0", 2506 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 2507 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 2508 | "dev": true, 2509 | "requires": { 2510 | "bl": "^4.0.3", 2511 | "end-of-stream": "^1.4.1", 2512 | "fs-constants": "^1.0.0", 2513 | "inherits": "^2.0.3", 2514 | "readable-stream": "^3.1.1" 2515 | } 2516 | }, 2517 | "terser": { 2518 | "version": "5.6.1", 2519 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", 2520 | "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", 2521 | "dev": true, 2522 | "requires": { 2523 | "commander": "^2.20.0", 2524 | "source-map": "~0.7.2", 2525 | "source-map-support": "~0.5.19" 2526 | }, 2527 | "dependencies": { 2528 | "source-map": { 2529 | "version": "0.7.3", 2530 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 2531 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", 2532 | "dev": true 2533 | } 2534 | } 2535 | }, 2536 | "terser-webpack-plugin": { 2537 | "version": "5.1.1", 2538 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", 2539 | "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", 2540 | "dev": true, 2541 | "requires": { 2542 | "jest-worker": "^26.6.2", 2543 | "p-limit": "^3.1.0", 2544 | "schema-utils": "^3.0.0", 2545 | "serialize-javascript": "^5.0.1", 2546 | "source-map": "^0.6.1", 2547 | "terser": "^5.5.1" 2548 | }, 2549 | "dependencies": { 2550 | "schema-utils": { 2551 | "version": "3.0.0", 2552 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", 2553 | "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", 2554 | "dev": true, 2555 | "requires": { 2556 | "@types/json-schema": "^7.0.6", 2557 | "ajv": "^6.12.5", 2558 | "ajv-keywords": "^3.5.2" 2559 | } 2560 | } 2561 | } 2562 | }, 2563 | "to-regex-range": { 2564 | "version": "5.0.1", 2565 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2566 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2567 | "dev": true, 2568 | "requires": { 2569 | "is-number": "^7.0.0" 2570 | } 2571 | }, 2572 | "toidentifier": { 2573 | "version": "1.0.0", 2574 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 2575 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 2576 | }, 2577 | "ts-invariant": { 2578 | "version": "0.4.4", 2579 | "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", 2580 | "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", 2581 | "requires": { 2582 | "tslib": "^1.9.3" 2583 | } 2584 | }, 2585 | "ts-loader": { 2586 | "version": "8.0.18", 2587 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.18.tgz", 2588 | "integrity": "sha512-hRZzkydPX30XkLaQwJTDcWDoxZHK6IrEMDQpNd7tgcakFruFkeUp/aY+9hBb7BUGb+ZWKI0jiOGMo0MckwzdDQ==", 2589 | "dev": true, 2590 | "requires": { 2591 | "chalk": "^4.1.0", 2592 | "enhanced-resolve": "^4.0.0", 2593 | "loader-utils": "^2.0.0", 2594 | "micromatch": "^4.0.0", 2595 | "semver": "^7.3.4" 2596 | } 2597 | }, 2598 | "ts-node": { 2599 | "version": "9.1.1", 2600 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", 2601 | "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", 2602 | "dev": true, 2603 | "requires": { 2604 | "arg": "^4.1.0", 2605 | "create-require": "^1.1.0", 2606 | "diff": "^4.0.1", 2607 | "make-error": "^1.1.1", 2608 | "source-map-support": "^0.5.17", 2609 | "yn": "3.1.1" 2610 | } 2611 | }, 2612 | "tslib": { 2613 | "version": "1.14.1", 2614 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 2615 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 2616 | }, 2617 | "typescript": { 2618 | "version": "4.2.3", 2619 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", 2620 | "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", 2621 | "dev": true 2622 | }, 2623 | "ulid": { 2624 | "version": "2.3.0", 2625 | "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", 2626 | "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==" 2627 | }, 2628 | "unbox-primitive": { 2629 | "version": "1.0.0", 2630 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", 2631 | "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", 2632 | "requires": { 2633 | "function-bind": "^1.1.1", 2634 | "has-bigints": "^1.0.0", 2635 | "has-symbols": "^1.0.0", 2636 | "which-boxed-primitive": "^1.0.1" 2637 | } 2638 | }, 2639 | "universalify": { 2640 | "version": "2.0.0", 2641 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 2642 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", 2643 | "dev": true 2644 | }, 2645 | "uri-js": { 2646 | "version": "4.4.1", 2647 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2648 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2649 | "dev": true, 2650 | "requires": { 2651 | "punycode": "^2.1.0" 2652 | } 2653 | }, 2654 | "url": { 2655 | "version": "0.10.3", 2656 | "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", 2657 | "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", 2658 | "requires": { 2659 | "punycode": "1.3.2", 2660 | "querystring": "0.2.0" 2661 | }, 2662 | "dependencies": { 2663 | "punycode": { 2664 | "version": "1.3.2", 2665 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 2666 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" 2667 | } 2668 | } 2669 | }, 2670 | "util-deprecate": { 2671 | "version": "1.0.2", 2672 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2673 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2674 | "dev": true 2675 | }, 2676 | "util.promisify": { 2677 | "version": "1.1.1", 2678 | "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", 2679 | "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", 2680 | "requires": { 2681 | "call-bind": "^1.0.0", 2682 | "define-properties": "^1.1.3", 2683 | "for-each": "^0.3.3", 2684 | "has-symbols": "^1.0.1", 2685 | "object.getownpropertydescriptors": "^2.1.1" 2686 | } 2687 | }, 2688 | "uuid": { 2689 | "version": "8.3.2", 2690 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 2691 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 2692 | }, 2693 | "watchpack": { 2694 | "version": "2.1.1", 2695 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", 2696 | "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", 2697 | "dev": true, 2698 | "requires": { 2699 | "glob-to-regexp": "^0.4.1", 2700 | "graceful-fs": "^4.1.2" 2701 | } 2702 | }, 2703 | "webpack": { 2704 | "version": "5.27.0", 2705 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.27.0.tgz", 2706 | "integrity": "sha512-So7grHu//UyJ+80VrNHjWwW6WSZkfWWD6a7NV/88r8G92PO6TYOGzbtTiZBwbPVkx6LVP8OYvHD+IxuJ2KBz4g==", 2707 | "dev": true, 2708 | "requires": { 2709 | "@types/eslint-scope": "^3.7.0", 2710 | "@types/estree": "^0.0.46", 2711 | "@webassemblyjs/ast": "1.11.0", 2712 | "@webassemblyjs/wasm-edit": "1.11.0", 2713 | "@webassemblyjs/wasm-parser": "1.11.0", 2714 | "acorn": "^8.0.4", 2715 | "browserslist": "^4.14.5", 2716 | "chrome-trace-event": "^1.0.2", 2717 | "enhanced-resolve": "^5.7.0", 2718 | "es-module-lexer": "^0.4.0", 2719 | "eslint-scope": "^5.1.1", 2720 | "events": "^3.2.0", 2721 | "glob-to-regexp": "^0.4.1", 2722 | "graceful-fs": "^4.2.4", 2723 | "json-parse-better-errors": "^1.0.2", 2724 | "loader-runner": "^4.2.0", 2725 | "mime-types": "^2.1.27", 2726 | "neo-async": "^2.6.2", 2727 | "schema-utils": "^3.0.0", 2728 | "tapable": "^2.1.1", 2729 | "terser-webpack-plugin": "^5.1.1", 2730 | "watchpack": "^2.0.0", 2731 | "webpack-sources": "^2.1.1" 2732 | }, 2733 | "dependencies": { 2734 | "enhanced-resolve": { 2735 | "version": "5.7.0", 2736 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", 2737 | "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", 2738 | "dev": true, 2739 | "requires": { 2740 | "graceful-fs": "^4.2.4", 2741 | "tapable": "^2.2.0" 2742 | } 2743 | }, 2744 | "schema-utils": { 2745 | "version": "3.0.0", 2746 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", 2747 | "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", 2748 | "dev": true, 2749 | "requires": { 2750 | "@types/json-schema": "^7.0.6", 2751 | "ajv": "^6.12.5", 2752 | "ajv-keywords": "^3.5.2" 2753 | } 2754 | }, 2755 | "tapable": { 2756 | "version": "2.2.0", 2757 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", 2758 | "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", 2759 | "dev": true 2760 | } 2761 | } 2762 | }, 2763 | "webpack-node-externals": { 2764 | "version": "2.5.2", 2765 | "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-2.5.2.tgz", 2766 | "integrity": "sha512-aHdl/y2N7PW2Sx7K+r3AxpJO+aDMcYzMQd60Qxefq3+EwhewSbTBqNumOsCE1JsCUNoyfGj5465N0sSf6hc/5w==", 2767 | "dev": true 2768 | }, 2769 | "webpack-sources": { 2770 | "version": "2.2.0", 2771 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", 2772 | "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", 2773 | "dev": true, 2774 | "requires": { 2775 | "source-list-map": "^2.0.1", 2776 | "source-map": "^0.6.1" 2777 | } 2778 | }, 2779 | "which": { 2780 | "version": "2.0.2", 2781 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2782 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2783 | "dev": true, 2784 | "requires": { 2785 | "isexe": "^2.0.0" 2786 | } 2787 | }, 2788 | "which-boxed-primitive": { 2789 | "version": "1.0.2", 2790 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2791 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2792 | "requires": { 2793 | "is-bigint": "^1.0.1", 2794 | "is-boolean-object": "^1.1.0", 2795 | "is-number-object": "^1.0.4", 2796 | "is-string": "^1.0.5", 2797 | "is-symbol": "^1.0.3" 2798 | } 2799 | }, 2800 | "wrap-ansi": { 2801 | "version": "7.0.0", 2802 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2803 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2804 | "dev": true, 2805 | "requires": { 2806 | "ansi-styles": "^4.0.0", 2807 | "string-width": "^4.1.0", 2808 | "strip-ansi": "^6.0.0" 2809 | }, 2810 | "dependencies": { 2811 | "ansi-styles": { 2812 | "version": "4.3.0", 2813 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2814 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2815 | "dev": true, 2816 | "requires": { 2817 | "color-convert": "^2.0.1" 2818 | } 2819 | }, 2820 | "color-convert": { 2821 | "version": "2.0.1", 2822 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2823 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2824 | "dev": true, 2825 | "requires": { 2826 | "color-name": "~1.1.4" 2827 | } 2828 | }, 2829 | "color-name": { 2830 | "version": "1.1.4", 2831 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2832 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2833 | "dev": true 2834 | } 2835 | } 2836 | }, 2837 | "wrappy": { 2838 | "version": "1.0.2", 2839 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2840 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2841 | "dev": true 2842 | }, 2843 | "ws": { 2844 | "version": "6.2.1", 2845 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", 2846 | "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", 2847 | "requires": { 2848 | "async-limiter": "~1.0.0" 2849 | } 2850 | }, 2851 | "xml2js": { 2852 | "version": "0.4.19", 2853 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", 2854 | "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", 2855 | "requires": { 2856 | "sax": ">=0.6.0", 2857 | "xmlbuilder": "~9.0.1" 2858 | } 2859 | }, 2860 | "xmlbuilder": { 2861 | "version": "9.0.7", 2862 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", 2863 | "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" 2864 | }, 2865 | "xss": { 2866 | "version": "1.0.8", 2867 | "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.8.tgz", 2868 | "integrity": "sha512-3MgPdaXV8rfQ/pNn16Eio6VXYPTkqwa0vc7GkiymmY/DqR1SE/7VPAAVZz1GJsJFrllMYO3RHfEaiUGjab6TNw==", 2869 | "requires": { 2870 | "commander": "^2.20.3", 2871 | "cssfilter": "0.0.10" 2872 | } 2873 | }, 2874 | "y18n": { 2875 | "version": "5.0.5", 2876 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", 2877 | "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", 2878 | "dev": true 2879 | }, 2880 | "yallist": { 2881 | "version": "4.0.0", 2882 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2883 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2884 | }, 2885 | "yaml": { 2886 | "version": "1.10.2", 2887 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 2888 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 2889 | "dev": true 2890 | }, 2891 | "yargs": { 2892 | "version": "16.2.0", 2893 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2894 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2895 | "dev": true, 2896 | "requires": { 2897 | "cliui": "^7.0.2", 2898 | "escalade": "^3.1.1", 2899 | "get-caller-file": "^2.0.5", 2900 | "require-directory": "^2.1.1", 2901 | "string-width": "^4.2.0", 2902 | "y18n": "^5.0.5", 2903 | "yargs-parser": "^20.2.2" 2904 | } 2905 | }, 2906 | "yargs-parser": { 2907 | "version": "20.2.7", 2908 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", 2909 | "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", 2910 | "dev": true 2911 | }, 2912 | "yn": { 2913 | "version": "3.1.1", 2914 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 2915 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 2916 | "dev": true 2917 | }, 2918 | "yocto-queue": { 2919 | "version": "0.1.0", 2920 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2921 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2922 | "dev": true 2923 | }, 2924 | "zen-observable": { 2925 | "version": "0.8.15", 2926 | "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", 2927 | "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" 2928 | }, 2929 | "zen-observable-ts": { 2930 | "version": "0.8.21", 2931 | "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", 2932 | "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", 2933 | "requires": { 2934 | "tslib": "^1.9.3", 2935 | "zen-observable": "^0.8.0" 2936 | } 2937 | }, 2938 | "zip-stream": { 2939 | "version": "4.1.0", 2940 | "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", 2941 | "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", 2942 | "dev": true, 2943 | "requires": { 2944 | "archiver-utils": "^2.1.0", 2945 | "compress-commons": "^4.1.0", 2946 | "readable-stream": "^3.6.0" 2947 | } 2948 | } 2949 | } 2950 | } 2951 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "graphql-lambda-sdl-example", 3 | "version": "1.0.0", 4 | "description": "Serverless webpack example using Typescript", 5 | "main": "handler.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "dependencies": { 10 | "@prisma/client": "^2.20.1", 11 | "graphql-lambda": "^1.0.0", 12 | "source-map-support": "^0.5.19" 13 | }, 14 | "devDependencies": { 15 | "@serverless/typescript": "^2.12.0", 16 | "@types/aws-lambda": "^8.10.64", 17 | "@types/node": "^14.14.6", 18 | "fork-ts-checker-webpack-plugin": "^6.0.0", 19 | "prisma": "^2.20.1", 20 | "serverless-webpack": "^5.2.0", 21 | "ts-loader": "^8.0.10", 22 | "ts-node": "^9.0.0", 23 | "typescript": "^4.0.5", 24 | "webpack": "^5.4.0", 25 | "webpack-node-externals": "^2.5.2" 26 | }, 27 | "author": "The serverless webpack authors (https://github.com/elastic-coders/serverless-webpack)", 28 | "license": "MIT" 29 | } 30 | -------------------------------------------------------------------------------- /prisma/migrations/20210405003848_example_schema/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE `User` ( 3 | `id` VARCHAR(191) NOT NULL, 4 | `email` VARCHAR(191) NOT NULL, 5 | `birthDate` DATETIME(3) NOT NULL, 6 | `postId` VARCHAR(191), 7 | UNIQUE INDEX `User.email_unique`(`email`), 8 | 9 | PRIMARY KEY (`id`) 10 | ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 11 | 12 | -- CreateTable 13 | CREATE TABLE `Post` ( 14 | `id` VARCHAR(191) NOT NULL, 15 | 16 | PRIMARY KEY (`id`) 17 | ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 18 | 19 | -- AddForeignKey 20 | ALTER TABLE `User` ADD FOREIGN KEY (`postId`) REFERENCES `Post`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; 21 | -------------------------------------------------------------------------------- /prisma/migrations/migration_lock.toml: -------------------------------------------------------------------------------- 1 | # Please do not edit this file manually 2 | # It should be added in your version-control system (i.e. Git) 3 | provider = "mysql" -------------------------------------------------------------------------------- /prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | generator prisma_client { 2 | provider = "prisma-client-js" 3 | binaryTargets = ["native", "rhel-openssl-1.0.x"] 4 | } 5 | 6 | datasource db { 7 | provider = "mysql" 8 | url = env("DATABASE_URL") 9 | } 10 | 11 | model User { 12 | id String @id @default(cuid()) 13 | email String @unique 14 | birthDate DateTime 15 | Post Post? @relation(fields: [postId], references: [id]) 16 | postId String? 17 | } 18 | 19 | model Post { 20 | id String @id @default(cuid()) 21 | author User[] 22 | } 23 | -------------------------------------------------------------------------------- /serverless.ts: -------------------------------------------------------------------------------- 1 | import type { AWS } from "@serverless/typescript"; 2 | 3 | const serverlessConfiguration: AWS = { 4 | service: "graphql-lambda-prisma-example", 5 | // frameworkVersion: '2', 6 | // Add the serverless-webpack plugin 7 | plugins: ["serverless-webpack"], 8 | // "plugins": [ 9 | // "serverless-plugin-typescript", 10 | // ], 11 | provider: { 12 | apiGateway: { 13 | shouldStartNameWithService: true, 14 | }, 15 | name: "aws", 16 | runtime: "nodejs12.x", 17 | region: "eu-west-3", 18 | stage: "dev", 19 | memorySize: 512, 20 | iam: { 21 | role: { 22 | statements: [ 23 | { 24 | Effect: "Allow", 25 | Action: ["lambda:InvokeFunction"], 26 | Resource: "*", 27 | }, 28 | { 29 | Effect: "Allow", 30 | Action: ["sqs:*"], 31 | Resource: "*", 32 | }, 33 | ], 34 | }, 35 | }, 36 | environment: { 37 | STAGE: "${opt:stage, self:provider.stage}", 38 | snsArn: { 39 | "Fn::Join": [ 40 | "", 41 | [ 42 | "arn:aws:sns:${self:custom.region}:", 43 | { Ref: "AWS::AccountId" }, 44 | ":${self:custom.eventDispatchTopic}", 45 | ], 46 | ], 47 | }, 48 | sqsfifo: { 49 | "Fn::Join": [ 50 | "", 51 | [ 52 | "https://sqs.", 53 | { Ref: "AWS::Region" }, 54 | ".amazonaws.com/", 55 | { Ref: "AWS::AccountId" }, 56 | "/${self:custom.eventSQSFifo}", 57 | ], 58 | ], 59 | }, 60 | lambdaSubscriptionEndpoint: { 61 | "Fn::Join": [ 62 | "", 63 | [ 64 | "wss://", 65 | { 66 | Ref: "WebsocketsApi", 67 | }, 68 | ".execute-api.", 69 | { 70 | Ref: "AWS::Region", 71 | }, 72 | ".", 73 | { 74 | Ref: "AWS::URLSuffix", 75 | }, 76 | "/${self:provider.stage}", 77 | ], 78 | ], 79 | }, 80 | }, 81 | }, 82 | functions: { 83 | main: { 84 | handler: "src/handlers.handleGraphql", 85 | events: [ 86 | { 87 | http: { 88 | path: "/graphql", 89 | method: "ANY", 90 | }, 91 | }, 92 | { 93 | websocket: { 94 | route: "$connect", 95 | }, 96 | }, 97 | { 98 | websocket: { 99 | route: "$default", 100 | }, 101 | }, 102 | { 103 | websocket: { 104 | route: "$disconnect", 105 | }, 106 | }, 107 | ], 108 | }, 109 | queue: { 110 | handler: "src/handlers.handleGraphqlSubscriptions", 111 | events: [ 112 | { 113 | sqs: { 114 | arn: { 115 | "Fn::GetAtt": ["sqsfifo", "Arn"], 116 | }, 117 | }, 118 | }, 119 | ], 120 | }, 121 | }, 122 | custom: { 123 | stage: "${opt:stage, self:provider.stage}", 124 | region: "${opt:region, self:provider.region}", 125 | eventDispatchTopic: "${self:service}-event-dispatch-${self:custom.stage}", 126 | eventSQSFifo: "${self:service}-sqs-fifo-${self:custom.stage}.fifo", 127 | webpack: { 128 | webpackConfig: "./webpack.config.js", 129 | includeModules: true, 130 | }, 131 | }, 132 | resources: { 133 | Resources: { 134 | sqsfifo: { 135 | Properties: { 136 | QueueName: "${self:custom.eventSQSFifo}", 137 | FifoQueue: true, 138 | ContentBasedDeduplication: true, 139 | }, 140 | Type: "AWS::SQS::Queue", 141 | }, 142 | }, 143 | }, 144 | }; 145 | 146 | module.exports = serverlessConfiguration; 147 | -------------------------------------------------------------------------------- /src/graphql/schema.ts: -------------------------------------------------------------------------------- 1 | import { pubSub, withFilter } from "../lambda"; 2 | import { PrismaClient } from "@prisma/client"; 3 | const prisma = new PrismaClient(); 4 | 5 | type MessageType = 'greeting' | 'test'; 6 | 7 | type Message = { 8 | text: string; 9 | type: MessageType; 10 | }; 11 | 12 | type User = { 13 | email: string; 14 | }; 15 | 16 | type SendMessageArgs = { 17 | text: string; 18 | type: MessageType; 19 | }; 20 | 21 | type CreateUserArgs = { 22 | email: string; 23 | }; 24 | 25 | export const typeDefs = /* GraphQL */ ` 26 | enum MessageType { 27 | greeting 28 | test 29 | } 30 | type Message { 31 | id: ID! 32 | text: String! 33 | type: MessageType! 34 | } 35 | type User { 36 | email: String 37 | } 38 | type Mutation { 39 | sendMessage(text: String!, type: MessageType = greeting): Message! 40 | createUser(email: String!): User! 41 | } 42 | type Query { 43 | serverTime: Float! 44 | usersCount: Int! 45 | } 46 | type Subscription { 47 | messageFeed(type: MessageType): Message! 48 | usersFeed: User! 49 | } 50 | `; 51 | 52 | export const resolvers = { 53 | Mutation: { 54 | async sendMessage(ctx: any, { text, type }: SendMessageArgs) { 55 | const payload: Message = { text, type }; 56 | 57 | await pubSub.publish("NEW_MESSAGE", payload); 58 | 59 | return payload; 60 | }, 61 | async createUser(ctx: any, { email }: CreateUserArgs) { 62 | const user: User = await prisma.user.create({ 63 | data: { email, birthDate: new Date() }, 64 | }); 65 | 66 | await pubSub.publish("NEW_USER", user); 67 | 68 | return user; 69 | }, 70 | }, 71 | Query: { 72 | serverTime: async () => { 73 | return new Date(); 74 | }, 75 | usersCount: async () => { 76 | return (await prisma.user.findMany({})).length; 77 | }, 78 | }, 79 | Subscription: { 80 | messageFeed: { 81 | subscribe: withFilter( 82 | pubSub.subscribe("NEW_MESSAGE"), 83 | (rootValue: Message, args: { type: null | MessageType }) => { 84 | // this can be async too :) 85 | if (args.type == null) { 86 | return true; 87 | } 88 | return args.type === rootValue.type; 89 | } 90 | ), 91 | resolve: (rootValue: Message) => { 92 | // root value is the payload from sendMessage mutation 93 | return rootValue; 94 | }, 95 | }, 96 | usersFeed: { 97 | subscribe: pubSub.subscribe("NEW_USER"), 98 | resolve: (rootValue: Message) => { 99 | // root value is the payload from usersFeed mutation 100 | return rootValue; 101 | }, 102 | }, 103 | }, 104 | }; 105 | -------------------------------------------------------------------------------- /src/handlers.ts: -------------------------------------------------------------------------------- 1 | import "source-map-support/register"; 2 | 3 | import { APIGatewayEvent, SQSEvent } from "aws-lambda"; 4 | 5 | import { 6 | Server, 7 | subscriptionManager, 8 | connectionManager, 9 | EventProcessor, 10 | APIGatewayWebSocketEvent, 11 | eventStore, 12 | } from "./lambda"; 13 | 14 | import { typeDefs, resolvers } from "./graphql/schema"; 15 | 16 | const server = new Server({ 17 | connectionManager, 18 | eventProcessor: new EventProcessor(), 19 | typeDefs, 20 | resolvers, 21 | // schema, 22 | subscriptionManager, 23 | onError: (err) => { 24 | console.log(err); 25 | }, 26 | playground: { 27 | endpoint: `/${process.env.STAGE}/graphql`, 28 | subscriptionEndpoint: process.env.lambdaSubscriptionEndpoint, 29 | }, 30 | }); 31 | 32 | export const handleHttp = server.createHttpHandler(); 33 | export const handleWebSocket = server.createWebSocketHandler(); 34 | export const eventHandler = server.createEventHandler(); 35 | 36 | export async function handleGraphql( 37 | event: APIGatewayEvent | APIGatewayWebSocketEvent, 38 | context 39 | ) { 40 | if ( 41 | (event as APIGatewayWebSocketEvent).requestContext != null && 42 | (event as APIGatewayWebSocketEvent).requestContext.routeKey != null 43 | ) { 44 | await eventStore.publish(event); 45 | 46 | let result = { 47 | body: "", 48 | headers: event.headers?.["Sec-WebSocket-Protocol"]?.includes("graphql-ws") 49 | ? { 50 | "Sec-WebSocket-Protocol": "graphql-ws", 51 | } 52 | : undefined, 53 | statusCode: 200, 54 | }; 55 | 56 | return result; 57 | } else if ( 58 | (event as APIGatewayEvent).requestContext != null && 59 | (event as APIGatewayEvent).requestContext.path != null 60 | ) { 61 | return handleHttp(event as APIGatewayEvent, context); 62 | } else { 63 | throw new Error("Invalid event"); 64 | } 65 | } 66 | 67 | export async function handleGraphqlSubscriptions(event: SQSEvent, context) { 68 | if ((event as SQSEvent).Records != null) { 69 | for (const record of (event as SQSEvent).Records) { 70 | const ev = JSON.parse(record.body); 71 | if ( 72 | (ev as APIGatewayWebSocketEvent).requestContext != null && 73 | (ev as APIGatewayWebSocketEvent).requestContext.routeKey != null 74 | ) { 75 | await handleWebSocket(ev as APIGatewayWebSocketEvent, context); 76 | } else { 77 | await eventHandler(ev, context); 78 | } 79 | } 80 | } else { 81 | throw new Error("Invalid event"); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/lambda.ts: -------------------------------------------------------------------------------- 1 | import { APIGatewayProxyEvent } from "aws-lambda"; 2 | import { 3 | PubSub, 4 | SubscriptionManager, 5 | ApiGatewayConnectionManager, 6 | ISubscriptionEvent, 7 | IEventStore, 8 | APIGatewayWebSocketEvent, 9 | } from "graphql-lambda"; 10 | import { SQS } from "aws-sdk"; 11 | 12 | export class SQSQueue implements IEventStore { 13 | public events: ISubscriptionEvent[]; 14 | private sqs: SQS; 15 | 16 | constructor() { 17 | this.sqs = new SQS(); 18 | } 19 | 20 | publish = async (event: ISubscriptionEvent | APIGatewayProxyEvent | APIGatewayWebSocketEvent): Promise => { 21 | var params = { 22 | QueueUrl: process.env.sqsfifo, 23 | MessageGroupId: "0", 24 | MessageBody: JSON.stringify(event), 25 | }; 26 | await this.sqs.sendMessage(params).promise(); 27 | }; 28 | } 29 | 30 | export const eventStore = new SQSQueue(); 31 | export const pubSub = new PubSub({ eventStore }); 32 | export const subscriptionManager = new SubscriptionManager({ 33 | subscriptionManagerStorage: new Map(), 34 | }); 35 | export const connectionManager = new ApiGatewayConnectionManager({ 36 | connectionManagerStorage: new Map(), 37 | }); 38 | export * from "graphql-lambda"; 39 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["es2017"], 4 | "removeComments": true, 5 | "moduleResolution": "node", 6 | "noUnusedLocals": true, 7 | "noUnusedParameters": true, 8 | "sourceMap": true, 9 | "target": "es2017", 10 | "outDir": "lib" 11 | }, 12 | "include": ["./**/*.ts"], 13 | "exclude": [ 14 | "node_modules/**/*", 15 | ".serverless/**/*", 16 | ".webpack/**/*", 17 | "_warmup/**/*", 18 | ".vscode/**/*" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const slsw = require('serverless-webpack'); 3 | const nodeExternals = require('webpack-node-externals'); 4 | const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); 5 | 6 | module.exports = { 7 | context: __dirname, 8 | mode: slsw.lib.webpack.isLocal ? 'development' : 'production', 9 | entry: slsw.lib.entries, 10 | devtool: slsw.lib.webpack.isLocal ? 'eval-cheap-module-source-map' : 'source-map', 11 | resolve: { 12 | extensions: ['.mjs', '.json', '.ts'], 13 | symlinks: false, 14 | cacheWithContext: false, 15 | }, 16 | output: { 17 | libraryTarget: 'commonjs', 18 | path: path.join(__dirname, '.webpack'), 19 | filename: '[name].js', 20 | }, 21 | optimization: { 22 | concatenateModules: false, 23 | }, 24 | target: 'node', 25 | externals: [nodeExternals()], 26 | module: { 27 | rules: [ 28 | // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader` 29 | { 30 | test: /\.(tsx?)$/, 31 | loader: 'ts-loader', 32 | exclude: [ 33 | [ 34 | path.resolve(__dirname, 'node_modules'), 35 | path.resolve(__dirname, '.serverless'), 36 | path.resolve(__dirname, '.webpack'), 37 | ], 38 | ], 39 | options: { 40 | transpileOnly: true, 41 | experimentalWatchApi: true, 42 | }, 43 | }, 44 | ], 45 | }, 46 | plugins: [ 47 | // new ForkTsCheckerWebpackPlugin({ 48 | // eslint: true, 49 | // eslintOptions: { 50 | // cache: true 51 | // } 52 | // }) 53 | ], 54 | }; 55 | --------------------------------------------------------------------------------