├── .github └── workflows │ └── ci.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── package.json ├── rollup.config.js ├── src ├── index.ts └── useEditable.ts ├── tsconfig.json ├── use-editable-Hero.png └── yarn.lock /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Continuous Integration 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: [main] 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | strategy: 12 | matrix: 13 | node-version: [18.x] 14 | 15 | steps: 16 | - uses: actions/checkout@v4 17 | 18 | - name: Use Node.js ${{ matrix.node-version }} 19 | uses: actions/setup-node@v4 20 | with: 21 | node-version: ${{ matrix.node-version }} 22 | 23 | - name: Get Yarn cache directory 24 | id: yarn-cache-dir-path 25 | run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT 26 | 27 | - name: Use Yarn cache 28 | uses: actions/cache@v4 29 | id: yarn-cache 30 | with: 31 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 32 | key: ${{ runner.os }}-yarn-${{ matrix.node-version }}-${{ hashFiles('**/yarn.lock') }} 33 | 34 | - name: Install dependencies 35 | run: yarn install --prefer-offline --frozen-lockfile 36 | 37 | - name: TypeScript Check 38 | run: yarn run check 39 | 40 | - name: Build 41 | run: yarn run build 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | yarn-error.log 2 | dist/ 3 | node_modules/ 4 | coverage/ 5 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # use-editable 2 | 3 | ## 2.3.3 4 | 5 | - Prevent empty text from being inserted 6 | (See [`82ac3eb`](https://github.com/kitten/use-editable/commit/82ac3eb5000e0fa4967924ab54a98738270a1183)) 7 | - Prevent empty or negative ranges from being created for empty elements 8 | (See [`b79d013`](https://github.com/kitten/use-editable/commit/b79d0130527baa9ba703e5193dd9beddc00904e8)) 9 | 10 | ## 2.3.2 11 | 12 | - Fix missing backspace behaviour on `opts.indentation` for non-plaintext-only browsers 13 | (See [`093b10e`](https://github.com/kitten/use-editable/commit/093b10eb645aece3e8e974721fe8ebf9c1e7a1a3)) 14 | 15 | ## 2.3.1 16 | 17 | - Fix Chrome quirk where initial focus would immediately lose its selected range by switching to `selectstart` and checking for `window.getSelection().rangeCount` 18 | (See [`71ae9a2`](https://github.com/kitten/use-editable/commit/71ae9a20bdf09b1bff8b6cb9ee460b5f828ffa69)) 19 | 20 | ## 2.3.0 21 | 22 | - Add `Edit#getState()` method to returned `Edit` handle. `useEditable` returns the `Edit` object with several methods to allow manipulating the current editable. 23 | The `getState()` method allows you to retrieve the current text and position of the editable. 24 | (See [`98cb706`](https://github.com/kitten/use-editable/commit/98cb70625f35254c0e349f129a05edb43d39a3c3)) 25 | 26 | ## 2.2.2 27 | 28 | - Fix regression from `2.2.1`, which would misplace the indentation pattern and not recognise lines with content when backspace is pressed. 29 | (See [`bc2be15`](https://github.com/kitten/use-editable/commit/bc2be1530e1d85949bd9300d62547ed62e04e43a)) 30 | 31 | ## 2.2.1 32 | 33 | - Add space-only indentation when `opts.indentation` is passed. This means that `useEditable` now inserts spaces over tabs when `opts.indentation` is set and overrides the 34 | default backspace behaviour to delete multiple spaces as needed. 35 | (See [`9291f6c`](https://github.com/kitten/use-editable/commit/9291f6ccdb9a6cfcfba38f59ead89a2024ec2bee)) 36 | 37 | ## 2.2.0 38 | 39 | - Add `Edit#move()` method to edit the caret position programmatically. The caret can now be moved to a specific character index or row/column coordinates. 40 | (See [`15cea68`](https://github.com/kitten/use-editable/commit/15cea6817242e30deb8bda9996060b9dd11db1ab)) 41 | 42 | ## 2.1.2 43 | 44 | - Fix undo/redo key combination, which regressed previously, since it was switched to `event.key` rather than `event.code` 45 | (See [`7147dca`](https://github.com/kitten/use-editable/commit/7147dcaa70e389ad9e0cdc6f92f76f6f6bcd724d)) 46 | - Fix changes from being flushed to eagerly, which was meant to preserve the selected ranges more eagerly 47 | (See [`1feaec5`](https://github.com/kitten/use-editable/commit/1feaec57e72c0edbefaf81464856656662baf89c)) 48 | 49 | ## 2.1.1 50 | 51 | - Fix key repeats (held keys) not flushing changes correctly 52 | (See [`3807bbf`](https://github.com/kitten/use-editable/commit/3807bbf6c143259d46cba52becf2c4f100fb6f69)) 53 | 54 | ## 2.1.0 55 | 56 | - Support non-collpsed selection restoration, in other words, when a range is selected and the component updates in the meantime, the selection is restored correctly. 57 | This is achieved by storing the selection's "extent", i.e. the number of characters it selects past its start. 58 | (See [`a15f8fc`](https://github.com/kitten/use-editable/commit/a15f8fcd9c1731c98c1ee2d96b6b0ed19ad40355)) 59 | 60 | ## 2.0.2 61 | 62 | - Fix inconsistency of deletion behaviour on the beginning of lines. Due to the lack of `plaintext-only` support in Firefox, 63 | computing the current position would be relative to the root element, when plain text is selected. This makes it extremely difficult 64 | to get the current position without small offsets. 65 | (See [`1644f51`](https://github.com/kitten/use-editable/commit/1644f516ad7d4f3367f4fa9fad41268dd9084ddc)) 66 | 67 | ## 2.0.1 68 | 69 | - Fix `onChange` not being triggered when the cursor moves 70 | (See [`9dfadda`](https://github.com/kitten/use-editable/commit/9dfadda649e7f4d2b850a7d90ddc0ed62f81a041)) 71 | 72 | ## 2.0.0 73 | 74 | - Add `Edit` return value to `useEditable`. The `useEditable` hook now returns an object with multiple methods that may be useful 75 | for controlling the editable's content, behaviour and cursor. Specifically it returns `Edit#update`, which was its previous return value 76 | for updating its content, and `Edit#insert` to append new text. 77 | (See [`c031d7e`](https://github.com/kitten/use-editable/commit/c031d7ee3e2551f6230df7fae0b03a3ce287d202)) 78 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Phil Plückthun, 4 | Copyright (c) 2021 Formidable 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
A small React hook to turn elements into fully renderable & editable content surfaces, like code editors, using contenteditable (and magic)
6 |54 | {code.split(/\r?\n/).map((content, i, arr) => ( 55 |63 |56 | 57 | {content} 58 | 59 | {i < arr.length - 1 ? '\n' : null} 60 | 61 | ))} 62 |
` 69 | element that is being rendered, and to `setCode` which drives our state containing some code. 70 | 71 | ## Browser Compatibility 72 | 73 | This library has been tested against and **should work properly** using: 74 | 75 | - Chrome 76 | - Safari 77 | - iOS Safari 78 | - Firefox 79 | 80 | There are known issues in **IE 11** due to the `MutationObserver` method being unable to 81 | read text nodes that have been removed via the `contenteditable`. 82 | 83 | ## FAQ 84 | 85 | ### How does it work? 86 | 87 | Traditionally, there have been three options when choosing editing surfaces in React. Either one 88 | could go for a large project like ProseMirror / CodeMirror or similar which take control over much 89 | of the editing and rendering events and are hence rather opinionated, or it's possible to just 90 | use `contenteditable` and render to raw HTML that is replaced in the element's content, or lastly one 91 | could combine a `textarea` with an overlapping `div` that renders stylised content. 92 | 93 | All three options don't allow much customisation in terms of what actually gets rendered or put 94 | unreasonable restrictions on how easy it is to render and manage an editable's content. 95 | 96 | **So what makes rendering to a `contenteditable` element so hard?** 97 | 98 | Typically this is tough because they edit the DOM directly. This causes most rendering libraries, like 99 | React and Preact to be confused, since their underlying Virtual DOMs don't match up with the actual 100 | DOM structure anymore. To prevent this issue `use-editable` creates a `MutationObserver`, which watches 101 | over all changes that are made to the `contenteditable` element. Before it reports these changes to 102 | React it first rolls back all changes to the DOM so that React sees what it expects. 103 | 104 | Furthermore it also preserves the current position of the caret, the selection, and restores it once 105 | React has updated the DOM itself. This is a rather common technique for `contenteditable` editors, but 106 | the `MutationObserver` addition is what enables `use-editable` to let another view library update the element's 107 | content. 108 | 109 | ### What's currently possible? 110 | 111 | Currently either the rendered elements' text content has to eventually exactly match the code input, 112 | or your implementation must be able to convert the rendered text content back into what you're using 113 | as state. This is a limitation of how `contenteditable`'s work, since they'll only capture the actual 114 | DOM content. Since `use-editable` doesn't aim to be a full component that manages the render cycle, it 115 | doesn't have to keep any extra state, but will only pass the DOM's text back to the `onChange` callback. 116 | 117 | Using the `onChange` callback you'll also receive a `Position` object describing the cursor position, 118 | the current line number, and the line's contents up until the cursor, which is useful for auto-suggestions, 119 | which could then be applied with the `update` function that `useEditable` returns to update the cursor 120 | position. 121 | 122 | ## API 123 | 124 | ### useEditable 125 | 126 | The **first argument** is `elementRef` and accepts a ref object of type `RefObject` which 127 | points to the element that should become editable. This ref is allowed to be `null` or change during 128 | the runtime of the hook. As long as the changes of the ref are triggered by React, everything should 129 | behave as expected. 130 | 131 | The **second argument** is `onChange` and accepts a callback of type `(text: string, pos: Position) => void` 132 | that's called whenever the content of the `contenteditable` changes. This needs to be set up so that 133 | it'll trigger a rerender of the element's contents. 134 | 135 | The `text` that `onChange` receives is just the textual representation of the element's contents, while the 136 | `Position` it receives contains the current position of the cursor, the line number (zero-indexed), and 137 | the content of the current line up until the cursor, which is useful for autosuggestions. 138 | 139 | The **third argument** is an optional `options` object. This accepts currently two options to change 140 | the editing behavior of the hook: 141 | 142 | - The `disabled` option disables editing on the editable by removing the `contentEditable` attribute from 143 | it again. 144 | - The `indentation` option may be a number of displayed spaces for indentation. This also enables the 145 | improved `Tab` key behavior, which will indent the current line or dedent the current line when shift is 146 | held (Be aware that this will make the editor act as a focus trap!) 147 | 148 | When `options.indentation` is set then `useEditable` will prevent the insertion of tab characters and 149 | will instead insert the specified amount of whitespaces, which makes handling of columns much easier. 150 | 151 | Additionally the `useEditable` hook returns an `Edit` handle with several methods, as documented below. 152 | 153 | #### Edit.update 154 | 155 | `Edit.update(content: string): void` 156 | 157 | Replaces the entire content of the editable while adjusting the caret position. 158 | This will shift the caret by the difference in length between the current content and the passed content. 159 | 160 | #### Edit.insert 161 | 162 | `Edit.insert(append: string, offset?: number): void` 163 | 164 | Inserts new text at the caret position while deleting text in range of the offset (which accepts negative offsets). 165 | For example, when `offset` is set to `-1` then a single character is deleted to the left of the caret before 166 | inserting any new text. When it's set to `2` then two characters to the right of the carets are deleted. 167 | The `append` text may also be set to an empty string to only apply deletions without inserting any text. 168 | When any text is selected then it's simply erased first and `offset` is ignored. 169 | 170 | #### Edit.move 171 | 172 | `Edit.move(pos: number | { row: number; column: number }): void` 173 | 174 | This moves the caret to the specified position. The position may either be a character index (a `number`) 175 | or coordinates specifying a `row` and `column` separately. 176 | 177 | #### Edit.getState 178 | 179 | `Edit.getState(): { text: string; position: Position }` 180 | 181 | This method allows getting the current state of the editable, which is the same as what `onChange` usually 182 | receives. This is useful when adding custom editing actions in a key down handler or when programmatically 183 | imitating `onChange` otherwise, while the editable is selected. 184 | 185 | ## Acknowledgments 186 | 187 | - [`react-live`](https://github.com/FormidableLabs/react-live/blob/v1.12.0/src/components/Editor/index.js), which I've worked on 188 | had one of the early tiny `contenteditable` editors. (But with raw HTML updates) 189 | - [`react-simple-code-editor`](https://github.com/satya164/react-simple-code-editor) was the first (?) library to use a split textarea 190 | and rendering surface implementation, which presented what a nice editing API should look like. 191 | - [`codejar`](https://github.com/antonmedv/codejar) contains the best tricks to manage selections, although it lacks some 192 | Firefox workarounds. It also uses raw HTML highlighting / updating. 193 | - [`codemirror.next`](https://github.com/codemirror/codemirror.next) is an invaluable source to see different techniques when 194 | handling text input and DOM update tricks. 195 | 196 | 197 | ## Maintenance Status 198 | 199 | **Stable:** Formidable is not planning to develop any new features for this project. We are still responding to bug reports and security concerns. We are still welcoming PRs for this project, but PRs that include new features should be small and easy to integrate and should not include breaking changes. 200 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "use-editable", 3 | "description": "A small React hook to turn elements into fully renderable & editable content surfaces, like code editors, using contenteditable (and magic)", 4 | "version": "2.3.3", 5 | "main": "dist/use-editable.js", 6 | "module": "dist/use-editable.es.js", 7 | "types": "dist/types/index.d.ts", 8 | "source": "src/index.ts", 9 | "sideEffects": false, 10 | "license": "MIT", 11 | "files": [ 12 | "LICENSE", 13 | "README.md", 14 | "dist/" 15 | ], 16 | "keywords": [ 17 | "contenteditable", 18 | "text editing", 19 | "react", 20 | "hook" 21 | ], 22 | "repository": "https://github.com/FormidableLabs/use-editable", 23 | "bugs": { 24 | "url": "https://github.com/FormidableLabs/use-editable/issues" 25 | }, 26 | "scripts": { 27 | "check": "tsc", 28 | "build": "rollup -c rollup.config.js", 29 | "prepublishOnly": "run-s check build" 30 | }, 31 | "prettier": { 32 | "singleQuote": true, 33 | "arrowParens": "avoid", 34 | "trailingComma": "es5" 35 | }, 36 | "lint-staged": { 37 | "*.{js,ts}": "prettier --write", 38 | "*.json": "prettier --write", 39 | "*.md": "prettier --write" 40 | }, 41 | "husky": { 42 | "hooks": { 43 | "pre-commit": "lint-staged --quiet --relative" 44 | } 45 | }, 46 | "peerDependencies": { 47 | "react": ">= 16.8.0" 48 | }, 49 | "devDependencies": { 50 | "@ampproject/rollup-plugin-closure-compiler": "^0.26.0", 51 | "@babel/core": "^7.11.6", 52 | "@babel/plugin-transform-object-assign": "^7.10.4", 53 | "@rollup/plugin-buble": "^0.21.3", 54 | "@rollup/plugin-commonjs": "^15.0.0", 55 | "@rollup/plugin-node-resolve": "^9.0.0", 56 | "@types/react": "^16.9.49", 57 | "babel-plugin-closure-elimination": "^1.3.2", 58 | "husky": "^4.3.0", 59 | "lint-staged": "^10.4.0", 60 | "npm-run-all": "^4.1.5", 61 | "prettier": "^2.1.2", 62 | "react": "^16.13.1", 63 | "rollup": "^2.27.1", 64 | "rollup-plugin-babel": "^4.4.0", 65 | "rollup-plugin-terser": "^7.0.2", 66 | "rollup-plugin-typescript2": "^0.27.2", 67 | "typescript": "^4.0.3" 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import commonjs from '@rollup/plugin-commonjs'; 2 | import resolve from '@rollup/plugin-node-resolve'; 3 | import typescript from 'rollup-plugin-typescript2'; 4 | import buble from '@rollup/plugin-buble'; 5 | import babel from 'rollup-plugin-babel'; 6 | import { terser } from 'rollup-plugin-terser'; 7 | import compiler from '@ampproject/rollup-plugin-closure-compiler'; 8 | 9 | const pkg = require('./package.json'); 10 | 11 | export const externalModules = ['dns', 'fs', 'path', 'url']; 12 | if (pkg.peerDependencies) 13 | externalModules.push(...Object.keys(pkg.peerDependencies)); 14 | if (pkg.dependencies) externalModules.push(...Object.keys(pkg.dependencies)); 15 | 16 | const externalPredicate = new RegExp(`^(${externalModules.join('|')})($|/)`); 17 | 18 | export const isExternal = id => { 19 | if (id === 'babel-plugin-transform-async-to-promises/helpers') return false; 20 | return externalPredicate.test(id); 21 | }; 22 | 23 | const config = { 24 | input: { 25 | [pkg.name]: './src/index.ts', 26 | }, 27 | onwarn() {}, 28 | external: isExternal, 29 | treeshake: { 30 | unknownGlobalSideEffects: false, 31 | tryCatchDeoptimization: false, 32 | moduleSideEffects: false, 33 | }, 34 | }; 35 | 36 | const plugins = [ 37 | resolve({ 38 | extensions: ['.js', '.jsx', '.ts', '.tsx'], 39 | mainFields: ['module', 'jsnext', 'main'], 40 | preferBuiltins: false, 41 | browser: true, 42 | }), 43 | 44 | commonjs({ 45 | ignoreGlobal: true, 46 | include: /\/node_modules\//, 47 | namedExports: {}, 48 | }), 49 | 50 | typescript({ 51 | useTsconfigDeclarationDir: true, 52 | tsconfigOverride: { 53 | compilerOptions: { 54 | sourceMap: true, 55 | noEmit: false, 56 | declaration: true, 57 | declarationDir: './dist/types', 58 | target: 'esnext', 59 | }, 60 | }, 61 | }), 62 | 63 | buble({ 64 | transforms: { 65 | unicodeRegExp: false, 66 | dangerousForOf: true, 67 | dangerousTaggedTemplateString: true, 68 | asyncAwait: false, 69 | }, 70 | objectAssign: 'Object.assign', 71 | }), 72 | 73 | babel({ 74 | babelrc: false, 75 | extensions: ['js', 'jsx', 'ts', 'tsx'], 76 | presets: [], 77 | plugins: [ 78 | 'babel-plugin-closure-elimination', 79 | '@babel/plugin-transform-object-assign', 80 | ].filter(Boolean), 81 | }), 82 | 83 | compiler({ 84 | formatting: 'PRETTY_PRINT', 85 | compilation_level: 'SIMPLE_OPTIMIZATIONS', 86 | }), 87 | 88 | terser({ 89 | warnings: true, 90 | ecma: 5, 91 | keep_fnames: true, 92 | ie8: false, 93 | compress: { 94 | hoist_vars: false, 95 | hoist_funs: false, 96 | pure_getters: true, 97 | toplevel: true, 98 | booleans_as_integers: false, 99 | keep_fnames: true, 100 | keep_fargs: true, 101 | if_return: false, 102 | ie8: false, 103 | sequences: false, 104 | loops: false, 105 | conditionals: false, 106 | join_vars: false, 107 | }, 108 | mangle: false, 109 | output: { 110 | beautify: true, 111 | braces: true, 112 | indent_level: 2, 113 | }, 114 | }), 115 | ]; 116 | 117 | const output = (format = 'cjs', extension = '.js') => ({ 118 | chunkFileNames: '[hash]' + extension, 119 | entryFileNames: '[name]' + extension, 120 | dir: './dist', 121 | exports: 'named', 122 | externalLiveBindings: false, 123 | sourcemap: true, 124 | esModule: false, 125 | indent: false, 126 | freeze: false, 127 | strict: false, 128 | format, 129 | }); 130 | 131 | export default [ 132 | { 133 | ...config, 134 | shimMissingExports: true, 135 | plugins, 136 | output: [output('esm', '.es.js'), output('cjs', '.js')], 137 | }, 138 | ]; 139 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './useEditable'; 2 | -------------------------------------------------------------------------------- /src/useEditable.ts: -------------------------------------------------------------------------------- 1 | import { useState, useLayoutEffect, useMemo } from 'react'; 2 | 3 | export interface Position { 4 | position: number; 5 | extent: number; 6 | content: string; 7 | line: number; 8 | } 9 | 10 | type History = [Position, string]; 11 | 12 | const observerSettings = { 13 | characterData: true, 14 | characterDataOldValue: true, 15 | childList: true, 16 | subtree: true, 17 | }; 18 | 19 | const getCurrentRange = () => window.getSelection()!.getRangeAt(0)!; 20 | 21 | const setCurrentRange = (range: Range) => { 22 | const selection = window.getSelection()!; 23 | selection.empty(); 24 | selection.addRange(range); 25 | }; 26 | 27 | const isUndoRedoKey = (event: KeyboardEvent): boolean => 28 | (event.metaKey || event.ctrlKey) && !event.altKey && event.code === 'KeyZ'; 29 | 30 | const toString = (element: HTMLElement): string => { 31 | const queue: Node[] = [element.firstChild!]; 32 | 33 | let content = ''; 34 | let node: Node; 35 | while ((node = queue.pop()!)) { 36 | if (node.nodeType === Node.TEXT_NODE) { 37 | content += node.textContent; 38 | } else if (node.nodeType === Node.ELEMENT_NODE && node.nodeName === 'BR') { 39 | content += '\n'; 40 | } 41 | 42 | if (node.nextSibling) queue.push(node.nextSibling); 43 | if (node.firstChild) queue.push(node.firstChild); 44 | } 45 | 46 | // contenteditable Quirk: Without plaintext-only a pre/pre-wrap element must always 47 | // end with at least one newline character 48 | if (content[content.length - 1] !== '\n') content += '\n'; 49 | 50 | return content; 51 | }; 52 | 53 | const setStart = (range: Range, node: Node, offset: number) => { 54 | if (offset < node.textContent!.length) { 55 | range.setStart(node, offset); 56 | } else { 57 | range.setStartAfter(node); 58 | } 59 | }; 60 | 61 | const setEnd = (range: Range, node: Node, offset: number) => { 62 | if (offset < node.textContent!.length) { 63 | range.setEnd(node, offset); 64 | } else { 65 | range.setEndAfter(node); 66 | } 67 | }; 68 | 69 | const getPosition = (element: HTMLElement): Position => { 70 | // Firefox Quirk: Since plaintext-only is unsupported the position 71 | // of the text here is retrieved via a range, rather than traversal 72 | // as seen in makeRange() 73 | const range = getCurrentRange(); 74 | const extent = !range.collapsed ? range.toString().length : 0; 75 | const untilRange = document.createRange(); 76 | untilRange.setStart(element, 0); 77 | untilRange.setEnd(range.startContainer, range.startOffset); 78 | let content = untilRange.toString(); 79 | const position = content.length; 80 | const lines = content.split('\n'); 81 | const line = lines.length - 1; 82 | content = lines[line]; 83 | return { position, extent, content, line }; 84 | }; 85 | 86 | const makeRange = ( 87 | element: HTMLElement, 88 | start: number, 89 | end?: number 90 | ): Range => { 91 | if (start <= 0) start = 0; 92 | if (!end || end < 0) end = start; 93 | 94 | const range = document.createRange(); 95 | const queue: Node[] = [element.firstChild!]; 96 | let current = 0; 97 | 98 | let node: Node; 99 | let position = start; 100 | while ((node = queue[queue.length - 1])) { 101 | if (node.nodeType === Node.TEXT_NODE) { 102 | const length = node.textContent!.length; 103 | if (current + length >= position) { 104 | const offset = position - current; 105 | if (position === start) { 106 | setStart(range, node, offset); 107 | if (end !== start) { 108 | position = end; 109 | continue; 110 | } else { 111 | break; 112 | } 113 | } else { 114 | setEnd(range, node, offset); 115 | break; 116 | } 117 | } 118 | 119 | current += node.textContent!.length; 120 | } else if (node.nodeType === Node.ELEMENT_NODE && node.nodeName === 'BR') { 121 | if (current + 1 >= position) { 122 | if (position === start) { 123 | setStart(range, node, 0); 124 | if (end !== start) { 125 | position = end; 126 | continue; 127 | } else { 128 | break; 129 | } 130 | } else { 131 | setEnd(range, node, 0); 132 | break; 133 | } 134 | } 135 | 136 | current++; 137 | } 138 | 139 | queue.pop(); 140 | if (node.nextSibling) queue.push(node.nextSibling); 141 | if (node.firstChild) queue.push(node.firstChild); 142 | } 143 | 144 | return range; 145 | }; 146 | 147 | interface State { 148 | observer: MutationObserver; 149 | disconnected: boolean; 150 | onChange(text: string, position: Position): void; 151 | queue: MutationRecord[]; 152 | history: History[]; 153 | historyAt: number; 154 | position: Position | null; 155 | } 156 | 157 | export interface Options { 158 | disabled?: boolean; 159 | indentation?: number; 160 | } 161 | 162 | export interface Edit { 163 | /** Replaces the entire content of the editable while adjusting the caret position. */ 164 | update(content: string): void; 165 | /** Inserts new text at the caret position while deleting text in range of the offset (which accepts negative offsets). */ 166 | insert(append: string, offset?: number): void; 167 | /** Positions the caret where specified */ 168 | move(pos: number | { row: number; column: number }): void; 169 | /** Returns the current editor state, as usually received in onChange */ 170 | getState(): { text: string; position: Position }; 171 | } 172 | 173 | export const useEditable = ( 174 | elementRef: { current: HTMLElement | undefined | null }, 175 | onChange: (text: string, position: Position) => void, 176 | opts?: Options 177 | ): Edit => { 178 | if (!opts) opts = {}; 179 | 180 | const unblock = useState([])[1]; 181 | const state: State = useState(() => { 182 | const state: State = { 183 | observer: null as any, 184 | disconnected: false, 185 | onChange, 186 | queue: [], 187 | history: [], 188 | historyAt: -1, 189 | position: null, 190 | }; 191 | 192 | if (typeof MutationObserver !== 'undefined') { 193 | state.observer = new MutationObserver(batch => { 194 | state.queue.push(...batch); 195 | }); 196 | } 197 | 198 | return state; 199 | })[0]; 200 | 201 | const edit = useMemo ( 202 | () => ({ 203 | update(content: string) { 204 | const { current: element } = elementRef; 205 | if (element) { 206 | const position = getPosition(element); 207 | const prevContent = toString(element); 208 | position.position += content.length - prevContent.length; 209 | state.position = position; 210 | state.onChange(content, position); 211 | } 212 | }, 213 | insert(append: string, deleteOffset?: number) { 214 | const { current: element } = elementRef; 215 | if (element) { 216 | let range = getCurrentRange(); 217 | range.deleteContents(); 218 | range.collapse(); 219 | const position = getPosition(element); 220 | const offset = deleteOffset || 0; 221 | const start = position.position + (offset < 0 ? offset : 0); 222 | const end = position.position + (offset > 0 ? offset : 0); 223 | range = makeRange(element, start, end); 224 | range.deleteContents(); 225 | if (append) range.insertNode(document.createTextNode(append)); 226 | setCurrentRange(makeRange(element, start + append.length)); 227 | } 228 | }, 229 | move(pos: number | { row: number; column: number }) { 230 | const { current: element } = elementRef; 231 | if (element) { 232 | element.focus(); 233 | let position = 0; 234 | if (typeof pos === 'number') { 235 | position = pos; 236 | } else { 237 | const lines = toString(element).split('\n').slice(0, pos.row); 238 | if (pos.row) position += lines.join('\n').length + 1; 239 | position += pos.column; 240 | } 241 | 242 | setCurrentRange(makeRange(element, position)); 243 | } 244 | }, 245 | getState() { 246 | const { current: element } = elementRef; 247 | const text = toString(element!); 248 | const position = getPosition(element!); 249 | return { text, position }; 250 | }, 251 | }), 252 | [] 253 | ); 254 | 255 | // Only for SSR / server-side logic 256 | if (typeof navigator !== 'object') return edit; 257 | 258 | useLayoutEffect(() => { 259 | state.onChange = onChange; 260 | 261 | if (!elementRef.current || opts!.disabled) return; 262 | 263 | state.disconnected = false; 264 | state.observer.observe(elementRef.current, observerSettings); 265 | if (state.position) { 266 | const { position, extent } = state.position; 267 | setCurrentRange( 268 | makeRange(elementRef.current, position, position + extent) 269 | ); 270 | } 271 | 272 | return () => { 273 | state.observer.disconnect(); 274 | }; 275 | }); 276 | 277 | useLayoutEffect(() => { 278 | if (!elementRef.current || opts!.disabled) { 279 | state.history.length = 0; 280 | state.historyAt = -1; 281 | return; 282 | } 283 | 284 | const element = elementRef.current!; 285 | if (state.position) { 286 | element.focus(); 287 | const { position, extent } = state.position; 288 | setCurrentRange(makeRange(element, position, position + extent)); 289 | } 290 | 291 | const prevWhiteSpace = element.style.whiteSpace; 292 | const prevContentEditable = element.contentEditable; 293 | let hasPlaintextSupport = true; 294 | try { 295 | // Firefox and IE11 do not support plaintext-only mode 296 | element.contentEditable = 'plaintext-only'; 297 | } catch (_error) { 298 | element.contentEditable = 'true'; 299 | hasPlaintextSupport = false; 300 | } 301 | 302 | if (prevWhiteSpace !== 'pre') element.style.whiteSpace = 'pre-wrap'; 303 | 304 | if (opts!.indentation) { 305 | element.style.tabSize = (element.style as any).MozTabSize = 306 | '' + opts!.indentation; 307 | } 308 | 309 | const indentPattern = `${' '.repeat(opts!.indentation || 0)}`; 310 | const indentRe = new RegExp(`^(?:${indentPattern})`); 311 | const blanklineRe = new RegExp(`^(?:${indentPattern})*(${indentPattern})$`); 312 | 313 | let _trackStateTimestamp: number; 314 | const trackState = (ignoreTimestamp?: boolean) => { 315 | if (!elementRef.current || !state.position) return; 316 | 317 | const content = toString(element); 318 | const position = getPosition(element); 319 | const timestamp = new Date().valueOf(); 320 | 321 | // Prevent recording new state in list if last one has been new enough 322 | const lastEntry = state.history[state.historyAt]; 323 | if ( 324 | (!ignoreTimestamp && timestamp - _trackStateTimestamp < 500) || 325 | (lastEntry && lastEntry[1] === content) 326 | ) { 327 | _trackStateTimestamp = timestamp; 328 | return; 329 | } 330 | 331 | const at = ++state.historyAt; 332 | state.history[at] = [position, content]; 333 | state.history.splice(at + 1); 334 | if (at > 500) { 335 | state.historyAt--; 336 | state.history.shift(); 337 | } 338 | }; 339 | 340 | const disconnect = () => { 341 | state.observer.disconnect(); 342 | state.disconnected = true; 343 | }; 344 | 345 | const flushChanges = () => { 346 | state.queue.push(...state.observer.takeRecords()); 347 | const position = getPosition(element); 348 | if (state.queue.length) { 349 | disconnect(); 350 | const content = toString(element); 351 | state.position = position; 352 | let mutation: MutationRecord | void; 353 | let i = 0; 354 | while ((mutation = state.queue.pop())) { 355 | if (mutation.oldValue !== null) 356 | mutation.target.textContent = mutation.oldValue; 357 | for (i = mutation.removedNodes.length - 1; i >= 0; i--) 358 | mutation.target.insertBefore( 359 | mutation.removedNodes[i], 360 | mutation.nextSibling 361 | ); 362 | for (i = mutation.addedNodes.length - 1; i >= 0; i--) 363 | if (mutation.addedNodes[i].parentNode) 364 | mutation.target.removeChild(mutation.addedNodes[i]); 365 | } 366 | 367 | state.onChange(content, position); 368 | } 369 | }; 370 | 371 | const onKeyDown = (event: HTMLElementEventMap['keydown']) => { 372 | if (event.defaultPrevented || event.target !== element) { 373 | return; 374 | } else if (state.disconnected) { 375 | // React Quirk: It's expected that we may lose events while disconnected, which is why 376 | // we'd like to block some inputs if they're unusually fast. However, this always 377 | // coincides with React not executing the update immediately and then getting stuck, 378 | // which can be prevented by issuing a dummy state change. 379 | event.preventDefault(); 380 | return unblock([]); 381 | } 382 | 383 | if (isUndoRedoKey(event)) { 384 | event.preventDefault(); 385 | 386 | let history: History; 387 | if (!event.shiftKey) { 388 | const at = --state.historyAt; 389 | history = state.history[at]; 390 | if (!history) state.historyAt = 0; 391 | } else { 392 | const at = ++state.historyAt; 393 | history = state.history[at]; 394 | if (!history) state.historyAt = state.history.length - 1; 395 | } 396 | 397 | if (history) { 398 | disconnect(); 399 | state.position = history[0]; 400 | state.onChange(history[1], history[0]); 401 | } 402 | return; 403 | } else { 404 | trackState(); 405 | } 406 | 407 | if (event.key === 'Enter') { 408 | event.preventDefault(); 409 | // Firefox Quirk: Since plaintext-only is unsupported we must 410 | // ensure that only newline characters are inserted 411 | const position = getPosition(element); 412 | // We also get the current line and preserve indentation for the next 413 | // line that's created 414 | const match = /\S/g.exec(position.content); 415 | const index = match ? match.index : position.content.length; 416 | const text = '\n' + position.content.slice(0, index); 417 | edit.insert(text); 418 | } else if ( 419 | (!hasPlaintextSupport || opts!.indentation) && 420 | event.key === 'Backspace' 421 | ) { 422 | // Firefox Quirk: Since plaintext-only is unsupported we must 423 | // ensure that only a single character is deleted 424 | event.preventDefault(); 425 | const range = getCurrentRange(); 426 | if (!range.collapsed) { 427 | edit.insert('', 0); 428 | } else { 429 | const position = getPosition(element); 430 | const match = blanklineRe.exec(position.content); 431 | edit.insert('', match ? -match[1].length : -1); 432 | } 433 | } else if (opts!.indentation && event.key === 'Tab') { 434 | event.preventDefault(); 435 | const position = getPosition(element); 436 | const start = position.position - position.content.length; 437 | const content = toString(element); 438 | const newContent = event.shiftKey 439 | ? content.slice(0, start) + 440 | position.content.replace(indentRe, '') + 441 | content.slice(start + position.content.length) 442 | : content.slice(0, start) + 443 | (opts!.indentation ? ' '.repeat(opts!.indentation) : '\t') + 444 | content.slice(start); 445 | edit.update(newContent); 446 | } 447 | 448 | // Flush changes as a key is held so the app can catch up 449 | if (event.repeat) flushChanges(); 450 | }; 451 | 452 | const onKeyUp = (event: HTMLElementEventMap['keyup']) => { 453 | if (event.defaultPrevented || event.isComposing) return; 454 | if (!isUndoRedoKey(event)) trackState(); 455 | flushChanges(); 456 | // Chrome Quirk: The contenteditable may lose focus after the first edit or so 457 | element.focus(); 458 | }; 459 | 460 | const onSelect = (event: Event) => { 461 | // Chrome Quirk: The contenteditable may lose its selection immediately on first focus 462 | state.position = 463 | window.getSelection()!.rangeCount && event.target === element 464 | ? getPosition(element) 465 | : null; 466 | }; 467 | 468 | const onPaste = (event: HTMLElementEventMap['paste']) => { 469 | event.preventDefault(); 470 | trackState(true); 471 | edit.insert(event.clipboardData!.getData('text/plain')); 472 | trackState(true); 473 | flushChanges(); 474 | }; 475 | 476 | document.addEventListener('selectstart', onSelect); 477 | window.addEventListener('keydown', onKeyDown); 478 | element.addEventListener('paste', onPaste); 479 | element.addEventListener('keyup', onKeyUp); 480 | 481 | return () => { 482 | document.removeEventListener('selectstart', onSelect); 483 | window.removeEventListener('keydown', onKeyDown); 484 | element.removeEventListener('paste', onPaste); 485 | element.removeEventListener('keyup', onKeyUp); 486 | element.style.whiteSpace = prevWhiteSpace; 487 | element.contentEditable = prevContentEditable; 488 | }; 489 | }, [elementRef.current!, opts!.disabled, opts!.indentation]); 490 | 491 | return edit; 492 | }; 493 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./", 4 | "esModuleInterop": true, 5 | "forceConsistentCasingInFileNames": true, 6 | "noUnusedLocals": true, 7 | "noEmit": true, 8 | "lib": ["dom", "esnext"], 9 | "jsx": "react", 10 | "module": "es2015", 11 | "moduleResolution": "node", 12 | "target": "esnext", 13 | "strict": true, 14 | "noImplicitAny": false, 15 | "noUnusedParameters": true 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /use-editable-Hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FormidableLabs/use-editable/008a0b51a9bc7c9812fe74633b4117bd74477627/use-editable-Hero.png -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@0.2.0": 6 | version "0.2.0" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-0.2.0.tgz#07290a5c0f5eac8a4c33d38aa0d15a3416db432e" 8 | integrity sha512-a4EztS9/GOVQjX5Ol+Iz33TFhaXvYBF7aB6D8+Qz0/SCIxOm3UNRhGZiwcCuJ8/Ifc6NCogp3S48kc5hFxRpUw== 9 | dependencies: 10 | "@jridgewell/resolve-uri" "1.0.0" 11 | sourcemap-codec "1.4.8" 12 | 13 | "@ampproject/rollup-plugin-closure-compiler@^0.26.0": 14 | version "0.26.0" 15 | resolved "https://registry.yarnpkg.com/@ampproject/rollup-plugin-closure-compiler/-/rollup-plugin-closure-compiler-0.26.0.tgz#69f8265e5fdbf3e26905eaaedc60cb5982bd6be0" 16 | integrity sha512-wuHzGE6BDhDR0L7nUPlpQDPGiGnMw+b0B+cDPG0S5TatOmFNQva8KSNdBHan3L9RbvNyYXOXicuCrZtSoBfrBg== 17 | dependencies: 18 | "@ampproject/remapping" "0.2.0" 19 | acorn "7.2.0" 20 | acorn-walk "7.1.1" 21 | estree-walker "2.0.1" 22 | google-closure-compiler "20200517.0.0" 23 | magic-string "0.25.7" 24 | uuid "8.1.0" 25 | 26 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": 27 | version "7.10.4" 28 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" 29 | integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== 30 | dependencies: 31 | "@babel/highlight" "^7.10.4" 32 | 33 | "@babel/core@^7.11.6": 34 | version "7.11.6" 35 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" 36 | integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== 37 | dependencies: 38 | "@babel/code-frame" "^7.10.4" 39 | "@babel/generator" "^7.11.6" 40 | "@babel/helper-module-transforms" "^7.11.0" 41 | "@babel/helpers" "^7.10.4" 42 | "@babel/parser" "^7.11.5" 43 | "@babel/template" "^7.10.4" 44 | "@babel/traverse" "^7.11.5" 45 | "@babel/types" "^7.11.5" 46 | convert-source-map "^1.7.0" 47 | debug "^4.1.0" 48 | gensync "^1.0.0-beta.1" 49 | json5 "^2.1.2" 50 | lodash "^4.17.19" 51 | resolve "^1.3.2" 52 | semver "^5.4.1" 53 | source-map "^0.5.0" 54 | 55 | "@babel/generator@^7.11.5", "@babel/generator@^7.11.6": 56 | version "7.11.6" 57 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" 58 | integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== 59 | dependencies: 60 | "@babel/types" "^7.11.5" 61 | jsesc "^2.5.1" 62 | source-map "^0.5.0" 63 | 64 | "@babel/helper-function-name@^7.10.4": 65 | version "7.10.4" 66 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" 67 | integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== 68 | dependencies: 69 | "@babel/helper-get-function-arity" "^7.10.4" 70 | "@babel/template" "^7.10.4" 71 | "@babel/types" "^7.10.4" 72 | 73 | "@babel/helper-get-function-arity@^7.10.4": 74 | version "7.10.4" 75 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" 76 | integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== 77 | dependencies: 78 | "@babel/types" "^7.10.4" 79 | 80 | "@babel/helper-member-expression-to-functions@^7.10.4": 81 | version "7.11.0" 82 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" 83 | integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== 84 | dependencies: 85 | "@babel/types" "^7.11.0" 86 | 87 | "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4": 88 | version "7.10.4" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" 90 | integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== 91 | dependencies: 92 | "@babel/types" "^7.10.4" 93 | 94 | "@babel/helper-module-transforms@^7.11.0": 95 | version "7.11.0" 96 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" 97 | integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== 98 | dependencies: 99 | "@babel/helper-module-imports" "^7.10.4" 100 | "@babel/helper-replace-supers" "^7.10.4" 101 | "@babel/helper-simple-access" "^7.10.4" 102 | "@babel/helper-split-export-declaration" "^7.11.0" 103 | "@babel/template" "^7.10.4" 104 | "@babel/types" "^7.11.0" 105 | lodash "^4.17.19" 106 | 107 | "@babel/helper-optimise-call-expression@^7.10.4": 108 | version "7.10.4" 109 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" 110 | integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== 111 | dependencies: 112 | "@babel/types" "^7.10.4" 113 | 114 | "@babel/helper-plugin-utils@^7.10.4": 115 | version "7.10.4" 116 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" 117 | integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== 118 | 119 | "@babel/helper-replace-supers@^7.10.4": 120 | version "7.10.4" 121 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" 122 | integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== 123 | dependencies: 124 | "@babel/helper-member-expression-to-functions" "^7.10.4" 125 | "@babel/helper-optimise-call-expression" "^7.10.4" 126 | "@babel/traverse" "^7.10.4" 127 | "@babel/types" "^7.10.4" 128 | 129 | "@babel/helper-simple-access@^7.10.4": 130 | version "7.10.4" 131 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" 132 | integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== 133 | dependencies: 134 | "@babel/template" "^7.10.4" 135 | "@babel/types" "^7.10.4" 136 | 137 | "@babel/helper-split-export-declaration@^7.11.0": 138 | version "7.11.0" 139 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" 140 | integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== 141 | dependencies: 142 | "@babel/types" "^7.11.0" 143 | 144 | "@babel/helper-validator-identifier@^7.10.4": 145 | version "7.10.4" 146 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" 147 | integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== 148 | 149 | "@babel/helpers@^7.10.4": 150 | version "7.10.4" 151 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" 152 | integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== 153 | dependencies: 154 | "@babel/template" "^7.10.4" 155 | "@babel/traverse" "^7.10.4" 156 | "@babel/types" "^7.10.4" 157 | 158 | "@babel/highlight@^7.10.4": 159 | version "7.10.4" 160 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" 161 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== 162 | dependencies: 163 | "@babel/helper-validator-identifier" "^7.10.4" 164 | chalk "^2.0.0" 165 | js-tokens "^4.0.0" 166 | 167 | "@babel/parser@^7.10.4", "@babel/parser@^7.11.5": 168 | version "7.11.5" 169 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" 170 | integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== 171 | 172 | "@babel/plugin-transform-object-assign@^7.10.4": 173 | version "7.10.4" 174 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.10.4.tgz#f7c8f54ce8052ccd8b9da9b3358848423221c338" 175 | integrity sha512-6zccDhYEICfMeQqIjuY5G09/yhKzG30DKHJeYBQUHIsJH7c2jXSGvgwRalufLAXAq432OSlsEfAOLlzEsQzxVw== 176 | dependencies: 177 | "@babel/helper-plugin-utils" "^7.10.4" 178 | 179 | "@babel/template@^7.10.4": 180 | version "7.10.4" 181 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" 182 | integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== 183 | dependencies: 184 | "@babel/code-frame" "^7.10.4" 185 | "@babel/parser" "^7.10.4" 186 | "@babel/types" "^7.10.4" 187 | 188 | "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": 189 | version "7.11.5" 190 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" 191 | integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== 192 | dependencies: 193 | "@babel/code-frame" "^7.10.4" 194 | "@babel/generator" "^7.11.5" 195 | "@babel/helper-function-name" "^7.10.4" 196 | "@babel/helper-split-export-declaration" "^7.11.0" 197 | "@babel/parser" "^7.11.5" 198 | "@babel/types" "^7.11.5" 199 | debug "^4.1.0" 200 | globals "^11.1.0" 201 | lodash "^4.17.19" 202 | 203 | "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5": 204 | version "7.11.5" 205 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" 206 | integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== 207 | dependencies: 208 | "@babel/helper-validator-identifier" "^7.10.4" 209 | lodash "^4.17.19" 210 | to-fast-properties "^2.0.0" 211 | 212 | "@jridgewell/resolve-uri@1.0.0": 213 | version "1.0.0" 214 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz#3fdf5798f0b49e90155896f6291df186eac06c83" 215 | integrity sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA== 216 | 217 | "@rollup/plugin-buble@^0.21.3": 218 | version "0.21.3" 219 | resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz#1649a915b1d051a4f430d40e7734a7f67a69b33e" 220 | integrity sha512-Iv8cCuFPnMdqV4pcyU+OrfjOfagPArRQ1PyQjx5KgHk3dARedI+8PNTLSMpJts0lQJr8yF2pAU4GxpxCBJ9HYw== 221 | dependencies: 222 | "@rollup/pluginutils" "^3.0.8" 223 | "@types/buble" "^0.19.2" 224 | buble "^0.20.0" 225 | 226 | "@rollup/plugin-commonjs@^15.0.0": 227 | version "15.0.0" 228 | resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-15.0.0.tgz#690d15a9d54ba829db93555bff9b98ff34e08574" 229 | integrity sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w== 230 | dependencies: 231 | "@rollup/pluginutils" "^3.1.0" 232 | commondir "^1.0.1" 233 | estree-walker "^2.0.1" 234 | glob "^7.1.6" 235 | is-reference "^1.2.1" 236 | magic-string "^0.25.7" 237 | resolve "^1.17.0" 238 | 239 | "@rollup/plugin-node-resolve@^9.0.0": 240 | version "9.0.0" 241 | resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6" 242 | integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg== 243 | dependencies: 244 | "@rollup/pluginutils" "^3.1.0" 245 | "@types/resolve" "1.17.1" 246 | builtin-modules "^3.1.0" 247 | deepmerge "^4.2.2" 248 | is-module "^1.0.0" 249 | resolve "^1.17.0" 250 | 251 | "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": 252 | version "3.1.0" 253 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" 254 | integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== 255 | dependencies: 256 | "@types/estree" "0.0.39" 257 | estree-walker "^1.0.1" 258 | picomatch "^2.2.2" 259 | 260 | "@types/buble@^0.19.2": 261 | version "0.19.2" 262 | resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" 263 | integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q== 264 | dependencies: 265 | magic-string "^0.25.0" 266 | 267 | "@types/color-name@^1.1.1": 268 | version "1.1.1" 269 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 270 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 271 | 272 | "@types/estree@*": 273 | version "0.0.45" 274 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" 275 | integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== 276 | 277 | "@types/estree@0.0.39": 278 | version "0.0.39" 279 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 280 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 281 | 282 | "@types/node@*": 283 | version "14.11.1" 284 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.1.tgz#56af902ad157e763f9ba63d671c39cda3193c835" 285 | integrity sha512-oTQgnd0hblfLsJ6BvJzzSL+Inogp3lq9fGgqRkMB/ziKMgEUaFl801OncOzUmalfzt14N0oPHMK47ipl+wbTIw== 286 | 287 | "@types/parse-json@^4.0.0": 288 | version "4.0.0" 289 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 290 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 291 | 292 | "@types/prop-types@*": 293 | version "15.7.3" 294 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" 295 | integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== 296 | 297 | "@types/react@^16.9.49": 298 | version "16.9.49" 299 | resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.49.tgz#09db021cf8089aba0cdb12a49f8021a69cce4872" 300 | integrity sha512-DtLFjSj0OYAdVLBbyjhuV9CdGVHCkHn2R+xr3XkBvK2rS1Y1tkc14XSGjYgm5Fjjr90AxH9tiSzc1pCFMGO06g== 301 | dependencies: 302 | "@types/prop-types" "*" 303 | csstype "^3.0.2" 304 | 305 | "@types/resolve@1.17.1": 306 | version "1.17.1" 307 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" 308 | integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== 309 | dependencies: 310 | "@types/node" "*" 311 | 312 | acorn-dynamic-import@^4.0.0: 313 | version "4.0.0" 314 | resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" 315 | integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== 316 | 317 | acorn-jsx@^5.2.0: 318 | version "5.3.1" 319 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 320 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 321 | 322 | acorn-walk@7.1.1: 323 | version "7.1.1" 324 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" 325 | integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== 326 | 327 | acorn@7.2.0: 328 | version "7.2.0" 329 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" 330 | integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== 331 | 332 | acorn@^6.4.1: 333 | version "6.4.1" 334 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" 335 | integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== 336 | 337 | aggregate-error@^3.0.0: 338 | version "3.1.0" 339 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" 340 | integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== 341 | dependencies: 342 | clean-stack "^2.0.0" 343 | indent-string "^4.0.0" 344 | 345 | ansi-colors@^4.1.1: 346 | version "4.1.1" 347 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 348 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 349 | 350 | ansi-escapes@^4.3.0: 351 | version "4.3.1" 352 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 353 | integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== 354 | dependencies: 355 | type-fest "^0.11.0" 356 | 357 | ansi-regex@^5.0.0: 358 | version "5.0.0" 359 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 360 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 361 | 362 | ansi-styles@^3.2.1: 363 | version "3.2.1" 364 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 365 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 366 | dependencies: 367 | color-convert "^1.9.0" 368 | 369 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 370 | version "4.2.1" 371 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 372 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 373 | dependencies: 374 | "@types/color-name" "^1.1.1" 375 | color-convert "^2.0.1" 376 | 377 | astral-regex@^2.0.0: 378 | version "2.0.0" 379 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 380 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 381 | 382 | babel-plugin-closure-elimination@^1.3.2: 383 | version "1.3.2" 384 | resolved "https://registry.yarnpkg.com/babel-plugin-closure-elimination/-/babel-plugin-closure-elimination-1.3.2.tgz#2c9a90360bdf888fd3b3694391a745a70ce18c34" 385 | integrity sha512-GJnezbVp5ejiwh74fXJPznsrrWHR9bTuJV20FhXivbgEtg1WyNG/9KaDyHEpfU7G9iB6Gy+F2UffYLZ7DJh+Jw== 386 | 387 | balanced-match@^1.0.0: 388 | version "1.0.0" 389 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 390 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 391 | 392 | brace-expansion@^1.1.7: 393 | version "1.1.11" 394 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 395 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 396 | dependencies: 397 | balanced-match "^1.0.0" 398 | concat-map "0.0.1" 399 | 400 | braces@^3.0.1: 401 | version "3.0.2" 402 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 403 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 404 | dependencies: 405 | fill-range "^7.0.1" 406 | 407 | buble@^0.20.0: 408 | version "0.20.0" 409 | resolved "https://registry.yarnpkg.com/buble/-/buble-0.20.0.tgz#a143979a8d968b7f76b57f38f2e7ce7cfe938d1f" 410 | integrity sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw== 411 | dependencies: 412 | acorn "^6.4.1" 413 | acorn-dynamic-import "^4.0.0" 414 | acorn-jsx "^5.2.0" 415 | chalk "^2.4.2" 416 | magic-string "^0.25.7" 417 | minimist "^1.2.5" 418 | regexpu-core "4.5.4" 419 | 420 | buffer-from@^1.0.0: 421 | version "1.1.1" 422 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 423 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 424 | 425 | builtin-modules@^3.1.0: 426 | version "3.1.0" 427 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 428 | integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 429 | 430 | callsites@^3.0.0: 431 | version "3.1.0" 432 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 433 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 434 | 435 | chalk@2.x, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: 436 | version "2.4.2" 437 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 438 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 439 | dependencies: 440 | ansi-styles "^3.2.1" 441 | escape-string-regexp "^1.0.5" 442 | supports-color "^5.3.0" 443 | 444 | chalk@^4.0.0, chalk@^4.1.0: 445 | version "4.1.0" 446 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 447 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 448 | dependencies: 449 | ansi-styles "^4.1.0" 450 | supports-color "^7.1.0" 451 | 452 | ci-info@^2.0.0: 453 | version "2.0.0" 454 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 455 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 456 | 457 | clean-stack@^2.0.0: 458 | version "2.2.0" 459 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 460 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 461 | 462 | cli-cursor@^3.1.0: 463 | version "3.1.0" 464 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 465 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 466 | dependencies: 467 | restore-cursor "^3.1.0" 468 | 469 | cli-truncate@^2.1.0: 470 | version "2.1.0" 471 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 472 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 473 | dependencies: 474 | slice-ansi "^3.0.0" 475 | string-width "^4.2.0" 476 | 477 | clone-buffer@^1.0.0: 478 | version "1.0.0" 479 | resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" 480 | integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= 481 | 482 | clone-stats@^1.0.0: 483 | version "1.0.0" 484 | resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" 485 | integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= 486 | 487 | clone@^2.1.1: 488 | version "2.1.2" 489 | resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" 490 | integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= 491 | 492 | cloneable-readable@^1.0.0: 493 | version "1.1.3" 494 | resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" 495 | integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== 496 | dependencies: 497 | inherits "^2.0.1" 498 | process-nextick-args "^2.0.0" 499 | readable-stream "^2.3.5" 500 | 501 | color-convert@^1.9.0: 502 | version "1.9.3" 503 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 504 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 505 | dependencies: 506 | color-name "1.1.3" 507 | 508 | color-convert@^2.0.1: 509 | version "2.0.1" 510 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 511 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 512 | dependencies: 513 | color-name "~1.1.4" 514 | 515 | color-name@1.1.3: 516 | version "1.1.3" 517 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 518 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 519 | 520 | color-name@~1.1.4: 521 | version "1.1.4" 522 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 523 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 524 | 525 | commander@^2.20.0: 526 | version "2.20.3" 527 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 528 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 529 | 530 | commander@^6.0.0: 531 | version "6.1.0" 532 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" 533 | integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== 534 | 535 | commondir@^1.0.1: 536 | version "1.0.1" 537 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 538 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 539 | 540 | compare-versions@^3.6.0: 541 | version "3.6.0" 542 | resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" 543 | integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== 544 | 545 | concat-map@0.0.1: 546 | version "0.0.1" 547 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 548 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 549 | 550 | convert-source-map@^1.7.0: 551 | version "1.7.0" 552 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 553 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 554 | dependencies: 555 | safe-buffer "~5.1.1" 556 | 557 | core-util-is@~1.0.0: 558 | version "1.0.2" 559 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 560 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 561 | 562 | cosmiconfig@^7.0.0: 563 | version "7.0.0" 564 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" 565 | integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== 566 | dependencies: 567 | "@types/parse-json" "^4.0.0" 568 | import-fresh "^3.2.1" 569 | parse-json "^5.0.0" 570 | path-type "^4.0.0" 571 | yaml "^1.10.0" 572 | 573 | cross-spawn@^6.0.5: 574 | version "6.0.5" 575 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 576 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 577 | dependencies: 578 | nice-try "^1.0.4" 579 | path-key "^2.0.1" 580 | semver "^5.5.0" 581 | shebang-command "^1.2.0" 582 | which "^1.2.9" 583 | 584 | cross-spawn@^7.0.0: 585 | version "7.0.3" 586 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 587 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 588 | dependencies: 589 | path-key "^3.1.0" 590 | shebang-command "^2.0.0" 591 | which "^2.0.1" 592 | 593 | csstype@^3.0.2: 594 | version "3.0.3" 595 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" 596 | integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== 597 | 598 | debug@^4.1.0, debug@^4.1.1: 599 | version "4.2.0" 600 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" 601 | integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== 602 | dependencies: 603 | ms "2.1.2" 604 | 605 | dedent@^0.7.0: 606 | version "0.7.0" 607 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 608 | integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= 609 | 610 | deepmerge@^4.2.2: 611 | version "4.2.2" 612 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 613 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 614 | 615 | define-properties@^1.1.3: 616 | version "1.1.3" 617 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 618 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 619 | dependencies: 620 | object-keys "^1.0.12" 621 | 622 | emoji-regex@^8.0.0: 623 | version "8.0.0" 624 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 625 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 626 | 627 | end-of-stream@^1.1.0: 628 | version "1.4.4" 629 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 630 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 631 | dependencies: 632 | once "^1.4.0" 633 | 634 | enquirer@^2.3.6: 635 | version "2.3.6" 636 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 637 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 638 | dependencies: 639 | ansi-colors "^4.1.1" 640 | 641 | error-ex@^1.3.1: 642 | version "1.3.2" 643 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 644 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 645 | dependencies: 646 | is-arrayish "^0.2.1" 647 | 648 | es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: 649 | version "1.17.6" 650 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" 651 | integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== 652 | dependencies: 653 | es-to-primitive "^1.2.1" 654 | function-bind "^1.1.1" 655 | has "^1.0.3" 656 | has-symbols "^1.0.1" 657 | is-callable "^1.2.0" 658 | is-regex "^1.1.0" 659 | object-inspect "^1.7.0" 660 | object-keys "^1.1.1" 661 | object.assign "^4.1.0" 662 | string.prototype.trimend "^1.0.1" 663 | string.prototype.trimstart "^1.0.1" 664 | 665 | es-abstract@^1.18.0-next.0: 666 | version "1.18.0-next.0" 667 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc" 668 | integrity sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ== 669 | dependencies: 670 | es-to-primitive "^1.2.1" 671 | function-bind "^1.1.1" 672 | has "^1.0.3" 673 | has-symbols "^1.0.1" 674 | is-callable "^1.2.0" 675 | is-negative-zero "^2.0.0" 676 | is-regex "^1.1.1" 677 | object-inspect "^1.8.0" 678 | object-keys "^1.1.1" 679 | object.assign "^4.1.0" 680 | string.prototype.trimend "^1.0.1" 681 | string.prototype.trimstart "^1.0.1" 682 | 683 | es-to-primitive@^1.2.1: 684 | version "1.2.1" 685 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 686 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 687 | dependencies: 688 | is-callable "^1.1.4" 689 | is-date-object "^1.0.1" 690 | is-symbol "^1.0.2" 691 | 692 | escape-string-regexp@^1.0.5: 693 | version "1.0.5" 694 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 695 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 696 | 697 | estree-walker@2.0.1, estree-walker@^2.0.1: 698 | version "2.0.1" 699 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" 700 | integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== 701 | 702 | estree-walker@^0.6.1: 703 | version "0.6.1" 704 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 705 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 706 | 707 | estree-walker@^1.0.1: 708 | version "1.0.1" 709 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" 710 | integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== 711 | 712 | execa@^4.0.3: 713 | version "4.0.3" 714 | resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" 715 | integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== 716 | dependencies: 717 | cross-spawn "^7.0.0" 718 | get-stream "^5.0.0" 719 | human-signals "^1.1.1" 720 | is-stream "^2.0.0" 721 | merge-stream "^2.0.0" 722 | npm-run-path "^4.0.0" 723 | onetime "^5.1.0" 724 | signal-exit "^3.0.2" 725 | strip-final-newline "^2.0.0" 726 | 727 | figures@^3.2.0: 728 | version "3.2.0" 729 | resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 730 | integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 731 | dependencies: 732 | escape-string-regexp "^1.0.5" 733 | 734 | fill-range@^7.0.1: 735 | version "7.0.1" 736 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 737 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 738 | dependencies: 739 | to-regex-range "^5.0.1" 740 | 741 | find-cache-dir@^3.3.1: 742 | version "3.3.1" 743 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" 744 | integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== 745 | dependencies: 746 | commondir "^1.0.1" 747 | make-dir "^3.0.2" 748 | pkg-dir "^4.1.0" 749 | 750 | find-up@^4.0.0: 751 | version "4.1.0" 752 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 753 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 754 | dependencies: 755 | locate-path "^5.0.0" 756 | path-exists "^4.0.0" 757 | 758 | find-versions@^3.2.0: 759 | version "3.2.0" 760 | resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" 761 | integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== 762 | dependencies: 763 | semver-regex "^2.0.0" 764 | 765 | fs-extra@8.1.0: 766 | version "8.1.0" 767 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 768 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 769 | dependencies: 770 | graceful-fs "^4.2.0" 771 | jsonfile "^4.0.0" 772 | universalify "^0.1.0" 773 | 774 | fs.realpath@^1.0.0: 775 | version "1.0.0" 776 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 777 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 778 | 779 | fsevents@~2.1.2: 780 | version "2.1.3" 781 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 782 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 783 | 784 | function-bind@^1.1.1: 785 | version "1.1.1" 786 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 787 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 788 | 789 | gensync@^1.0.0-beta.1: 790 | version "1.0.0-beta.1" 791 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" 792 | integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== 793 | 794 | get-own-enumerable-property-symbols@^3.0.0: 795 | version "3.0.2" 796 | resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 797 | integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 798 | 799 | get-stream@^5.0.0: 800 | version "5.2.0" 801 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 802 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 803 | dependencies: 804 | pump "^3.0.0" 805 | 806 | glob@^7.1.6: 807 | version "7.1.6" 808 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 809 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 810 | dependencies: 811 | fs.realpath "^1.0.0" 812 | inflight "^1.0.4" 813 | inherits "2" 814 | minimatch "^3.0.4" 815 | once "^1.3.0" 816 | path-is-absolute "^1.0.0" 817 | 818 | globals@^11.1.0: 819 | version "11.12.0" 820 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 821 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 822 | 823 | google-closure-compiler-java@^20200517.0.0: 824 | version "20200517.0.0" 825 | resolved "https://registry.yarnpkg.com/google-closure-compiler-java/-/google-closure-compiler-java-20200517.0.0.tgz#778370c22273c9085f4cf959ce063f8f112c02ac" 826 | integrity sha512-JVZBiyyXwcYi6Yc3lO6dF2hMLJA4OzPm4/mgsem/tF1vk2HsWTnL3GTaBsPB2ENVZp0hoqsd4KgpPiG9ssNWxw== 827 | 828 | google-closure-compiler-js@^20200517.0.0: 829 | version "20200517.0.0" 830 | resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20200517.0.0.tgz#9cb0861f764073d1c4d3b7453b74073ccb1ecfb1" 831 | integrity sha512-dz6dOUHx5nhdIqMRXacAYS8aJfLvw4IKxGg28Hq/zeeDPHlX3P3iBK20NgFDfT8zdushThymtMqChSy7C5eyfA== 832 | 833 | google-closure-compiler-linux@^20200517.0.0: 834 | version "20200517.0.0" 835 | resolved "https://registry.yarnpkg.com/google-closure-compiler-linux/-/google-closure-compiler-linux-20200517.0.0.tgz#2b9ecb634130060174aff5c52329a694ea4be68b" 836 | integrity sha512-S5xPh6TtP+ESzZrmQLcDDqtZAsCVTbdI4VS98wQlN6IMZTd94nAnOCg9mrxQNAgop2t4sdsv/KuH0BGPUWEZ+w== 837 | 838 | google-closure-compiler-osx@^20200517.0.0: 839 | version "20200517.0.0" 840 | resolved "https://registry.yarnpkg.com/google-closure-compiler-osx/-/google-closure-compiler-osx-20200517.0.0.tgz#9394e9a2fd97e3729fc3bd2abcffff6aab2cfcaa" 841 | integrity sha512-FWIcsKqLllLjdOBZd7azijVaObydgRd0obVNi63eUfC5MX6T4qxKumGCyor2UCNY6by2ESz+PlGqCFzFhZ6b2g== 842 | 843 | google-closure-compiler-windows@^20200517.0.0: 844 | version "20200517.0.0" 845 | resolved "https://registry.yarnpkg.com/google-closure-compiler-windows/-/google-closure-compiler-windows-20200517.0.0.tgz#c5cdde438c29458666a83358567b12072924ed6c" 846 | integrity sha512-UXhjRGwS8deTkRla/riyVq3psscgMuw78lepEPtq5NgbumgJzY2+IQP9q+4MVOfJW58Rv0JUWKAFOnBBSZWcAQ== 847 | 848 | google-closure-compiler@20200517.0.0: 849 | version "20200517.0.0" 850 | resolved "https://registry.yarnpkg.com/google-closure-compiler/-/google-closure-compiler-20200517.0.0.tgz#6c47f99fc1be59bd4f9e23c5a8f2e66d64b54143" 851 | integrity sha512-80W9zBS9Ajk1T5InWCfsoPohDmo5T1AAyw1rHh5+dgb/jPgwC65KhY+oJozTncf+/7tyQHJXozTARwhSlBUcMg== 852 | dependencies: 853 | chalk "2.x" 854 | google-closure-compiler-java "^20200517.0.0" 855 | google-closure-compiler-js "^20200517.0.0" 856 | minimist "1.x" 857 | vinyl "2.x" 858 | vinyl-sourcemaps-apply "^0.2.0" 859 | optionalDependencies: 860 | google-closure-compiler-linux "^20200517.0.0" 861 | google-closure-compiler-osx "^20200517.0.0" 862 | google-closure-compiler-windows "^20200517.0.0" 863 | 864 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: 865 | version "4.2.4" 866 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 867 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 868 | 869 | has-flag@^3.0.0: 870 | version "3.0.0" 871 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 872 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 873 | 874 | has-flag@^4.0.0: 875 | version "4.0.0" 876 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 877 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 878 | 879 | has-symbols@^1.0.1: 880 | version "1.0.1" 881 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 882 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 883 | 884 | has@^1.0.3: 885 | version "1.0.3" 886 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 887 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 888 | dependencies: 889 | function-bind "^1.1.1" 890 | 891 | hosted-git-info@^2.1.4: 892 | version "2.8.8" 893 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" 894 | integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== 895 | 896 | human-signals@^1.1.1: 897 | version "1.1.1" 898 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" 899 | integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== 900 | 901 | husky@^4.3.0: 902 | version "4.3.0" 903 | resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.0.tgz#0b2ec1d66424e9219d359e26a51c58ec5278f0de" 904 | integrity sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA== 905 | dependencies: 906 | chalk "^4.0.0" 907 | ci-info "^2.0.0" 908 | compare-versions "^3.6.0" 909 | cosmiconfig "^7.0.0" 910 | find-versions "^3.2.0" 911 | opencollective-postinstall "^2.0.2" 912 | pkg-dir "^4.2.0" 913 | please-upgrade-node "^3.2.0" 914 | slash "^3.0.0" 915 | which-pm-runs "^1.0.0" 916 | 917 | import-fresh@^3.2.1: 918 | version "3.2.1" 919 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 920 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 921 | dependencies: 922 | parent-module "^1.0.0" 923 | resolve-from "^4.0.0" 924 | 925 | indent-string@^4.0.0: 926 | version "4.0.0" 927 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 928 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 929 | 930 | inflight@^1.0.4: 931 | version "1.0.6" 932 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 933 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 934 | dependencies: 935 | once "^1.3.0" 936 | wrappy "1" 937 | 938 | inherits@2, inherits@^2.0.1, inherits@~2.0.3: 939 | version "2.0.4" 940 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 941 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 942 | 943 | is-arrayish@^0.2.1: 944 | version "0.2.1" 945 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 946 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 947 | 948 | is-callable@^1.1.4, is-callable@^1.2.0: 949 | version "1.2.1" 950 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.1.tgz#4d1e21a4f437509d25ce55f8184350771421c96d" 951 | integrity sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg== 952 | 953 | is-date-object@^1.0.1: 954 | version "1.0.2" 955 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 956 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 957 | 958 | is-fullwidth-code-point@^3.0.0: 959 | version "3.0.0" 960 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 961 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 962 | 963 | is-module@^1.0.0: 964 | version "1.0.0" 965 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 966 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 967 | 968 | is-negative-zero@^2.0.0: 969 | version "2.0.0" 970 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" 971 | integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= 972 | 973 | is-number@^7.0.0: 974 | version "7.0.0" 975 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 976 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 977 | 978 | is-obj@^1.0.1: 979 | version "1.0.1" 980 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 981 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 982 | 983 | is-reference@^1.2.1: 984 | version "1.2.1" 985 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" 986 | integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== 987 | dependencies: 988 | "@types/estree" "*" 989 | 990 | is-regex@^1.1.0, is-regex@^1.1.1: 991 | version "1.1.1" 992 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" 993 | integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== 994 | dependencies: 995 | has-symbols "^1.0.1" 996 | 997 | is-regexp@^1.0.0: 998 | version "1.0.0" 999 | resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 1000 | integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 1001 | 1002 | is-stream@^2.0.0: 1003 | version "2.0.0" 1004 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 1005 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 1006 | 1007 | is-symbol@^1.0.2: 1008 | version "1.0.3" 1009 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 1010 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 1011 | dependencies: 1012 | has-symbols "^1.0.1" 1013 | 1014 | isarray@~1.0.0: 1015 | version "1.0.0" 1016 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1017 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1018 | 1019 | isexe@^2.0.0: 1020 | version "2.0.0" 1021 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1022 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1023 | 1024 | jest-worker@^26.2.1: 1025 | version "26.3.0" 1026 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" 1027 | integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== 1028 | dependencies: 1029 | "@types/node" "*" 1030 | merge-stream "^2.0.0" 1031 | supports-color "^7.0.0" 1032 | 1033 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1034 | version "4.0.0" 1035 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1036 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1037 | 1038 | jsesc@^2.5.1: 1039 | version "2.5.2" 1040 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1041 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1042 | 1043 | jsesc@~0.5.0: 1044 | version "0.5.0" 1045 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1046 | integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 1047 | 1048 | json-parse-better-errors@^1.0.1: 1049 | version "1.0.2" 1050 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1051 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1052 | 1053 | json-parse-even-better-errors@^2.3.0: 1054 | version "2.3.1" 1055 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1056 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1057 | 1058 | json5@^2.1.2: 1059 | version "2.1.3" 1060 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" 1061 | integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== 1062 | dependencies: 1063 | minimist "^1.2.5" 1064 | 1065 | jsonfile@^4.0.0: 1066 | version "4.0.0" 1067 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1068 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 1069 | optionalDependencies: 1070 | graceful-fs "^4.1.6" 1071 | 1072 | lines-and-columns@^1.1.6: 1073 | version "1.1.6" 1074 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 1075 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 1076 | 1077 | lint-staged@^10.4.0: 1078 | version "10.4.0" 1079 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.4.0.tgz#d18628f737328e0bbbf87d183f4020930e9a984e" 1080 | integrity sha512-uaiX4U5yERUSiIEQc329vhCTDDwUcSvKdRLsNomkYLRzijk3v8V9GWm2Nz0RMVB87VcuzLvtgy6OsjoH++QHIg== 1081 | dependencies: 1082 | chalk "^4.1.0" 1083 | cli-truncate "^2.1.0" 1084 | commander "^6.0.0" 1085 | cosmiconfig "^7.0.0" 1086 | debug "^4.1.1" 1087 | dedent "^0.7.0" 1088 | enquirer "^2.3.6" 1089 | execa "^4.0.3" 1090 | listr2 "^2.6.0" 1091 | log-symbols "^4.0.0" 1092 | micromatch "^4.0.2" 1093 | normalize-path "^3.0.0" 1094 | please-upgrade-node "^3.2.0" 1095 | string-argv "0.3.1" 1096 | stringify-object "^3.3.0" 1097 | 1098 | listr2@^2.6.0: 1099 | version "2.6.2" 1100 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.6.2.tgz#4912eb01e1e2dd72ec37f3895a56bf2622d6f36a" 1101 | integrity sha512-6x6pKEMs8DSIpA/tixiYY2m/GcbgMplMVmhQAaLFxEtNSKLeWTGjtmU57xvv6QCm2XcqzyNXL/cTSVf4IChCRA== 1102 | dependencies: 1103 | chalk "^4.1.0" 1104 | cli-truncate "^2.1.0" 1105 | figures "^3.2.0" 1106 | indent-string "^4.0.0" 1107 | log-update "^4.0.0" 1108 | p-map "^4.0.0" 1109 | rxjs "^6.6.2" 1110 | through "^2.3.8" 1111 | 1112 | load-json-file@^4.0.0: 1113 | version "4.0.0" 1114 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 1115 | integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= 1116 | dependencies: 1117 | graceful-fs "^4.1.2" 1118 | parse-json "^4.0.0" 1119 | pify "^3.0.0" 1120 | strip-bom "^3.0.0" 1121 | 1122 | locate-path@^5.0.0: 1123 | version "5.0.0" 1124 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1125 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1126 | dependencies: 1127 | p-locate "^4.1.0" 1128 | 1129 | lodash@^4.17.19: 1130 | version "4.17.20" 1131 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 1132 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 1133 | 1134 | log-symbols@^4.0.0: 1135 | version "4.0.0" 1136 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" 1137 | integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== 1138 | dependencies: 1139 | chalk "^4.0.0" 1140 | 1141 | log-update@^4.0.0: 1142 | version "4.0.0" 1143 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" 1144 | integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 1145 | dependencies: 1146 | ansi-escapes "^4.3.0" 1147 | cli-cursor "^3.1.0" 1148 | slice-ansi "^4.0.0" 1149 | wrap-ansi "^6.2.0" 1150 | 1151 | loose-envify@^1.1.0, loose-envify@^1.4.0: 1152 | version "1.4.0" 1153 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1154 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1155 | dependencies: 1156 | js-tokens "^3.0.0 || ^4.0.0" 1157 | 1158 | magic-string@0.25.7, magic-string@^0.25.0, magic-string@^0.25.7: 1159 | version "0.25.7" 1160 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 1161 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 1162 | dependencies: 1163 | sourcemap-codec "^1.4.4" 1164 | 1165 | make-dir@^3.0.2: 1166 | version "3.1.0" 1167 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1168 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1169 | dependencies: 1170 | semver "^6.0.0" 1171 | 1172 | memorystream@^0.3.1: 1173 | version "0.3.1" 1174 | resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" 1175 | integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= 1176 | 1177 | merge-stream@^2.0.0: 1178 | version "2.0.0" 1179 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1180 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1181 | 1182 | micromatch@^4.0.2: 1183 | version "4.0.2" 1184 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 1185 | integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 1186 | dependencies: 1187 | braces "^3.0.1" 1188 | picomatch "^2.0.5" 1189 | 1190 | mimic-fn@^2.1.0: 1191 | version "2.1.0" 1192 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1193 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1194 | 1195 | minimatch@^3.0.4: 1196 | version "3.0.4" 1197 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1198 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1199 | dependencies: 1200 | brace-expansion "^1.1.7" 1201 | 1202 | minimist@1.x, minimist@^1.2.5: 1203 | version "1.2.5" 1204 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1205 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1206 | 1207 | ms@2.1.2: 1208 | version "2.1.2" 1209 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1210 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1211 | 1212 | nice-try@^1.0.4: 1213 | version "1.0.5" 1214 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1215 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1216 | 1217 | normalize-package-data@^2.3.2: 1218 | version "2.5.0" 1219 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1220 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1221 | dependencies: 1222 | hosted-git-info "^2.1.4" 1223 | resolve "^1.10.0" 1224 | semver "2 || 3 || 4 || 5" 1225 | validate-npm-package-license "^3.0.1" 1226 | 1227 | normalize-path@^3.0.0: 1228 | version "3.0.0" 1229 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1230 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1231 | 1232 | npm-run-all@^4.1.5: 1233 | version "4.1.5" 1234 | resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" 1235 | integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== 1236 | dependencies: 1237 | ansi-styles "^3.2.1" 1238 | chalk "^2.4.1" 1239 | cross-spawn "^6.0.5" 1240 | memorystream "^0.3.1" 1241 | minimatch "^3.0.4" 1242 | pidtree "^0.3.0" 1243 | read-pkg "^3.0.0" 1244 | shell-quote "^1.6.1" 1245 | string.prototype.padend "^3.0.0" 1246 | 1247 | npm-run-path@^4.0.0: 1248 | version "4.0.1" 1249 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 1250 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1251 | dependencies: 1252 | path-key "^3.0.0" 1253 | 1254 | object-assign@^4.1.1: 1255 | version "4.1.1" 1256 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1257 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1258 | 1259 | object-inspect@^1.7.0, object-inspect@^1.8.0: 1260 | version "1.8.0" 1261 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" 1262 | integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== 1263 | 1264 | object-keys@^1.0.12, object-keys@^1.1.1: 1265 | version "1.1.1" 1266 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1267 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1268 | 1269 | object.assign@^4.1.0: 1270 | version "4.1.1" 1271 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" 1272 | integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== 1273 | dependencies: 1274 | define-properties "^1.1.3" 1275 | es-abstract "^1.18.0-next.0" 1276 | has-symbols "^1.0.1" 1277 | object-keys "^1.1.1" 1278 | 1279 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1280 | version "1.4.0" 1281 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1282 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1283 | dependencies: 1284 | wrappy "1" 1285 | 1286 | onetime@^5.1.0: 1287 | version "5.1.2" 1288 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1289 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1290 | dependencies: 1291 | mimic-fn "^2.1.0" 1292 | 1293 | opencollective-postinstall@^2.0.2: 1294 | version "2.0.3" 1295 | resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" 1296 | integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== 1297 | 1298 | p-limit@^2.2.0: 1299 | version "2.3.0" 1300 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1301 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1302 | dependencies: 1303 | p-try "^2.0.0" 1304 | 1305 | p-locate@^4.1.0: 1306 | version "4.1.0" 1307 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1308 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1309 | dependencies: 1310 | p-limit "^2.2.0" 1311 | 1312 | p-map@^4.0.0: 1313 | version "4.0.0" 1314 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 1315 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 1316 | dependencies: 1317 | aggregate-error "^3.0.0" 1318 | 1319 | p-try@^2.0.0: 1320 | version "2.2.0" 1321 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1322 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1323 | 1324 | parent-module@^1.0.0: 1325 | version "1.0.1" 1326 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1327 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1328 | dependencies: 1329 | callsites "^3.0.0" 1330 | 1331 | parse-json@^4.0.0: 1332 | version "4.0.0" 1333 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1334 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 1335 | dependencies: 1336 | error-ex "^1.3.1" 1337 | json-parse-better-errors "^1.0.1" 1338 | 1339 | parse-json@^5.0.0: 1340 | version "5.1.0" 1341 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" 1342 | integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== 1343 | dependencies: 1344 | "@babel/code-frame" "^7.0.0" 1345 | error-ex "^1.3.1" 1346 | json-parse-even-better-errors "^2.3.0" 1347 | lines-and-columns "^1.1.6" 1348 | 1349 | path-exists@^4.0.0: 1350 | version "4.0.0" 1351 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1352 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1353 | 1354 | path-is-absolute@^1.0.0: 1355 | version "1.0.1" 1356 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1357 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1358 | 1359 | path-key@^2.0.1: 1360 | version "2.0.1" 1361 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1362 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1363 | 1364 | path-key@^3.0.0, path-key@^3.1.0: 1365 | version "3.1.1" 1366 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1367 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1368 | 1369 | path-parse@^1.0.6: 1370 | version "1.0.6" 1371 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1372 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1373 | 1374 | path-type@^3.0.0: 1375 | version "3.0.0" 1376 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 1377 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== 1378 | dependencies: 1379 | pify "^3.0.0" 1380 | 1381 | path-type@^4.0.0: 1382 | version "4.0.0" 1383 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1384 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1385 | 1386 | picomatch@^2.0.5, picomatch@^2.2.2: 1387 | version "2.2.2" 1388 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1389 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1390 | 1391 | pidtree@^0.3.0: 1392 | version "0.3.1" 1393 | resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" 1394 | integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== 1395 | 1396 | pify@^3.0.0: 1397 | version "3.0.0" 1398 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1399 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1400 | 1401 | pkg-dir@^4.1.0, pkg-dir@^4.2.0: 1402 | version "4.2.0" 1403 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1404 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1405 | dependencies: 1406 | find-up "^4.0.0" 1407 | 1408 | please-upgrade-node@^3.2.0: 1409 | version "3.2.0" 1410 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" 1411 | integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== 1412 | dependencies: 1413 | semver-compare "^1.0.0" 1414 | 1415 | prettier@^2.1.2: 1416 | version "2.1.2" 1417 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" 1418 | integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== 1419 | 1420 | process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: 1421 | version "2.0.1" 1422 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1423 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1424 | 1425 | prop-types@^15.6.2: 1426 | version "15.7.2" 1427 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" 1428 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== 1429 | dependencies: 1430 | loose-envify "^1.4.0" 1431 | object-assign "^4.1.1" 1432 | react-is "^16.8.1" 1433 | 1434 | pump@^3.0.0: 1435 | version "3.0.0" 1436 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1437 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1438 | dependencies: 1439 | end-of-stream "^1.1.0" 1440 | once "^1.3.1" 1441 | 1442 | randombytes@^2.1.0: 1443 | version "2.1.0" 1444 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1445 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1446 | dependencies: 1447 | safe-buffer "^5.1.0" 1448 | 1449 | react-is@^16.8.1: 1450 | version "16.13.1" 1451 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1452 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1453 | 1454 | react@^16.13.1: 1455 | version "16.13.1" 1456 | resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" 1457 | integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== 1458 | dependencies: 1459 | loose-envify "^1.1.0" 1460 | object-assign "^4.1.1" 1461 | prop-types "^15.6.2" 1462 | 1463 | read-pkg@^3.0.0: 1464 | version "3.0.0" 1465 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 1466 | integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= 1467 | dependencies: 1468 | load-json-file "^4.0.0" 1469 | normalize-package-data "^2.3.2" 1470 | path-type "^3.0.0" 1471 | 1472 | readable-stream@^2.3.5: 1473 | version "2.3.7" 1474 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1475 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1476 | dependencies: 1477 | core-util-is "~1.0.0" 1478 | inherits "~2.0.3" 1479 | isarray "~1.0.0" 1480 | process-nextick-args "~2.0.0" 1481 | safe-buffer "~5.1.1" 1482 | string_decoder "~1.1.1" 1483 | util-deprecate "~1.0.1" 1484 | 1485 | regenerate-unicode-properties@^8.0.2: 1486 | version "8.2.0" 1487 | resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" 1488 | integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== 1489 | dependencies: 1490 | regenerate "^1.4.0" 1491 | 1492 | regenerate@^1.4.0: 1493 | version "1.4.1" 1494 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" 1495 | integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== 1496 | 1497 | regexpu-core@4.5.4: 1498 | version "4.5.4" 1499 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" 1500 | integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== 1501 | dependencies: 1502 | regenerate "^1.4.0" 1503 | regenerate-unicode-properties "^8.0.2" 1504 | regjsgen "^0.5.0" 1505 | regjsparser "^0.6.0" 1506 | unicode-match-property-ecmascript "^1.0.4" 1507 | unicode-match-property-value-ecmascript "^1.1.0" 1508 | 1509 | regjsgen@^0.5.0: 1510 | version "0.5.2" 1511 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" 1512 | integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== 1513 | 1514 | regjsparser@^0.6.0: 1515 | version "0.6.4" 1516 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" 1517 | integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== 1518 | dependencies: 1519 | jsesc "~0.5.0" 1520 | 1521 | remove-trailing-separator@^1.0.1: 1522 | version "1.1.0" 1523 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 1524 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 1525 | 1526 | replace-ext@^1.0.0: 1527 | version "1.0.1" 1528 | resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" 1529 | integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== 1530 | 1531 | resolve-from@^4.0.0: 1532 | version "4.0.0" 1533 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1534 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1535 | 1536 | resolve@1.17.0, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2: 1537 | version "1.17.0" 1538 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 1539 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 1540 | dependencies: 1541 | path-parse "^1.0.6" 1542 | 1543 | restore-cursor@^3.1.0: 1544 | version "3.1.0" 1545 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1546 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1547 | dependencies: 1548 | onetime "^5.1.0" 1549 | signal-exit "^3.0.2" 1550 | 1551 | rollup-plugin-babel@^4.4.0: 1552 | version "4.4.0" 1553 | resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" 1554 | integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== 1555 | dependencies: 1556 | "@babel/helper-module-imports" "^7.0.0" 1557 | rollup-pluginutils "^2.8.1" 1558 | 1559 | rollup-plugin-terser@^7.0.2: 1560 | version "7.0.2" 1561 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" 1562 | integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== 1563 | dependencies: 1564 | "@babel/code-frame" "^7.10.4" 1565 | jest-worker "^26.2.1" 1566 | serialize-javascript "^4.0.0" 1567 | terser "^5.0.0" 1568 | 1569 | rollup-plugin-typescript2@^0.27.2: 1570 | version "0.27.2" 1571 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.2.tgz#871a7f5d2a774f9cef50d25da868eec72acc2ed8" 1572 | integrity sha512-zarMH2F8oT/NO6p20gl/jkts+WxyzOlhOIUwUU/EDx5e6ewdDPS/flwLj5XFuijUCr64bZwqKuRVwCPdXXYefQ== 1573 | dependencies: 1574 | "@rollup/pluginutils" "^3.1.0" 1575 | find-cache-dir "^3.3.1" 1576 | fs-extra "8.1.0" 1577 | resolve "1.17.0" 1578 | tslib "2.0.1" 1579 | 1580 | rollup-pluginutils@^2.8.1: 1581 | version "2.8.2" 1582 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" 1583 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== 1584 | dependencies: 1585 | estree-walker "^0.6.1" 1586 | 1587 | rollup@^2.27.1: 1588 | version "2.27.1" 1589 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.27.1.tgz#372744e1d36eba0fd942d997600c2fc2ca266305" 1590 | integrity sha512-GiWHQvnmMgBktSpY/1+nrGpwPsTw4b9P28og2uedfeq4JZ16rzAmnQ5Pm/E0/BEmDNia1ZbY7+qu3nBgNa19Hg== 1591 | optionalDependencies: 1592 | fsevents "~2.1.2" 1593 | 1594 | rxjs@^6.6.2: 1595 | version "6.6.3" 1596 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" 1597 | integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== 1598 | dependencies: 1599 | tslib "^1.9.0" 1600 | 1601 | safe-buffer@^5.1.0: 1602 | version "5.2.1" 1603 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1604 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1605 | 1606 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1607 | version "5.1.2" 1608 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1609 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1610 | 1611 | semver-compare@^1.0.0: 1612 | version "1.0.0" 1613 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 1614 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 1615 | 1616 | semver-regex@^2.0.0: 1617 | version "2.0.0" 1618 | resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" 1619 | integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== 1620 | 1621 | "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: 1622 | version "5.7.1" 1623 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1624 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1625 | 1626 | semver@^6.0.0: 1627 | version "6.3.0" 1628 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1629 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1630 | 1631 | serialize-javascript@^4.0.0: 1632 | version "4.0.0" 1633 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" 1634 | integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== 1635 | dependencies: 1636 | randombytes "^2.1.0" 1637 | 1638 | shebang-command@^1.2.0: 1639 | version "1.2.0" 1640 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1641 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1642 | dependencies: 1643 | shebang-regex "^1.0.0" 1644 | 1645 | shebang-command@^2.0.0: 1646 | version "2.0.0" 1647 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1648 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1649 | dependencies: 1650 | shebang-regex "^3.0.0" 1651 | 1652 | shebang-regex@^1.0.0: 1653 | version "1.0.0" 1654 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1655 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1656 | 1657 | shebang-regex@^3.0.0: 1658 | version "3.0.0" 1659 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1660 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1661 | 1662 | shell-quote@^1.6.1: 1663 | version "1.7.2" 1664 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 1665 | integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 1666 | 1667 | signal-exit@^3.0.2: 1668 | version "3.0.3" 1669 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1670 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1671 | 1672 | slash@^3.0.0: 1673 | version "3.0.0" 1674 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1675 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1676 | 1677 | slice-ansi@^3.0.0: 1678 | version "3.0.0" 1679 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 1680 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 1681 | dependencies: 1682 | ansi-styles "^4.0.0" 1683 | astral-regex "^2.0.0" 1684 | is-fullwidth-code-point "^3.0.0" 1685 | 1686 | slice-ansi@^4.0.0: 1687 | version "4.0.0" 1688 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1689 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1690 | dependencies: 1691 | ansi-styles "^4.0.0" 1692 | astral-regex "^2.0.0" 1693 | is-fullwidth-code-point "^3.0.0" 1694 | 1695 | source-map-support@~0.5.12: 1696 | version "0.5.19" 1697 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1698 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1699 | dependencies: 1700 | buffer-from "^1.0.0" 1701 | source-map "^0.6.0" 1702 | 1703 | source-map@^0.5.0, source-map@^0.5.1: 1704 | version "0.5.7" 1705 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1706 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1707 | 1708 | source-map@^0.6.0, source-map@~0.6.1: 1709 | version "0.6.1" 1710 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1711 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1712 | 1713 | sourcemap-codec@1.4.8, sourcemap-codec@^1.4.4: 1714 | version "1.4.8" 1715 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 1716 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 1717 | 1718 | spdx-correct@^3.0.0: 1719 | version "3.1.1" 1720 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1721 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1722 | dependencies: 1723 | spdx-expression-parse "^3.0.0" 1724 | spdx-license-ids "^3.0.0" 1725 | 1726 | spdx-exceptions@^2.1.0: 1727 | version "2.3.0" 1728 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1729 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1730 | 1731 | spdx-expression-parse@^3.0.0: 1732 | version "3.0.1" 1733 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1734 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1735 | dependencies: 1736 | spdx-exceptions "^2.1.0" 1737 | spdx-license-ids "^3.0.0" 1738 | 1739 | spdx-license-ids@^3.0.0: 1740 | version "3.0.6" 1741 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" 1742 | integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== 1743 | 1744 | string-argv@0.3.1: 1745 | version "0.3.1" 1746 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 1747 | integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 1748 | 1749 | string-width@^4.1.0, string-width@^4.2.0: 1750 | version "4.2.0" 1751 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1752 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1753 | dependencies: 1754 | emoji-regex "^8.0.0" 1755 | is-fullwidth-code-point "^3.0.0" 1756 | strip-ansi "^6.0.0" 1757 | 1758 | string.prototype.padend@^3.0.0: 1759 | version "3.1.0" 1760 | resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" 1761 | integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA== 1762 | dependencies: 1763 | define-properties "^1.1.3" 1764 | es-abstract "^1.17.0-next.1" 1765 | 1766 | string.prototype.trimend@^1.0.1: 1767 | version "1.0.1" 1768 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" 1769 | integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== 1770 | dependencies: 1771 | define-properties "^1.1.3" 1772 | es-abstract "^1.17.5" 1773 | 1774 | string.prototype.trimstart@^1.0.1: 1775 | version "1.0.1" 1776 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" 1777 | integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== 1778 | dependencies: 1779 | define-properties "^1.1.3" 1780 | es-abstract "^1.17.5" 1781 | 1782 | string_decoder@~1.1.1: 1783 | version "1.1.1" 1784 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1785 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1786 | dependencies: 1787 | safe-buffer "~5.1.0" 1788 | 1789 | stringify-object@^3.3.0: 1790 | version "3.3.0" 1791 | resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" 1792 | integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== 1793 | dependencies: 1794 | get-own-enumerable-property-symbols "^3.0.0" 1795 | is-obj "^1.0.1" 1796 | is-regexp "^1.0.0" 1797 | 1798 | strip-ansi@^6.0.0: 1799 | version "6.0.0" 1800 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1801 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1802 | dependencies: 1803 | ansi-regex "^5.0.0" 1804 | 1805 | strip-bom@^3.0.0: 1806 | version "3.0.0" 1807 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1808 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1809 | 1810 | strip-final-newline@^2.0.0: 1811 | version "2.0.0" 1812 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 1813 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1814 | 1815 | supports-color@^5.3.0: 1816 | version "5.5.0" 1817 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1818 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1819 | dependencies: 1820 | has-flag "^3.0.0" 1821 | 1822 | supports-color@^7.0.0, supports-color@^7.1.0: 1823 | version "7.2.0" 1824 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1825 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1826 | dependencies: 1827 | has-flag "^4.0.0" 1828 | 1829 | terser@^5.0.0: 1830 | version "5.3.2" 1831 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.2.tgz#f4bea90eb92945b2a028ceef79181b9bb586e7af" 1832 | integrity sha512-H67sydwBz5jCUA32ZRL319ULu+Su1cAoZnnc+lXnenGRYWyLE3Scgkt8mNoAsMx0h5kdo758zdoS0LG9rYZXDQ== 1833 | dependencies: 1834 | commander "^2.20.0" 1835 | source-map "~0.6.1" 1836 | source-map-support "~0.5.12" 1837 | 1838 | through@^2.3.8: 1839 | version "2.3.8" 1840 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1841 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1842 | 1843 | to-fast-properties@^2.0.0: 1844 | version "2.0.0" 1845 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1846 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1847 | 1848 | to-regex-range@^5.0.1: 1849 | version "5.0.1" 1850 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1851 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1852 | dependencies: 1853 | is-number "^7.0.0" 1854 | 1855 | tslib@2.0.1: 1856 | version "2.0.1" 1857 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" 1858 | integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== 1859 | 1860 | tslib@^1.9.0: 1861 | version "1.13.0" 1862 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 1863 | integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 1864 | 1865 | type-fest@^0.11.0: 1866 | version "0.11.0" 1867 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 1868 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 1869 | 1870 | typescript@^4.0.3: 1871 | version "4.0.3" 1872 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" 1873 | integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== 1874 | 1875 | unicode-canonical-property-names-ecmascript@^1.0.4: 1876 | version "1.0.4" 1877 | resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" 1878 | integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== 1879 | 1880 | unicode-match-property-ecmascript@^1.0.4: 1881 | version "1.0.4" 1882 | resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" 1883 | integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== 1884 | dependencies: 1885 | unicode-canonical-property-names-ecmascript "^1.0.4" 1886 | unicode-property-aliases-ecmascript "^1.0.4" 1887 | 1888 | unicode-match-property-value-ecmascript@^1.1.0: 1889 | version "1.2.0" 1890 | resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" 1891 | integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== 1892 | 1893 | unicode-property-aliases-ecmascript@^1.0.4: 1894 | version "1.1.0" 1895 | resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" 1896 | integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== 1897 | 1898 | universalify@^0.1.0: 1899 | version "0.1.2" 1900 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1901 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1902 | 1903 | util-deprecate@~1.0.1: 1904 | version "1.0.2" 1905 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1906 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1907 | 1908 | uuid@8.1.0: 1909 | version "8.1.0" 1910 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d" 1911 | integrity sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg== 1912 | 1913 | validate-npm-package-license@^3.0.1: 1914 | version "3.0.4" 1915 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1916 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1917 | dependencies: 1918 | spdx-correct "^3.0.0" 1919 | spdx-expression-parse "^3.0.0" 1920 | 1921 | vinyl-sourcemaps-apply@^0.2.0: 1922 | version "0.2.1" 1923 | resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" 1924 | integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= 1925 | dependencies: 1926 | source-map "^0.5.1" 1927 | 1928 | vinyl@2.x: 1929 | version "2.2.0" 1930 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" 1931 | integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== 1932 | dependencies: 1933 | clone "^2.1.1" 1934 | clone-buffer "^1.0.0" 1935 | clone-stats "^1.0.0" 1936 | cloneable-readable "^1.0.0" 1937 | remove-trailing-separator "^1.0.1" 1938 | replace-ext "^1.0.0" 1939 | 1940 | which-pm-runs@^1.0.0: 1941 | version "1.0.0" 1942 | resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" 1943 | integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= 1944 | 1945 | which@^1.2.9: 1946 | version "1.3.1" 1947 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1948 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1949 | dependencies: 1950 | isexe "^2.0.0" 1951 | 1952 | which@^2.0.1: 1953 | version "2.0.2" 1954 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1955 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1956 | dependencies: 1957 | isexe "^2.0.0" 1958 | 1959 | wrap-ansi@^6.2.0: 1960 | version "6.2.0" 1961 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 1962 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 1963 | dependencies: 1964 | ansi-styles "^4.0.0" 1965 | string-width "^4.1.0" 1966 | strip-ansi "^6.0.0" 1967 | 1968 | wrappy@1: 1969 | version "1.0.2" 1970 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1971 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1972 | 1973 | yaml@^1.10.0: 1974 | version "1.10.0" 1975 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" 1976 | integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== 1977 | --------------------------------------------------------------------------------