├── .gitignore ├── .prettierrc.json ├── Makefile ├── README.md ├── package.json ├── src ├── dom_tags.mjs ├── helpers.mjs └── index.mjs ├── tests ├── fixtures │ ├── anonymous_expored_default │ │ ├── expected.js │ │ └── input.js │ ├── basic_example │ │ ├── expected.js │ │ └── input.js │ ├── exported_default_arrow_function │ │ ├── expected.js │ │ └── input.js │ ├── inline_identifiers │ │ ├── expected.js │ │ └── input.js │ └── jsx_example │ │ ├── expected.js │ │ └── input.js ├── smoketests │ ├── README.md │ ├── composerize.js │ ├── flow_example.js │ └── plaid.js └── test.mjs └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "tabWidth": 4, 4 | "singleQuote": true, 5 | "printWidth": 120 6 | } 7 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | test: 2 | node tests/test.mjs 3 | 4 | prettier: node_modules 5 | yarn prettier src tests --write 6 | 7 | node_modules: 8 | yarn -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🌳🥤 tiny-treeshaker 2 | 3 | A really ~bad~ tiny tree shaker (experimental) 4 | 5 | ### Why? 6 | 7 | This is a bare-bones tree shaking codemod that can be adapted for targeting specific use cases. 8 | 9 | (I made this cos i'm writing a seperate codemod for a migration I'm working on. The migration removes callsites to a bunch of random helper functions - which now eslint complains about, and I need to remove. Hence this tree shaking codemod.) 10 | 11 | Existing solutions are very fancy pants and try and target everything and require complex setups. I want to only target a known set 12 | of things to tree shake away. (allowlist vs denylist). 13 | 14 | The goal of this is to be: 15 | - small as possible (while still being "correct". This won't shake away things you use, but may not shake away everything you don't use.) 16 | - simple to understand / extend / chop and change as needed 17 | 18 | ### Usage 19 | 20 | - Clone this repo 21 | - [Install jscodeshift](https://github.com/facebook/jscodeshift) 22 | - Run with the CLI (e.g. `jscodeshift --transform /path/to/tiny-treeshaker/src/index.mjs ...`) 23 | 24 | ### Work in progress 25 | 26 | This doesn't shake _everything_ away just yet (sorry!), but gets most of the common cases (i.e. enough to be used when targeting a specific thing) 27 | 28 | ### What you should probably use instead 29 | 30 | - https://github.com/coderaiser/putout 31 | - https://github.com/smeijer/unimported 32 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tiny-treeshaker", 3 | "version": "1.0.1", 4 | "main": "src/index.mjs", 5 | "license": "MIT", 6 | "scripts": { 7 | "test": "node tests/test.mjs" 8 | }, 9 | "type": "module", 10 | "devDependencies": { 11 | "chalk": "^4.1.1", 12 | "execa": "^5.1.1", 13 | "jscodeshift": "^0.12.0", 14 | "prettier": "^2.3.2" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dom_tags.mjs: -------------------------------------------------------------------------------- 1 | /** 2 | * Valid DOM tags that can be used as variable references 3 | * 4 | * Generated by going to: 5 | * 6 | * https://eastmanreference.com/complete-list-of-html-tags 7 | * 8 | * And in devtools, running: 9 | * 10 | * copy([...document.querySelectorAll('p strong')].map(el => el.innerText).map(tag => tag.replace(/[<>]/g, ''))) 11 | */ 12 | 13 | export default [ 14 | 'a', 15 | 'abbr', 16 | 'address', 17 | 'area', 18 | 'article', 19 | 'aside', 20 | 'audio', 21 | 'b', 22 | 'base', 23 | 'bdi', 24 | 'bdo', 25 | 'blockquote', 26 | 'body', 27 | 'br', 28 | 'button', 29 | 'canvas', 30 | 'caption', 31 | 'cite', 32 | 'code', 33 | 'col', 34 | 'colgroup', 35 | 'data', 36 | 'datalist', 37 | 'dd', 38 | 'del', 39 | 'details', 40 | 'dfn', 41 | 'dialog', 42 | 'div', 43 | 'dl', 44 | 'dt', 45 | 'em', 46 | 'embed', 47 | 'fieldset', 48 | 'figure', 49 | 'footer', 50 | 'form', 51 | 'h1', 52 | 'h2', 53 | 'h3', 54 | 'h4', 55 | 'h5', 56 | 'h6', 57 | 'head', 58 | 'header', 59 | 'hgroup', 60 | 'hr', 61 | 'html', 62 | 'i', 63 | 'iframe', 64 | 'img', 65 | 'input', 66 | 'ins', 67 | 'kbd', 68 | 'keygen', 69 | 'label', 70 | 'legend', 71 | 'li', 72 | 'link', 73 | 'main', 74 | 'map', 75 | 'mark', 76 | 'menu', 77 | 'menuitem', 78 | 'meta', 79 | 'meter', 80 | 'nav', 81 | 'noscript', 82 | 'object', 83 | 'ol', 84 | 'optgroup', 85 | 'option', 86 | 'output', 87 | 'p', 88 | 'param', 89 | 'pre', 90 | 'progress', 91 | 'q', 92 | 'rb', 93 | 'rp', 94 | 'rt', 95 | 'rtc', 96 | 'ruby', 97 | 's', 98 | 'samp', 99 | 'script', 100 | 'section', 101 | 'select', 102 | 'small', 103 | 'source', 104 | 'span', 105 | 'strong', 106 | 'style', 107 | 'sub', 108 | 'summary', 109 | 'sup', 110 | 'table', 111 | 'tbody', 112 | 'td', 113 | 'template', 114 | 'textarea', 115 | 'tfoot', 116 | 'th', 117 | 'thead', 118 | 'time', 119 | 'title', 120 | 'tr', 121 | 'track', 122 | 'u', 123 | 'ul', 124 | 'var', 125 | 'video', 126 | 'wbr', 127 | ]; 128 | -------------------------------------------------------------------------------- /src/helpers.mjs: -------------------------------------------------------------------------------- 1 | import Collection from 'jscodeshift/src/Collection'; 2 | 3 | // Nodes types where identifiers could be defined or imported (that we may want to remove) 4 | const ORIGINS = ['ImportSpecifier', 'VariableDeclarator', 'FunctionDeclaration', 'ImportDefaultSpecifier']; 5 | 6 | export const isTopLevel = (path) => path.parent.value.type === 'Program'; 7 | 8 | /** 9 | * Inspired by getVariableDeclarator 10 | * @see https://github.com/facebook/jscodeshift/blob/57a9d9c73/src/collections/Node.js#L103 11 | * 12 | * Given an identifier name, look up where in scope it could be imported from 13 | */ 14 | export function getReferenceFromScope(j, path, identifier) { 15 | let scope = path.scope; 16 | if (!scope) return; 17 | 18 | // https://github.com/benjamn/ast-types/blob/53123a2be5e0/lib/scope.ts#L374 19 | scope = scope.lookup(identifier); 20 | if (!scope) return; 21 | 22 | const bindings = scope.getBindings()[identifier]; 23 | if (!bindings) return; 24 | 25 | const decl = Collection.fromPaths(bindings); 26 | 27 | for (const origin of ORIGINS) { 28 | if (decl.closest(j[origin]).length === 1) { 29 | return decl.closest(j[origin]).get(); 30 | } 31 | } 32 | } 33 | 34 | // useful for debugging ast objects 35 | export function pprint(pathOrNode) { 36 | let node; 37 | 38 | if (pathOrNode.value) { 39 | node = pathOrNode.value; 40 | } else { 41 | node = pathOrNode; 42 | } 43 | 44 | let name; 45 | 46 | if (node.id) { 47 | name = node.id.name; 48 | } 49 | 50 | return { 51 | type: node.type, 52 | name, 53 | }; 54 | } 55 | -------------------------------------------------------------------------------- /src/index.mjs: -------------------------------------------------------------------------------- 1 | import { getReferenceFromScope, isTopLevel } from './helpers'; 2 | 3 | import DOM_TAGS from './dom_tags'; 4 | 5 | export default function transformer(file, api) { 6 | const j = api.jscodeshift; 7 | const root = j(file.source); 8 | 9 | /** 10 | * Get a "thing" defined at the top level. 11 | * Could be a function, variable, object, class etc. 12 | * @return NodePath? 13 | */ 14 | function getTopLevelThing(identifierName) { 15 | const variables = root 16 | .find(j.VariableDeclarator, { 17 | id: { name: identifierName }, 18 | }) 19 | .filter((path) => { 20 | // check this a top level variable 21 | const declaration = j(path).closest(j.VariableDeclaration).get(); 22 | return declaration.parent.value.type === 'Program'; 23 | }); 24 | 25 | // TODO: warn if length >= 2? 26 | // It would/should be invalid for a program to have two top level things of the same name 27 | if (variables.length === 1) { 28 | // .get() returns the first item 29 | // @see https://github.com/facebook/jscodeshift/blob/57a9d9c/src/Collection.js#L210 30 | return variables.get(); 31 | } 32 | 33 | const functions = root 34 | .find(j.FunctionDeclaration, { 35 | id: { name: identifierName }, 36 | }) 37 | .filter(isTopLevel); 38 | 39 | if (functions.length === 1) { 40 | return functions.get(); 41 | } 42 | } 43 | 44 | // Store all "things" (Functions, Classes, Objects, Variables etc) that are exported. 45 | // (If something is exported, that means we consider it as "used"). 46 | // Anything referenced inside an exported thing will _not_ be shaken away. 47 | const liveNodePaths = new Set(); 48 | 49 | // TODO: maybe this is gross? 50 | // We need to maintain the node paths (in liveNodePaths), in order for 51 | // getReferenceFromScope to work. 52 | // But we also need liveNodes cos paths can change, so 53 | // Maybe maintaining two sets is ok, but also maybe there's a better way. 54 | const liveNodes = new Set(); 55 | 56 | /** 57 | * Find all functions that are exported inline 58 | * e.g. `export function foo () { ... }` 59 | */ 60 | root.find(j.ExportNamedDeclaration, { 61 | declaration: { type: 'FunctionDeclaration', id: { type: 'Identifier' } }, 62 | }).forEach((path) => { 63 | liveNodePaths.add(j(path).find(j.FunctionDeclaration).get()); 64 | liveNodes.add(j(path).find(j.FunctionDeclaration).get().value); 65 | }); 66 | 67 | /** 68 | * Find all things that are exported with export specifiers 69 | * e.g. `const foo = 'bar'; export { foo };` 70 | */ 71 | root.find(j.ExportNamedDeclaration, { 72 | declaration: null, 73 | specifiers: [{ type: 'ExportSpecifier' }], 74 | }).forEach((path) => { 75 | path.value.specifiers.forEach((exportSpecifier) => { 76 | const name = exportSpecifier.local.name; 77 | const thing = getTopLevelThing(name); 78 | if (!thing) { 79 | throw new Error(`Could not find exported thing: ${name}`); 80 | } 81 | liveNodePaths.add(thing); 82 | liveNodes.add(thing.value); 83 | }); 84 | }); 85 | 86 | /** 87 | * Find default exported thing 88 | * e.g. `const foo = () => 'bar'; export default foo;` 89 | */ 90 | root.find(j.ExportDefaultDeclaration).forEach((path) => { 91 | const name = path.value.declaration.name; 92 | const thing = getTopLevelThing(name); 93 | if (!thing) { 94 | throw new Error(`Could not find exported thing: ${name}`); 95 | } 96 | liveNodePaths.add(thing); 97 | liveNodes.add(thing.value); 98 | }); 99 | 100 | /** 101 | * Recursively add every "live" identifier, starting with the top level 102 | * exported functions. 103 | * 104 | * For every live node path (initially set to all exported functions and 105 | * variables etc), find all pointers to other variables/functions etc and 106 | * add them to liveNodePaths. 107 | * 108 | * Repeat until liveNodePaths is stable. 109 | */ 110 | function addLiveNodePaths() { 111 | const initialLiveNodePathsSize = liveNodePaths.size; 112 | 113 | [...liveNodePaths].forEach((subRoot) => { 114 | j(subRoot) 115 | .find(j.Identifier) 116 | .filter((path) => { 117 | /** 118 | * We only want to look up identifiers that are being used to reference other variables in a higher sope. 119 | * (For now) allowlist allowed pointer types. 120 | * 121 | * e.g. 122 | * - in `console.log(foo)` we want to look up `foo` 123 | * - in `const foo = bar` we want to look up `bar` 124 | * - in `const foo = { bar: baz }` we want to look up `baz` 125 | * 126 | * be careful though! not every Identifier is a reference to a variable: 127 | * - in `console.log(foo)` we do NOT want to look up `log` 128 | * - in `const foo = 'bar'` we do NOT want to look up `foo` 129 | * - in `const foo = { bar: baz }` we do NOT want to look up `bar` 130 | */ 131 | if (!path.parentPath.value.type) return true; 132 | if (path.parentPath.value.type === 'ReturnStatement') return true; 133 | if (path.parentPath.value.type === 'CallExpression') return true; 134 | if (path.parentPath.value.type === 'JSXOpeningElement') return true; 135 | }) 136 | .forEach((path) => { 137 | const name = path.value.name; 138 | const reference = getReferenceFromScope(j, path, name); 139 | 140 | if (!reference) { 141 | // Check if the tag being referenced is a DOM tag 142 | if (path.value.type === 'JSXIdentifier' && DOM_TAGS.includes(name)) { 143 | return; 144 | } 145 | 146 | // Otherwise, we're trying to reference a variable or function that does not exist 147 | // (Or a global that this codemod doesn't know about yet) 148 | throw new Error( 149 | [ 150 | `The definition for ${name} does not exist.`, 151 | "Either your code is invalid, or that's a global we haven't added yet.", 152 | ].join('\n'), 153 | ); 154 | } 155 | 156 | liveNodePaths.add(reference); 157 | liveNodes.add(reference.value); 158 | }); 159 | }); 160 | 161 | if (liveNodePaths.size > initialLiveNodePathsSize) { 162 | addLiveNodePaths(); 163 | } 164 | } 165 | 166 | addLiveNodePaths(); 167 | 168 | // For everythig in ORIGINS, remove all (top level?) origin sites 169 | 170 | root.find(j.VariableDeclarator) 171 | .filter((path) => { 172 | // We only want top level variable declarations to be filtered out 173 | const declaration = j(path).closest(j.VariableDeclaration).get(); 174 | return isTopLevel(declaration); 175 | }) 176 | .forEach((path) => { 177 | if (!liveNodePaths.has(path)) { 178 | if (path.parentPath.value.length === 1) { 179 | // Remove the whole VariableDeclaration if this is the only declarator 180 | // (remember, `let foo = 'foo', bar = 'bar'` is a thing) 181 | j(path).closest(j.VariableDeclaration).remove(); 182 | } else { 183 | j(path).remove(); 184 | } 185 | } 186 | }); 187 | 188 | root.find(j.FunctionDeclaration).forEach((path) => { 189 | // TODO: comparing the node paths doesn't work - they change. We need to 190 | // compare the raw nodes 191 | if (!liveNodes.has(path.value)) { 192 | j(path).remove(); 193 | } 194 | }); 195 | 196 | root.find(j.ImportSpecifier).forEach((path) => { 197 | if (!liveNodePaths.has(path)) { 198 | if (path.parentPath.value.length === 1) { 199 | // Remove the whole ImportDeclaration if this is the only import 200 | j(path).closest(j.ImportDeclaration).remove(); 201 | } else { 202 | j(path).remove(); 203 | } 204 | } 205 | }); 206 | 207 | root.find(j.ImportDefaultSpecifier).forEach((path) => { 208 | if (!liveNodePaths.has(path)) { 209 | // Allowlist `import React from 'react';` 210 | const importSource = j(path).closest(j.ImportDeclaration).get().value.source.value; 211 | if (importSource === 'react') return; 212 | 213 | if (path.parentPath.value.length === 1) { 214 | // Remove the whole ImportDeclaration if this is the only import 215 | j(path).closest(j.ImportDeclaration).remove(); 216 | } else { 217 | j(path).remove(); 218 | } 219 | } 220 | }); 221 | 222 | return root.toSource(); 223 | } 224 | 225 | // you may need to fiddle with this line 226 | export const parser = 'flow'; 227 | -------------------------------------------------------------------------------- /tests/fixtures/anonymous_expored_default/expected.js: -------------------------------------------------------------------------------- 1 | // TODO: make pass 2 | // export default () => { 3 | // return 'foo'; 4 | // } 5 | -------------------------------------------------------------------------------- /tests/fixtures/anonymous_expored_default/input.js: -------------------------------------------------------------------------------- 1 | // TODO: make pass 2 | // export default () => { 3 | // return 'foo'; 4 | // } 5 | -------------------------------------------------------------------------------- /tests/fixtures/basic_example/expected.js: -------------------------------------------------------------------------------- 1 | import { Boz, Foo as MyFoo } from 'some/module2'; 2 | 3 | const getFoo = () => 'Foo'; 4 | const getFooBar = () => `${getFoo()} Bar`; 5 | 6 | function getFooBarBaz() { 7 | return `${getFooBar} Baz`; 8 | } 9 | 10 | export function main() { 11 | MyFoo(); 12 | Boz(); 13 | console.log(getFooBarBaz()); 14 | } 15 | -------------------------------------------------------------------------------- /tests/fixtures/basic_example/input.js: -------------------------------------------------------------------------------- 1 | import { Bar, Baz, Boz, Foo as MyFoo } from 'some/module2'; 2 | import { Qux as Quux, Qux2 } from 'some/module3'; 3 | 4 | import Fooooo from 'some/module1'; 5 | 6 | const unused1 = () => {}, 7 | hello = 'world'; 8 | 9 | const unused2 = ''; 10 | 11 | function unused3() {} 12 | 13 | const unused4 = function () {}; 14 | 15 | const getFoo = () => 'Foo'; 16 | const getFooBar = () => `${getFoo()} Bar`; 17 | 18 | function getFooBarBaz() { 19 | return `${getFooBar} Baz`; 20 | } 21 | 22 | export function main() { 23 | MyFoo(); 24 | Boz(); 25 | console.log(getFooBarBaz()); 26 | } 27 | -------------------------------------------------------------------------------- /tests/fixtures/exported_default_arrow_function/expected.js: -------------------------------------------------------------------------------- 1 | const Foo = () => { 2 | return 'foo'; 3 | }; 4 | 5 | export default Foo; 6 | -------------------------------------------------------------------------------- /tests/fixtures/exported_default_arrow_function/input.js: -------------------------------------------------------------------------------- 1 | const Foo = () => { 2 | return 'foo'; 3 | }; 4 | 5 | export default Foo; 6 | -------------------------------------------------------------------------------- /tests/fixtures/inline_identifiers/expected.js: -------------------------------------------------------------------------------- 1 | function foo() { 2 | return { foo: 'foo' }; 3 | } 4 | 5 | function getBar() { 6 | return { bar: 'bar' }; 7 | } 8 | 9 | const baz = () => 'baz'; 10 | 11 | function main() { 12 | const { foo: myFoo } = foo(); 13 | const { bar } = getBar(); 14 | const myBaz = baz(); 15 | } 16 | 17 | export default main; 18 | -------------------------------------------------------------------------------- /tests/fixtures/inline_identifiers/input.js: -------------------------------------------------------------------------------- 1 | function foo() { 2 | return { foo: 'foo' }; 3 | } 4 | 5 | function getBar() { 6 | return { bar: 'bar' }; 7 | } 8 | 9 | const baz = () => 'baz'; 10 | 11 | const qux = () => 'qux!'; 12 | 13 | function main() { 14 | const { foo: myFoo } = foo(); 15 | const { bar } = getBar(); 16 | const myBaz = baz(); 17 | } 18 | 19 | export default main; 20 | -------------------------------------------------------------------------------- /tests/fixtures/jsx_example/expected.js: -------------------------------------------------------------------------------- 1 | import { Box, Button } from '@chakra-ui/react'; 2 | import { Link, useParams } from 'react-router-dom'; 3 | 4 | import { ArrowBackIcon } from '@chakra-ui/icons'; 5 | import MoneyTable from './MoneyTable'; 6 | import Shell from '../Shell'; 7 | 8 | const Header = ({ text }) => { 9 | return

