├── .gitignore ├── assets └── beforeAndAfter.png ├── .prettierrc.json ├── src ├── hooks │ ├── index.ts │ ├── logEvent.ts │ ├── handleScheduledEvent.ts │ ├── handleUnexpectedError.ts │ └── parseEvent.ts └── index.ts ├── tsconfig.json ├── .eslintrc.js ├── LICENSE ├── package.json ├── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | dist 4 | .DS_Store 5 | *.log 6 | .vscode -------------------------------------------------------------------------------- /assets/beforeAndAfter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sweeetland/lambda-hooks/HEAD/assets/beforeAndAfter.png -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "semi": false, 4 | "singleQuote": true, 5 | "trailingComma": "es5", 6 | "arrowParens": "avoid", 7 | "printWidth": 100, 8 | "bracketSpacing": true 9 | } 10 | -------------------------------------------------------------------------------- /src/hooks/index.ts: -------------------------------------------------------------------------------- 1 | export { handleScheduledEvent } from './handleScheduledEvent' 2 | export { handleUnexpectedError } from './handleUnexpectedError' 3 | export { logEvent } from './logEvent' 4 | export { parseEvent } from './parseEvent' 5 | -------------------------------------------------------------------------------- /src/hooks/logEvent.ts: -------------------------------------------------------------------------------- 1 | import { Hook } from '../index' 2 | 3 | export const logEvent: Hook = async state => { 4 | const log = state.config.logger || console.log 5 | 6 | log(`received event: ${JSON.stringify(state.event, null, 4)}`) 7 | 8 | return state 9 | } 10 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "declaration": true, 4 | "lib": ["es6", "esnext.asynciterable"], 5 | "target": "es2017", 6 | "module": "commonjs", 7 | "noImplicitReturns": false, 8 | "strict": true, 9 | "outDir": "dist", 10 | "rootDir": "src" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/hooks/handleScheduledEvent.ts: -------------------------------------------------------------------------------- 1 | import { Hook } from '../index' 2 | 3 | export const handleScheduledEvent: Hook = async state => { 4 | const { event } = state 5 | 6 | if (event['detail-type'] === 'Scheduled Event') { 7 | state.exit = true 8 | state.response = { statusCode: 200 } 9 | } 10 | 11 | return state 12 | } 13 | -------------------------------------------------------------------------------- /src/hooks/handleUnexpectedError.ts: -------------------------------------------------------------------------------- 1 | import { Hook } from '../index' 2 | 3 | export const handleUnexpectedError: Hook = async state => { 4 | const { error } = state 5 | 6 | console.log('unexpected error: ', error) 7 | 8 | state.exit = true 9 | 10 | state.response = { 11 | statusCode: error?.statusCode ?? 500, 12 | body: JSON.stringify({ error: error?.message ?? error }), 13 | } 14 | 15 | return state 16 | } 17 | -------------------------------------------------------------------------------- /src/hooks/parseEvent.ts: -------------------------------------------------------------------------------- 1 | import { Hook } from '../index' 2 | 3 | export const parseEvent: Hook = async state => { 4 | const { event } = state 5 | const { 6 | body, 7 | pathParameters, 8 | queryStringParameters, 9 | multiValueQueryStringParameters, 10 | headers, 11 | } = event 12 | 13 | if (typeof body === 'string') { 14 | event.body = JSON.parse(body) 15 | } 16 | 17 | if (typeof headers === 'string') { 18 | event.headers = JSON.parse(headers) 19 | } 20 | 21 | if (!pathParameters) { 22 | event.pathParameters = {} 23 | } 24 | 25 | if (!queryStringParameters) { 26 | event.queryStringParameters = {} 27 | } 28 | 29 | if (!multiValueQueryStringParameters) { 30 | event.multiValueQueryStringParameters = {} 31 | } 32 | 33 | return state 34 | } 35 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parser: '@typescript-eslint/parser', // Specifies the ESLint parser 3 | extends: [ 4 | 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin 5 | 'prettier/@typescript-eslint', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier 6 | 'plugin:prettier/recommended' // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. 7 | ], 8 | parserOptions: { 9 | ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features 10 | sourceType: 'module' // Allows for the use of imports 11 | }, 12 | rules: { 13 | '@typescript-eslint/explicit-function-return-type': 'off', 14 | '@typescript-eslint/no-explicit-any': 'off', 15 | '@typescript-eslint/no-use-before-define': 'off', 16 | '@typescript-eslint/no-non-null-assertion': 'off' 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 James Sweetland 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 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lambda-hooks", 3 | "version": "0.2.1", 4 | "description": "Super simple lightweight hooks to avoid repeated logic in your lambda functions", 5 | "main": "dist", 6 | "types": "dist", 7 | "files": [ 8 | "dist" 9 | ], 10 | "scripts": { 11 | "test": "echo \"No test specified\"", 12 | "lint": "./node_modules/.bin/eslint \"src/**\"", 13 | "release": "np", 14 | "build": "rm -rf dist && tsc", 15 | "prepare": "npm run build" 16 | }, 17 | "husky": { 18 | "hooks": { 19 | "pre-commit": "tsc && lint-staged" 20 | } 21 | }, 22 | "lint-staged": { 23 | "src/**/*.ts": [ 24 | "npm run lint" 25 | ] 26 | }, 27 | "keywords": [ 28 | "lambda", 29 | "hooks", 30 | "middleware", 31 | "plugin", 32 | "serverless", 33 | "AWS", 34 | "middy", 35 | "serverless express", 36 | "cloud", 37 | "functions", 38 | "adapter", 39 | "pipeline", 40 | "api", 41 | "validation", 42 | "nodejs", 43 | "AWS Lambda", 44 | "API Gateway", 45 | "DynamoDB", 46 | "serverless library" 47 | ], 48 | "author": "James Sweetland", 49 | "license": "MIT", 50 | "repository": { 51 | "type": "git", 52 | "url": "git+https://github.com/sweeetland/lambda-hooks.git" 53 | }, 54 | "devDependencies": { 55 | "@types/node": "^13.13.4", 56 | "@typescript-eslint/eslint-plugin": "^2.30.0", 57 | "@typescript-eslint/parser": "^2.30.0", 58 | "eslint": "^6.8.0", 59 | "eslint-config-prettier": "^6.11.0", 60 | "eslint-plugin-prettier": "^3.1.3", 61 | "husky": "^4.2.5", 62 | "lint-staged": "^10.2.2", 63 | "prettier": "^2.0.5", 64 | "typescript": "^3.8.3" 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { handleScheduledEvent, handleUnexpectedError, logEvent, parseEvent } from './hooks' 2 | 3 | export interface Hooks { 4 | before?: Hook[] 5 | after?: Hook[] 6 | onError?: Hook[] 7 | } 8 | 9 | export type Config = { [k: string]: any } 10 | 11 | export type Response = any 12 | export type AWSEvent = any 13 | export type AWSContext = any 14 | 15 | export interface State { 16 | event: AWSEvent 17 | context: AWSContext 18 | exit: boolean 19 | response?: Response 20 | error?: any 21 | config: any 22 | } 23 | 24 | /** 25 | * @param state a state object that might be manipulated by this function 26 | * @param state.event event passed in from AWS 27 | * @param state.context context passed in from AWS 28 | * @param state.exit defaults to false, if set to true program will exit early after ivocation of this hook 29 | * @param state.response returned when state.exit is set to true 30 | * @param state.error exists only if there's an unhandled exception thrown inside a hook or the lambda handler 31 | * @returns Promise 32 | */ 33 | export type Hook = (state: State) => Promise 34 | 35 | export type UseHooks = (hooks: Hooks, config?: Config) => WithHooks 36 | export type WithHooks = (handler: any) => (event: any, context: AWSContext) => Promise 37 | /** 38 | * Using the provided hooks create an withHooks higher order function 39 | * @param hooks a config object of the hooks to apply to your lambda 40 | * @param hooks.before an array of hooks to run before the provided lambda 41 | * @param hooks.after an array of hooks to run after the provided lambda 42 | * @param hooks.onError an array of hooks to run only if there's an error during the execution 43 | * @returns WithHooks() function that wraps around your lambda 44 | */ 45 | export const useHooks: UseHooks = (hooks: Hooks, config: Config = {}): WithHooks => { 46 | if (!hooks.before) hooks.before = [] 47 | if (!hooks.after) hooks.after = [] 48 | if (!hooks.onError) hooks.onError = [] 49 | 50 | /** 51 | * Higher order function that takes a lambda function 52 | * as input and applies the hooks provided to useHooks() 53 | * @param handler lambda function 54 | * @returns supercharged lambda 🚀 55 | */ 56 | const withHooks = (handler: any) => async (event: AWSEvent, context: AWSContext) => { 57 | let state: State = { event, context, exit: false, config } 58 | 59 | try { 60 | for (const hook of hooks.before!) { 61 | state = await hook(state) 62 | 63 | if (state.exit) return state.response 64 | } 65 | 66 | state.response = await handler(state.event, state.context) 67 | if (hooks?.after?.length === 0) return state.response 68 | 69 | for (const hook of hooks.after!) { 70 | state = await hook(state) 71 | 72 | if (state.exit) return state.response 73 | } 74 | } catch (error) { 75 | state.error = error 76 | 77 | for (const hook of hooks.onError!) { 78 | state = await hook(state) 79 | 80 | if (state.exit) return state.response 81 | } 82 | } 83 | 84 | return state.response 85 | } 86 | 87 | return withHooks 88 | } 89 | 90 | export default useHooks 91 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # lambda-hooks 2 | 3 | **Super lightweight module to _hook_ into the execution of your Node.js lambda functions** 4 | 5 | Lambda Hooks help avoid repeated logic in your lambda functions. Use some of the provided hooks or easily create your own. They are just functions that can be executed before, after or when an error occurs. 6 | 7 | ## Principles 8 | 9 | - Zero dependencies 10 | - Fast & simple to use 11 | - First class support for TypeScript & ES7+ JavaScript 12 | 13 | ## Motivation 14 | 15 | When working with AWS lambda functions, typically, there's some frequent actions that you need to do on every invocation. Things like logging the event, parsing the event body, schema validation, handling unexpected errors etc. It's easy to end up with a lot of _repeated yet necessary_ code in your lambda functions. 16 | 17 | I wanted a **simple**, **easy to use** solution, with **minimal overhead** and good **TypeScript** support. Where I could define these actions once to share across all my related lambdas, keeping my lambdas for business logic only. 18 | 19 | I couldn't find a solution that I was happy with, hence the reason for this light package. It is early days yet, but it's being used in production, and I hope others find this helpful too. 20 | 21 | Here's a before and after screenshot... 22 | 23 | ![a before and after screenshot of code without hooks vs withHooks](https://raw.githubusercontent.com/sweeetland/lambda-hooks/master/assets/beforeAndAfter.png) 24 | 25 | ## Example 26 | 27 | ```javascript 28 | const { useHooks, logEvent, parseEvent, handleUnexpectedError } = require('lambda-hooks') 29 | 30 | // call useHooks with hooks to decorate your lambda with 31 | const withHooks = useHooks({ 32 | before: [logEvent, parseEvent], 33 | after: [], 34 | onError: [handleUnexpectedError], 35 | }) 36 | 37 | const handler = async (event, context) => { 38 | // your lambda function... 39 | } 40 | 41 | // call withHooks passing in your lambda function 42 | exports.handler = withHooks(handler) 43 | ``` 44 | 45 | ## Install 46 | 47 | Using npm: 48 | 49 | ```bash 50 | npm install lambda-hooks 51 | ``` 52 | 53 | or with yarn: 54 | 55 | ```bash 56 | yarn add lambda-hooks 57 | ``` 58 | 59 | _TypeScript types included_ 🧰 60 | 61 | ## Usage 62 | 63 | 1 - Require the package 64 | 65 | ```javascript 66 | const { useHooks } = require('lambda-hooks') 67 | ``` 68 | 69 | 2 - Call useHooks with the hooks that you want to use. There's 3 types of hooks that are executed either before the lambda execution, after or if an error occurs. 70 | 71 | Note that the order of the hooks matters, they are executed one by one starting from the first hook in the before array, then your lambda function is invoked, then through all hooks in the after array. If at any point an error occurs, execution is directed towards the onError hooks array. 72 | 73 | ```javascript 74 | const withHooks = useHooks({ 75 | before: [logEvent, parseEvent], 76 | after: [], 77 | onError: [handleUnexpectedError], 78 | }) 79 | ``` 80 | 81 | 3 - useHooks returns a function withHooks. Pass your **async** lambda into the withHooks function to decorate your lambda and then export as normal. 82 | 83 | ```javascript 84 | const handler = async (event, context) => {...} 85 | 86 | exports.handler = withHooks(handler) 87 | ``` 88 | 89 | ### Flow of Execution 90 | 91 | This is a visual of the order in which the hooks are executed. One by one from the before array, to the lambda and then to the after array, only reaching the onError array _if_ there's an error. 92 | 93 | ```javascript 94 | const withHooks = useHooks({ 95 | // start --> 96 | before: [firstHook, secondHook], 97 | 98 | // lambda function is invoked now... 99 | 100 | after: [thirdHook], 101 | // Finish -->| 102 | 103 | onError: [fourthHook], 104 | // Finish if errors -->| 105 | }) 106 | ``` 107 | 108 | ## What the hook? 👀 109 | 110 | I'm glad you asked, let's start with a simple example of a hook that logs the aws lambda event to the console 111 | 112 | ```javascript 113 | export const logEvent = async state => { 114 | console.log(`received event: ${state.event}`) 115 | 116 | return state 117 | } 118 | ``` 119 | 120 | Yes it really is that easy... A Hook is just a function that **receives and returns** the state object that looks like this: 121 | 122 | ```typescript 123 | interface State { 124 | event: Event // AWS lambda event 125 | context: Context // AWS lambda context 126 | exit: boolean // Set to true to quit execution early 127 | response?: Response // This will contain the response from your lambda after it has been executed. Also this will be returned when exit is true 128 | error?: Error // If there's an unhandled exception, it will be attached here & your onError handlers will be invoked 129 | config: any // Config object to provide extra things to your hooks at the point of execution e.g. you might want to pass a logger into logEvent 130 | } 131 | ``` 132 | 133 | You can write hooks to manipulate the event before it reaches your lambda function. For example, when writing lambdas that sit behind an API often you need to parse the event body. Let's do exactly that: 134 | 135 | ```javascript 136 | export const parseEventBody = async state => { 137 | const { event } = state 138 | 139 | if (typeof event.body === 'string') { 140 | state.event.body = JSON.parse(event.body) 141 | } 142 | 143 | return state 144 | } 145 | ``` 146 | 147 | Ok you get the gist, now it's time for a more complex example. Again, when creating lambdas that sit behind a rest API, it's a good idea to validate the event body (assuming this hasn't already been done by API gateway). Like so: 148 | 149 | ```javascript 150 | export const validateEventBody = async state => { 151 | const { schema } = state.config 152 | 153 | if (!schema) { 154 | throw Error('missing required schema for validation') 155 | } 156 | 157 | try { 158 | const { event } = state 159 | 160 | await schema.validate(event.body, { strict: true }) 161 | 162 | console.log(`yup event.body passed validation: ${event.body}`) 163 | } catch (error) { 164 | console.log(`yup error validating event.body: ${error}`) 165 | 166 | state.exit = true 167 | state.response = { statusCode: 400, body: JSON.stringify({ error: error.message }) } 168 | } 169 | 170 | return state 171 | } 172 | ``` 173 | 174 | Here we are utilising a library called yup for validation. Usually validation libraries need a schema to validate against, but how do we have access to the schema from inside the hook at the point of execution? 175 | 176 | Well the useHooks function accepts a optional second argument which is a configuration object. In here you can pass in anything you might need from within your hooks. In this hook, we are expecting a schema to be attached to the config object so we now have access to the schema from inside the Hook, at the point of execution. Another example could be when using the logEvent hook, you might want to pass in a logger rather than using console.log. 177 | 178 | But for this to work though, we need to remember to pass in the schema to the useHooks. Like so: 179 | 180 | ```javascript 181 | const withHooks = useHooks( 182 | { 183 | before: [logEvent, parseEvent, validateEventBody], 184 | }, 185 | { schema } 186 | ) 187 | ``` 188 | 189 | As you can see, when creating hooks like this, the possibilities are endless. You just have to use your imagination... 🧠 190 | 191 | Woah calm down, actually there are a few rules ☝️ 192 | 193 | ### Rules of Hooks 194 | 195 | 1. A hook is a function that must recieve and return the state object 196 | 2. Call useHooks with the hooks object and a config object provide additional configuration to those hooks 197 | 3. Your lambda function must be async 198 | 199 | ## Recommendations 200 | 201 | > _"with great power, comes great responsibility"_ - someone, somewhere 202 | 203 | Here's a few recommendations that might make your life easier. 204 | 205 | - **Export the withHooks function to share across related lambdas.** For example, all your API lambdas might utilise the same hooks, but, your DynamoDB stream lambdas might need to utilise a different set of hooks. Rather than repeating the useHooks call for each lambda, call once and share around the related lambdas... 206 | 207 | ```javascript 208 | // file: src/hooks/api.js 209 | export const withApiHooks = (lambda, { schema }) => 210 | useHooks({ 211 | before: [ 212 | handleScheduledEvent, 213 | logEvent, 214 | parseEvent, 215 | validateEventBody, 216 | ], 217 | onError: [handleUnexpectedError], 218 | }, { schema })(lambda)) 219 | 220 | 221 | // file: src/api/lambda.js 222 | const { withApiHooks } = require('../hooks/api') 223 | 224 | ... 225 | 226 | const main = async event => {...} 227 | 228 | export const handler = withApiHooks(main, { schema }) 229 | ``` 230 | 231 | - **Write your own hooks.** It's really easy to do. If you're migrating an existing project over, you already have the logic. So all you would need to do is wrap that logic in a function which recieves and returns the state object. 232 | 233 | Feel free to share any hooks you make by submitting a PR, and here's a boilerplate hook (that does absolutely nothing) to get you started: 234 | 235 | ```javascript 236 | export const myNewHook = async state => { 237 | const { event, context, config } = state 238 | 239 | // your logic here.... 240 | 241 | return state 242 | } 243 | ``` 244 | 245 | - **Use TypeScript.** Speaking of which... 246 | 247 | ## TypeScript 🙌 248 | 249 | ```typescript 250 | import { APIGatewayProxyEvent } from 'better-lambda-types' 251 | import { useHooks, 252 | handleScheduledEvent, 253 | handleUnexpectedError, 254 | logEvent, 255 | parseEvent, 256 | } from 'lambda-hooks' 257 | 258 | ... 259 | 260 | const main = async (event: APIGatewayProxyEvent, context: Context) => {...} 261 | 262 | export const handler = useHooks({ 263 | before: [ 264 | handleScheduledEvent, 265 | logEvent, 266 | parseEvent, 267 | ], 268 | onError: [handleUnexpectedError], 269 | })(main) 270 | ``` 271 | 272 | Here's some types for more clarity on the explanations above. Note, you don't need to copy & paste these, this is just for comprehension, any types you need can be imported from the package. 273 | 274 | ```typescript 275 | interface Hooks { 276 | before?: HookHandler[] 277 | after?: HookHandler[] 278 | onError?: HookHandler[] 279 | } 280 | 281 | export type Hook = (state: State) => Promise 282 | 283 | type UseHooks = (hooks: Hooks, config?: Obj) => WithHooks 284 | 285 | type WithHooks = (lambda: any) => (event: any, context: Context) => Promise 286 | ``` 287 | 288 | Now let's get to an example of a hook written in TypeScript. Often when using lambdas in production you'll want to keep some of them warm to avoid cold starts, but if you're doing this, remember to check and quit immediately otherwise you're wasting 💰. That's what this hook does... 289 | 290 | ```typescript 291 | import { HookCreator } from 'lambda-hooks' 292 | 293 | export const handleScheduledEvent: Hook = async state => { 294 | const { event } = state 295 | 296 | if (event['detail-type'] === 'Scheduled Event') { 297 | state.exit = true 298 | state.response = { statusCode: 200 } 299 | } 300 | 301 | return state 302 | } 303 | ``` 304 | 305 | ## Related 306 | 307 | - [**middy**](https://github.com/middyjs/middy) - A special mention needs to go out to the folks at Middy. This project has been heavily inspired by them and solves the same problem. 308 | - [**lambda-api**](https://github.com/jeremydaly/lambda-api) - Another really cool framework that brings the familiar syntax of frameworks like express & fastify but specifically designed for AWS lambda. 309 | - [**production-ready-serverless**](https://github.com/sweeetland/production-ready-serverless) - a boilerplate starter project complete with Serverless, TypeScript, lambda-hooks & more... 310 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.8.3" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 9 | dependencies: 10 | "@babel/highlight" "^7.8.3" 11 | 12 | "@babel/helper-validator-identifier@^7.9.0": 13 | version "7.9.5" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" 15 | integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== 16 | 17 | "@babel/highlight@^7.8.3": 18 | version "7.9.0" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" 20 | integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.9.0" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@babel/runtime@^7.9.2": 27 | version "7.9.6" 28 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" 29 | integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== 30 | dependencies: 31 | regenerator-runtime "^0.13.4" 32 | 33 | "@samverschueren/stream-to-observable@^0.3.0": 34 | version "0.3.0" 35 | resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" 36 | integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== 37 | dependencies: 38 | any-observable "^0.3.0" 39 | 40 | "@types/color-name@^1.1.1": 41 | version "1.1.1" 42 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 43 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 44 | 45 | "@types/eslint-visitor-keys@^1.0.0": 46 | version "1.0.0" 47 | resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" 48 | integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== 49 | 50 | "@types/json-schema@^7.0.3": 51 | version "7.0.4" 52 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" 53 | integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== 54 | 55 | "@types/node@^13.13.4": 56 | version "13.13.4" 57 | resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.4.tgz#1581d6c16e3d4803eb079c87d4ac893ee7501c2c" 58 | integrity sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA== 59 | 60 | "@types/parse-json@^4.0.0": 61 | version "4.0.0" 62 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 63 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 64 | 65 | "@typescript-eslint/eslint-plugin@^2.30.0": 66 | version "2.30.0" 67 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.30.0.tgz#312a37e80542a764d96e8ad88a105316cdcd7b05" 68 | integrity sha512-PGejii0qIZ9Q40RB2jIHyUpRWs1GJuHP1pkoCiaeicfwO9z7Fx03NQzupuyzAmv+q9/gFNHu7lo1ByMXe8PNyg== 69 | dependencies: 70 | "@typescript-eslint/experimental-utils" "2.30.0" 71 | functional-red-black-tree "^1.0.1" 72 | regexpp "^3.0.0" 73 | tsutils "^3.17.1" 74 | 75 | "@typescript-eslint/experimental-utils@2.30.0": 76 | version "2.30.0" 77 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.30.0.tgz#9845e868c01f3aed66472c561d4b6bac44809dd0" 78 | integrity sha512-L3/tS9t+hAHksy8xuorhOzhdefN0ERPDWmR9CclsIGOUqGKy6tqc/P+SoXeJRye5gazkuPO0cK9MQRnolykzkA== 79 | dependencies: 80 | "@types/json-schema" "^7.0.3" 81 | "@typescript-eslint/typescript-estree" "2.30.0" 82 | eslint-scope "^5.0.0" 83 | eslint-utils "^2.0.0" 84 | 85 | "@typescript-eslint/parser@^2.30.0": 86 | version "2.30.0" 87 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.30.0.tgz#7681c305a6f4341ae2579f5e3a75846c29eee9ce" 88 | integrity sha512-9kDOxzp0K85UnpmPJqUzdWaCNorYYgk1yZmf4IKzpeTlSAclnFsrLjfwD9mQExctLoLoGAUXq1co+fbr+3HeFw== 89 | dependencies: 90 | "@types/eslint-visitor-keys" "^1.0.0" 91 | "@typescript-eslint/experimental-utils" "2.30.0" 92 | "@typescript-eslint/typescript-estree" "2.30.0" 93 | eslint-visitor-keys "^1.1.0" 94 | 95 | "@typescript-eslint/typescript-estree@2.30.0": 96 | version "2.30.0" 97 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.30.0.tgz#1b8e848b55144270255ffbfe4c63291f8f766615" 98 | integrity sha512-nI5WOechrA0qAhnr+DzqwmqHsx7Ulr/+0H7bWCcClDhhWkSyZR5BmTvnBEyONwJCTWHfc5PAQExX24VD26IAVw== 99 | dependencies: 100 | debug "^4.1.1" 101 | eslint-visitor-keys "^1.1.0" 102 | glob "^7.1.6" 103 | is-glob "^4.0.1" 104 | lodash "^4.17.15" 105 | semver "^6.3.0" 106 | tsutils "^3.17.1" 107 | 108 | acorn-jsx@^5.2.0: 109 | version "5.2.0" 110 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 111 | integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== 112 | 113 | acorn@^7.1.1: 114 | version "7.1.1" 115 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" 116 | integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== 117 | 118 | aggregate-error@^3.0.0: 119 | version "3.0.1" 120 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" 121 | integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== 122 | dependencies: 123 | clean-stack "^2.0.0" 124 | indent-string "^4.0.0" 125 | 126 | ajv@^6.10.0, ajv@^6.10.2: 127 | version "6.12.2" 128 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" 129 | integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== 130 | dependencies: 131 | fast-deep-equal "^3.1.1" 132 | fast-json-stable-stringify "^2.0.0" 133 | json-schema-traverse "^0.4.1" 134 | uri-js "^4.2.2" 135 | 136 | ansi-colors@^3.2.1: 137 | version "3.2.4" 138 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" 139 | integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== 140 | 141 | ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: 142 | version "4.3.1" 143 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 144 | integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== 145 | dependencies: 146 | type-fest "^0.11.0" 147 | 148 | ansi-regex@^4.1.0: 149 | version "4.1.0" 150 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 151 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 152 | 153 | ansi-regex@^5.0.0: 154 | version "5.0.0" 155 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 156 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 157 | 158 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 159 | version "3.2.1" 160 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 161 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 162 | dependencies: 163 | color-convert "^1.9.0" 164 | 165 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 166 | version "4.2.1" 167 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 168 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 169 | dependencies: 170 | "@types/color-name" "^1.1.1" 171 | color-convert "^2.0.1" 172 | 173 | any-observable@^0.3.0: 174 | version "0.3.0" 175 | resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" 176 | integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== 177 | 178 | argparse@^1.0.7: 179 | version "1.0.10" 180 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 181 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 182 | dependencies: 183 | sprintf-js "~1.0.2" 184 | 185 | astral-regex@^1.0.0: 186 | version "1.0.0" 187 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 188 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 189 | 190 | astral-regex@^2.0.0: 191 | version "2.0.0" 192 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 193 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 194 | 195 | balanced-match@^1.0.0: 196 | version "1.0.0" 197 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 198 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 199 | 200 | brace-expansion@^1.1.7: 201 | version "1.1.11" 202 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 203 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 204 | dependencies: 205 | balanced-match "^1.0.0" 206 | concat-map "0.0.1" 207 | 208 | braces@^3.0.1: 209 | version "3.0.2" 210 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 211 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 212 | dependencies: 213 | fill-range "^7.0.1" 214 | 215 | callsites@^3.0.0: 216 | version "3.1.0" 217 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 218 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 219 | 220 | chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: 221 | version "2.4.2" 222 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 223 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 224 | dependencies: 225 | ansi-styles "^3.2.1" 226 | escape-string-regexp "^1.0.5" 227 | supports-color "^5.3.0" 228 | 229 | chalk@^3.0.0: 230 | version "3.0.0" 231 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 232 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 233 | dependencies: 234 | ansi-styles "^4.1.0" 235 | supports-color "^7.1.0" 236 | 237 | chalk@^4.0.0: 238 | version "4.0.0" 239 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" 240 | integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== 241 | dependencies: 242 | ansi-styles "^4.1.0" 243 | supports-color "^7.1.0" 244 | 245 | chardet@^0.7.0: 246 | version "0.7.0" 247 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 248 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 249 | 250 | ci-info@^2.0.0: 251 | version "2.0.0" 252 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 253 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 254 | 255 | clean-stack@^2.0.0: 256 | version "2.2.0" 257 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 258 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 259 | 260 | cli-cursor@^3.1.0: 261 | version "3.1.0" 262 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 263 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 264 | dependencies: 265 | restore-cursor "^3.1.0" 266 | 267 | cli-truncate@^2.1.0: 268 | version "2.1.0" 269 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 270 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 271 | dependencies: 272 | slice-ansi "^3.0.0" 273 | string-width "^4.2.0" 274 | 275 | cli-width@^2.0.0: 276 | version "2.2.1" 277 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" 278 | integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== 279 | 280 | clone@^1.0.2: 281 | version "1.0.4" 282 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 283 | integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= 284 | 285 | color-convert@^1.9.0: 286 | version "1.9.3" 287 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 288 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 289 | dependencies: 290 | color-name "1.1.3" 291 | 292 | color-convert@^2.0.1: 293 | version "2.0.1" 294 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 295 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 296 | dependencies: 297 | color-name "~1.1.4" 298 | 299 | color-name@1.1.3: 300 | version "1.1.3" 301 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 302 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 303 | 304 | color-name@~1.1.4: 305 | version "1.1.4" 306 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 307 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 308 | 309 | commander@^5.0.0: 310 | version "5.1.0" 311 | resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" 312 | integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== 313 | 314 | compare-versions@^3.6.0: 315 | version "3.6.0" 316 | resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" 317 | integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== 318 | 319 | concat-map@0.0.1: 320 | version "0.0.1" 321 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 322 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 323 | 324 | cosmiconfig@^6.0.0: 325 | version "6.0.0" 326 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" 327 | integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== 328 | dependencies: 329 | "@types/parse-json" "^4.0.0" 330 | import-fresh "^3.1.0" 331 | parse-json "^5.0.0" 332 | path-type "^4.0.0" 333 | yaml "^1.7.2" 334 | 335 | cross-spawn@^6.0.5: 336 | version "6.0.5" 337 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 338 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 339 | dependencies: 340 | nice-try "^1.0.4" 341 | path-key "^2.0.1" 342 | semver "^5.5.0" 343 | shebang-command "^1.2.0" 344 | which "^1.2.9" 345 | 346 | cross-spawn@^7.0.0: 347 | version "7.0.2" 348 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" 349 | integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== 350 | dependencies: 351 | path-key "^3.1.0" 352 | shebang-command "^2.0.0" 353 | which "^2.0.1" 354 | 355 | debug@^4.0.1, debug@^4.1.1: 356 | version "4.1.1" 357 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 358 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 359 | dependencies: 360 | ms "^2.1.1" 361 | 362 | dedent@^0.7.0: 363 | version "0.7.0" 364 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 365 | integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= 366 | 367 | deep-is@~0.1.3: 368 | version "0.1.3" 369 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 370 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 371 | 372 | defaults@^1.0.3: 373 | version "1.0.3" 374 | resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" 375 | integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= 376 | dependencies: 377 | clone "^1.0.2" 378 | 379 | doctrine@^3.0.0: 380 | version "3.0.0" 381 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 382 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 383 | dependencies: 384 | esutils "^2.0.2" 385 | 386 | elegant-spinner@^2.0.0: 387 | version "2.0.0" 388 | resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-2.0.0.tgz#f236378985ecd16da75488d166be4b688fd5af94" 389 | integrity sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA== 390 | 391 | emoji-regex@^7.0.1: 392 | version "7.0.3" 393 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 394 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 395 | 396 | emoji-regex@^8.0.0: 397 | version "8.0.0" 398 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 399 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 400 | 401 | end-of-stream@^1.1.0: 402 | version "1.4.4" 403 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 404 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 405 | dependencies: 406 | once "^1.4.0" 407 | 408 | enquirer@^2.3.4: 409 | version "2.3.5" 410 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" 411 | integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== 412 | dependencies: 413 | ansi-colors "^3.2.1" 414 | 415 | error-ex@^1.3.1: 416 | version "1.3.2" 417 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 418 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 419 | dependencies: 420 | is-arrayish "^0.2.1" 421 | 422 | escape-string-regexp@^1.0.5: 423 | version "1.0.5" 424 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 425 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 426 | 427 | eslint-config-prettier@^6.11.0: 428 | version "6.11.0" 429 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" 430 | integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== 431 | dependencies: 432 | get-stdin "^6.0.0" 433 | 434 | eslint-plugin-prettier@^3.1.3: 435 | version "3.1.3" 436 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz#ae116a0fc0e598fdae48743a4430903de5b4e6ca" 437 | integrity sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ== 438 | dependencies: 439 | prettier-linter-helpers "^1.0.0" 440 | 441 | eslint-scope@^5.0.0: 442 | version "5.0.0" 443 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 444 | integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== 445 | dependencies: 446 | esrecurse "^4.1.0" 447 | estraverse "^4.1.1" 448 | 449 | eslint-utils@^1.4.3: 450 | version "1.4.3" 451 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" 452 | integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== 453 | dependencies: 454 | eslint-visitor-keys "^1.1.0" 455 | 456 | eslint-utils@^2.0.0: 457 | version "2.0.0" 458 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" 459 | integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== 460 | dependencies: 461 | eslint-visitor-keys "^1.1.0" 462 | 463 | eslint-visitor-keys@^1.1.0: 464 | version "1.1.0" 465 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 466 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== 467 | 468 | eslint@^6.8.0: 469 | version "6.8.0" 470 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" 471 | integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== 472 | dependencies: 473 | "@babel/code-frame" "^7.0.0" 474 | ajv "^6.10.0" 475 | chalk "^2.1.0" 476 | cross-spawn "^6.0.5" 477 | debug "^4.0.1" 478 | doctrine "^3.0.0" 479 | eslint-scope "^5.0.0" 480 | eslint-utils "^1.4.3" 481 | eslint-visitor-keys "^1.1.0" 482 | espree "^6.1.2" 483 | esquery "^1.0.1" 484 | esutils "^2.0.2" 485 | file-entry-cache "^5.0.1" 486 | functional-red-black-tree "^1.0.1" 487 | glob-parent "^5.0.0" 488 | globals "^12.1.0" 489 | ignore "^4.0.6" 490 | import-fresh "^3.0.0" 491 | imurmurhash "^0.1.4" 492 | inquirer "^7.0.0" 493 | is-glob "^4.0.0" 494 | js-yaml "^3.13.1" 495 | json-stable-stringify-without-jsonify "^1.0.1" 496 | levn "^0.3.0" 497 | lodash "^4.17.14" 498 | minimatch "^3.0.4" 499 | mkdirp "^0.5.1" 500 | natural-compare "^1.4.0" 501 | optionator "^0.8.3" 502 | progress "^2.0.0" 503 | regexpp "^2.0.1" 504 | semver "^6.1.2" 505 | strip-ansi "^5.2.0" 506 | strip-json-comments "^3.0.1" 507 | table "^5.2.3" 508 | text-table "^0.2.0" 509 | v8-compile-cache "^2.0.3" 510 | 511 | espree@^6.1.2: 512 | version "6.2.1" 513 | resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" 514 | integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== 515 | dependencies: 516 | acorn "^7.1.1" 517 | acorn-jsx "^5.2.0" 518 | eslint-visitor-keys "^1.1.0" 519 | 520 | esprima@^4.0.0: 521 | version "4.0.1" 522 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 523 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 524 | 525 | esquery@^1.0.1: 526 | version "1.3.1" 527 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" 528 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== 529 | dependencies: 530 | estraverse "^5.1.0" 531 | 532 | esrecurse@^4.1.0: 533 | version "4.2.1" 534 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 535 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 536 | dependencies: 537 | estraverse "^4.1.0" 538 | 539 | estraverse@^4.1.0, estraverse@^4.1.1: 540 | version "4.3.0" 541 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 542 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 543 | 544 | estraverse@^5.1.0: 545 | version "5.1.0" 546 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" 547 | integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== 548 | 549 | esutils@^2.0.2: 550 | version "2.0.3" 551 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 552 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 553 | 554 | execa@^4.0.0: 555 | version "4.0.0" 556 | resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.0.tgz#7f37d6ec17f09e6b8fc53288611695b6d12b9daf" 557 | integrity sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA== 558 | dependencies: 559 | cross-spawn "^7.0.0" 560 | get-stream "^5.0.0" 561 | human-signals "^1.1.1" 562 | is-stream "^2.0.0" 563 | merge-stream "^2.0.0" 564 | npm-run-path "^4.0.0" 565 | onetime "^5.1.0" 566 | signal-exit "^3.0.2" 567 | strip-final-newline "^2.0.0" 568 | 569 | external-editor@^3.0.3: 570 | version "3.1.0" 571 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 572 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 573 | dependencies: 574 | chardet "^0.7.0" 575 | iconv-lite "^0.4.24" 576 | tmp "^0.0.33" 577 | 578 | fast-deep-equal@^3.1.1: 579 | version "3.1.1" 580 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 581 | integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 582 | 583 | fast-diff@^1.1.2: 584 | version "1.2.0" 585 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 586 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 587 | 588 | fast-json-stable-stringify@^2.0.0: 589 | version "2.1.0" 590 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 591 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 592 | 593 | fast-levenshtein@~2.0.6: 594 | version "2.0.6" 595 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 596 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 597 | 598 | figures@^3.0.0, figures@^3.2.0: 599 | version "3.2.0" 600 | resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 601 | integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 602 | dependencies: 603 | escape-string-regexp "^1.0.5" 604 | 605 | file-entry-cache@^5.0.1: 606 | version "5.0.1" 607 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 608 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 609 | dependencies: 610 | flat-cache "^2.0.1" 611 | 612 | fill-range@^7.0.1: 613 | version "7.0.1" 614 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 615 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 616 | dependencies: 617 | to-regex-range "^5.0.1" 618 | 619 | find-up@^4.0.0: 620 | version "4.1.0" 621 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 622 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 623 | dependencies: 624 | locate-path "^5.0.0" 625 | path-exists "^4.0.0" 626 | 627 | find-versions@^3.2.0: 628 | version "3.2.0" 629 | resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" 630 | integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== 631 | dependencies: 632 | semver-regex "^2.0.0" 633 | 634 | flat-cache@^2.0.1: 635 | version "2.0.1" 636 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 637 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 638 | dependencies: 639 | flatted "^2.0.0" 640 | rimraf "2.6.3" 641 | write "1.0.3" 642 | 643 | flatted@^2.0.0: 644 | version "2.0.2" 645 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" 646 | integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== 647 | 648 | fs.realpath@^1.0.0: 649 | version "1.0.0" 650 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 651 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 652 | 653 | functional-red-black-tree@^1.0.1: 654 | version "1.0.1" 655 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 656 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 657 | 658 | get-own-enumerable-property-symbols@^3.0.0: 659 | version "3.0.2" 660 | resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 661 | integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 662 | 663 | get-stdin@^6.0.0: 664 | version "6.0.0" 665 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" 666 | integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== 667 | 668 | get-stream@^5.0.0: 669 | version "5.1.0" 670 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" 671 | integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== 672 | dependencies: 673 | pump "^3.0.0" 674 | 675 | glob-parent@^5.0.0: 676 | version "5.1.1" 677 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 678 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 679 | dependencies: 680 | is-glob "^4.0.1" 681 | 682 | glob@^7.1.3, glob@^7.1.6: 683 | version "7.1.6" 684 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 685 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 686 | dependencies: 687 | fs.realpath "^1.0.0" 688 | inflight "^1.0.4" 689 | inherits "2" 690 | minimatch "^3.0.4" 691 | once "^1.3.0" 692 | path-is-absolute "^1.0.0" 693 | 694 | globals@^12.1.0: 695 | version "12.4.0" 696 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 697 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 698 | dependencies: 699 | type-fest "^0.8.1" 700 | 701 | has-flag@^3.0.0: 702 | version "3.0.0" 703 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 704 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 705 | 706 | has-flag@^4.0.0: 707 | version "4.0.0" 708 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 709 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 710 | 711 | human-signals@^1.1.1: 712 | version "1.1.1" 713 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" 714 | integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== 715 | 716 | husky@^4.2.5: 717 | version "4.2.5" 718 | resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" 719 | integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== 720 | dependencies: 721 | chalk "^4.0.0" 722 | ci-info "^2.0.0" 723 | compare-versions "^3.6.0" 724 | cosmiconfig "^6.0.0" 725 | find-versions "^3.2.0" 726 | opencollective-postinstall "^2.0.2" 727 | pkg-dir "^4.2.0" 728 | please-upgrade-node "^3.2.0" 729 | slash "^3.0.0" 730 | which-pm-runs "^1.0.0" 731 | 732 | iconv-lite@^0.4.24: 733 | version "0.4.24" 734 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 735 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 736 | dependencies: 737 | safer-buffer ">= 2.1.2 < 3" 738 | 739 | ignore@^4.0.6: 740 | version "4.0.6" 741 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 742 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 743 | 744 | import-fresh@^3.0.0, import-fresh@^3.1.0: 745 | version "3.2.1" 746 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 747 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 748 | dependencies: 749 | parent-module "^1.0.0" 750 | resolve-from "^4.0.0" 751 | 752 | imurmurhash@^0.1.4: 753 | version "0.1.4" 754 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 755 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 756 | 757 | indent-string@^4.0.0: 758 | version "4.0.0" 759 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 760 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 761 | 762 | inflight@^1.0.4: 763 | version "1.0.6" 764 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 765 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 766 | dependencies: 767 | once "^1.3.0" 768 | wrappy "1" 769 | 770 | inherits@2: 771 | version "2.0.4" 772 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 773 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 774 | 775 | inquirer@^7.0.0: 776 | version "7.1.0" 777 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" 778 | integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== 779 | dependencies: 780 | ansi-escapes "^4.2.1" 781 | chalk "^3.0.0" 782 | cli-cursor "^3.1.0" 783 | cli-width "^2.0.0" 784 | external-editor "^3.0.3" 785 | figures "^3.0.0" 786 | lodash "^4.17.15" 787 | mute-stream "0.0.8" 788 | run-async "^2.4.0" 789 | rxjs "^6.5.3" 790 | string-width "^4.1.0" 791 | strip-ansi "^6.0.0" 792 | through "^2.3.6" 793 | 794 | is-arrayish@^0.2.1: 795 | version "0.2.1" 796 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 797 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 798 | 799 | is-extglob@^2.1.1: 800 | version "2.1.1" 801 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 802 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 803 | 804 | is-fullwidth-code-point@^2.0.0: 805 | version "2.0.0" 806 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 807 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 808 | 809 | is-fullwidth-code-point@^3.0.0: 810 | version "3.0.0" 811 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 812 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 813 | 814 | is-glob@^4.0.0, is-glob@^4.0.1: 815 | version "4.0.1" 816 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 817 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 818 | dependencies: 819 | is-extglob "^2.1.1" 820 | 821 | is-number@^7.0.0: 822 | version "7.0.0" 823 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 824 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 825 | 826 | is-obj@^1.0.1: 827 | version "1.0.1" 828 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 829 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 830 | 831 | is-regexp@^1.0.0: 832 | version "1.0.0" 833 | resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 834 | integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 835 | 836 | is-stream@^2.0.0: 837 | version "2.0.0" 838 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 839 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 840 | 841 | isexe@^2.0.0: 842 | version "2.0.0" 843 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 844 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 845 | 846 | js-tokens@^4.0.0: 847 | version "4.0.0" 848 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 849 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 850 | 851 | js-yaml@^3.13.1: 852 | version "3.13.1" 853 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 854 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 855 | dependencies: 856 | argparse "^1.0.7" 857 | esprima "^4.0.0" 858 | 859 | json-parse-better-errors@^1.0.1: 860 | version "1.0.2" 861 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 862 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 863 | 864 | json-schema-traverse@^0.4.1: 865 | version "0.4.1" 866 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 867 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 868 | 869 | json-stable-stringify-without-jsonify@^1.0.1: 870 | version "1.0.1" 871 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 872 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 873 | 874 | levn@^0.3.0, levn@~0.3.0: 875 | version "0.3.0" 876 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 877 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 878 | dependencies: 879 | prelude-ls "~1.1.2" 880 | type-check "~0.3.2" 881 | 882 | lines-and-columns@^1.1.6: 883 | version "1.1.6" 884 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 885 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 886 | 887 | lint-staged@^10.2.2: 888 | version "10.2.2" 889 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.2.tgz#901403c120eb5d9443a0358b55038b04c8a7db9b" 890 | integrity sha512-78kNqNdDeKrnqWsexAmkOU3Z5wi+1CsQmUmfCuYgMTE8E4rAIX8RHW7xgxwAZ+LAayb7Cca4uYX4P3LlevzjVg== 891 | dependencies: 892 | chalk "^4.0.0" 893 | commander "^5.0.0" 894 | cosmiconfig "^6.0.0" 895 | debug "^4.1.1" 896 | dedent "^0.7.0" 897 | execa "^4.0.0" 898 | listr2 "1.3.8" 899 | log-symbols "^3.0.0" 900 | micromatch "^4.0.2" 901 | normalize-path "^3.0.0" 902 | please-upgrade-node "^3.2.0" 903 | string-argv "0.3.1" 904 | stringify-object "^3.3.0" 905 | 906 | listr2@1.3.8: 907 | version "1.3.8" 908 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-1.3.8.tgz#30924d79de1e936d8c40af54b6465cb814a9c828" 909 | integrity sha512-iRDRVTgSDz44tBeBBg/35TQz4W+EZBWsDUq7hPpqeUHm7yLPNll0rkwW3lIX9cPAK7l+x95mGWLpxjqxftNfZA== 910 | dependencies: 911 | "@samverschueren/stream-to-observable" "^0.3.0" 912 | chalk "^3.0.0" 913 | cli-cursor "^3.1.0" 914 | cli-truncate "^2.1.0" 915 | elegant-spinner "^2.0.0" 916 | enquirer "^2.3.4" 917 | figures "^3.2.0" 918 | indent-string "^4.0.0" 919 | log-update "^4.0.0" 920 | p-map "^4.0.0" 921 | pad "^3.2.0" 922 | rxjs "^6.3.3" 923 | through "^2.3.8" 924 | uuid "^7.0.2" 925 | 926 | locate-path@^5.0.0: 927 | version "5.0.0" 928 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 929 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 930 | dependencies: 931 | p-locate "^4.1.0" 932 | 933 | lodash@^4.17.14, lodash@^4.17.15: 934 | version "4.17.15" 935 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 936 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 937 | 938 | log-symbols@^3.0.0: 939 | version "3.0.0" 940 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" 941 | integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== 942 | dependencies: 943 | chalk "^2.4.2" 944 | 945 | log-update@^4.0.0: 946 | version "4.0.0" 947 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" 948 | integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 949 | dependencies: 950 | ansi-escapes "^4.3.0" 951 | cli-cursor "^3.1.0" 952 | slice-ansi "^4.0.0" 953 | wrap-ansi "^6.2.0" 954 | 955 | merge-stream@^2.0.0: 956 | version "2.0.0" 957 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 958 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 959 | 960 | micromatch@^4.0.2: 961 | version "4.0.2" 962 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 963 | integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 964 | dependencies: 965 | braces "^3.0.1" 966 | picomatch "^2.0.5" 967 | 968 | mimic-fn@^2.1.0: 969 | version "2.1.0" 970 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 971 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 972 | 973 | minimatch@^3.0.4: 974 | version "3.0.4" 975 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 976 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 977 | dependencies: 978 | brace-expansion "^1.1.7" 979 | 980 | minimist@^1.2.5: 981 | version "1.2.5" 982 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 983 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 984 | 985 | mkdirp@^0.5.1: 986 | version "0.5.5" 987 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 988 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 989 | dependencies: 990 | minimist "^1.2.5" 991 | 992 | ms@^2.1.1: 993 | version "2.1.2" 994 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 995 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 996 | 997 | mute-stream@0.0.8: 998 | version "0.0.8" 999 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 1000 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 1001 | 1002 | natural-compare@^1.4.0: 1003 | version "1.4.0" 1004 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1005 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1006 | 1007 | nice-try@^1.0.4: 1008 | version "1.0.5" 1009 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1010 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1011 | 1012 | normalize-path@^3.0.0: 1013 | version "3.0.0" 1014 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1015 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1016 | 1017 | npm-run-path@^4.0.0: 1018 | version "4.0.1" 1019 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 1020 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1021 | dependencies: 1022 | path-key "^3.0.0" 1023 | 1024 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1025 | version "1.4.0" 1026 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1027 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1028 | dependencies: 1029 | wrappy "1" 1030 | 1031 | onetime@^5.1.0: 1032 | version "5.1.0" 1033 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 1034 | integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== 1035 | dependencies: 1036 | mimic-fn "^2.1.0" 1037 | 1038 | opencollective-postinstall@^2.0.2: 1039 | version "2.0.2" 1040 | resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" 1041 | integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== 1042 | 1043 | optionator@^0.8.3: 1044 | version "0.8.3" 1045 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 1046 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 1047 | dependencies: 1048 | deep-is "~0.1.3" 1049 | fast-levenshtein "~2.0.6" 1050 | levn "~0.3.0" 1051 | prelude-ls "~1.1.2" 1052 | type-check "~0.3.2" 1053 | word-wrap "~1.2.3" 1054 | 1055 | os-tmpdir@~1.0.2: 1056 | version "1.0.2" 1057 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1058 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1059 | 1060 | p-limit@^2.2.0: 1061 | version "2.3.0" 1062 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1063 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1064 | dependencies: 1065 | p-try "^2.0.0" 1066 | 1067 | p-locate@^4.1.0: 1068 | version "4.1.0" 1069 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1070 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1071 | dependencies: 1072 | p-limit "^2.2.0" 1073 | 1074 | p-map@^4.0.0: 1075 | version "4.0.0" 1076 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 1077 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 1078 | dependencies: 1079 | aggregate-error "^3.0.0" 1080 | 1081 | p-try@^2.0.0: 1082 | version "2.2.0" 1083 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1084 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1085 | 1086 | pad@^3.2.0: 1087 | version "3.2.0" 1088 | resolved "https://registry.yarnpkg.com/pad/-/pad-3.2.0.tgz#be7a1d1cb6757049b4ad5b70e71977158fea95d1" 1089 | integrity sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg== 1090 | dependencies: 1091 | wcwidth "^1.0.1" 1092 | 1093 | parent-module@^1.0.0: 1094 | version "1.0.1" 1095 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1096 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1097 | dependencies: 1098 | callsites "^3.0.0" 1099 | 1100 | parse-json@^5.0.0: 1101 | version "5.0.0" 1102 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" 1103 | integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== 1104 | dependencies: 1105 | "@babel/code-frame" "^7.0.0" 1106 | error-ex "^1.3.1" 1107 | json-parse-better-errors "^1.0.1" 1108 | lines-and-columns "^1.1.6" 1109 | 1110 | path-exists@^4.0.0: 1111 | version "4.0.0" 1112 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1113 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1114 | 1115 | path-is-absolute@^1.0.0: 1116 | version "1.0.1" 1117 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1118 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1119 | 1120 | path-key@^2.0.1: 1121 | version "2.0.1" 1122 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1123 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1124 | 1125 | path-key@^3.0.0, path-key@^3.1.0: 1126 | version "3.1.1" 1127 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1128 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1129 | 1130 | path-type@^4.0.0: 1131 | version "4.0.0" 1132 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1133 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1134 | 1135 | picomatch@^2.0.5: 1136 | version "2.2.2" 1137 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1138 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1139 | 1140 | pkg-dir@^4.2.0: 1141 | version "4.2.0" 1142 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1143 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1144 | dependencies: 1145 | find-up "^4.0.0" 1146 | 1147 | please-upgrade-node@^3.2.0: 1148 | version "3.2.0" 1149 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" 1150 | integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== 1151 | dependencies: 1152 | semver-compare "^1.0.0" 1153 | 1154 | prelude-ls@~1.1.2: 1155 | version "1.1.2" 1156 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1157 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 1158 | 1159 | prettier-linter-helpers@^1.0.0: 1160 | version "1.0.0" 1161 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" 1162 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== 1163 | dependencies: 1164 | fast-diff "^1.1.2" 1165 | 1166 | prettier@^2.0.5: 1167 | version "2.0.5" 1168 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" 1169 | integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== 1170 | 1171 | progress@^2.0.0: 1172 | version "2.0.3" 1173 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1174 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1175 | 1176 | pump@^3.0.0: 1177 | version "3.0.0" 1178 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1179 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1180 | dependencies: 1181 | end-of-stream "^1.1.0" 1182 | once "^1.3.1" 1183 | 1184 | punycode@^2.1.0: 1185 | version "2.1.1" 1186 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1187 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1188 | 1189 | regenerator-runtime@^0.13.4: 1190 | version "0.13.5" 1191 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" 1192 | integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== 1193 | 1194 | regexpp@^2.0.1: 1195 | version "2.0.1" 1196 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 1197 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 1198 | 1199 | regexpp@^3.0.0: 1200 | version "3.1.0" 1201 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1202 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1203 | 1204 | resolve-from@^4.0.0: 1205 | version "4.0.0" 1206 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1207 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1208 | 1209 | restore-cursor@^3.1.0: 1210 | version "3.1.0" 1211 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1212 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1213 | dependencies: 1214 | onetime "^5.1.0" 1215 | signal-exit "^3.0.2" 1216 | 1217 | rimraf@2.6.3: 1218 | version "2.6.3" 1219 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1220 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1221 | dependencies: 1222 | glob "^7.1.3" 1223 | 1224 | run-async@^2.4.0: 1225 | version "2.4.1" 1226 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" 1227 | integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== 1228 | 1229 | rxjs@^6.3.3, rxjs@^6.5.3: 1230 | version "6.5.5" 1231 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" 1232 | integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== 1233 | dependencies: 1234 | tslib "^1.9.0" 1235 | 1236 | "safer-buffer@>= 2.1.2 < 3": 1237 | version "2.1.2" 1238 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1239 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1240 | 1241 | semver-compare@^1.0.0: 1242 | version "1.0.0" 1243 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 1244 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 1245 | 1246 | semver-regex@^2.0.0: 1247 | version "2.0.0" 1248 | resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" 1249 | integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== 1250 | 1251 | semver@^5.5.0: 1252 | version "5.7.1" 1253 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1254 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1255 | 1256 | semver@^6.1.2, semver@^6.3.0: 1257 | version "6.3.0" 1258 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1259 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1260 | 1261 | shebang-command@^1.2.0: 1262 | version "1.2.0" 1263 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1264 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1265 | dependencies: 1266 | shebang-regex "^1.0.0" 1267 | 1268 | shebang-command@^2.0.0: 1269 | version "2.0.0" 1270 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1271 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1272 | dependencies: 1273 | shebang-regex "^3.0.0" 1274 | 1275 | shebang-regex@^1.0.0: 1276 | version "1.0.0" 1277 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1278 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1279 | 1280 | shebang-regex@^3.0.0: 1281 | version "3.0.0" 1282 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1283 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1284 | 1285 | signal-exit@^3.0.2: 1286 | version "3.0.3" 1287 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1288 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1289 | 1290 | slash@^3.0.0: 1291 | version "3.0.0" 1292 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1293 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1294 | 1295 | slice-ansi@^2.1.0: 1296 | version "2.1.0" 1297 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 1298 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 1299 | dependencies: 1300 | ansi-styles "^3.2.0" 1301 | astral-regex "^1.0.0" 1302 | is-fullwidth-code-point "^2.0.0" 1303 | 1304 | slice-ansi@^3.0.0: 1305 | version "3.0.0" 1306 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 1307 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 1308 | dependencies: 1309 | ansi-styles "^4.0.0" 1310 | astral-regex "^2.0.0" 1311 | is-fullwidth-code-point "^3.0.0" 1312 | 1313 | slice-ansi@^4.0.0: 1314 | version "4.0.0" 1315 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1316 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1317 | dependencies: 1318 | ansi-styles "^4.0.0" 1319 | astral-regex "^2.0.0" 1320 | is-fullwidth-code-point "^3.0.0" 1321 | 1322 | sprintf-js@~1.0.2: 1323 | version "1.0.3" 1324 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1325 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1326 | 1327 | string-argv@0.3.1: 1328 | version "0.3.1" 1329 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 1330 | integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 1331 | 1332 | string-width@^3.0.0: 1333 | version "3.1.0" 1334 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1335 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1336 | dependencies: 1337 | emoji-regex "^7.0.1" 1338 | is-fullwidth-code-point "^2.0.0" 1339 | strip-ansi "^5.1.0" 1340 | 1341 | string-width@^4.1.0, string-width@^4.2.0: 1342 | version "4.2.0" 1343 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1344 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1345 | dependencies: 1346 | emoji-regex "^8.0.0" 1347 | is-fullwidth-code-point "^3.0.0" 1348 | strip-ansi "^6.0.0" 1349 | 1350 | stringify-object@^3.3.0: 1351 | version "3.3.0" 1352 | resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" 1353 | integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== 1354 | dependencies: 1355 | get-own-enumerable-property-symbols "^3.0.0" 1356 | is-obj "^1.0.1" 1357 | is-regexp "^1.0.0" 1358 | 1359 | strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1360 | version "5.2.0" 1361 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1362 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1363 | dependencies: 1364 | ansi-regex "^4.1.0" 1365 | 1366 | strip-ansi@^6.0.0: 1367 | version "6.0.0" 1368 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1369 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1370 | dependencies: 1371 | ansi-regex "^5.0.0" 1372 | 1373 | strip-final-newline@^2.0.0: 1374 | version "2.0.0" 1375 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 1376 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1377 | 1378 | strip-json-comments@^3.0.1: 1379 | version "3.1.0" 1380 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" 1381 | integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== 1382 | 1383 | supports-color@^5.3.0: 1384 | version "5.5.0" 1385 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1386 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1387 | dependencies: 1388 | has-flag "^3.0.0" 1389 | 1390 | supports-color@^7.1.0: 1391 | version "7.1.0" 1392 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 1393 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 1394 | dependencies: 1395 | has-flag "^4.0.0" 1396 | 1397 | table@^5.2.3: 1398 | version "5.4.6" 1399 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 1400 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 1401 | dependencies: 1402 | ajv "^6.10.2" 1403 | lodash "^4.17.14" 1404 | slice-ansi "^2.1.0" 1405 | string-width "^3.0.0" 1406 | 1407 | text-table@^0.2.0: 1408 | version "0.2.0" 1409 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1410 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1411 | 1412 | through@^2.3.6, through@^2.3.8: 1413 | version "2.3.8" 1414 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1415 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1416 | 1417 | tmp@^0.0.33: 1418 | version "0.0.33" 1419 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1420 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 1421 | dependencies: 1422 | os-tmpdir "~1.0.2" 1423 | 1424 | to-regex-range@^5.0.1: 1425 | version "5.0.1" 1426 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1427 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1428 | dependencies: 1429 | is-number "^7.0.0" 1430 | 1431 | tslib@^1.8.1, tslib@^1.9.0: 1432 | version "1.11.1" 1433 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" 1434 | integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== 1435 | 1436 | tsutils@^3.17.1: 1437 | version "3.17.1" 1438 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" 1439 | integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== 1440 | dependencies: 1441 | tslib "^1.8.1" 1442 | 1443 | type-check@~0.3.2: 1444 | version "0.3.2" 1445 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1446 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 1447 | dependencies: 1448 | prelude-ls "~1.1.2" 1449 | 1450 | type-fest@^0.11.0: 1451 | version "0.11.0" 1452 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 1453 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 1454 | 1455 | type-fest@^0.8.1: 1456 | version "0.8.1" 1457 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1458 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1459 | 1460 | typescript@^3.8.3: 1461 | version "3.8.3" 1462 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" 1463 | integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== 1464 | 1465 | uri-js@^4.2.2: 1466 | version "4.2.2" 1467 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1468 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1469 | dependencies: 1470 | punycode "^2.1.0" 1471 | 1472 | uuid@^7.0.2: 1473 | version "7.0.3" 1474 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" 1475 | integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== 1476 | 1477 | v8-compile-cache@^2.0.3: 1478 | version "2.1.0" 1479 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 1480 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 1481 | 1482 | wcwidth@^1.0.1: 1483 | version "1.0.1" 1484 | resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" 1485 | integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= 1486 | dependencies: 1487 | defaults "^1.0.3" 1488 | 1489 | which-pm-runs@^1.0.0: 1490 | version "1.0.0" 1491 | resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" 1492 | integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= 1493 | 1494 | which@^1.2.9: 1495 | version "1.3.1" 1496 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1497 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1498 | dependencies: 1499 | isexe "^2.0.0" 1500 | 1501 | which@^2.0.1: 1502 | version "2.0.2" 1503 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1504 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1505 | dependencies: 1506 | isexe "^2.0.0" 1507 | 1508 | word-wrap@~1.2.3: 1509 | version "1.2.3" 1510 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1511 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1512 | 1513 | wrap-ansi@^6.2.0: 1514 | version "6.2.0" 1515 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 1516 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 1517 | dependencies: 1518 | ansi-styles "^4.0.0" 1519 | string-width "^4.1.0" 1520 | strip-ansi "^6.0.0" 1521 | 1522 | wrappy@1: 1523 | version "1.0.2" 1524 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1525 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1526 | 1527 | write@1.0.3: 1528 | version "1.0.3" 1529 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 1530 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 1531 | dependencies: 1532 | mkdirp "^0.5.1" 1533 | 1534 | yaml@^1.7.2: 1535 | version "1.9.2" 1536 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.2.tgz#f0cfa865f003ab707663e4f04b3956957ea564ed" 1537 | integrity sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg== 1538 | dependencies: 1539 | "@babel/runtime" "^7.9.2" 1540 | --------------------------------------------------------------------------------