├── .gitignore ├── .npmignore ├── .prettierrc.js ├── LICENSE ├── README.md ├── index.tsx ├── package.json ├── screenshot └── result.png ├── src ├── index.d.ts └── index.js ├── tsconfig.json ├── tslint.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | index.tsx 2 | node_modules 3 | .git 4 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | printWidth: 80, 3 | tabWidth: 4, 4 | singleQuote: false, 5 | bracketSpacing: true, 6 | semi: true, 7 | useTabs: false, 8 | arrowParens: "avoid", 9 | endOfLine: "auto", 10 | jsxBracketSameLine: false 11 | }; 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Hyungu Kang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | RNWrappedText 2 | 3 | NPM version 4 | NPM downloads 5 | 6 | # react-native-wrapped-text 7 | react native word wrap text component for support korean 8 | 9 | 한글 개행 PR이 머지되었습니다. 10 | > [facebook/react-native#31272](https://github.com/facebook/react-native/pull/31272) 11 | 12 | ## Motivation 13 | 14 | iOS 에서는 한글 어절 단위의 개행을 지원하지 않습니다.
15 | 이를 React Native 에서 해결하기 위한 컴포넌트입니다.
16 | 아래의 스크린샷과 Example Code 를 확인하세요! 17 | 18 | ![img](screenshot/result.png) 19 | 20 | ## Installation 21 | 22 | ```sh 23 | npm install react-native-wrapped-text 24 | ``` 25 | 26 | ```sh 27 | yarn add react-native-wrapped-text 28 | ``` 29 | 30 | ## Usage 31 | 32 | ```jsx 33 | import WrappedText from "react-native-wrapped-text"; 34 | 35 | 36 | 어절(단어) 단위로 개행이 되기를 원하는 한글 텍스트를 입력하세요 37 | ; 38 | ``` 39 | 40 | ## Change Logs 41 | 42 | ### 1.2.0 43 | 44 | - Support Custom Text Component as a prop 45 | 46 | ## Support Props 47 | 48 | | Prop | Type | Default | Description | 49 | | :--------------- | :-------- | :------ | ------------------------- | 50 | | debug? | boolean | - | debugging mode | 51 | | containerStyle? | ViewStyle | - | component container style | 52 | | rowWrapperStyle? | ViewStyle | - | row text wrapper style | 53 | | textStyle? | TextStyle | - | text style | 54 | | TextComponent? | Component | - | custom text component | 55 | 56 | ## Example 57 | 58 | ```jsx 59 | import React from "react"; 60 | import { SafeAreaView, View, Text } from "react-native"; 61 | import WrappedText from "react-native-wrapped-text"; 62 | 63 | const text = 64 | "나의 별들을 이 마디씩 별 이웃 무엇인지 듯합니다. 슬퍼하는 애기 노새, 이네들은 동경과 당신은 하나 거외다. 아직 소녀들의 가득 이름자 하나에 북간도에 별들을 같이 듯합니다. 못 나의 위에도 듯합니다. 내린 프랑시스 잠, 사람들의 라이너 하나에 이런 쓸쓸함과 있습니다. 이름과 벌레는 풀이 별 마리아 잔디가 거외다. 토끼, 내린 하나 다하지 없이 나는 봅니다."; 65 | 66 | const App = () => { 67 | return ( 68 | 77 | 78 | Text 79 | 80 | {text} 81 | 82 | 83 | 84 | 85 | 86 | WrappedText 87 | 88 | 89 | 90 | {text} 91 | 92 | 93 | 94 | 95 | ); 96 | }; 97 | 98 | export default App; 99 | ``` 100 | -------------------------------------------------------------------------------- /index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { 3 | Text, 4 | View, 5 | StyleProp, 6 | ViewStyle, 7 | StyleSheet, 8 | TextStyle, 9 | TextProps 10 | } from "react-native"; 11 | 12 | interface IProps { 13 | debug?: boolean; 14 | containerStyle?: StyleProp; 15 | rowWrapperStyle?: StyleProp; 16 | textStyle?: StyleProp; 17 | TextComponent?: typeof Text | React.FC; 18 | } 19 | 20 | function getDebugStyle(debug?: boolean) { 21 | return debug ? styles.debugStyle : {}; 22 | } 23 | 24 | function getWordSpace(textLen: number, currentIndex: number) { 25 | return currentIndex !== textLen - 1 ? " " : ""; 26 | } 27 | 28 | function getTextMatrix(text: string) { 29 | return text.split("\n").map(row => row.split(" ")); 30 | } 31 | 32 | //@ts-ignore 33 | const WrappedText: React.FC = ({ 34 | debug, 35 | containerStyle, 36 | rowWrapperStyle, 37 | textStyle, 38 | children, 39 | TextComponent 40 | }) => { 41 | if (!children) { 42 | return null; 43 | } 44 | 45 | const TextRenderer = React.useMemo(() => TextComponent || Text, [ 46 | TextComponent 47 | ]); 48 | 49 | const renderWrappedText = React.useCallback( 50 | (text: string) => { 51 | const textMatrix = getTextMatrix(text); 52 | 53 | return ( 54 | 61 | {textMatrix.map((rowText, rowIndex) => { 62 | return ( 63 | 71 | {rowText.map( 72 | (colText, colIndex) => 73 | (colText !== "" || 74 | (rowText.length === 1 && 75 | colText === "")) && ( 76 | 83 | {colText + 84 | getWordSpace( 85 | rowText.length, 86 | colIndex 87 | )} 88 | 89 | ) 90 | )} 91 | 92 | ); 93 | })} 94 | 95 | ); 96 | }, 97 | [debug, containerStyle, rowWrapperStyle, textStyle, TextComponent] 98 | ); 99 | 100 | if (typeof children === "string") { 101 | return renderWrappedText(children); 102 | } 103 | 104 | if (Array.isArray(children)) { 105 | return children.map(child => { 106 | if (typeof child === "string") { 107 | return renderWrappedText(child); 108 | } else { 109 | return child; 110 | } 111 | }); 112 | } 113 | 114 | return children; 115 | }; 116 | 117 | const styles = StyleSheet.create({ 118 | container: { 119 | alignItems: "center", 120 | alignSelf: "center", 121 | width: "100%" 122 | }, 123 | rowWrapper: { 124 | flexDirection: "row", 125 | flexWrap: "wrap" 126 | }, 127 | debugStyle: { 128 | borderWidth: 0.5, 129 | borderColor: "rgba(255,60,60,0.7)" 130 | } 131 | }); 132 | 133 | export default WrappedText; 134 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-wrapped-text", 3 | "version": "1.2.2", 4 | "description": "react native word wrap text component for support korean", 5 | "main": "./src/index.js", 6 | "types": "./src/index.d.ts", 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://github.com/Bang9/react-native-wrapped-text" 10 | }, 11 | "scripts": { 12 | "build": "tsc", 13 | "deploy": "yarn fix && tsc && npm publish", 14 | "fix": "yarn fix:tslint && yarn fix:prettier", 15 | "fix:tslint": "tslint --project tsconfig.json --fix", 16 | "fix:prettier": "prettier --write \"**/*.{ts,tsx,js}\"", 17 | "lint": "yarn lint:tslint && yarn lint:prettier", 18 | "lint:tslint": "tslint --project tsconfig.json", 19 | "lint:prettier": "prettier --check \"**/*.{ts,tsx,js}\"" 20 | }, 21 | "husky": { 22 | "hooks": { 23 | "pre-commit": "yarn fix:tslint && pretty-quick --staged" 24 | } 25 | }, 26 | "author": "bang9 (https://github.com/bang9)", 27 | "license": "MIT", 28 | "peerDependencies": { 29 | "react": "*", 30 | "react-native": ">=0.54" 31 | }, 32 | "devDependencies": { 33 | "@types/react": "^16.9.11", 34 | "@types/react-native": "^0.60.22", 35 | "husky": "^3.1.0", 36 | "prettier": "^1.19.1", 37 | "pretty-quick": "^2.0.1", 38 | "tslint": "^5.20.1", 39 | "tslint-config-prettier": "^1.18.0", 40 | "typescript": "^3.7.2" 41 | }, 42 | "keywords": [ 43 | "react", 44 | "react-native", 45 | "word-wrap", 46 | "line-break", 47 | "korean" 48 | ], 49 | "dependencies": {} 50 | } 51 | -------------------------------------------------------------------------------- /screenshot/result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bang9/react-native-wrapped-text/35f86e468aa067783a2bdeeacaa2436b3e210cb9/screenshot/result.png -------------------------------------------------------------------------------- /src/index.d.ts: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Text, StyleProp, ViewStyle, TextStyle, TextProps } from "react-native"; 3 | interface IProps { 4 | debug?: boolean; 5 | containerStyle?: StyleProp; 6 | rowWrapperStyle?: StyleProp; 7 | textStyle?: StyleProp; 8 | TextComponent?: typeof Text | React.FC; 9 | } 10 | declare const WrappedText: React.FC; 11 | export default WrappedText; 12 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Text, View, StyleSheet } from "react-native"; 3 | function getDebugStyle(debug) { 4 | return debug ? styles.debugStyle : {}; 5 | } 6 | function getWordSpace(textLen, currentIndex) { 7 | return currentIndex !== textLen - 1 ? " " : ""; 8 | } 9 | function getTextMatrix(text) { 10 | return text.split("\n").map(function(row) { 11 | return row.split(" "); 12 | }); 13 | } 14 | //@ts-ignore 15 | var WrappedText = function(_a) { 16 | var debug = _a.debug, 17 | containerStyle = _a.containerStyle, 18 | rowWrapperStyle = _a.rowWrapperStyle, 19 | textStyle = _a.textStyle, 20 | children = _a.children, 21 | TextComponent = _a.TextComponent; 22 | if (!children) { 23 | return null; 24 | } 25 | var TextRenderer = React.useMemo( 26 | function() { 27 | return TextComponent || Text; 28 | }, 29 | [TextComponent] 30 | ); 31 | var renderWrappedText = React.useCallback(function(text) { 32 | var textMatrix = getTextMatrix(text); 33 | return ( 34 | 37 | {textMatrix.map(function(rowText, rowIndex) { 38 | return ( 39 | 47 | {rowText.map(function(colText, colIndex) { 48 | return ( 49 | (colText !== "" || 50 | (rowText.length === 1 && 51 | colText === "")) && ( 52 | 59 | {colText + 60 | getWordSpace( 61 | rowText.length, 62 | colIndex 63 | )} 64 | 65 | ) 66 | ); 67 | })} 68 | 69 | ); 70 | })} 71 | 72 | ); 73 | }, []); 74 | if (typeof children === "string") { 75 | return renderWrappedText(children); 76 | } 77 | if (Array.isArray(children)) { 78 | return children.map(function(child) { 79 | if (typeof child === "string") { 80 | return renderWrappedText(child); 81 | } else { 82 | return child; 83 | } 84 | }); 85 | } 86 | return children; 87 | }; 88 | var styles = StyleSheet.create({ 89 | container: { 90 | alignItems: "center", 91 | alignSelf: "center", 92 | width: "100%" 93 | }, 94 | rowWrapper: { 95 | flexDirection: "row", 96 | flexWrap: "wrap" 97 | }, 98 | debugStyle: { 99 | borderWidth: 0.5, 100 | borderColor: "rgba(255,60,60,0.7)" 101 | } 102 | }); 103 | export default WrappedText; 104 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["es2017"], 4 | "jsx": "react-native", 5 | "noResolve": false, 6 | "noImplicitAny": false, 7 | "removeComments": false, 8 | "sourceMap": false, 9 | "module": "es2015", 10 | "moduleResolution": "node", 11 | "outDir": "src", 12 | "target": "es5", 13 | "skipLibCheck": true, 14 | "allowSyntheticDefaultImports": true, 15 | "declaration": true 16 | }, 17 | "compileOnSave": true, 18 | "exclude": ["node_modules"], 19 | "include": ["./index.tsx"] 20 | } 21 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["tslint-config-prettier"], 3 | "rules": { 4 | "adjacent-overload-signatures": true, 5 | "ban-comma-operator": true, 6 | "no-namespace": true, 7 | "no-parameter-reassignment": true, 8 | "no-reference": true, 9 | "no-unnecessary-type-assertion": true, 10 | "label-position": true, 11 | "no-conditional-assignment": true, 12 | "no-construct": true, 13 | "no-duplicate-super": true, 14 | "no-duplicate-switch-case": true, 15 | "no-duplicate-variable": [true, "check-parameters"], 16 | "no-shadowed-variable": true, 17 | "no-empty": [true, "allow-empty-catch", "allow-empty-functions"], 18 | "no-floating-promises": false, 19 | "no-implicit-dependencies": false, 20 | "no-invalid-this": true, 21 | "no-string-throw": true, 22 | "no-unsafe-finally": true, 23 | "no-void-expression": false, 24 | "no-duplicate-imports": true, 25 | "no-empty-interface": { "severity": "none" }, 26 | "no-var-keyword": { "severity": "error" }, 27 | "triple-equals": { "severity": "warning" }, 28 | "deprecation": { "severity": "warning" }, 29 | "prefer-const": { "severity": "error" }, 30 | "interface-name": { "severity": "warning" } 31 | }, 32 | "defaultSeverity": "error" 33 | } 34 | -------------------------------------------------------------------------------- /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.5.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" 8 | integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/highlight@^7.0.0": 13 | version "7.5.0" 14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" 15 | integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== 16 | dependencies: 17 | chalk "^2.0.0" 18 | esutils "^2.0.2" 19 | js-tokens "^4.0.0" 20 | 21 | "@types/minimatch@^3.0.3": 22 | version "3.0.3" 23 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" 24 | integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== 25 | 26 | "@types/normalize-package-data@^2.4.0": 27 | version "2.4.0" 28 | resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" 29 | integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== 30 | 31 | "@types/prop-types@*": 32 | version "15.7.3" 33 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" 34 | integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== 35 | 36 | "@types/react-native@^0.60.22": 37 | version "0.60.23" 38 | resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.60.23.tgz#9270f91bbff822a1571feece56cd260f0a1b2831" 39 | integrity sha512-hLRCWKNni/e6KEXSNtexXCg0u7CnHla6G6yeZYTMOlyG/bLE41GeLxP4dXJw1hyDsXJYN00Wc3Apr2XQ2TW1LA== 40 | dependencies: 41 | "@types/prop-types" "*" 42 | "@types/react" "*" 43 | 44 | "@types/react@*", "@types/react@^16.9.11": 45 | version "16.9.13" 46 | resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.13.tgz#b3ea5dd443f4a680599e2abba8cc66f5e1ce0059" 47 | integrity sha512-LikzRslbiufJYHyzbHSW0GrAiff8QYLMBFeZmSxzCYGXKxi8m/1PHX+rsVOwhr7mJNq+VIu2Dhf7U6mjFERK6w== 48 | dependencies: 49 | "@types/prop-types" "*" 50 | csstype "^2.2.0" 51 | 52 | ansi-styles@^3.2.1: 53 | version "3.2.1" 54 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 55 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 56 | dependencies: 57 | color-convert "^1.9.0" 58 | 59 | argparse@^1.0.7: 60 | version "1.0.10" 61 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 62 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 63 | dependencies: 64 | sprintf-js "~1.0.2" 65 | 66 | array-differ@^3.0.0: 67 | version "3.0.0" 68 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" 69 | integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== 70 | 71 | array-union@^2.1.0: 72 | version "2.1.0" 73 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 74 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 75 | 76 | arrify@^2.0.1: 77 | version "2.0.1" 78 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" 79 | integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== 80 | 81 | balanced-match@^1.0.0: 82 | version "1.0.0" 83 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 84 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 85 | 86 | brace-expansion@^1.1.7: 87 | version "1.1.11" 88 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 89 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 90 | dependencies: 91 | balanced-match "^1.0.0" 92 | concat-map "0.0.1" 93 | 94 | builtin-modules@^1.1.1: 95 | version "1.1.1" 96 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 97 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 98 | 99 | caller-callsite@^2.0.0: 100 | version "2.0.0" 101 | resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" 102 | integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= 103 | dependencies: 104 | callsites "^2.0.0" 105 | 106 | caller-path@^2.0.0: 107 | version "2.0.0" 108 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" 109 | integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= 110 | dependencies: 111 | caller-callsite "^2.0.0" 112 | 113 | callsites@^2.0.0: 114 | version "2.0.0" 115 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" 116 | integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= 117 | 118 | chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.2: 119 | version "2.4.2" 120 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 121 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 122 | dependencies: 123 | ansi-styles "^3.2.1" 124 | escape-string-regexp "^1.0.5" 125 | supports-color "^5.3.0" 126 | 127 | ci-info@^2.0.0: 128 | version "2.0.0" 129 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 130 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 131 | 132 | color-convert@^1.9.0: 133 | version "1.9.3" 134 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 135 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 136 | dependencies: 137 | color-name "1.1.3" 138 | 139 | color-name@1.1.3: 140 | version "1.1.3" 141 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 142 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 143 | 144 | commander@^2.12.1: 145 | version "2.20.3" 146 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 147 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 148 | 149 | concat-map@0.0.1: 150 | version "0.0.1" 151 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 152 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 153 | 154 | cosmiconfig@^5.2.1: 155 | version "5.2.1" 156 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" 157 | integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== 158 | dependencies: 159 | import-fresh "^2.0.0" 160 | is-directory "^0.3.1" 161 | js-yaml "^3.13.1" 162 | parse-json "^4.0.0" 163 | 164 | cross-spawn@^6.0.0: 165 | version "6.0.5" 166 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 167 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 168 | dependencies: 169 | nice-try "^1.0.4" 170 | path-key "^2.0.1" 171 | semver "^5.5.0" 172 | shebang-command "^1.2.0" 173 | which "^1.2.9" 174 | 175 | cross-spawn@^7.0.0: 176 | version "7.0.1" 177 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" 178 | integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== 179 | dependencies: 180 | path-key "^3.1.0" 181 | shebang-command "^2.0.0" 182 | which "^2.0.1" 183 | 184 | csstype@^2.2.0: 185 | version "2.6.7" 186 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5" 187 | integrity sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ== 188 | 189 | diff@^4.0.1: 190 | version "4.0.1" 191 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" 192 | integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== 193 | 194 | end-of-stream@^1.1.0: 195 | version "1.4.4" 196 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 197 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 198 | dependencies: 199 | once "^1.4.0" 200 | 201 | error-ex@^1.3.1: 202 | version "1.3.2" 203 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 204 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 205 | dependencies: 206 | is-arrayish "^0.2.1" 207 | 208 | escape-string-regexp@^1.0.5: 209 | version "1.0.5" 210 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 211 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 212 | 213 | esprima@^4.0.0: 214 | version "4.0.1" 215 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 216 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 217 | 218 | esutils@^2.0.2: 219 | version "2.0.3" 220 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 221 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 222 | 223 | execa@^1.0.0: 224 | version "1.0.0" 225 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" 226 | integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== 227 | dependencies: 228 | cross-spawn "^6.0.0" 229 | get-stream "^4.0.0" 230 | is-stream "^1.1.0" 231 | npm-run-path "^2.0.0" 232 | p-finally "^1.0.0" 233 | signal-exit "^3.0.0" 234 | strip-eof "^1.0.0" 235 | 236 | execa@^2.1.0: 237 | version "2.1.0" 238 | resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" 239 | integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== 240 | dependencies: 241 | cross-spawn "^7.0.0" 242 | get-stream "^5.0.0" 243 | is-stream "^2.0.0" 244 | merge-stream "^2.0.0" 245 | npm-run-path "^3.0.0" 246 | onetime "^5.1.0" 247 | p-finally "^2.0.0" 248 | signal-exit "^3.0.2" 249 | strip-final-newline "^2.0.0" 250 | 251 | find-up@^4.0.0, find-up@^4.1.0: 252 | version "4.1.0" 253 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 254 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 255 | dependencies: 256 | locate-path "^5.0.0" 257 | path-exists "^4.0.0" 258 | 259 | fs.realpath@^1.0.0: 260 | version "1.0.0" 261 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 262 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 263 | 264 | get-stdin@^7.0.0: 265 | version "7.0.0" 266 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" 267 | integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== 268 | 269 | get-stream@^4.0.0: 270 | version "4.1.0" 271 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 272 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 273 | dependencies: 274 | pump "^3.0.0" 275 | 276 | get-stream@^5.0.0: 277 | version "5.1.0" 278 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" 279 | integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== 280 | dependencies: 281 | pump "^3.0.0" 282 | 283 | glob@^7.1.1: 284 | version "7.1.6" 285 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 286 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 287 | dependencies: 288 | fs.realpath "^1.0.0" 289 | inflight "^1.0.4" 290 | inherits "2" 291 | minimatch "^3.0.4" 292 | once "^1.3.0" 293 | path-is-absolute "^1.0.0" 294 | 295 | has-flag@^3.0.0: 296 | version "3.0.0" 297 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 298 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 299 | 300 | hosted-git-info@^2.1.4: 301 | version "2.8.5" 302 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" 303 | integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== 304 | 305 | husky@^3.1.0: 306 | version "3.1.0" 307 | resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" 308 | integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ== 309 | dependencies: 310 | chalk "^2.4.2" 311 | ci-info "^2.0.0" 312 | cosmiconfig "^5.2.1" 313 | execa "^1.0.0" 314 | get-stdin "^7.0.0" 315 | opencollective-postinstall "^2.0.2" 316 | pkg-dir "^4.2.0" 317 | please-upgrade-node "^3.2.0" 318 | read-pkg "^5.2.0" 319 | run-node "^1.0.0" 320 | slash "^3.0.0" 321 | 322 | ignore@^5.1.4: 323 | version "5.1.4" 324 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" 325 | integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== 326 | 327 | import-fresh@^2.0.0: 328 | version "2.0.0" 329 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" 330 | integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= 331 | dependencies: 332 | caller-path "^2.0.0" 333 | resolve-from "^3.0.0" 334 | 335 | inflight@^1.0.4: 336 | version "1.0.6" 337 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 338 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 339 | dependencies: 340 | once "^1.3.0" 341 | wrappy "1" 342 | 343 | inherits@2: 344 | version "2.0.4" 345 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 346 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 347 | 348 | is-arrayish@^0.2.1: 349 | version "0.2.1" 350 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 351 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 352 | 353 | is-directory@^0.3.1: 354 | version "0.3.1" 355 | resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" 356 | integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= 357 | 358 | is-stream@^1.1.0: 359 | version "1.1.0" 360 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 361 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 362 | 363 | is-stream@^2.0.0: 364 | version "2.0.0" 365 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 366 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 367 | 368 | isexe@^2.0.0: 369 | version "2.0.0" 370 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 371 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 372 | 373 | js-tokens@^4.0.0: 374 | version "4.0.0" 375 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 376 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 377 | 378 | js-yaml@^3.13.1: 379 | version "3.13.1" 380 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 381 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 382 | dependencies: 383 | argparse "^1.0.7" 384 | esprima "^4.0.0" 385 | 386 | json-parse-better-errors@^1.0.1: 387 | version "1.0.2" 388 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 389 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 390 | 391 | lines-and-columns@^1.1.6: 392 | version "1.1.6" 393 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 394 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 395 | 396 | locate-path@^5.0.0: 397 | version "5.0.0" 398 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 399 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 400 | dependencies: 401 | p-locate "^4.1.0" 402 | 403 | merge-stream@^2.0.0: 404 | version "2.0.0" 405 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 406 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 407 | 408 | mimic-fn@^2.1.0: 409 | version "2.1.0" 410 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 411 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 412 | 413 | minimatch@^3.0.4: 414 | version "3.0.4" 415 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 416 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 417 | dependencies: 418 | brace-expansion "^1.1.7" 419 | 420 | minimist@0.0.8: 421 | version "0.0.8" 422 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 423 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 424 | 425 | mkdirp@^0.5.1: 426 | version "0.5.1" 427 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 428 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 429 | dependencies: 430 | minimist "0.0.8" 431 | 432 | mri@^1.1.4: 433 | version "1.1.4" 434 | resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" 435 | integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== 436 | 437 | multimatch@^4.0.0: 438 | version "4.0.0" 439 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" 440 | integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== 441 | dependencies: 442 | "@types/minimatch" "^3.0.3" 443 | array-differ "^3.0.0" 444 | array-union "^2.1.0" 445 | arrify "^2.0.1" 446 | minimatch "^3.0.4" 447 | 448 | nice-try@^1.0.4: 449 | version "1.0.5" 450 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 451 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 452 | 453 | normalize-package-data@^2.5.0: 454 | version "2.5.0" 455 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 456 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 457 | dependencies: 458 | hosted-git-info "^2.1.4" 459 | resolve "^1.10.0" 460 | semver "2 || 3 || 4 || 5" 461 | validate-npm-package-license "^3.0.1" 462 | 463 | npm-run-path@^2.0.0: 464 | version "2.0.2" 465 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 466 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 467 | dependencies: 468 | path-key "^2.0.0" 469 | 470 | npm-run-path@^3.0.0: 471 | version "3.1.0" 472 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" 473 | integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== 474 | dependencies: 475 | path-key "^3.0.0" 476 | 477 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 478 | version "1.4.0" 479 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 480 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 481 | dependencies: 482 | wrappy "1" 483 | 484 | onetime@^5.1.0: 485 | version "5.1.0" 486 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 487 | integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== 488 | dependencies: 489 | mimic-fn "^2.1.0" 490 | 491 | opencollective-postinstall@^2.0.2: 492 | version "2.0.2" 493 | resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" 494 | integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== 495 | 496 | p-finally@^1.0.0: 497 | version "1.0.0" 498 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 499 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 500 | 501 | p-finally@^2.0.0: 502 | version "2.0.1" 503 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" 504 | integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== 505 | 506 | p-limit@^2.2.0: 507 | version "2.2.1" 508 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" 509 | integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== 510 | dependencies: 511 | p-try "^2.0.0" 512 | 513 | p-locate@^4.1.0: 514 | version "4.1.0" 515 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 516 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 517 | dependencies: 518 | p-limit "^2.2.0" 519 | 520 | p-try@^2.0.0: 521 | version "2.2.0" 522 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 523 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 524 | 525 | parse-json@^4.0.0: 526 | version "4.0.0" 527 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 528 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 529 | dependencies: 530 | error-ex "^1.3.1" 531 | json-parse-better-errors "^1.0.1" 532 | 533 | parse-json@^5.0.0: 534 | version "5.0.0" 535 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" 536 | integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== 537 | dependencies: 538 | "@babel/code-frame" "^7.0.0" 539 | error-ex "^1.3.1" 540 | json-parse-better-errors "^1.0.1" 541 | lines-and-columns "^1.1.6" 542 | 543 | path-exists@^4.0.0: 544 | version "4.0.0" 545 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 546 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 547 | 548 | path-is-absolute@^1.0.0: 549 | version "1.0.1" 550 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 551 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 552 | 553 | path-key@^2.0.0, path-key@^2.0.1: 554 | version "2.0.1" 555 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 556 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 557 | 558 | path-key@^3.0.0, path-key@^3.1.0: 559 | version "3.1.1" 560 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 561 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 562 | 563 | path-parse@^1.0.6: 564 | version "1.0.6" 565 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 566 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 567 | 568 | pkg-dir@^4.2.0: 569 | version "4.2.0" 570 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 571 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 572 | dependencies: 573 | find-up "^4.0.0" 574 | 575 | please-upgrade-node@^3.2.0: 576 | version "3.2.0" 577 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" 578 | integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== 579 | dependencies: 580 | semver-compare "^1.0.0" 581 | 582 | prettier@^1.19.1: 583 | version "1.19.1" 584 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" 585 | integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== 586 | 587 | pretty-quick@^2.0.1: 588 | version "2.0.1" 589 | resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-2.0.1.tgz#417ee605ade98ecc686e72f63b5d28a2c35b43e9" 590 | integrity sha512-y7bJt77XadjUr+P1uKqZxFWLddvj3SKY6EU4BuQtMxmmEFSMpbN132pUWdSG1g1mtUfO0noBvn7wBf0BVeomHg== 591 | dependencies: 592 | chalk "^2.4.2" 593 | execa "^2.1.0" 594 | find-up "^4.1.0" 595 | ignore "^5.1.4" 596 | mri "^1.1.4" 597 | multimatch "^4.0.0" 598 | 599 | pump@^3.0.0: 600 | version "3.0.0" 601 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 602 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 603 | dependencies: 604 | end-of-stream "^1.1.0" 605 | once "^1.3.1" 606 | 607 | read-pkg@^5.2.0: 608 | version "5.2.0" 609 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" 610 | integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== 611 | dependencies: 612 | "@types/normalize-package-data" "^2.4.0" 613 | normalize-package-data "^2.5.0" 614 | parse-json "^5.0.0" 615 | type-fest "^0.6.0" 616 | 617 | resolve-from@^3.0.0: 618 | version "3.0.0" 619 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" 620 | integrity sha1-six699nWiBvItuZTM17rywoYh0g= 621 | 622 | resolve@^1.10.0, resolve@^1.3.2: 623 | version "1.13.1" 624 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" 625 | integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== 626 | dependencies: 627 | path-parse "^1.0.6" 628 | 629 | run-node@^1.0.0: 630 | version "1.0.0" 631 | resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" 632 | integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== 633 | 634 | semver-compare@^1.0.0: 635 | version "1.0.0" 636 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 637 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 638 | 639 | "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: 640 | version "5.7.1" 641 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 642 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 643 | 644 | shebang-command@^1.2.0: 645 | version "1.2.0" 646 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 647 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 648 | dependencies: 649 | shebang-regex "^1.0.0" 650 | 651 | shebang-command@^2.0.0: 652 | version "2.0.0" 653 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 654 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 655 | dependencies: 656 | shebang-regex "^3.0.0" 657 | 658 | shebang-regex@^1.0.0: 659 | version "1.0.0" 660 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 661 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 662 | 663 | shebang-regex@^3.0.0: 664 | version "3.0.0" 665 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 666 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 667 | 668 | signal-exit@^3.0.0, signal-exit@^3.0.2: 669 | version "3.0.2" 670 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 671 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 672 | 673 | slash@^3.0.0: 674 | version "3.0.0" 675 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 676 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 677 | 678 | spdx-correct@^3.0.0: 679 | version "3.1.0" 680 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 681 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== 682 | dependencies: 683 | spdx-expression-parse "^3.0.0" 684 | spdx-license-ids "^3.0.0" 685 | 686 | spdx-exceptions@^2.1.0: 687 | version "2.2.0" 688 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 689 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== 690 | 691 | spdx-expression-parse@^3.0.0: 692 | version "3.0.0" 693 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 694 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== 695 | dependencies: 696 | spdx-exceptions "^2.1.0" 697 | spdx-license-ids "^3.0.0" 698 | 699 | spdx-license-ids@^3.0.0: 700 | version "3.0.5" 701 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 702 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 703 | 704 | sprintf-js@~1.0.2: 705 | version "1.0.3" 706 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 707 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 708 | 709 | strip-eof@^1.0.0: 710 | version "1.0.0" 711 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 712 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 713 | 714 | strip-final-newline@^2.0.0: 715 | version "2.0.0" 716 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 717 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 718 | 719 | supports-color@^5.3.0: 720 | version "5.5.0" 721 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 722 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 723 | dependencies: 724 | has-flag "^3.0.0" 725 | 726 | tslib@^1.8.0, tslib@^1.8.1: 727 | version "1.10.0" 728 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" 729 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== 730 | 731 | tslint-config-prettier@^1.18.0: 732 | version "1.18.0" 733 | resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" 734 | integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== 735 | 736 | tslint@^5.20.1: 737 | version "5.20.1" 738 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" 739 | integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== 740 | dependencies: 741 | "@babel/code-frame" "^7.0.0" 742 | builtin-modules "^1.1.1" 743 | chalk "^2.3.0" 744 | commander "^2.12.1" 745 | diff "^4.0.1" 746 | glob "^7.1.1" 747 | js-yaml "^3.13.1" 748 | minimatch "^3.0.4" 749 | mkdirp "^0.5.1" 750 | resolve "^1.3.2" 751 | semver "^5.3.0" 752 | tslib "^1.8.0" 753 | tsutils "^2.29.0" 754 | 755 | tsutils@^2.29.0: 756 | version "2.29.0" 757 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 758 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 759 | dependencies: 760 | tslib "^1.8.1" 761 | 762 | type-fest@^0.6.0: 763 | version "0.6.0" 764 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" 765 | integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== 766 | 767 | typescript@^3.7.2: 768 | version "3.7.2" 769 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.2.tgz#27e489b95fa5909445e9fef5ee48d81697ad18fb" 770 | integrity sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ== 771 | 772 | validate-npm-package-license@^3.0.1: 773 | version "3.0.4" 774 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 775 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 776 | dependencies: 777 | spdx-correct "^3.0.0" 778 | spdx-expression-parse "^3.0.0" 779 | 780 | which@^1.2.9: 781 | version "1.3.1" 782 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 783 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 784 | dependencies: 785 | isexe "^2.0.0" 786 | 787 | which@^2.0.1: 788 | version "2.0.2" 789 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 790 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 791 | dependencies: 792 | isexe "^2.0.0" 793 | 794 | wrappy@1: 795 | version "1.0.2" 796 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 797 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 798 | --------------------------------------------------------------------------------