├── .eslintrc.json ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── UpNextIcon.png ├── package-lock.json ├── package.json ├── src ├── Boilerplates │ ├── nextBoilerplate │ │ ├── _app.ts │ │ ├── index.ts │ │ ├── nextauth.ts │ │ ├── signup.ts │ │ └── styles.ts │ ├── prismaBoilerplate │ │ └── prismaBoilerplate.ts │ ├── rootBoilerplate │ │ ├── envBoilerplate.ts │ │ └── pkgjsonBoilerplate.ts │ ├── serverBoilerplate │ │ ├── contextBoilerplate.ts │ │ ├── prismagraphqlBoilerplate.ts │ │ └── serverBoilerplate.ts │ ├── stripeBoilerplate │ │ ├── checkoutBoilerplate.ts │ │ ├── sessionBoilerplate.ts │ │ └── successBoilerplate.ts │ └── testBoilerplate │ │ └── mochaBoilerplate.ts ├── constructors.ts └── extension.ts ├── tsconfig.json ├── upnext-1.0.0.vsix └── vsc-extension-quickstart.md /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "parserOptions": { 5 | "ecmaVersion": 6, 6 | "sourceType": "module" 7 | }, 8 | "plugins": [ 9 | "@typescript-eslint" 10 | ], 11 | "rules": { 12 | "@typescript-eslint/naming-convention": "warn", 13 | "@typescript-eslint/semi": "warn", 14 | "curly": "warn", 15 | "eqeqeq": "warn", 16 | "no-throw-literal": "warn", 17 | "semi": "off" 18 | }, 19 | "ignorePatterns": [ 20 | "**/*.d.ts" 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # compiled output 2 | /dist 3 | /tmp 4 | /out-tsc 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | *.pid.lock 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | # Coverage directory used by tools like istanbul 13 | coverage 14 | # nyc test coverage 15 | .nyc_output 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | # Bower dependency directory (https://bower.io/) 19 | bower_components 20 | # node-waf configuration 21 | .lock-wscript 22 | # IDEs and editors 23 | .idea 24 | .project 25 | .classpath 26 | .c9/ 27 | *.launch 28 | .settings/ 29 | *.sublime-workspace 30 | # IDE - VSCode 31 | .vscode/* 32 | !.vscode/settings.json 33 | !.vscode/tasks.json 34 | !.vscode/launch.json 35 | !.vscode/extensions.json 36 | # misc 37 | .sass-cache 38 | connect.lock 39 | typings 40 | # Logs 41 | logs 42 | *.log 43 | npm-debug.log* 44 | yarn-debug.log* 45 | yarn-error.log* 46 | # Dependency directories 47 | node_modules/ 48 | jspm_packages/ 49 | # Optional npm cache directory 50 | .npm 51 | # Optional eslint cache 52 | .eslintcache 53 | # Optional REPL history 54 | .node_repl_history 55 | # Output of 'npm pack' 56 | *.tgz 57 | # Yarn Integrity file 58 | .yarn-integrity 59 | # dotenv environment variables file 60 | .env 61 | # next.js build output 62 | .next 63 | # Lerna 64 | lerna-debug.log 65 | # System Files 66 | .DS_Store 67 | Thumbs.db 68 | out 69 | out/extension.js 70 | out/extension.js.map 71 | out/Boilerplates/nextBoilerplate/index.js 72 | out/Boilerplates/nextBoilerplate/index.js.map 73 | out/Boilerplates/nextBoilerplate/login.js 74 | out/Boilerplates/nextBoilerplate/login.js.map 75 | out/Boilerplates/nextBoilerplate/signup.js 76 | out/Boilerplates/nextBoilerplate/signup.js.map 77 | out/Boilerplates/nextBoilerplate/styles.js 78 | out/Boilerplates/nextBoilerplate/styles.js.map 79 | out/Boilerplates/rootBoilerplate/envBoilerplate.js 80 | out/Boilerplates/rootBoilerplate/envBoilerplate.js.map 81 | out/Boilerplates/serverBoilerplate/contextBoilerplate.js 82 | out/Boilerplates/serverBoilerplate/prismagraphqlBoilerplate.js 83 | out/Boilerplates/serverBoilerplate/prismagraphqlBoilerplate.js.map 84 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "dbaeumer.vscode-eslint" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Run Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "args": [ 13 | "--extensionDevelopmentPath=${workspaceFolder}" 14 | ], 15 | "outFiles": [ 16 | "${workspaceFolder}/out/**/*.js" 17 | ], 18 | "preLaunchTask": "${defaultBuildTask}" 19 | }, 20 | { 21 | "name": "Extension Tests", 22 | "type": "extensionHost", 23 | "request": "launch", 24 | "args": [ 25 | "--extensionDevelopmentPath=${workspaceFolder}", 26 | "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" 27 | ], 28 | "outFiles": [ 29 | "${workspaceFolder}/out/test/**/*.js" 30 | ], 31 | "preLaunchTask": "${defaultBuildTask}" 32 | } 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | }, 9 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 10 | "typescript.tsc.autoDetect": "off" 11 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": { 15 | "kind": "build", 16 | "isDefault": true 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | src/** 5 | .gitignore 6 | .yarnrc 7 | vsc-extension-quickstart.md 8 | **/tsconfig.json 9 | **/.eslintrc.json 10 | **/*.map 11 | **/*.ts 12 | */**/node_modules/ 13 | 14 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to the "upnext" extension will be documented in this file. 4 | 5 | ## [0.0.2] - 2021-04-21 6 | 7 | ### Add 8 | 9 | - Added test boilerplate files 10 | - Properly serves files when initiating "Create Boilerplate" command into VS Code 11 | 12 | ## [0.0.1] - 2021-04-19 13 | 14 | ### Add 15 | 16 | - Added README 17 | - Initialized Yo Code with starter code for VSCode Extension 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | Copyright (c) 2021 OSLabs Beta 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | The above copyright notice and this permission notice shall be included in all 10 | copies or substantial portions of the Software. 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 12 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 14 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 15 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 16 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 17 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | # About 6 | 7 | A comprehensive, open-source [Visual Studio Code](https://code.visualstudio.com/) extension for creating boilerplate for a fullstack [SaaS application](https://searchcloudcomputing.techtarget.com/definition/Software-as-a-Service) with one simple command. [UpNext](https://upnextjs.org/) delivers all of the features needed to jumpstart your application including end to end CRUD functionality, authentication, payments/billing and more. 8 | 9 | ⚠️ Disclaimer: This is beta software, which means there may still be bugs. Please [report any bugs and share your feedback](https://github.com/oslabs-beta/UpNext/issues). 10 | 11 | UpNext is currently only compatible with [npm](https://www.npmjs.com/) for package management. 12 | 13 | # Installation 14 | 15 | 1. Install [Visual Studio Code](https://code.visualstudio.com/download) 16 | 17 | 2. Launch Visual Studio Code 18 | 19 | 3. Install our UpNext extension from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=UpNext.upnext) 20 | 21 | # Configuration 22 | 23 | - Initiate a git repository including your `README`, `.gitignore`, and `LICENSE` as we do not provide these files. Then, open your repository with Visual Studio Code. 24 | 25 | - Launch the command palette by using `Ctrl-Shift-P` (Windows, Linux) or `Cmd-Shift-P` (Mac/OSX) 26 | 27 | - Type in and select `Create Boilerplate` from the drop down menu 28 | 29 |

30 | 31 |

32 | 33 | - `Create Boilerplate` should create a new UpNext terminal in your VS Code and start installing all of your dependencies. Wait until installation has concluded before continuing. 34 | 35 | - Now that you have all of your dependencies, run the `npm test` script to ensure that all of your files/directories have been successfully created. If you are missing files, run the `Create Boilerplate` command again and re-run your test script until you pass all tests. 36 | 37 |

38 | 39 |

40 | 41 | - After all of your files/directories have been successfully created, head over to your `.env` file located in the root directory. It should look a little something like this: 42 | 43 |

44 | 45 |

46 | 47 | - Your `.env` file houses all of the sensitive information for your [OAuth](https://next-auth.js.org/getting-started/introduction) and [Stripe Payments](https://stripe.com/docs/keys). Be sure to replace our placeholder strings with your ids and secrets (do not include quotes) before attempting to test the authentication and payments page. Be sure to include your `.env` in your `.gitignore` for security purposes. 48 | 49 | - Once you have your ids and secrets properly assigned, test our boilerplate by starting Next in development mode using `npm run dev` and in a different terminal use `npm run startdev` to start the server. 50 | 51 | - Congratulations, you've finished configuring your UpNext boilerplate. Now focus on your business logic. If you've enjoyed your experience, star us on [Github](https://github.com/oslabs-beta/UpNext) and clap our [Medium](https://jason-d-lee.medium.com/jumpstart-your-next-saas-application-with-upnext-c7eaf8bb7d7f) article. 52 | 53 | # Features 54 | 55 | A modern and robust tech stack for all types of applications including: 56 | 57 | - [Javascript](https://www.javascript.com/) and [Typescript](https://www.typescriptlang.org/) 58 | 59 | - [React](https://reactjs.org/) with [Next.js](https://nextjs.org/) framework 60 | 61 | - Quick and easy routing capabilities using Next [Router](https://nextjs.org/docs/api-reference/next/router)/[Link](https://nextjs.org/docs/api-reference/next/link) 62 | - Serverless authentication and OAuth using [Next Auth](https://next-auth.js.org/) 63 | 64 | - [Apollo](https://www.apollographql.com/) [Client](https://www.apollographql.com/docs/react/) and [Server](https://www.apollographql.com/docs/apollo-server/) 65 | 66 | - [Express](https://expressjs.com/) Server 67 | 68 | - [GraphQL](https://graphql.org/) utilizing a [Prisma](https://www.prisma.io/) ORM 69 | 70 | - [Stripe](https://stripe.com/) [API](https://stripe.com/docs/api) 71 | 72 | # Release Notes 73 | 74 | UpNext current version: 1.0.0 75 | 76 | ## 1.0.0 77 | 78 | Initial release of UpNext 79 | 80 | # Contributors 81 | 82 | - Andrew Kim: [Github](https://github.com/andrewkimq) [LinkedIn](https://www.linkedin.com/in/andrewkimq/) 83 | - Hyesung Peter Lee: [Github](https://github.com/peterhyesung) [LinkedIn](https://www.linkedin.com/in/peterhyesung/) 84 | - Jason Lee: [Github](https://github.com/jason-d-lee) [LinkedIn](https://www.linkedin.com/in/jason-dongyul-lee) 85 | - Jorge Carlos 'JC' Fernandez: [Github](https://github.com/jorgecarlosfernandez) [LinkedIn](https://www.linkedin.com/in/jorge-carlos-fernandez/) 86 | - Kai Evans: [Github](https://github.com/kaijosefevans) [LinkedIn](https://www.linkedin.com/in/kaijosefevans/) 87 | -------------------------------------------------------------------------------- /UpNextIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oslabs-beta/UpNext/1dd9d50c2615dfa100121ccd8c69b49fa6397f9b/UpNextIcon.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "upnext", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.12.11", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 10 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.10.4" 14 | } 15 | }, 16 | "@babel/helper-validator-identifier": { 17 | "version": "7.12.11", 18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", 19 | "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", 20 | "dev": true 21 | }, 22 | "@babel/highlight": { 23 | "version": "7.13.10", 24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", 25 | "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", 26 | "dev": true, 27 | "requires": { 28 | "@babel/helper-validator-identifier": "^7.12.11", 29 | "chalk": "^2.0.0", 30 | "js-tokens": "^4.0.0" 31 | }, 32 | "dependencies": { 33 | "chalk": { 34 | "version": "2.4.2", 35 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 36 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 37 | "dev": true, 38 | "requires": { 39 | "ansi-styles": "^3.2.1", 40 | "escape-string-regexp": "^1.0.5", 41 | "supports-color": "^5.3.0" 42 | } 43 | } 44 | } 45 | }, 46 | "@eslint/eslintrc": { 47 | "version": "0.4.0", 48 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", 49 | "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", 50 | "dev": true, 51 | "requires": { 52 | "ajv": "^6.12.4", 53 | "debug": "^4.1.1", 54 | "espree": "^7.3.0", 55 | "globals": "^12.1.0", 56 | "ignore": "^4.0.6", 57 | "import-fresh": "^3.2.1", 58 | "js-yaml": "^3.13.1", 59 | "minimatch": "^3.0.4", 60 | "strip-json-comments": "^3.1.1" 61 | }, 62 | "dependencies": { 63 | "globals": { 64 | "version": "12.4.0", 65 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 66 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 67 | "dev": true, 68 | "requires": { 69 | "type-fest": "^0.8.1" 70 | } 71 | }, 72 | "ignore": { 73 | "version": "4.0.6", 74 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 75 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 76 | "dev": true 77 | } 78 | } 79 | }, 80 | "@nodelib/fs.scandir": { 81 | "version": "2.1.4", 82 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", 83 | "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", 84 | "dev": true, 85 | "requires": { 86 | "@nodelib/fs.stat": "2.0.4", 87 | "run-parallel": "^1.1.9" 88 | } 89 | }, 90 | "@nodelib/fs.stat": { 91 | "version": "2.0.4", 92 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", 93 | "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", 94 | "dev": true 95 | }, 96 | "@nodelib/fs.walk": { 97 | "version": "1.2.6", 98 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", 99 | "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", 100 | "dev": true, 101 | "requires": { 102 | "@nodelib/fs.scandir": "2.1.4", 103 | "fastq": "^1.6.0" 104 | } 105 | }, 106 | "@tootallnate/once": { 107 | "version": "1.1.2", 108 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 109 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 110 | "dev": true 111 | }, 112 | "@types/aws-lambda": { 113 | "version": "8.10.13", 114 | "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.13.tgz", 115 | "integrity": "sha512-a1sC60Bqll4N2RYnd4+XuynrVd8LO+uZrgwCVaAER0ldMQ00LRM4iTjU2ulPoQF6P5bHZK5hL/6IF9088VJhUA==" 116 | }, 117 | "@types/body-parser": { 118 | "version": "1.19.0", 119 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", 120 | "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", 121 | "requires": { 122 | "@types/connect": "*", 123 | "@types/node": "*" 124 | } 125 | }, 126 | "@types/connect": { 127 | "version": "3.4.34", 128 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", 129 | "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", 130 | "requires": { 131 | "@types/node": "*" 132 | } 133 | }, 134 | "@types/cors": { 135 | "version": "2.8.10", 136 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", 137 | "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" 138 | }, 139 | "@types/express": { 140 | "version": "4.17.11", 141 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", 142 | "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", 143 | "requires": { 144 | "@types/body-parser": "*", 145 | "@types/express-serve-static-core": "^4.17.18", 146 | "@types/qs": "*", 147 | "@types/serve-static": "*" 148 | } 149 | }, 150 | "@types/express-serve-static-core": { 151 | "version": "4.17.19", 152 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", 153 | "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", 154 | "requires": { 155 | "@types/node": "*", 156 | "@types/qs": "*", 157 | "@types/range-parser": "*" 158 | } 159 | }, 160 | "@types/glob": { 161 | "version": "7.1.3", 162 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", 163 | "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", 164 | "dev": true, 165 | "requires": { 166 | "@types/minimatch": "*", 167 | "@types/node": "*" 168 | } 169 | }, 170 | "@types/graphql": { 171 | "version": "14.5.0", 172 | "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-14.5.0.tgz", 173 | "integrity": "sha512-MOkzsEp1Jk5bXuAsHsUi6BVv0zCO+7/2PTiZMXWDSsMXvNU6w/PLMQT2vHn8hy2i0JqojPz1Sz6rsFjHtsU0lA==", 174 | "requires": { 175 | "graphql": "*" 176 | } 177 | }, 178 | "@types/graphql-deduplicator": { 179 | "version": "2.0.0", 180 | "resolved": "https://registry.npmjs.org/@types/graphql-deduplicator/-/graphql-deduplicator-2.0.0.tgz", 181 | "integrity": "sha512-swUwj5hWF1yFzbUXStLJrUa0ksAt11B8+SwhsAjQAX0LYJ1LLioAyuDcJ9bovWbsNzIXJYXLvljSPQw8nR728w==" 182 | }, 183 | "@types/json-schema": { 184 | "version": "7.0.7", 185 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", 186 | "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", 187 | "dev": true 188 | }, 189 | "@types/mime": { 190 | "version": "1.3.2", 191 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 192 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 193 | }, 194 | "@types/minimatch": { 195 | "version": "3.0.4", 196 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", 197 | "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", 198 | "dev": true 199 | }, 200 | "@types/mocha": { 201 | "version": "8.2.2", 202 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.2.tgz", 203 | "integrity": "sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==", 204 | "dev": true 205 | }, 206 | "@types/node": { 207 | "version": "12.20.10", 208 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.10.tgz", 209 | "integrity": "sha512-TxCmnSSppKBBOzYzPR2BR25YlX5Oay8z2XGwFBInuA/Co0V9xJhLlW4kjbxKtgeNo3NOMbQP1A5Rc03y+XecPw==" 210 | }, 211 | "@types/qs": { 212 | "version": "6.9.6", 213 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", 214 | "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" 215 | }, 216 | "@types/range-parser": { 217 | "version": "1.2.3", 218 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", 219 | "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" 220 | }, 221 | "@types/serve-static": { 222 | "version": "1.13.9", 223 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", 224 | "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", 225 | "requires": { 226 | "@types/mime": "^1", 227 | "@types/node": "*" 228 | } 229 | }, 230 | "@types/vscode": { 231 | "version": "1.55.0", 232 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.55.0.tgz", 233 | "integrity": "sha512-49hysH7jneTQoSC8TWbAi7nKK9Lc5osQNjmDHVosrcU8o3jecD9GrK0Qyul8q4aGPSXRfNGqIp9CBdb13akETg==", 234 | "dev": true 235 | }, 236 | "@types/zen-observable": { 237 | "version": "0.5.4", 238 | "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.5.4.tgz", 239 | "integrity": "sha512-sW6xN96wUak4tgc89d0tbTg7QDGYhGv5hvQIS6h4mRCd8h2btiZ80loPU8cyLwsBbA4ZeQt0FjvUhJ4rNhdsGg==" 240 | }, 241 | "@typescript-eslint/eslint-plugin": { 242 | "version": "4.22.0", 243 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz", 244 | "integrity": "sha512-U8SP9VOs275iDXaL08Ln1Fa/wLXfj5aTr/1c0t0j6CdbOnxh+TruXu1p4I0NAvdPBQgoPjHsgKn28mOi0FzfoA==", 245 | "dev": true, 246 | "requires": { 247 | "@typescript-eslint/experimental-utils": "4.22.0", 248 | "@typescript-eslint/scope-manager": "4.22.0", 249 | "debug": "^4.1.1", 250 | "functional-red-black-tree": "^1.0.1", 251 | "lodash": "^4.17.15", 252 | "regexpp": "^3.0.0", 253 | "semver": "^7.3.2", 254 | "tsutils": "^3.17.1" 255 | } 256 | }, 257 | "@typescript-eslint/experimental-utils": { 258 | "version": "4.22.0", 259 | "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.0.tgz", 260 | "integrity": "sha512-xJXHHl6TuAxB5AWiVrGhvbGL8/hbiCQ8FiWwObO3r0fnvBdrbWEDy1hlvGQOAWc6qsCWuWMKdVWlLAEMpxnddg==", 261 | "dev": true, 262 | "requires": { 263 | "@types/json-schema": "^7.0.3", 264 | "@typescript-eslint/scope-manager": "4.22.0", 265 | "@typescript-eslint/types": "4.22.0", 266 | "@typescript-eslint/typescript-estree": "4.22.0", 267 | "eslint-scope": "^5.0.0", 268 | "eslint-utils": "^2.0.0" 269 | } 270 | }, 271 | "@typescript-eslint/parser": { 272 | "version": "4.22.0", 273 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.22.0.tgz", 274 | "integrity": "sha512-z/bGdBJJZJN76nvAY9DkJANYgK3nlRstRRi74WHm3jjgf2I8AglrSY+6l7ogxOmn55YJ6oKZCLLy+6PW70z15Q==", 275 | "dev": true, 276 | "requires": { 277 | "@typescript-eslint/scope-manager": "4.22.0", 278 | "@typescript-eslint/types": "4.22.0", 279 | "@typescript-eslint/typescript-estree": "4.22.0", 280 | "debug": "^4.1.1" 281 | } 282 | }, 283 | "@typescript-eslint/scope-manager": { 284 | "version": "4.22.0", 285 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz", 286 | "integrity": "sha512-OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q==", 287 | "dev": true, 288 | "requires": { 289 | "@typescript-eslint/types": "4.22.0", 290 | "@typescript-eslint/visitor-keys": "4.22.0" 291 | } 292 | }, 293 | "@typescript-eslint/types": { 294 | "version": "4.22.0", 295 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.22.0.tgz", 296 | "integrity": "sha512-sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA==", 297 | "dev": true 298 | }, 299 | "@typescript-eslint/typescript-estree": { 300 | "version": "4.22.0", 301 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz", 302 | "integrity": "sha512-TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg==", 303 | "dev": true, 304 | "requires": { 305 | "@typescript-eslint/types": "4.22.0", 306 | "@typescript-eslint/visitor-keys": "4.22.0", 307 | "debug": "^4.1.1", 308 | "globby": "^11.0.1", 309 | "is-glob": "^4.0.1", 310 | "semver": "^7.3.2", 311 | "tsutils": "^3.17.1" 312 | } 313 | }, 314 | "@typescript-eslint/visitor-keys": { 315 | "version": "4.22.0", 316 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz", 317 | "integrity": "sha512-nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw==", 318 | "dev": true, 319 | "requires": { 320 | "@typescript-eslint/types": "4.22.0", 321 | "eslint-visitor-keys": "^2.0.0" 322 | } 323 | }, 324 | "@ungap/promise-all-settled": { 325 | "version": "1.1.2", 326 | "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", 327 | "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", 328 | "dev": true 329 | }, 330 | "@wry/equality": { 331 | "version": "0.1.11", 332 | "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", 333 | "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", 334 | "requires": { 335 | "tslib": "^1.9.3" 336 | } 337 | }, 338 | "accepts": { 339 | "version": "1.3.7", 340 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 341 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 342 | "requires": { 343 | "mime-types": "~2.1.24", 344 | "negotiator": "0.6.2" 345 | } 346 | }, 347 | "acorn": { 348 | "version": "7.4.1", 349 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 350 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 351 | "dev": true 352 | }, 353 | "acorn-jsx": { 354 | "version": "5.3.1", 355 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", 356 | "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", 357 | "dev": true 358 | }, 359 | "agent-base": { 360 | "version": "6.0.2", 361 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 362 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 363 | "dev": true, 364 | "requires": { 365 | "debug": "4" 366 | } 367 | }, 368 | "ajv": { 369 | "version": "6.12.6", 370 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 371 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 372 | "dev": true, 373 | "requires": { 374 | "fast-deep-equal": "^3.1.1", 375 | "fast-json-stable-stringify": "^2.0.0", 376 | "json-schema-traverse": "^0.4.1", 377 | "uri-js": "^4.2.2" 378 | } 379 | }, 380 | "ansi-colors": { 381 | "version": "4.1.1", 382 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 383 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 384 | "dev": true 385 | }, 386 | "ansi-regex": { 387 | "version": "5.0.0", 388 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 389 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 390 | "dev": true 391 | }, 392 | "ansi-styles": { 393 | "version": "3.2.1", 394 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 395 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 396 | "dev": true, 397 | "requires": { 398 | "color-convert": "^1.9.0" 399 | } 400 | }, 401 | "anymatch": { 402 | "version": "3.1.2", 403 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 404 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 405 | "dev": true, 406 | "requires": { 407 | "normalize-path": "^3.0.0", 408 | "picomatch": "^2.0.4" 409 | } 410 | }, 411 | "apollo-cache-control": { 412 | "version": "0.1.1", 413 | "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.1.1.tgz", 414 | "integrity": "sha512-XJQs167e9u+e5ybSi51nGYr70NPBbswdvTEHtbtXbwkZ+n9t0SLPvUcoqceayOSwjK1XYOdU/EKPawNdb3rLQA==", 415 | "requires": { 416 | "graphql-extensions": "^0.0.x" 417 | } 418 | }, 419 | "apollo-link": { 420 | "version": "1.2.14", 421 | "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", 422 | "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", 423 | "requires": { 424 | "apollo-utilities": "^1.3.0", 425 | "ts-invariant": "^0.4.0", 426 | "tslib": "^1.9.3", 427 | "zen-observable-ts": "^0.8.21" 428 | } 429 | }, 430 | "apollo-server-core": { 431 | "version": "1.4.0", 432 | "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-1.4.0.tgz", 433 | "integrity": "sha512-BP1Vh39krgEjkQxbjTdBURUjLHbFq1zeOChDJgaRsMxGtlhzuLWwwC6lLdPatN8jEPbeHq8Tndp9QZ3iQZOKKA==", 434 | "requires": { 435 | "apollo-cache-control": "^0.1.0", 436 | "apollo-tracing": "^0.1.0", 437 | "graphql-extensions": "^0.0.x" 438 | } 439 | }, 440 | "apollo-server-express": { 441 | "version": "1.4.0", 442 | "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-1.4.0.tgz", 443 | "integrity": "sha512-zkH00nxhLnJfO0HgnNPBTfZw8qI5ILaPZ5TecMCI9+Y9Ssr2b0bFr9pBRsXy9eudPhI+/O4yqegSUsnLdF/CPw==", 444 | "requires": { 445 | "apollo-server-core": "^1.4.0", 446 | "apollo-server-module-graphiql": "^1.4.0" 447 | } 448 | }, 449 | "apollo-server-lambda": { 450 | "version": "1.3.6", 451 | "resolved": "https://registry.npmjs.org/apollo-server-lambda/-/apollo-server-lambda-1.3.6.tgz", 452 | "integrity": "sha1-varDfxQ8Z5jkC4rnVYC6ZzzqJg4=", 453 | "requires": { 454 | "apollo-server-core": "^1.3.6", 455 | "apollo-server-module-graphiql": "^1.3.4" 456 | } 457 | }, 458 | "apollo-server-module-graphiql": { 459 | "version": "1.4.0", 460 | "resolved": "https://registry.npmjs.org/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.4.0.tgz", 461 | "integrity": "sha512-GmkOcb5he2x5gat+TuiTvabnBf1m4jzdecal3XbXBh/Jg+kx4hcvO3TTDFQ9CuTprtzdcVyA11iqG7iOMOt7vA==" 462 | }, 463 | "apollo-tracing": { 464 | "version": "0.1.4", 465 | "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.1.4.tgz", 466 | "integrity": "sha512-Uv+1nh5AsNmC3m130i2u3IqbS+nrxyVV3KYimH5QKsdPjxxIQB3JAT+jJmpeDxBel8gDVstNmCh82QSLxLSIdQ==", 467 | "requires": { 468 | "graphql-extensions": "~0.0.9" 469 | } 470 | }, 471 | "apollo-upload-server": { 472 | "version": "7.1.0", 473 | "resolved": "https://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-7.1.0.tgz", 474 | "integrity": "sha512-cD9ReCeyurYwZyEDqJYb5TOc9dt8yhPzS+MtrY3iJdqw+pqiiyPngAvVXHjN+Ca7Lajvom4/AT/PBrYVDMM3Kw==", 475 | "requires": { 476 | "busboy": "^0.2.14", 477 | "fs-capacitor": "^1.0.0", 478 | "http-errors": "^1.7.0", 479 | "object-path": "^0.11.4" 480 | } 481 | }, 482 | "apollo-utilities": { 483 | "version": "1.3.4", 484 | "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", 485 | "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", 486 | "requires": { 487 | "@wry/equality": "^0.1.2", 488 | "fast-json-stable-stringify": "^2.0.0", 489 | "ts-invariant": "^0.4.0", 490 | "tslib": "^1.10.0" 491 | } 492 | }, 493 | "argparse": { 494 | "version": "1.0.10", 495 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 496 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 497 | "dev": true, 498 | "requires": { 499 | "sprintf-js": "~1.0.2" 500 | } 501 | }, 502 | "array-flatten": { 503 | "version": "1.1.1", 504 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 505 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 506 | }, 507 | "array-union": { 508 | "version": "2.1.0", 509 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 510 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 511 | "dev": true 512 | }, 513 | "astral-regex": { 514 | "version": "2.0.0", 515 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 516 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 517 | "dev": true 518 | }, 519 | "async-limiter": { 520 | "version": "1.0.1", 521 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", 522 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" 523 | }, 524 | "backo2": { 525 | "version": "1.0.2", 526 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", 527 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" 528 | }, 529 | "balanced-match": { 530 | "version": "1.0.2", 531 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 532 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 533 | "dev": true 534 | }, 535 | "big-integer": { 536 | "version": "1.6.48", 537 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", 538 | "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", 539 | "dev": true 540 | }, 541 | "binary": { 542 | "version": "0.3.0", 543 | "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", 544 | "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", 545 | "dev": true, 546 | "requires": { 547 | "buffers": "~0.1.1", 548 | "chainsaw": "~0.1.0" 549 | } 550 | }, 551 | "binary-extensions": { 552 | "version": "2.2.0", 553 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 554 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 555 | "dev": true 556 | }, 557 | "bluebird": { 558 | "version": "3.4.7", 559 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", 560 | "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", 561 | "dev": true 562 | }, 563 | "body-parser": { 564 | "version": "1.19.0", 565 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 566 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 567 | "requires": { 568 | "bytes": "3.1.0", 569 | "content-type": "~1.0.4", 570 | "debug": "2.6.9", 571 | "depd": "~1.1.2", 572 | "http-errors": "1.7.2", 573 | "iconv-lite": "0.4.24", 574 | "on-finished": "~2.3.0", 575 | "qs": "6.7.0", 576 | "raw-body": "2.4.0", 577 | "type-is": "~1.6.17" 578 | }, 579 | "dependencies": { 580 | "debug": { 581 | "version": "2.6.9", 582 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 583 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 584 | "requires": { 585 | "ms": "2.0.0" 586 | } 587 | }, 588 | "http-errors": { 589 | "version": "1.7.2", 590 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 591 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 592 | "requires": { 593 | "depd": "~1.1.2", 594 | "inherits": "2.0.3", 595 | "setprototypeof": "1.1.1", 596 | "statuses": ">= 1.5.0 < 2", 597 | "toidentifier": "1.0.0" 598 | } 599 | }, 600 | "inherits": { 601 | "version": "2.0.3", 602 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 603 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 604 | }, 605 | "ms": { 606 | "version": "2.0.0", 607 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 608 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 609 | }, 610 | "setprototypeof": { 611 | "version": "1.1.1", 612 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 613 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 614 | } 615 | } 616 | }, 617 | "body-parser-graphql": { 618 | "version": "1.1.0", 619 | "resolved": "https://registry.npmjs.org/body-parser-graphql/-/body-parser-graphql-1.1.0.tgz", 620 | "integrity": "sha512-bOBF4n1AnUjcY1SzLeibeIx4XOuYqEkjn/Lm4yKhnN6KedoXMv4hVqgcKHGRnxOMJP64tErqrQU+4cihhpbJXg==", 621 | "requires": { 622 | "body-parser": "^1.18.2" 623 | } 624 | }, 625 | "brace-expansion": { 626 | "version": "1.1.11", 627 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 628 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 629 | "dev": true, 630 | "requires": { 631 | "balanced-match": "^1.0.0", 632 | "concat-map": "0.0.1" 633 | } 634 | }, 635 | "braces": { 636 | "version": "3.0.2", 637 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 638 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 639 | "dev": true, 640 | "requires": { 641 | "fill-range": "^7.0.1" 642 | } 643 | }, 644 | "browser-stdout": { 645 | "version": "1.3.1", 646 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 647 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 648 | "dev": true 649 | }, 650 | "buffer-from": { 651 | "version": "1.1.1", 652 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 653 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 654 | }, 655 | "buffer-indexof-polyfill": { 656 | "version": "1.0.2", 657 | "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", 658 | "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", 659 | "dev": true 660 | }, 661 | "buffers": { 662 | "version": "0.1.1", 663 | "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", 664 | "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", 665 | "dev": true 666 | }, 667 | "busboy": { 668 | "version": "0.2.14", 669 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", 670 | "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", 671 | "requires": { 672 | "dicer": "0.2.5", 673 | "readable-stream": "1.1.x" 674 | }, 675 | "dependencies": { 676 | "isarray": { 677 | "version": "0.0.1", 678 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 679 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 680 | }, 681 | "readable-stream": { 682 | "version": "1.1.14", 683 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 684 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 685 | "requires": { 686 | "core-util-is": "~1.0.0", 687 | "inherits": "~2.0.1", 688 | "isarray": "0.0.1", 689 | "string_decoder": "~0.10.x" 690 | } 691 | }, 692 | "string_decoder": { 693 | "version": "0.10.31", 694 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 695 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" 696 | } 697 | } 698 | }, 699 | "bytes": { 700 | "version": "3.1.0", 701 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 702 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 703 | }, 704 | "call-bind": { 705 | "version": "1.0.2", 706 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 707 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 708 | "dev": true, 709 | "requires": { 710 | "function-bind": "^1.1.1", 711 | "get-intrinsic": "^1.0.2" 712 | } 713 | }, 714 | "callsites": { 715 | "version": "3.1.0", 716 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 717 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 718 | "dev": true 719 | }, 720 | "camelcase": { 721 | "version": "6.2.0", 722 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 723 | "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 724 | "dev": true 725 | }, 726 | "chainsaw": { 727 | "version": "0.1.0", 728 | "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", 729 | "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", 730 | "dev": true, 731 | "requires": { 732 | "traverse": ">=0.3.0 <0.4" 733 | } 734 | }, 735 | "chalk": { 736 | "version": "4.1.0", 737 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 738 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 739 | "dev": true, 740 | "requires": { 741 | "ansi-styles": "^4.1.0", 742 | "supports-color": "^7.1.0" 743 | }, 744 | "dependencies": { 745 | "ansi-styles": { 746 | "version": "4.3.0", 747 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 748 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 749 | "dev": true, 750 | "requires": { 751 | "color-convert": "^2.0.1" 752 | } 753 | }, 754 | "color-convert": { 755 | "version": "2.0.1", 756 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 757 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 758 | "dev": true, 759 | "requires": { 760 | "color-name": "~1.1.4" 761 | } 762 | }, 763 | "color-name": { 764 | "version": "1.1.4", 765 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 766 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 767 | "dev": true 768 | }, 769 | "has-flag": { 770 | "version": "4.0.0", 771 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 772 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 773 | "dev": true 774 | }, 775 | "supports-color": { 776 | "version": "7.2.0", 777 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 778 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 779 | "dev": true, 780 | "requires": { 781 | "has-flag": "^4.0.0" 782 | } 783 | } 784 | } 785 | }, 786 | "chokidar": { 787 | "version": "3.5.1", 788 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 789 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 790 | "dev": true, 791 | "requires": { 792 | "anymatch": "~3.1.1", 793 | "braces": "~3.0.2", 794 | "fsevents": "~2.3.1", 795 | "glob-parent": "~5.1.0", 796 | "is-binary-path": "~2.1.0", 797 | "is-glob": "~4.0.1", 798 | "normalize-path": "~3.0.0", 799 | "readdirp": "~3.5.0" 800 | } 801 | }, 802 | "cliui": { 803 | "version": "7.0.4", 804 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 805 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 806 | "dev": true, 807 | "requires": { 808 | "string-width": "^4.2.0", 809 | "strip-ansi": "^6.0.0", 810 | "wrap-ansi": "^7.0.0" 811 | } 812 | }, 813 | "color-convert": { 814 | "version": "1.9.3", 815 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 816 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 817 | "dev": true, 818 | "requires": { 819 | "color-name": "1.1.3" 820 | } 821 | }, 822 | "color-name": { 823 | "version": "1.1.3", 824 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 825 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 826 | "dev": true 827 | }, 828 | "concat-map": { 829 | "version": "0.0.1", 830 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 831 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 832 | "dev": true 833 | }, 834 | "content-disposition": { 835 | "version": "0.5.3", 836 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 837 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 838 | "requires": { 839 | "safe-buffer": "5.1.2" 840 | }, 841 | "dependencies": { 842 | "safe-buffer": { 843 | "version": "5.1.2", 844 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 845 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 846 | } 847 | } 848 | }, 849 | "content-type": { 850 | "version": "1.0.4", 851 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 852 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 853 | }, 854 | "cookie": { 855 | "version": "0.4.0", 856 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 857 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 858 | }, 859 | "cookie-signature": { 860 | "version": "1.0.6", 861 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 862 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 863 | }, 864 | "core-js": { 865 | "version": "2.6.12", 866 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", 867 | "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" 868 | }, 869 | "core-util-is": { 870 | "version": "1.0.2", 871 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 872 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 873 | }, 874 | "cors": { 875 | "version": "2.8.5", 876 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 877 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 878 | "requires": { 879 | "object-assign": "^4", 880 | "vary": "^1" 881 | } 882 | }, 883 | "cross-spawn": { 884 | "version": "7.0.3", 885 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 886 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 887 | "dev": true, 888 | "requires": { 889 | "path-key": "^3.1.0", 890 | "shebang-command": "^2.0.0", 891 | "which": "^2.0.1" 892 | } 893 | }, 894 | "debug": { 895 | "version": "4.3.1", 896 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 897 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 898 | "dev": true, 899 | "requires": { 900 | "ms": "2.1.2" 901 | } 902 | }, 903 | "decamelize": { 904 | "version": "4.0.0", 905 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 906 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 907 | "dev": true 908 | }, 909 | "deep-is": { 910 | "version": "0.1.3", 911 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 912 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 913 | "dev": true 914 | }, 915 | "depd": { 916 | "version": "1.1.2", 917 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 918 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 919 | }, 920 | "deprecated-decorator": { 921 | "version": "0.1.6", 922 | "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", 923 | "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" 924 | }, 925 | "destroy": { 926 | "version": "1.0.4", 927 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 928 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 929 | }, 930 | "dicer": { 931 | "version": "0.2.5", 932 | "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", 933 | "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", 934 | "requires": { 935 | "readable-stream": "1.1.x", 936 | "streamsearch": "0.1.2" 937 | }, 938 | "dependencies": { 939 | "isarray": { 940 | "version": "0.0.1", 941 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 942 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 943 | }, 944 | "readable-stream": { 945 | "version": "1.1.14", 946 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 947 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 948 | "requires": { 949 | "core-util-is": "~1.0.0", 950 | "inherits": "~2.0.1", 951 | "isarray": "0.0.1", 952 | "string_decoder": "~0.10.x" 953 | } 954 | }, 955 | "string_decoder": { 956 | "version": "0.10.31", 957 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 958 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" 959 | } 960 | } 961 | }, 962 | "diff": { 963 | "version": "5.0.0", 964 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 965 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 966 | "dev": true 967 | }, 968 | "dir-glob": { 969 | "version": "3.0.1", 970 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 971 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 972 | "dev": true, 973 | "requires": { 974 | "path-type": "^4.0.0" 975 | } 976 | }, 977 | "doctrine": { 978 | "version": "3.0.0", 979 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 980 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 981 | "dev": true, 982 | "requires": { 983 | "esutils": "^2.0.2" 984 | } 985 | }, 986 | "duplexer2": { 987 | "version": "0.1.4", 988 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 989 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", 990 | "dev": true, 991 | "requires": { 992 | "readable-stream": "^2.0.2" 993 | } 994 | }, 995 | "ee-first": { 996 | "version": "1.1.1", 997 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 998 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 999 | }, 1000 | "emoji-regex": { 1001 | "version": "8.0.0", 1002 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1003 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1004 | "dev": true 1005 | }, 1006 | "encodeurl": { 1007 | "version": "1.0.2", 1008 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1009 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 1010 | }, 1011 | "enquirer": { 1012 | "version": "2.3.6", 1013 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 1014 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 1015 | "dev": true, 1016 | "requires": { 1017 | "ansi-colors": "^4.1.1" 1018 | } 1019 | }, 1020 | "escalade": { 1021 | "version": "3.1.1", 1022 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1023 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1024 | "dev": true 1025 | }, 1026 | "escape-html": { 1027 | "version": "1.0.3", 1028 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1029 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 1030 | }, 1031 | "escape-string-regexp": { 1032 | "version": "1.0.5", 1033 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1034 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1035 | "dev": true 1036 | }, 1037 | "eslint": { 1038 | "version": "7.24.0", 1039 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.24.0.tgz", 1040 | "integrity": "sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ==", 1041 | "dev": true, 1042 | "requires": { 1043 | "@babel/code-frame": "7.12.11", 1044 | "@eslint/eslintrc": "^0.4.0", 1045 | "ajv": "^6.10.0", 1046 | "chalk": "^4.0.0", 1047 | "cross-spawn": "^7.0.2", 1048 | "debug": "^4.0.1", 1049 | "doctrine": "^3.0.0", 1050 | "enquirer": "^2.3.5", 1051 | "eslint-scope": "^5.1.1", 1052 | "eslint-utils": "^2.1.0", 1053 | "eslint-visitor-keys": "^2.0.0", 1054 | "espree": "^7.3.1", 1055 | "esquery": "^1.4.0", 1056 | "esutils": "^2.0.2", 1057 | "file-entry-cache": "^6.0.1", 1058 | "functional-red-black-tree": "^1.0.1", 1059 | "glob-parent": "^5.0.0", 1060 | "globals": "^13.6.0", 1061 | "ignore": "^4.0.6", 1062 | "import-fresh": "^3.0.0", 1063 | "imurmurhash": "^0.1.4", 1064 | "is-glob": "^4.0.0", 1065 | "js-yaml": "^3.13.1", 1066 | "json-stable-stringify-without-jsonify": "^1.0.1", 1067 | "levn": "^0.4.1", 1068 | "lodash": "^4.17.21", 1069 | "minimatch": "^3.0.4", 1070 | "natural-compare": "^1.4.0", 1071 | "optionator": "^0.9.1", 1072 | "progress": "^2.0.0", 1073 | "regexpp": "^3.1.0", 1074 | "semver": "^7.2.1", 1075 | "strip-ansi": "^6.0.0", 1076 | "strip-json-comments": "^3.1.0", 1077 | "table": "^6.0.4", 1078 | "text-table": "^0.2.0", 1079 | "v8-compile-cache": "^2.0.3" 1080 | }, 1081 | "dependencies": { 1082 | "ignore": { 1083 | "version": "4.0.6", 1084 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1085 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1086 | "dev": true 1087 | } 1088 | } 1089 | }, 1090 | "eslint-scope": { 1091 | "version": "5.1.1", 1092 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1093 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1094 | "dev": true, 1095 | "requires": { 1096 | "esrecurse": "^4.3.0", 1097 | "estraverse": "^4.1.1" 1098 | } 1099 | }, 1100 | "eslint-utils": { 1101 | "version": "2.1.0", 1102 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 1103 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 1104 | "dev": true, 1105 | "requires": { 1106 | "eslint-visitor-keys": "^1.1.0" 1107 | }, 1108 | "dependencies": { 1109 | "eslint-visitor-keys": { 1110 | "version": "1.3.0", 1111 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1112 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1113 | "dev": true 1114 | } 1115 | } 1116 | }, 1117 | "eslint-visitor-keys": { 1118 | "version": "2.0.0", 1119 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", 1120 | "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", 1121 | "dev": true 1122 | }, 1123 | "espree": { 1124 | "version": "7.3.1", 1125 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 1126 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 1127 | "dev": true, 1128 | "requires": { 1129 | "acorn": "^7.4.0", 1130 | "acorn-jsx": "^5.3.1", 1131 | "eslint-visitor-keys": "^1.3.0" 1132 | }, 1133 | "dependencies": { 1134 | "eslint-visitor-keys": { 1135 | "version": "1.3.0", 1136 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1137 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1138 | "dev": true 1139 | } 1140 | } 1141 | }, 1142 | "esprima": { 1143 | "version": "4.0.1", 1144 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1145 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1146 | "dev": true 1147 | }, 1148 | "esquery": { 1149 | "version": "1.4.0", 1150 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1151 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1152 | "dev": true, 1153 | "requires": { 1154 | "estraverse": "^5.1.0" 1155 | }, 1156 | "dependencies": { 1157 | "estraverse": { 1158 | "version": "5.2.0", 1159 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1160 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1161 | "dev": true 1162 | } 1163 | } 1164 | }, 1165 | "esrecurse": { 1166 | "version": "4.3.0", 1167 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1168 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1169 | "dev": true, 1170 | "requires": { 1171 | "estraverse": "^5.2.0" 1172 | }, 1173 | "dependencies": { 1174 | "estraverse": { 1175 | "version": "5.2.0", 1176 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1177 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1178 | "dev": true 1179 | } 1180 | } 1181 | }, 1182 | "estraverse": { 1183 | "version": "4.3.0", 1184 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1185 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1186 | "dev": true 1187 | }, 1188 | "esutils": { 1189 | "version": "2.0.3", 1190 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1191 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1192 | "dev": true 1193 | }, 1194 | "etag": { 1195 | "version": "1.8.1", 1196 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1197 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 1198 | }, 1199 | "eventemitter3": { 1200 | "version": "3.1.2", 1201 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", 1202 | "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" 1203 | }, 1204 | "express": { 1205 | "version": "4.17.1", 1206 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 1207 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 1208 | "requires": { 1209 | "accepts": "~1.3.7", 1210 | "array-flatten": "1.1.1", 1211 | "body-parser": "1.19.0", 1212 | "content-disposition": "0.5.3", 1213 | "content-type": "~1.0.4", 1214 | "cookie": "0.4.0", 1215 | "cookie-signature": "1.0.6", 1216 | "debug": "2.6.9", 1217 | "depd": "~1.1.2", 1218 | "encodeurl": "~1.0.2", 1219 | "escape-html": "~1.0.3", 1220 | "etag": "~1.8.1", 1221 | "finalhandler": "~1.1.2", 1222 | "fresh": "0.5.2", 1223 | "merge-descriptors": "1.0.1", 1224 | "methods": "~1.1.2", 1225 | "on-finished": "~2.3.0", 1226 | "parseurl": "~1.3.3", 1227 | "path-to-regexp": "0.1.7", 1228 | "proxy-addr": "~2.0.5", 1229 | "qs": "6.7.0", 1230 | "range-parser": "~1.2.1", 1231 | "safe-buffer": "5.1.2", 1232 | "send": "0.17.1", 1233 | "serve-static": "1.14.1", 1234 | "setprototypeof": "1.1.1", 1235 | "statuses": "~1.5.0", 1236 | "type-is": "~1.6.18", 1237 | "utils-merge": "1.0.1", 1238 | "vary": "~1.1.2" 1239 | }, 1240 | "dependencies": { 1241 | "debug": { 1242 | "version": "2.6.9", 1243 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1244 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1245 | "requires": { 1246 | "ms": "2.0.0" 1247 | } 1248 | }, 1249 | "ms": { 1250 | "version": "2.0.0", 1251 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1252 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1253 | }, 1254 | "safe-buffer": { 1255 | "version": "5.1.2", 1256 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1257 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1258 | }, 1259 | "setprototypeof": { 1260 | "version": "1.1.1", 1261 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1262 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1263 | } 1264 | } 1265 | }, 1266 | "fast-deep-equal": { 1267 | "version": "3.1.3", 1268 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1269 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1270 | "dev": true 1271 | }, 1272 | "fast-glob": { 1273 | "version": "3.2.5", 1274 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", 1275 | "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", 1276 | "dev": true, 1277 | "requires": { 1278 | "@nodelib/fs.stat": "^2.0.2", 1279 | "@nodelib/fs.walk": "^1.2.3", 1280 | "glob-parent": "^5.1.0", 1281 | "merge2": "^1.3.0", 1282 | "micromatch": "^4.0.2", 1283 | "picomatch": "^2.2.1" 1284 | } 1285 | }, 1286 | "fast-json-stable-stringify": { 1287 | "version": "2.1.0", 1288 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1289 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1290 | }, 1291 | "fast-levenshtein": { 1292 | "version": "2.0.6", 1293 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1294 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1295 | "dev": true 1296 | }, 1297 | "fastq": { 1298 | "version": "1.11.0", 1299 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", 1300 | "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", 1301 | "dev": true, 1302 | "requires": { 1303 | "reusify": "^1.0.4" 1304 | } 1305 | }, 1306 | "file-entry-cache": { 1307 | "version": "6.0.1", 1308 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1309 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1310 | "dev": true, 1311 | "requires": { 1312 | "flat-cache": "^3.0.4" 1313 | } 1314 | }, 1315 | "fill-range": { 1316 | "version": "7.0.1", 1317 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1318 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1319 | "dev": true, 1320 | "requires": { 1321 | "to-regex-range": "^5.0.1" 1322 | } 1323 | }, 1324 | "finalhandler": { 1325 | "version": "1.1.2", 1326 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1327 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1328 | "requires": { 1329 | "debug": "2.6.9", 1330 | "encodeurl": "~1.0.2", 1331 | "escape-html": "~1.0.3", 1332 | "on-finished": "~2.3.0", 1333 | "parseurl": "~1.3.3", 1334 | "statuses": "~1.5.0", 1335 | "unpipe": "~1.0.0" 1336 | }, 1337 | "dependencies": { 1338 | "debug": { 1339 | "version": "2.6.9", 1340 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1341 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1342 | "requires": { 1343 | "ms": "2.0.0" 1344 | } 1345 | }, 1346 | "ms": { 1347 | "version": "2.0.0", 1348 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1349 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1350 | } 1351 | } 1352 | }, 1353 | "find-up": { 1354 | "version": "5.0.0", 1355 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1356 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1357 | "dev": true, 1358 | "requires": { 1359 | "locate-path": "^6.0.0", 1360 | "path-exists": "^4.0.0" 1361 | } 1362 | }, 1363 | "flat": { 1364 | "version": "5.0.2", 1365 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1366 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1367 | "dev": true 1368 | }, 1369 | "flat-cache": { 1370 | "version": "3.0.4", 1371 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1372 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1373 | "dev": true, 1374 | "requires": { 1375 | "flatted": "^3.1.0", 1376 | "rimraf": "^3.0.2" 1377 | } 1378 | }, 1379 | "flatted": { 1380 | "version": "3.1.1", 1381 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", 1382 | "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", 1383 | "dev": true 1384 | }, 1385 | "forwarded": { 1386 | "version": "0.1.2", 1387 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 1388 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 1389 | }, 1390 | "fresh": { 1391 | "version": "0.5.2", 1392 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1393 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1394 | }, 1395 | "fs-capacitor": { 1396 | "version": "1.0.1", 1397 | "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-1.0.1.tgz", 1398 | "integrity": "sha512-XdZK0Q78WP29Vm3FGgJRhRhrBm51PagovzWtW2kJ3Q6cYJbGtZqWSGTSPwvtEkyjIirFd7b8Yes/dpOYjt4RRQ==" 1399 | }, 1400 | "fs.realpath": { 1401 | "version": "1.0.0", 1402 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1403 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1404 | "dev": true 1405 | }, 1406 | "fsevents": { 1407 | "version": "2.3.2", 1408 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1409 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1410 | "dev": true, 1411 | "optional": true 1412 | }, 1413 | "fstream": { 1414 | "version": "1.0.12", 1415 | "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", 1416 | "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", 1417 | "dev": true, 1418 | "requires": { 1419 | "graceful-fs": "^4.1.2", 1420 | "inherits": "~2.0.0", 1421 | "mkdirp": ">=0.5 0", 1422 | "rimraf": "2" 1423 | }, 1424 | "dependencies": { 1425 | "rimraf": { 1426 | "version": "2.7.1", 1427 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1428 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1429 | "dev": true, 1430 | "requires": { 1431 | "glob": "^7.1.3" 1432 | } 1433 | } 1434 | } 1435 | }, 1436 | "function-bind": { 1437 | "version": "1.1.1", 1438 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1439 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1440 | "dev": true 1441 | }, 1442 | "functional-red-black-tree": { 1443 | "version": "1.0.1", 1444 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1445 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1446 | "dev": true 1447 | }, 1448 | "get-caller-file": { 1449 | "version": "2.0.5", 1450 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1451 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1452 | "dev": true 1453 | }, 1454 | "get-intrinsic": { 1455 | "version": "1.1.1", 1456 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1457 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1458 | "dev": true, 1459 | "requires": { 1460 | "function-bind": "^1.1.1", 1461 | "has": "^1.0.3", 1462 | "has-symbols": "^1.0.1" 1463 | } 1464 | }, 1465 | "glob": { 1466 | "version": "7.1.6", 1467 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1468 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1469 | "dev": true, 1470 | "requires": { 1471 | "fs.realpath": "^1.0.0", 1472 | "inflight": "^1.0.4", 1473 | "inherits": "2", 1474 | "minimatch": "^3.0.4", 1475 | "once": "^1.3.0", 1476 | "path-is-absolute": "^1.0.0" 1477 | } 1478 | }, 1479 | "glob-parent": { 1480 | "version": "5.1.2", 1481 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1482 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1483 | "dev": true, 1484 | "requires": { 1485 | "is-glob": "^4.0.1" 1486 | } 1487 | }, 1488 | "globals": { 1489 | "version": "13.8.0", 1490 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", 1491 | "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", 1492 | "dev": true, 1493 | "requires": { 1494 | "type-fest": "^0.20.2" 1495 | }, 1496 | "dependencies": { 1497 | "type-fest": { 1498 | "version": "0.20.2", 1499 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1500 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1501 | "dev": true 1502 | } 1503 | } 1504 | }, 1505 | "globby": { 1506 | "version": "11.0.3", 1507 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", 1508 | "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", 1509 | "dev": true, 1510 | "requires": { 1511 | "array-union": "^2.1.0", 1512 | "dir-glob": "^3.0.1", 1513 | "fast-glob": "^3.1.1", 1514 | "ignore": "^5.1.4", 1515 | "merge2": "^1.3.0", 1516 | "slash": "^3.0.0" 1517 | } 1518 | }, 1519 | "graceful-fs": { 1520 | "version": "4.2.6", 1521 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", 1522 | "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", 1523 | "dev": true 1524 | }, 1525 | "graphql": { 1526 | "version": "15.5.0", 1527 | "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.0.tgz", 1528 | "integrity": "sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA==" 1529 | }, 1530 | "graphql-deduplicator": { 1531 | "version": "2.0.6", 1532 | "resolved": "https://registry.npmjs.org/graphql-deduplicator/-/graphql-deduplicator-2.0.6.tgz", 1533 | "integrity": "sha512-sm9tNL+9qqIrKBb7Ovy8opUE+WKuK/r+hvcP49VL8Kop6slRJn7a5vW2wRNrMfZAZ5p9KHmJ3AkB/3j+Q6d+LA==" 1534 | }, 1535 | "graphql-extensions": { 1536 | "version": "0.0.10", 1537 | "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.0.10.tgz", 1538 | "integrity": "sha512-TnQueqUDCYzOSrpQb3q1ngDSP2otJSF+9yNLrQGPzkMsvnQ+v6e2d5tl+B35D4y+XpmvVnAn4T3ZK28mkILveA==", 1539 | "requires": { 1540 | "core-js": "^2.5.3", 1541 | "source-map-support": "^0.5.1" 1542 | } 1543 | }, 1544 | "graphql-import": { 1545 | "version": "0.7.1", 1546 | "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.7.1.tgz", 1547 | "integrity": "sha512-YpwpaPjRUVlw2SN3OPljpWbVRWAhMAyfSba5U47qGMOSsPLi2gYeJtngGpymjm9nk57RFWEpjqwh4+dpYuFAPw==", 1548 | "requires": { 1549 | "lodash": "^4.17.4", 1550 | "resolve-from": "^4.0.0" 1551 | } 1552 | }, 1553 | "graphql-middleware": { 1554 | "version": "4.0.1", 1555 | "resolved": "https://registry.npmjs.org/graphql-middleware/-/graphql-middleware-4.0.1.tgz", 1556 | "integrity": "sha512-r9r+pcHV4yZW7LAOcjQYTbNY6nR9SrLgpVZKbrtgXxpQW/MUc1N8q3PESciebvp5s0EEUgRchcRjUkyaArCIFw==", 1557 | "requires": { 1558 | "graphql-tools": "^4.0.5" 1559 | } 1560 | }, 1561 | "graphql-playground-html": { 1562 | "version": "1.6.12", 1563 | "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.12.tgz", 1564 | "integrity": "sha512-yOYFwwSMBL0MwufeL8bkrNDgRE7eF/kTHiwrqn9FiR9KLcNIl1xw9l9a+6yIRZM56JReQOHpbQFXTZn1IuSKRg==" 1565 | }, 1566 | "graphql-playground-middleware-express": { 1567 | "version": "1.7.11", 1568 | "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.11.tgz", 1569 | "integrity": "sha512-sKItB4s3FxqlwCgXdMfwRAfssSoo31bcFsGAAg/HzaZLicY6CDlofKXP8G5iPDerB6NaoAcAaBLutLzl9sd4fQ==", 1570 | "requires": { 1571 | "graphql-playground-html": "1.6.12" 1572 | } 1573 | }, 1574 | "graphql-playground-middleware-lambda": { 1575 | "version": "1.7.12", 1576 | "resolved": "https://registry.npmjs.org/graphql-playground-middleware-lambda/-/graphql-playground-middleware-lambda-1.7.12.tgz", 1577 | "integrity": "sha512-fJ1Y0Ck5ctmfaQFoWv7vNnVP7We19P3miVmOT85YPrjpzbMYv0wPfxm4Zjt8nnqXr0KU9nGW53tz3K7/Lvzxtw==", 1578 | "requires": { 1579 | "graphql-playground-html": "1.6.12" 1580 | } 1581 | }, 1582 | "graphql-subscriptions": { 1583 | "version": "0.5.8", 1584 | "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-0.5.8.tgz", 1585 | "integrity": "sha512-0CaZnXKBw2pwnIbvmVckby5Ge5e2ecmjofhYCdyeACbCly2j3WXDP/pl+s+Dqd2GQFC7y99NB+53jrt55CKxYQ==", 1586 | "requires": { 1587 | "iterall": "^1.2.1" 1588 | } 1589 | }, 1590 | "graphql-tools": { 1591 | "version": "4.0.8", 1592 | "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", 1593 | "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", 1594 | "requires": { 1595 | "apollo-link": "^1.2.14", 1596 | "apollo-utilities": "^1.0.1", 1597 | "deprecated-decorator": "^0.1.6", 1598 | "iterall": "^1.1.3", 1599 | "uuid": "^3.1.0" 1600 | } 1601 | }, 1602 | "graphql-upload": { 1603 | "version": "8.1.0", 1604 | "resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-8.1.0.tgz", 1605 | "integrity": "sha512-U2OiDI5VxYmzRKw0Z2dmfk0zkqMRaecH9Smh1U277gVgVe9Qn+18xqf4skwr4YJszGIh7iQDZ57+5ygOK9sM/Q==", 1606 | "requires": { 1607 | "busboy": "^0.3.1", 1608 | "fs-capacitor": "^2.0.4", 1609 | "http-errors": "^1.7.3", 1610 | "object-path": "^0.11.4" 1611 | }, 1612 | "dependencies": { 1613 | "busboy": { 1614 | "version": "0.3.1", 1615 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", 1616 | "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", 1617 | "requires": { 1618 | "dicer": "0.3.0" 1619 | } 1620 | }, 1621 | "dicer": { 1622 | "version": "0.3.0", 1623 | "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", 1624 | "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", 1625 | "requires": { 1626 | "streamsearch": "0.1.2" 1627 | } 1628 | }, 1629 | "fs-capacitor": { 1630 | "version": "2.0.4", 1631 | "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", 1632 | "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==" 1633 | } 1634 | } 1635 | }, 1636 | "graphql-yoga": { 1637 | "version": "1.18.3", 1638 | "resolved": "https://registry.npmjs.org/graphql-yoga/-/graphql-yoga-1.18.3.tgz", 1639 | "integrity": "sha512-tR6JYbwLSBVu0Z8M7BIyt1PHhhexmRwneYM8Ru/g2pixrtsWbelBFAXU7bDPhXrqZ49Zxt2zLJ60x3bLNGo/bQ==", 1640 | "requires": { 1641 | "@types/aws-lambda": "8.10.13", 1642 | "@types/cors": "^2.8.4", 1643 | "@types/express": "^4.11.1", 1644 | "@types/graphql": "^14.0.0", 1645 | "@types/graphql-deduplicator": "^2.0.0", 1646 | "@types/zen-observable": "^0.5.3", 1647 | "apollo-server-express": "^1.3.6", 1648 | "apollo-server-lambda": "1.3.6", 1649 | "apollo-upload-server": "^7.0.0", 1650 | "body-parser-graphql": "1.1.0", 1651 | "cors": "^2.8.4", 1652 | "express": "^4.16.3", 1653 | "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0", 1654 | "graphql-deduplicator": "^2.0.1", 1655 | "graphql-import": "^0.7.0", 1656 | "graphql-middleware": "4.0.1", 1657 | "graphql-playground-middleware-express": "1.7.11", 1658 | "graphql-playground-middleware-lambda": "1.7.12", 1659 | "graphql-subscriptions": "^0.5.8", 1660 | "graphql-tools": "^4.0.0", 1661 | "graphql-upload": "^8.0.0", 1662 | "subscriptions-transport-ws": "^0.9.8" 1663 | }, 1664 | "dependencies": { 1665 | "graphql": { 1666 | "version": "14.7.0", 1667 | "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", 1668 | "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", 1669 | "requires": { 1670 | "iterall": "^1.2.2" 1671 | } 1672 | } 1673 | } 1674 | }, 1675 | "growl": { 1676 | "version": "1.10.5", 1677 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 1678 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 1679 | "dev": true 1680 | }, 1681 | "has": { 1682 | "version": "1.0.3", 1683 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1684 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1685 | "dev": true, 1686 | "requires": { 1687 | "function-bind": "^1.1.1" 1688 | } 1689 | }, 1690 | "has-flag": { 1691 | "version": "3.0.0", 1692 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1693 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1694 | "dev": true 1695 | }, 1696 | "has-symbols": { 1697 | "version": "1.0.2", 1698 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 1699 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", 1700 | "dev": true 1701 | }, 1702 | "he": { 1703 | "version": "1.2.0", 1704 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1705 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1706 | "dev": true 1707 | }, 1708 | "http-errors": { 1709 | "version": "1.8.0", 1710 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", 1711 | "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", 1712 | "requires": { 1713 | "depd": "~1.1.2", 1714 | "inherits": "2.0.4", 1715 | "setprototypeof": "1.2.0", 1716 | "statuses": ">= 1.5.0 < 2", 1717 | "toidentifier": "1.0.0" 1718 | } 1719 | }, 1720 | "http-proxy-agent": { 1721 | "version": "4.0.1", 1722 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 1723 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 1724 | "dev": true, 1725 | "requires": { 1726 | "@tootallnate/once": "1", 1727 | "agent-base": "6", 1728 | "debug": "4" 1729 | } 1730 | }, 1731 | "https-proxy-agent": { 1732 | "version": "5.0.0", 1733 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 1734 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 1735 | "dev": true, 1736 | "requires": { 1737 | "agent-base": "6", 1738 | "debug": "4" 1739 | } 1740 | }, 1741 | "iconv-lite": { 1742 | "version": "0.4.24", 1743 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1744 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1745 | "requires": { 1746 | "safer-buffer": ">= 2.1.2 < 3" 1747 | } 1748 | }, 1749 | "ignore": { 1750 | "version": "5.1.8", 1751 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", 1752 | "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", 1753 | "dev": true 1754 | }, 1755 | "import-fresh": { 1756 | "version": "3.3.0", 1757 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1758 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1759 | "dev": true, 1760 | "requires": { 1761 | "parent-module": "^1.0.0", 1762 | "resolve-from": "^4.0.0" 1763 | } 1764 | }, 1765 | "imurmurhash": { 1766 | "version": "0.1.4", 1767 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1768 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1769 | "dev": true 1770 | }, 1771 | "inflight": { 1772 | "version": "1.0.6", 1773 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1774 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1775 | "dev": true, 1776 | "requires": { 1777 | "once": "^1.3.0", 1778 | "wrappy": "1" 1779 | } 1780 | }, 1781 | "inherits": { 1782 | "version": "2.0.4", 1783 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1784 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1785 | }, 1786 | "ipaddr.js": { 1787 | "version": "1.9.1", 1788 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1789 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1790 | }, 1791 | "is-binary-path": { 1792 | "version": "2.1.0", 1793 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1794 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1795 | "dev": true, 1796 | "requires": { 1797 | "binary-extensions": "^2.0.0" 1798 | } 1799 | }, 1800 | "is-boolean-object": { 1801 | "version": "1.1.0", 1802 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", 1803 | "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", 1804 | "dev": true, 1805 | "requires": { 1806 | "call-bind": "^1.0.0" 1807 | } 1808 | }, 1809 | "is-extglob": { 1810 | "version": "2.1.1", 1811 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1812 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1813 | "dev": true 1814 | }, 1815 | "is-fullwidth-code-point": { 1816 | "version": "3.0.0", 1817 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1818 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1819 | "dev": true 1820 | }, 1821 | "is-glob": { 1822 | "version": "4.0.1", 1823 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1824 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1825 | "dev": true, 1826 | "requires": { 1827 | "is-extglob": "^2.1.1" 1828 | } 1829 | }, 1830 | "is-number": { 1831 | "version": "7.0.0", 1832 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1833 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1834 | "dev": true 1835 | }, 1836 | "is-number-object": { 1837 | "version": "1.0.4", 1838 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", 1839 | "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", 1840 | "dev": true 1841 | }, 1842 | "is-plain-obj": { 1843 | "version": "2.1.0", 1844 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1845 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1846 | "dev": true 1847 | }, 1848 | "is-string": { 1849 | "version": "1.0.5", 1850 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 1851 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", 1852 | "dev": true 1853 | }, 1854 | "isarray": { 1855 | "version": "1.0.0", 1856 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1857 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1858 | "dev": true 1859 | }, 1860 | "isexe": { 1861 | "version": "2.0.0", 1862 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1863 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1864 | "dev": true 1865 | }, 1866 | "iterall": { 1867 | "version": "1.3.0", 1868 | "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", 1869 | "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" 1870 | }, 1871 | "js-tokens": { 1872 | "version": "4.0.0", 1873 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1874 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1875 | "dev": true 1876 | }, 1877 | "js-yaml": { 1878 | "version": "3.14.1", 1879 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1880 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1881 | "dev": true, 1882 | "requires": { 1883 | "argparse": "^1.0.7", 1884 | "esprima": "^4.0.0" 1885 | } 1886 | }, 1887 | "json-schema-traverse": { 1888 | "version": "0.4.1", 1889 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1890 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1891 | "dev": true 1892 | }, 1893 | "json-stable-stringify-without-jsonify": { 1894 | "version": "1.0.1", 1895 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1896 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1897 | "dev": true 1898 | }, 1899 | "levn": { 1900 | "version": "0.4.1", 1901 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1902 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1903 | "dev": true, 1904 | "requires": { 1905 | "prelude-ls": "^1.2.1", 1906 | "type-check": "~0.4.0" 1907 | } 1908 | }, 1909 | "listenercount": { 1910 | "version": "1.0.1", 1911 | "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", 1912 | "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", 1913 | "dev": true 1914 | }, 1915 | "locate-path": { 1916 | "version": "6.0.0", 1917 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1918 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1919 | "dev": true, 1920 | "requires": { 1921 | "p-locate": "^5.0.0" 1922 | } 1923 | }, 1924 | "lodash": { 1925 | "version": "4.17.21", 1926 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1927 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1928 | }, 1929 | "lodash.clonedeep": { 1930 | "version": "4.5.0", 1931 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 1932 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", 1933 | "dev": true 1934 | }, 1935 | "lodash.flatten": { 1936 | "version": "4.4.0", 1937 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 1938 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", 1939 | "dev": true 1940 | }, 1941 | "lodash.truncate": { 1942 | "version": "4.4.2", 1943 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 1944 | "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", 1945 | "dev": true 1946 | }, 1947 | "log-symbols": { 1948 | "version": "4.0.0", 1949 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", 1950 | "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", 1951 | "dev": true, 1952 | "requires": { 1953 | "chalk": "^4.0.0" 1954 | } 1955 | }, 1956 | "lru-cache": { 1957 | "version": "6.0.0", 1958 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1959 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1960 | "dev": true, 1961 | "requires": { 1962 | "yallist": "^4.0.0" 1963 | } 1964 | }, 1965 | "media-typer": { 1966 | "version": "0.3.0", 1967 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1968 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1969 | }, 1970 | "merge-descriptors": { 1971 | "version": "1.0.1", 1972 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1973 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1974 | }, 1975 | "merge2": { 1976 | "version": "1.4.1", 1977 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1978 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1979 | "dev": true 1980 | }, 1981 | "methods": { 1982 | "version": "1.1.2", 1983 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1984 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1985 | }, 1986 | "micromatch": { 1987 | "version": "4.0.4", 1988 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 1989 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 1990 | "dev": true, 1991 | "requires": { 1992 | "braces": "^3.0.1", 1993 | "picomatch": "^2.2.3" 1994 | } 1995 | }, 1996 | "mime": { 1997 | "version": "1.6.0", 1998 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1999 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 2000 | }, 2001 | "mime-db": { 2002 | "version": "1.47.0", 2003 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", 2004 | "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" 2005 | }, 2006 | "mime-types": { 2007 | "version": "2.1.30", 2008 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", 2009 | "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", 2010 | "requires": { 2011 | "mime-db": "1.47.0" 2012 | } 2013 | }, 2014 | "minimatch": { 2015 | "version": "3.0.4", 2016 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2017 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2018 | "dev": true, 2019 | "requires": { 2020 | "brace-expansion": "^1.1.7" 2021 | } 2022 | }, 2023 | "minimist": { 2024 | "version": "1.2.5", 2025 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2026 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2027 | "dev": true 2028 | }, 2029 | "mkdirp": { 2030 | "version": "0.5.5", 2031 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 2032 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 2033 | "dev": true, 2034 | "requires": { 2035 | "minimist": "^1.2.5" 2036 | } 2037 | }, 2038 | "mocha": { 2039 | "version": "8.3.2", 2040 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", 2041 | "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", 2042 | "dev": true, 2043 | "requires": { 2044 | "@ungap/promise-all-settled": "1.1.2", 2045 | "ansi-colors": "4.1.1", 2046 | "browser-stdout": "1.3.1", 2047 | "chokidar": "3.5.1", 2048 | "debug": "4.3.1", 2049 | "diff": "5.0.0", 2050 | "escape-string-regexp": "4.0.0", 2051 | "find-up": "5.0.0", 2052 | "glob": "7.1.6", 2053 | "growl": "1.10.5", 2054 | "he": "1.2.0", 2055 | "js-yaml": "4.0.0", 2056 | "log-symbols": "4.0.0", 2057 | "minimatch": "3.0.4", 2058 | "ms": "2.1.3", 2059 | "nanoid": "3.1.20", 2060 | "serialize-javascript": "5.0.1", 2061 | "strip-json-comments": "3.1.1", 2062 | "supports-color": "8.1.1", 2063 | "which": "2.0.2", 2064 | "wide-align": "1.1.3", 2065 | "workerpool": "6.1.0", 2066 | "yargs": "16.2.0", 2067 | "yargs-parser": "20.2.4", 2068 | "yargs-unparser": "2.0.0" 2069 | }, 2070 | "dependencies": { 2071 | "argparse": { 2072 | "version": "2.0.1", 2073 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 2074 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 2075 | "dev": true 2076 | }, 2077 | "escape-string-regexp": { 2078 | "version": "4.0.0", 2079 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2080 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2081 | "dev": true 2082 | }, 2083 | "has-flag": { 2084 | "version": "4.0.0", 2085 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2086 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2087 | "dev": true 2088 | }, 2089 | "js-yaml": { 2090 | "version": "4.0.0", 2091 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", 2092 | "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", 2093 | "dev": true, 2094 | "requires": { 2095 | "argparse": "^2.0.1" 2096 | } 2097 | }, 2098 | "ms": { 2099 | "version": "2.1.3", 2100 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2101 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2102 | "dev": true 2103 | }, 2104 | "supports-color": { 2105 | "version": "8.1.1", 2106 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2107 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2108 | "dev": true, 2109 | "requires": { 2110 | "has-flag": "^4.0.0" 2111 | } 2112 | } 2113 | } 2114 | }, 2115 | "ms": { 2116 | "version": "2.1.2", 2117 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2118 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2119 | "dev": true 2120 | }, 2121 | "nanoid": { 2122 | "version": "3.1.20", 2123 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", 2124 | "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", 2125 | "dev": true 2126 | }, 2127 | "natural-compare": { 2128 | "version": "1.4.0", 2129 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2130 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2131 | "dev": true 2132 | }, 2133 | "negotiator": { 2134 | "version": "0.6.2", 2135 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 2136 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 2137 | }, 2138 | "normalize-path": { 2139 | "version": "3.0.0", 2140 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2141 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2142 | "dev": true 2143 | }, 2144 | "object-assign": { 2145 | "version": "4.1.1", 2146 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2147 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2148 | }, 2149 | "object-path": { 2150 | "version": "0.11.5", 2151 | "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.5.tgz", 2152 | "integrity": "sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg==" 2153 | }, 2154 | "on-finished": { 2155 | "version": "2.3.0", 2156 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2157 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2158 | "requires": { 2159 | "ee-first": "1.1.1" 2160 | } 2161 | }, 2162 | "once": { 2163 | "version": "1.4.0", 2164 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2165 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2166 | "dev": true, 2167 | "requires": { 2168 | "wrappy": "1" 2169 | } 2170 | }, 2171 | "optionator": { 2172 | "version": "0.9.1", 2173 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2174 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2175 | "dev": true, 2176 | "requires": { 2177 | "deep-is": "^0.1.3", 2178 | "fast-levenshtein": "^2.0.6", 2179 | "levn": "^0.4.1", 2180 | "prelude-ls": "^1.2.1", 2181 | "type-check": "^0.4.0", 2182 | "word-wrap": "^1.2.3" 2183 | } 2184 | }, 2185 | "p-limit": { 2186 | "version": "3.1.0", 2187 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2188 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2189 | "dev": true, 2190 | "requires": { 2191 | "yocto-queue": "^0.1.0" 2192 | } 2193 | }, 2194 | "p-locate": { 2195 | "version": "5.0.0", 2196 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2197 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2198 | "dev": true, 2199 | "requires": { 2200 | "p-limit": "^3.0.2" 2201 | } 2202 | }, 2203 | "parent-module": { 2204 | "version": "1.0.1", 2205 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2206 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2207 | "dev": true, 2208 | "requires": { 2209 | "callsites": "^3.0.0" 2210 | } 2211 | }, 2212 | "parseurl": { 2213 | "version": "1.3.3", 2214 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2215 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 2216 | }, 2217 | "path-exists": { 2218 | "version": "4.0.0", 2219 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2220 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2221 | "dev": true 2222 | }, 2223 | "path-is-absolute": { 2224 | "version": "1.0.1", 2225 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2226 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2227 | "dev": true 2228 | }, 2229 | "path-key": { 2230 | "version": "3.1.1", 2231 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2232 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2233 | "dev": true 2234 | }, 2235 | "path-to-regexp": { 2236 | "version": "0.1.7", 2237 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 2238 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 2239 | }, 2240 | "path-type": { 2241 | "version": "4.0.0", 2242 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2243 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2244 | "dev": true 2245 | }, 2246 | "picomatch": { 2247 | "version": "2.2.3", 2248 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", 2249 | "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", 2250 | "dev": true 2251 | }, 2252 | "prelude-ls": { 2253 | "version": "1.2.1", 2254 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2255 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2256 | "dev": true 2257 | }, 2258 | "process-nextick-args": { 2259 | "version": "2.0.1", 2260 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2261 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 2262 | "dev": true 2263 | }, 2264 | "progress": { 2265 | "version": "2.0.3", 2266 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2267 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2268 | "dev": true 2269 | }, 2270 | "proxy-addr": { 2271 | "version": "2.0.6", 2272 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 2273 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 2274 | "requires": { 2275 | "forwarded": "~0.1.2", 2276 | "ipaddr.js": "1.9.1" 2277 | } 2278 | }, 2279 | "punycode": { 2280 | "version": "2.1.1", 2281 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2282 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2283 | "dev": true 2284 | }, 2285 | "qs": { 2286 | "version": "6.7.0", 2287 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 2288 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 2289 | }, 2290 | "queue-microtask": { 2291 | "version": "1.2.3", 2292 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2293 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2294 | "dev": true 2295 | }, 2296 | "randombytes": { 2297 | "version": "2.1.0", 2298 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2299 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2300 | "dev": true, 2301 | "requires": { 2302 | "safe-buffer": "^5.1.0" 2303 | } 2304 | }, 2305 | "range-parser": { 2306 | "version": "1.2.1", 2307 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2308 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 2309 | }, 2310 | "raw-body": { 2311 | "version": "2.4.0", 2312 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 2313 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 2314 | "requires": { 2315 | "bytes": "3.1.0", 2316 | "http-errors": "1.7.2", 2317 | "iconv-lite": "0.4.24", 2318 | "unpipe": "1.0.0" 2319 | }, 2320 | "dependencies": { 2321 | "http-errors": { 2322 | "version": "1.7.2", 2323 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 2324 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 2325 | "requires": { 2326 | "depd": "~1.1.2", 2327 | "inherits": "2.0.3", 2328 | "setprototypeof": "1.1.1", 2329 | "statuses": ">= 1.5.0 < 2", 2330 | "toidentifier": "1.0.0" 2331 | } 2332 | }, 2333 | "inherits": { 2334 | "version": "2.0.3", 2335 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2336 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 2337 | }, 2338 | "setprototypeof": { 2339 | "version": "1.1.1", 2340 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 2341 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 2342 | } 2343 | } 2344 | }, 2345 | "readable-stream": { 2346 | "version": "2.3.7", 2347 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2348 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2349 | "dev": true, 2350 | "requires": { 2351 | "core-util-is": "~1.0.0", 2352 | "inherits": "~2.0.3", 2353 | "isarray": "~1.0.0", 2354 | "process-nextick-args": "~2.0.0", 2355 | "safe-buffer": "~5.1.1", 2356 | "string_decoder": "~1.1.1", 2357 | "util-deprecate": "~1.0.1" 2358 | }, 2359 | "dependencies": { 2360 | "safe-buffer": { 2361 | "version": "5.1.2", 2362 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2363 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2364 | "dev": true 2365 | } 2366 | } 2367 | }, 2368 | "readdirp": { 2369 | "version": "3.5.0", 2370 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 2371 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 2372 | "dev": true, 2373 | "requires": { 2374 | "picomatch": "^2.2.1" 2375 | } 2376 | }, 2377 | "regexpp": { 2378 | "version": "3.1.0", 2379 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 2380 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 2381 | "dev": true 2382 | }, 2383 | "require-directory": { 2384 | "version": "2.1.1", 2385 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2386 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 2387 | "dev": true 2388 | }, 2389 | "require-from-string": { 2390 | "version": "2.0.2", 2391 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 2392 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 2393 | "dev": true 2394 | }, 2395 | "resolve-from": { 2396 | "version": "4.0.0", 2397 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2398 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 2399 | }, 2400 | "reusify": { 2401 | "version": "1.0.4", 2402 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2403 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2404 | "dev": true 2405 | }, 2406 | "rimraf": { 2407 | "version": "3.0.2", 2408 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2409 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2410 | "dev": true, 2411 | "requires": { 2412 | "glob": "^7.1.3" 2413 | } 2414 | }, 2415 | "run-parallel": { 2416 | "version": "1.2.0", 2417 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2418 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2419 | "dev": true, 2420 | "requires": { 2421 | "queue-microtask": "^1.2.2" 2422 | } 2423 | }, 2424 | "safe-buffer": { 2425 | "version": "5.2.1", 2426 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2427 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2428 | "dev": true 2429 | }, 2430 | "safer-buffer": { 2431 | "version": "2.1.2", 2432 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2433 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2434 | }, 2435 | "semver": { 2436 | "version": "7.3.5", 2437 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 2438 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 2439 | "dev": true, 2440 | "requires": { 2441 | "lru-cache": "^6.0.0" 2442 | } 2443 | }, 2444 | "send": { 2445 | "version": "0.17.1", 2446 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 2447 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 2448 | "requires": { 2449 | "debug": "2.6.9", 2450 | "depd": "~1.1.2", 2451 | "destroy": "~1.0.4", 2452 | "encodeurl": "~1.0.2", 2453 | "escape-html": "~1.0.3", 2454 | "etag": "~1.8.1", 2455 | "fresh": "0.5.2", 2456 | "http-errors": "~1.7.2", 2457 | "mime": "1.6.0", 2458 | "ms": "2.1.1", 2459 | "on-finished": "~2.3.0", 2460 | "range-parser": "~1.2.1", 2461 | "statuses": "~1.5.0" 2462 | }, 2463 | "dependencies": { 2464 | "debug": { 2465 | "version": "2.6.9", 2466 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2467 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2468 | "requires": { 2469 | "ms": "2.0.0" 2470 | }, 2471 | "dependencies": { 2472 | "ms": { 2473 | "version": "2.0.0", 2474 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2475 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2476 | } 2477 | } 2478 | }, 2479 | "http-errors": { 2480 | "version": "1.7.3", 2481 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 2482 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 2483 | "requires": { 2484 | "depd": "~1.1.2", 2485 | "inherits": "2.0.4", 2486 | "setprototypeof": "1.1.1", 2487 | "statuses": ">= 1.5.0 < 2", 2488 | "toidentifier": "1.0.0" 2489 | } 2490 | }, 2491 | "ms": { 2492 | "version": "2.1.1", 2493 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 2494 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 2495 | }, 2496 | "setprototypeof": { 2497 | "version": "1.1.1", 2498 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 2499 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 2500 | } 2501 | } 2502 | }, 2503 | "serialize-javascript": { 2504 | "version": "5.0.1", 2505 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", 2506 | "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", 2507 | "dev": true, 2508 | "requires": { 2509 | "randombytes": "^2.1.0" 2510 | } 2511 | }, 2512 | "serve-static": { 2513 | "version": "1.14.1", 2514 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 2515 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 2516 | "requires": { 2517 | "encodeurl": "~1.0.2", 2518 | "escape-html": "~1.0.3", 2519 | "parseurl": "~1.3.3", 2520 | "send": "0.17.1" 2521 | } 2522 | }, 2523 | "setimmediate": { 2524 | "version": "1.0.5", 2525 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 2526 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 2527 | "dev": true 2528 | }, 2529 | "setprototypeof": { 2530 | "version": "1.2.0", 2531 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 2532 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 2533 | }, 2534 | "shebang-command": { 2535 | "version": "2.0.0", 2536 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2537 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2538 | "dev": true, 2539 | "requires": { 2540 | "shebang-regex": "^3.0.0" 2541 | } 2542 | }, 2543 | "shebang-regex": { 2544 | "version": "3.0.0", 2545 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2546 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2547 | "dev": true 2548 | }, 2549 | "slash": { 2550 | "version": "3.0.0", 2551 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2552 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2553 | "dev": true 2554 | }, 2555 | "slice-ansi": { 2556 | "version": "4.0.0", 2557 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 2558 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 2559 | "dev": true, 2560 | "requires": { 2561 | "ansi-styles": "^4.0.0", 2562 | "astral-regex": "^2.0.0", 2563 | "is-fullwidth-code-point": "^3.0.0" 2564 | }, 2565 | "dependencies": { 2566 | "ansi-styles": { 2567 | "version": "4.3.0", 2568 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2569 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2570 | "dev": true, 2571 | "requires": { 2572 | "color-convert": "^2.0.1" 2573 | } 2574 | }, 2575 | "color-convert": { 2576 | "version": "2.0.1", 2577 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2578 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2579 | "dev": true, 2580 | "requires": { 2581 | "color-name": "~1.1.4" 2582 | } 2583 | }, 2584 | "color-name": { 2585 | "version": "1.1.4", 2586 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2587 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2588 | "dev": true 2589 | } 2590 | } 2591 | }, 2592 | "source-map": { 2593 | "version": "0.6.1", 2594 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2595 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 2596 | }, 2597 | "source-map-support": { 2598 | "version": "0.5.19", 2599 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 2600 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 2601 | "requires": { 2602 | "buffer-from": "^1.0.0", 2603 | "source-map": "^0.6.0" 2604 | } 2605 | }, 2606 | "sprintf-js": { 2607 | "version": "1.0.3", 2608 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2609 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2610 | "dev": true 2611 | }, 2612 | "statuses": { 2613 | "version": "1.5.0", 2614 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2615 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 2616 | }, 2617 | "streamsearch": { 2618 | "version": "0.1.2", 2619 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", 2620 | "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" 2621 | }, 2622 | "string-width": { 2623 | "version": "4.2.2", 2624 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 2625 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 2626 | "dev": true, 2627 | "requires": { 2628 | "emoji-regex": "^8.0.0", 2629 | "is-fullwidth-code-point": "^3.0.0", 2630 | "strip-ansi": "^6.0.0" 2631 | } 2632 | }, 2633 | "string_decoder": { 2634 | "version": "1.1.1", 2635 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2636 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2637 | "dev": true, 2638 | "requires": { 2639 | "safe-buffer": "~5.1.0" 2640 | }, 2641 | "dependencies": { 2642 | "safe-buffer": { 2643 | "version": "5.1.2", 2644 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2645 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2646 | "dev": true 2647 | } 2648 | } 2649 | }, 2650 | "strip-ansi": { 2651 | "version": "6.0.0", 2652 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 2653 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 2654 | "dev": true, 2655 | "requires": { 2656 | "ansi-regex": "^5.0.0" 2657 | } 2658 | }, 2659 | "strip-json-comments": { 2660 | "version": "3.1.1", 2661 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2662 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2663 | "dev": true 2664 | }, 2665 | "subscriptions-transport-ws": { 2666 | "version": "0.9.18", 2667 | "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz", 2668 | "integrity": "sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA==", 2669 | "requires": { 2670 | "backo2": "^1.0.2", 2671 | "eventemitter3": "^3.1.0", 2672 | "iterall": "^1.2.1", 2673 | "symbol-observable": "^1.0.4", 2674 | "ws": "^5.2.0" 2675 | } 2676 | }, 2677 | "supports-color": { 2678 | "version": "5.5.0", 2679 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2680 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2681 | "dev": true, 2682 | "requires": { 2683 | "has-flag": "^3.0.0" 2684 | } 2685 | }, 2686 | "symbol-observable": { 2687 | "version": "1.2.0", 2688 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", 2689 | "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" 2690 | }, 2691 | "table": { 2692 | "version": "6.3.0", 2693 | "resolved": "https://registry.npmjs.org/table/-/table-6.3.0.tgz", 2694 | "integrity": "sha512-gM9kB7aNIuSagW89Fh+SdL49uhKnVSORxMcV72u/dfptFdqExInNn5M21wgq/Uf5UdJpsboFhNe/0SoNKjaxzg==", 2695 | "dev": true, 2696 | "requires": { 2697 | "ajv": "^8.0.1", 2698 | "is-boolean-object": "^1.1.0", 2699 | "is-number-object": "^1.0.4", 2700 | "is-string": "^1.0.5", 2701 | "lodash.clonedeep": "^4.5.0", 2702 | "lodash.flatten": "^4.4.0", 2703 | "lodash.truncate": "^4.4.2", 2704 | "slice-ansi": "^4.0.0", 2705 | "string-width": "^4.2.0" 2706 | }, 2707 | "dependencies": { 2708 | "ajv": { 2709 | "version": "8.1.0", 2710 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.1.0.tgz", 2711 | "integrity": "sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ==", 2712 | "dev": true, 2713 | "requires": { 2714 | "fast-deep-equal": "^3.1.1", 2715 | "json-schema-traverse": "^1.0.0", 2716 | "require-from-string": "^2.0.2", 2717 | "uri-js": "^4.2.2" 2718 | } 2719 | }, 2720 | "json-schema-traverse": { 2721 | "version": "1.0.0", 2722 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 2723 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 2724 | "dev": true 2725 | } 2726 | } 2727 | }, 2728 | "text-table": { 2729 | "version": "0.2.0", 2730 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2731 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2732 | "dev": true 2733 | }, 2734 | "to-regex-range": { 2735 | "version": "5.0.1", 2736 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2737 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2738 | "dev": true, 2739 | "requires": { 2740 | "is-number": "^7.0.0" 2741 | } 2742 | }, 2743 | "toidentifier": { 2744 | "version": "1.0.0", 2745 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 2746 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 2747 | }, 2748 | "traverse": { 2749 | "version": "0.3.9", 2750 | "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", 2751 | "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", 2752 | "dev": true 2753 | }, 2754 | "ts-invariant": { 2755 | "version": "0.4.4", 2756 | "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", 2757 | "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", 2758 | "requires": { 2759 | "tslib": "^1.9.3" 2760 | } 2761 | }, 2762 | "tslib": { 2763 | "version": "1.14.1", 2764 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 2765 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 2766 | }, 2767 | "tsutils": { 2768 | "version": "3.21.0", 2769 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 2770 | "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 2771 | "dev": true, 2772 | "requires": { 2773 | "tslib": "^1.8.1" 2774 | } 2775 | }, 2776 | "type-check": { 2777 | "version": "0.4.0", 2778 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2779 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2780 | "dev": true, 2781 | "requires": { 2782 | "prelude-ls": "^1.2.1" 2783 | } 2784 | }, 2785 | "type-fest": { 2786 | "version": "0.8.1", 2787 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 2788 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 2789 | "dev": true 2790 | }, 2791 | "type-is": { 2792 | "version": "1.6.18", 2793 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2794 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2795 | "requires": { 2796 | "media-typer": "0.3.0", 2797 | "mime-types": "~2.1.24" 2798 | } 2799 | }, 2800 | "typescript": { 2801 | "version": "4.2.4", 2802 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", 2803 | "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", 2804 | "dev": true 2805 | }, 2806 | "unpipe": { 2807 | "version": "1.0.0", 2808 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2809 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 2810 | }, 2811 | "unzipper": { 2812 | "version": "0.10.11", 2813 | "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", 2814 | "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", 2815 | "dev": true, 2816 | "requires": { 2817 | "big-integer": "^1.6.17", 2818 | "binary": "~0.3.0", 2819 | "bluebird": "~3.4.1", 2820 | "buffer-indexof-polyfill": "~1.0.0", 2821 | "duplexer2": "~0.1.4", 2822 | "fstream": "^1.0.12", 2823 | "graceful-fs": "^4.2.2", 2824 | "listenercount": "~1.0.1", 2825 | "readable-stream": "~2.3.6", 2826 | "setimmediate": "~1.0.4" 2827 | } 2828 | }, 2829 | "uri-js": { 2830 | "version": "4.4.1", 2831 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2832 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2833 | "dev": true, 2834 | "requires": { 2835 | "punycode": "^2.1.0" 2836 | } 2837 | }, 2838 | "util-deprecate": { 2839 | "version": "1.0.2", 2840 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2841 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2842 | "dev": true 2843 | }, 2844 | "utils-merge": { 2845 | "version": "1.0.1", 2846 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2847 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 2848 | }, 2849 | "uuid": { 2850 | "version": "3.4.0", 2851 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 2852 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 2853 | }, 2854 | "v8-compile-cache": { 2855 | "version": "2.3.0", 2856 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2857 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2858 | "dev": true 2859 | }, 2860 | "vary": { 2861 | "version": "1.1.2", 2862 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2863 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2864 | }, 2865 | "vscode-test": { 2866 | "version": "1.5.2", 2867 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.5.2.tgz", 2868 | "integrity": "sha512-x9PVfKxF6EInH9iSFGQi0V8H5zIW1fC7RAer6yNQR6sy3WyOwlWkuT3I+wf75xW/cO53hxMi1aj/EvqQfDFOAg==", 2869 | "dev": true, 2870 | "requires": { 2871 | "http-proxy-agent": "^4.0.1", 2872 | "https-proxy-agent": "^5.0.0", 2873 | "rimraf": "^3.0.2", 2874 | "unzipper": "^0.10.11" 2875 | } 2876 | }, 2877 | "which": { 2878 | "version": "2.0.2", 2879 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2880 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2881 | "dev": true, 2882 | "requires": { 2883 | "isexe": "^2.0.0" 2884 | } 2885 | }, 2886 | "wide-align": { 2887 | "version": "1.1.3", 2888 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 2889 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 2890 | "dev": true, 2891 | "requires": { 2892 | "string-width": "^1.0.2 || 2" 2893 | }, 2894 | "dependencies": { 2895 | "ansi-regex": { 2896 | "version": "3.0.0", 2897 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 2898 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 2899 | "dev": true 2900 | }, 2901 | "is-fullwidth-code-point": { 2902 | "version": "2.0.0", 2903 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2904 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2905 | "dev": true 2906 | }, 2907 | "string-width": { 2908 | "version": "2.1.1", 2909 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 2910 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 2911 | "dev": true, 2912 | "requires": { 2913 | "is-fullwidth-code-point": "^2.0.0", 2914 | "strip-ansi": "^4.0.0" 2915 | } 2916 | }, 2917 | "strip-ansi": { 2918 | "version": "4.0.0", 2919 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2920 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2921 | "dev": true, 2922 | "requires": { 2923 | "ansi-regex": "^3.0.0" 2924 | } 2925 | } 2926 | } 2927 | }, 2928 | "word-wrap": { 2929 | "version": "1.2.3", 2930 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2931 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2932 | "dev": true 2933 | }, 2934 | "workerpool": { 2935 | "version": "6.1.0", 2936 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", 2937 | "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", 2938 | "dev": true 2939 | }, 2940 | "wrap-ansi": { 2941 | "version": "7.0.0", 2942 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2943 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2944 | "dev": true, 2945 | "requires": { 2946 | "ansi-styles": "^4.0.0", 2947 | "string-width": "^4.1.0", 2948 | "strip-ansi": "^6.0.0" 2949 | }, 2950 | "dependencies": { 2951 | "ansi-styles": { 2952 | "version": "4.3.0", 2953 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2954 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2955 | "dev": true, 2956 | "requires": { 2957 | "color-convert": "^2.0.1" 2958 | } 2959 | }, 2960 | "color-convert": { 2961 | "version": "2.0.1", 2962 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2963 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2964 | "dev": true, 2965 | "requires": { 2966 | "color-name": "~1.1.4" 2967 | } 2968 | }, 2969 | "color-name": { 2970 | "version": "1.1.4", 2971 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2972 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2973 | "dev": true 2974 | } 2975 | } 2976 | }, 2977 | "wrappy": { 2978 | "version": "1.0.2", 2979 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2980 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2981 | "dev": true 2982 | }, 2983 | "ws": { 2984 | "version": "5.2.2", 2985 | "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", 2986 | "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", 2987 | "requires": { 2988 | "async-limiter": "~1.0.0" 2989 | } 2990 | }, 2991 | "y18n": { 2992 | "version": "5.0.8", 2993 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2994 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2995 | "dev": true 2996 | }, 2997 | "yallist": { 2998 | "version": "4.0.0", 2999 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3000 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3001 | "dev": true 3002 | }, 3003 | "yargs": { 3004 | "version": "16.2.0", 3005 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3006 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3007 | "dev": true, 3008 | "requires": { 3009 | "cliui": "^7.0.2", 3010 | "escalade": "^3.1.1", 3011 | "get-caller-file": "^2.0.5", 3012 | "require-directory": "^2.1.1", 3013 | "string-width": "^4.2.0", 3014 | "y18n": "^5.0.5", 3015 | "yargs-parser": "^20.2.2" 3016 | } 3017 | }, 3018 | "yargs-parser": { 3019 | "version": "20.2.4", 3020 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 3021 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 3022 | "dev": true 3023 | }, 3024 | "yargs-unparser": { 3025 | "version": "2.0.0", 3026 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 3027 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 3028 | "dev": true, 3029 | "requires": { 3030 | "camelcase": "^6.0.0", 3031 | "decamelize": "^4.0.0", 3032 | "flat": "^5.0.2", 3033 | "is-plain-obj": "^2.1.0" 3034 | } 3035 | }, 3036 | "yocto-queue": { 3037 | "version": "0.1.0", 3038 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3039 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3040 | "dev": true 3041 | }, 3042 | "zen-observable": { 3043 | "version": "0.8.15", 3044 | "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", 3045 | "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" 3046 | }, 3047 | "zen-observable-ts": { 3048 | "version": "0.8.21", 3049 | "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", 3050 | "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", 3051 | "requires": { 3052 | "tslib": "^1.9.3", 3053 | "zen-observable": "^0.8.0" 3054 | } 3055 | } 3056 | } 3057 | } 3058 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | 2 | 3 | { 4 | "name": "upnext", 5 | "publisher": "UpNext", 6 | "displayName": "UpNext", 7 | "description": "The UpNext extension", 8 | "icon": "UpNextIcon.png", 9 | "version": "1.0.0", 10 | "engines": { 11 | "vscode": "^1.55.0" 12 | }, 13 | "categories": [ 14 | "Other" 15 | ], 16 | "activationEvents": [ 17 | "*" 18 | ], 19 | "main": "./out/extension.js", 20 | "contributes": { 21 | "commands": [ 22 | { 23 | "command": "upnext.createBoilerplate", 24 | "title": "Create Boilerplate" 25 | } 26 | ] 27 | }, 28 | "scripts": { 29 | "vscode:prepublish": "npm run compile", 30 | "compile": "tsc -p ./", 31 | "watch": "tsc -watch -p ./", 32 | "pretest": "npm run compile && npm run lint", 33 | "lint": "eslint src --ext ts", 34 | "test": "mocha" 35 | }, 36 | "devDependencies": { 37 | "@types/glob": "^7.1.3", 38 | "@types/mocha": "^8.0.4", 39 | "@types/node": "^12.11.7", 40 | "@types/vscode": "^1.55.0", 41 | "@typescript-eslint/eslint-plugin": "^4.14.1", 42 | "@typescript-eslint/parser": "^4.14.1", 43 | "eslint": "^7.19.0", 44 | "glob": "^7.1.6", 45 | "graphql": "^15.5.0", 46 | "mocha": "^8.2.1", 47 | "typescript": "^4.1.3", 48 | "vscode-test": "^1.5.0" 49 | }, 50 | "dependencies": { 51 | "graphql-yoga": "^1.18.3" 52 | }, 53 | "repository":{ 54 | "type": "git", 55 | "url": "https://github.com/oslabs-beta/UpNext" 56 | } 57 | 58 | } 59 | 60 | -------------------------------------------------------------------------------- /src/Boilerplates/nextBoilerplate/_app.ts: -------------------------------------------------------------------------------- 1 | const appString = `import '../styles/global.css'; 2 | import { ApolloProvider, ApolloClient, InMemoryCache } from '@apollo/client'; 3 | 4 | // Creates an instance of Apollo Client which connects to Apollo Server and GraphQL 5 | const client = new ApolloClient({ 6 | uri: 'http://localhost:4000/graphql', 7 | cache: new InMemoryCache() 8 | }); 9 | 10 | // Connects each page component with its pageProps 11 | function MyApp({ Component, pageProps }) { 12 | return ( 13 | // Apollo Provider will provide user session and instance of client to any visited page 14 | 15 | 16 | 17 | ) 18 | } 19 | 20 | export default MyApp; 21 | `; 22 | 23 | export = appString; 24 | -------------------------------------------------------------------------------- /src/Boilerplates/nextBoilerplate/index.ts: -------------------------------------------------------------------------------- 1 | const indexString = `import Link from 'next/link'; 2 | import React from "react"; 3 | import {signIn, signOut, useSession} from "next-auth/client"; 4 | 5 | // This function will return the homepage of the website 6 | function HomePage() { 7 | // Using a react hook, we create a session and loading hooks 8 | const [session, loading] = useSession(); 9 | 10 | return ( 11 |
12 | {/* If the session returns false, the user is not logged in 13 | This will the display the following html at the '/' endpoint */} 14 | {!session && ( 15 |
16 | {/* Using this button, will link you to the NextAuth signIn functionality, please update your .env to include the information needed to use this, to learn more on the setup process, please view this link: https://next-auth.js.org/configuration/providers#oauth-providers 17 | */} 18 | 19 | {/* On click of the signup button, the button will route you to the /signup endpoint 20 | This is where user creation through graphQL will take place */} 21 | 22 | 23 | 24 | {/* Below is where the editing of the page display will take place */} 25 |

Welcome to your UpNext Application Home Page!

26 |

To edit this page, add to index.js in your pages directory.

27 |
28 | )} 29 | {/* If the session returns true, the user is logged in 30 | This will the display the following html at the '/' endpoint */} 31 | {session && ( 32 |
33 | {/* The user will be informed below that they are signed in */} 34 | {/* Since the user is now signed in 35 | The user has access to the checkout page which is binded to a button with the inner text of Payment */} 36 | 37 | 38 | 39 | {/* If the user chooses to sign out the user has the option of signing out through NextAuth's signOut function */} 40 | 41 |
42 | )} 43 |
44 | ) 45 | } 46 | 47 | export default HomePage; 48 | `; 49 | 50 | export = indexString; 51 | -------------------------------------------------------------------------------- /src/Boilerplates/nextBoilerplate/nextauth.ts: -------------------------------------------------------------------------------- 1 | const nextauthString = `import NextAuth from "next-auth"; 2 | import Providers from "next-auth/providers"; 3 | 4 | // Creates options for serverless authentication 5 | const options = { 6 | // Each provider will establish OAuth capabilities with the specified API 7 | // Make sure to change the environment variables in .env to have proper functionality 8 | providers: [ 9 | Providers.GitHub({ 10 | clientId: process.env.GITHUB_ID, 11 | clientSecret: process.env.GITHUB_SECRET, 12 | }), 13 | Providers.Twitter({ 14 | clientId: process.env.TWITTER_ID, 15 | clientSecret: process.env.TWITTER_SECRET, 16 | }), 17 | Providers.Facebook({ 18 | clientId: process.env.FACEBOOK_ID, 19 | clientSecret: process.env.FACEBOOK_SECRET, 20 | }), 21 | Providers.Google({ 22 | clientId: process.env.GOOGLE_ID, 23 | clientSecret: process.env.GOOGLE_SECRET, 24 | }), 25 | Providers.Email({ 26 | server: { 27 | host: process.env.EMAIL_SERVER_HOST, 28 | port: process.env.EMAIL_SERVER_PORT, 29 | auth: { 30 | user: process.env.EMAIL_SERVER_USER, 31 | pass: process.env.EMAIL_SERVER_PASSWORD, 32 | }, 33 | }, 34 | from: process.env.EMAIL_FROM, 35 | }), 36 | ], 37 | // Database info 38 | database: { 39 | type: "sqlite", 40 | database: "../prisma/dev.db", 41 | synchronize: true, 42 | } 43 | }; 44 | 45 | export default (req, res) => NextAuth(req, res, options); 46 | `; 47 | 48 | export = nextauthString; 49 | -------------------------------------------------------------------------------- /src/Boilerplates/nextBoilerplate/signup.ts: -------------------------------------------------------------------------------- 1 | const signupString = `import { useMutation, gql } from '@apollo/client'; 2 | import Link from 'next/link'; 3 | import { useRouter } from 'next/router'; 4 | 5 | // Creates a local version of the createUser mutation 6 | const CREATE_USER = gql\` 7 | mutation createUser($data: UserInput!) { 8 | createUser(data: $data) { 9 | id 10 | email 11 | password 12 | } 13 | } 14 | \`; 15 | 16 | // Sign up page functional component 17 | function SignupPage() { 18 | // Establishes router using the useRouter hook to allow native NextRouter capabilities 19 | const router = useRouter(); 20 | // Creates the createUser tuple using the useMutation hook passing in the CREATE_USER mutation 21 | const [ createUser ] = useMutation(CREATE_USER); 22 | // initializes the email and password variables for later use 23 | let email; 24 | let password; 25 | 26 | return ( 27 |
28 | {/* Utilizing Next Link to create a home button that redirects to the home page on click (next/link) */} 29 | 30 | 31 | 32 |