{text}

; 10 | }; 11 | 12 | const FilterView = () => { 13 | const { filter } = useParams(); 14 | 15 | return ( 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | ); 27 | }; 28 | 29 | export default FilterView; 30 | -------------------------------------------------------------------------------- /tests/fixtures/jsx_example/input.js: -------------------------------------------------------------------------------- 1 | import { Box, Button, Text } from '@chakra-ui/react'; 2 | import { Link, Route, useParams } from 'react-router-dom'; 3 | 4 | import { ArrowBackIcon } from '@chakra-ui/icons'; 5 | import MoneyTable from './MoneyTable'; 6 | import Shell from '../Shell'; 7 | 8 | const foo = () => {}; 9 | const bar = () => foo(); 10 | 11 | const Header = ({ text }) => { 12 | return

{text}

; 13 | }; 14 | 15 | const FilterView = () => { 16 | const { filter } = useParams(); 17 | 18 | return ( 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | ); 30 | }; 31 | 32 | export default FilterView; 33 | -------------------------------------------------------------------------------- /tests/smoketests/README.md: -------------------------------------------------------------------------------- 1 | # smoketests 2 | 3 | Just a bunch of JS/JSX files that should produce the same output (no change) 4 | 5 | Purpose of this is to make sure the codemod doesn't blow up and does the right 6 | thing by testing against a bunch of "real world" examples -------------------------------------------------------------------------------- /tests/smoketests/composerize.js: -------------------------------------------------------------------------------- 1 | // TODO: make pass 2 | // // @flow 3 | 4 | // // https://github.com/magicmark/composerize/blob/master/packages/composerize/src/index.js 5 | 6 | // import 'core-js/fn/object/entries'; 7 | 8 | // import { getComposeJson, maybeGetComposeEntry } from './logic'; 9 | 10 | // import deepmerge from 'deepmerge'; 11 | // import parser from 'yargs-parser'; 12 | // import yamljs from 'yamljs'; 13 | 14 | // export type RawValue = string | number | boolean | [string | number | boolean]; 15 | 16 | // const getServiceName = (image: string): string => { 17 | // let name = image.includes('/') ? image.split('/')[1] : image; 18 | // name = name.includes(':') ? name.split(':')[0] : name; 19 | 20 | // return name; 21 | // }; 22 | 23 | // export default (input: string): ?string => { 24 | // const formattedInput = input.replace(/(\s)+/g, ' ').trim(); 25 | // const parsedInput: { 26 | // +_: Array, 27 | // +[flag: string]: RawValue, 28 | // } = parser(formattedInput); 29 | // const { _: command, ...params } = parsedInput; 30 | 31 | // if (command[0] !== 'docker' || (command[1] !== 'run' && command[1] !== 'create')) { 32 | // throw new SyntaxError('must be a valid docker run/create command'); 33 | // } 34 | 35 | // // The service object that we'll update 36 | // let service = {}; 37 | 38 | // // Loop through the tokens and append to the service object 39 | // Object.entries(params).forEach( 40 | // // https://github.com/facebook/flow/issues/2174 41 | // // $FlowFixMe: Object.entries wipes out types ATOW 42 | // ([key, value]: [string, RawValue]) => { 43 | // const result = maybeGetComposeEntry(key, value); 44 | // if (result) { 45 | // const entries = Array.isArray(result) ? result : [result]; 46 | // entries.forEach(entry => { 47 | // // Store whatever the next entry will be 48 | // const json = getComposeJson(entry); 49 | // service = deepmerge(service, json); 50 | // }); 51 | // } 52 | // }, 53 | // ); 54 | 55 | // const image = command.slice(-1)[0]; 56 | // service.image = image; 57 | 58 | // const serviceName = getServiceName(image); 59 | 60 | // // Outer template 61 | // const result = { 62 | // version: '3.3', 63 | // services: { 64 | // [serviceName]: service, 65 | // }, 66 | // }; 67 | 68 | // return yamljs.stringify(result, 9, 4).trim(); 69 | // }; 70 | -------------------------------------------------------------------------------- /tests/smoketests/flow_example.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | 3 | // random file copied from https://github.com/magicmark/composerize/blob/master/packages/composerize/src/mappings.js 4 | 5 | // Define the "types" of data a docker cli flag can represent in yaml. 6 | export type ArgType = 7 | // Used for lists of things 8 | // e.g. --device (https://docs.docker.com/compose/compose-file/#devices) 9 | | 'Array' 10 | 11 | // Used to store a mapping of one key to one value 12 | // e.g. --log-driver (https://docs.docker.com/compose/compose-file/#logging) 13 | | 'KeyValue' 14 | 15 | // Used to store a "limits" value of the input format: =[:] 16 | // e.g. --ulimit 17 | // @see https://docs.docker.com/compose/compose-file/#ulimits 18 | // @see https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container---ulimit 19 | | 'Ulimits' 20 | 21 | // Used to store a boolean value for an option 22 | // e.g. --privileged (https://docs.docker.com/compose/compose-file/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir) 23 | | 'Switch' 24 | 25 | // Used to store an arbitrary text value for an option 26 | | 'Value'; 27 | 28 | // Type to represent the structure of the docker compose mapping 29 | export type Mapping = { 30 | type: ArgType, 31 | path: string, 32 | }; 33 | 34 | // Type to represent a compose file entry 35 | export type ArrayComposeEntry = { 36 | path: string, 37 | value: [string], 38 | }; 39 | 40 | export type KVComposeEntry = { 41 | path: string, 42 | value: { 43 | [string]: string | number, 44 | }, 45 | }; 46 | 47 | export type SwitchComposeEntry = { 48 | path: string, 49 | value: boolean, 50 | }; 51 | 52 | export type ValueComposeEntry = { 53 | path: string, 54 | value: string | number, 55 | }; 56 | 57 | export type ComposeEntry = ArrayComposeEntry | KVComposeEntry | SwitchComposeEntry | ValueComposeEntry; 58 | 59 | export const getMapping = (type: ArgType, path: string): Mapping => ({ 60 | type, 61 | path, 62 | }); 63 | 64 | // docker cli -> docker-compose options 65 | export const MAPPINGS: { [string]: Mapping } = { 66 | 'add-host': getMapping('Array', 'extra_hosts'), 67 | cap_add: getMapping('Array', 'cap_add'), 68 | cap_drop: getMapping('Array', 'cap_drop'), 69 | cgroup_parent: getMapping('Value', 'cgroup_parent'), 70 | device: getMapping('Array', 'devices'), 71 | dns: getMapping('Array', 'dns'), 72 | dns_search: getMapping('Array', 'dns_search'), 73 | env_file: getMapping('Array', 'env_file'), 74 | expose: getMapping('Array', 'expose'), 75 | label: getMapping('Array', 'labels'), 76 | link: getMapping('Array', 'links'), 77 | entrypoint: getMapping('Array', 'entrypoint'), 78 | env: getMapping('Array', 'environment'), 79 | name: getMapping('Value', 'container_name'), 80 | network: getMapping('Value', 'network_mode'), 81 | net: getMapping('Value', 'network_mode'), // alias for network 82 | pid: getMapping('Value', 'pid'), 83 | privileged: getMapping('Switch', 'privileged'), 84 | publish: getMapping('Array', 'ports'), 85 | restart: getMapping('Value', 'restart'), 86 | tmpfs: getMapping('Value', 'tmpfs'), 87 | ulimit: getMapping('Ulimits', 'ulimits'), 88 | volume: getMapping('Array', 'volumes'), 89 | 'log-driver': getMapping('Array', 'logging/driver'), 90 | 'log-opt': getMapping('KeyValue', 'logging/options'), 91 | }; 92 | 93 | // Add flag mappings 94 | MAPPINGS.v = MAPPINGS.volume; 95 | MAPPINGS.p = MAPPINGS.publish; 96 | MAPPINGS.e = MAPPINGS.env; 97 | -------------------------------------------------------------------------------- /tests/smoketests/plaid.js: -------------------------------------------------------------------------------- 1 | // https://github.com/plaid/react-plaid-link/blob/bba75a08e94b2ee3f5b370135d7d99213f9d02db/examples/hooks.js 2 | 3 | import React, { useCallback } from 'react'; 4 | 5 | import { usePlaidLink } from '../src'; 6 | 7 | const App = (props) => { 8 | const onSuccess = useCallback((token, metadata) => console.log('onSuccess', token, metadata), []); 9 | const onEvent = useCallback((eventName, metadata) => console.log('onEvent', eventName, metadata), []); 10 | const onExit = useCallback((err, metadata) => console.log('onExit', err, metadata), []); 11 | const config = { 12 | token: props.token, 13 | onSuccess, 14 | onEvent, 15 | onExit, 16 | // –– optional parameters 17 | // receivedRedirectUri: props.receivedRedirectUri || null, 18 | // ... 19 | }; 20 | const { open, ready, error } = usePlaidLink(config); 21 | return ( 22 | <> 23 | 26 | 27 | ); 28 | }; 29 | export default App; 30 | -------------------------------------------------------------------------------- /tests/test.mjs: -------------------------------------------------------------------------------- 1 | import assert from 'assert/strict'; 2 | import chalk from 'chalk'; 3 | import execa from 'execa'; 4 | import { fileURLToPath } from 'url'; 5 | import fs from 'fs/promises'; 6 | import path from 'path'; 7 | 8 | const [, , filter] = process.argv; 9 | 10 | const __dirname = path.dirname(fileURLToPath(import.meta.url)); 11 | 12 | async function doTest(name, inputFile, expected) { 13 | process.stdout.write(`* Testing ${chalk.bold(name)}... `); 14 | const { stdout: actual } = await execa('node', [ 15 | 'node_modules/.bin/jscodeshift', 16 | '--transform', 17 | 'src/index.mjs', 18 | '--dry', 19 | '--silent', 20 | '--print', 21 | inputFile, 22 | ]); 23 | 24 | // jscodeshift can output the empty string if no change 25 | // TODO: always output something? 26 | if (actual !== '') { 27 | assert.equal(actual.trim(), expected.trim()); 28 | } 29 | 30 | process.stdout.write(`OK!\n`); 31 | } 32 | 33 | async function main() { 34 | const fixtures = await fs.readdir(path.join(__dirname, 'fixtures')); 35 | 36 | for await (const fixture of fixtures) { 37 | if (typeof filter === 'string' && fixture !== filter) { 38 | continue; 39 | } 40 | const fixtureDir = path.join(__dirname, 'fixtures', fixture); 41 | const expected = await fs.readFile(path.join(fixtureDir, 'expected.js'), 'utf-8'); 42 | await doTest(fixture, path.join(fixtureDir, 'input.js'), expected); 43 | } 44 | 45 | const smoketests = await fs.readdir(path.join(__dirname, 'smoketests')); 46 | 47 | for await (const smoketest of smoketests) { 48 | const testName = smoketest.replace(/\.js$/, ''); 49 | if (typeof filter === 'string' && testName !== filter) { 50 | continue; 51 | } 52 | 53 | const testFile = path.join(__dirname, 'smoketests', smoketest); 54 | const expected = await fs.readFile(testFile, 'utf-8'); 55 | await doTest(testName, testFile, expected); 56 | } 57 | } 58 | 59 | main(); 60 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.14.5": 6 | version "7.14.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" 8 | integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== 9 | dependencies: 10 | "@babel/highlight" "^7.14.5" 11 | 12 | "@babel/compat-data@^7.14.5": 13 | version "7.14.5" 14 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.5.tgz#8ef4c18e58e801c5c95d3c1c0f2874a2680fadea" 15 | integrity sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w== 16 | 17 | "@babel/core@^7.13.16": 18 | version "7.14.6" 19 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" 20 | integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== 21 | dependencies: 22 | "@babel/code-frame" "^7.14.5" 23 | "@babel/generator" "^7.14.5" 24 | "@babel/helper-compilation-targets" "^7.14.5" 25 | "@babel/helper-module-transforms" "^7.14.5" 26 | "@babel/helpers" "^7.14.6" 27 | "@babel/parser" "^7.14.6" 28 | "@babel/template" "^7.14.5" 29 | "@babel/traverse" "^7.14.5" 30 | "@babel/types" "^7.14.5" 31 | convert-source-map "^1.7.0" 32 | debug "^4.1.0" 33 | gensync "^1.0.0-beta.2" 34 | json5 "^2.1.2" 35 | semver "^6.3.0" 36 | source-map "^0.5.0" 37 | 38 | "@babel/generator@^7.14.5": 39 | version "7.14.5" 40 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" 41 | integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== 42 | dependencies: 43 | "@babel/types" "^7.14.5" 44 | jsesc "^2.5.1" 45 | source-map "^0.5.0" 46 | 47 | "@babel/helper-annotate-as-pure@^7.14.5": 48 | version "7.14.5" 49 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" 50 | integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== 51 | dependencies: 52 | "@babel/types" "^7.14.5" 53 | 54 | "@babel/helper-compilation-targets@^7.14.5": 55 | version "7.14.5" 56 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" 57 | integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== 58 | dependencies: 59 | "@babel/compat-data" "^7.14.5" 60 | "@babel/helper-validator-option" "^7.14.5" 61 | browserslist "^4.16.6" 62 | semver "^6.3.0" 63 | 64 | "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.14.6": 65 | version "7.14.6" 66 | resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz#f114469b6c06f8b5c59c6c4e74621f5085362542" 67 | integrity sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg== 68 | dependencies: 69 | "@babel/helper-annotate-as-pure" "^7.14.5" 70 | "@babel/helper-function-name" "^7.14.5" 71 | "@babel/helper-member-expression-to-functions" "^7.14.5" 72 | "@babel/helper-optimise-call-expression" "^7.14.5" 73 | "@babel/helper-replace-supers" "^7.14.5" 74 | "@babel/helper-split-export-declaration" "^7.14.5" 75 | 76 | "@babel/helper-function-name@^7.14.5": 77 | version "7.14.5" 78 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" 79 | integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== 80 | dependencies: 81 | "@babel/helper-get-function-arity" "^7.14.5" 82 | "@babel/template" "^7.14.5" 83 | "@babel/types" "^7.14.5" 84 | 85 | "@babel/helper-get-function-arity@^7.14.5": 86 | version "7.14.5" 87 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" 88 | integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== 89 | dependencies: 90 | "@babel/types" "^7.14.5" 91 | 92 | "@babel/helper-hoist-variables@^7.14.5": 93 | version "7.14.5" 94 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" 95 | integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== 96 | dependencies: 97 | "@babel/types" "^7.14.5" 98 | 99 | "@babel/helper-member-expression-to-functions@^7.14.5": 100 | version "7.14.5" 101 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.5.tgz#d5c70e4ad13b402c95156c7a53568f504e2fb7b8" 102 | integrity sha512-UxUeEYPrqH1Q/k0yRku1JE7dyfyehNwT6SVkMHvYvPDv4+uu627VXBckVj891BO8ruKBkiDoGnZf4qPDD8abDQ== 103 | dependencies: 104 | "@babel/types" "^7.14.5" 105 | 106 | "@babel/helper-module-imports@^7.14.5": 107 | version "7.14.5" 108 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" 109 | integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== 110 | dependencies: 111 | "@babel/types" "^7.14.5" 112 | 113 | "@babel/helper-module-transforms@^7.14.5": 114 | version "7.14.5" 115 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" 116 | integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== 117 | dependencies: 118 | "@babel/helper-module-imports" "^7.14.5" 119 | "@babel/helper-replace-supers" "^7.14.5" 120 | "@babel/helper-simple-access" "^7.14.5" 121 | "@babel/helper-split-export-declaration" "^7.14.5" 122 | "@babel/helper-validator-identifier" "^7.14.5" 123 | "@babel/template" "^7.14.5" 124 | "@babel/traverse" "^7.14.5" 125 | "@babel/types" "^7.14.5" 126 | 127 | "@babel/helper-optimise-call-expression@^7.14.5": 128 | version "7.14.5" 129 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" 130 | integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== 131 | dependencies: 132 | "@babel/types" "^7.14.5" 133 | 134 | "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0": 135 | version "7.14.5" 136 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" 137 | integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== 138 | 139 | "@babel/helper-replace-supers@^7.14.5": 140 | version "7.14.5" 141 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" 142 | integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== 143 | dependencies: 144 | "@babel/helper-member-expression-to-functions" "^7.14.5" 145 | "@babel/helper-optimise-call-expression" "^7.14.5" 146 | "@babel/traverse" "^7.14.5" 147 | "@babel/types" "^7.14.5" 148 | 149 | "@babel/helper-simple-access@^7.14.5": 150 | version "7.14.5" 151 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz#66ea85cf53ba0b4e588ba77fc813f53abcaa41c4" 152 | integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== 153 | dependencies: 154 | "@babel/types" "^7.14.5" 155 | 156 | "@babel/helper-skip-transparent-expression-wrappers@^7.14.5": 157 | version "7.14.5" 158 | resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" 159 | integrity sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ== 160 | dependencies: 161 | "@babel/types" "^7.14.5" 162 | 163 | "@babel/helper-split-export-declaration@^7.14.5": 164 | version "7.14.5" 165 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" 166 | integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== 167 | dependencies: 168 | "@babel/types" "^7.14.5" 169 | 170 | "@babel/helper-validator-identifier@^7.14.5": 171 | version "7.14.5" 172 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" 173 | integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== 174 | 175 | "@babel/helper-validator-option@^7.14.5": 176 | version "7.14.5" 177 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" 178 | integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== 179 | 180 | "@babel/helpers@^7.14.6": 181 | version "7.14.6" 182 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.6.tgz#5b58306b95f1b47e2a0199434fa8658fa6c21635" 183 | integrity sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA== 184 | dependencies: 185 | "@babel/template" "^7.14.5" 186 | "@babel/traverse" "^7.14.5" 187 | "@babel/types" "^7.14.5" 188 | 189 | "@babel/highlight@^7.14.5": 190 | version "7.14.5" 191 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 192 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 193 | dependencies: 194 | "@babel/helper-validator-identifier" "^7.14.5" 195 | chalk "^2.0.0" 196 | js-tokens "^4.0.0" 197 | 198 | "@babel/parser@^7.13.16", "@babel/parser@^7.14.5", "@babel/parser@^7.14.6": 199 | version "7.14.6" 200 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.6.tgz#d85cc68ca3cac84eae384c06f032921f5227f4b2" 201 | integrity sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ== 202 | 203 | "@babel/plugin-proposal-class-properties@^7.13.0": 204 | version "7.14.5" 205 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" 206 | integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== 207 | dependencies: 208 | "@babel/helper-create-class-features-plugin" "^7.14.5" 209 | "@babel/helper-plugin-utils" "^7.14.5" 210 | 211 | "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": 212 | version "7.14.5" 213 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" 214 | integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== 215 | dependencies: 216 | "@babel/helper-plugin-utils" "^7.14.5" 217 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 218 | 219 | "@babel/plugin-proposal-optional-chaining@^7.13.12": 220 | version "7.14.5" 221 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" 222 | integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== 223 | dependencies: 224 | "@babel/helper-plugin-utils" "^7.14.5" 225 | "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" 226 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 227 | 228 | "@babel/plugin-syntax-flow@^7.14.5": 229 | version "7.14.5" 230 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz#2ff654999497d7d7d142493260005263731da180" 231 | integrity sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q== 232 | dependencies: 233 | "@babel/helper-plugin-utils" "^7.14.5" 234 | 235 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 236 | version "7.8.3" 237 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 238 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 239 | dependencies: 240 | "@babel/helper-plugin-utils" "^7.8.0" 241 | 242 | "@babel/plugin-syntax-optional-chaining@^7.8.3": 243 | version "7.8.3" 244 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 245 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 246 | dependencies: 247 | "@babel/helper-plugin-utils" "^7.8.0" 248 | 249 | "@babel/plugin-syntax-typescript@^7.14.5": 250 | version "7.14.5" 251 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" 252 | integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== 253 | dependencies: 254 | "@babel/helper-plugin-utils" "^7.14.5" 255 | 256 | "@babel/plugin-transform-flow-strip-types@^7.14.5": 257 | version "7.14.5" 258 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz#0dc9c1d11dcdc873417903d6df4bed019ef0f85e" 259 | integrity sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA== 260 | dependencies: 261 | "@babel/helper-plugin-utils" "^7.14.5" 262 | "@babel/plugin-syntax-flow" "^7.14.5" 263 | 264 | "@babel/plugin-transform-modules-commonjs@^7.13.8": 265 | version "7.14.5" 266 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz#7aaee0ea98283de94da98b28f8c35701429dad97" 267 | integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== 268 | dependencies: 269 | "@babel/helper-module-transforms" "^7.14.5" 270 | "@babel/helper-plugin-utils" "^7.14.5" 271 | "@babel/helper-simple-access" "^7.14.5" 272 | babel-plugin-dynamic-import-node "^2.3.3" 273 | 274 | "@babel/plugin-transform-typescript@^7.14.5": 275 | version "7.14.6" 276 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz#6e9c2d98da2507ebe0a883b100cde3c7279df36c" 277 | integrity sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA== 278 | dependencies: 279 | "@babel/helper-create-class-features-plugin" "^7.14.6" 280 | "@babel/helper-plugin-utils" "^7.14.5" 281 | "@babel/plugin-syntax-typescript" "^7.14.5" 282 | 283 | "@babel/preset-flow@^7.13.13": 284 | version "7.14.5" 285 | resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.14.5.tgz#a1810b0780c8b48ab0bece8e7ab8d0d37712751c" 286 | integrity sha512-pP5QEb4qRUSVGzzKx9xqRuHUrM/jEzMqdrZpdMA+oUCRgd5zM1qGr5y5+ZgAL/1tVv1H0dyk5t4SKJntqyiVtg== 287 | dependencies: 288 | "@babel/helper-plugin-utils" "^7.14.5" 289 | "@babel/helper-validator-option" "^7.14.5" 290 | "@babel/plugin-transform-flow-strip-types" "^7.14.5" 291 | 292 | "@babel/preset-typescript@^7.13.0": 293 | version "7.14.5" 294 | resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz#aa98de119cf9852b79511f19e7f44a2d379bcce0" 295 | integrity sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw== 296 | dependencies: 297 | "@babel/helper-plugin-utils" "^7.14.5" 298 | "@babel/helper-validator-option" "^7.14.5" 299 | "@babel/plugin-transform-typescript" "^7.14.5" 300 | 301 | "@babel/register@^7.13.16": 302 | version "7.14.5" 303 | resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.14.5.tgz#d0eac615065d9c2f1995842f85d6e56c345f3233" 304 | integrity sha512-TjJpGz/aDjFGWsItRBQMOFTrmTI9tr79CHOK+KIvLeCkbxuOAk2M5QHjvruIMGoo9OuccMh5euplPzc5FjAKGg== 305 | dependencies: 306 | clone-deep "^4.0.1" 307 | find-cache-dir "^2.0.0" 308 | make-dir "^2.1.0" 309 | pirates "^4.0.0" 310 | source-map-support "^0.5.16" 311 | 312 | "@babel/template@^7.14.5": 313 | version "7.14.5" 314 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" 315 | integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== 316 | dependencies: 317 | "@babel/code-frame" "^7.14.5" 318 | "@babel/parser" "^7.14.5" 319 | "@babel/types" "^7.14.5" 320 | 321 | "@babel/traverse@^7.14.5": 322 | version "7.14.5" 323 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.5.tgz#c111b0f58afab4fea3d3385a406f692748c59870" 324 | integrity sha512-G3BiS15vevepdmFqmUc9X+64y0viZYygubAMO8SvBmKARuF6CPSZtH4Ng9vi/lrWlZFGe3FWdXNy835akH8Glg== 325 | dependencies: 326 | "@babel/code-frame" "^7.14.5" 327 | "@babel/generator" "^7.14.5" 328 | "@babel/helper-function-name" "^7.14.5" 329 | "@babel/helper-hoist-variables" "^7.14.5" 330 | "@babel/helper-split-export-declaration" "^7.14.5" 331 | "@babel/parser" "^7.14.5" 332 | "@babel/types" "^7.14.5" 333 | debug "^4.1.0" 334 | globals "^11.1.0" 335 | 336 | "@babel/types@^7.14.5": 337 | version "7.14.5" 338 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" 339 | integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== 340 | dependencies: 341 | "@babel/helper-validator-identifier" "^7.14.5" 342 | to-fast-properties "^2.0.0" 343 | 344 | ansi-styles@^3.2.1: 345 | version "3.2.1" 346 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 347 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 348 | dependencies: 349 | color-convert "^1.9.0" 350 | 351 | ansi-styles@^4.1.0: 352 | version "4.3.0" 353 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 354 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 355 | dependencies: 356 | color-convert "^2.0.1" 357 | 358 | arr-diff@^4.0.0: 359 | version "4.0.0" 360 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 361 | integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 362 | 363 | arr-flatten@^1.1.0: 364 | version "1.1.0" 365 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 366 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 367 | 368 | arr-union@^3.1.0: 369 | version "3.1.0" 370 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 371 | integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 372 | 373 | array-unique@^0.3.2: 374 | version "0.3.2" 375 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 376 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 377 | 378 | assign-symbols@^1.0.0: 379 | version "1.0.0" 380 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 381 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 382 | 383 | ast-types@0.14.2: 384 | version "0.14.2" 385 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" 386 | integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== 387 | dependencies: 388 | tslib "^2.0.1" 389 | 390 | atob@^2.1.2: 391 | version "2.1.2" 392 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 393 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 394 | 395 | babel-core@^7.0.0-bridge.0: 396 | version "7.0.0-bridge.0" 397 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" 398 | integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== 399 | 400 | babel-plugin-dynamic-import-node@^2.3.3: 401 | version "2.3.3" 402 | resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" 403 | integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== 404 | dependencies: 405 | object.assign "^4.1.0" 406 | 407 | balanced-match@^1.0.0: 408 | version "1.0.2" 409 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 410 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 411 | 412 | base@^0.11.1: 413 | version "0.11.2" 414 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 415 | integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 416 | dependencies: 417 | cache-base "^1.0.1" 418 | class-utils "^0.3.5" 419 | component-emitter "^1.2.1" 420 | define-property "^1.0.0" 421 | isobject "^3.0.1" 422 | mixin-deep "^1.2.0" 423 | pascalcase "^0.1.1" 424 | 425 | brace-expansion@^1.1.7: 426 | version "1.1.11" 427 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 428 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 429 | dependencies: 430 | balanced-match "^1.0.0" 431 | concat-map "0.0.1" 432 | 433 | braces@^2.3.1: 434 | version "2.3.2" 435 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 436 | integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== 437 | dependencies: 438 | arr-flatten "^1.1.0" 439 | array-unique "^0.3.2" 440 | extend-shallow "^2.0.1" 441 | fill-range "^4.0.0" 442 | isobject "^3.0.1" 443 | repeat-element "^1.1.2" 444 | snapdragon "^0.8.1" 445 | snapdragon-node "^2.0.1" 446 | split-string "^3.0.2" 447 | to-regex "^3.0.1" 448 | 449 | browserslist@^4.16.6: 450 | version "4.16.6" 451 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" 452 | integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== 453 | dependencies: 454 | caniuse-lite "^1.0.30001219" 455 | colorette "^1.2.2" 456 | electron-to-chromium "^1.3.723" 457 | escalade "^3.1.1" 458 | node-releases "^1.1.71" 459 | 460 | buffer-from@^1.0.0: 461 | version "1.1.1" 462 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 463 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 464 | 465 | cache-base@^1.0.1: 466 | version "1.0.1" 467 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 468 | integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 469 | dependencies: 470 | collection-visit "^1.0.0" 471 | component-emitter "^1.2.1" 472 | get-value "^2.0.6" 473 | has-value "^1.0.0" 474 | isobject "^3.0.1" 475 | set-value "^2.0.0" 476 | to-object-path "^0.3.0" 477 | union-value "^1.0.0" 478 | unset-value "^1.0.0" 479 | 480 | call-bind@^1.0.0: 481 | version "1.0.2" 482 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 483 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 484 | dependencies: 485 | function-bind "^1.1.1" 486 | get-intrinsic "^1.0.2" 487 | 488 | caniuse-lite@^1.0.30001219: 489 | version "1.0.30001239" 490 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001239.tgz#66e8669985bb2cb84ccb10f68c25ce6dd3e4d2b8" 491 | integrity sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ== 492 | 493 | chalk@^2.0.0: 494 | version "2.4.2" 495 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 496 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 497 | dependencies: 498 | ansi-styles "^3.2.1" 499 | escape-string-regexp "^1.0.5" 500 | supports-color "^5.3.0" 501 | 502 | chalk@^4.1.1: 503 | version "4.1.1" 504 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" 505 | integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== 506 | dependencies: 507 | ansi-styles "^4.1.0" 508 | supports-color "^7.1.0" 509 | 510 | class-utils@^0.3.5: 511 | version "0.3.6" 512 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 513 | integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 514 | dependencies: 515 | arr-union "^3.1.0" 516 | define-property "^0.2.5" 517 | isobject "^3.0.0" 518 | static-extend "^0.1.1" 519 | 520 | clone-deep@^4.0.1: 521 | version "4.0.1" 522 | resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" 523 | integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== 524 | dependencies: 525 | is-plain-object "^2.0.4" 526 | kind-of "^6.0.2" 527 | shallow-clone "^3.0.0" 528 | 529 | collection-visit@^1.0.0: 530 | version "1.0.0" 531 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 532 | integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 533 | dependencies: 534 | map-visit "^1.0.0" 535 | object-visit "^1.0.0" 536 | 537 | color-convert@^1.9.0: 538 | version "1.9.3" 539 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 540 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 541 | dependencies: 542 | color-name "1.1.3" 543 | 544 | color-convert@^2.0.1: 545 | version "2.0.1" 546 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 547 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 548 | dependencies: 549 | color-name "~1.1.4" 550 | 551 | color-name@1.1.3: 552 | version "1.1.3" 553 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 554 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 555 | 556 | color-name@~1.1.4: 557 | version "1.1.4" 558 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 559 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 560 | 561 | colorette@^1.2.2: 562 | version "1.2.2" 563 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" 564 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== 565 | 566 | colors@^1.1.2: 567 | version "1.4.0" 568 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" 569 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== 570 | 571 | commondir@^1.0.1: 572 | version "1.0.1" 573 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 574 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 575 | 576 | component-emitter@^1.2.1: 577 | version "1.3.0" 578 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 579 | integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== 580 | 581 | concat-map@0.0.1: 582 | version "0.0.1" 583 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 584 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 585 | 586 | convert-source-map@^1.7.0: 587 | version "1.8.0" 588 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 589 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 590 | dependencies: 591 | safe-buffer "~5.1.1" 592 | 593 | copy-descriptor@^0.1.0: 594 | version "0.1.1" 595 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 596 | integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 597 | 598 | cross-spawn@^7.0.3: 599 | version "7.0.3" 600 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 601 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 602 | dependencies: 603 | path-key "^3.1.0" 604 | shebang-command "^2.0.0" 605 | which "^2.0.1" 606 | 607 | debug@^2.2.0, debug@^2.3.3: 608 | version "2.6.9" 609 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 610 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 611 | dependencies: 612 | ms "2.0.0" 613 | 614 | debug@^4.1.0: 615 | version "4.3.1" 616 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 617 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 618 | dependencies: 619 | ms "2.1.2" 620 | 621 | decode-uri-component@^0.2.0: 622 | version "0.2.0" 623 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 624 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 625 | 626 | define-properties@^1.1.3: 627 | version "1.1.3" 628 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 629 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 630 | dependencies: 631 | object-keys "^1.0.12" 632 | 633 | define-property@^0.2.5: 634 | version "0.2.5" 635 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 636 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 637 | dependencies: 638 | is-descriptor "^0.1.0" 639 | 640 | define-property@^1.0.0: 641 | version "1.0.0" 642 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 643 | integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 644 | dependencies: 645 | is-descriptor "^1.0.0" 646 | 647 | define-property@^2.0.2: 648 | version "2.0.2" 649 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 650 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 651 | dependencies: 652 | is-descriptor "^1.0.2" 653 | isobject "^3.0.1" 654 | 655 | electron-to-chromium@^1.3.723: 656 | version "1.3.752" 657 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz#0728587f1b9b970ec9ffad932496429aef750d09" 658 | integrity sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A== 659 | 660 | escalade@^3.1.1: 661 | version "3.1.1" 662 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 663 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 664 | 665 | escape-string-regexp@^1.0.5: 666 | version "1.0.5" 667 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 668 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 669 | 670 | esprima@~4.0.0: 671 | version "4.0.1" 672 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 673 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 674 | 675 | execa@^5.1.1: 676 | version "5.1.1" 677 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 678 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 679 | dependencies: 680 | cross-spawn "^7.0.3" 681 | get-stream "^6.0.0" 682 | human-signals "^2.1.0" 683 | is-stream "^2.0.0" 684 | merge-stream "^2.0.0" 685 | npm-run-path "^4.0.1" 686 | onetime "^5.1.2" 687 | signal-exit "^3.0.3" 688 | strip-final-newline "^2.0.0" 689 | 690 | expand-brackets@^2.1.4: 691 | version "2.1.4" 692 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 693 | integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= 694 | dependencies: 695 | debug "^2.3.3" 696 | define-property "^0.2.5" 697 | extend-shallow "^2.0.1" 698 | posix-character-classes "^0.1.0" 699 | regex-not "^1.0.0" 700 | snapdragon "^0.8.1" 701 | to-regex "^3.0.1" 702 | 703 | extend-shallow@^2.0.1: 704 | version "2.0.1" 705 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 706 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 707 | dependencies: 708 | is-extendable "^0.1.0" 709 | 710 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 711 | version "3.0.2" 712 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 713 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 714 | dependencies: 715 | assign-symbols "^1.0.0" 716 | is-extendable "^1.0.1" 717 | 718 | extglob@^2.0.4: 719 | version "2.0.4" 720 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 721 | integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== 722 | dependencies: 723 | array-unique "^0.3.2" 724 | define-property "^1.0.0" 725 | expand-brackets "^2.1.4" 726 | extend-shallow "^2.0.1" 727 | fragment-cache "^0.2.1" 728 | regex-not "^1.0.0" 729 | snapdragon "^0.8.1" 730 | to-regex "^3.0.1" 731 | 732 | fill-range@^4.0.0: 733 | version "4.0.0" 734 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 735 | integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= 736 | dependencies: 737 | extend-shallow "^2.0.1" 738 | is-number "^3.0.0" 739 | repeat-string "^1.6.1" 740 | to-regex-range "^2.1.0" 741 | 742 | find-cache-dir@^2.0.0: 743 | version "2.1.0" 744 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" 745 | integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== 746 | dependencies: 747 | commondir "^1.0.1" 748 | make-dir "^2.0.0" 749 | pkg-dir "^3.0.0" 750 | 751 | find-up@^3.0.0: 752 | version "3.0.0" 753 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 754 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 755 | dependencies: 756 | locate-path "^3.0.0" 757 | 758 | flow-parser@0.*: 759 | version "0.153.0" 760 | resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.153.0.tgz#bac7e977c79f380b07088d36fd0fccea24435db8" 761 | integrity sha512-qa7UODgbofQyruRWqNQ+KM5hO37CenByxhNfAztiwjBsPhWZ5AFh5g+gtLpTWPlzG7X66QdjBB9DuHNUBcaF+Q== 762 | 763 | for-in@^1.0.2: 764 | version "1.0.2" 765 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 766 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 767 | 768 | fragment-cache@^0.2.1: 769 | version "0.2.1" 770 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 771 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 772 | dependencies: 773 | map-cache "^0.2.2" 774 | 775 | fs.realpath@^1.0.0: 776 | version "1.0.0" 777 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 778 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 779 | 780 | function-bind@^1.1.1: 781 | version "1.1.1" 782 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 783 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 784 | 785 | gensync@^1.0.0-beta.2: 786 | version "1.0.0-beta.2" 787 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 788 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 789 | 790 | get-intrinsic@^1.0.2: 791 | version "1.1.1" 792 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 793 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 794 | dependencies: 795 | function-bind "^1.1.1" 796 | has "^1.0.3" 797 | has-symbols "^1.0.1" 798 | 799 | get-stream@^6.0.0: 800 | version "6.0.1" 801 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 802 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 803 | 804 | get-value@^2.0.3, get-value@^2.0.6: 805 | version "2.0.6" 806 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 807 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 808 | 809 | glob@^7.1.3: 810 | version "7.1.7" 811 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 812 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 813 | dependencies: 814 | fs.realpath "^1.0.0" 815 | inflight "^1.0.4" 816 | inherits "2" 817 | minimatch "^3.0.4" 818 | once "^1.3.0" 819 | path-is-absolute "^1.0.0" 820 | 821 | globals@^11.1.0: 822 | version "11.12.0" 823 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 824 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 825 | 826 | graceful-fs@^4.1.11, graceful-fs@^4.2.4: 827 | version "4.2.6" 828 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" 829 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 830 | 831 | has-flag@^3.0.0: 832 | version "3.0.0" 833 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 834 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 835 | 836 | has-flag@^4.0.0: 837 | version "4.0.0" 838 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 839 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 840 | 841 | has-symbols@^1.0.1: 842 | version "1.0.2" 843 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 844 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 845 | 846 | has-value@^0.3.1: 847 | version "0.3.1" 848 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 849 | integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 850 | dependencies: 851 | get-value "^2.0.3" 852 | has-values "^0.1.4" 853 | isobject "^2.0.0" 854 | 855 | has-value@^1.0.0: 856 | version "1.0.0" 857 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 858 | integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 859 | dependencies: 860 | get-value "^2.0.6" 861 | has-values "^1.0.0" 862 | isobject "^3.0.0" 863 | 864 | has-values@^0.1.4: 865 | version "0.1.4" 866 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 867 | integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 868 | 869 | has-values@^1.0.0: 870 | version "1.0.0" 871 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 872 | integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 873 | dependencies: 874 | is-number "^3.0.0" 875 | kind-of "^4.0.0" 876 | 877 | has@^1.0.3: 878 | version "1.0.3" 879 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 880 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 881 | dependencies: 882 | function-bind "^1.1.1" 883 | 884 | human-signals@^2.1.0: 885 | version "2.1.0" 886 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 887 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 888 | 889 | imurmurhash@^0.1.4: 890 | version "0.1.4" 891 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 892 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 893 | 894 | inflight@^1.0.4: 895 | version "1.0.6" 896 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 897 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 898 | dependencies: 899 | once "^1.3.0" 900 | wrappy "1" 901 | 902 | inherits@2: 903 | version "2.0.4" 904 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 905 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 906 | 907 | is-accessor-descriptor@^0.1.6: 908 | version "0.1.6" 909 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 910 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 911 | dependencies: 912 | kind-of "^3.0.2" 913 | 914 | is-accessor-descriptor@^1.0.0: 915 | version "1.0.0" 916 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 917 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 918 | dependencies: 919 | kind-of "^6.0.0" 920 | 921 | is-buffer@^1.1.5: 922 | version "1.1.6" 923 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 924 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 925 | 926 | is-data-descriptor@^0.1.4: 927 | version "0.1.4" 928 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 929 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 930 | dependencies: 931 | kind-of "^3.0.2" 932 | 933 | is-data-descriptor@^1.0.0: 934 | version "1.0.0" 935 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 936 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 937 | dependencies: 938 | kind-of "^6.0.0" 939 | 940 | is-descriptor@^0.1.0: 941 | version "0.1.6" 942 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 943 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 944 | dependencies: 945 | is-accessor-descriptor "^0.1.6" 946 | is-data-descriptor "^0.1.4" 947 | kind-of "^5.0.0" 948 | 949 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 950 | version "1.0.2" 951 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 952 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 953 | dependencies: 954 | is-accessor-descriptor "^1.0.0" 955 | is-data-descriptor "^1.0.0" 956 | kind-of "^6.0.2" 957 | 958 | is-extendable@^0.1.0, is-extendable@^0.1.1: 959 | version "0.1.1" 960 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 961 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 962 | 963 | is-extendable@^1.0.1: 964 | version "1.0.1" 965 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 966 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 967 | dependencies: 968 | is-plain-object "^2.0.4" 969 | 970 | is-number@^3.0.0: 971 | version "3.0.0" 972 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 973 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 974 | dependencies: 975 | kind-of "^3.0.2" 976 | 977 | is-plain-object@^2.0.3, is-plain-object@^2.0.4: 978 | version "2.0.4" 979 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 980 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 981 | dependencies: 982 | isobject "^3.0.1" 983 | 984 | is-stream@^2.0.0: 985 | version "2.0.0" 986 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 987 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 988 | 989 | is-windows@^1.0.2: 990 | version "1.0.2" 991 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 992 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 993 | 994 | isarray@1.0.0: 995 | version "1.0.0" 996 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 997 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 998 | 999 | isexe@^2.0.0: 1000 | version "2.0.0" 1001 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1002 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1003 | 1004 | isobject@^2.0.0: 1005 | version "2.1.0" 1006 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1007 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 1008 | dependencies: 1009 | isarray "1.0.0" 1010 | 1011 | isobject@^3.0.0, isobject@^3.0.1: 1012 | version "3.0.1" 1013 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1014 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 1015 | 1016 | js-tokens@^4.0.0: 1017 | version "4.0.0" 1018 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1019 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1020 | 1021 | jscodeshift@^0.12.0: 1022 | version "0.12.0" 1023 | resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.12.0.tgz#de7302f3d3e1f4b3b36f9e484f451ba4ab7cc1f4" 1024 | integrity sha512-LEgr+wklbtEQD6SptyVYox+YZ7v+4NQeWHgqASedxl2LxQ+/kSQs6Nhs/GX+ymVOu84Hsz9/C2hQfDY89dKZ6A== 1025 | dependencies: 1026 | "@babel/core" "^7.13.16" 1027 | "@babel/parser" "^7.13.16" 1028 | "@babel/plugin-proposal-class-properties" "^7.13.0" 1029 | "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" 1030 | "@babel/plugin-proposal-optional-chaining" "^7.13.12" 1031 | "@babel/plugin-transform-modules-commonjs" "^7.13.8" 1032 | "@babel/preset-flow" "^7.13.13" 1033 | "@babel/preset-typescript" "^7.13.0" 1034 | "@babel/register" "^7.13.16" 1035 | babel-core "^7.0.0-bridge.0" 1036 | colors "^1.1.2" 1037 | flow-parser "0.*" 1038 | graceful-fs "^4.2.4" 1039 | micromatch "^3.1.10" 1040 | neo-async "^2.5.0" 1041 | node-dir "^0.1.17" 1042 | recast "^0.20.4" 1043 | temp "^0.8.1" 1044 | write-file-atomic "^2.3.0" 1045 | 1046 | jsesc@^2.5.1: 1047 | version "2.5.2" 1048 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1049 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1050 | 1051 | json5@^2.1.2: 1052 | version "2.2.0" 1053 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 1054 | integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== 1055 | dependencies: 1056 | minimist "^1.2.5" 1057 | 1058 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1059 | version "3.2.2" 1060 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1061 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 1062 | dependencies: 1063 | is-buffer "^1.1.5" 1064 | 1065 | kind-of@^4.0.0: 1066 | version "4.0.0" 1067 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1068 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 1069 | dependencies: 1070 | is-buffer "^1.1.5" 1071 | 1072 | kind-of@^5.0.0: 1073 | version "5.1.0" 1074 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1075 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 1076 | 1077 | kind-of@^6.0.0, kind-of@^6.0.2: 1078 | version "6.0.3" 1079 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1080 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1081 | 1082 | locate-path@^3.0.0: 1083 | version "3.0.0" 1084 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1085 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1086 | dependencies: 1087 | p-locate "^3.0.0" 1088 | path-exists "^3.0.0" 1089 | 1090 | make-dir@^2.0.0, make-dir@^2.1.0: 1091 | version "2.1.0" 1092 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" 1093 | integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== 1094 | dependencies: 1095 | pify "^4.0.1" 1096 | semver "^5.6.0" 1097 | 1098 | map-cache@^0.2.2: 1099 | version "0.2.2" 1100 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1101 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 1102 | 1103 | map-visit@^1.0.0: 1104 | version "1.0.0" 1105 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 1106 | integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 1107 | dependencies: 1108 | object-visit "^1.0.0" 1109 | 1110 | merge-stream@^2.0.0: 1111 | version "2.0.0" 1112 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1113 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1114 | 1115 | micromatch@^3.1.10: 1116 | version "3.1.10" 1117 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 1118 | integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== 1119 | dependencies: 1120 | arr-diff "^4.0.0" 1121 | array-unique "^0.3.2" 1122 | braces "^2.3.1" 1123 | define-property "^2.0.2" 1124 | extend-shallow "^3.0.2" 1125 | extglob "^2.0.4" 1126 | fragment-cache "^0.2.1" 1127 | kind-of "^6.0.2" 1128 | nanomatch "^1.2.9" 1129 | object.pick "^1.3.0" 1130 | regex-not "^1.0.0" 1131 | snapdragon "^0.8.1" 1132 | to-regex "^3.0.2" 1133 | 1134 | mimic-fn@^2.1.0: 1135 | version "2.1.0" 1136 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1137 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1138 | 1139 | minimatch@^3.0.2, minimatch@^3.0.4: 1140 | version "3.0.4" 1141 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1142 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1143 | dependencies: 1144 | brace-expansion "^1.1.7" 1145 | 1146 | minimist@^1.2.5: 1147 | version "1.2.5" 1148 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1149 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1150 | 1151 | mixin-deep@^1.2.0: 1152 | version "1.3.2" 1153 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" 1154 | integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== 1155 | dependencies: 1156 | for-in "^1.0.2" 1157 | is-extendable "^1.0.1" 1158 | 1159 | ms@2.0.0: 1160 | version "2.0.0" 1161 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1162 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1163 | 1164 | ms@2.1.2: 1165 | version "2.1.2" 1166 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1167 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1168 | 1169 | nanomatch@^1.2.9: 1170 | version "1.2.13" 1171 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 1172 | integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 1173 | dependencies: 1174 | arr-diff "^4.0.0" 1175 | array-unique "^0.3.2" 1176 | define-property "^2.0.2" 1177 | extend-shallow "^3.0.2" 1178 | fragment-cache "^0.2.1" 1179 | is-windows "^1.0.2" 1180 | kind-of "^6.0.2" 1181 | object.pick "^1.3.0" 1182 | regex-not "^1.0.0" 1183 | snapdragon "^0.8.1" 1184 | to-regex "^3.0.1" 1185 | 1186 | neo-async@^2.5.0: 1187 | version "2.6.2" 1188 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1189 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1190 | 1191 | node-dir@^0.1.17: 1192 | version "0.1.17" 1193 | resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" 1194 | integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= 1195 | dependencies: 1196 | minimatch "^3.0.2" 1197 | 1198 | node-modules-regexp@^1.0.0: 1199 | version "1.0.0" 1200 | resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" 1201 | integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= 1202 | 1203 | node-releases@^1.1.71: 1204 | version "1.1.73" 1205 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" 1206 | integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== 1207 | 1208 | npm-run-path@^4.0.1: 1209 | version "4.0.1" 1210 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 1211 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1212 | dependencies: 1213 | path-key "^3.0.0" 1214 | 1215 | object-copy@^0.1.0: 1216 | version "0.1.0" 1217 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 1218 | integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 1219 | dependencies: 1220 | copy-descriptor "^0.1.0" 1221 | define-property "^0.2.5" 1222 | kind-of "^3.0.3" 1223 | 1224 | object-keys@^1.0.12, object-keys@^1.1.1: 1225 | version "1.1.1" 1226 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1227 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1228 | 1229 | object-visit@^1.0.0: 1230 | version "1.0.1" 1231 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 1232 | integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 1233 | dependencies: 1234 | isobject "^3.0.0" 1235 | 1236 | object.assign@^4.1.0: 1237 | version "4.1.2" 1238 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1239 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1240 | dependencies: 1241 | call-bind "^1.0.0" 1242 | define-properties "^1.1.3" 1243 | has-symbols "^1.0.1" 1244 | object-keys "^1.1.1" 1245 | 1246 | object.pick@^1.3.0: 1247 | version "1.3.0" 1248 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 1249 | integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 1250 | dependencies: 1251 | isobject "^3.0.1" 1252 | 1253 | once@^1.3.0: 1254 | version "1.4.0" 1255 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1256 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1257 | dependencies: 1258 | wrappy "1" 1259 | 1260 | onetime@^5.1.2: 1261 | version "5.1.2" 1262 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1263 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1264 | dependencies: 1265 | mimic-fn "^2.1.0" 1266 | 1267 | p-limit@^2.0.0: 1268 | version "2.3.0" 1269 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1270 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1271 | dependencies: 1272 | p-try "^2.0.0" 1273 | 1274 | p-locate@^3.0.0: 1275 | version "3.0.0" 1276 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1277 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1278 | dependencies: 1279 | p-limit "^2.0.0" 1280 | 1281 | p-try@^2.0.0: 1282 | version "2.2.0" 1283 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1284 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1285 | 1286 | pascalcase@^0.1.1: 1287 | version "0.1.1" 1288 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 1289 | integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 1290 | 1291 | path-exists@^3.0.0: 1292 | version "3.0.0" 1293 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1294 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1295 | 1296 | path-is-absolute@^1.0.0: 1297 | version "1.0.1" 1298 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1299 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1300 | 1301 | path-key@^3.0.0, path-key@^3.1.0: 1302 | version "3.1.1" 1303 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1304 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1305 | 1306 | pify@^4.0.1: 1307 | version "4.0.1" 1308 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 1309 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1310 | 1311 | pirates@^4.0.0: 1312 | version "4.0.1" 1313 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" 1314 | integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== 1315 | dependencies: 1316 | node-modules-regexp "^1.0.0" 1317 | 1318 | pkg-dir@^3.0.0: 1319 | version "3.0.0" 1320 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" 1321 | integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== 1322 | dependencies: 1323 | find-up "^3.0.0" 1324 | 1325 | posix-character-classes@^0.1.0: 1326 | version "0.1.1" 1327 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 1328 | integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 1329 | 1330 | prettier@^2.3.2: 1331 | version "2.3.2" 1332 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" 1333 | integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== 1334 | 1335 | recast@^0.20.4: 1336 | version "0.20.4" 1337 | resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" 1338 | integrity sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ== 1339 | dependencies: 1340 | ast-types "0.14.2" 1341 | esprima "~4.0.0" 1342 | source-map "~0.6.1" 1343 | tslib "^2.0.1" 1344 | 1345 | regex-not@^1.0.0, regex-not@^1.0.2: 1346 | version "1.0.2" 1347 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 1348 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 1349 | dependencies: 1350 | extend-shallow "^3.0.2" 1351 | safe-regex "^1.1.0" 1352 | 1353 | repeat-element@^1.1.2: 1354 | version "1.1.4" 1355 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" 1356 | integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== 1357 | 1358 | repeat-string@^1.6.1: 1359 | version "1.6.1" 1360 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1361 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 1362 | 1363 | resolve-url@^0.2.1: 1364 | version "0.2.1" 1365 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 1366 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 1367 | 1368 | ret@~0.1.10: 1369 | version "0.1.15" 1370 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 1371 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 1372 | 1373 | rimraf@~2.6.2: 1374 | version "2.6.3" 1375 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1376 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1377 | dependencies: 1378 | glob "^7.1.3" 1379 | 1380 | safe-buffer@~5.1.1: 1381 | version "5.1.2" 1382 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1383 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1384 | 1385 | safe-regex@^1.1.0: 1386 | version "1.1.0" 1387 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 1388 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 1389 | dependencies: 1390 | ret "~0.1.10" 1391 | 1392 | semver@^5.6.0: 1393 | version "5.7.1" 1394 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1395 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1396 | 1397 | semver@^6.3.0: 1398 | version "6.3.0" 1399 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1400 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1401 | 1402 | set-value@^2.0.0, set-value@^2.0.1: 1403 | version "2.0.1" 1404 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" 1405 | integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== 1406 | dependencies: 1407 | extend-shallow "^2.0.1" 1408 | is-extendable "^0.1.1" 1409 | is-plain-object "^2.0.3" 1410 | split-string "^3.0.1" 1411 | 1412 | shallow-clone@^3.0.0: 1413 | version "3.0.1" 1414 | resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" 1415 | integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== 1416 | dependencies: 1417 | kind-of "^6.0.2" 1418 | 1419 | shebang-command@^2.0.0: 1420 | version "2.0.0" 1421 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1422 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1423 | dependencies: 1424 | shebang-regex "^3.0.0" 1425 | 1426 | shebang-regex@^3.0.0: 1427 | version "3.0.0" 1428 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1429 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1430 | 1431 | signal-exit@^3.0.2, signal-exit@^3.0.3: 1432 | version "3.0.3" 1433 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1434 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1435 | 1436 | snapdragon-node@^2.0.1: 1437 | version "2.1.1" 1438 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 1439 | integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== 1440 | dependencies: 1441 | define-property "^1.0.0" 1442 | isobject "^3.0.0" 1443 | snapdragon-util "^3.0.1" 1444 | 1445 | snapdragon-util@^3.0.1: 1446 | version "3.0.1" 1447 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 1448 | integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== 1449 | dependencies: 1450 | kind-of "^3.2.0" 1451 | 1452 | snapdragon@^0.8.1: 1453 | version "0.8.2" 1454 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 1455 | integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 1456 | dependencies: 1457 | base "^0.11.1" 1458 | debug "^2.2.0" 1459 | define-property "^0.2.5" 1460 | extend-shallow "^2.0.1" 1461 | map-cache "^0.2.2" 1462 | source-map "^0.5.6" 1463 | source-map-resolve "^0.5.0" 1464 | use "^3.1.0" 1465 | 1466 | source-map-resolve@^0.5.0: 1467 | version "0.5.3" 1468 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" 1469 | integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== 1470 | dependencies: 1471 | atob "^2.1.2" 1472 | decode-uri-component "^0.2.0" 1473 | resolve-url "^0.2.1" 1474 | source-map-url "^0.4.0" 1475 | urix "^0.1.0" 1476 | 1477 | source-map-support@^0.5.16: 1478 | version "0.5.19" 1479 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1480 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1481 | dependencies: 1482 | buffer-from "^1.0.0" 1483 | source-map "^0.6.0" 1484 | 1485 | source-map-url@^0.4.0: 1486 | version "0.4.1" 1487 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" 1488 | integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== 1489 | 1490 | source-map@^0.5.0, source-map@^0.5.6: 1491 | version "0.5.7" 1492 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1493 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1494 | 1495 | source-map@^0.6.0, source-map@~0.6.1: 1496 | version "0.6.1" 1497 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1498 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1499 | 1500 | split-string@^3.0.1, split-string@^3.0.2: 1501 | version "3.1.0" 1502 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 1503 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 1504 | dependencies: 1505 | extend-shallow "^3.0.0" 1506 | 1507 | static-extend@^0.1.1: 1508 | version "0.1.2" 1509 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 1510 | integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 1511 | dependencies: 1512 | define-property "^0.2.5" 1513 | object-copy "^0.1.0" 1514 | 1515 | strip-final-newline@^2.0.0: 1516 | version "2.0.0" 1517 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 1518 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1519 | 1520 | supports-color@^5.3.0: 1521 | version "5.5.0" 1522 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1523 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1524 | dependencies: 1525 | has-flag "^3.0.0" 1526 | 1527 | supports-color@^7.1.0: 1528 | version "7.2.0" 1529 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1530 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1531 | dependencies: 1532 | has-flag "^4.0.0" 1533 | 1534 | temp@^0.8.1: 1535 | version "0.8.4" 1536 | resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" 1537 | integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== 1538 | dependencies: 1539 | rimraf "~2.6.2" 1540 | 1541 | to-fast-properties@^2.0.0: 1542 | version "2.0.0" 1543 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1544 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1545 | 1546 | to-object-path@^0.3.0: 1547 | version "0.3.0" 1548 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 1549 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 1550 | dependencies: 1551 | kind-of "^3.0.2" 1552 | 1553 | to-regex-range@^2.1.0: 1554 | version "2.1.1" 1555 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 1556 | integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= 1557 | dependencies: 1558 | is-number "^3.0.0" 1559 | repeat-string "^1.6.1" 1560 | 1561 | to-regex@^3.0.1, to-regex@^3.0.2: 1562 | version "3.0.2" 1563 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 1564 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 1565 | dependencies: 1566 | define-property "^2.0.2" 1567 | extend-shallow "^3.0.2" 1568 | regex-not "^1.0.2" 1569 | safe-regex "^1.1.0" 1570 | 1571 | tslib@^2.0.1: 1572 | version "2.3.0" 1573 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" 1574 | integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== 1575 | 1576 | union-value@^1.0.0: 1577 | version "1.0.1" 1578 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" 1579 | integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== 1580 | dependencies: 1581 | arr-union "^3.1.0" 1582 | get-value "^2.0.6" 1583 | is-extendable "^0.1.1" 1584 | set-value "^2.0.1" 1585 | 1586 | unset-value@^1.0.0: 1587 | version "1.0.0" 1588 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 1589 | integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 1590 | dependencies: 1591 | has-value "^0.3.1" 1592 | isobject "^3.0.0" 1593 | 1594 | urix@^0.1.0: 1595 | version "0.1.0" 1596 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 1597 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 1598 | 1599 | use@^3.1.0: 1600 | version "3.1.1" 1601 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 1602 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 1603 | 1604 | which@^2.0.1: 1605 | version "2.0.2" 1606 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1607 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1608 | dependencies: 1609 | isexe "^2.0.0" 1610 | 1611 | wrappy@1: 1612 | version "1.0.2" 1613 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1614 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1615 | 1616 | write-file-atomic@^2.3.0: 1617 | version "2.4.3" 1618 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" 1619 | integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== 1620 | dependencies: 1621 | graceful-fs "^4.1.11" 1622 | imurmurhash "^0.1.4" 1623 | signal-exit "^3.0.2" 1624 | --------------------------------------------------------------------------------