├── .eslintrc.json
├── .gitignore
├── .prettierrc.js
├── .travis.yml
├── LICENSE
├── README.md
├── dist
├── index.d.ts
└── index.js
├── lib
└── index.ts
├── logo.png
├── package-lock.json
├── package.json
├── tests
├── app.ts
├── async-handler.spec.ts
└── tsconfig.json
└── tsconfig.json
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "es6": true,
4 | "node": true
5 | },
6 | "extends": [
7 | "airbnb-base",
8 | "plugin:prettier/recommended",
9 | "plugin:@typescript-eslint/eslint-recommended"
10 | ],
11 | "globals": {
12 | "Atomics": "readonly",
13 | "SharedArrayBuffer": "readonly"
14 | },
15 | "parser": "@typescript-eslint/parser",
16 | "parserOptions": {
17 | "ecmaVersion": 2018,
18 | "sourceType": "module"
19 | },
20 | "plugins": [
21 | "@typescript-eslint"
22 | ],
23 | "rules": {
24 | "import/no-extraneous-dependencies": 0,
25 | "no-console": 0,
26 | "import/no-unresolved": 0,
27 | "import/extensions": 0,
28 | "class-methods-use-this": 0,
29 | "no-unused-vars": 0
30 | }
31 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 |
84 | # Gatsby files
85 | .cache/
86 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
87 | # https://nextjs.org/blog/next-9-1#public-directory-support
88 | # public
89 |
90 | # vuepress build output
91 | .vuepress/dist
92 |
93 | # Serverless directories
94 | .serverless/
95 |
96 | # FuseBox cache
97 | .fusebox/
98 |
99 | # DynamoDB Local files
100 | .dynamodb/
101 |
102 | # TernJS port file
103 | .tern-port
104 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | bracketSpacing: true,
3 | jsxBracketSameLine: true,
4 | singleQuote: true,
5 | semi: true,
6 | trailingComma: 'all',
7 | useTabs: false,
8 | tabWidth: 2,
9 | printWidth: 120,
10 | eslintIntegration: true,
11 | formatOnSave: true,
12 | endOfLine: 'auto'
13 | };
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: node_js
3 | node_js:
4 | - 'stable'
5 | cache:
6 | directories:
7 | - node_modules
8 | install:
9 | - npm install
10 | script:
11 | - npm run test
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Yunbin Chang
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | > Elegant async error handler with Decorator for async router function(controller) in express
14 |
15 | If you use `async` method for route handler and middleware, There must be some problem. When some error occured in `async` method, express can't handle your errors. So you should deal with it yourself. It is a pretty annoying task to handle this.
16 |
17 | This library provides a simple and elegant decorator `@AsyncHandled` to handle these errors from `async` method. this decorator handles occured errors from `async` method and bind `this` automatically.
18 |
19 | ```
20 | Nothing needs your attention anymore.
21 | ```
22 |
23 | ### 🏠 [Homepage](https://github.com/techbless/express-safe-async)
24 |
25 | ## Install
26 |
27 | **Highly Recommend to use higher version than v2.0.1, If you are using lower version, You should update it.**
28 |
29 | ```sh
30 | npm install express-safe-async
31 | ```
32 |
33 | ## Import
34 |
35 | TypeScript
36 | ```typescript
37 | import AsyncHandled, { safe } from 'express-safe-async';
38 | ```
39 |
40 | JavaScript
41 | ```javascript
42 | const safe = require('express-safe-async').safe;
43 | ```
44 |
45 | ## Usage
46 |
47 | To use Decorator, Make sure the below line is in your tsconfig.json
48 |
49 | **tsconfig.json**
50 | ```json
51 | {
52 | "compilerOptions": {
53 | "target": "ES5",
54 | "experimentalDecorators": true
55 | }
56 | }
57 | ```
58 |
59 | **or**
60 |
61 | ```sh
62 | tsc --target ES5 --experimentalDecorators
63 | ```
64 |
65 | ### Using Class Method
66 |
67 | Just write `@AsyncHandled` on your async methods.
68 |
69 | ```typescript
70 | import * as express from 'express';
71 | import AsyncHandled from 'express-safe-async';
72 |
73 | class ExampleController {
74 | @AsyncHandled // <- This is all you should do.
75 | public async asyncMethod(req: express.Request, res: express.Response) {
76 | // Your stuff here
77 | ...
78 | }
79 | }
80 |
81 | const app = express();
82 | const example = new ExampleController();
83 |
84 | app.get('/example', example.asyncMethod);
85 | app.listen(PORT, (err) => {
86 | ...
87 | });
88 | ```
89 |
90 | ### Not Using Class Method
91 |
92 | Wrap your functions with `safe()` like below.
93 |
94 | ```typescript
95 | import * as express from 'express';
96 | import { safe } from 'express-safe-async';
97 |
98 | const app = express();
99 |
100 | app.use(safe( // <- This is all you should do
101 | async () => {
102 | // Your middleware here
103 | ...
104 | }
105 | ));
106 |
107 | app.get('/example', safe( // <- This is all you should do
108 | async (req: express.Request, res: express.Response) => {
109 | // Your route handler here
110 | ...
111 | }
112 | ));
113 |
114 | app.listen(1234, (err) => {
115 | ...
116 | });
117 | ```
118 |
119 | ## Run tests when you contribute
120 |
121 | ```sh
122 | npm run test
123 | ```
124 |
125 | ## Author
126 |
127 | 👤 **Yunbin Chang**
128 |
129 | * Website: https://techbless.github.io
130 | * Github: [@techbless](https://github.com/techbless)
131 |
132 | ## 🤝 Contributing
133 |
134 | Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/techbless/express-safe-async/issues). You can also take a look at the [contributing guide](https://github.com/techbless/express-safe-async/blob/master/CONTRIBUTING.md).
135 |
136 | ## Show your support
137 |
138 | Give a ⭐️ if this project helped you!
139 |
140 | ## 📝 License
141 |
142 | Copyright © 2020 [Yunbin Chang](https://github.com/techbless).
143 | This project is [MIT](https://github.com/techbless/express-safe-async/blob/master/LICENSE) licensed.
144 |
--------------------------------------------------------------------------------
/dist/index.d.ts:
--------------------------------------------------------------------------------
1 | import { Request, Response, NextFunction } from 'express';
2 |
3 | export declare function safe(
4 | asyncFn: Function,
5 | ): (req: Request, res: Response, next?: NextFunction | undefined) => Promise;
6 | export declare function AsyncHandled(
7 | target: object,
8 | propertyKey: string,
9 | descriptor: TypedPropertyDescriptor,
10 | ): {
11 | configurable: boolean;
12 | get(this: T): (req: Request, res: Response, next?: NextFunction | undefined) => Promise;
13 | };
14 | export default AsyncHandled;
15 |
--------------------------------------------------------------------------------
/dist/index.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | function safe(asyncFn) {
4 | // Handle execption safely during the handling request.
5 | const exceptionHandled = async (req, res, next) => {
6 | try {
7 | return await asyncFn(req, res, next);
8 | }
9 | catch (error) {
10 | return next(error);
11 | }
12 | };
13 | return exceptionHandled;
14 | }
15 | exports.safe = safe;
16 | // Decorator binding this and handling exception.
17 | function AsyncHandled(target, propertyKey, descriptor) {
18 | // If decorated somthing is not function, throw an error.
19 | if (!descriptor || typeof descriptor.value !== 'function') {
20 | throw new TypeError(`Only methods can be decorated with @AsyncHandler. <${propertyKey}> is not a method.`);
21 | }
22 | return {
23 | configurable: true,
24 | get() {
25 | const bound = descriptor.value.bind(this);
26 | Object.defineProperty(target, propertyKey, {
27 | value: bound,
28 | configurable: true,
29 | writable: true,
30 | });
31 | return safe(bound);
32 | },
33 | };
34 | }
35 | exports.AsyncHandled = AsyncHandled;
36 | exports.default = AsyncHandled;
37 |
--------------------------------------------------------------------------------
/lib/index.ts:
--------------------------------------------------------------------------------
1 | // eslint-disable-next-line no-unused-vars
2 | import { Request, Response, NextFunction } from 'express';
3 |
4 | export function safe(asyncFn: Function) {
5 | // Handle execption safely during the handling request.
6 | const exceptionHandled = async (req: Request, res: Response, next?: NextFunction) => {
7 | try {
8 | return await asyncFn(req, res, next);
9 | } catch (error) {
10 | return next!(error);
11 | }
12 | };
13 |
14 | return exceptionHandled;
15 | }
16 |
17 | // Decorator binding this and handling exception.
18 | export function AsyncHandled(
19 | target: object,
20 | propertyKey: string,
21 | descriptor: TypedPropertyDescriptor,
22 | ) {
23 | // If decorated somthing is not function, throw an error.
24 | if (!descriptor || typeof descriptor.value !== 'function') {
25 | throw new TypeError(`Only methods can be decorated with @AsyncHandler. <${propertyKey}> is not a method.`);
26 | }
27 |
28 | return {
29 | configurable: true,
30 | get(this: T) {
31 | const bound: T = descriptor.value!.bind(this);
32 |
33 | Object.defineProperty(target, propertyKey, {
34 | value: bound,
35 | configurable: true,
36 | writable: true,
37 | });
38 |
39 | return safe(bound);
40 | },
41 | };
42 | }
43 |
44 | export default AsyncHandled;
45 |
--------------------------------------------------------------------------------
/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techbless/express-safe-async/d644b6f888984e0223b8492d70e0c0f2a419822c/logo.png
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "express-safe-async",
3 | "version": "3.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.8.3",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
10 | "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.8.3"
14 | }
15 | },
16 | "@babel/helper-validator-identifier": {
17 | "version": "7.9.5",
18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
19 | "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==",
20 | "dev": true
21 | },
22 | "@babel/highlight": {
23 | "version": "7.9.0",
24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz",
25 | "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==",
26 | "dev": true,
27 | "requires": {
28 | "@babel/helper-validator-identifier": "^7.9.0",
29 | "chalk": "^2.0.0",
30 | "js-tokens": "^4.0.0"
31 | }
32 | },
33 | "@types/body-parser": {
34 | "version": "1.19.0",
35 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz",
36 | "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==",
37 | "dev": true,
38 | "requires": {
39 | "@types/connect": "*",
40 | "@types/node": "*"
41 | }
42 | },
43 | "@types/chai": {
44 | "version": "4.2.11",
45 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz",
46 | "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==",
47 | "dev": true
48 | },
49 | "@types/color-name": {
50 | "version": "1.1.1",
51 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
52 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
53 | "dev": true
54 | },
55 | "@types/connect": {
56 | "version": "3.4.33",
57 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz",
58 | "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==",
59 | "dev": true,
60 | "requires": {
61 | "@types/node": "*"
62 | }
63 | },
64 | "@types/cookiejar": {
65 | "version": "2.1.1",
66 | "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz",
67 | "integrity": "sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw==",
68 | "dev": true
69 | },
70 | "@types/eslint-visitor-keys": {
71 | "version": "1.0.0",
72 | "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
73 | "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
74 | "dev": true
75 | },
76 | "@types/express": {
77 | "version": "4.17.6",
78 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.6.tgz",
79 | "integrity": "sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w==",
80 | "dev": true,
81 | "requires": {
82 | "@types/body-parser": "*",
83 | "@types/express-serve-static-core": "*",
84 | "@types/qs": "*",
85 | "@types/serve-static": "*"
86 | }
87 | },
88 | "@types/express-serve-static-core": {
89 | "version": "4.17.5",
90 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.5.tgz",
91 | "integrity": "sha512-578YH5Lt88AKoADy0b2jQGwJtrBxezXtVe/MBqWXKZpqx91SnC0pVkVCcxcytz3lWW+cHBYDi3Ysh0WXc+rAYw==",
92 | "dev": true,
93 | "requires": {
94 | "@types/node": "*",
95 | "@types/range-parser": "*"
96 | }
97 | },
98 | "@types/json-schema": {
99 | "version": "7.0.4",
100 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz",
101 | "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==",
102 | "dev": true
103 | },
104 | "@types/mime": {
105 | "version": "2.0.1",
106 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz",
107 | "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==",
108 | "dev": true
109 | },
110 | "@types/mocha": {
111 | "version": "7.0.2",
112 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz",
113 | "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==",
114 | "dev": true
115 | },
116 | "@types/node": {
117 | "version": "13.11.1",
118 | "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz",
119 | "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==",
120 | "dev": true
121 | },
122 | "@types/qs": {
123 | "version": "6.9.1",
124 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.1.tgz",
125 | "integrity": "sha512-lhbQXx9HKZAPgBkISrBcmAcMpZsmpe/Cd/hY7LGZS5OfkySUBItnPZHgQPssWYUET8elF+yCFBbP1Q0RZPTdaw==",
126 | "dev": true
127 | },
128 | "@types/range-parser": {
129 | "version": "1.2.3",
130 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
131 | "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==",
132 | "dev": true
133 | },
134 | "@types/serve-static": {
135 | "version": "1.13.3",
136 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz",
137 | "integrity": "sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==",
138 | "dev": true,
139 | "requires": {
140 | "@types/express-serve-static-core": "*",
141 | "@types/mime": "*"
142 | }
143 | },
144 | "@types/superagent": {
145 | "version": "4.1.7",
146 | "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.7.tgz",
147 | "integrity": "sha512-JSwNPgRYjIC4pIeOqLwWwfGj6iP1n5NE6kNBEbGx2V8H78xCPwx7QpNp9plaI30+W3cFEzJO7BIIsXE+dbtaGg==",
148 | "dev": true,
149 | "requires": {
150 | "@types/cookiejar": "*",
151 | "@types/node": "*"
152 | }
153 | },
154 | "@types/supertest": {
155 | "version": "2.0.8",
156 | "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.8.tgz",
157 | "integrity": "sha512-wcax7/ip4XSSJRLbNzEIUVy2xjcBIZZAuSd2vtltQfRK7kxhx5WMHbLHkYdxN3wuQCrwpYrg86/9byDjPXoGMA==",
158 | "dev": true,
159 | "requires": {
160 | "@types/superagent": "*"
161 | }
162 | },
163 | "@typescript-eslint/eslint-plugin": {
164 | "version": "2.28.0",
165 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.28.0.tgz",
166 | "integrity": "sha512-w0Ugcq2iatloEabQP56BRWJowliXUP5Wv6f9fKzjJmDW81hOTBxRoJ4LoEOxRpz9gcY51Libytd2ba3yLmSOfg==",
167 | "dev": true,
168 | "requires": {
169 | "@typescript-eslint/experimental-utils": "2.28.0",
170 | "functional-red-black-tree": "^1.0.1",
171 | "regexpp": "^3.0.0",
172 | "tsutils": "^3.17.1"
173 | },
174 | "dependencies": {
175 | "regexpp": {
176 | "version": "3.1.0",
177 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
178 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
179 | "dev": true
180 | }
181 | }
182 | },
183 | "@typescript-eslint/experimental-utils": {
184 | "version": "2.28.0",
185 | "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.28.0.tgz",
186 | "integrity": "sha512-4SL9OWjvFbHumM/Zh/ZeEjUFxrYKtdCi7At4GyKTbQlrj1HcphIDXlje4Uu4cY+qzszR5NdVin4CCm6AXCjd6w==",
187 | "dev": true,
188 | "requires": {
189 | "@types/json-schema": "^7.0.3",
190 | "@typescript-eslint/typescript-estree": "2.28.0",
191 | "eslint-scope": "^5.0.0",
192 | "eslint-utils": "^2.0.0"
193 | },
194 | "dependencies": {
195 | "eslint-utils": {
196 | "version": "2.0.0",
197 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz",
198 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==",
199 | "dev": true,
200 | "requires": {
201 | "eslint-visitor-keys": "^1.1.0"
202 | }
203 | }
204 | }
205 | },
206 | "@typescript-eslint/parser": {
207 | "version": "2.28.0",
208 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.28.0.tgz",
209 | "integrity": "sha512-RqPybRDquui9d+K86lL7iPqH6Dfp9461oyqvlXMNtap+PyqYbkY5dB7LawQjDzot99fqzvS0ZLZdfe+1Bt3Jgw==",
210 | "dev": true,
211 | "requires": {
212 | "@types/eslint-visitor-keys": "^1.0.0",
213 | "@typescript-eslint/experimental-utils": "2.28.0",
214 | "@typescript-eslint/typescript-estree": "2.28.0",
215 | "eslint-visitor-keys": "^1.1.0"
216 | }
217 | },
218 | "@typescript-eslint/typescript-estree": {
219 | "version": "2.28.0",
220 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.28.0.tgz",
221 | "integrity": "sha512-HDr8MP9wfwkiuqzRVkuM3BeDrOC4cKbO5a6BymZBHUt5y/2pL0BXD6I/C/ceq2IZoHWhcASk+5/zo+dwgu9V8Q==",
222 | "dev": true,
223 | "requires": {
224 | "debug": "^4.1.1",
225 | "eslint-visitor-keys": "^1.1.0",
226 | "glob": "^7.1.6",
227 | "is-glob": "^4.0.1",
228 | "lodash": "^4.17.15",
229 | "semver": "^6.3.0",
230 | "tsutils": "^3.17.1"
231 | }
232 | },
233 | "accepts": {
234 | "version": "1.3.7",
235 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
236 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
237 | "dev": true,
238 | "requires": {
239 | "mime-types": "~2.1.24",
240 | "negotiator": "0.6.2"
241 | }
242 | },
243 | "acorn": {
244 | "version": "7.1.1",
245 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
246 | "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
247 | "dev": true
248 | },
249 | "acorn-jsx": {
250 | "version": "5.2.0",
251 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
252 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
253 | "dev": true
254 | },
255 | "ajv": {
256 | "version": "6.12.6",
257 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
258 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
259 | "dev": true,
260 | "requires": {
261 | "fast-deep-equal": "^3.1.1",
262 | "fast-json-stable-stringify": "^2.0.0",
263 | "json-schema-traverse": "^0.4.1",
264 | "uri-js": "^4.2.2"
265 | }
266 | },
267 | "ansi-colors": {
268 | "version": "3.2.3",
269 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
270 | "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
271 | "dev": true
272 | },
273 | "ansi-escapes": {
274 | "version": "4.3.1",
275 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
276 | "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
277 | "dev": true,
278 | "requires": {
279 | "type-fest": "^0.11.0"
280 | },
281 | "dependencies": {
282 | "type-fest": {
283 | "version": "0.11.0",
284 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
285 | "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
286 | "dev": true
287 | }
288 | }
289 | },
290 | "ansi-regex": {
291 | "version": "5.0.1",
292 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
293 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
294 | "dev": true
295 | },
296 | "ansi-styles": {
297 | "version": "3.2.1",
298 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
299 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
300 | "dev": true,
301 | "requires": {
302 | "color-convert": "^1.9.0"
303 | }
304 | },
305 | "anymatch": {
306 | "version": "3.1.1",
307 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
308 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
309 | "dev": true,
310 | "requires": {
311 | "normalize-path": "^3.0.0",
312 | "picomatch": "^2.0.4"
313 | }
314 | },
315 | "arg": {
316 | "version": "4.1.3",
317 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
318 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
319 | "dev": true
320 | },
321 | "argparse": {
322 | "version": "1.0.10",
323 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
324 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
325 | "dev": true,
326 | "requires": {
327 | "sprintf-js": "~1.0.2"
328 | }
329 | },
330 | "array-flatten": {
331 | "version": "1.1.1",
332 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
333 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
334 | "dev": true
335 | },
336 | "array-includes": {
337 | "version": "3.1.1",
338 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
339 | "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
340 | "dev": true,
341 | "requires": {
342 | "define-properties": "^1.1.3",
343 | "es-abstract": "^1.17.0",
344 | "is-string": "^1.0.5"
345 | }
346 | },
347 | "array.prototype.flat": {
348 | "version": "1.2.3",
349 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz",
350 | "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==",
351 | "dev": true,
352 | "requires": {
353 | "define-properties": "^1.1.3",
354 | "es-abstract": "^1.17.0-next.1"
355 | }
356 | },
357 | "assertion-error": {
358 | "version": "1.1.0",
359 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
360 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
361 | "dev": true
362 | },
363 | "astral-regex": {
364 | "version": "1.0.0",
365 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
366 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
367 | "dev": true
368 | },
369 | "asynckit": {
370 | "version": "0.4.0",
371 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
372 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
373 | "dev": true
374 | },
375 | "balanced-match": {
376 | "version": "1.0.0",
377 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
378 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
379 | "dev": true
380 | },
381 | "binary-extensions": {
382 | "version": "2.0.0",
383 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
384 | "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
385 | "dev": true
386 | },
387 | "body-parser": {
388 | "version": "1.19.0",
389 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
390 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
391 | "dev": true,
392 | "requires": {
393 | "bytes": "3.1.0",
394 | "content-type": "~1.0.4",
395 | "debug": "2.6.9",
396 | "depd": "~1.1.2",
397 | "http-errors": "1.7.2",
398 | "iconv-lite": "0.4.24",
399 | "on-finished": "~2.3.0",
400 | "qs": "6.7.0",
401 | "raw-body": "2.4.0",
402 | "type-is": "~1.6.17"
403 | },
404 | "dependencies": {
405 | "debug": {
406 | "version": "2.6.9",
407 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
408 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
409 | "dev": true,
410 | "requires": {
411 | "ms": "2.0.0"
412 | }
413 | },
414 | "ms": {
415 | "version": "2.0.0",
416 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
417 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
418 | "dev": true
419 | }
420 | }
421 | },
422 | "brace-expansion": {
423 | "version": "1.1.11",
424 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
425 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
426 | "dev": true,
427 | "requires": {
428 | "balanced-match": "^1.0.0",
429 | "concat-map": "0.0.1"
430 | }
431 | },
432 | "braces": {
433 | "version": "3.0.2",
434 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
435 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
436 | "dev": true,
437 | "requires": {
438 | "fill-range": "^7.0.1"
439 | }
440 | },
441 | "browser-stdout": {
442 | "version": "1.3.1",
443 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
444 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
445 | "dev": true
446 | },
447 | "buffer-from": {
448 | "version": "1.1.1",
449 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
450 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
451 | "dev": true
452 | },
453 | "bytes": {
454 | "version": "3.1.0",
455 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
456 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
457 | "dev": true
458 | },
459 | "callsites": {
460 | "version": "3.1.0",
461 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
462 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
463 | "dev": true
464 | },
465 | "camelcase": {
466 | "version": "5.3.1",
467 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
468 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
469 | "dev": true
470 | },
471 | "chai": {
472 | "version": "4.2.0",
473 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz",
474 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==",
475 | "dev": true,
476 | "requires": {
477 | "assertion-error": "^1.1.0",
478 | "check-error": "^1.0.2",
479 | "deep-eql": "^3.0.1",
480 | "get-func-name": "^2.0.0",
481 | "pathval": "^1.1.0",
482 | "type-detect": "^4.0.5"
483 | }
484 | },
485 | "chalk": {
486 | "version": "2.4.2",
487 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
488 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
489 | "dev": true,
490 | "requires": {
491 | "ansi-styles": "^3.2.1",
492 | "escape-string-regexp": "^1.0.5",
493 | "supports-color": "^5.3.0"
494 | }
495 | },
496 | "chardet": {
497 | "version": "0.7.0",
498 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
499 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
500 | "dev": true
501 | },
502 | "check-error": {
503 | "version": "1.0.2",
504 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
505 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
506 | "dev": true
507 | },
508 | "chokidar": {
509 | "version": "3.3.0",
510 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz",
511 | "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==",
512 | "dev": true,
513 | "requires": {
514 | "anymatch": "~3.1.1",
515 | "braces": "~3.0.2",
516 | "fsevents": "~2.1.1",
517 | "glob-parent": "~5.1.0",
518 | "is-binary-path": "~2.1.0",
519 | "is-glob": "~4.0.1",
520 | "normalize-path": "~3.0.0",
521 | "readdirp": "~3.2.0"
522 | }
523 | },
524 | "cli-cursor": {
525 | "version": "3.1.0",
526 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
527 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
528 | "dev": true,
529 | "requires": {
530 | "restore-cursor": "^3.1.0"
531 | }
532 | },
533 | "cli-width": {
534 | "version": "2.2.1",
535 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
536 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
537 | "dev": true
538 | },
539 | "cliui": {
540 | "version": "5.0.0",
541 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
542 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
543 | "dev": true,
544 | "requires": {
545 | "string-width": "^3.1.0",
546 | "strip-ansi": "^5.2.0",
547 | "wrap-ansi": "^5.1.0"
548 | },
549 | "dependencies": {
550 | "emoji-regex": {
551 | "version": "7.0.3",
552 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
553 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
554 | "dev": true
555 | },
556 | "is-fullwidth-code-point": {
557 | "version": "2.0.0",
558 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
559 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
560 | "dev": true
561 | },
562 | "string-width": {
563 | "version": "3.1.0",
564 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
565 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
566 | "dev": true,
567 | "requires": {
568 | "emoji-regex": "^7.0.1",
569 | "is-fullwidth-code-point": "^2.0.0",
570 | "strip-ansi": "^5.1.0"
571 | }
572 | }
573 | }
574 | },
575 | "color-convert": {
576 | "version": "1.9.3",
577 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
578 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
579 | "dev": true,
580 | "requires": {
581 | "color-name": "1.1.3"
582 | }
583 | },
584 | "color-name": {
585 | "version": "1.1.3",
586 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
587 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
588 | "dev": true
589 | },
590 | "combined-stream": {
591 | "version": "1.0.8",
592 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
593 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
594 | "dev": true,
595 | "requires": {
596 | "delayed-stream": "~1.0.0"
597 | }
598 | },
599 | "component-emitter": {
600 | "version": "1.3.0",
601 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
602 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
603 | "dev": true
604 | },
605 | "concat-map": {
606 | "version": "0.0.1",
607 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
608 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
609 | "dev": true
610 | },
611 | "confusing-browser-globals": {
612 | "version": "1.0.9",
613 | "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz",
614 | "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==",
615 | "dev": true
616 | },
617 | "contains-path": {
618 | "version": "0.1.0",
619 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
620 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
621 | "dev": true
622 | },
623 | "content-disposition": {
624 | "version": "0.5.3",
625 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
626 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
627 | "dev": true,
628 | "requires": {
629 | "safe-buffer": "5.1.2"
630 | }
631 | },
632 | "content-type": {
633 | "version": "1.0.4",
634 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
635 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
636 | "dev": true
637 | },
638 | "cookie": {
639 | "version": "0.4.0",
640 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
641 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
642 | "dev": true
643 | },
644 | "cookie-signature": {
645 | "version": "1.0.6",
646 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
647 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
648 | "dev": true
649 | },
650 | "cookiejar": {
651 | "version": "2.1.2",
652 | "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
653 | "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
654 | "dev": true
655 | },
656 | "core-util-is": {
657 | "version": "1.0.2",
658 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
659 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
660 | "dev": true
661 | },
662 | "cross-spawn": {
663 | "version": "6.0.5",
664 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
665 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
666 | "dev": true,
667 | "requires": {
668 | "nice-try": "^1.0.4",
669 | "path-key": "^2.0.1",
670 | "semver": "^5.5.0",
671 | "shebang-command": "^1.2.0",
672 | "which": "^1.2.9"
673 | },
674 | "dependencies": {
675 | "semver": {
676 | "version": "5.7.1",
677 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
678 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
679 | "dev": true
680 | }
681 | }
682 | },
683 | "debug": {
684 | "version": "4.1.1",
685 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
686 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
687 | "dev": true,
688 | "requires": {
689 | "ms": "^2.1.1"
690 | }
691 | },
692 | "decamelize": {
693 | "version": "1.2.0",
694 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
695 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
696 | "dev": true
697 | },
698 | "deep-eql": {
699 | "version": "3.0.1",
700 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
701 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
702 | "dev": true,
703 | "requires": {
704 | "type-detect": "^4.0.0"
705 | }
706 | },
707 | "deep-is": {
708 | "version": "0.1.3",
709 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
710 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
711 | "dev": true
712 | },
713 | "define-properties": {
714 | "version": "1.1.3",
715 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
716 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
717 | "dev": true,
718 | "requires": {
719 | "object-keys": "^1.0.12"
720 | }
721 | },
722 | "delayed-stream": {
723 | "version": "1.0.0",
724 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
725 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
726 | "dev": true
727 | },
728 | "depd": {
729 | "version": "1.1.2",
730 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
731 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
732 | "dev": true
733 | },
734 | "destroy": {
735 | "version": "1.0.4",
736 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
737 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
738 | "dev": true
739 | },
740 | "diff": {
741 | "version": "3.5.0",
742 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
743 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
744 | "dev": true
745 | },
746 | "doctrine": {
747 | "version": "3.0.0",
748 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
749 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
750 | "dev": true,
751 | "requires": {
752 | "esutils": "^2.0.2"
753 | }
754 | },
755 | "ee-first": {
756 | "version": "1.1.1",
757 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
758 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
759 | "dev": true
760 | },
761 | "emoji-regex": {
762 | "version": "8.0.0",
763 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
764 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
765 | "dev": true
766 | },
767 | "encodeurl": {
768 | "version": "1.0.2",
769 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
770 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
771 | "dev": true
772 | },
773 | "error-ex": {
774 | "version": "1.3.2",
775 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
776 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
777 | "dev": true,
778 | "requires": {
779 | "is-arrayish": "^0.2.1"
780 | }
781 | },
782 | "es-abstract": {
783 | "version": "1.17.5",
784 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
785 | "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
786 | "dev": true,
787 | "requires": {
788 | "es-to-primitive": "^1.2.1",
789 | "function-bind": "^1.1.1",
790 | "has": "^1.0.3",
791 | "has-symbols": "^1.0.1",
792 | "is-callable": "^1.1.5",
793 | "is-regex": "^1.0.5",
794 | "object-inspect": "^1.7.0",
795 | "object-keys": "^1.1.1",
796 | "object.assign": "^4.1.0",
797 | "string.prototype.trimleft": "^2.1.1",
798 | "string.prototype.trimright": "^2.1.1"
799 | }
800 | },
801 | "es-to-primitive": {
802 | "version": "1.2.1",
803 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
804 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
805 | "dev": true,
806 | "requires": {
807 | "is-callable": "^1.1.4",
808 | "is-date-object": "^1.0.1",
809 | "is-symbol": "^1.0.2"
810 | }
811 | },
812 | "escape-html": {
813 | "version": "1.0.3",
814 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
815 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
816 | "dev": true
817 | },
818 | "escape-string-regexp": {
819 | "version": "1.0.5",
820 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
821 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
822 | "dev": true
823 | },
824 | "eslint": {
825 | "version": "6.8.0",
826 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
827 | "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
828 | "dev": true,
829 | "requires": {
830 | "@babel/code-frame": "^7.0.0",
831 | "ajv": "^6.10.0",
832 | "chalk": "^2.1.0",
833 | "cross-spawn": "^6.0.5",
834 | "debug": "^4.0.1",
835 | "doctrine": "^3.0.0",
836 | "eslint-scope": "^5.0.0",
837 | "eslint-utils": "^1.4.3",
838 | "eslint-visitor-keys": "^1.1.0",
839 | "espree": "^6.1.2",
840 | "esquery": "^1.0.1",
841 | "esutils": "^2.0.2",
842 | "file-entry-cache": "^5.0.1",
843 | "functional-red-black-tree": "^1.0.1",
844 | "glob-parent": "^5.0.0",
845 | "globals": "^12.1.0",
846 | "ignore": "^4.0.6",
847 | "import-fresh": "^3.0.0",
848 | "imurmurhash": "^0.1.4",
849 | "inquirer": "^7.0.0",
850 | "is-glob": "^4.0.0",
851 | "js-yaml": "^3.13.1",
852 | "json-stable-stringify-without-jsonify": "^1.0.1",
853 | "levn": "^0.3.0",
854 | "lodash": "^4.17.14",
855 | "minimatch": "^3.0.4",
856 | "mkdirp": "^0.5.1",
857 | "natural-compare": "^1.4.0",
858 | "optionator": "^0.8.3",
859 | "progress": "^2.0.0",
860 | "regexpp": "^2.0.1",
861 | "semver": "^6.1.2",
862 | "strip-ansi": "^5.2.0",
863 | "strip-json-comments": "^3.0.1",
864 | "table": "^5.2.3",
865 | "text-table": "^0.2.0",
866 | "v8-compile-cache": "^2.0.3"
867 | }
868 | },
869 | "eslint-config-airbnb-base": {
870 | "version": "14.1.0",
871 | "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz",
872 | "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==",
873 | "dev": true,
874 | "requires": {
875 | "confusing-browser-globals": "^1.0.9",
876 | "object.assign": "^4.1.0",
877 | "object.entries": "^1.1.1"
878 | }
879 | },
880 | "eslint-config-prettier": {
881 | "version": "6.10.1",
882 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz",
883 | "integrity": "sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ==",
884 | "dev": true,
885 | "requires": {
886 | "get-stdin": "^6.0.0"
887 | }
888 | },
889 | "eslint-import-resolver-node": {
890 | "version": "0.3.3",
891 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz",
892 | "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==",
893 | "dev": true,
894 | "requires": {
895 | "debug": "^2.6.9",
896 | "resolve": "^1.13.1"
897 | },
898 | "dependencies": {
899 | "debug": {
900 | "version": "2.6.9",
901 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
902 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
903 | "dev": true,
904 | "requires": {
905 | "ms": "2.0.0"
906 | }
907 | },
908 | "ms": {
909 | "version": "2.0.0",
910 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
911 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
912 | "dev": true
913 | }
914 | }
915 | },
916 | "eslint-module-utils": {
917 | "version": "2.6.0",
918 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
919 | "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
920 | "dev": true,
921 | "requires": {
922 | "debug": "^2.6.9",
923 | "pkg-dir": "^2.0.0"
924 | },
925 | "dependencies": {
926 | "debug": {
927 | "version": "2.6.9",
928 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
929 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
930 | "dev": true,
931 | "requires": {
932 | "ms": "2.0.0"
933 | }
934 | },
935 | "ms": {
936 | "version": "2.0.0",
937 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
938 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
939 | "dev": true
940 | }
941 | }
942 | },
943 | "eslint-plugin-import": {
944 | "version": "2.20.2",
945 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz",
946 | "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==",
947 | "dev": true,
948 | "requires": {
949 | "array-includes": "^3.0.3",
950 | "array.prototype.flat": "^1.2.1",
951 | "contains-path": "^0.1.0",
952 | "debug": "^2.6.9",
953 | "doctrine": "1.5.0",
954 | "eslint-import-resolver-node": "^0.3.2",
955 | "eslint-module-utils": "^2.4.1",
956 | "has": "^1.0.3",
957 | "minimatch": "^3.0.4",
958 | "object.values": "^1.1.0",
959 | "read-pkg-up": "^2.0.0",
960 | "resolve": "^1.12.0"
961 | },
962 | "dependencies": {
963 | "debug": {
964 | "version": "2.6.9",
965 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
966 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
967 | "dev": true,
968 | "requires": {
969 | "ms": "2.0.0"
970 | }
971 | },
972 | "doctrine": {
973 | "version": "1.5.0",
974 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
975 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
976 | "dev": true,
977 | "requires": {
978 | "esutils": "^2.0.2",
979 | "isarray": "^1.0.0"
980 | }
981 | },
982 | "ms": {
983 | "version": "2.0.0",
984 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
985 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
986 | "dev": true
987 | }
988 | }
989 | },
990 | "eslint-plugin-prettier": {
991 | "version": "3.1.3",
992 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz",
993 | "integrity": "sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ==",
994 | "dev": true,
995 | "requires": {
996 | "prettier-linter-helpers": "^1.0.0"
997 | }
998 | },
999 | "eslint-scope": {
1000 | "version": "5.0.0",
1001 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
1002 | "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
1003 | "dev": true,
1004 | "requires": {
1005 | "esrecurse": "^4.1.0",
1006 | "estraverse": "^4.1.1"
1007 | }
1008 | },
1009 | "eslint-utils": {
1010 | "version": "1.4.3",
1011 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
1012 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
1013 | "dev": true,
1014 | "requires": {
1015 | "eslint-visitor-keys": "^1.1.0"
1016 | }
1017 | },
1018 | "eslint-visitor-keys": {
1019 | "version": "1.1.0",
1020 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
1021 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
1022 | "dev": true
1023 | },
1024 | "espree": {
1025 | "version": "6.2.1",
1026 | "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
1027 | "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
1028 | "dev": true,
1029 | "requires": {
1030 | "acorn": "^7.1.1",
1031 | "acorn-jsx": "^5.2.0",
1032 | "eslint-visitor-keys": "^1.1.0"
1033 | }
1034 | },
1035 | "esprima": {
1036 | "version": "4.0.1",
1037 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
1038 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
1039 | "dev": true
1040 | },
1041 | "esquery": {
1042 | "version": "1.3.0",
1043 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.0.tgz",
1044 | "integrity": "sha512-/5qB+Mb0m2bh86tjGbA8pB0qBfdmCIK6ZNPjcw4/TtEH0+tTf0wLA5HK4KMTweSMwLGHwBDWCBV+6+2+EuHmgg==",
1045 | "dev": true,
1046 | "requires": {
1047 | "estraverse": "^5.0.0"
1048 | },
1049 | "dependencies": {
1050 | "estraverse": {
1051 | "version": "5.1.0",
1052 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz",
1053 | "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==",
1054 | "dev": true
1055 | }
1056 | }
1057 | },
1058 | "esrecurse": {
1059 | "version": "4.2.1",
1060 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
1061 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
1062 | "dev": true,
1063 | "requires": {
1064 | "estraverse": "^4.1.0"
1065 | }
1066 | },
1067 | "estraverse": {
1068 | "version": "4.3.0",
1069 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
1070 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
1071 | "dev": true
1072 | },
1073 | "esutils": {
1074 | "version": "2.0.3",
1075 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1076 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1077 | "dev": true
1078 | },
1079 | "etag": {
1080 | "version": "1.8.1",
1081 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
1082 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
1083 | "dev": true
1084 | },
1085 | "express": {
1086 | "version": "4.17.1",
1087 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
1088 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
1089 | "dev": true,
1090 | "requires": {
1091 | "accepts": "~1.3.7",
1092 | "array-flatten": "1.1.1",
1093 | "body-parser": "1.19.0",
1094 | "content-disposition": "0.5.3",
1095 | "content-type": "~1.0.4",
1096 | "cookie": "0.4.0",
1097 | "cookie-signature": "1.0.6",
1098 | "debug": "2.6.9",
1099 | "depd": "~1.1.2",
1100 | "encodeurl": "~1.0.2",
1101 | "escape-html": "~1.0.3",
1102 | "etag": "~1.8.1",
1103 | "finalhandler": "~1.1.2",
1104 | "fresh": "0.5.2",
1105 | "merge-descriptors": "1.0.1",
1106 | "methods": "~1.1.2",
1107 | "on-finished": "~2.3.0",
1108 | "parseurl": "~1.3.3",
1109 | "path-to-regexp": "0.1.7",
1110 | "proxy-addr": "~2.0.5",
1111 | "qs": "6.7.0",
1112 | "range-parser": "~1.2.1",
1113 | "safe-buffer": "5.1.2",
1114 | "send": "0.17.1",
1115 | "serve-static": "1.14.1",
1116 | "setprototypeof": "1.1.1",
1117 | "statuses": "~1.5.0",
1118 | "type-is": "~1.6.18",
1119 | "utils-merge": "1.0.1",
1120 | "vary": "~1.1.2"
1121 | },
1122 | "dependencies": {
1123 | "debug": {
1124 | "version": "2.6.9",
1125 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1126 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1127 | "dev": true,
1128 | "requires": {
1129 | "ms": "2.0.0"
1130 | }
1131 | },
1132 | "ms": {
1133 | "version": "2.0.0",
1134 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1135 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1136 | "dev": true
1137 | }
1138 | }
1139 | },
1140 | "extend": {
1141 | "version": "3.0.2",
1142 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
1143 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
1144 | "dev": true
1145 | },
1146 | "external-editor": {
1147 | "version": "3.1.0",
1148 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
1149 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
1150 | "dev": true,
1151 | "requires": {
1152 | "chardet": "^0.7.0",
1153 | "iconv-lite": "^0.4.24",
1154 | "tmp": "^0.0.33"
1155 | }
1156 | },
1157 | "fast-deep-equal": {
1158 | "version": "3.1.1",
1159 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
1160 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
1161 | "dev": true
1162 | },
1163 | "fast-diff": {
1164 | "version": "1.2.0",
1165 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
1166 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
1167 | "dev": true
1168 | },
1169 | "fast-json-stable-stringify": {
1170 | "version": "2.1.0",
1171 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1172 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1173 | "dev": true
1174 | },
1175 | "fast-levenshtein": {
1176 | "version": "2.0.6",
1177 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1178 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1179 | "dev": true
1180 | },
1181 | "figures": {
1182 | "version": "3.2.0",
1183 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
1184 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
1185 | "dev": true,
1186 | "requires": {
1187 | "escape-string-regexp": "^1.0.5"
1188 | }
1189 | },
1190 | "file-entry-cache": {
1191 | "version": "5.0.1",
1192 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
1193 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
1194 | "dev": true,
1195 | "requires": {
1196 | "flat-cache": "^2.0.1"
1197 | }
1198 | },
1199 | "fill-range": {
1200 | "version": "7.0.1",
1201 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1202 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1203 | "dev": true,
1204 | "requires": {
1205 | "to-regex-range": "^5.0.1"
1206 | }
1207 | },
1208 | "finalhandler": {
1209 | "version": "1.1.2",
1210 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
1211 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
1212 | "dev": true,
1213 | "requires": {
1214 | "debug": "2.6.9",
1215 | "encodeurl": "~1.0.2",
1216 | "escape-html": "~1.0.3",
1217 | "on-finished": "~2.3.0",
1218 | "parseurl": "~1.3.3",
1219 | "statuses": "~1.5.0",
1220 | "unpipe": "~1.0.0"
1221 | },
1222 | "dependencies": {
1223 | "debug": {
1224 | "version": "2.6.9",
1225 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1226 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1227 | "dev": true,
1228 | "requires": {
1229 | "ms": "2.0.0"
1230 | }
1231 | },
1232 | "ms": {
1233 | "version": "2.0.0",
1234 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1235 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1236 | "dev": true
1237 | }
1238 | }
1239 | },
1240 | "find-up": {
1241 | "version": "3.0.0",
1242 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
1243 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
1244 | "dev": true,
1245 | "requires": {
1246 | "locate-path": "^3.0.0"
1247 | }
1248 | },
1249 | "flat": {
1250 | "version": "4.1.0",
1251 | "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz",
1252 | "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==",
1253 | "dev": true,
1254 | "requires": {
1255 | "is-buffer": "~2.0.3"
1256 | }
1257 | },
1258 | "flat-cache": {
1259 | "version": "2.0.1",
1260 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
1261 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
1262 | "dev": true,
1263 | "requires": {
1264 | "flatted": "^2.0.0",
1265 | "rimraf": "2.6.3",
1266 | "write": "1.0.3"
1267 | }
1268 | },
1269 | "flatted": {
1270 | "version": "2.0.2",
1271 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
1272 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
1273 | "dev": true
1274 | },
1275 | "form-data": {
1276 | "version": "2.5.1",
1277 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
1278 | "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
1279 | "dev": true,
1280 | "requires": {
1281 | "asynckit": "^0.4.0",
1282 | "combined-stream": "^1.0.6",
1283 | "mime-types": "^2.1.12"
1284 | }
1285 | },
1286 | "formidable": {
1287 | "version": "1.2.2",
1288 | "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz",
1289 | "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==",
1290 | "dev": true
1291 | },
1292 | "forwarded": {
1293 | "version": "0.1.2",
1294 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
1295 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
1296 | "dev": true
1297 | },
1298 | "fresh": {
1299 | "version": "0.5.2",
1300 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1301 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
1302 | "dev": true
1303 | },
1304 | "fs.realpath": {
1305 | "version": "1.0.0",
1306 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1307 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1308 | "dev": true
1309 | },
1310 | "fsevents": {
1311 | "version": "2.1.2",
1312 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
1313 | "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
1314 | "dev": true,
1315 | "optional": true
1316 | },
1317 | "function-bind": {
1318 | "version": "1.1.1",
1319 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1320 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1321 | "dev": true
1322 | },
1323 | "functional-red-black-tree": {
1324 | "version": "1.0.1",
1325 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
1326 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
1327 | "dev": true
1328 | },
1329 | "get-caller-file": {
1330 | "version": "2.0.5",
1331 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1332 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1333 | "dev": true
1334 | },
1335 | "get-func-name": {
1336 | "version": "2.0.0",
1337 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
1338 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
1339 | "dev": true
1340 | },
1341 | "get-stdin": {
1342 | "version": "6.0.0",
1343 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
1344 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
1345 | "dev": true
1346 | },
1347 | "glob": {
1348 | "version": "7.1.6",
1349 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
1350 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
1351 | "dev": true,
1352 | "requires": {
1353 | "fs.realpath": "^1.0.0",
1354 | "inflight": "^1.0.4",
1355 | "inherits": "2",
1356 | "minimatch": "^3.0.4",
1357 | "once": "^1.3.0",
1358 | "path-is-absolute": "^1.0.0"
1359 | }
1360 | },
1361 | "glob-parent": {
1362 | "version": "5.1.2",
1363 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1364 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1365 | "dev": true,
1366 | "requires": {
1367 | "is-glob": "^4.0.1"
1368 | }
1369 | },
1370 | "globals": {
1371 | "version": "12.4.0",
1372 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
1373 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
1374 | "dev": true,
1375 | "requires": {
1376 | "type-fest": "^0.8.1"
1377 | }
1378 | },
1379 | "graceful-fs": {
1380 | "version": "4.2.3",
1381 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
1382 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
1383 | "dev": true
1384 | },
1385 | "growl": {
1386 | "version": "1.10.5",
1387 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
1388 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
1389 | "dev": true
1390 | },
1391 | "has": {
1392 | "version": "1.0.3",
1393 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1394 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1395 | "dev": true,
1396 | "requires": {
1397 | "function-bind": "^1.1.1"
1398 | }
1399 | },
1400 | "has-flag": {
1401 | "version": "3.0.0",
1402 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1403 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1404 | "dev": true
1405 | },
1406 | "has-symbols": {
1407 | "version": "1.0.1",
1408 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
1409 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
1410 | "dev": true
1411 | },
1412 | "he": {
1413 | "version": "1.2.0",
1414 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
1415 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
1416 | "dev": true
1417 | },
1418 | "hosted-git-info": {
1419 | "version": "2.8.9",
1420 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
1421 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
1422 | "dev": true
1423 | },
1424 | "http-errors": {
1425 | "version": "1.7.2",
1426 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
1427 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
1428 | "dev": true,
1429 | "requires": {
1430 | "depd": "~1.1.2",
1431 | "inherits": "2.0.3",
1432 | "setprototypeof": "1.1.1",
1433 | "statuses": ">= 1.5.0 < 2",
1434 | "toidentifier": "1.0.0"
1435 | },
1436 | "dependencies": {
1437 | "inherits": {
1438 | "version": "2.0.3",
1439 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1440 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1441 | "dev": true
1442 | }
1443 | }
1444 | },
1445 | "iconv-lite": {
1446 | "version": "0.4.24",
1447 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1448 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1449 | "dev": true,
1450 | "requires": {
1451 | "safer-buffer": ">= 2.1.2 < 3"
1452 | }
1453 | },
1454 | "ignore": {
1455 | "version": "4.0.6",
1456 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1457 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1458 | "dev": true
1459 | },
1460 | "import-fresh": {
1461 | "version": "3.2.1",
1462 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
1463 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
1464 | "dev": true,
1465 | "requires": {
1466 | "parent-module": "^1.0.0",
1467 | "resolve-from": "^4.0.0"
1468 | }
1469 | },
1470 | "imurmurhash": {
1471 | "version": "0.1.4",
1472 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1473 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1474 | "dev": true
1475 | },
1476 | "inflight": {
1477 | "version": "1.0.6",
1478 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1479 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1480 | "dev": true,
1481 | "requires": {
1482 | "once": "^1.3.0",
1483 | "wrappy": "1"
1484 | }
1485 | },
1486 | "inherits": {
1487 | "version": "2.0.4",
1488 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1489 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1490 | "dev": true
1491 | },
1492 | "inquirer": {
1493 | "version": "7.1.0",
1494 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz",
1495 | "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==",
1496 | "dev": true,
1497 | "requires": {
1498 | "ansi-escapes": "^4.2.1",
1499 | "chalk": "^3.0.0",
1500 | "cli-cursor": "^3.1.0",
1501 | "cli-width": "^2.0.0",
1502 | "external-editor": "^3.0.3",
1503 | "figures": "^3.0.0",
1504 | "lodash": "^4.17.15",
1505 | "mute-stream": "0.0.8",
1506 | "run-async": "^2.4.0",
1507 | "rxjs": "^6.5.3",
1508 | "string-width": "^4.1.0",
1509 | "strip-ansi": "^6.0.0",
1510 | "through": "^2.3.6"
1511 | },
1512 | "dependencies": {
1513 | "ansi-styles": {
1514 | "version": "4.2.1",
1515 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
1516 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
1517 | "dev": true,
1518 | "requires": {
1519 | "@types/color-name": "^1.1.1",
1520 | "color-convert": "^2.0.1"
1521 | }
1522 | },
1523 | "chalk": {
1524 | "version": "3.0.0",
1525 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
1526 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
1527 | "dev": true,
1528 | "requires": {
1529 | "ansi-styles": "^4.1.0",
1530 | "supports-color": "^7.1.0"
1531 | }
1532 | },
1533 | "color-convert": {
1534 | "version": "2.0.1",
1535 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1536 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1537 | "dev": true,
1538 | "requires": {
1539 | "color-name": "~1.1.4"
1540 | }
1541 | },
1542 | "color-name": {
1543 | "version": "1.1.4",
1544 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1545 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1546 | "dev": true
1547 | },
1548 | "has-flag": {
1549 | "version": "4.0.0",
1550 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1551 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1552 | "dev": true
1553 | },
1554 | "strip-ansi": {
1555 | "version": "6.0.0",
1556 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
1557 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
1558 | "dev": true,
1559 | "requires": {
1560 | "ansi-regex": "^5.0.0"
1561 | }
1562 | },
1563 | "supports-color": {
1564 | "version": "7.1.0",
1565 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
1566 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
1567 | "dev": true,
1568 | "requires": {
1569 | "has-flag": "^4.0.0"
1570 | }
1571 | }
1572 | }
1573 | },
1574 | "ipaddr.js": {
1575 | "version": "1.9.1",
1576 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1577 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
1578 | "dev": true
1579 | },
1580 | "is-arrayish": {
1581 | "version": "0.2.1",
1582 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1583 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
1584 | "dev": true
1585 | },
1586 | "is-binary-path": {
1587 | "version": "2.1.0",
1588 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1589 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1590 | "dev": true,
1591 | "requires": {
1592 | "binary-extensions": "^2.0.0"
1593 | }
1594 | },
1595 | "is-buffer": {
1596 | "version": "2.0.4",
1597 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
1598 | "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
1599 | "dev": true
1600 | },
1601 | "is-callable": {
1602 | "version": "1.1.5",
1603 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
1604 | "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
1605 | "dev": true
1606 | },
1607 | "is-date-object": {
1608 | "version": "1.0.2",
1609 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
1610 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
1611 | "dev": true
1612 | },
1613 | "is-extglob": {
1614 | "version": "2.1.1",
1615 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1616 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1617 | "dev": true
1618 | },
1619 | "is-fullwidth-code-point": {
1620 | "version": "3.0.0",
1621 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1622 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1623 | "dev": true
1624 | },
1625 | "is-glob": {
1626 | "version": "4.0.1",
1627 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
1628 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
1629 | "dev": true,
1630 | "requires": {
1631 | "is-extglob": "^2.1.1"
1632 | }
1633 | },
1634 | "is-number": {
1635 | "version": "7.0.0",
1636 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1637 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1638 | "dev": true
1639 | },
1640 | "is-promise": {
1641 | "version": "2.1.0",
1642 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
1643 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
1644 | "dev": true
1645 | },
1646 | "is-regex": {
1647 | "version": "1.0.5",
1648 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
1649 | "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
1650 | "dev": true,
1651 | "requires": {
1652 | "has": "^1.0.3"
1653 | }
1654 | },
1655 | "is-string": {
1656 | "version": "1.0.5",
1657 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
1658 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
1659 | "dev": true
1660 | },
1661 | "is-symbol": {
1662 | "version": "1.0.3",
1663 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
1664 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
1665 | "dev": true,
1666 | "requires": {
1667 | "has-symbols": "^1.0.1"
1668 | }
1669 | },
1670 | "isarray": {
1671 | "version": "1.0.0",
1672 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1673 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1674 | "dev": true
1675 | },
1676 | "isexe": {
1677 | "version": "2.0.0",
1678 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1679 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1680 | "dev": true
1681 | },
1682 | "js-tokens": {
1683 | "version": "4.0.0",
1684 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1685 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1686 | "dev": true
1687 | },
1688 | "js-yaml": {
1689 | "version": "3.13.1",
1690 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
1691 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
1692 | "dev": true,
1693 | "requires": {
1694 | "argparse": "^1.0.7",
1695 | "esprima": "^4.0.0"
1696 | }
1697 | },
1698 | "json-schema-traverse": {
1699 | "version": "0.4.1",
1700 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1701 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1702 | "dev": true
1703 | },
1704 | "json-stable-stringify-without-jsonify": {
1705 | "version": "1.0.1",
1706 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1707 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1708 | "dev": true
1709 | },
1710 | "levn": {
1711 | "version": "0.3.0",
1712 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1713 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1714 | "dev": true,
1715 | "requires": {
1716 | "prelude-ls": "~1.1.2",
1717 | "type-check": "~0.3.2"
1718 | }
1719 | },
1720 | "load-json-file": {
1721 | "version": "2.0.0",
1722 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
1723 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
1724 | "dev": true,
1725 | "requires": {
1726 | "graceful-fs": "^4.1.2",
1727 | "parse-json": "^2.2.0",
1728 | "pify": "^2.0.0",
1729 | "strip-bom": "^3.0.0"
1730 | }
1731 | },
1732 | "locate-path": {
1733 | "version": "3.0.0",
1734 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
1735 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
1736 | "dev": true,
1737 | "requires": {
1738 | "p-locate": "^3.0.0",
1739 | "path-exists": "^3.0.0"
1740 | }
1741 | },
1742 | "lodash": {
1743 | "version": "4.17.21",
1744 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1745 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1746 | "dev": true
1747 | },
1748 | "log-symbols": {
1749 | "version": "3.0.0",
1750 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
1751 | "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
1752 | "dev": true,
1753 | "requires": {
1754 | "chalk": "^2.4.2"
1755 | }
1756 | },
1757 | "make-error": {
1758 | "version": "1.3.6",
1759 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
1760 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
1761 | "dev": true
1762 | },
1763 | "media-typer": {
1764 | "version": "0.3.0",
1765 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1766 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
1767 | "dev": true
1768 | },
1769 | "merge-descriptors": {
1770 | "version": "1.0.1",
1771 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1772 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
1773 | "dev": true
1774 | },
1775 | "methods": {
1776 | "version": "1.1.2",
1777 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1778 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
1779 | "dev": true
1780 | },
1781 | "mime": {
1782 | "version": "1.6.0",
1783 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1784 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1785 | "dev": true
1786 | },
1787 | "mime-db": {
1788 | "version": "1.43.0",
1789 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
1790 | "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
1791 | "dev": true
1792 | },
1793 | "mime-types": {
1794 | "version": "2.1.26",
1795 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
1796 | "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
1797 | "dev": true,
1798 | "requires": {
1799 | "mime-db": "1.43.0"
1800 | }
1801 | },
1802 | "mimic-fn": {
1803 | "version": "2.1.0",
1804 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1805 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1806 | "dev": true
1807 | },
1808 | "minimatch": {
1809 | "version": "3.0.4",
1810 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1811 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1812 | "dev": true,
1813 | "requires": {
1814 | "brace-expansion": "^1.1.7"
1815 | }
1816 | },
1817 | "minimist": {
1818 | "version": "1.2.6",
1819 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
1820 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
1821 | "dev": true
1822 | },
1823 | "mkdirp": {
1824 | "version": "0.5.5",
1825 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
1826 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
1827 | "dev": true,
1828 | "requires": {
1829 | "minimist": "^1.2.5"
1830 | }
1831 | },
1832 | "mocha": {
1833 | "version": "7.1.1",
1834 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz",
1835 | "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==",
1836 | "dev": true,
1837 | "requires": {
1838 | "ansi-colors": "3.2.3",
1839 | "browser-stdout": "1.3.1",
1840 | "chokidar": "3.3.0",
1841 | "debug": "3.2.6",
1842 | "diff": "3.5.0",
1843 | "escape-string-regexp": "1.0.5",
1844 | "find-up": "3.0.0",
1845 | "glob": "7.1.3",
1846 | "growl": "1.10.5",
1847 | "he": "1.2.0",
1848 | "js-yaml": "3.13.1",
1849 | "log-symbols": "3.0.0",
1850 | "minimatch": "3.0.4",
1851 | "mkdirp": "0.5.3",
1852 | "ms": "2.1.1",
1853 | "node-environment-flags": "1.0.6",
1854 | "object.assign": "4.1.0",
1855 | "strip-json-comments": "2.0.1",
1856 | "supports-color": "6.0.0",
1857 | "which": "1.3.1",
1858 | "wide-align": "1.1.3",
1859 | "yargs": "13.3.2",
1860 | "yargs-parser": "13.1.2",
1861 | "yargs-unparser": "1.6.0"
1862 | },
1863 | "dependencies": {
1864 | "debug": {
1865 | "version": "3.2.6",
1866 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
1867 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
1868 | "dev": true,
1869 | "requires": {
1870 | "ms": "^2.1.1"
1871 | }
1872 | },
1873 | "glob": {
1874 | "version": "7.1.3",
1875 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
1876 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
1877 | "dev": true,
1878 | "requires": {
1879 | "fs.realpath": "^1.0.0",
1880 | "inflight": "^1.0.4",
1881 | "inherits": "2",
1882 | "minimatch": "^3.0.4",
1883 | "once": "^1.3.0",
1884 | "path-is-absolute": "^1.0.0"
1885 | }
1886 | },
1887 | "mkdirp": {
1888 | "version": "0.5.3",
1889 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
1890 | "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
1891 | "dev": true,
1892 | "requires": {
1893 | "minimist": "^1.2.5"
1894 | }
1895 | },
1896 | "ms": {
1897 | "version": "2.1.1",
1898 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1899 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
1900 | "dev": true
1901 | },
1902 | "strip-json-comments": {
1903 | "version": "2.0.1",
1904 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1905 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
1906 | "dev": true
1907 | },
1908 | "supports-color": {
1909 | "version": "6.0.0",
1910 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
1911 | "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
1912 | "dev": true,
1913 | "requires": {
1914 | "has-flag": "^3.0.0"
1915 | }
1916 | }
1917 | }
1918 | },
1919 | "ms": {
1920 | "version": "2.1.2",
1921 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1922 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1923 | "dev": true
1924 | },
1925 | "mute-stream": {
1926 | "version": "0.0.8",
1927 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
1928 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
1929 | "dev": true
1930 | },
1931 | "natural-compare": {
1932 | "version": "1.4.0",
1933 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1934 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1935 | "dev": true
1936 | },
1937 | "negotiator": {
1938 | "version": "0.6.2",
1939 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
1940 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
1941 | "dev": true
1942 | },
1943 | "nice-try": {
1944 | "version": "1.0.5",
1945 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
1946 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
1947 | "dev": true
1948 | },
1949 | "node-environment-flags": {
1950 | "version": "1.0.6",
1951 | "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz",
1952 | "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==",
1953 | "dev": true,
1954 | "requires": {
1955 | "object.getownpropertydescriptors": "^2.0.3",
1956 | "semver": "^5.7.0"
1957 | },
1958 | "dependencies": {
1959 | "semver": {
1960 | "version": "5.7.1",
1961 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1962 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1963 | "dev": true
1964 | }
1965 | }
1966 | },
1967 | "normalize-package-data": {
1968 | "version": "2.5.0",
1969 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
1970 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
1971 | "dev": true,
1972 | "requires": {
1973 | "hosted-git-info": "^2.1.4",
1974 | "resolve": "^1.10.0",
1975 | "semver": "2 || 3 || 4 || 5",
1976 | "validate-npm-package-license": "^3.0.1"
1977 | },
1978 | "dependencies": {
1979 | "semver": {
1980 | "version": "5.7.1",
1981 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1982 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1983 | "dev": true
1984 | }
1985 | }
1986 | },
1987 | "normalize-path": {
1988 | "version": "3.0.0",
1989 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1990 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1991 | "dev": true
1992 | },
1993 | "object-inspect": {
1994 | "version": "1.7.0",
1995 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
1996 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
1997 | "dev": true
1998 | },
1999 | "object-keys": {
2000 | "version": "1.1.1",
2001 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
2002 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
2003 | "dev": true
2004 | },
2005 | "object.assign": {
2006 | "version": "4.1.0",
2007 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
2008 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
2009 | "dev": true,
2010 | "requires": {
2011 | "define-properties": "^1.1.2",
2012 | "function-bind": "^1.1.1",
2013 | "has-symbols": "^1.0.0",
2014 | "object-keys": "^1.0.11"
2015 | }
2016 | },
2017 | "object.entries": {
2018 | "version": "1.1.1",
2019 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz",
2020 | "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==",
2021 | "dev": true,
2022 | "requires": {
2023 | "define-properties": "^1.1.3",
2024 | "es-abstract": "^1.17.0-next.1",
2025 | "function-bind": "^1.1.1",
2026 | "has": "^1.0.3"
2027 | }
2028 | },
2029 | "object.getownpropertydescriptors": {
2030 | "version": "2.1.0",
2031 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
2032 | "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
2033 | "dev": true,
2034 | "requires": {
2035 | "define-properties": "^1.1.3",
2036 | "es-abstract": "^1.17.0-next.1"
2037 | }
2038 | },
2039 | "object.values": {
2040 | "version": "1.1.1",
2041 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
2042 | "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
2043 | "dev": true,
2044 | "requires": {
2045 | "define-properties": "^1.1.3",
2046 | "es-abstract": "^1.17.0-next.1",
2047 | "function-bind": "^1.1.1",
2048 | "has": "^1.0.3"
2049 | }
2050 | },
2051 | "on-finished": {
2052 | "version": "2.3.0",
2053 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
2054 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
2055 | "dev": true,
2056 | "requires": {
2057 | "ee-first": "1.1.1"
2058 | }
2059 | },
2060 | "once": {
2061 | "version": "1.4.0",
2062 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2063 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2064 | "dev": true,
2065 | "requires": {
2066 | "wrappy": "1"
2067 | }
2068 | },
2069 | "onetime": {
2070 | "version": "5.1.0",
2071 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
2072 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
2073 | "dev": true,
2074 | "requires": {
2075 | "mimic-fn": "^2.1.0"
2076 | }
2077 | },
2078 | "optionator": {
2079 | "version": "0.8.3",
2080 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
2081 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
2082 | "dev": true,
2083 | "requires": {
2084 | "deep-is": "~0.1.3",
2085 | "fast-levenshtein": "~2.0.6",
2086 | "levn": "~0.3.0",
2087 | "prelude-ls": "~1.1.2",
2088 | "type-check": "~0.3.2",
2089 | "word-wrap": "~1.2.3"
2090 | }
2091 | },
2092 | "os-tmpdir": {
2093 | "version": "1.0.2",
2094 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
2095 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
2096 | "dev": true
2097 | },
2098 | "p-limit": {
2099 | "version": "2.3.0",
2100 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
2101 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
2102 | "dev": true,
2103 | "requires": {
2104 | "p-try": "^2.0.0"
2105 | }
2106 | },
2107 | "p-locate": {
2108 | "version": "3.0.0",
2109 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
2110 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
2111 | "dev": true,
2112 | "requires": {
2113 | "p-limit": "^2.0.0"
2114 | }
2115 | },
2116 | "p-try": {
2117 | "version": "2.2.0",
2118 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
2119 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
2120 | "dev": true
2121 | },
2122 | "parent-module": {
2123 | "version": "1.0.1",
2124 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2125 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2126 | "dev": true,
2127 | "requires": {
2128 | "callsites": "^3.0.0"
2129 | }
2130 | },
2131 | "parse-json": {
2132 | "version": "2.2.0",
2133 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
2134 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
2135 | "dev": true,
2136 | "requires": {
2137 | "error-ex": "^1.2.0"
2138 | }
2139 | },
2140 | "parseurl": {
2141 | "version": "1.3.3",
2142 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
2143 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
2144 | "dev": true
2145 | },
2146 | "path-exists": {
2147 | "version": "3.0.0",
2148 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2149 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2150 | "dev": true
2151 | },
2152 | "path-is-absolute": {
2153 | "version": "1.0.1",
2154 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2155 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2156 | "dev": true
2157 | },
2158 | "path-key": {
2159 | "version": "2.0.1",
2160 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
2161 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
2162 | "dev": true
2163 | },
2164 | "path-parse": {
2165 | "version": "1.0.7",
2166 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2167 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2168 | "dev": true
2169 | },
2170 | "path-to-regexp": {
2171 | "version": "0.1.7",
2172 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
2173 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
2174 | "dev": true
2175 | },
2176 | "path-type": {
2177 | "version": "2.0.0",
2178 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
2179 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
2180 | "dev": true,
2181 | "requires": {
2182 | "pify": "^2.0.0"
2183 | }
2184 | },
2185 | "pathval": {
2186 | "version": "1.1.1",
2187 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
2188 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
2189 | "dev": true
2190 | },
2191 | "picomatch": {
2192 | "version": "2.2.2",
2193 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
2194 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
2195 | "dev": true
2196 | },
2197 | "pify": {
2198 | "version": "2.3.0",
2199 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2200 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
2201 | "dev": true
2202 | },
2203 | "pkg-dir": {
2204 | "version": "2.0.0",
2205 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
2206 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
2207 | "dev": true,
2208 | "requires": {
2209 | "find-up": "^2.1.0"
2210 | },
2211 | "dependencies": {
2212 | "find-up": {
2213 | "version": "2.1.0",
2214 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
2215 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
2216 | "dev": true,
2217 | "requires": {
2218 | "locate-path": "^2.0.0"
2219 | }
2220 | },
2221 | "locate-path": {
2222 | "version": "2.0.0",
2223 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2224 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2225 | "dev": true,
2226 | "requires": {
2227 | "p-locate": "^2.0.0",
2228 | "path-exists": "^3.0.0"
2229 | }
2230 | },
2231 | "p-limit": {
2232 | "version": "1.3.0",
2233 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
2234 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
2235 | "dev": true,
2236 | "requires": {
2237 | "p-try": "^1.0.0"
2238 | }
2239 | },
2240 | "p-locate": {
2241 | "version": "2.0.0",
2242 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
2243 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
2244 | "dev": true,
2245 | "requires": {
2246 | "p-limit": "^1.1.0"
2247 | }
2248 | },
2249 | "p-try": {
2250 | "version": "1.0.0",
2251 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
2252 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
2253 | "dev": true
2254 | }
2255 | }
2256 | },
2257 | "prelude-ls": {
2258 | "version": "1.1.2",
2259 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
2260 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
2261 | "dev": true
2262 | },
2263 | "prettier": {
2264 | "version": "2.0.4",
2265 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz",
2266 | "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==",
2267 | "dev": true
2268 | },
2269 | "prettier-linter-helpers": {
2270 | "version": "1.0.0",
2271 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
2272 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
2273 | "dev": true,
2274 | "requires": {
2275 | "fast-diff": "^1.1.2"
2276 | }
2277 | },
2278 | "process-nextick-args": {
2279 | "version": "2.0.1",
2280 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
2281 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
2282 | "dev": true
2283 | },
2284 | "progress": {
2285 | "version": "2.0.3",
2286 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
2287 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
2288 | "dev": true
2289 | },
2290 | "proxy-addr": {
2291 | "version": "2.0.6",
2292 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
2293 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
2294 | "dev": true,
2295 | "requires": {
2296 | "forwarded": "~0.1.2",
2297 | "ipaddr.js": "1.9.1"
2298 | }
2299 | },
2300 | "punycode": {
2301 | "version": "2.1.1",
2302 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2303 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
2304 | "dev": true
2305 | },
2306 | "qs": {
2307 | "version": "6.7.0",
2308 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
2309 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
2310 | "dev": true
2311 | },
2312 | "range-parser": {
2313 | "version": "1.2.1",
2314 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
2315 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
2316 | "dev": true
2317 | },
2318 | "raw-body": {
2319 | "version": "2.4.0",
2320 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
2321 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
2322 | "dev": true,
2323 | "requires": {
2324 | "bytes": "3.1.0",
2325 | "http-errors": "1.7.2",
2326 | "iconv-lite": "0.4.24",
2327 | "unpipe": "1.0.0"
2328 | }
2329 | },
2330 | "read-pkg": {
2331 | "version": "2.0.0",
2332 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
2333 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
2334 | "dev": true,
2335 | "requires": {
2336 | "load-json-file": "^2.0.0",
2337 | "normalize-package-data": "^2.3.2",
2338 | "path-type": "^2.0.0"
2339 | }
2340 | },
2341 | "read-pkg-up": {
2342 | "version": "2.0.0",
2343 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
2344 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
2345 | "dev": true,
2346 | "requires": {
2347 | "find-up": "^2.0.0",
2348 | "read-pkg": "^2.0.0"
2349 | },
2350 | "dependencies": {
2351 | "find-up": {
2352 | "version": "2.1.0",
2353 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
2354 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
2355 | "dev": true,
2356 | "requires": {
2357 | "locate-path": "^2.0.0"
2358 | }
2359 | },
2360 | "locate-path": {
2361 | "version": "2.0.0",
2362 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2363 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2364 | "dev": true,
2365 | "requires": {
2366 | "p-locate": "^2.0.0",
2367 | "path-exists": "^3.0.0"
2368 | }
2369 | },
2370 | "p-limit": {
2371 | "version": "1.3.0",
2372 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
2373 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
2374 | "dev": true,
2375 | "requires": {
2376 | "p-try": "^1.0.0"
2377 | }
2378 | },
2379 | "p-locate": {
2380 | "version": "2.0.0",
2381 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
2382 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
2383 | "dev": true,
2384 | "requires": {
2385 | "p-limit": "^1.1.0"
2386 | }
2387 | },
2388 | "p-try": {
2389 | "version": "1.0.0",
2390 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
2391 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
2392 | "dev": true
2393 | }
2394 | }
2395 | },
2396 | "readable-stream": {
2397 | "version": "2.3.7",
2398 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
2399 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
2400 | "dev": true,
2401 | "requires": {
2402 | "core-util-is": "~1.0.0",
2403 | "inherits": "~2.0.3",
2404 | "isarray": "~1.0.0",
2405 | "process-nextick-args": "~2.0.0",
2406 | "safe-buffer": "~5.1.1",
2407 | "string_decoder": "~1.1.1",
2408 | "util-deprecate": "~1.0.1"
2409 | }
2410 | },
2411 | "readdirp": {
2412 | "version": "3.2.0",
2413 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz",
2414 | "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==",
2415 | "dev": true,
2416 | "requires": {
2417 | "picomatch": "^2.0.4"
2418 | }
2419 | },
2420 | "regexpp": {
2421 | "version": "2.0.1",
2422 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
2423 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
2424 | "dev": true
2425 | },
2426 | "require-directory": {
2427 | "version": "2.1.1",
2428 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
2429 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
2430 | "dev": true
2431 | },
2432 | "require-main-filename": {
2433 | "version": "2.0.0",
2434 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
2435 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
2436 | "dev": true
2437 | },
2438 | "resolve": {
2439 | "version": "1.16.0",
2440 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.0.tgz",
2441 | "integrity": "sha512-LarL/PIKJvc09k1jaeT4kQb/8/7P+qV4qSnN2K80AES+OHdfZELAKVOBjxsvtToT/uLOfFbvYvKfZmV8cee7nA==",
2442 | "dev": true,
2443 | "requires": {
2444 | "path-parse": "^1.0.6"
2445 | }
2446 | },
2447 | "resolve-from": {
2448 | "version": "4.0.0",
2449 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
2450 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
2451 | "dev": true
2452 | },
2453 | "restore-cursor": {
2454 | "version": "3.1.0",
2455 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
2456 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
2457 | "dev": true,
2458 | "requires": {
2459 | "onetime": "^5.1.0",
2460 | "signal-exit": "^3.0.2"
2461 | }
2462 | },
2463 | "rimraf": {
2464 | "version": "2.6.3",
2465 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
2466 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
2467 | "dev": true,
2468 | "requires": {
2469 | "glob": "^7.1.3"
2470 | }
2471 | },
2472 | "run-async": {
2473 | "version": "2.4.0",
2474 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz",
2475 | "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==",
2476 | "dev": true,
2477 | "requires": {
2478 | "is-promise": "^2.1.0"
2479 | }
2480 | },
2481 | "rxjs": {
2482 | "version": "6.5.5",
2483 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
2484 | "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
2485 | "dev": true,
2486 | "requires": {
2487 | "tslib": "^1.9.0"
2488 | }
2489 | },
2490 | "safe-buffer": {
2491 | "version": "5.1.2",
2492 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2493 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2494 | "dev": true
2495 | },
2496 | "safer-buffer": {
2497 | "version": "2.1.2",
2498 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2499 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2500 | "dev": true
2501 | },
2502 | "semver": {
2503 | "version": "6.3.0",
2504 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2505 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2506 | "dev": true
2507 | },
2508 | "send": {
2509 | "version": "0.17.1",
2510 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
2511 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
2512 | "dev": true,
2513 | "requires": {
2514 | "debug": "2.6.9",
2515 | "depd": "~1.1.2",
2516 | "destroy": "~1.0.4",
2517 | "encodeurl": "~1.0.2",
2518 | "escape-html": "~1.0.3",
2519 | "etag": "~1.8.1",
2520 | "fresh": "0.5.2",
2521 | "http-errors": "~1.7.2",
2522 | "mime": "1.6.0",
2523 | "ms": "2.1.1",
2524 | "on-finished": "~2.3.0",
2525 | "range-parser": "~1.2.1",
2526 | "statuses": "~1.5.0"
2527 | },
2528 | "dependencies": {
2529 | "debug": {
2530 | "version": "2.6.9",
2531 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
2532 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
2533 | "dev": true,
2534 | "requires": {
2535 | "ms": "2.0.0"
2536 | },
2537 | "dependencies": {
2538 | "ms": {
2539 | "version": "2.0.0",
2540 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2541 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
2542 | "dev": true
2543 | }
2544 | }
2545 | },
2546 | "ms": {
2547 | "version": "2.1.1",
2548 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
2549 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
2550 | "dev": true
2551 | }
2552 | }
2553 | },
2554 | "serve-static": {
2555 | "version": "1.14.1",
2556 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
2557 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
2558 | "dev": true,
2559 | "requires": {
2560 | "encodeurl": "~1.0.2",
2561 | "escape-html": "~1.0.3",
2562 | "parseurl": "~1.3.3",
2563 | "send": "0.17.1"
2564 | }
2565 | },
2566 | "set-blocking": {
2567 | "version": "2.0.0",
2568 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
2569 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
2570 | "dev": true
2571 | },
2572 | "setprototypeof": {
2573 | "version": "1.1.1",
2574 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
2575 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
2576 | "dev": true
2577 | },
2578 | "shebang-command": {
2579 | "version": "1.2.0",
2580 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
2581 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
2582 | "dev": true,
2583 | "requires": {
2584 | "shebang-regex": "^1.0.0"
2585 | }
2586 | },
2587 | "shebang-regex": {
2588 | "version": "1.0.0",
2589 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
2590 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
2591 | "dev": true
2592 | },
2593 | "signal-exit": {
2594 | "version": "3.0.3",
2595 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
2596 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
2597 | "dev": true
2598 | },
2599 | "slice-ansi": {
2600 | "version": "2.1.0",
2601 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
2602 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
2603 | "dev": true,
2604 | "requires": {
2605 | "ansi-styles": "^3.2.0",
2606 | "astral-regex": "^1.0.0",
2607 | "is-fullwidth-code-point": "^2.0.0"
2608 | },
2609 | "dependencies": {
2610 | "is-fullwidth-code-point": {
2611 | "version": "2.0.0",
2612 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2613 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2614 | "dev": true
2615 | }
2616 | }
2617 | },
2618 | "source-map": {
2619 | "version": "0.6.1",
2620 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2621 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2622 | "dev": true
2623 | },
2624 | "source-map-support": {
2625 | "version": "0.5.16",
2626 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
2627 | "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
2628 | "dev": true,
2629 | "requires": {
2630 | "buffer-from": "^1.0.0",
2631 | "source-map": "^0.6.0"
2632 | }
2633 | },
2634 | "spdx-correct": {
2635 | "version": "3.1.0",
2636 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
2637 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
2638 | "dev": true,
2639 | "requires": {
2640 | "spdx-expression-parse": "^3.0.0",
2641 | "spdx-license-ids": "^3.0.0"
2642 | }
2643 | },
2644 | "spdx-exceptions": {
2645 | "version": "2.2.0",
2646 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
2647 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
2648 | "dev": true
2649 | },
2650 | "spdx-expression-parse": {
2651 | "version": "3.0.0",
2652 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
2653 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
2654 | "dev": true,
2655 | "requires": {
2656 | "spdx-exceptions": "^2.1.0",
2657 | "spdx-license-ids": "^3.0.0"
2658 | }
2659 | },
2660 | "spdx-license-ids": {
2661 | "version": "3.0.5",
2662 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
2663 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
2664 | "dev": true
2665 | },
2666 | "sprintf-js": {
2667 | "version": "1.0.3",
2668 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
2669 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
2670 | "dev": true
2671 | },
2672 | "statuses": {
2673 | "version": "1.5.0",
2674 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
2675 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
2676 | "dev": true
2677 | },
2678 | "string-width": {
2679 | "version": "4.2.0",
2680 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
2681 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
2682 | "dev": true,
2683 | "requires": {
2684 | "emoji-regex": "^8.0.0",
2685 | "is-fullwidth-code-point": "^3.0.0",
2686 | "strip-ansi": "^6.0.0"
2687 | },
2688 | "dependencies": {
2689 | "strip-ansi": {
2690 | "version": "6.0.0",
2691 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
2692 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
2693 | "dev": true,
2694 | "requires": {
2695 | "ansi-regex": "^5.0.0"
2696 | }
2697 | }
2698 | }
2699 | },
2700 | "string.prototype.trimend": {
2701 | "version": "1.0.1",
2702 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
2703 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
2704 | "dev": true,
2705 | "requires": {
2706 | "define-properties": "^1.1.3",
2707 | "es-abstract": "^1.17.5"
2708 | }
2709 | },
2710 | "string.prototype.trimleft": {
2711 | "version": "2.1.2",
2712 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
2713 | "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
2714 | "dev": true,
2715 | "requires": {
2716 | "define-properties": "^1.1.3",
2717 | "es-abstract": "^1.17.5",
2718 | "string.prototype.trimstart": "^1.0.0"
2719 | }
2720 | },
2721 | "string.prototype.trimright": {
2722 | "version": "2.1.2",
2723 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
2724 | "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
2725 | "dev": true,
2726 | "requires": {
2727 | "define-properties": "^1.1.3",
2728 | "es-abstract": "^1.17.5",
2729 | "string.prototype.trimend": "^1.0.0"
2730 | }
2731 | },
2732 | "string.prototype.trimstart": {
2733 | "version": "1.0.1",
2734 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
2735 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
2736 | "dev": true,
2737 | "requires": {
2738 | "define-properties": "^1.1.3",
2739 | "es-abstract": "^1.17.5"
2740 | }
2741 | },
2742 | "string_decoder": {
2743 | "version": "1.1.1",
2744 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2745 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2746 | "dev": true,
2747 | "requires": {
2748 | "safe-buffer": "~5.1.0"
2749 | }
2750 | },
2751 | "strip-ansi": {
2752 | "version": "5.2.0",
2753 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
2754 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
2755 | "dev": true,
2756 | "requires": {
2757 | "ansi-regex": "^4.1.0"
2758 | },
2759 | "dependencies": {
2760 | "ansi-regex": {
2761 | "version": "4.1.1",
2762 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
2763 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
2764 | "dev": true
2765 | }
2766 | }
2767 | },
2768 | "strip-bom": {
2769 | "version": "3.0.0",
2770 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
2771 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
2772 | "dev": true
2773 | },
2774 | "strip-json-comments": {
2775 | "version": "3.1.0",
2776 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz",
2777 | "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==",
2778 | "dev": true
2779 | },
2780 | "superagent": {
2781 | "version": "3.8.3",
2782 | "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
2783 | "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
2784 | "dev": true,
2785 | "requires": {
2786 | "component-emitter": "^1.2.0",
2787 | "cookiejar": "^2.1.0",
2788 | "debug": "^3.1.0",
2789 | "extend": "^3.0.0",
2790 | "form-data": "^2.3.1",
2791 | "formidable": "^1.2.0",
2792 | "methods": "^1.1.1",
2793 | "mime": "^1.4.1",
2794 | "qs": "^6.5.1",
2795 | "readable-stream": "^2.3.5"
2796 | },
2797 | "dependencies": {
2798 | "debug": {
2799 | "version": "3.2.6",
2800 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
2801 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
2802 | "dev": true,
2803 | "requires": {
2804 | "ms": "^2.1.1"
2805 | }
2806 | }
2807 | }
2808 | },
2809 | "supertest": {
2810 | "version": "4.0.2",
2811 | "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz",
2812 | "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==",
2813 | "dev": true,
2814 | "requires": {
2815 | "methods": "^1.1.2",
2816 | "superagent": "^3.8.3"
2817 | }
2818 | },
2819 | "supports-color": {
2820 | "version": "5.5.0",
2821 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2822 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2823 | "dev": true,
2824 | "requires": {
2825 | "has-flag": "^3.0.0"
2826 | }
2827 | },
2828 | "table": {
2829 | "version": "5.4.6",
2830 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
2831 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
2832 | "dev": true,
2833 | "requires": {
2834 | "ajv": "^6.10.2",
2835 | "lodash": "^4.17.14",
2836 | "slice-ansi": "^2.1.0",
2837 | "string-width": "^3.0.0"
2838 | },
2839 | "dependencies": {
2840 | "emoji-regex": {
2841 | "version": "7.0.3",
2842 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
2843 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
2844 | "dev": true
2845 | },
2846 | "is-fullwidth-code-point": {
2847 | "version": "2.0.0",
2848 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2849 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2850 | "dev": true
2851 | },
2852 | "string-width": {
2853 | "version": "3.1.0",
2854 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
2855 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
2856 | "dev": true,
2857 | "requires": {
2858 | "emoji-regex": "^7.0.1",
2859 | "is-fullwidth-code-point": "^2.0.0",
2860 | "strip-ansi": "^5.1.0"
2861 | }
2862 | }
2863 | }
2864 | },
2865 | "text-table": {
2866 | "version": "0.2.0",
2867 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2868 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
2869 | "dev": true
2870 | },
2871 | "through": {
2872 | "version": "2.3.8",
2873 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
2874 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
2875 | "dev": true
2876 | },
2877 | "tmp": {
2878 | "version": "0.0.33",
2879 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
2880 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
2881 | "dev": true,
2882 | "requires": {
2883 | "os-tmpdir": "~1.0.2"
2884 | }
2885 | },
2886 | "to-regex-range": {
2887 | "version": "5.0.1",
2888 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2889 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2890 | "dev": true,
2891 | "requires": {
2892 | "is-number": "^7.0.0"
2893 | }
2894 | },
2895 | "toidentifier": {
2896 | "version": "1.0.0",
2897 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
2898 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
2899 | "dev": true
2900 | },
2901 | "ts-node": {
2902 | "version": "8.8.2",
2903 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.8.2.tgz",
2904 | "integrity": "sha512-duVj6BpSpUpD/oM4MfhO98ozgkp3Gt9qIp3jGxwU2DFvl/3IRaEAvbLa8G60uS7C77457e/m5TMowjedeRxI1Q==",
2905 | "dev": true,
2906 | "requires": {
2907 | "arg": "^4.1.0",
2908 | "diff": "^4.0.1",
2909 | "make-error": "^1.1.1",
2910 | "source-map-support": "^0.5.6",
2911 | "yn": "3.1.1"
2912 | },
2913 | "dependencies": {
2914 | "diff": {
2915 | "version": "4.0.2",
2916 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
2917 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
2918 | "dev": true
2919 | }
2920 | }
2921 | },
2922 | "tslib": {
2923 | "version": "1.11.1",
2924 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
2925 | "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==",
2926 | "dev": true
2927 | },
2928 | "tsutils": {
2929 | "version": "3.17.1",
2930 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz",
2931 | "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==",
2932 | "dev": true,
2933 | "requires": {
2934 | "tslib": "^1.8.1"
2935 | }
2936 | },
2937 | "type-check": {
2938 | "version": "0.3.2",
2939 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2940 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
2941 | "dev": true,
2942 | "requires": {
2943 | "prelude-ls": "~1.1.2"
2944 | }
2945 | },
2946 | "type-detect": {
2947 | "version": "4.0.8",
2948 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
2949 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
2950 | "dev": true
2951 | },
2952 | "type-fest": {
2953 | "version": "0.8.1",
2954 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
2955 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
2956 | "dev": true
2957 | },
2958 | "type-is": {
2959 | "version": "1.6.18",
2960 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
2961 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
2962 | "dev": true,
2963 | "requires": {
2964 | "media-typer": "0.3.0",
2965 | "mime-types": "~2.1.24"
2966 | }
2967 | },
2968 | "typescript": {
2969 | "version": "3.8.3",
2970 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz",
2971 | "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==",
2972 | "dev": true
2973 | },
2974 | "unpipe": {
2975 | "version": "1.0.0",
2976 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
2977 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
2978 | "dev": true
2979 | },
2980 | "uri-js": {
2981 | "version": "4.2.2",
2982 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
2983 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
2984 | "dev": true,
2985 | "requires": {
2986 | "punycode": "^2.1.0"
2987 | }
2988 | },
2989 | "util-deprecate": {
2990 | "version": "1.0.2",
2991 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2992 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2993 | "dev": true
2994 | },
2995 | "utils-merge": {
2996 | "version": "1.0.1",
2997 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
2998 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
2999 | "dev": true
3000 | },
3001 | "v8-compile-cache": {
3002 | "version": "2.1.0",
3003 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
3004 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
3005 | "dev": true
3006 | },
3007 | "validate-npm-package-license": {
3008 | "version": "3.0.4",
3009 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
3010 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
3011 | "dev": true,
3012 | "requires": {
3013 | "spdx-correct": "^3.0.0",
3014 | "spdx-expression-parse": "^3.0.0"
3015 | }
3016 | },
3017 | "vary": {
3018 | "version": "1.1.2",
3019 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
3020 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
3021 | "dev": true
3022 | },
3023 | "which": {
3024 | "version": "1.3.1",
3025 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
3026 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
3027 | "dev": true,
3028 | "requires": {
3029 | "isexe": "^2.0.0"
3030 | }
3031 | },
3032 | "which-module": {
3033 | "version": "2.0.0",
3034 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
3035 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
3036 | "dev": true
3037 | },
3038 | "wide-align": {
3039 | "version": "1.1.3",
3040 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
3041 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
3042 | "dev": true,
3043 | "requires": {
3044 | "string-width": "^1.0.2 || 2"
3045 | },
3046 | "dependencies": {
3047 | "ansi-regex": {
3048 | "version": "3.0.1",
3049 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
3050 | "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
3051 | "dev": true
3052 | },
3053 | "is-fullwidth-code-point": {
3054 | "version": "2.0.0",
3055 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
3056 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
3057 | "dev": true
3058 | },
3059 | "string-width": {
3060 | "version": "2.1.1",
3061 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
3062 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
3063 | "dev": true,
3064 | "requires": {
3065 | "is-fullwidth-code-point": "^2.0.0",
3066 | "strip-ansi": "^4.0.0"
3067 | }
3068 | },
3069 | "strip-ansi": {
3070 | "version": "4.0.0",
3071 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
3072 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
3073 | "dev": true,
3074 | "requires": {
3075 | "ansi-regex": "^3.0.0"
3076 | }
3077 | }
3078 | }
3079 | },
3080 | "word-wrap": {
3081 | "version": "1.2.3",
3082 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
3083 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
3084 | "dev": true
3085 | },
3086 | "wrap-ansi": {
3087 | "version": "5.1.0",
3088 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
3089 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
3090 | "dev": true,
3091 | "requires": {
3092 | "ansi-styles": "^3.2.0",
3093 | "string-width": "^3.0.0",
3094 | "strip-ansi": "^5.0.0"
3095 | },
3096 | "dependencies": {
3097 | "emoji-regex": {
3098 | "version": "7.0.3",
3099 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
3100 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
3101 | "dev": true
3102 | },
3103 | "is-fullwidth-code-point": {
3104 | "version": "2.0.0",
3105 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
3106 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
3107 | "dev": true
3108 | },
3109 | "string-width": {
3110 | "version": "3.1.0",
3111 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
3112 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
3113 | "dev": true,
3114 | "requires": {
3115 | "emoji-regex": "^7.0.1",
3116 | "is-fullwidth-code-point": "^2.0.0",
3117 | "strip-ansi": "^5.1.0"
3118 | }
3119 | }
3120 | }
3121 | },
3122 | "wrappy": {
3123 | "version": "1.0.2",
3124 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3125 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
3126 | "dev": true
3127 | },
3128 | "write": {
3129 | "version": "1.0.3",
3130 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
3131 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
3132 | "dev": true,
3133 | "requires": {
3134 | "mkdirp": "^0.5.1"
3135 | }
3136 | },
3137 | "y18n": {
3138 | "version": "4.0.1",
3139 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
3140 | "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
3141 | "dev": true
3142 | },
3143 | "yargs": {
3144 | "version": "13.3.2",
3145 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
3146 | "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
3147 | "dev": true,
3148 | "requires": {
3149 | "cliui": "^5.0.0",
3150 | "find-up": "^3.0.0",
3151 | "get-caller-file": "^2.0.1",
3152 | "require-directory": "^2.1.1",
3153 | "require-main-filename": "^2.0.0",
3154 | "set-blocking": "^2.0.0",
3155 | "string-width": "^3.0.0",
3156 | "which-module": "^2.0.0",
3157 | "y18n": "^4.0.0",
3158 | "yargs-parser": "^13.1.2"
3159 | },
3160 | "dependencies": {
3161 | "emoji-regex": {
3162 | "version": "7.0.3",
3163 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
3164 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
3165 | "dev": true
3166 | },
3167 | "is-fullwidth-code-point": {
3168 | "version": "2.0.0",
3169 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
3170 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
3171 | "dev": true
3172 | },
3173 | "string-width": {
3174 | "version": "3.1.0",
3175 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
3176 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
3177 | "dev": true,
3178 | "requires": {
3179 | "emoji-regex": "^7.0.1",
3180 | "is-fullwidth-code-point": "^2.0.0",
3181 | "strip-ansi": "^5.1.0"
3182 | }
3183 | }
3184 | }
3185 | },
3186 | "yargs-parser": {
3187 | "version": "13.1.2",
3188 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
3189 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
3190 | "dev": true,
3191 | "requires": {
3192 | "camelcase": "^5.0.0",
3193 | "decamelize": "^1.2.0"
3194 | }
3195 | },
3196 | "yargs-unparser": {
3197 | "version": "1.6.0",
3198 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
3199 | "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
3200 | "dev": true,
3201 | "requires": {
3202 | "flat": "^4.1.0",
3203 | "lodash": "^4.17.15",
3204 | "yargs": "^13.3.0"
3205 | }
3206 | },
3207 | "yn": {
3208 | "version": "3.1.1",
3209 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
3210 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
3211 | "dev": true
3212 | }
3213 | }
3214 | }
3215 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "express-safe-async",
3 | "version": "3.0.0",
4 | "description": "[@AsyncHandled] Elegant async error handling Decorator for async router function(controller) in express.",
5 | "main": "dist/index.js",
6 | "types": "dist/index.d.ts",
7 | "license": "MIT",
8 | "homepage": "https://github.com/techbless/express-safe-async",
9 | "repository": {
10 | "type": "git",
11 | "url": "https://github.com/techbless/express-safe-async"
12 | },
13 | "author": {
14 | "name": "Yunbin Chang",
15 | "email": "yunbin@hansung.ac.kr",
16 | "url": "https://techbless.github.io/about-me"
17 | },
18 | "keywords": [
19 | "Express",
20 | "express",
21 | "async",
22 | "middleware",
23 | "Router",
24 | "route",
25 | "controller",
26 | "error",
27 | "exception",
28 | "handle",
29 | "handler",
30 | "wrapper",
31 | "decorator"
32 | ],
33 | "scripts": {
34 | "lint": "eslint lib/**/*.ts",
35 | "lint:fix": "eslint --fix lib/**/*.ts",
36 | "test": "mocha -r ts-node/register ./tests/**/*.spec.ts",
37 | "build": "tsc"
38 | },
39 | "devDependencies": {
40 | "@types/chai": "^4.2.11",
41 | "@types/express": "^4.17.6",
42 | "@types/mocha": "^7.0.2",
43 | "@types/supertest": "^2.0.8",
44 | "@typescript-eslint/eslint-plugin": "^2.28.0",
45 | "@typescript-eslint/parser": "^2.28.0",
46 | "chai": "^4.2.0",
47 | "eslint": "^6.8.0",
48 | "eslint-config-airbnb-base": "^14.1.0",
49 | "eslint-config-prettier": "^6.10.1",
50 | "eslint-plugin-import": "^2.20.2",
51 | "eslint-plugin-prettier": "^3.1.3",
52 | "express": "^4.17.1",
53 | "mocha": "^7.1.1",
54 | "prettier": "^2.0.4",
55 | "supertest": "^4.0.2",
56 | "ts-node": "^8.8.2",
57 | "typescript": "^3.8.3"
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/tests/app.ts:
--------------------------------------------------------------------------------
1 | import * as express from 'express';
2 | import AsyncHandled from '../lib';
3 |
4 | class TestController {
5 | @AsyncHandled
6 | public async onlyReqAndRes(_req: express.Request, res: express.Response) {
7 | res.status(200).send('onlyReqAndRes');
8 | }
9 |
10 | @AsyncHandled
11 | public async onlyReqAndResWithError(_req: express.Request, _res: express.Response) {
12 | throw Error('onlyReqAndResWithError');
13 | }
14 |
15 | @AsyncHandled
16 | public async includingNext(_req: express.Request, res: express.Response, _next: express.NextFunction) {
17 | res.status(200).send('onlyReqAndRes');
18 | }
19 |
20 | @AsyncHandled
21 | public async includingNextWithError(_req: express.Request, _res: express.Response, _next: express.NextFunction) {
22 | throw Error('includingNextWithError');
23 | }
24 | }
25 |
26 | const app = express();
27 | const testController = new TestController();
28 |
29 | app.get('/req/res', testController.onlyReqAndRes);
30 | app.get('/req/res/error', testController.onlyReqAndResWithError);
31 | app.get('/req/res/next', testController.includingNext);
32 | app.get('/req/res/next/error', testController.includingNextWithError);
33 |
34 | export default app;
35 |
--------------------------------------------------------------------------------
/tests/async-handler.spec.ts:
--------------------------------------------------------------------------------
1 | import * as request from 'supertest';
2 | import { expect } from 'chai';
3 | import app from './app';
4 |
5 | /*
6 | Although the result contains errors saying "onlyReqAndResWithError", "includingNextWithError",
7 | Don't worry. This is intended internal error for error handling tests and not acutual error.
8 | */
9 |
10 | describe('express-safe-async', () => {
11 | let req: request.SuperTest;
12 |
13 | // mock http requset of app
14 | before(() => {
15 | req = request(app);
16 | });
17 |
18 | describe('@AsycHandler', () => {
19 | it('Route Handler having only req and res', async () => {
20 | const result = await req.get('/req/res').expect(200);
21 | expect(result.text).equals('onlyReqAndRes');
22 | });
23 |
24 | it('Route Handler having only req and res with an error', async () => {
25 | const result = await req.get('/req/res/error').expect(500);
26 | expect(result.text).contains('onlyReqAndResWithError');
27 | });
28 |
29 | it('Route Handler including next function', async () => {
30 | const result = await req.get('/req/res/next').expect(200);
31 | expect(result.text).equals('onlyReqAndRes');
32 | });
33 |
34 | it('Route Handler including next function with an error', async () => {
35 | const result = await req.get('/req/res/next/error').expect(500);
36 | expect(result.text).contains('includingNextWithError');
37 | });
38 | });
39 | });
40 |
--------------------------------------------------------------------------------
/tests/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "module": "commonjs",
5 | "strict": true,
6 | "esModuleInterop": false,
7 | "experimentalDecorators": true,
8 | "emitDecoratorMetadata": true,
9 | "forceConsistentCasingInFileNames": true
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2017",
4 | "module": "commonjs",
5 | "declaration": false,
6 | "outDir": "dist",
7 | "rootDirs": [
8 | "lib",
9 | "tests"
10 | ],
11 | "strict": true,
12 | "esModuleInterop": false,
13 | "experimentalDecorators": true,
14 | "emitDecoratorMetadata": true,
15 | "forceConsistentCasingInFileNames": true
16 | },
17 | "exclude": ["./tests/**/*.ts"]
18 | }
--------------------------------------------------------------------------------