Sign-Up Page

33 | {/* Sign up form, which on submit wil create a user using the createUser tuple mutation */} 34 |
{ 35 | e.preventDefault(); 36 | createUser({ 37 | variables: { 38 | data: { 39 | email: email.value, 40 | password: password.value 41 | } 42 | } 43 | }) 44 | email.value = ''; 45 | password.value = ''; 46 | // Uses NextRouter to redirect to home page after user creation 47 | router.push('/'); 48 | }}> 49 | {email = node}} type='text' placeholder='E-mail'/> 50 | {password = node}} type='password' placeholder='Password'/> 51 | 52 |
53 |
54 | ); 55 | } 56 | 57 | export default SignupPage; 58 | `; 59 | 60 | export = signupString; 61 | -------------------------------------------------------------------------------- /src/Boilerplates/nextBoilerplate/styles.ts: -------------------------------------------------------------------------------- 1 | const stylesString = `h1 { 2 | text-align: center; 3 | color: #1E90FF; 4 | } 5 | p { 6 | text-align: center; 7 | } 8 | #signup { 9 | text-align: center; 10 | } 11 | #signin { 12 | text-align: center; 13 | } 14 | `; 15 | 16 | export = stylesString; -------------------------------------------------------------------------------- /src/Boilerplates/prismaBoilerplate/prismaBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const prismaString = `// This is your Prisma schema file 2 | //Intiates sqlite as your starter database. If you would like to change databases, 3 | //change your provider to the database of your choice and input your database uri 4 | //in place of DATABASE_URL 5 | datasource db { 6 | provider = "sqlite" 7 | url = env("DATABASE_URL") 8 | } 9 | 10 | generator client { 11 | provider = "prisma-client-js" 12 | } 13 | //Defines your prisma schema. We have created an example of a simple User 14 | //with an email and password for you. 15 | model User { 16 | id Int @id @default(autoincrement()) 17 | email String @unique 18 | password String 19 | } 20 | `; 21 | 22 | export = prismaString; -------------------------------------------------------------------------------- /src/Boilerplates/rootBoilerplate/envBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const envString = `# Environment variables declared in this file are automatically made available to Prisma. 2 | # See the documentation for more detail: https://pris.ly/d/prisma-schema#using-environment-variables 3 | 4 | # Prisma supports the native connection string format for PostgreSQL, MySQL and SQLite. 5 | # See the documentation for all the connection string options: https://pris.ly/d/connection-strings 6 | 7 | DATABASE_URL="file:./dev.db" 8 | NEXTAUTH_URL=http://localhost:3000 9 | 10 | GITHUB_ID="put your github id here" 11 | GITHUB_SECRET="put your github secret here" 12 | 13 | TWITTER_ID="put your twitter id here" 14 | TWITTER_SECRET="put your twitter secret here" 15 | 16 | FACEBOOK_ID="put your facebook id here" 17 | FACEBOOK_SECRET="put your facebook secret here" 18 | 19 | GOOGLE_ID="put your google id here" 20 | GOOGLE_SECRET="put your google secret here" 21 | 22 | AUTH0_CLIENT_ID="put your auth0 client id here" 23 | AUTH0_CLIENT_SECRET="put your auth0 client secret here" 24 | AUTH0_DOMAIN="put your auth0 domain here" 25 | 26 | EMAIL_SERVER_USER="put your server user here" 27 | EMAIL_SERVER_PASSWORD="put your server password here" 28 | EMAIL_SERVER_HOST="put your server host here" 29 | EMAIL_SERVER_PORT="put your server port here" 30 | EMAIL_FROM="put your email here" 31 | 32 | NEXT_PUBLIC_STRIPE_PUBLIC_KEY= "put your stripe public key here from the dashboard" 33 | STRIPE_SECRET_KEY= "put your stripe secret key here from the dashboard" 34 | PRICE_ID= "insert the price from the product in the stripe dashboard" 35 | `; 36 | 37 | export = envString; 38 | -------------------------------------------------------------------------------- /src/Boilerplates/rootBoilerplate/pkgjsonBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const pkgjsonString = `{ 2 | "name": "upnextapp", 3 | "version": "1.0.0", 4 | "description": "insert description here!", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "mocha", 8 | "dev": "next dev", 9 | "build": "next build", 10 | "start": "next start", 11 | "startdev": "tsnd --respawn server/server" 12 | }, 13 | "author": "yourName", 14 | "license": "ISC" 15 | } 16 | `; 17 | 18 | export = pkgjsonString; 19 | -------------------------------------------------------------------------------- /src/Boilerplates/serverBoilerplate/contextBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const contextString = `import { PrismaClient } from '@prisma/client'; 2 | //Inititates your Prisma Client to give access to prisma 3 | //methods for your graphql queries 4 | const prisma = new PrismaClient(); 5 | 6 | export interface Context { 7 | prisma: PrismaClient 8 | } 9 | 10 | export const context: Context = { 11 | prisma: prisma 12 | } 13 | `; 14 | 15 | export = contextString; 16 | -------------------------------------------------------------------------------- /src/Boilerplates/serverBoilerplate/prismagraphqlBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const prismagraphqlString = `import { makeExecutableSchema } from 'apollo-server-express'; 2 | import { Context } from './context'; 3 | //Your typedefs define the way your graphql inputs/outputs should look in your 4 | //graphql queries 5 | const typeDefs = \` 6 | type User { 7 | id: ID 8 | email: String! 9 | password: String! 10 | } 11 | input UserInput { 12 | email: String! 13 | password: String! 14 | } 15 | type Query { 16 | allUsers: [User!]! 17 | getUser(data: UserInput!): User! 18 | } 19 | type Mutation { 20 | createUser(data: UserInput!): User! 21 | deleteUser(email: String!): User! 22 | updateUser(email: String!): User! 23 | } 24 | \` 25 | //Your resolvers are your functions for your queries and mutations (Similar to express controllers). They are given 26 | //parent objects/arguments and are responsible for returning results from your queries/mutations. We have added basic 27 | //CRUD functionality for you to use at your disposable. **NOTE: we have only implemented the createUser Mutation for 28 | //you via the signup page on the front end. The rest is there for your reference! 29 | const resolvers = { 30 | Query: { 31 | allUsers: (_parent, _args, context: Context) => { 32 | return context.prisma.user.findMany() 33 | }, 34 | getUser: (_parent, args: { data: UserInput }, context: Context) => { 35 | return context.prisma.user.findUnique({ 36 | where: { 37 | email: args.data.email 38 | } 39 | }) 40 | } 41 | }, 42 | Mutation: { 43 | createUser: (_parent, args: { data: UserInput }, context: Context) => { 44 | return context.prisma.user.create({ data: { 45 | email: args.data.email, 46 | password: args.data.password 47 | } 48 | }) 49 | }, 50 | updateUser: (_parent, args: { email: string }, context: Context) => { 51 | return context.prisma.user.update({ 52 | where: { 53 | email: args.email, 54 | }, 55 | data: { email: "upnext@codesmith.io" } 56 | }) 57 | }, 58 | deleteUser: (_parent, args: { email: string }, context: Context) => { 59 | return context.prisma.user.delete({ 60 | where: { 61 | email: args.email, 62 | } 63 | }) 64 | } 65 | } 66 | }; 67 | //This interface interacts with your resolvers by making sure your inputs are correct. It is modeled after the 68 | //input UserInput in your typedefs. 69 | interface UserInput { 70 | email: string 71 | password: string 72 | } 73 | 74 | export const schema = makeExecutableSchema({ 75 | resolvers, 76 | typeDefs, 77 | }); 78 | `; 79 | 80 | export = prismagraphqlString; 81 | 82 | -------------------------------------------------------------------------------- /src/Boilerplates/serverBoilerplate/serverBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const serverString = `const { ApolloServer } = require('apollo-server-express'); 2 | const express = require('express'); 3 | import { schema } from './prismaGraphql'; 4 | import { context } from './context'; 5 | const cors = require("cors"); 6 | 7 | const port = 4000; 8 | 9 | //Initiates your express server 10 | const app = express(); 11 | 12 | //Enables cors (cross origin resource sharing) so your server 13 | //is accessible by other origins (domains) 14 | app.use(cors()); 15 | 16 | //Initiates an Apollo Server for your graphql queries 17 | const server = new ApolloServer({ schema, context }); 18 | 19 | //Passes your graphql server as middleware to your express server 20 | //to give you flexiblity in your graphql and REST API requests 21 | server.applyMiddleware({app}); 22 | 23 | //Serves your express server on port 4000 24 | //* Your graphql playground is being served at the graphql endpoint */ 25 | app.listen({ port }, () => { 26 | console.log(\`Server listening on port: http://localhost:\${port}/graphql\`); 27 | }); 28 | `; 29 | 30 | export = serverString; 31 | -------------------------------------------------------------------------------- /src/Boilerplates/stripeBoilerplate/checkoutBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const checkoutString = ` 2 | //loadStripe is a function that returns a promise with a newly created Stripe Object. 3 | import { loadStripe } from '@stripe/stripe-js'; 4 | 5 | //We initialize an instance of the Stripe object passing in the Stripe Public API key from the env file 6 | //to identify the user's website to Stripe and assign it the variable stripePromise. 7 | const stripePromise = loadStripe( 8 | \`\${process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY}\` 9 | ); 10 | 11 | //This is a react component which renders some text and a button and also has a method to handle the funtionality of the button. 12 | export default function Checkout() { 13 | //The function handleClick will fetch the session from an API endpoint, by sending a Post request and receving a session from the response. 14 | const handleClick = async (event) => { 15 | const { sessionId } = await fetch('/api/checkout/session', { 16 | method: 'POST', 17 | headers: { 18 | 'content-type': 'application/json', 19 | }, 20 | body: JSON.stringify({ quantity: 1 }), 21 | }).then((res) => res.json()); 22 | 23 | //Resolves the promise for the instance of the stripe Object providing the entry point for stripe development tools 24 | const stripe = await stripePromise; 25 | 26 | //Resolves the promise for the method redirectingtoCheckout for the stripe object, a Stripe-hosted page to 27 | //securely collect payment information, using the provided session ID. 28 | //We also destructure the error key from the redirecToCheckout object for future debugging purposes. 29 | const { error } = await stripe.redirectToCheckout({ 30 | sessionId, 31 | }); 32 | }; 33 | 34 | return ( 35 |
36 |

Checkout

37 | 40 |
41 | ); 42 | } 43 | `; 44 | 45 | export = checkoutString; 46 | -------------------------------------------------------------------------------- /src/Boilerplates/stripeBoilerplate/sessionBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const sessionString = `import Stripe from 'stripe'; 2 | 3 | // creating new instance of Stripe with your secret key under .env file 4 | const stripe = new Stripe(\`\${process.env.STRIPE_SECRET_KEY}\`, { 5 | apiVersion: '2020-03-02', 6 | }); 7 | 8 | export default async (req, res) => { 9 | // storing quantity info from your request body 10 | const { quantity } = req.body; 11 | // creating session through your stripe/checkout 12 | const session = await stripe.checkout.sessions.create({ 13 | // declaring desired payment methods 14 | payment_method_types: ['card'], 15 | // defining line items 16 | line_items: [ 17 | { 18 | price: \`\${process.env.PRICE_ID}\`, 19 | quantity, 20 | }, 21 | ], 22 | // setting up payment option/ choose among payments(one time purchases), subscription or setup 23 | mode: 'subscription', 24 | // supplying the redirect URLs 25 | success_url: \`\${req.headers.origin}/success?session_id={CHECKOUT_SESSION_ID}\`, 26 | cancel_url: \`\${req.headers.origin}/checkout\`, 27 | }); 28 | // seding response back to client with session id 29 | res.status(200).json({ sessionId: session.id }); 30 | }; 31 | `; 32 | 33 | export = sessionString; 34 | -------------------------------------------------------------------------------- /src/Boilerplates/stripeBoilerplate/successBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const successString = `export default function success() { 2 | return

