├── index.js ├── examples └── nextjs │ ├── README.md │ ├── .gitignore │ ├── .babelrc.js │ ├── world.js │ ├── pages │ ├── _document.js │ ├── _app.js │ └── index.js │ ├── package.json │ ├── .eslintrc.js │ └── ui.js ├── src ├── index.js ├── react │ └── styled-components │ │ └── index.js └── ThemeMiner.js ├── .npmignore ├── .babelrc ├── .eslintrc.js ├── LICENSE ├── .gitignore ├── rollup.config.js ├── package.json ├── CODE_OF_CONDUCT.md ├── README.md └── yarn.lock /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./lib/index.js"); 2 | -------------------------------------------------------------------------------- /examples/nextjs/README.md: -------------------------------------------------------------------------------- 1 | # ThemeMiner Next.js Example ⛏ 2 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ThemeMiner: require("./ThemeMiner") 3 | }; 4 | -------------------------------------------------------------------------------- /examples/nextjs/.gitignore: -------------------------------------------------------------------------------- 1 | bundles 2 | node_modules 3 | .next 4 | yarn.lock 5 | theme-miner 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /.github/ 2 | /node_modules/ 3 | 4 | /src/ 5 | /examples/ 6 | 7 | .babelrc 8 | .eslintrc.js -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-env", "@babel/preset-react"], 3 | "plugins": [ 4 | "@babel/plugin-proposal-object-rest-spread", 5 | "@babel/plugin-proposal-class-properties" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /examples/nextjs/.babelrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["next/babel"], 3 | plugins: [ 4 | [ 5 | "styled-components", 6 | { 7 | ssr: true, 8 | displayName: true, 9 | preprocess: false 10 | } 11 | ] 12 | ] 13 | }; 14 | -------------------------------------------------------------------------------- /examples/nextjs/world.js: -------------------------------------------------------------------------------- 1 | import { World } from "world-i18n"; 2 | 3 | export const world = new World({ 4 | locale: "en", 5 | defaultLocale: "en", 6 | translations: { 7 | en: { 8 | hello: "Hello World", 9 | "hello-description": "Welcome to the ThemeMiner demo for Next.js", 10 | }, 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | node: true 5 | }, 6 | parser: "babel-eslint", 7 | plugins: ["prettier", "import"], 8 | rules: { 9 | "import/named": "off", 10 | "import/export": "error", 11 | "import/no-named-as-default": "error", 12 | "import/no-named-as-default-member": "error", 13 | "prettier/prettier": "error", 14 | "no-alert": "warn", 15 | "no-duplicate-imports": "error", 16 | "no-useless-constructor": "error", 17 | "no-useless-escape": "error", 18 | "no-undef": "error", 19 | "no-undef-init": "error" 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /examples/nextjs/pages/_document.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Document, { Head, Main, NextScript } from "next/document"; 3 | import { ServerStyleSheet } from "styled-components"; 4 | 5 | export default class MyDocument extends Document { 6 | static async getInitialProps(ctx) { 7 | // STYLED COMPONENTS 8 | const sheet = new ServerStyleSheet(); 9 | const page = ctx.renderPage((App) => (props) => 10 | sheet.collectStyles(), 11 | ); 12 | const styleTags = sheet.getStyleElement(); 13 | 14 | return { 15 | ...page, 16 | styleTags, 17 | }; 18 | } 19 | 20 | render() { 21 | const { styleTags } = this.props; 22 | 23 | return ( 24 | 25 | {styleTags} 26 | 27 |
28 | 29 | 30 | 31 | ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /examples/nextjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "theme-miner-basic-example", 3 | "version": "1.0.0", 4 | "description": "ThemeMiner example for Next.js, React and styled-components.", 5 | "author": "Doub.co ", 6 | "main": "lib/index.js", 7 | "license": "MIT", 8 | "scripts": { 9 | "dev": " DEBUG=tm-example* next -p 3000" 10 | }, 11 | "dependencies": { 12 | "next": "^9.4.0", 13 | "react": "^16.13.1", 14 | "react-dom": "^16.13.1", 15 | "styled-components": "^5.1.0", 16 | "theme-miner": "^2.0.4", 17 | "tinycolor2": "^1.4.1", 18 | "world-i18n": "^1.1.4" 19 | }, 20 | "prettier": { 21 | "arrowParens": "always", 22 | "trailingComma": "all" 23 | }, 24 | "keywords": [ 25 | "theme", 26 | "styled", 27 | "components", 28 | "react", 29 | "helper" 30 | ], 31 | "devDependencies": { 32 | "eslint": "^7.0.0", 33 | "eslint-plugin-import": "^2.20.2", 34 | "eslint-plugin-prettier": "^3.1.3", 35 | "eslint-plugin-react": "^7.20.0", 36 | "prettier": "^2.0.5" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Doub.co 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /examples/nextjs/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | node: true, 4 | browser: true 5 | }, 6 | parser: "babel-eslint", 7 | plugins: ["prettier", "react", "react-hooks", "import"], 8 | rules: { 9 | "import/no-unresolved": "error", 10 | "import/named": "error", 11 | "import/export": "error", 12 | "import/no-named-as-default": "error", 13 | "import/no-named-as-default-member": "error", 14 | "prettier/prettier": "error", 15 | "no-alert": "error", 16 | "no-duplicate-imports": "error", 17 | "no-useless-constructor": "error", 18 | "no-useless-escape": "error", 19 | "no-undef": "error", 20 | "no-undef-init": "error", 21 | "react/jsx-no-undef": "error", 22 | "react/jsx-uses-react": "error", 23 | "react/jsx-uses-vars": "error", 24 | "react/no-did-mount-set-state": "error", 25 | "react/no-did-update-set-state": "error", 26 | "react/no-unknown-property": "error", 27 | "react/react-in-jsx-scope": "error", 28 | "react/self-closing-comp": "error", 29 | "react/jsx-wrap-multilines": "error", 30 | "react-hooks/rules-of-hooks": "error", 31 | "react-hooks/exhaustive-deps": "warn" 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | 63 | /lib/ 64 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import babel from "rollup-plugin-babel"; 2 | import commonjs from "rollup-plugin-commonjs"; 3 | import external from "rollup-plugin-peer-deps-external"; 4 | import resolve from "rollup-plugin-node-resolve"; 5 | import url from "rollup-plugin-url"; 6 | 7 | import pkg from "./package.json"; 8 | 9 | export default [ 10 | { 11 | input: "./src/index.js", 12 | output: [ 13 | { 14 | file: pkg.main, 15 | format: "cjs", 16 | sourcemap: true, 17 | exports: "named", 18 | }, 19 | { 20 | file: pkg.module, 21 | format: "es", 22 | sourcemap: true, 23 | exports: "named", 24 | }, 25 | ], 26 | plugins: [ 27 | external(), 28 | url(), 29 | babel({ 30 | exclude: "node_modules/**", 31 | }), 32 | resolve(), 33 | commonjs(), 34 | ], 35 | }, 36 | { 37 | external: ["react", "styled-components"], 38 | input: "./src/react/styled-components/index.js", 39 | output: [ 40 | { 41 | file: pkg.react["styled-components"].main, 42 | format: "cjs", 43 | sourcemap: true, 44 | exports: "named", 45 | }, 46 | { 47 | file: pkg.react["styled-components"].module, 48 | format: "es", 49 | sourcemap: true, 50 | exports: "named", 51 | }, 52 | ], 53 | plugins: [ 54 | external(), 55 | url(), 56 | babel({ 57 | exclude: "node_modules/**", 58 | }), 59 | resolve(), 60 | commonjs(), 61 | ], 62 | }, 63 | ]; 64 | -------------------------------------------------------------------------------- /examples/nextjs/pages/_app.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import App from "next/app"; 4 | import Head from "next/head"; 5 | 6 | import { createGlobalStyle } from "styled-components"; 7 | import { WorldProvider } from "world-i18n/lib/react"; 8 | 9 | // import { UIProvider } from "theme-miner/lib/react/styled-components"; 10 | import { UIProvider } from "../theme-miner/react/styled-components"; 11 | 12 | import { UI } from "../ui"; 13 | import { world } from "../world"; 14 | 15 | const DocumentStyle = createGlobalStyle` 16 | *, 17 | *:before, 18 | *:after { 19 | box-sizing: inherit; 20 | } 21 | 22 | *:focus { 23 | outline: none; 24 | } 25 | 26 | html,body { 27 | box-sizing: border-box; 28 | margin: 0; 29 | padding: 0; 30 | } 31 | `; 32 | 33 | class MyApp extends App { 34 | constructor(props) { 35 | super(props); 36 | this.state = { 37 | theme: "white", 38 | }; 39 | } 40 | 41 | render() { 42 | const { Component, pageProps } = this.props; 43 | const { theme } = this.state; 44 | return ( 45 | <> 46 | 47 | ThemeMiner Demo 48 | 49 | 50 | 51 | 57 | 58 | 59 | 60 | 61 | ); 62 | } 63 | } 64 | 65 | export default MyApp; 66 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@doubco/thememiner", 3 | "version": "2.2.6", 4 | "description": "ThemeMiner is the missing piece for styled-components.", 5 | "author": "Doub.co ", 6 | "main": "lib/index.js", 7 | "react": { 8 | "styled-components": { 9 | "main": "lib/react/styled-components/index.js", 10 | "module": "lib/react/styled-components/index.es.js", 11 | "commonjs": "lib/react/styled-components/index.cjs.js" 12 | } 13 | }, 14 | "commonjs": "lib/index.cjs.js", 15 | "module": "lib/index.es.js", 16 | "repository": "https://github.com/doubco/thememiner.git", 17 | "license": "MIT", 18 | "scripts": { 19 | "test": "echo \"Error: no test specified\" && exit 1", 20 | "setup": "yarn", 21 | "dev": "rollup -c -w", 22 | "build": "rollup -c", 23 | "prepare": "npm run build" 24 | }, 25 | "dependencies": { 26 | "@doubco/wtf": "^0.0.6" 27 | }, 28 | "prettier": { 29 | "arrowParens": "always", 30 | "trailingComma": "all" 31 | }, 32 | "keywords": [ 33 | "theme", 34 | "styled", 35 | "components", 36 | "react", 37 | "helper" 38 | ], 39 | "peerDependencies": { 40 | "styled-components": "^4.4.1" 41 | }, 42 | "devDependencies": { 43 | "@babel/core": "^7.9.6", 44 | "@babel/preset-react": "7.9.4", 45 | "@babel/plugin-proposal-class-properties": "^7.8.3", 46 | "@babel/plugin-proposal-object-rest-spread": "^7.9.6", 47 | "@babel/preset-env": "^7.9.6", 48 | "babel-eslint": "^10.1.0", 49 | "eslint": "^7.0.0", 50 | "eslint-plugin-import": "^2.20.2", 51 | "eslint-plugin-prettier": "^3.1.3", 52 | "prettier": "^2.0.5", 53 | "rollup-plugin-babel": "^4.4.0", 54 | "rollup-plugin-commonjs": "^10.1.0", 55 | "rollup-plugin-node-resolve": "^5.2.0", 56 | "rollup-plugin-peer-deps-external": "^2.2.2", 57 | "rollup-plugin-url": "^3.0.1" 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hi@doub.co. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /src/react/styled-components/index.js: -------------------------------------------------------------------------------- 1 | import React, { 2 | createContext, 3 | useState, 4 | useRef, 5 | useEffect, 6 | useContext, 7 | } from "react"; 8 | import { ThemeProvider } from "styled-components"; 9 | 10 | const Context = createContext(); 11 | 12 | const onGenerateTheme = (instance, themeKey) => { 13 | let theme = instance.props.theme; 14 | 15 | if (instance.props.onGenerateTheme) { 16 | theme = instance.props.onGenerateTheme(instance, themeKey); 17 | instance.setProps({ theme }); 18 | } 19 | 20 | return theme; 21 | }; 22 | 23 | export const UIProvider = (props) => { 24 | const { instance, theme } = props; 25 | 26 | const { theming = {} } = instance.props.options || {}; 27 | const { paletteKey, themes } = theming; 28 | 29 | if (!paletteKey) { 30 | throw Error("Please add 'paletteKey' property to options.theming."); 31 | } 32 | 33 | if (!themes) { 34 | throw Error("Please add 'themes' object to options.theming."); 35 | } 36 | 37 | if (!theming.default) { 38 | throw Error("Please add 'default' property to options.theming."); 39 | } 40 | 41 | const [themeKey, setTheme] = useState( 42 | themes[theme] ? theme : theming.default, 43 | ); 44 | 45 | const [updating, setUpdating] = useState(false); 46 | 47 | const themeProps = { 48 | [instance.key(paletteKey)]: themeKey, 49 | }; 50 | 51 | const mode = themes[themeKey].mode; 52 | 53 | const generatedTheme = useRef(onGenerateTheme(instance, themeKey)); 54 | 55 | useEffect(() => { 56 | generatedTheme.current = onGenerateTheme(instance, themeKey); 57 | }, [themeKey]); 58 | 59 | return ( 60 | { 63 | const { scope, cache } = options; 64 | 65 | let p = pr; 66 | 67 | const active = instance.active(p); 68 | const __active = cache ? active : null; 69 | 70 | if (overwrite) { 71 | p = { ...pr, ...overwrite(active) }; 72 | } 73 | 74 | const { 75 | props: _props, 76 | global: _global, 77 | local: _local, 78 | interactives: _interactives, 79 | } = instance.properties(p, localKeys, true); 80 | 81 | const props = { 82 | __active, 83 | ..._props, 84 | ..._local, 85 | ..._global, 86 | _global: { ..._global }, 87 | _interactives: { ..._interactives }, 88 | _parent: { ..._props }, 89 | _local: { ..._local }, 90 | _theme: { ...themeProps }, 91 | }; 92 | 93 | return { 94 | props, 95 | theme: generatedTheme.current, 96 | themeKey, 97 | mode, 98 | active, 99 | updating, 100 | setTheme: (theme, callback) => { 101 | if (themes[theme]) { 102 | setUpdating(true); 103 | setTheme(theme); 104 | 105 | instance.setTheme(theme); 106 | 107 | setTimeout(() => { 108 | setUpdating(false); 109 | if (callback) callback(theme); 110 | }, 1); 111 | } 112 | }, 113 | get: (key, customProps = {}) => { 114 | if (scope) { 115 | const { _ } = instance.scoped(scope); 116 | return _(key)({ ...props, ...customProps }); 117 | } else { 118 | return instance._(key)({ ...props, ...customProps }); 119 | } 120 | }, 121 | closest: (prop = "", value) => { 122 | const [key, variant] = prop.split("."); 123 | const next = instance.closest( 124 | key, 125 | variant ? active[key].variant : active[key].key, 126 | value, 127 | variant ? true : false, 128 | ); 129 | 130 | return next; 131 | }, 132 | }; 133 | }, 134 | }} 135 | > 136 | 137 | {props.children} 138 | 139 | 140 | ); 141 | }; 142 | 143 | export const UIConsumer = Context.Consumer; 144 | 145 | export const UIContext = Context; 146 | 147 | export const useUI = (...args) => { 148 | const ctx = useContext(UIContext); 149 | 150 | const context = ctx ? ctx.generateUI(...args) : {}; 151 | return context; 152 | }; 153 | -------------------------------------------------------------------------------- /examples/nextjs/pages/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import styled from "styled-components"; 3 | 4 | // import { useUI } from "theme-miner/lib/react/styled-components"; 5 | import { useUI } from "../theme-miner/react/styled-components"; 6 | 7 | // styled components 8 | import { UI } from "../ui"; 9 | import { useWorld } from "world-i18n/lib/react"; 10 | const { _: t, scoped, cond, mixin } = UI; 11 | const { _: button } = scoped("button"); 12 | 13 | const Viewport = styled.div` 14 | height: 100vh; 15 | width: 100vw; 16 | display: flex; 17 | align-items: center; 18 | justify-content: center; 19 | background: #ccc; 20 | /* if mixin doesn't need or use the interactives, you need the run the under function like below */ 21 | /* ${mixin("debug")({ color: "blue" })} */ 22 | `; 23 | 24 | const Box = styled.div` 25 | border-radius: ${t`radius.active``px`}; 26 | background: ${t`palette.active`}; 27 | padding: ${t`padding.active``px`}; 28 | margin: ${t`margin.active``px`}; 29 | display: flex; 30 | align-items: center; 31 | justify-content: center; 32 | flex-direction: column; 33 | `; 34 | 35 | const Button = styled.div` 36 | cursor: pointer; 37 | margin: ${t`margin.active``px`}; 38 | padding: ${t`padding.active``px`}; 39 | 40 | border-radius: ${t`radius.active``px`}; 41 | 42 | background: ${mixin`paint``palette.active`}; 43 | color: ${mixin`paintFG``palette.active`}; 44 | 45 | &:hover { 46 | background: ${mixin`asHover``palette.active`}; 47 | } 48 | &:active { 49 | background: ${mixin`asActive``palette.active`}; 50 | } 51 | 52 | min-height: ${button`scale.active.height``px`}; 53 | 54 | width: 200px; 55 | display: flex; 56 | align-items: center; 57 | justify-content: center; 58 | flex-direction: column; 59 | `; 60 | 61 | const Text = styled.span` 62 | color: ${cond({ 63 | // check the documentation for other usage 64 | if: "props.$inherit", 65 | then: null, 66 | else: mixin`paint``palette.active`, 67 | })}; 68 | font-family: ${t`typography.active.family`}; 69 | line-height: ${t`typography.active.height``px`}; 70 | font-size: ${t`typography.active.size``px`}; 71 | opacity: ${t`opacity.active`}; 72 | `; 73 | 74 | const ButtonDemo = (props) => { 75 | const { t, locale } = useWorld(); 76 | const ui = useUI(props); 77 | 78 | // ui.props._local instead of ui.props => this will return only the local props data 79 | // ui.props._glocal instead of ui.props => this will return only the glocal props data e.g. ThemeMiner.properties 80 | // ui.props._interactives instead of ui.props => this will return only the interactives props data 81 | 82 | const data = { 83 | // simple 84 | margin: ui.get("margin"), 85 | "margin.active": ui.get("margin.active"), 86 | "margin.active.0": ui.get("margin.active", { $margin: null }), 87 | // with variant 88 | typography: ui.get("typography"), 89 | "typography.active": ui.get("typography.active"), 90 | "typography.active.size": ui.get("typography.active.size"), 91 | // with variant direct 92 | "typography.default": ui.get("typography.default"), 93 | "typography.default.ty+0.size": ui.get("typography.default.ty+0.size"), 94 | palette: ui.get("palette"), 95 | "palette.active": ui.get("palette.active"), 96 | // with variant direct 97 | "palette.primary": ui.get("palette.primary"), 98 | "palette.primary.sh+0": ui.get("palette.primary.sh+0"), 99 | "palette.primary.contrast": ui.get("palette.primary.contrast"), 100 | "palette.primary.contrast.sh+0": ui.get("palette.primary.contrast.sh+0"), 101 | // middle 102 | "button.scale.active": ui.get("button.scale.active"), 103 | "button.scale.active.height": ui.get("button.scale.active.height"), 104 | "button.scale": ui.get("button.scale"), 105 | "button.scale.sc+1": ui.get("button.scale.sc+1"), 106 | "button.scale.sc+1.height": ui.get("button.scale.sc+1.height"), 107 | // generic 108 | 109 | "theme.button": ui.get("theme.button"), 110 | "props.$margin": ui.get("props.$margin"), 111 | }; 112 | 113 | console.log("prop mine test", data); 114 | 115 | return ( 116 | 127 | ); 128 | }; 129 | 130 | // page 131 | export default (props) => { 132 | const { t, locale } = useWorld(); 133 | const ui = useUI(props); 134 | 135 | return ( 136 | 137 | 138 | 147 | 148 | 157 | 158 | 159 | {locale} 160 | 161 | 162 | 163 | {t("hello")} 164 | 165 | 166 | 167 | {t("hello-description")} 168 | 169 | 170 | 176 | 177 | 178 | ); 179 | }; 180 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ThemeMiner ⛏ 2 | 3 | ThemeMiner is the missing piece for styled-components. 4 | 5 | It makes it very easy and readable, to create complex design systems in `React` with `styled-components`. 6 | 7 | ThemeMiner will consume the `theme` provided with ``. 8 | 9 | ## Install 10 | 11 | `yarn add theme-miner` or `npm install theme-miner --save` 12 | 13 | ## Setup 14 | 15 | To manage your design system and all the other variables first we create a theme file. 16 | 17 | theme.js 18 | 19 | ```js 20 | import { ThemeMiner } from "theme-miner"; 21 | 22 | import { depth, colors, box } from "./constants"; 23 | 24 | export const theme = { 25 | button: { 26 | depth: depth, // we could still overwrite default options for this scope only. 27 | variant: colors, // we could still overwrite default options for this scope only. 28 | size: { 29 | small: { 30 | ...box.size.small, 31 | fontSize: 8 32 | }, 33 | normal: { 34 | ...box.size.normal, 35 | fontSize: 14 36 | }, 37 | large: { 38 | ...box.size.medium 39 | fontSize: 20 40 | } 41 | } 42 | } 43 | }; 44 | 45 | // these are interactives, we will use it as variables 46 | const interactives = { 47 | depth: { // or "myDepths" 48 | options: ["base", "flat", "raised", "overlay", "superior", "declaration"], 49 | default: "flat" 50 | }, 51 | size: { // or "s" 52 | options: ["small", "normal", "large"], 53 | default: "normal" 54 | }, 55 | variant: { // or "color" 56 | options: ["black", "white", "primary", "destructive", "positive"], 57 | default: "primary", 58 | variants: { 59 | key: "tone", // or "shade" 60 | options: ["lighter", "light", "main", "dark", "darker"], 61 | default: "main" 62 | } 63 | } 64 | }; 65 | 66 | const options = { 67 | useTransient: true, // adds $ to interactives e.g. variant becames $variant 68 | useOptions: true, // allow us to use $black addition to $variant="black" 69 | useVariants: true, // allow us to use $light addition to $tone="light" 70 | // PS: don't use same identifiers both inside options and variants 71 | properties: [ 72 | // always will be included in uiProps and passed to styled components 73 | "$color", 74 | "$passive", 75 | "$gutter", 76 | "$padding", 77 | "$radius", 78 | "$v", 79 | "$h" 80 | ] 81 | }; 82 | 83 | const UI = new ThemeMiner({ 84 | theme, 85 | interactives, 86 | options, 87 | mixins: { 88 | multiply: ui => { 89 | return (value, count) => { 90 | return `${value * count}`; 91 | }; 92 | } 93 | } 94 | }); 95 | 96 | export default UI; 97 | ``` 98 | 99 | Now we can pass our theme file to the provider. 100 | 101 | App.js 102 | 103 | ```js 104 | import { ThemeProvider } from "styled-components"; 105 | import { theme } from "./theme"; 106 | 107 | const App = () => { 108 | return ( 109 | 110 | 111 | 112 | ); 113 | }; 114 | 115 | export default App; 116 | ``` 117 | 118 | This step is very recommended but not mandatory. A base component will expose us some api e.g. `this.ui` or `this.closest` 119 | 120 | BaseComponent.js 121 | 122 | ```js 123 | import UI from "../theme"; 124 | 125 | const { properties, active, closest } = UI; 126 | 127 | class BaseComponent extends React.Component { 128 | // clean props for to use in a styled component 129 | get ui() { 130 | const uiProps = properties(this.props, this.uiProps || []); 131 | return { ...uiProps, __active: this.active }; 132 | } 133 | 134 | // helps find lower or higher option in a specific interactive 135 | closest(key, value, checkVariant) { 136 | return closest( 137 | key, 138 | checkVariant ? this.active[key].variant : this.active[key].key, 139 | value, 140 | checkVariant 141 | ); 142 | } 143 | 144 | // active interactives for this instance 145 | get active() { 146 | return active(this.props); 147 | } 148 | } 149 | 150 | export default BaseComponent; 151 | ``` 152 | 153 | StyledButton.js 154 | 155 | ```js 156 | import styled from "styled-components"; 157 | 158 | import UI from "../theme"; 159 | const { cond, is, scoped } = UI; 160 | const { _, mixin } = scoped("button"); // _, mixin, calc could be scoped 161 | 162 | export const StyledButton = styled.div` 163 | font-size: ${_`size.fontSize``px`}; 164 | border-radius: ${_("size.radius")("px") /* we can use without template literals */}; 165 | height: ${_`size.box.height`(height=> `${100/height}px`) /* or customize the output */}; 166 | width: ${_`size.box.width``%`}; 167 | background ${_`variant.active`}; 168 | color ${_`variant.contrast`}; 169 | padding: ${mixin("multiply", 2)`size.padding``px`} 170 | text-decoration: ${cond({ 171 | if: is.eq("props.active",true) // or "props.active" or _`props.active` as a string, 172 | // we could do this too; if: or(is("props.$variant","positive"),"props.active") 173 | then: "underline", 174 | else: null // optional 175 | })}; 176 | `; 177 | 178 | // PS: we can also consume theme without scoped like UI._`button.size.fontSize``px` 179 | 180 | ``` 181 | 182 | Button.js 183 | 184 | ```js 185 | import BaseComponent from "../BaseComponent"; 186 | import StyledButton from "./StyledButton"; 187 | class Button extends BaseComponent { 188 | constructor(props) { 189 | super(props); 190 | this.uiProps = ["active"]; 191 | } 192 | 193 | render() { 194 | // this.ui allow us to pass only props necessary for styled component 195 | return {this.props.title}; 196 | } 197 | } 198 | ``` 199 | 200 | Home.js 201 | 202 | ```js 203 | import Button from "./Button"; 204 | export const Home = () => { 205 | return ( 206 |
207 | 210 | or 211 | 214 |
215 | ); 216 | }; 217 | ``` 218 | 219 | ## API 220 | 221 | ### Global Methods 222 | 223 | #### scoped 224 | 225 | creates scoped helpers from `theme.scope_name` 226 | 227 | `scoped("scope_name")` 228 | 229 | returns two helper 230 | 231 | `{ _, mixin }` 232 | 233 | #### style 234 | 235 | returns resolved UI props and theme variables for styling 236 | 237 | `` style(`buttons.size.padding`, ({ button, theme, active, props }) => {}) `` 238 | 239 | #### \_ 240 | 241 | same as style 242 | 243 | `` _`button.size.padding` `` 244 | 245 | #### calc 246 | 247 | calculates data in template literals, it's handy to use in conditions and unitless operations 248 | 249 | `` calc(`${_`size.padding`} * 2`) `` 250 | 251 | #### mixin 252 | 253 | use global mixins defined in theme file. 254 | 255 | `mixin("some_helper",1,2,3)("scope_name")(x=>{ // do something})` 256 | 257 | #### cond 258 | 259 | helps define conditions in styled-components 260 | 261 | `cond({if: "props.active", then: "10px", else: "8px"})` 262 | 263 | `cond({if: "props.active == true", then: "10px", else: "8px"})` 264 | 265 | `cond({if: "!props.active", then: "10px", else: "8px"})` 266 | 267 | `cond({if: "props.height > 10", then: "10px", else: "8px"})` 268 | 269 | `` cond({if: _`props.height`, then: (p)=> p.height , else: "0"}) `` 270 | 271 | `cond({if: is.ne("props.status","error"), then: "blue" , else: "red"})` 272 | 273 | `cond({if: (p)=> p.height/2 == 10, then: "foo" , else: "bar"})` 274 | 275 | `cond({if: and("props.active",is.eq("status","error")), then: "foo" , else: "bar"})` 276 | 277 | ### Helper Methods 278 | 279 | #### active 280 | 281 | return all active interactive keys and their variants if exists. 282 | 283 | `active(this.props)` 284 | 285 | #### properties 286 | 287 | collect all interactive variables and specified props. 288 | 289 | `properties(this.props, ["align","active","etc"])` 290 | 291 | #### closest 292 | 293 | collect all interactive variables and specified props. 294 | 295 | `closest("size", active(this.props).size.key, -1)` 296 | 297 | `closest("color", active(this.props).color, 1, true)` 298 | 299 | `closest("color", active(this.props).color.variant, -1, true)` 300 | 301 | ### Scoped Methods 302 | 303 | #### \_ 304 | 305 | same as global style or \_ but it is scoped, so there is no need for scope name in dot notation. 306 | 307 | `` _`size.padding` `` 308 | 309 | #### mixin 310 | 311 | same as global mixins but scoped. 312 | 313 | `` mixin`variant.active`(color=> transparentize(0.9,color)) `` 314 | 315 | ### Condition Methods 316 | 317 | `or(a,b)` or helper for conditions 318 | 319 | `and(a,b)` and helper for conditions 320 | 321 | `is.eq(key,value)` checks if it is equal 322 | 323 | `is.ne(key,value)` checks if it is not equal 324 | 325 | `is.nset(key)` checks if it is not exists 326 | 327 | `is.set(key)` checks if it is exists 328 | 329 | `is.in(key,value)` checks if it is included 330 | 331 | `is.nin(key,value)` checks if it is not included 332 | 333 | `is.lt(key,value)` checks if it is little than 334 | 335 | `is.lte(key,value)` checks if it is equal or little than 336 | 337 | `is.gt(key,value)` checks if it is greater than 338 | 339 | `is.gte(key,value)` checks if it is equal or greater than 340 | 341 | `is.color(key)` checks if it is color 342 | 343 | --- 344 | 345 | ## Contribute 346 | 347 | Pull requests are welcome and please submit bugs 🐛. 348 | 349 | ## Contact 350 | 351 | - Follow [@doubco](https://twitter.com/doubco) on Twitter 352 | - Follow [@doubco](http://facebook.com/doubco) on Facebook 353 | - Follow [@doubco](http://instagram.com/doubco) on Instagram 354 | - Email 355 | -------------------------------------------------------------------------------- /examples/nextjs/ui.js: -------------------------------------------------------------------------------- 1 | // import { ThemeMiner } from "theme-miner"; 2 | import ThemeMiner from "./theme-miner/ThemeMiner"; 3 | 4 | import { css } from "styled-components"; 5 | import tinycolor from "tinycolor2"; 6 | 7 | const random = (min, max) => { 8 | return Math.floor(Math.random() * (max - min + 1) + min); 9 | }; 10 | 11 | const family = { 12 | default: `"Inter", sans-serif`, 13 | display: `"Doub.t Normal", sans-serif`, 14 | mono: `"JetBrains Mono", monospace`, 15 | }; 16 | 17 | // palette 18 | const black = { 19 | "sh-2": "#444", 20 | "sh-1": "#333", 21 | "sh+0": "#222", 22 | "sh+1": "#111", 23 | "sh+2": "#000", 24 | }; 25 | 26 | const white = { 27 | "sh-2": "#efefef", 28 | "sh-1": "#eaeaea", 29 | "sh+0": "#e4e4e4", 30 | "sh+1": "#dedede", 31 | "sh+2": "#d9d9d9", 32 | }; 33 | 34 | const primary = { 35 | "sh-2": "#3b70d9", 36 | "sh-1": "#2963d7", 37 | "sh+0": "#255BC7", 38 | "sh+1": "#2253b6", 39 | "sh+2": "#1f4ba4", 40 | }; 41 | 42 | const spacing = { 43 | "sp+0": 0, 44 | "sp+1": 8, 45 | "sp+2": 16, 46 | }; 47 | 48 | // tokens 49 | const tokens = { 50 | palette: { 51 | black: { ...black, contrast: { ...white } }, 52 | white: { ...white, contrast: { ...black } }, 53 | primary: { ...primary, contrast: { ...white } }, 54 | }, 55 | opacity: { 56 | "op+0": 1, 57 | "op-1": 0.8, 58 | "op-2": 0.6, 59 | "op-3": 0.4, 60 | "op-4": 0.2, 61 | }, 62 | depth: { 63 | "de+0": [ 64 | { 65 | color: "#000", 66 | offset: { 67 | width: 0, 68 | height: 0, 69 | }, 70 | opacity: 0, 71 | radius: 0, 72 | elevation: 0, 73 | }, 74 | ], 75 | "de+1": [ 76 | { 77 | color: "#000", 78 | offset: { 79 | width: 0, 80 | height: 4, 81 | }, 82 | opacity: 0.125, 83 | radius: 4, 84 | elevation: 8, 85 | }, 86 | ], 87 | "de+2": [ 88 | { 89 | color: "#000", 90 | offset: { 91 | width: 0, 92 | height: 8, 93 | }, 94 | opacity: 0.25, 95 | radius: 8, 96 | elevation: 16, 97 | }, 98 | ], 99 | "de+3": [ 100 | { 101 | color: "#000", 102 | offset: { 103 | width: 0, 104 | height: 16, 105 | }, 106 | opacity: 0.5, 107 | radius: 16, 108 | elevation: 32, 109 | }, 110 | ], 111 | }, 112 | weight: { 113 | "we-2": 200, 114 | "we-1": 300, 115 | "we+0": 400, 116 | "we+1": 500, 117 | "we+2": 600, 118 | }, 119 | typography: { 120 | default: { 121 | "ty-2": { family: family.default, size: 12, height: 16 }, 122 | "ty-1": { family: family.default, size: 16, height: 24 }, 123 | "ty+0": { family: family.default, size: 24, height: 32 }, 124 | "ty+1": { family: family.default, size: 32, height: 48 }, 125 | "ty+2": { family: family.default, size: 48, height: 64 }, 126 | }, 127 | display: { 128 | "ty-2": { family: family.display, size: 12, height: 16 }, 129 | "ty-1": { family: family.display, size: 16, height: 24 }, 130 | "ty+0": { family: family.display, size: 24, height: 32 }, 131 | "ty+1": { family: family.display, size: 32, height: 48 }, 132 | "ty+2": { family: family.display, size: 48, height: 64 }, 133 | }, 134 | mono: { 135 | "ty-2": { family: family.mono, size: 12, height: 16 }, 136 | "ty-1": { family: family.mono, size: 16, height: 24 }, 137 | "ty+0": { family: family.mono, size: 24, height: 32 }, 138 | "ty+1": { family: family.mono, size: 32, height: 48 }, 139 | "ty+2": { family: family.mono, size: 48, height: 64 }, 140 | }, 141 | }, 142 | radius: { 143 | "ra+0": 0, 144 | "ra+1": 4, 145 | "ra+2": 8, 146 | }, 147 | spacing, 148 | padding: spacing, 149 | margin: spacing, 150 | }; 151 | 152 | // component variables 153 | const button = { 154 | scale: { 155 | "sc-2": { height: 16 }, 156 | "sc-1": { height: 24 }, 157 | "sc+0": { height: 32 }, 158 | "sc+1": { height: 48 }, 159 | "sc+2": { height: 64 }, 160 | }, 161 | }; 162 | 163 | const interactives = { 164 | typography: { 165 | options: ["default", "display", "mono"], 166 | default: "default", 167 | variants: { 168 | key: "size", // could be anything but be careful to don't overlap with other variants' or interactives' key 169 | options: ["ty-2", "ty-1", "ty+0", "ty+1", "ty+2"], 170 | default: "ty+0", 171 | }, 172 | }, 173 | opacity: { 174 | options: ["op+0", "op-1", "op-2", "op-3", "op-4"], 175 | default: "op+0", 176 | }, 177 | radius: { 178 | options: ["ra+0", "ra+1", "ra+2"], 179 | default: "ra+0", 180 | }, 181 | depth: { 182 | options: ["de+0", "de+1", "de+2", "de+3"], 183 | default: "de+0", 184 | }, 185 | scale: { 186 | options: ["sc-2", "sc-1", "sc+0", "sc+1", "sc+2"], 187 | // options could be anything logically ordered. 188 | // options: ["xsmall", "small", "medium", "large", "xlarge"], 189 | default: "sc+0", 190 | }, 191 | palette: { 192 | options: ["black", "white", "primary"], 193 | default: "primary", 194 | variants: { 195 | key: "shade", 196 | // variant options also could be anything logically ordered. 197 | options: ["sh-2", "sh-1", "sh+0", "sh+1", "sh+2"], 198 | default: "sh+0", 199 | }, 200 | }, 201 | spacing: { 202 | options: ["sp+0", "sp+1", "sp+2"], 203 | default: "sp+0", 204 | }, 205 | margin: { 206 | options: ["sp+0", "sp+1", "sp+2"], 207 | default: "sp+0", 208 | }, 209 | padding: { 210 | options: ["sp+0", "sp+1", "sp+2"], 211 | default: "sp+0", 212 | }, 213 | }; 214 | 215 | const options = { 216 | useOptions: false, 217 | useVariants: false, 218 | // globally auto passed properties 219 | properties: ["$debug"], 220 | theming: { 221 | default: "white", 222 | paletteKey: "palette", 223 | themes: { 224 | white: { 225 | default: true, 226 | mode: "light", 227 | }, 228 | black: { 229 | mode: "dark", 230 | }, 231 | }, 232 | }, 233 | }; 234 | 235 | const ui = new ThemeMiner({ 236 | theme: { 237 | ...tokens, 238 | tokens, 239 | button, 240 | }, 241 | interactives, 242 | options, 243 | onThemeChange: (themeKey) => { 244 | console.log("theme changed", themeKey); 245 | }, 246 | onGenerateTheme: (instance, nextTheme) => { 247 | let newTheme = { ...instance.props.theme }; 248 | 249 | // alter theme properties if there is some theme/mode specific changes on tokens or any other variables 250 | // if (nextTheme === "white") { 251 | // // update interactives' scopes 252 | // ["button", "title"].forEach((k) => { 253 | // newTheme[k] = { ...newTheme[k], foo: "bar" }; 254 | // }); 255 | // } 256 | 257 | return newTheme; 258 | }, 259 | mixins: { 260 | debug: ( 261 | instance, 262 | props, 263 | { useProps, disco = false, style, width, color } = {}, 264 | ) => { 265 | const styles = ["dashed", "dotted", "solid"]; 266 | // When disco mode on you will get 'Warning: Prop `className` did not match. Server' error on client side 267 | const borderWidth = width || 2; 268 | const borderStyle = disco ? styles[random(0, 2)] : style || "solid"; 269 | const borderColor = disco 270 | ? `rgb(${random(0, 255)}, ${random(0, 255)}, ${random(0, 255)})` 271 | : color 272 | ? color 273 | : `red`; 274 | 275 | let nextValue = css` 276 | border: ${borderWidth}px ${borderStyle} ${borderColor}; 277 | `; 278 | 279 | if (useProps && !p.$debug) { 280 | nextValue = ""; 281 | } 282 | 283 | return nextValue; 284 | }, 285 | asActive: (instance, props, value, diff = 1) => { 286 | const { theme, $negative, $color } = props; 287 | const palettes = theme.palette; 288 | 289 | // this is the default color 290 | let nextValue = value; 291 | 292 | if ($color) { 293 | if ($negative) { 294 | // reverse color if there is $negative in props 295 | // IMPROVE: we can calculate and select a different readable color when hover, will leave it like this for this example 296 | return tinycolor($color).getLuminance() > 0.5 ? "#000" : "#fff"; 297 | } else { 298 | return tinycolor($color).darken(10 * Math.abs(diff)); 299 | } 300 | } else { 301 | const { palette } = instance.active(props); 302 | const { key, variant } = palette; 303 | 304 | const nextVariant = instance.closest("palette", variant, diff, true); 305 | 306 | if ($negative) { 307 | nextValue = palettes[key].contrast[nextVariant]; 308 | } else { 309 | nextValue = palettes[key][nextVariant]; 310 | } 311 | } 312 | 313 | return nextValue; 314 | }, 315 | // first 3 paramaters are coming from theme-miner, others are coming from your mixins paramaters e.g. mixin("asHover", -2)`palette.active` 316 | asHover: (instance, props, value, diff = -1) => { 317 | const { theme, $negative, $color } = props; 318 | const palettes = theme.palette; 319 | 320 | // this is the default color 321 | let nextValue = value; 322 | 323 | if ($color) { 324 | if ($negative) { 325 | // reverse color if there is $negative in props 326 | // IMPROVE: we can calculate and select a different readable color when hover, will leave it like this for this example 327 | return tinycolor($color).getLuminance() > 0.5 ? "#000" : "#fff"; 328 | } else { 329 | return tinycolor($color).lighten(10 * Math.abs(diff)); 330 | } 331 | } else { 332 | const { palette } = instance.active(props); 333 | const { key, variant } = palette; 334 | 335 | const nextVariant = instance.closest("palette", variant, diff, true); 336 | 337 | if ($negative) { 338 | nextValue = palettes[key].contrast[nextVariant]; 339 | } else { 340 | nextValue = palettes[key][nextVariant]; 341 | } 342 | } 343 | 344 | return nextValue; 345 | }, 346 | paint: (instance, props, value, ...args) => { 347 | const { theme, $negative, $color } = props; 348 | const palettes = theme.palette; 349 | 350 | // this is the default color 351 | let nextValue = value; 352 | 353 | // support direct $color if there is $color in props 354 | if ($color) { 355 | if ($negative) { 356 | // reverse color if there is $negative in props 357 | return tinycolor($color).getLuminance() > 0.5 ? "#000" : "#fff"; 358 | } else { 359 | return $color; 360 | } 361 | } else { 362 | const { palette } = instance.active(props); 363 | 364 | if ($negative) { 365 | // reverse color if there is $negative in props 366 | const { key, variant } = palette; 367 | nextValue = palettes[key].contrast[variant]; 368 | } 369 | } 370 | 371 | return nextValue; 372 | }, 373 | paintFG: (instance, props, value, ...args) => { 374 | const { theme, $color } = props; 375 | const palettes = theme.palette; 376 | 377 | const $negative = !props.$negative; 378 | 379 | // this is the default color 380 | let nextValue = value; 381 | 382 | // support direct $color if there is $color in props 383 | if ($color) { 384 | if ($negative) { 385 | // reverse color if there is $negative in props 386 | return tinycolor($color).getLuminance() > 0.5 ? "#000" : "#fff"; 387 | } else { 388 | return $color; 389 | } 390 | } else { 391 | const { palette } = instance.active(props); 392 | 393 | if ($negative) { 394 | // reverse color if there is $negative in props 395 | const { key, variant } = palette; 396 | nextValue = palettes[key].contrast[variant]; 397 | } 398 | } 399 | 400 | return nextValue; 401 | }, 402 | }, 403 | }); 404 | 405 | export const UI = ui; 406 | -------------------------------------------------------------------------------- /src/ThemeMiner.js: -------------------------------------------------------------------------------- 1 | import { 2 | isBoolean, 3 | isString, 4 | isObject, 5 | isArray, 6 | isNumber, 7 | isFunction, 8 | isColor, 9 | } from "@doubco/wtf"; 10 | 11 | const ref = (obj, str) => { 12 | if (isString(str) && isObject(obj)) { 13 | str = str.split("."); 14 | 15 | for (let i = 0; i < str.length; i++) { 16 | obj = obj[str[i]] ? obj[str[i]] : obj[str[i]] === 0 ? 0 : { empty: true }; 17 | } 18 | 19 | if (obj && obj.empty) return null; 20 | 21 | return obj; 22 | } 23 | return null; 24 | }; 25 | 26 | const nest = (key, value) => { 27 | const o = { [key]: value }; 28 | let oo = {}, 29 | t, 30 | parts, 31 | part; 32 | for (let k in o) { 33 | t = oo; 34 | parts = k.split("."); 35 | let key = parts.pop(); 36 | while (parts.length) { 37 | part = parts.shift(); 38 | t = t[part] = t[part] || {}; 39 | } 40 | t[key] = o[k]; 41 | } 42 | return oo; 43 | }; 44 | 45 | class ThemeMiner { 46 | constructor(props = {}) { 47 | this.props = { 48 | keys: {}, 49 | options: { 50 | paletteKey: "palette", 51 | 52 | properties: [], 53 | useOptions: true, 54 | useVariants: true, 55 | useTransient: true, 56 | activeKey: "active", 57 | operators: { 58 | transient: "$", 59 | nin: " nin ", 60 | in: " in ", 61 | ne: " != ", 62 | eq: " == ", 63 | gt: " > ", 64 | gte: " >= ", 65 | lt: " < ", 66 | lte: " <= ", 67 | nset: "!", 68 | false: "!!", 69 | true: "==", 70 | }, 71 | }, 72 | }; 73 | 74 | this.mixins = {}; 75 | 76 | this.setProps(props); 77 | 78 | this.key = this.key.bind(this); 79 | this.vars = this.vars.bind(this); 80 | this.handlePropTypes = this.handlePropTypes.bind(this); 81 | 82 | this.style = this.style.bind(this); 83 | this._ = this._.bind(this); 84 | this.scoped = this.scoped.bind(this); 85 | this.active = this.active.bind(this); 86 | this.mixin = this.mixin.bind(this); 87 | this.calc = this.calc.bind(this); 88 | 89 | this.properties = this.properties.bind(this); 90 | this.closest = this.closest.bind(this); 91 | 92 | this.matchCondition = this.matchCondition.bind(this); 93 | this.or = this.or.bind(this); 94 | this.and = this.and.bind(this); 95 | this.cond = this.cond.bind(this); 96 | } 97 | 98 | setTheme(name) { 99 | this.currentTheme = name; 100 | if (this.props.onThemeChange) { 101 | this.props.onThemeChange(this.currentTheme); 102 | } 103 | } 104 | 105 | checkTheme(theme) { 106 | return this.getTheme(theme) ? true : false; 107 | } 108 | 109 | getTheme(name = this.currentTheme) { 110 | const { paletteKey } = this.props.options.theming || {}; 111 | if (!paletteKey) throw Error("Please add 'paletteKey' to options.theming."); 112 | const palette = this.props.theme[paletteKey]; 113 | return palette[name]; 114 | } 115 | 116 | setProps(props = {}) { 117 | if (!this.props.theme) { 118 | this.props.theme = {}; 119 | this.props.keys.theme = []; 120 | } 121 | 122 | if (props.theme) { 123 | this.props.theme = props.theme; 124 | this.props.keys.theme = Object.keys(props.theme); 125 | } 126 | 127 | if (props.options) { 128 | this.props.options = { 129 | ...this.props.options, 130 | ...props.options, 131 | }; 132 | 133 | if (props.options.theming) { 134 | this.defaultTheme = props.options.theming.default; 135 | this.setTheme(props.options.theming.default); 136 | } 137 | } 138 | 139 | if (props.onGenerateTheme) { 140 | this.props.onGenerateTheme = props.onGenerateTheme; 141 | } 142 | 143 | if (props.onThemeChange) { 144 | this.props.onThemeChange = props.onThemeChange; 145 | } 146 | 147 | if (!this.props.interactives) { 148 | this.props.interactives = {}; 149 | this.props.keys.interactives = []; 150 | } 151 | 152 | if (props.interactives) { 153 | this.props.interactives = props.interactives; 154 | this.props.keys.interactives = Object.keys(props.interactives); 155 | } 156 | 157 | if (props.mixins) { 158 | Object.keys(props.mixins).forEach((m) => { 159 | this.mixins[m] = props.mixins[m]; 160 | }); 161 | } 162 | } 163 | 164 | /* 165 | INTERNAL KEY RESOLVER 166 | Generates ui key. 167 | */ 168 | key(i) { 169 | const { options } = this.props; 170 | return options.useTransient ? `${options.operators.transient}${i}` : i; 171 | } 172 | 173 | /* 174 | INTERNAL VARIABLE COLLECTOR 175 | Collects ui props by key. 176 | */ 177 | 178 | vars(path, active) { 179 | const { theme, interactives, options } = this.props; 180 | let prepared; 181 | let realPath; 182 | const splitted = path.split("."); 183 | 184 | let interactive = splitted[splitted.indexOf(options.activeKey) - 1]; 185 | 186 | const getActivePath = (interactive) => { 187 | const a = active[interactive]; 188 | 189 | let activePath = ""; 190 | if (a.variant) { 191 | activePath = `${a.key}.${a.variant}`; 192 | } else { 193 | activePath = `${a.key}`; 194 | } 195 | return activePath; 196 | }; 197 | 198 | // active key is used 199 | if (interactive) { 200 | const activePath = getActivePath(interactive); 201 | realPath = `${path.replace(options.activeKey, activePath)}`; 202 | prepared = ref(theme, realPath); 203 | } else { 204 | realPath = path; 205 | prepared = ref(theme, realPath); 206 | } 207 | 208 | interactive = path.split(".").pop(); 209 | if (this.props.keys.interactives.includes(interactive)) { 210 | if (!path.includes(options.activeKey)) { 211 | if (isObject(prepared)) { 212 | const activePath = `${path}.${getActivePath(interactive)}`; 213 | const activeData = ref(theme, activePath); 214 | prepared[options.activeKey] = activeData; 215 | } 216 | } 217 | } 218 | 219 | if (prepared !== null || prepared !== undefined) { 220 | return nest(path, prepared); 221 | } else { 222 | return path; 223 | } 224 | } 225 | 226 | /* 227 | INTERNAL PROP HANDLER 228 | Handles template literal, string, function inputs. 229 | */ 230 | handlePropTypes(p, callback) { 231 | if (p) { 232 | if (isArray(p)) { 233 | // handle unit as literal 234 | return (ps) => `${callback(ps)}${p[0]}`; 235 | } else if (isString(p)) { 236 | // handle unit as string 237 | return (ps) => `${callback(ps)}${p}`; 238 | } else if (isFunction(p)) { 239 | // handle function callbacks 240 | return (ps) => p(callback(ps)); 241 | } else { 242 | return callback(p); 243 | } 244 | } 245 | } 246 | 247 | /* 248 | ACTIVE HELPER 249 | Resolves all interactives active states. 250 | Examples: 251 | Theme.active(this.props) 252 | */ 253 | active(props = {}) { 254 | const { interactives, options, keys } = this.props; 255 | 256 | let active = {}; 257 | 258 | keys.interactives.forEach((k) => { 259 | let i = interactives[k]; 260 | 261 | let value = props[this.key(k)]; 262 | 263 | active[k] = {}; 264 | 265 | if (options.useOptions) { 266 | if (i.options) { 267 | i.options.forEach((o) => { 268 | if (props[this.key(o)]) active[k].key = o; 269 | }); 270 | } 271 | } 272 | if (value) { 273 | active[k].key = value; 274 | } 275 | 276 | if (!active[k].key) { 277 | active[k].key = i.default; 278 | } 279 | 280 | if (i.variants) { 281 | if (options.useVariants) { 282 | i.variants.options.forEach((o) => { 283 | if (props[this.key(o)]) active[k].variant = o; 284 | }); 285 | } 286 | 287 | if (props[this.key(i.variants.key)]) 288 | active[k].variant = props[this.key(i.variants.key)]; 289 | 290 | if (!active[k].variant) active[k].variant = i.variants.default; 291 | } 292 | }); 293 | return active; 294 | } 295 | 296 | /* 297 | STYLE HELPER 298 | Resolves and get props of given key. 299 | Examples: 300 | */ 301 | style(input) { 302 | const { theme } = this.props; 303 | let type; 304 | 305 | if (isArray(input)) { 306 | type = "array"; 307 | input = input[0]; 308 | } else if (isString(input)) { 309 | type = "string"; 310 | input = input; 311 | } else if (isFunction(input)) { 312 | type = "function"; 313 | input = input; 314 | } else { 315 | input = input; 316 | } 317 | 318 | return (props) => { 319 | let x = props; 320 | // check if this props is already styled. 321 | if (!props.__generated) { 322 | let active = {}; 323 | let vars = {}; 324 | 325 | // anaylize key and get optimized props 326 | let scope; 327 | if (type == "array" || type == "string") { 328 | // use prefix if the parent key is in interactives 329 | scope = input; 330 | } 331 | 332 | if (scope) { 333 | scope = input.split(".")[0]; 334 | 335 | if (scope == "props") scope = false; 336 | if (scope == "theme") scope = false; 337 | 338 | if (scope) { 339 | active = 340 | !props._disableCache && props.__active 341 | ? props.__active 342 | : this.active(props); 343 | vars = { ...vars, ...this.vars(input, active) }; 344 | } 345 | } 346 | x = { ...vars, theme, active, props, __generated: true }; 347 | } 348 | 349 | if (type == "array" || type == "string") { 350 | return ref(x, input); 351 | } else if (type == "function") { 352 | return input(x); 353 | } else { 354 | return input; 355 | } 356 | }; 357 | } 358 | 359 | /* 360 | GENERAL HELPER 361 | Does same with style helper with unit support 362 | Examples: 363 | _`buttons.size.padding` 364 | _`active.variant.key` 365 | _`theme.spacing.micro` 366 | _`buttons.size.padding``px` 367 | _`buttons.size.padding`(padding => {}) 368 | */ 369 | _(key) { 370 | return (props) => this.handlePropTypes(props, this.style(key)); 371 | } 372 | 373 | scoped(s) { 374 | const resolve = (s, k) => { 375 | let scope = s; 376 | let key = isArray(k) ? k[0] : k; 377 | let parent = key.split(".")[0]; 378 | if (["theme", "props", "active"].includes(key.substr(0, parent.length))) { 379 | key = key.substr(parent.length + 1, key.length); 380 | scope = parent; 381 | } 382 | return { scope, key }; 383 | }; 384 | 385 | return { 386 | _: (k) => { 387 | const { scope, key } = resolve(s, k); 388 | return this._(`${scope}.${key}`); 389 | }, 390 | mixin: (mixin, ...args) => { 391 | return (k) => { 392 | const { scope, key } = resolve(s, k); 393 | return this.mixin(mixin, ...args)(`${scope}.${key}`); 394 | }; 395 | }, 396 | }; 397 | } 398 | 399 | /* 400 | MIXIN HELPER 401 | Allows usage of prop based mixins. 402 | Examples: 403 | mixin("multiply", 2)`button.size.padding` 404 | mixin("multiply", 2)`button.size.padding``px` 405 | mixin("multiply", 2)`button.size.padding`(padding => {}) 406 | */ 407 | mixin(mixin, ...args) { 408 | return (key) => { 409 | return (props) => { 410 | return this.handlePropTypes(props, (p) => { 411 | const value = this.style(key)(p); 412 | const instance = this; 413 | if (this.mixins[mixin]) { 414 | return this.mixins[mixin]( 415 | instance, 416 | props, 417 | value ? value : key, 418 | ...args, 419 | ); 420 | } else { 421 | throw Error( 422 | `Missing mixin: ${mixin}. Please add this mixin function to mixins.${mixin} in your ThemeMiner instance.`, 423 | ); 424 | } 425 | }); 426 | }; 427 | }; 428 | } 429 | 430 | /** 431 | PROPERTIES HELPER 432 | Collects all ui related properties from React props, * to make easy and clean passing to styled-components. 433 | Examples: 434 | Theme.properties(this.props) 435 | */ 436 | cherryPickPropKeys(keys, props) { 437 | let newProps = {}; 438 | 439 | keys.forEach((k) => { 440 | if (props[k] != undefined) { 441 | if (isBoolean(props[k])) { 442 | if (props[k]) { 443 | newProps[k] = props[k]; 444 | } 445 | } else { 446 | newProps[k] = props[k]; 447 | } 448 | } 449 | }); 450 | 451 | return newProps; 452 | } 453 | 454 | properties(props = {}, localKeys = [], asObject) { 455 | const { interactives, options } = this.props; 456 | let keys = []; 457 | let globalKeys = [...options.properties]; 458 | 459 | let interactivesKeys = []; 460 | 461 | Object.keys(interactives).forEach((key) => { 462 | let i = interactives[key]; 463 | interactivesKeys = [...interactivesKeys, key]; 464 | if (i.variants) { 465 | interactivesKeys = [...interactivesKeys, i.variants.key]; 466 | } 467 | if (options.useOptions) { 468 | interactivesKeys = [...interactivesKeys, ...i.options]; 469 | if (i.variants) { 470 | interactivesKeys = [...interactivesKeys, ...i.variants.options]; 471 | } 472 | } 473 | }); 474 | 475 | interactivesKeys = interactivesKeys.map((i) => this.key(i)); 476 | 477 | keys = [...interactivesKeys, ...localKeys]; 478 | 479 | if (asObject) { 480 | return { 481 | props: this.cherryPickPropKeys(keys, props), 482 | global: this.cherryPickPropKeys(globalKeys, props), 483 | local: this.cherryPickPropKeys(localKeys, props), 484 | interactives: this.cherryPickPropKeys(interactivesKeys, props), 485 | }; 486 | } else { 487 | return this.cherryPickPropKeys(keys, props); 488 | } 489 | } 490 | 491 | /* 492 | CLOSEST HELPER 493 | Resolves closest inteactives' option based on given key. 494 | Examples: 495 | closest(this.ui.active.size.key, -2) 496 | */ 497 | closest(key, value, change, variant) { 498 | const { interactives } = this.props; 499 | 500 | let so = interactives[key].options; 501 | if (variant) { 502 | so = interactives[key].variants.options; 503 | } 504 | 505 | let idx = so.indexOf(value); 506 | 507 | if (idx > -1) { 508 | if (change > 0) { 509 | return idx + change >= so.length ? so[so.length - 1] : so[idx + change]; 510 | } else { 511 | return idx + change < 0 ? so[0] : so[idx + change]; 512 | } 513 | } 514 | return value; 515 | } 516 | 517 | /* 518 | CALC HELPER 519 | Calculates the given operations. 520 | Examples: 521 | calc`(${_`button.size.height`} * 2) + ${_`padding`}` 522 | calc`(${_`button.size.height`} * 2) + ${_`padding`}``px` 523 | */ 524 | calc(pieces) { 525 | return (props) => { 526 | const run = (p) => { 527 | let result = pieces[0]; 528 | let substitutions = [].slice.call(arguments, 1); 529 | let x = 0; 530 | for (let piece of substitutions) { 531 | x++; 532 | if (isFunction(piece)) { 533 | result += piece(p); 534 | } 535 | if (isNumber(piece)) { 536 | result += piece; 537 | } 538 | result += pieces[x]; 539 | } 540 | 541 | let response = ""; 542 | try { 543 | response = new Function("return " + result)(); 544 | } catch (e) { 545 | // eslint-disable-next-line 546 | console.warn("Invalid calculation", result); 547 | } 548 | 549 | return response; 550 | }; 551 | return this.handlePropTypes(props, run); 552 | }; 553 | } 554 | 555 | /* 556 | INTERNAL MATCH HELPER FOR OR, AND & COND OPERATOR 557 | */ 558 | matchCondition(c) { 559 | const { operators } = this.props.options; 560 | let cond = c; 561 | if (isArray(cond)) cond = c[0]; 562 | return (p) => { 563 | let matched; 564 | // run function if value is function 565 | if (isFunction(cond)) matched = cond(p); 566 | // check with is.set if value is string 567 | if (isString(cond)) { 568 | if (cond.includes(operators.nin)) { 569 | let [k, v] = cond.split(operators.nin); 570 | matched = this.is.nin(k, v)(p); 571 | } else if (cond.includes(operators.in)) { 572 | let [k, v] = cond.split(operators.in); 573 | matched = this.is.in(k, v)(p); 574 | } else if (cond.includes(operators.ne)) { 575 | let [k, v] = cond.split(operators.ne); 576 | matched = this.is.ne(k, v)(p); 577 | } else if (cond.includes(operators.eq)) { 578 | let [k, v] = cond.split(operators.eq); 579 | matched = this.is.eq(k, v)(p); 580 | } else if (cond.includes(operators.gt)) { 581 | let [k, v] = cond.split(operators.gt); 582 | matched = this.is.gt(k, v)(p); 583 | } else if (cond.includes(operators.gte)) { 584 | let [k, v] = cond.split(operators.gte); 585 | matched = this.is.gte(k, v)(p); 586 | } else if (cond.includes(operators.lt)) { 587 | let [k, v] = cond.split(operators.lt); 588 | matched = this.is.lt(k, v)(p); 589 | } else if (cond.includes(operators.lte)) { 590 | let [k, v] = cond.split(operators.lte); 591 | matched = this.is.lte(k, v)(p); 592 | } else if (cond.substr(0, operators.true.length) == operators.false) { 593 | let k = cond.replace(operators.false, ""); 594 | matched = this.is.eq(k, false)(p); 595 | } else if (cond.substr(0, operators.true.length) == operators.true) { 596 | let k = cond.replace(operators.true, ""); 597 | matched = this.is.eq(k, true)(p); 598 | } else if (cond.substr(0, operators.nset.length) == operators.nset) { 599 | let k = cond.replace(operators.nset, ""); 600 | matched = this.is.nset(k)(p); 601 | } else { 602 | matched = this.is.set(cond)(p); 603 | } 604 | } 605 | return matched; 606 | }; 607 | } 608 | 609 | /* 610 | IS HELPER FOR COND HELPER 611 | Checks given options. 612 | Examples: 613 | is.in("margin", "left") 614 | is.eq("active.size.key", "normal") 615 | is.set("props.$variant") 616 | */ 617 | get is() { 618 | const g = (p, k) => { 619 | return this.style(k)(p); 620 | }; 621 | return { 622 | // new methods 623 | nset: (k) => (p) => !g(p, k), 624 | set: (k) => (p) => g(p, k), 625 | in: (k, v) => (p) => { 626 | const val = g(p, k); 627 | return val && val.length && val.includes(v); 628 | }, 629 | nin: (k, v) => (p) => { 630 | const val = g(p, k); 631 | return val && val.length && !val.includes(v); 632 | }, 633 | eq: (k, v) => (p) => g(p, k) == v, 634 | ne: (k, v) => (p) => g(p, k) != v, 635 | lt: (k, v) => (p) => g(p, k) < v, 636 | lte: (k, v) => (p) => g(p, k) <= v, 637 | gt: (k, v) => (p) => g(p, k) > v, 638 | gte: (k, v) => (p) => g(p, k) >= v, 639 | color: (k) => (p) => isColor(g(p, k)), 640 | }; 641 | } 642 | 643 | /* 644 | OR HELPER FOR COND HELPER 645 | Returns true if any given condition is true. 646 | Examples: 647 | or(is.eq("size","normal"),is.set("ghost")) 648 | */ 649 | or(...conds) { 650 | return (p) => { 651 | let passed = false; 652 | if (conds && conds.length) { 653 | conds.forEach((cond) => { 654 | let matched = this.matchCondition(cond)(p); 655 | if (matched) { 656 | passed = true; 657 | } 658 | }); 659 | } 660 | return passed; 661 | }; 662 | } 663 | 664 | /* 665 | AND HELPER FOR COND HELPER 666 | Returns true if all given condition is true. 667 | Examples: 668 | and(is.eq("size","normal"),is.set("ghost")) 669 | */ 670 | and(...conds) { 671 | return (p) => { 672 | let passed = true; 673 | if (conds && conds.length) { 674 | conds.forEach((cond) => { 675 | let matched = this.matchCondition(cond)(p); 676 | if (!matched) { 677 | passed = false; 678 | } 679 | }); 680 | } 681 | return passed; 682 | }; 683 | } 684 | 685 | /* 686 | CONDTION HELPER 687 | Resolves given conditions. 688 | Examples: 689 | cond({if: is.eq("$size", "micro"), then: "uppercase" , else: "none"}) 690 | cond({if: (p) => {}, then:(p) => {}, else:(p) => {}}) 691 | cond({if: "bg", then: _`theme.bg`, else: "none"}) 692 | */ 693 | cond(c) { 694 | return (p) => { 695 | let matched = this.matchCondition(c.if)(p); 696 | 697 | if (matched) { 698 | if (c.then) { 699 | if (isFunction(c.then)) { 700 | return c.then(p); 701 | } else { 702 | return c.then; 703 | } 704 | } 705 | } else { 706 | if (c.else) { 707 | if (isFunction(c.else)) { 708 | return c.else(p); 709 | } else { 710 | return c.else; 711 | } 712 | } 713 | } 714 | }; 715 | } 716 | } 717 | 718 | export default ThemeMiner; 719 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.0.0" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 8 | integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/code-frame@^7.8.3": 13 | version "7.8.3" 14 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 15 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 16 | dependencies: 17 | "@babel/highlight" "^7.8.3" 18 | 19 | "@babel/compat-data@^7.9.6": 20 | version "7.9.6" 21 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" 22 | integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== 23 | dependencies: 24 | browserslist "^4.11.1" 25 | invariant "^2.2.4" 26 | semver "^5.5.0" 27 | 28 | "@babel/core@^7.9.6": 29 | version "7.9.6" 30 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" 31 | integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== 32 | dependencies: 33 | "@babel/code-frame" "^7.8.3" 34 | "@babel/generator" "^7.9.6" 35 | "@babel/helper-module-transforms" "^7.9.0" 36 | "@babel/helpers" "^7.9.6" 37 | "@babel/parser" "^7.9.6" 38 | "@babel/template" "^7.8.6" 39 | "@babel/traverse" "^7.9.6" 40 | "@babel/types" "^7.9.6" 41 | convert-source-map "^1.7.0" 42 | debug "^4.1.0" 43 | gensync "^1.0.0-beta.1" 44 | json5 "^2.1.2" 45 | lodash "^4.17.13" 46 | resolve "^1.3.2" 47 | semver "^5.4.1" 48 | source-map "^0.5.0" 49 | 50 | "@babel/generator@^7.9.6": 51 | version "7.9.6" 52 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" 53 | integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== 54 | dependencies: 55 | "@babel/types" "^7.9.6" 56 | jsesc "^2.5.1" 57 | lodash "^4.17.13" 58 | source-map "^0.5.0" 59 | 60 | "@babel/helper-annotate-as-pure@^7.8.3": 61 | version "7.8.3" 62 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" 63 | integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== 64 | dependencies: 65 | "@babel/types" "^7.8.3" 66 | 67 | "@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": 68 | version "7.8.3" 69 | resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" 70 | integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== 71 | dependencies: 72 | "@babel/helper-explode-assignable-expression" "^7.8.3" 73 | "@babel/types" "^7.8.3" 74 | 75 | "@babel/helper-builder-react-jsx-experimental@^7.9.0": 76 | version "7.9.5" 77 | resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz#0b4b3e04e6123f03b404ca4dfd6528fe6bb92fe3" 78 | integrity sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg== 79 | dependencies: 80 | "@babel/helper-annotate-as-pure" "^7.8.3" 81 | "@babel/helper-module-imports" "^7.8.3" 82 | "@babel/types" "^7.9.5" 83 | 84 | "@babel/helper-builder-react-jsx@^7.9.0": 85 | version "7.9.0" 86 | resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" 87 | integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== 88 | dependencies: 89 | "@babel/helper-annotate-as-pure" "^7.8.3" 90 | "@babel/types" "^7.9.0" 91 | 92 | "@babel/helper-compilation-targets@^7.9.6": 93 | version "7.9.6" 94 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" 95 | integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== 96 | dependencies: 97 | "@babel/compat-data" "^7.9.6" 98 | browserslist "^4.11.1" 99 | invariant "^2.2.4" 100 | levenary "^1.1.1" 101 | semver "^5.5.0" 102 | 103 | "@babel/helper-create-class-features-plugin@^7.8.3": 104 | version "7.9.6" 105 | resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.6.tgz#965c8b0a9f051801fd9d3b372ca0ccf200a90897" 106 | integrity sha512-6N9IeuyHvMBRyjNYOMJHrhwtu4WJMrYf8hVbEHD3pbbbmNOk1kmXSQs7bA4dYDUaIx4ZEzdnvo6NwC3WHd/Qow== 107 | dependencies: 108 | "@babel/helper-function-name" "^7.9.5" 109 | "@babel/helper-member-expression-to-functions" "^7.8.3" 110 | "@babel/helper-optimise-call-expression" "^7.8.3" 111 | "@babel/helper-plugin-utils" "^7.8.3" 112 | "@babel/helper-replace-supers" "^7.9.6" 113 | "@babel/helper-split-export-declaration" "^7.8.3" 114 | 115 | "@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": 116 | version "7.8.8" 117 | resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" 118 | integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== 119 | dependencies: 120 | "@babel/helper-annotate-as-pure" "^7.8.3" 121 | "@babel/helper-regex" "^7.8.3" 122 | regexpu-core "^4.7.0" 123 | 124 | "@babel/helper-define-map@^7.8.3": 125 | version "7.8.3" 126 | resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" 127 | integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== 128 | dependencies: 129 | "@babel/helper-function-name" "^7.8.3" 130 | "@babel/types" "^7.8.3" 131 | lodash "^4.17.13" 132 | 133 | "@babel/helper-explode-assignable-expression@^7.8.3": 134 | version "7.8.3" 135 | resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" 136 | integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== 137 | dependencies: 138 | "@babel/traverse" "^7.8.3" 139 | "@babel/types" "^7.8.3" 140 | 141 | "@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": 142 | version "7.9.5" 143 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" 144 | integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== 145 | dependencies: 146 | "@babel/helper-get-function-arity" "^7.8.3" 147 | "@babel/template" "^7.8.3" 148 | "@babel/types" "^7.9.5" 149 | 150 | "@babel/helper-get-function-arity@^7.8.3": 151 | version "7.8.3" 152 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" 153 | integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== 154 | dependencies: 155 | "@babel/types" "^7.8.3" 156 | 157 | "@babel/helper-hoist-variables@^7.8.3": 158 | version "7.8.3" 159 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" 160 | integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== 161 | dependencies: 162 | "@babel/types" "^7.8.3" 163 | 164 | "@babel/helper-member-expression-to-functions@^7.8.3": 165 | version "7.8.3" 166 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" 167 | integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== 168 | dependencies: 169 | "@babel/types" "^7.8.3" 170 | 171 | "@babel/helper-module-imports@^7.0.0": 172 | version "7.0.0" 173 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" 174 | integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== 175 | dependencies: 176 | "@babel/types" "^7.0.0" 177 | 178 | "@babel/helper-module-imports@^7.8.3": 179 | version "7.8.3" 180 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" 181 | integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== 182 | dependencies: 183 | "@babel/types" "^7.8.3" 184 | 185 | "@babel/helper-module-transforms@^7.9.0": 186 | version "7.9.0" 187 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" 188 | integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== 189 | dependencies: 190 | "@babel/helper-module-imports" "^7.8.3" 191 | "@babel/helper-replace-supers" "^7.8.6" 192 | "@babel/helper-simple-access" "^7.8.3" 193 | "@babel/helper-split-export-declaration" "^7.8.3" 194 | "@babel/template" "^7.8.6" 195 | "@babel/types" "^7.9.0" 196 | lodash "^4.17.13" 197 | 198 | "@babel/helper-optimise-call-expression@^7.8.3": 199 | version "7.8.3" 200 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" 201 | integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== 202 | dependencies: 203 | "@babel/types" "^7.8.3" 204 | 205 | "@babel/helper-plugin-utils@^7.0.0": 206 | version "7.0.0" 207 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" 208 | integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== 209 | 210 | "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": 211 | version "7.8.3" 212 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" 213 | integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== 214 | 215 | "@babel/helper-regex@^7.8.3": 216 | version "7.8.3" 217 | resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" 218 | integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== 219 | dependencies: 220 | lodash "^4.17.13" 221 | 222 | "@babel/helper-remap-async-to-generator@^7.8.3": 223 | version "7.8.3" 224 | resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" 225 | integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== 226 | dependencies: 227 | "@babel/helper-annotate-as-pure" "^7.8.3" 228 | "@babel/helper-wrap-function" "^7.8.3" 229 | "@babel/template" "^7.8.3" 230 | "@babel/traverse" "^7.8.3" 231 | "@babel/types" "^7.8.3" 232 | 233 | "@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6": 234 | version "7.9.6" 235 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" 236 | integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== 237 | dependencies: 238 | "@babel/helper-member-expression-to-functions" "^7.8.3" 239 | "@babel/helper-optimise-call-expression" "^7.8.3" 240 | "@babel/traverse" "^7.9.6" 241 | "@babel/types" "^7.9.6" 242 | 243 | "@babel/helper-simple-access@^7.8.3": 244 | version "7.8.3" 245 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" 246 | integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== 247 | dependencies: 248 | "@babel/template" "^7.8.3" 249 | "@babel/types" "^7.8.3" 250 | 251 | "@babel/helper-split-export-declaration@^7.8.3": 252 | version "7.8.3" 253 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" 254 | integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== 255 | dependencies: 256 | "@babel/types" "^7.8.3" 257 | 258 | "@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": 259 | version "7.9.5" 260 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" 261 | integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== 262 | 263 | "@babel/helper-wrap-function@^7.8.3": 264 | version "7.8.3" 265 | resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" 266 | integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== 267 | dependencies: 268 | "@babel/helper-function-name" "^7.8.3" 269 | "@babel/template" "^7.8.3" 270 | "@babel/traverse" "^7.8.3" 271 | "@babel/types" "^7.8.3" 272 | 273 | "@babel/helpers@^7.9.6": 274 | version "7.9.6" 275 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" 276 | integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== 277 | dependencies: 278 | "@babel/template" "^7.8.3" 279 | "@babel/traverse" "^7.9.6" 280 | "@babel/types" "^7.9.6" 281 | 282 | "@babel/highlight@^7.0.0": 283 | version "7.0.0" 284 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 285 | integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== 286 | dependencies: 287 | chalk "^2.0.0" 288 | esutils "^2.0.2" 289 | js-tokens "^4.0.0" 290 | 291 | "@babel/highlight@^7.8.3": 292 | version "7.9.0" 293 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" 294 | integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== 295 | dependencies: 296 | "@babel/helper-validator-identifier" "^7.9.0" 297 | chalk "^2.0.0" 298 | js-tokens "^4.0.0" 299 | 300 | "@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": 301 | version "7.9.6" 302 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" 303 | integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== 304 | 305 | "@babel/plugin-proposal-async-generator-functions@^7.8.3": 306 | version "7.8.3" 307 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" 308 | integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== 309 | dependencies: 310 | "@babel/helper-plugin-utils" "^7.8.3" 311 | "@babel/helper-remap-async-to-generator" "^7.8.3" 312 | "@babel/plugin-syntax-async-generators" "^7.8.0" 313 | 314 | "@babel/plugin-proposal-class-properties@^7.8.3": 315 | version "7.8.3" 316 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" 317 | integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== 318 | dependencies: 319 | "@babel/helper-create-class-features-plugin" "^7.8.3" 320 | "@babel/helper-plugin-utils" "^7.8.3" 321 | 322 | "@babel/plugin-proposal-dynamic-import@^7.8.3": 323 | version "7.8.3" 324 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" 325 | integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== 326 | dependencies: 327 | "@babel/helper-plugin-utils" "^7.8.3" 328 | "@babel/plugin-syntax-dynamic-import" "^7.8.0" 329 | 330 | "@babel/plugin-proposal-json-strings@^7.8.3": 331 | version "7.8.3" 332 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" 333 | integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== 334 | dependencies: 335 | "@babel/helper-plugin-utils" "^7.8.3" 336 | "@babel/plugin-syntax-json-strings" "^7.8.0" 337 | 338 | "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": 339 | version "7.8.3" 340 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" 341 | integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== 342 | dependencies: 343 | "@babel/helper-plugin-utils" "^7.8.3" 344 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" 345 | 346 | "@babel/plugin-proposal-numeric-separator@^7.8.3": 347 | version "7.8.3" 348 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" 349 | integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== 350 | dependencies: 351 | "@babel/helper-plugin-utils" "^7.8.3" 352 | "@babel/plugin-syntax-numeric-separator" "^7.8.3" 353 | 354 | "@babel/plugin-proposal-object-rest-spread@^7.9.6": 355 | version "7.9.6" 356 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" 357 | integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== 358 | dependencies: 359 | "@babel/helper-plugin-utils" "^7.8.3" 360 | "@babel/plugin-syntax-object-rest-spread" "^7.8.0" 361 | "@babel/plugin-transform-parameters" "^7.9.5" 362 | 363 | "@babel/plugin-proposal-optional-catch-binding@^7.8.3": 364 | version "7.8.3" 365 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" 366 | integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== 367 | dependencies: 368 | "@babel/helper-plugin-utils" "^7.8.3" 369 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" 370 | 371 | "@babel/plugin-proposal-optional-chaining@^7.9.0": 372 | version "7.9.0" 373 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" 374 | integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== 375 | dependencies: 376 | "@babel/helper-plugin-utils" "^7.8.3" 377 | "@babel/plugin-syntax-optional-chaining" "^7.8.0" 378 | 379 | "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": 380 | version "7.8.8" 381 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" 382 | integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== 383 | dependencies: 384 | "@babel/helper-create-regexp-features-plugin" "^7.8.8" 385 | "@babel/helper-plugin-utils" "^7.8.3" 386 | 387 | "@babel/plugin-syntax-async-generators@^7.8.0": 388 | version "7.8.4" 389 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 390 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 391 | dependencies: 392 | "@babel/helper-plugin-utils" "^7.8.0" 393 | 394 | "@babel/plugin-syntax-dynamic-import@^7.8.0": 395 | version "7.8.3" 396 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" 397 | integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== 398 | dependencies: 399 | "@babel/helper-plugin-utils" "^7.8.0" 400 | 401 | "@babel/plugin-syntax-json-strings@^7.8.0": 402 | version "7.8.3" 403 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 404 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 405 | dependencies: 406 | "@babel/helper-plugin-utils" "^7.8.0" 407 | 408 | "@babel/plugin-syntax-jsx@^7.8.3": 409 | version "7.8.3" 410 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" 411 | integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== 412 | dependencies: 413 | "@babel/helper-plugin-utils" "^7.8.3" 414 | 415 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": 416 | version "7.8.3" 417 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 418 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 419 | dependencies: 420 | "@babel/helper-plugin-utils" "^7.8.0" 421 | 422 | "@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": 423 | version "7.8.3" 424 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" 425 | integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== 426 | dependencies: 427 | "@babel/helper-plugin-utils" "^7.8.3" 428 | 429 | "@babel/plugin-syntax-object-rest-spread@^7.8.0": 430 | version "7.8.3" 431 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 432 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 433 | dependencies: 434 | "@babel/helper-plugin-utils" "^7.8.0" 435 | 436 | "@babel/plugin-syntax-optional-catch-binding@^7.8.0": 437 | version "7.8.3" 438 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 439 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 440 | dependencies: 441 | "@babel/helper-plugin-utils" "^7.8.0" 442 | 443 | "@babel/plugin-syntax-optional-chaining@^7.8.0": 444 | version "7.8.3" 445 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 446 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 447 | dependencies: 448 | "@babel/helper-plugin-utils" "^7.8.0" 449 | 450 | "@babel/plugin-syntax-top-level-await@^7.8.3": 451 | version "7.8.3" 452 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" 453 | integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== 454 | dependencies: 455 | "@babel/helper-plugin-utils" "^7.8.3" 456 | 457 | "@babel/plugin-transform-arrow-functions@^7.8.3": 458 | version "7.8.3" 459 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" 460 | integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== 461 | dependencies: 462 | "@babel/helper-plugin-utils" "^7.8.3" 463 | 464 | "@babel/plugin-transform-async-to-generator@^7.8.3": 465 | version "7.8.3" 466 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" 467 | integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== 468 | dependencies: 469 | "@babel/helper-module-imports" "^7.8.3" 470 | "@babel/helper-plugin-utils" "^7.8.3" 471 | "@babel/helper-remap-async-to-generator" "^7.8.3" 472 | 473 | "@babel/plugin-transform-block-scoped-functions@^7.8.3": 474 | version "7.8.3" 475 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" 476 | integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== 477 | dependencies: 478 | "@babel/helper-plugin-utils" "^7.8.3" 479 | 480 | "@babel/plugin-transform-block-scoping@^7.8.3": 481 | version "7.8.3" 482 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" 483 | integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== 484 | dependencies: 485 | "@babel/helper-plugin-utils" "^7.8.3" 486 | lodash "^4.17.13" 487 | 488 | "@babel/plugin-transform-classes@^7.9.5": 489 | version "7.9.5" 490 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" 491 | integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== 492 | dependencies: 493 | "@babel/helper-annotate-as-pure" "^7.8.3" 494 | "@babel/helper-define-map" "^7.8.3" 495 | "@babel/helper-function-name" "^7.9.5" 496 | "@babel/helper-optimise-call-expression" "^7.8.3" 497 | "@babel/helper-plugin-utils" "^7.8.3" 498 | "@babel/helper-replace-supers" "^7.8.6" 499 | "@babel/helper-split-export-declaration" "^7.8.3" 500 | globals "^11.1.0" 501 | 502 | "@babel/plugin-transform-computed-properties@^7.8.3": 503 | version "7.8.3" 504 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" 505 | integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== 506 | dependencies: 507 | "@babel/helper-plugin-utils" "^7.8.3" 508 | 509 | "@babel/plugin-transform-destructuring@^7.9.5": 510 | version "7.9.5" 511 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" 512 | integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== 513 | dependencies: 514 | "@babel/helper-plugin-utils" "^7.8.3" 515 | 516 | "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": 517 | version "7.8.3" 518 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" 519 | integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== 520 | dependencies: 521 | "@babel/helper-create-regexp-features-plugin" "^7.8.3" 522 | "@babel/helper-plugin-utils" "^7.8.3" 523 | 524 | "@babel/plugin-transform-duplicate-keys@^7.8.3": 525 | version "7.8.3" 526 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" 527 | integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== 528 | dependencies: 529 | "@babel/helper-plugin-utils" "^7.8.3" 530 | 531 | "@babel/plugin-transform-exponentiation-operator@^7.8.3": 532 | version "7.8.3" 533 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" 534 | integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== 535 | dependencies: 536 | "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" 537 | "@babel/helper-plugin-utils" "^7.8.3" 538 | 539 | "@babel/plugin-transform-for-of@^7.9.0": 540 | version "7.9.0" 541 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" 542 | integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== 543 | dependencies: 544 | "@babel/helper-plugin-utils" "^7.8.3" 545 | 546 | "@babel/plugin-transform-function-name@^7.8.3": 547 | version "7.8.3" 548 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" 549 | integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== 550 | dependencies: 551 | "@babel/helper-function-name" "^7.8.3" 552 | "@babel/helper-plugin-utils" "^7.8.3" 553 | 554 | "@babel/plugin-transform-literals@^7.8.3": 555 | version "7.8.3" 556 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" 557 | integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== 558 | dependencies: 559 | "@babel/helper-plugin-utils" "^7.8.3" 560 | 561 | "@babel/plugin-transform-member-expression-literals@^7.8.3": 562 | version "7.8.3" 563 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" 564 | integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== 565 | dependencies: 566 | "@babel/helper-plugin-utils" "^7.8.3" 567 | 568 | "@babel/plugin-transform-modules-amd@^7.9.6": 569 | version "7.9.6" 570 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" 571 | integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== 572 | dependencies: 573 | "@babel/helper-module-transforms" "^7.9.0" 574 | "@babel/helper-plugin-utils" "^7.8.3" 575 | babel-plugin-dynamic-import-node "^2.3.3" 576 | 577 | "@babel/plugin-transform-modules-commonjs@^7.9.6": 578 | version "7.9.6" 579 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" 580 | integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== 581 | dependencies: 582 | "@babel/helper-module-transforms" "^7.9.0" 583 | "@babel/helper-plugin-utils" "^7.8.3" 584 | "@babel/helper-simple-access" "^7.8.3" 585 | babel-plugin-dynamic-import-node "^2.3.3" 586 | 587 | "@babel/plugin-transform-modules-systemjs@^7.9.6": 588 | version "7.9.6" 589 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" 590 | integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== 591 | dependencies: 592 | "@babel/helper-hoist-variables" "^7.8.3" 593 | "@babel/helper-module-transforms" "^7.9.0" 594 | "@babel/helper-plugin-utils" "^7.8.3" 595 | babel-plugin-dynamic-import-node "^2.3.3" 596 | 597 | "@babel/plugin-transform-modules-umd@^7.9.0": 598 | version "7.9.0" 599 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" 600 | integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== 601 | dependencies: 602 | "@babel/helper-module-transforms" "^7.9.0" 603 | "@babel/helper-plugin-utils" "^7.8.3" 604 | 605 | "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": 606 | version "7.8.3" 607 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" 608 | integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== 609 | dependencies: 610 | "@babel/helper-create-regexp-features-plugin" "^7.8.3" 611 | 612 | "@babel/plugin-transform-new-target@^7.8.3": 613 | version "7.8.3" 614 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" 615 | integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== 616 | dependencies: 617 | "@babel/helper-plugin-utils" "^7.8.3" 618 | 619 | "@babel/plugin-transform-object-super@^7.8.3": 620 | version "7.8.3" 621 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" 622 | integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== 623 | dependencies: 624 | "@babel/helper-plugin-utils" "^7.8.3" 625 | "@babel/helper-replace-supers" "^7.8.3" 626 | 627 | "@babel/plugin-transform-parameters@^7.9.5": 628 | version "7.9.5" 629 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" 630 | integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== 631 | dependencies: 632 | "@babel/helper-get-function-arity" "^7.8.3" 633 | "@babel/helper-plugin-utils" "^7.8.3" 634 | 635 | "@babel/plugin-transform-property-literals@^7.8.3": 636 | version "7.8.3" 637 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" 638 | integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== 639 | dependencies: 640 | "@babel/helper-plugin-utils" "^7.8.3" 641 | 642 | "@babel/plugin-transform-react-display-name@^7.8.3": 643 | version "7.8.3" 644 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" 645 | integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== 646 | dependencies: 647 | "@babel/helper-plugin-utils" "^7.8.3" 648 | 649 | "@babel/plugin-transform-react-jsx-development@^7.9.0": 650 | version "7.9.0" 651 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" 652 | integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== 653 | dependencies: 654 | "@babel/helper-builder-react-jsx-experimental" "^7.9.0" 655 | "@babel/helper-plugin-utils" "^7.8.3" 656 | "@babel/plugin-syntax-jsx" "^7.8.3" 657 | 658 | "@babel/plugin-transform-react-jsx-self@^7.9.0": 659 | version "7.9.0" 660 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" 661 | integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== 662 | dependencies: 663 | "@babel/helper-plugin-utils" "^7.8.3" 664 | "@babel/plugin-syntax-jsx" "^7.8.3" 665 | 666 | "@babel/plugin-transform-react-jsx-source@^7.9.0": 667 | version "7.9.0" 668 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" 669 | integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== 670 | dependencies: 671 | "@babel/helper-plugin-utils" "^7.8.3" 672 | "@babel/plugin-syntax-jsx" "^7.8.3" 673 | 674 | "@babel/plugin-transform-react-jsx@^7.9.4": 675 | version "7.9.4" 676 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" 677 | integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== 678 | dependencies: 679 | "@babel/helper-builder-react-jsx" "^7.9.0" 680 | "@babel/helper-builder-react-jsx-experimental" "^7.9.0" 681 | "@babel/helper-plugin-utils" "^7.8.3" 682 | "@babel/plugin-syntax-jsx" "^7.8.3" 683 | 684 | "@babel/plugin-transform-regenerator@^7.8.7": 685 | version "7.8.7" 686 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" 687 | integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== 688 | dependencies: 689 | regenerator-transform "^0.14.2" 690 | 691 | "@babel/plugin-transform-reserved-words@^7.8.3": 692 | version "7.8.3" 693 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" 694 | integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== 695 | dependencies: 696 | "@babel/helper-plugin-utils" "^7.8.3" 697 | 698 | "@babel/plugin-transform-shorthand-properties@^7.8.3": 699 | version "7.8.3" 700 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" 701 | integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== 702 | dependencies: 703 | "@babel/helper-plugin-utils" "^7.8.3" 704 | 705 | "@babel/plugin-transform-spread@^7.8.3": 706 | version "7.8.3" 707 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" 708 | integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== 709 | dependencies: 710 | "@babel/helper-plugin-utils" "^7.8.3" 711 | 712 | "@babel/plugin-transform-sticky-regex@^7.8.3": 713 | version "7.8.3" 714 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" 715 | integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== 716 | dependencies: 717 | "@babel/helper-plugin-utils" "^7.8.3" 718 | "@babel/helper-regex" "^7.8.3" 719 | 720 | "@babel/plugin-transform-template-literals@^7.8.3": 721 | version "7.8.3" 722 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" 723 | integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== 724 | dependencies: 725 | "@babel/helper-annotate-as-pure" "^7.8.3" 726 | "@babel/helper-plugin-utils" "^7.8.3" 727 | 728 | "@babel/plugin-transform-typeof-symbol@^7.8.4": 729 | version "7.8.4" 730 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" 731 | integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== 732 | dependencies: 733 | "@babel/helper-plugin-utils" "^7.8.3" 734 | 735 | "@babel/plugin-transform-unicode-regex@^7.8.3": 736 | version "7.8.3" 737 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" 738 | integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== 739 | dependencies: 740 | "@babel/helper-create-regexp-features-plugin" "^7.8.3" 741 | "@babel/helper-plugin-utils" "^7.8.3" 742 | 743 | "@babel/preset-env@^7.9.6": 744 | version "7.9.6" 745 | resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" 746 | integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== 747 | dependencies: 748 | "@babel/compat-data" "^7.9.6" 749 | "@babel/helper-compilation-targets" "^7.9.6" 750 | "@babel/helper-module-imports" "^7.8.3" 751 | "@babel/helper-plugin-utils" "^7.8.3" 752 | "@babel/plugin-proposal-async-generator-functions" "^7.8.3" 753 | "@babel/plugin-proposal-dynamic-import" "^7.8.3" 754 | "@babel/plugin-proposal-json-strings" "^7.8.3" 755 | "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" 756 | "@babel/plugin-proposal-numeric-separator" "^7.8.3" 757 | "@babel/plugin-proposal-object-rest-spread" "^7.9.6" 758 | "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" 759 | "@babel/plugin-proposal-optional-chaining" "^7.9.0" 760 | "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" 761 | "@babel/plugin-syntax-async-generators" "^7.8.0" 762 | "@babel/plugin-syntax-dynamic-import" "^7.8.0" 763 | "@babel/plugin-syntax-json-strings" "^7.8.0" 764 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" 765 | "@babel/plugin-syntax-numeric-separator" "^7.8.0" 766 | "@babel/plugin-syntax-object-rest-spread" "^7.8.0" 767 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" 768 | "@babel/plugin-syntax-optional-chaining" "^7.8.0" 769 | "@babel/plugin-syntax-top-level-await" "^7.8.3" 770 | "@babel/plugin-transform-arrow-functions" "^7.8.3" 771 | "@babel/plugin-transform-async-to-generator" "^7.8.3" 772 | "@babel/plugin-transform-block-scoped-functions" "^7.8.3" 773 | "@babel/plugin-transform-block-scoping" "^7.8.3" 774 | "@babel/plugin-transform-classes" "^7.9.5" 775 | "@babel/plugin-transform-computed-properties" "^7.8.3" 776 | "@babel/plugin-transform-destructuring" "^7.9.5" 777 | "@babel/plugin-transform-dotall-regex" "^7.8.3" 778 | "@babel/plugin-transform-duplicate-keys" "^7.8.3" 779 | "@babel/plugin-transform-exponentiation-operator" "^7.8.3" 780 | "@babel/plugin-transform-for-of" "^7.9.0" 781 | "@babel/plugin-transform-function-name" "^7.8.3" 782 | "@babel/plugin-transform-literals" "^7.8.3" 783 | "@babel/plugin-transform-member-expression-literals" "^7.8.3" 784 | "@babel/plugin-transform-modules-amd" "^7.9.6" 785 | "@babel/plugin-transform-modules-commonjs" "^7.9.6" 786 | "@babel/plugin-transform-modules-systemjs" "^7.9.6" 787 | "@babel/plugin-transform-modules-umd" "^7.9.0" 788 | "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" 789 | "@babel/plugin-transform-new-target" "^7.8.3" 790 | "@babel/plugin-transform-object-super" "^7.8.3" 791 | "@babel/plugin-transform-parameters" "^7.9.5" 792 | "@babel/plugin-transform-property-literals" "^7.8.3" 793 | "@babel/plugin-transform-regenerator" "^7.8.7" 794 | "@babel/plugin-transform-reserved-words" "^7.8.3" 795 | "@babel/plugin-transform-shorthand-properties" "^7.8.3" 796 | "@babel/plugin-transform-spread" "^7.8.3" 797 | "@babel/plugin-transform-sticky-regex" "^7.8.3" 798 | "@babel/plugin-transform-template-literals" "^7.8.3" 799 | "@babel/plugin-transform-typeof-symbol" "^7.8.4" 800 | "@babel/plugin-transform-unicode-regex" "^7.8.3" 801 | "@babel/preset-modules" "^0.1.3" 802 | "@babel/types" "^7.9.6" 803 | browserslist "^4.11.1" 804 | core-js-compat "^3.6.2" 805 | invariant "^2.2.2" 806 | levenary "^1.1.1" 807 | semver "^5.5.0" 808 | 809 | "@babel/preset-modules@^0.1.3": 810 | version "0.1.3" 811 | resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" 812 | integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== 813 | dependencies: 814 | "@babel/helper-plugin-utils" "^7.0.0" 815 | "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" 816 | "@babel/plugin-transform-dotall-regex" "^7.4.4" 817 | "@babel/types" "^7.4.4" 818 | esutils "^2.0.2" 819 | 820 | "@babel/preset-react@7.9.4": 821 | version "7.9.4" 822 | resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.4.tgz#c6c97693ac65b6b9c0b4f25b948a8f665463014d" 823 | integrity sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ== 824 | dependencies: 825 | "@babel/helper-plugin-utils" "^7.8.3" 826 | "@babel/plugin-transform-react-display-name" "^7.8.3" 827 | "@babel/plugin-transform-react-jsx" "^7.9.4" 828 | "@babel/plugin-transform-react-jsx-development" "^7.9.0" 829 | "@babel/plugin-transform-react-jsx-self" "^7.9.0" 830 | "@babel/plugin-transform-react-jsx-source" "^7.9.0" 831 | 832 | "@babel/runtime@^7.8.4": 833 | version "7.9.6" 834 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" 835 | integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== 836 | dependencies: 837 | regenerator-runtime "^0.13.4" 838 | 839 | "@babel/template@^7.8.3", "@babel/template@^7.8.6": 840 | version "7.8.6" 841 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" 842 | integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== 843 | dependencies: 844 | "@babel/code-frame" "^7.8.3" 845 | "@babel/parser" "^7.8.6" 846 | "@babel/types" "^7.8.6" 847 | 848 | "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.6": 849 | version "7.9.6" 850 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" 851 | integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== 852 | dependencies: 853 | "@babel/code-frame" "^7.8.3" 854 | "@babel/generator" "^7.9.6" 855 | "@babel/helper-function-name" "^7.9.5" 856 | "@babel/helper-split-export-declaration" "^7.8.3" 857 | "@babel/parser" "^7.9.6" 858 | "@babel/types" "^7.9.6" 859 | debug "^4.1.0" 860 | globals "^11.1.0" 861 | lodash "^4.17.13" 862 | 863 | "@babel/types@^7.0.0": 864 | version "7.3.2" 865 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.2.tgz#424f5be4be633fff33fb83ab8d67e4a8290f5a2f" 866 | integrity sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ== 867 | dependencies: 868 | esutils "^2.0.2" 869 | lodash "^4.17.10" 870 | to-fast-properties "^2.0.0" 871 | 872 | "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": 873 | version "7.9.6" 874 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" 875 | integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== 876 | dependencies: 877 | "@babel/helper-validator-identifier" "^7.9.5" 878 | lodash "^4.17.13" 879 | to-fast-properties "^2.0.0" 880 | 881 | "@doubco/wtf@^0.0.6": 882 | version "0.0.6" 883 | resolved "https://registry.yarnpkg.com/@doubco/wtf/-/wtf-0.0.6.tgz#b20184dfc4e48544a425029c8a221987e135580a" 884 | integrity sha512-LF0Xxj8aDL5B+8MLFYWyH0SuwKl5NNEUAxfcVvV49EWhzcP6ApXpHmSn1vmxfKDrmqUvh+88TGYU1qG7XGoWYQ== 885 | 886 | "@types/color-name@^1.1.1": 887 | version "1.1.1" 888 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 889 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 890 | 891 | "@types/estree@0.0.39": 892 | version "0.0.39" 893 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 894 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 895 | 896 | "@types/node@*": 897 | version "14.0.1" 898 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c" 899 | integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA== 900 | 901 | "@types/resolve@0.0.8": 902 | version "0.0.8" 903 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" 904 | integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== 905 | dependencies: 906 | "@types/node" "*" 907 | 908 | acorn-jsx@^5.2.0: 909 | version "5.2.0" 910 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 911 | integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== 912 | 913 | acorn@^7.1.1: 914 | version "7.2.0" 915 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" 916 | integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== 917 | 918 | ajv@^6.10.0, ajv@^6.10.2: 919 | version "6.12.2" 920 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" 921 | integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== 922 | dependencies: 923 | fast-deep-equal "^3.1.1" 924 | fast-json-stable-stringify "^2.0.0" 925 | json-schema-traverse "^0.4.1" 926 | uri-js "^4.2.2" 927 | 928 | ansi-escapes@^4.2.1: 929 | version "4.3.1" 930 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 931 | integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== 932 | dependencies: 933 | type-fest "^0.11.0" 934 | 935 | ansi-regex@^4.1.0: 936 | version "4.1.0" 937 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 938 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 939 | 940 | ansi-regex@^5.0.0: 941 | version "5.0.0" 942 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 943 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 944 | 945 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 946 | version "3.2.1" 947 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 948 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 949 | dependencies: 950 | color-convert "^1.9.0" 951 | 952 | ansi-styles@^4.1.0: 953 | version "4.2.1" 954 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 955 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 956 | dependencies: 957 | "@types/color-name" "^1.1.1" 958 | color-convert "^2.0.1" 959 | 960 | argparse@^1.0.7: 961 | version "1.0.10" 962 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 963 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 964 | dependencies: 965 | sprintf-js "~1.0.2" 966 | 967 | array-includes@^3.0.3: 968 | version "3.1.1" 969 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" 970 | integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== 971 | dependencies: 972 | define-properties "^1.1.3" 973 | es-abstract "^1.17.0" 974 | is-string "^1.0.5" 975 | 976 | array.prototype.flat@^1.2.1: 977 | version "1.2.3" 978 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" 979 | integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== 980 | dependencies: 981 | define-properties "^1.1.3" 982 | es-abstract "^1.17.0-next.1" 983 | 984 | astral-regex@^1.0.0: 985 | version "1.0.0" 986 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 987 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 988 | 989 | babel-eslint@^10.1.0: 990 | version "10.1.0" 991 | resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" 992 | integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== 993 | dependencies: 994 | "@babel/code-frame" "^7.0.0" 995 | "@babel/parser" "^7.7.0" 996 | "@babel/traverse" "^7.7.0" 997 | "@babel/types" "^7.7.0" 998 | eslint-visitor-keys "^1.0.0" 999 | resolve "^1.12.0" 1000 | 1001 | babel-plugin-dynamic-import-node@^2.3.3: 1002 | version "2.3.3" 1003 | resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" 1004 | integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== 1005 | dependencies: 1006 | object.assign "^4.1.0" 1007 | 1008 | balanced-match@^1.0.0: 1009 | version "1.0.0" 1010 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 1011 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 1012 | 1013 | brace-expansion@^1.1.7: 1014 | version "1.1.11" 1015 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 1016 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 1017 | dependencies: 1018 | balanced-match "^1.0.0" 1019 | concat-map "0.0.1" 1020 | 1021 | browserslist@^4.11.1, browserslist@^4.8.5: 1022 | version "4.12.0" 1023 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" 1024 | integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== 1025 | dependencies: 1026 | caniuse-lite "^1.0.30001043" 1027 | electron-to-chromium "^1.3.413" 1028 | node-releases "^1.1.53" 1029 | pkg-up "^2.0.0" 1030 | 1031 | builtin-modules@^3.1.0: 1032 | version "3.1.0" 1033 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 1034 | integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 1035 | 1036 | callsites@^3.0.0: 1037 | version "3.0.0" 1038 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" 1039 | integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== 1040 | 1041 | caniuse-lite@^1.0.30001043: 1042 | version "1.0.30001055" 1043 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001055.tgz#7b52c3537f7a8c0408aca867e83d2b04268b54cd" 1044 | integrity sha512-MbwsBmKrBSKIWldfdIagO5OJWZclpJtS4h0Jrk/4HFrXJxTdVdH23Fd+xCiHriVGvYcWyW8mR/CPsYajlH8Iuw== 1045 | 1046 | chalk@^2.0.0: 1047 | version "2.4.2" 1048 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 1049 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 1050 | dependencies: 1051 | ansi-styles "^3.2.1" 1052 | escape-string-regexp "^1.0.5" 1053 | supports-color "^5.3.0" 1054 | 1055 | chalk@^3.0.0: 1056 | version "3.0.0" 1057 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 1058 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 1059 | dependencies: 1060 | ansi-styles "^4.1.0" 1061 | supports-color "^7.1.0" 1062 | 1063 | chalk@^4.0.0: 1064 | version "4.0.0" 1065 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" 1066 | integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== 1067 | dependencies: 1068 | ansi-styles "^4.1.0" 1069 | supports-color "^7.1.0" 1070 | 1071 | chardet@^0.7.0: 1072 | version "0.7.0" 1073 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 1074 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 1075 | 1076 | cli-cursor@^3.1.0: 1077 | version "3.1.0" 1078 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 1079 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 1080 | dependencies: 1081 | restore-cursor "^3.1.0" 1082 | 1083 | cli-width@^2.0.0: 1084 | version "2.2.0" 1085 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 1086 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 1087 | 1088 | color-convert@^1.9.0: 1089 | version "1.9.3" 1090 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 1091 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 1092 | dependencies: 1093 | color-name "1.1.3" 1094 | 1095 | color-convert@^2.0.1: 1096 | version "2.0.1" 1097 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1098 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1099 | dependencies: 1100 | color-name "~1.1.4" 1101 | 1102 | color-name@1.1.3: 1103 | version "1.1.3" 1104 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1105 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 1106 | 1107 | color-name@~1.1.4: 1108 | version "1.1.4" 1109 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1110 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1111 | 1112 | concat-map@0.0.1: 1113 | version "0.0.1" 1114 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1115 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 1116 | 1117 | contains-path@^0.1.0: 1118 | version "0.1.0" 1119 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 1120 | integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= 1121 | 1122 | convert-source-map@^1.7.0: 1123 | version "1.7.0" 1124 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 1125 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 1126 | dependencies: 1127 | safe-buffer "~5.1.1" 1128 | 1129 | core-js-compat@^3.6.2: 1130 | version "3.6.5" 1131 | resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" 1132 | integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== 1133 | dependencies: 1134 | browserslist "^4.8.5" 1135 | semver "7.0.0" 1136 | 1137 | cross-spawn@^7.0.2: 1138 | version "7.0.2" 1139 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" 1140 | integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== 1141 | dependencies: 1142 | path-key "^3.1.0" 1143 | shebang-command "^2.0.0" 1144 | which "^2.0.1" 1145 | 1146 | debug@^2.6.9: 1147 | version "2.6.9" 1148 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 1149 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 1150 | dependencies: 1151 | ms "2.0.0" 1152 | 1153 | debug@^4.0.1, debug@^4.1.0: 1154 | version "4.1.1" 1155 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 1156 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 1157 | dependencies: 1158 | ms "^2.1.1" 1159 | 1160 | deep-is@^0.1.3: 1161 | version "0.1.3" 1162 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 1163 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 1164 | 1165 | define-properties@^1.1.2, define-properties@^1.1.3: 1166 | version "1.1.3" 1167 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 1168 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 1169 | dependencies: 1170 | object-keys "^1.0.12" 1171 | 1172 | doctrine@1.5.0: 1173 | version "1.5.0" 1174 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 1175 | integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= 1176 | dependencies: 1177 | esutils "^2.0.2" 1178 | isarray "^1.0.0" 1179 | 1180 | doctrine@^3.0.0: 1181 | version "3.0.0" 1182 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 1183 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 1184 | dependencies: 1185 | esutils "^2.0.2" 1186 | 1187 | electron-to-chromium@^1.3.413: 1188 | version "1.3.435" 1189 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.435.tgz#22a7008e8f5a317a6d2d80802bddacebb19ae025" 1190 | integrity sha512-BVXnq+NCefidU7GOFPx4CPBfPcccLCRBKZYSbvBJMSn2kwGD7ML+eUA9tqfHAumRqy3oX5zaeTI1Bpt7qVat0Q== 1191 | 1192 | emoji-regex@^7.0.1: 1193 | version "7.0.3" 1194 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 1195 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 1196 | 1197 | emoji-regex@^8.0.0: 1198 | version "8.0.0" 1199 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1200 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1201 | 1202 | error-ex@^1.2.0: 1203 | version "1.3.2" 1204 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1205 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1206 | dependencies: 1207 | is-arrayish "^0.2.1" 1208 | 1209 | es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: 1210 | version "1.17.5" 1211 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" 1212 | integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== 1213 | dependencies: 1214 | es-to-primitive "^1.2.1" 1215 | function-bind "^1.1.1" 1216 | has "^1.0.3" 1217 | has-symbols "^1.0.1" 1218 | is-callable "^1.1.5" 1219 | is-regex "^1.0.5" 1220 | object-inspect "^1.7.0" 1221 | object-keys "^1.1.1" 1222 | object.assign "^4.1.0" 1223 | string.prototype.trimleft "^2.1.1" 1224 | string.prototype.trimright "^2.1.1" 1225 | 1226 | es-to-primitive@^1.2.1: 1227 | version "1.2.1" 1228 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 1229 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 1230 | dependencies: 1231 | is-callable "^1.1.4" 1232 | is-date-object "^1.0.1" 1233 | is-symbol "^1.0.2" 1234 | 1235 | escape-string-regexp@^1.0.5: 1236 | version "1.0.5" 1237 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1238 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1239 | 1240 | eslint-import-resolver-node@^0.3.2: 1241 | version "0.3.2" 1242 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" 1243 | integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== 1244 | dependencies: 1245 | debug "^2.6.9" 1246 | resolve "^1.5.0" 1247 | 1248 | eslint-module-utils@^2.4.1: 1249 | version "2.6.0" 1250 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" 1251 | integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== 1252 | dependencies: 1253 | debug "^2.6.9" 1254 | pkg-dir "^2.0.0" 1255 | 1256 | eslint-plugin-import@^2.20.2: 1257 | version "2.20.2" 1258 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" 1259 | integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== 1260 | dependencies: 1261 | array-includes "^3.0.3" 1262 | array.prototype.flat "^1.2.1" 1263 | contains-path "^0.1.0" 1264 | debug "^2.6.9" 1265 | doctrine "1.5.0" 1266 | eslint-import-resolver-node "^0.3.2" 1267 | eslint-module-utils "^2.4.1" 1268 | has "^1.0.3" 1269 | minimatch "^3.0.4" 1270 | object.values "^1.1.0" 1271 | read-pkg-up "^2.0.0" 1272 | resolve "^1.12.0" 1273 | 1274 | eslint-plugin-prettier@^3.1.3: 1275 | version "3.1.3" 1276 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz#ae116a0fc0e598fdae48743a4430903de5b4e6ca" 1277 | integrity sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ== 1278 | dependencies: 1279 | prettier-linter-helpers "^1.0.0" 1280 | 1281 | eslint-scope@^5.0.0: 1282 | version "5.0.0" 1283 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 1284 | integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== 1285 | dependencies: 1286 | esrecurse "^4.1.0" 1287 | estraverse "^4.1.1" 1288 | 1289 | eslint-utils@^2.0.0: 1290 | version "2.0.0" 1291 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" 1292 | integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== 1293 | dependencies: 1294 | eslint-visitor-keys "^1.1.0" 1295 | 1296 | eslint-visitor-keys@^1.0.0: 1297 | version "1.0.0" 1298 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" 1299 | integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== 1300 | 1301 | eslint-visitor-keys@^1.1.0: 1302 | version "1.1.0" 1303 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 1304 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== 1305 | 1306 | eslint@^7.0.0: 1307 | version "7.0.0" 1308 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.0.0.tgz#c35dfd04a4372110bd78c69a8d79864273919a08" 1309 | integrity sha512-qY1cwdOxMONHJfGqw52UOpZDeqXy8xmD0u8CT6jIstil72jkhURC704W8CFyTPDPllz4z4lu0Ql1+07PG/XdIg== 1310 | dependencies: 1311 | "@babel/code-frame" "^7.0.0" 1312 | ajv "^6.10.0" 1313 | chalk "^4.0.0" 1314 | cross-spawn "^7.0.2" 1315 | debug "^4.0.1" 1316 | doctrine "^3.0.0" 1317 | eslint-scope "^5.0.0" 1318 | eslint-utils "^2.0.0" 1319 | eslint-visitor-keys "^1.1.0" 1320 | espree "^7.0.0" 1321 | esquery "^1.2.0" 1322 | esutils "^2.0.2" 1323 | file-entry-cache "^5.0.1" 1324 | functional-red-black-tree "^1.0.1" 1325 | glob-parent "^5.0.0" 1326 | globals "^12.1.0" 1327 | ignore "^4.0.6" 1328 | import-fresh "^3.0.0" 1329 | imurmurhash "^0.1.4" 1330 | inquirer "^7.0.0" 1331 | is-glob "^4.0.0" 1332 | js-yaml "^3.13.1" 1333 | json-stable-stringify-without-jsonify "^1.0.1" 1334 | levn "^0.4.1" 1335 | lodash "^4.17.14" 1336 | minimatch "^3.0.4" 1337 | natural-compare "^1.4.0" 1338 | optionator "^0.9.1" 1339 | progress "^2.0.0" 1340 | regexpp "^3.1.0" 1341 | semver "^7.2.1" 1342 | strip-ansi "^6.0.0" 1343 | strip-json-comments "^3.1.0" 1344 | table "^5.2.3" 1345 | text-table "^0.2.0" 1346 | v8-compile-cache "^2.0.3" 1347 | 1348 | espree@^7.0.0: 1349 | version "7.0.0" 1350 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.0.0.tgz#8a7a60f218e69f120a842dc24c5a88aa7748a74e" 1351 | integrity sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw== 1352 | dependencies: 1353 | acorn "^7.1.1" 1354 | acorn-jsx "^5.2.0" 1355 | eslint-visitor-keys "^1.1.0" 1356 | 1357 | esprima@^4.0.0: 1358 | version "4.0.1" 1359 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1360 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1361 | 1362 | esquery@^1.2.0: 1363 | version "1.3.1" 1364 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" 1365 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== 1366 | dependencies: 1367 | estraverse "^5.1.0" 1368 | 1369 | esrecurse@^4.1.0: 1370 | version "4.2.1" 1371 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 1372 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 1373 | dependencies: 1374 | estraverse "^4.1.0" 1375 | 1376 | estraverse@^4.1.0, estraverse@^4.1.1: 1377 | version "4.2.0" 1378 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 1379 | integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= 1380 | 1381 | estraverse@^5.1.0: 1382 | version "5.1.0" 1383 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" 1384 | integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== 1385 | 1386 | estree-walker@^0.6.1: 1387 | version "0.6.1" 1388 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 1389 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 1390 | 1391 | esutils@^2.0.2: 1392 | version "2.0.2" 1393 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1394 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 1395 | 1396 | external-editor@^3.0.3: 1397 | version "3.0.3" 1398 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" 1399 | integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== 1400 | dependencies: 1401 | chardet "^0.7.0" 1402 | iconv-lite "^0.4.24" 1403 | tmp "^0.0.33" 1404 | 1405 | fast-deep-equal@^3.1.1: 1406 | version "3.1.1" 1407 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 1408 | integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 1409 | 1410 | fast-diff@^1.1.2: 1411 | version "1.2.0" 1412 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 1413 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 1414 | 1415 | fast-json-stable-stringify@^2.0.0: 1416 | version "2.0.0" 1417 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 1418 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 1419 | 1420 | fast-levenshtein@^2.0.6: 1421 | version "2.0.6" 1422 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1423 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1424 | 1425 | figures@^3.0.0: 1426 | version "3.2.0" 1427 | resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 1428 | integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 1429 | dependencies: 1430 | escape-string-regexp "^1.0.5" 1431 | 1432 | file-entry-cache@^5.0.1: 1433 | version "5.0.1" 1434 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 1435 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 1436 | dependencies: 1437 | flat-cache "^2.0.1" 1438 | 1439 | find-up@^2.0.0, find-up@^2.1.0: 1440 | version "2.1.0" 1441 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1442 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 1443 | dependencies: 1444 | locate-path "^2.0.0" 1445 | 1446 | flat-cache@^2.0.1: 1447 | version "2.0.1" 1448 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 1449 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 1450 | dependencies: 1451 | flatted "^2.0.0" 1452 | rimraf "2.6.3" 1453 | write "1.0.3" 1454 | 1455 | flatted@^2.0.0: 1456 | version "2.0.2" 1457 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" 1458 | integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== 1459 | 1460 | fs.realpath@^1.0.0: 1461 | version "1.0.0" 1462 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1463 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1464 | 1465 | function-bind@^1.1.1: 1466 | version "1.1.1" 1467 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1468 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1469 | 1470 | functional-red-black-tree@^1.0.1: 1471 | version "1.0.1" 1472 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1473 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 1474 | 1475 | gensync@^1.0.0-beta.1: 1476 | version "1.0.0-beta.1" 1477 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" 1478 | integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== 1479 | 1480 | glob-parent@^5.0.0: 1481 | version "5.1.1" 1482 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 1483 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 1484 | dependencies: 1485 | is-glob "^4.0.1" 1486 | 1487 | glob@^7.1.3: 1488 | version "7.1.3" 1489 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 1490 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 1491 | dependencies: 1492 | fs.realpath "^1.0.0" 1493 | inflight "^1.0.4" 1494 | inherits "2" 1495 | minimatch "^3.0.4" 1496 | once "^1.3.0" 1497 | path-is-absolute "^1.0.0" 1498 | 1499 | globals@^11.1.0: 1500 | version "11.10.0" 1501 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50" 1502 | integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ== 1503 | 1504 | globals@^12.1.0: 1505 | version "12.4.0" 1506 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 1507 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 1508 | dependencies: 1509 | type-fest "^0.8.1" 1510 | 1511 | graceful-fs@^4.1.2: 1512 | version "4.1.15" 1513 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 1514 | integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== 1515 | 1516 | has-flag@^3.0.0: 1517 | version "3.0.0" 1518 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1519 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1520 | 1521 | has-flag@^4.0.0: 1522 | version "4.0.0" 1523 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1524 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1525 | 1526 | has-symbols@^1.0.0, has-symbols@^1.0.1: 1527 | version "1.0.1" 1528 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1529 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 1530 | 1531 | has@^1.0.3: 1532 | version "1.0.3" 1533 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1534 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1535 | dependencies: 1536 | function-bind "^1.1.1" 1537 | 1538 | hosted-git-info@^2.1.4: 1539 | version "2.7.1" 1540 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" 1541 | integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== 1542 | 1543 | iconv-lite@^0.4.24: 1544 | version "0.4.24" 1545 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1546 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1547 | dependencies: 1548 | safer-buffer ">= 2.1.2 < 3" 1549 | 1550 | ignore@^4.0.6: 1551 | version "4.0.6" 1552 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1553 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1554 | 1555 | import-fresh@^3.0.0: 1556 | version "3.0.0" 1557 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" 1558 | integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== 1559 | dependencies: 1560 | parent-module "^1.0.0" 1561 | resolve-from "^4.0.0" 1562 | 1563 | imurmurhash@^0.1.4: 1564 | version "0.1.4" 1565 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1566 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1567 | 1568 | inflight@^1.0.4: 1569 | version "1.0.6" 1570 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1571 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1572 | dependencies: 1573 | once "^1.3.0" 1574 | wrappy "1" 1575 | 1576 | inherits@2: 1577 | version "2.0.3" 1578 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1579 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1580 | 1581 | inquirer@^7.0.0: 1582 | version "7.1.0" 1583 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" 1584 | integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== 1585 | dependencies: 1586 | ansi-escapes "^4.2.1" 1587 | chalk "^3.0.0" 1588 | cli-cursor "^3.1.0" 1589 | cli-width "^2.0.0" 1590 | external-editor "^3.0.3" 1591 | figures "^3.0.0" 1592 | lodash "^4.17.15" 1593 | mute-stream "0.0.8" 1594 | run-async "^2.4.0" 1595 | rxjs "^6.5.3" 1596 | string-width "^4.1.0" 1597 | strip-ansi "^6.0.0" 1598 | through "^2.3.6" 1599 | 1600 | invariant@^2.2.2, invariant@^2.2.4: 1601 | version "2.2.4" 1602 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1603 | integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== 1604 | dependencies: 1605 | loose-envify "^1.0.0" 1606 | 1607 | is-arrayish@^0.2.1: 1608 | version "0.2.1" 1609 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1610 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1611 | 1612 | is-callable@^1.1.4, is-callable@^1.1.5: 1613 | version "1.1.5" 1614 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 1615 | integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 1616 | 1617 | is-date-object@^1.0.1: 1618 | version "1.0.2" 1619 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1620 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1621 | 1622 | is-extglob@^2.1.1: 1623 | version "2.1.1" 1624 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1625 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1626 | 1627 | is-fullwidth-code-point@^2.0.0: 1628 | version "2.0.0" 1629 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1630 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1631 | 1632 | is-fullwidth-code-point@^3.0.0: 1633 | version "3.0.0" 1634 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1635 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1636 | 1637 | is-glob@^4.0.0, is-glob@^4.0.1: 1638 | version "4.0.1" 1639 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1640 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1641 | dependencies: 1642 | is-extglob "^2.1.1" 1643 | 1644 | is-module@^1.0.0: 1645 | version "1.0.0" 1646 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 1647 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 1648 | 1649 | is-reference@^1.1.2: 1650 | version "1.1.4" 1651 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" 1652 | integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== 1653 | dependencies: 1654 | "@types/estree" "0.0.39" 1655 | 1656 | is-regex@^1.0.5: 1657 | version "1.0.5" 1658 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" 1659 | integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== 1660 | dependencies: 1661 | has "^1.0.3" 1662 | 1663 | is-string@^1.0.5: 1664 | version "1.0.5" 1665 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 1666 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== 1667 | 1668 | is-symbol@^1.0.2: 1669 | version "1.0.3" 1670 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 1671 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 1672 | dependencies: 1673 | has-symbols "^1.0.1" 1674 | 1675 | isarray@^1.0.0: 1676 | version "1.0.0" 1677 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1678 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1679 | 1680 | isexe@^2.0.0: 1681 | version "2.0.0" 1682 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1683 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1684 | 1685 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1686 | version "4.0.0" 1687 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1688 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1689 | 1690 | js-yaml@^3.13.1: 1691 | version "3.13.1" 1692 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1693 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1694 | dependencies: 1695 | argparse "^1.0.7" 1696 | esprima "^4.0.0" 1697 | 1698 | jsesc@^2.5.1: 1699 | version "2.5.2" 1700 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1701 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1702 | 1703 | jsesc@~0.5.0: 1704 | version "0.5.0" 1705 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1706 | integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 1707 | 1708 | json-schema-traverse@^0.4.1: 1709 | version "0.4.1" 1710 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1711 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1712 | 1713 | json-stable-stringify-without-jsonify@^1.0.1: 1714 | version "1.0.1" 1715 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1716 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1717 | 1718 | json5@^2.1.2: 1719 | version "2.1.3" 1720 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" 1721 | integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== 1722 | dependencies: 1723 | minimist "^1.2.5" 1724 | 1725 | leven@^3.1.0: 1726 | version "3.1.0" 1727 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 1728 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 1729 | 1730 | levenary@^1.1.1: 1731 | version "1.1.1" 1732 | resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" 1733 | integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== 1734 | dependencies: 1735 | leven "^3.1.0" 1736 | 1737 | levn@^0.4.1: 1738 | version "0.4.1" 1739 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1740 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1741 | dependencies: 1742 | prelude-ls "^1.2.1" 1743 | type-check "~0.4.0" 1744 | 1745 | load-json-file@^2.0.0: 1746 | version "2.0.0" 1747 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1748 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= 1749 | dependencies: 1750 | graceful-fs "^4.1.2" 1751 | parse-json "^2.2.0" 1752 | pify "^2.0.0" 1753 | strip-bom "^3.0.0" 1754 | 1755 | locate-path@^2.0.0: 1756 | version "2.0.0" 1757 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1758 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1759 | dependencies: 1760 | p-locate "^2.0.0" 1761 | path-exists "^3.0.0" 1762 | 1763 | lodash@^4.17.10: 1764 | version "4.17.11" 1765 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" 1766 | integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== 1767 | 1768 | lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: 1769 | version "4.17.15" 1770 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1771 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 1772 | 1773 | loose-envify@^1.0.0: 1774 | version "1.4.0" 1775 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1776 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1777 | dependencies: 1778 | js-tokens "^3.0.0 || ^4.0.0" 1779 | 1780 | magic-string@^0.25.2: 1781 | version "0.25.7" 1782 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 1783 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 1784 | dependencies: 1785 | sourcemap-codec "^1.4.4" 1786 | 1787 | mime@^2.4.4: 1788 | version "2.4.5" 1789 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" 1790 | integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== 1791 | 1792 | mimic-fn@^2.1.0: 1793 | version "2.1.0" 1794 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1795 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1796 | 1797 | minimatch@^3.0.4: 1798 | version "3.0.4" 1799 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1800 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1801 | dependencies: 1802 | brace-expansion "^1.1.7" 1803 | 1804 | minimist@0.0.8: 1805 | version "0.0.8" 1806 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1807 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1808 | 1809 | minimist@^1.2.5: 1810 | version "1.2.5" 1811 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1812 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1813 | 1814 | mkdirp@^0.5.1: 1815 | version "0.5.1" 1816 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1817 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1818 | dependencies: 1819 | minimist "0.0.8" 1820 | 1821 | ms@2.0.0: 1822 | version "2.0.0" 1823 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1824 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1825 | 1826 | ms@^2.1.1: 1827 | version "2.1.1" 1828 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1829 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1830 | 1831 | mute-stream@0.0.8: 1832 | version "0.0.8" 1833 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 1834 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 1835 | 1836 | natural-compare@^1.4.0: 1837 | version "1.4.0" 1838 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1839 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1840 | 1841 | node-releases@^1.1.53: 1842 | version "1.1.55" 1843 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.55.tgz#8af23b7c561d8e2e6e36a46637bab84633b07cee" 1844 | integrity sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w== 1845 | 1846 | normalize-package-data@^2.3.2: 1847 | version "2.5.0" 1848 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1849 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1850 | dependencies: 1851 | hosted-git-info "^2.1.4" 1852 | resolve "^1.10.0" 1853 | semver "2 || 3 || 4 || 5" 1854 | validate-npm-package-license "^3.0.1" 1855 | 1856 | object-inspect@^1.7.0: 1857 | version "1.7.0" 1858 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" 1859 | integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== 1860 | 1861 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 1862 | version "1.1.1" 1863 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1864 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1865 | 1866 | object.assign@^4.1.0: 1867 | version "4.1.0" 1868 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1869 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 1870 | dependencies: 1871 | define-properties "^1.1.2" 1872 | function-bind "^1.1.1" 1873 | has-symbols "^1.0.0" 1874 | object-keys "^1.0.11" 1875 | 1876 | object.values@^1.1.0: 1877 | version "1.1.1" 1878 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" 1879 | integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== 1880 | dependencies: 1881 | define-properties "^1.1.3" 1882 | es-abstract "^1.17.0-next.1" 1883 | function-bind "^1.1.1" 1884 | has "^1.0.3" 1885 | 1886 | once@^1.3.0: 1887 | version "1.4.0" 1888 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1889 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1890 | dependencies: 1891 | wrappy "1" 1892 | 1893 | onetime@^5.1.0: 1894 | version "5.1.0" 1895 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 1896 | integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== 1897 | dependencies: 1898 | mimic-fn "^2.1.0" 1899 | 1900 | optionator@^0.9.1: 1901 | version "0.9.1" 1902 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1903 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1904 | dependencies: 1905 | deep-is "^0.1.3" 1906 | fast-levenshtein "^2.0.6" 1907 | levn "^0.4.1" 1908 | prelude-ls "^1.2.1" 1909 | type-check "^0.4.0" 1910 | word-wrap "^1.2.3" 1911 | 1912 | os-tmpdir@~1.0.2: 1913 | version "1.0.2" 1914 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1915 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1916 | 1917 | p-limit@^1.1.0: 1918 | version "1.3.0" 1919 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1920 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 1921 | dependencies: 1922 | p-try "^1.0.0" 1923 | 1924 | p-locate@^2.0.0: 1925 | version "2.0.0" 1926 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1927 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 1928 | dependencies: 1929 | p-limit "^1.1.0" 1930 | 1931 | p-try@^1.0.0: 1932 | version "1.0.0" 1933 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1934 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 1935 | 1936 | parent-module@^1.0.0: 1937 | version "1.0.0" 1938 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" 1939 | integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA== 1940 | dependencies: 1941 | callsites "^3.0.0" 1942 | 1943 | parse-json@^2.2.0: 1944 | version "2.2.0" 1945 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1946 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 1947 | dependencies: 1948 | error-ex "^1.2.0" 1949 | 1950 | path-exists@^3.0.0: 1951 | version "3.0.0" 1952 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1953 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1954 | 1955 | path-is-absolute@^1.0.0: 1956 | version "1.0.1" 1957 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1958 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1959 | 1960 | path-key@^3.1.0: 1961 | version "3.1.1" 1962 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1963 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1964 | 1965 | path-parse@^1.0.6: 1966 | version "1.0.6" 1967 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1968 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1969 | 1970 | path-type@^2.0.0: 1971 | version "2.0.0" 1972 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 1973 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= 1974 | dependencies: 1975 | pify "^2.0.0" 1976 | 1977 | pify@^2.0.0: 1978 | version "2.3.0" 1979 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1980 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1981 | 1982 | pkg-dir@^2.0.0: 1983 | version "2.0.0" 1984 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 1985 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 1986 | dependencies: 1987 | find-up "^2.1.0" 1988 | 1989 | pkg-up@^2.0.0: 1990 | version "2.0.0" 1991 | resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" 1992 | integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= 1993 | dependencies: 1994 | find-up "^2.1.0" 1995 | 1996 | prelude-ls@^1.2.1: 1997 | version "1.2.1" 1998 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1999 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 2000 | 2001 | prettier-linter-helpers@^1.0.0: 2002 | version "1.0.0" 2003 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" 2004 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== 2005 | dependencies: 2006 | fast-diff "^1.1.2" 2007 | 2008 | prettier@^2.0.5: 2009 | version "2.0.5" 2010 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" 2011 | integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== 2012 | 2013 | private@^0.1.8: 2014 | version "0.1.8" 2015 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 2016 | integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== 2017 | 2018 | progress@^2.0.0: 2019 | version "2.0.3" 2020 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 2021 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 2022 | 2023 | punycode@^2.1.0: 2024 | version "2.1.1" 2025 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2026 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2027 | 2028 | read-pkg-up@^2.0.0: 2029 | version "2.0.0" 2030 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 2031 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= 2032 | dependencies: 2033 | find-up "^2.0.0" 2034 | read-pkg "^2.0.0" 2035 | 2036 | read-pkg@^2.0.0: 2037 | version "2.0.0" 2038 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 2039 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= 2040 | dependencies: 2041 | load-json-file "^2.0.0" 2042 | normalize-package-data "^2.3.2" 2043 | path-type "^2.0.0" 2044 | 2045 | regenerate-unicode-properties@^8.2.0: 2046 | version "8.2.0" 2047 | resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" 2048 | integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== 2049 | dependencies: 2050 | regenerate "^1.4.0" 2051 | 2052 | regenerate@^1.4.0: 2053 | version "1.4.0" 2054 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 2055 | integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== 2056 | 2057 | regenerator-runtime@^0.13.4: 2058 | version "0.13.5" 2059 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" 2060 | integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== 2061 | 2062 | regenerator-transform@^0.14.2: 2063 | version "0.14.4" 2064 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" 2065 | integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== 2066 | dependencies: 2067 | "@babel/runtime" "^7.8.4" 2068 | private "^0.1.8" 2069 | 2070 | regexpp@^3.1.0: 2071 | version "3.1.0" 2072 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 2073 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 2074 | 2075 | regexpu-core@^4.7.0: 2076 | version "4.7.0" 2077 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" 2078 | integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== 2079 | dependencies: 2080 | regenerate "^1.4.0" 2081 | regenerate-unicode-properties "^8.2.0" 2082 | regjsgen "^0.5.1" 2083 | regjsparser "^0.6.4" 2084 | unicode-match-property-ecmascript "^1.0.4" 2085 | unicode-match-property-value-ecmascript "^1.2.0" 2086 | 2087 | regjsgen@^0.5.1: 2088 | version "0.5.1" 2089 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" 2090 | integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== 2091 | 2092 | regjsparser@^0.6.4: 2093 | version "0.6.4" 2094 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" 2095 | integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== 2096 | dependencies: 2097 | jsesc "~0.5.0" 2098 | 2099 | resolve-from@^4.0.0: 2100 | version "4.0.0" 2101 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2102 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2103 | 2104 | resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0: 2105 | version "1.10.0" 2106 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" 2107 | integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== 2108 | dependencies: 2109 | path-parse "^1.0.6" 2110 | 2111 | resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0: 2112 | version "1.17.0" 2113 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 2114 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 2115 | dependencies: 2116 | path-parse "^1.0.6" 2117 | 2118 | restore-cursor@^3.1.0: 2119 | version "3.1.0" 2120 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 2121 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 2122 | dependencies: 2123 | onetime "^5.1.0" 2124 | signal-exit "^3.0.2" 2125 | 2126 | rimraf@2.6.3: 2127 | version "2.6.3" 2128 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 2129 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 2130 | dependencies: 2131 | glob "^7.1.3" 2132 | 2133 | rollup-plugin-babel@^4.4.0: 2134 | version "4.4.0" 2135 | resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" 2136 | integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== 2137 | dependencies: 2138 | "@babel/helper-module-imports" "^7.0.0" 2139 | rollup-pluginutils "^2.8.1" 2140 | 2141 | rollup-plugin-commonjs@^10.1.0: 2142 | version "10.1.0" 2143 | resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" 2144 | integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== 2145 | dependencies: 2146 | estree-walker "^0.6.1" 2147 | is-reference "^1.1.2" 2148 | magic-string "^0.25.2" 2149 | resolve "^1.11.0" 2150 | rollup-pluginutils "^2.8.1" 2151 | 2152 | rollup-plugin-node-resolve@^5.2.0: 2153 | version "5.2.0" 2154 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" 2155 | integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== 2156 | dependencies: 2157 | "@types/resolve" "0.0.8" 2158 | builtin-modules "^3.1.0" 2159 | is-module "^1.0.0" 2160 | resolve "^1.11.1" 2161 | rollup-pluginutils "^2.8.1" 2162 | 2163 | rollup-plugin-peer-deps-external@^2.2.2: 2164 | version "2.2.2" 2165 | resolved "https://registry.yarnpkg.com/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.2.tgz#506cef67fb68f41cca3ec08ca6ff7936b190f568" 2166 | integrity sha512-XcHH4UW9exRTAf73d8rk2dw2UgF//cWbilhRI4Ni/n+t0zA1eBtohKyJROn0fxa4/+WZ5R3onAyIDiwRQL+59A== 2167 | 2168 | rollup-plugin-url@^3.0.1: 2169 | version "3.0.1" 2170 | resolved "https://registry.yarnpkg.com/rollup-plugin-url/-/rollup-plugin-url-3.0.1.tgz#6362fd31d7ce6d078dc5adffbd844f080de61bd7" 2171 | integrity sha512-fQVrxlW335snHfPqZ7a0JIkkYEIrLeFobpAxRMQnyv7xQeJOY1yOd84STIdCaLYPoGzwOq8waOdGipNH181kzg== 2172 | dependencies: 2173 | mime "^2.4.4" 2174 | rollup-pluginutils "^2.8.2" 2175 | 2176 | rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: 2177 | version "2.8.2" 2178 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" 2179 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== 2180 | dependencies: 2181 | estree-walker "^0.6.1" 2182 | 2183 | run-async@^2.4.0: 2184 | version "2.4.1" 2185 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" 2186 | integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== 2187 | 2188 | rxjs@^6.5.3: 2189 | version "6.5.5" 2190 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" 2191 | integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== 2192 | dependencies: 2193 | tslib "^1.9.0" 2194 | 2195 | safe-buffer@~5.1.1: 2196 | version "5.1.2" 2197 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2198 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2199 | 2200 | "safer-buffer@>= 2.1.2 < 3": 2201 | version "2.1.2" 2202 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2203 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2204 | 2205 | "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: 2206 | version "5.6.0" 2207 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 2208 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 2209 | 2210 | semver@7.0.0: 2211 | version "7.0.0" 2212 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 2213 | integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== 2214 | 2215 | semver@^7.2.1: 2216 | version "7.3.2" 2217 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 2218 | integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 2219 | 2220 | shebang-command@^2.0.0: 2221 | version "2.0.0" 2222 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2223 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2224 | dependencies: 2225 | shebang-regex "^3.0.0" 2226 | 2227 | shebang-regex@^3.0.0: 2228 | version "3.0.0" 2229 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2230 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2231 | 2232 | signal-exit@^3.0.2: 2233 | version "3.0.2" 2234 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2235 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2236 | 2237 | slice-ansi@^2.1.0: 2238 | version "2.1.0" 2239 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 2240 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 2241 | dependencies: 2242 | ansi-styles "^3.2.0" 2243 | astral-regex "^1.0.0" 2244 | is-fullwidth-code-point "^2.0.0" 2245 | 2246 | source-map@^0.5.0: 2247 | version "0.5.7" 2248 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2249 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2250 | 2251 | sourcemap-codec@^1.4.4: 2252 | version "1.4.4" 2253 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" 2254 | integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== 2255 | 2256 | spdx-correct@^3.0.0: 2257 | version "3.1.0" 2258 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 2259 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== 2260 | dependencies: 2261 | spdx-expression-parse "^3.0.0" 2262 | spdx-license-ids "^3.0.0" 2263 | 2264 | spdx-exceptions@^2.1.0: 2265 | version "2.2.0" 2266 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 2267 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== 2268 | 2269 | spdx-expression-parse@^3.0.0: 2270 | version "3.0.0" 2271 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 2272 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== 2273 | dependencies: 2274 | spdx-exceptions "^2.1.0" 2275 | spdx-license-ids "^3.0.0" 2276 | 2277 | spdx-license-ids@^3.0.0: 2278 | version "3.0.3" 2279 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" 2280 | integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== 2281 | 2282 | sprintf-js@~1.0.2: 2283 | version "1.0.3" 2284 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2285 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2286 | 2287 | string-width@^3.0.0: 2288 | version "3.1.0" 2289 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2290 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 2291 | dependencies: 2292 | emoji-regex "^7.0.1" 2293 | is-fullwidth-code-point "^2.0.0" 2294 | strip-ansi "^5.1.0" 2295 | 2296 | string-width@^4.1.0: 2297 | version "4.2.0" 2298 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 2299 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 2300 | dependencies: 2301 | emoji-regex "^8.0.0" 2302 | is-fullwidth-code-point "^3.0.0" 2303 | strip-ansi "^6.0.0" 2304 | 2305 | string.prototype.trimend@^1.0.0: 2306 | version "1.0.1" 2307 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" 2308 | integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== 2309 | dependencies: 2310 | define-properties "^1.1.3" 2311 | es-abstract "^1.17.5" 2312 | 2313 | string.prototype.trimleft@^2.1.1: 2314 | version "2.1.2" 2315 | resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" 2316 | integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== 2317 | dependencies: 2318 | define-properties "^1.1.3" 2319 | es-abstract "^1.17.5" 2320 | string.prototype.trimstart "^1.0.0" 2321 | 2322 | string.prototype.trimright@^2.1.1: 2323 | version "2.1.2" 2324 | resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" 2325 | integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== 2326 | dependencies: 2327 | define-properties "^1.1.3" 2328 | es-abstract "^1.17.5" 2329 | string.prototype.trimend "^1.0.0" 2330 | 2331 | string.prototype.trimstart@^1.0.0: 2332 | version "1.0.1" 2333 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" 2334 | integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== 2335 | dependencies: 2336 | define-properties "^1.1.3" 2337 | es-abstract "^1.17.5" 2338 | 2339 | strip-ansi@^5.1.0: 2340 | version "5.2.0" 2341 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 2342 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 2343 | dependencies: 2344 | ansi-regex "^4.1.0" 2345 | 2346 | strip-ansi@^6.0.0: 2347 | version "6.0.0" 2348 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 2349 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 2350 | dependencies: 2351 | ansi-regex "^5.0.0" 2352 | 2353 | strip-bom@^3.0.0: 2354 | version "3.0.0" 2355 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2356 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 2357 | 2358 | strip-json-comments@^3.1.0: 2359 | version "3.1.0" 2360 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" 2361 | integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== 2362 | 2363 | supports-color@^5.3.0: 2364 | version "5.5.0" 2365 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2366 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2367 | dependencies: 2368 | has-flag "^3.0.0" 2369 | 2370 | supports-color@^7.1.0: 2371 | version "7.1.0" 2372 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 2373 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 2374 | dependencies: 2375 | has-flag "^4.0.0" 2376 | 2377 | table@^5.2.3: 2378 | version "5.4.6" 2379 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 2380 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 2381 | dependencies: 2382 | ajv "^6.10.2" 2383 | lodash "^4.17.14" 2384 | slice-ansi "^2.1.0" 2385 | string-width "^3.0.0" 2386 | 2387 | text-table@^0.2.0: 2388 | version "0.2.0" 2389 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2390 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2391 | 2392 | through@^2.3.6: 2393 | version "2.3.8" 2394 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2395 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2396 | 2397 | tmp@^0.0.33: 2398 | version "0.0.33" 2399 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 2400 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 2401 | dependencies: 2402 | os-tmpdir "~1.0.2" 2403 | 2404 | to-fast-properties@^2.0.0: 2405 | version "2.0.0" 2406 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2407 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2408 | 2409 | tslib@^1.9.0: 2410 | version "1.9.3" 2411 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 2412 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 2413 | 2414 | type-check@^0.4.0, type-check@~0.4.0: 2415 | version "0.4.0" 2416 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2417 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2418 | dependencies: 2419 | prelude-ls "^1.2.1" 2420 | 2421 | type-fest@^0.11.0: 2422 | version "0.11.0" 2423 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 2424 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 2425 | 2426 | type-fest@^0.8.1: 2427 | version "0.8.1" 2428 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 2429 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 2430 | 2431 | unicode-canonical-property-names-ecmascript@^1.0.4: 2432 | version "1.0.4" 2433 | resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" 2434 | integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== 2435 | 2436 | unicode-match-property-ecmascript@^1.0.4: 2437 | version "1.0.4" 2438 | resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" 2439 | integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== 2440 | dependencies: 2441 | unicode-canonical-property-names-ecmascript "^1.0.4" 2442 | unicode-property-aliases-ecmascript "^1.0.4" 2443 | 2444 | unicode-match-property-value-ecmascript@^1.2.0: 2445 | version "1.2.0" 2446 | resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" 2447 | integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== 2448 | 2449 | unicode-property-aliases-ecmascript@^1.0.4: 2450 | version "1.0.4" 2451 | resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" 2452 | integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== 2453 | 2454 | uri-js@^4.2.2: 2455 | version "4.2.2" 2456 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 2457 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 2458 | dependencies: 2459 | punycode "^2.1.0" 2460 | 2461 | v8-compile-cache@^2.0.3: 2462 | version "2.1.0" 2463 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 2464 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 2465 | 2466 | validate-npm-package-license@^3.0.1: 2467 | version "3.0.4" 2468 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2469 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 2470 | dependencies: 2471 | spdx-correct "^3.0.0" 2472 | spdx-expression-parse "^3.0.0" 2473 | 2474 | which@^2.0.1: 2475 | version "2.0.2" 2476 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2477 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2478 | dependencies: 2479 | isexe "^2.0.0" 2480 | 2481 | word-wrap@^1.2.3: 2482 | version "1.2.3" 2483 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 2484 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 2485 | 2486 | wrappy@1: 2487 | version "1.0.2" 2488 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2489 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2490 | 2491 | write@1.0.3: 2492 | version "1.0.3" 2493 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 2494 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 2495 | dependencies: 2496 | mkdirp "^0.5.1" 2497 | --------------------------------------------------------------------------------