$UCCE$$

; 3 | }`; 4 | 5 | export = successString; 6 | -------------------------------------------------------------------------------- /src/Boilerplates/testBoilerplate/mochaBoilerplate.ts: -------------------------------------------------------------------------------- 1 | const mochaString = `const mocha = require('mocha'); 2 | const assert = require('assert') 3 | const fs = require('fs'); 4 | 5 | //**Run these tests using the npm test command after you first create your 6 | //boilerplate to ensure that all files are created properly. If you have 7 | //missing files for some reason, run your create boilerplate command again and retest.** 8 | describe('Check if boilerplate is properly created', () => { 9 | describe('Checks if all directories are created', () => { 10 | // PAGES 11 | it('checks if pages directory exists in root', () => { 12 | assert.ok(fs.existsSync('./pages')) 13 | }) 14 | 15 | it('checks if api directory exists within pages directory', () => { 16 | assert.ok(fs.existsSync('./pages/api')) 17 | }) 18 | 19 | it('checks if auth directory exists within api directory', () => { 20 | assert.ok(fs.existsSync('./pages/api/auth')) 21 | }) 22 | 23 | it('checks if checkout directory exists within api directory', () => { 24 | assert.ok(fs.existsSync('./pages/api/checkout')) 25 | }) 26 | // PRISMA 27 | it('checks if prisma directory exists in root', () => { 28 | assert.ok(fs.existsSync('./prisma')) 29 | }) 30 | 31 | it('checks if migrations directory exists within prisma directory', () => { 32 | assert.ok(fs.existsSync('./prisma/migrations')) 33 | }) 34 | // SERVER 35 | it('checks if server directory exists in root', () => { 36 | assert.ok(fs.existsSync('./server')) 37 | }) 38 | // STYLES 39 | it('checks if styles directory exists in root', () => { 40 | assert.ok(fs.existsSync('./styles')) 41 | }) 42 | }) 43 | 44 | describe('Checks if all files are created', () => { 45 | // ROOT 46 | it('checks if .env file exists in root', () => { 47 | assert.ok(fs.existsSync('./.env')) 48 | }) 49 | 50 | it('checks if package-lock.json file exists in root', () => { 51 | assert.ok(fs.existsSync('./package-lock.json')) 52 | }) 53 | 54 | it('checks if package.json file exists in root', () => { 55 | assert.ok(fs.existsSync('./package.json')) 56 | }) 57 | 58 | it('checks if package.json file exists in root', () => { 59 | assert.ok(fs.existsSync('./package.json')) 60 | }) 61 | 62 | // PAGES 63 | it('checks if _app.js file exists in pages directory', () => { 64 | assert.ok(fs.existsSync('./pages/_app.js')) 65 | }) 66 | 67 | it('checks if checkout.js file exists in pages directory', () => { 68 | assert.ok(fs.existsSync('./pages/checkout.js')) 69 | }) 70 | 71 | it('checks if index.js file exists in pages directory', () => { 72 | assert.ok(fs.existsSync('./pages/index.js')) 73 | }) 74 | 75 | it('checks if signup.js file exists in pages directory', () => { 76 | assert.ok(fs.existsSync('./pages/signup.js')) 77 | }) 78 | 79 | it('checks if success.js file exists in pages directory', () => { 80 | assert.ok(fs.existsSync('./pages/success.js')) 81 | }) 82 | 83 | // PAGES/API/AUTH 84 | it('checks if [...nextauth].js file exists in auth directory', () => { 85 | assert.ok(fs.existsSync('./pages/api/auth/[...nextauth].js')) 86 | }) 87 | // PAGES/API/CHECKOUT 88 | it('checks if session.js file exists in checkout directory', () => { 89 | assert.ok(fs.existsSync('./pages/api/checkout/session.js')) 90 | }) 91 | 92 | // PRISMA 93 | it('checks if dev.db file exists in prisma directory', () => { 94 | assert.ok(fs.existsSync('./prisma/dev.db')) 95 | }) 96 | 97 | it('checks if schema.prisma file exists in prisma directory', () => { 98 | assert.ok(fs.existsSync('./prisma/schema.prisma')) 99 | }) 100 | 101 | // SERVER 102 | it('checks if context.ts file exists in server directory', () => { 103 | assert.ok(fs.existsSync('./server/context.ts')) 104 | }) 105 | 106 | it('checks if prismaGraphql file exists in server directory', () => { 107 | assert.ok(fs.existsSync('./server/prismaGraphql.ts')) 108 | }) 109 | 110 | it('checks if server file exists in server directory', () => { 111 | assert.ok(fs.existsSync('./server/server.ts')) 112 | }) 113 | 114 | // STYLES 115 | it('checks if global.css file exists in styles directory', () => { 116 | assert.ok(fs.existsSync('./styles/global.css')) 117 | }) 118 | }) 119 | }) 120 | `; 121 | 122 | export = mochaString; 123 | -------------------------------------------------------------------------------- /src/constructors.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import * as fs from 'fs'; 3 | import * as path from 'path'; 4 | 5 | //Folder constructor function 6 | function makeFolder(folderPath: string, folderName: string) { 7 | fs.mkdir(path.resolve(folderPath, folderName), err => { 8 | // if err, display error message 9 | if (err) { 10 | console.log("err: ", err); 11 | return vscode.window.showErrorMessage( 12 | `Failed to create ${folderName}!` 13 | ); 14 | } 15 | }); 16 | } 17 | 18 | //File constructor function 19 | function makeFile(filePath: string, fileName: string, fileString: string) { 20 | fs.writeFile(path.resolve(filePath, fileName), fileString, err => { 21 | // if err, display error message 22 | if (err) { 23 | console.log("err: ", err); 24 | return vscode.window.showErrorMessage( 25 | `Failed to create ${fileName}!` 26 | );} 27 | }); 28 | } 29 | 30 | export { makeFolder, makeFile }; -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | // The module 'vscode' contains the VS Code extensibility API 2 | // Import the module and reference it with the alias vscode in your code below 3 | import * as vscode from 'vscode'; 4 | import * as appString from './Boilerplates/nextBoilerplate/_app'; 5 | import * as indexString from './Boilerplates/nextBoilerplate/index'; 6 | import * as styleString from './Boilerplates/nextBoilerplate/styles'; 7 | import * as signupString from './Boilerplates/nextBoilerplate/signup'; 8 | import * as nextauthString from './Boilerplates/nextBoilerplate/nextauth'; 9 | import * as pkgjsonString from './Boilerplates/rootBoilerplate/pkgjsonBoilerplate'; 10 | import * as envString from './Boilerplates/rootBoilerplate/envBoilerplate'; 11 | import * as mochaString from './Boilerplates/testBoilerplate/mochaBoilerplate'; 12 | import * as prismaString from './Boilerplates/prismaBoilerplate/prismaBoilerplate'; 13 | import * as serverString from './Boilerplates/serverBoilerplate/serverBoilerplate'; 14 | import * as prismagraphqlString from './Boilerplates/serverBoilerplate/prismagraphqlBoilerplate'; 15 | import * as contextString from './Boilerplates/serverBoilerplate/contextBoilerplate'; 16 | import * as sessionString from './Boilerplates/stripeBoilerplate/sessionBoilerplate'; 17 | import * as checkoutString from './Boilerplates/stripeBoilerplate/checkoutBoilerplate'; 18 | import * as successString from './Boilerplates/stripeBoilerplate/successBoilerplate'; 19 | import { makeFolder, makeFile } from './constructors'; 20 | 21 | // this method is called when your extension is activated 22 | // your extension is activated the very first time the command is executed 23 | export function activate(context: vscode.ExtensionContext) { 24 | // Use the console to output diagnostic information (console.log) and errors (console.error) 25 | // This line of code will only be executed once when your extension is activated 26 | console.log('Your extension "UpNext" is now active!'); 27 | // The command has been defined in the package.json file 28 | // Now provide the implementation of the command with registerCommand 29 | // The commandId parameter must match the command field in package.json 30 | let disposable = vscode.commands.registerCommand( 31 | 'upnext.createBoilerplate', 32 | () => { 33 | // The code you place here will be executed every time your command is executed 34 | // Display a message box to the user 35 | vscode.window.showInformationMessage('UpNext Running!'); 36 | const myPath = vscode.workspace.workspaceFolders[0].uri.fsPath; 37 | //Checks user's machine for windows 38 | const isWin = process.platform === 'win32'; 39 | 40 | //Creates a seperate server to install dependencies named UpNext 41 | const terminal: vscode.Terminal = vscode.window.createTerminal('UpNext'); 42 | //This divider checks if the os platform is windows. If windows, change the divider set to "\\", everything else "/" 43 | const divider = isWin ? '\\' : '/'; 44 | 45 | //Creates package.json for user 46 | makeFile(myPath, 'package.json', pkgjsonString); 47 | //Creates pages directory with serverless routes 48 | makeFolder(myPath, 'pages'); 49 | makeFile(`${myPath}${divider}pages`, '_app.js', appString); 50 | makeFile(`${myPath}${divider}pages`, 'index.js', indexString); 51 | makeFile(`${myPath}${divider}pages`, 'checkout.js', checkoutString); 52 | makeFile(`${myPath}${divider}pages`, 'signup.js', signupString); 53 | makeFile(`${myPath}${divider}pages`, 'success.js', successString); 54 | //Creates API directory to house api endpoint functionality 55 | makeFolder(`${myPath}${divider}pages`, 'api'); 56 | makeFolder(`${myPath}${divider}pages${divider}api`, 'auth'); 57 | makeFile(`${myPath}${divider}pages${divider}api${divider}auth`,'[...nextauth].js', nextauthString); 58 | makeFolder(`${myPath}${divider}pages${divider}api`, 'checkout'); 59 | makeFile(`${myPath}${divider}pages${divider}api${divider}checkout`, 'session.js', sessionString); 60 | //Creates styles directory with css styling for whole application 61 | makeFolder(myPath, 'styles'); 62 | makeFile(`${myPath}${divider}styles`, 'global.css', styleString); 63 | //Creates tests directory with jest and enzyme boilerplate tests 64 | makeFolder(myPath, 'test'); 65 | makeFile(`${myPath}${divider}test`, 'mocha.js', mochaString); 66 | //Creates prisma directory with our prisma schemas and env file for sensitive data 67 | makeFolder(myPath, 'prisma'); 68 | makeFile(`${myPath}${divider}prisma`, 'schema.prisma', prismaString); 69 | makeFile(myPath, '.env', envString); 70 | //Creates server directory with server file along with context, typedefs, and resolvers 71 | makeFolder(myPath, 'server'); 72 | makeFile(`${myPath}${divider}server`, 'server.ts', serverString); 73 | makeFile(`${myPath}${divider}server`, 'prismaGraphql.ts', prismagraphqlString); 74 | makeFile(`${myPath}${divider}server`, 'context.ts', contextString); 75 | //Sends and executes terminal commands for user to install necessary packages 76 | terminal.sendText('npm install next react react-dom ts-node-dev typescript stripe'); 77 | terminal.sendText('npm install @apollo/client graphql apollo-server-express express passport cors sqlite3'); 78 | terminal.sendText('npm install mocha prisma @types/react --D'); 79 | terminal.sendText('npm install @prisma/client @stripe/react-stripe-js @stripe/stripe-js next-auth'); 80 | terminal.sendText('npx prisma migrate dev --name init'); 81 | terminal.show(); 82 | } 83 | ); 84 | // if context matches command, activate disposable function 85 | context.subscriptions.push(disposable); 86 | } 87 | 88 | // this method is called when your extension is deactivated 89 | export function deactivate() {} 90 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": ["es6"], 7 | "sourceMap": true, 8 | "rootDir": "src", 9 | "strict": false /* enable all strict type-checking options */ 10 | /* Additional Checks */ 11 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 12 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 13 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 14 | }, 15 | "exclude": ["node_modules", ".vscode-test"] 16 | } 17 | -------------------------------------------------------------------------------- /upnext-1.0.0.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oslabs-beta/UpNext/1dd9d50c2615dfa100121ccd8c69b49fa6397f9b/upnext-1.0.0.vsix -------------------------------------------------------------------------------- /vsc-extension-quickstart.md: -------------------------------------------------------------------------------- 1 | # Welcome to your VS Code Extension 2 | 3 | ## What's in the folder 4 | 5 | * This folder contains all of the files necessary for your extension. 6 | * `package.json` - this is the manifest file in which you declare your extension and command. 7 | * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. 8 | * `src/extension.ts` - this is the main file where you will provide the implementation of your command. 9 | * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. 10 | * We pass the function containing the implementation of the command as the second parameter to `registerCommand`. 11 | 12 | ## Get up and running straight away 13 | 14 | * Press `F5` to open a new window with your extension loaded. 15 | * Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. 16 | * Set breakpoints in your code inside `src/extension.ts` to debug your extension. 17 | * Find output from your extension in the debug console. 18 | 19 | ## Make changes 20 | 21 | * You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. 22 | * You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. 23 | 24 | 25 | ## Explore the API 26 | 27 | * You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. 28 | 29 | ## Run tests 30 | 31 | * Open the debug viewlet (`Ctrl+Shift+D` or `Cmd+Shift+D` on Mac) and from the launch configuration dropdown pick `Extension Tests`. 32 | * Press `F5` to run the tests in a new window with your extension loaded. 33 | * See the output of the test result in the debug console. 34 | * Make changes to `src/test/suite/extension.test.ts` or create new test files inside the `test/suite` folder. 35 | * The provided test runner will only consider files matching the name pattern `**.test.ts`. 36 | * You can create folders inside the `test` folder to structure your tests any way you want. 37 | 38 | ## Go further 39 | 40 | * Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). 41 | * [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VSCode extension marketplace. 42 | * Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). 43 | --------------------------------------------------------------------------------