├── .gitattributes ├── .github └── workflows │ └── release.yml ├── .gitignore ├── .prettierrc.js ├── README.MD ├── lib ├── index.d.ts └── index.js ├── package-lock.json ├── package.json ├── src └── index.tsx ├── tsconfig.json └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Node CI 2 | on: 3 | push: 4 | branches: 5 | - master 6 | jobs: 7 | release: 8 | name: Build, test, and release 9 | runs-on: ubuntu-18.04 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v2.3.4 13 | - name: Setup Node.js 14 | uses: actions/setup-node@v2.4.0 15 | with: 16 | node-version: 12 17 | - name: Install dependencies 18 | run: npm ci 19 | - name: Build TypeScript 20 | run: npm run build 21 | - name: Release 22 | env: 23 | GITHUB_TOKEN: ${{ secrets.BLENDTALE_GITHUB_BOT }} 24 | NPM_TOKEN: ${{ secrets.NPM_ROHIT }} 25 | run: npx semantic-release -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | 25 | # Android/IntelliJ 26 | # 27 | build/ 28 | .idea 29 | .gradle 30 | local.properties 31 | *.iml 32 | 33 | # node.js 34 | # 35 | node_modules/ 36 | npm-debug.log 37 | yarn-error.log 38 | 39 | # BUCK 40 | buck-out/ 41 | \.buckd/ 42 | *.keystore 43 | 44 | # fastlane 45 | # 46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 47 | # screenshots whenever they are needed. 48 | # For more information about the recommended setup visit: 49 | # https://docs.fastlane.tools/best-practices/source-control/ 50 | 51 | */fastlane/report.xml 52 | */fastlane/Preview.html 53 | */fastlane/screenshots 54 | 55 | # Bundle artifact 56 | *.jsbundle 57 | 58 | # CocoaPods 59 | /ios/Pods/ 60 | 61 | # iOS and Android 62 | ios/ 63 | android/ -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | printWidth: 100, 3 | tabWidth: 2, 4 | useTabs: false, 5 | semi: false, 6 | singleQuote: true, 7 | trailingComma: "none", 8 | bracketSpacing: true, 9 | endOfLine: "auto", 10 | arrowParens: "always", 11 | }; -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | ## React-Native-Next-Input 2 | | | Status | 3 | | - | - | 4 | | Dependencies | [![Dependencies](https://img.shields.io/david/blendtale/react-native-next-input)](https://david-dm.org/blendtale/react-native-next-input) [![Dev dependencies](https://img.shields.io/david/dev/blendtale/react-native-next-input)](https://david-dm.org/blendtale/react-native-next-input) [![Peer dependencies](https://img.shields.io/david/peer/blendtale/react-native-next-input)](https://david-dm.org/blendtale/rn-formly)| 5 | | Package | [![npm package version](https://img.shields.io/npm/v/react-native-next-input)](https://www.npmjs.com/package/react-native-next-input) [![npm downloads](https://img.shields.io/npm/dt/react-native-next-input)](https://www.npmjs.com/package/react-native-next-input) 6 | 7 | 8 | ### Description 9 | 10 | React-native component which will automatically change focus to next input element making it great to use when making OTP screens, pin based login screens or even date of birth component 11 | 12 | **Note:** If you like the repo, please give it a star on github 13 | 14 | 15 | 16 | 17 | 18 | ### Installation 19 | 20 | ``` 21 | npm install react-native-next-input --save 22 | ``` 23 | 24 | ### Usage 25 | 26 | Import react-native-next input 27 | 28 | ``` 29 | import NextTextInput from 'react-native-next-input' 30 | ``` 31 | and then use it like this 32 | 33 | ``` 34 | 40 | ``` 41 | where we are capturing the input from the child component in `inputFromChildComponent` like this 42 | 43 | ``` 44 | inputFromChildComponent = (combinedValueArray, currentValue, refForTheCurrentValue) => { 45 | console.log(combinedValueArray, currentValue, refForTheCurrentValue) 46 | } 47 | ``` 48 | 49 | ### Clear Input 50 | 1. Pass a boolean state set to `false` initally to NextTextInput 51 | 52 | ``` 53 | 61 | ``` 62 | You can change clear the input by changing the state to `true` 63 | 64 | ``` 65 | 66 | verifyOTP = () => { 67 | try { 68 | if (currentNumbersEntered.length === 4) { 69 | phoneInstance.verifyOtp(currentNumbersEntered ) 70 | 71 | props.navigation.navigate('SucessAuth') // Assume this throws error and code goes to catch statement 72 | } else { 73 | // To display error 74 | dropDownAlertRef.alertWithType('error', 'Error', frontendErrors.OTP_LENGTH) 75 | } 76 | } catch (err) { 77 | // Since user entered invalid otp, we decide to clear text in input box 78 | setInvalid(true) // this will clear input 79 | } 80 | } 81 | 82 | inputFromChildComponent = (combinedValueArray, currentValue, refForTheCurrentValue) => { 83 | if (clear) { 84 | // If you have cleared the state or passed true in clear props, it's recommended that you re-change it to false 85 | setClear(false) 86 | } 87 | console.log(combinedValueArray, currentValue, refForTheCurrentValue) 88 | } 89 | 90 | ``` 91 | 92 | 93 | 94 | ### Props 95 | 96 | | **Prop** | **Type** | **Default** | **Required** | **description** | 97 | |----------|----------|-------------|--------------|--------------| 98 | | noOfTextInput | number | null | Yes | No of text input elements you want for example in case of otp screen it could be 4 text-input elements, In case of date of birth it could be 8 (DD-MM-YYYY) | 99 | | onChangeValue | function | null | Yes | the function to capture the input value entered by the user, this function recieves three parameters, the entire updated array holding entered value(s), the current value entered by user, and ref for the current value (see above example)| 100 | | placeholder | array | empty array | No | If in case you want to have a placeholder value for your input elements, for example in case of date of birth you might want TextInput to have dd-mm-yyyy (pass an array for placeholder like this: `['D', 'D', 'M', 'M', 'Y', 'Y', 'Y', 'Y']`) | 101 | | displayColum | boolean | false | No | By default orientation of text input element is keept to be false, meaning the Text input would have `flexDirection: row`, by setting true, you will change the `flexDirection` to column | 102 | | keyboardType | String | numeric | No | Since, this parameter is being passed to ` 2 | import { ViewStyle, KeyboardTypeOptions, TextStyle } from 'react-native'; 3 | export interface NextInputProps { 4 | noOfTextInput: number; 5 | placeholder?: Array; 6 | displayColum?: boolean; 7 | keyboardType?: KeyboardTypeOptions; 8 | textInputStyle?: TextStyle; 9 | onChangeValue: (a: Array, b: string, inputRefs: number) => void; 10 | parentViewStyle?: ViewStyle; 11 | value?: Array; 12 | clearInput?: boolean; 13 | isInputCleared?: (a: boolean) => any | void; 14 | } 15 | declare const NextTextInput: ({ noOfTextInput, placeholder, displayColum, keyboardType, textInputStyle, onChangeValue, parentViewStyle, value, clearInput, isInputCleared }: NextInputProps) => JSX.Element; 16 | export default NextTextInput; 17 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | // Remove next input since we have created npm module for the same 2 | import * as React from 'react'; 3 | import { View, TextInput } from 'react-native'; 4 | const NextTextInput = ({ noOfTextInput, placeholder = [], displayColum = false, keyboardType = 'numeric', textInputStyle, onChangeValue, parentViewStyle, value, clearInput = false, isInputCleared }) => { 5 | const didMount = React.useRef(false); 6 | const lastValue = React.useRef(null); 7 | const lastRef = React.useRef(null); 8 | const clearBoxesInput = React.useRef(false); 9 | const inputRefs = Array(noOfTextInput) 10 | .fill(0) 11 | .map((_) => React.createRef()); 12 | const [inputValues, setInputValues] = React.useState(Array(noOfTextInput) 13 | .fill(null) 14 | .map((val, index) => (value && value[index] !== undefined ? `${value[index]}` : val))); 15 | React.useEffect(() => { 16 | if (clearInput) { 17 | setInputValues(Array(noOfTextInput).fill(null)); 18 | // Focus the first element 19 | const ref = inputRefs[0].current?.focus(); 20 | if (isInputCleared) { 21 | isInputCleared(true); 22 | } 23 | } 24 | }, [clearInput]); 25 | const onChangeHandler = async (value, index) => { 26 | const currentState = [...inputValues]; 27 | currentState[index] = value; 28 | setInputValues(currentState); 29 | lastValue.current = value; 30 | lastRef.current = index; 31 | }; 32 | // skip on first render and then emit value updwards 33 | React.useEffect(() => { 34 | if (didMount.current && 35 | !clearBoxesInput.current && 36 | lastRef.current !== null && 37 | lastValue.current !== null) { 38 | onChangeValue(inputValues, lastValue.current, lastRef.current); 39 | const ref = inputRefs[lastRef.current + 1]; 40 | if (lastValue.current !== '' && ref && ref.current) 41 | ref.current.focus(); 42 | } 43 | else if (clearBoxesInput.current) { 44 | clearBoxesInput.current = false; 45 | } 46 | else { 47 | didMount.current = true; 48 | } 49 | }, [inputValues]); 50 | return (React.createElement(View, { style: displayColum 51 | ? [{ display: 'flex', flexDirection: 'column' }, parentViewStyle] 52 | : [{ display: 'flex', flexDirection: 'row' }, parentViewStyle] }, inputRefs.map((element, index) => { 53 | return (React.createElement(TextInput, { key: index, placeholder: `${placeholder && placeholder[index] ? placeholder[index] : ''}`, value: inputValues[index], maxLength: 1, keyboardType: keyboardType, style: textInputStyle, ref: inputRefs[index], numberOfLines: 1, onChangeText: (text) => onChangeHandler(text, index) })); 54 | }))); 55 | }; 56 | export default NextTextInput; 57 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-next-input", 3 | "version": "0.10.8", 4 | "main": "lib/index.js", 5 | "types": "lib", 6 | "scripts": { 7 | "build": "npm run prettier:write && tsc -p .", 8 | "prettier:base": "prettier --parser typescript --single-quote", 9 | "prettier:check": "npm run prettier:base -- --list-different \"src/**/*.tsx\"", 10 | "prettier:write": "npm run prettier:base -- --write \"src/**/*.tsx\"" 11 | }, 12 | "husky": { 13 | "hooks": { 14 | "pre-commit": "lint-staged" 15 | } 16 | }, 17 | "lint-staged": { 18 | "src/**/*.tsx": [ 19 | "npm run prettier:write", 20 | "git add" 21 | ] 22 | }, 23 | "repository": { 24 | "type": "git", 25 | "url": "git+https://github.com/blendtale/react-native-next-input.git" 26 | }, 27 | "author": "Rohit Bhatia ", 28 | "license": "MIT", 29 | "bugs": { 30 | "url": "https://github.com/blendtale/react-native-next-input/issues" 31 | }, 32 | "homepage": "https://github.com/blendtale/react-native-next-input#readme", 33 | "description": "React-native component which will automatically change focus to next input element making it great to use when making OTP screens, pin based login screens or even date of birth component", 34 | "keywords": [ 35 | "react", 36 | "native", 37 | "keyboard", 38 | "textInput", 39 | "OTP", 40 | "Date Of birth", 41 | "DOB", 42 | "next-input", 43 | "date" 44 | ], 45 | "devDependencies": { 46 | "@types/react-native": "^0.64.0", 47 | "typescript": "^4.1.3", 48 | "husky": "^6.0.0", 49 | "lint-staged": "^11.1.2", 50 | "prettier": "^2.0.5" 51 | }, 52 | "peerDependencies": { 53 | "react-native": "^0.63.4" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | // Remove next input since we have created npm module for the same 2 | 3 | import * as React from 'react' 4 | import { View, TextInput, ViewStyle, KeyboardTypeOptions, TextStyle } from 'react-native' 5 | 6 | export interface NextInputProps { 7 | noOfTextInput: number 8 | placeholder?: Array 9 | displayColum?: boolean 10 | keyboardType?: KeyboardTypeOptions 11 | textInputStyle?: TextStyle | Array 12 | onChangeValue: (a: Array, b: string, inputRefs: number) => void 13 | parentViewStyle?: ViewStyle 14 | value?: Array 15 | clearInput?: boolean 16 | isInputCleared?: (a: boolean) => any | void 17 | } 18 | 19 | const NextTextInput = ({ 20 | noOfTextInput, 21 | placeholder = [], 22 | displayColum = false, 23 | keyboardType = 'numeric', 24 | textInputStyle, 25 | onChangeValue, 26 | parentViewStyle, 27 | value, 28 | clearInput = false, 29 | isInputCleared 30 | }: NextInputProps) => { 31 | const didMount = React.useRef(false) 32 | const lastValue: React.MutableRefObject = React.useRef(null) 33 | const lastRef: React.MutableRefObject = React.useRef(null) 34 | const clearBoxesInput = React.useRef(false) 35 | const inputRefs: Array> = Array(noOfTextInput) 36 | .fill(0) 37 | .map((_) => React.createRef()) 38 | const [inputValues, setInputValues] = React.useState( 39 | Array(noOfTextInput) 40 | .fill(null) 41 | .map((val, index) => (value && value[index] !== undefined ? `${value[index]}` : val)) 42 | ) 43 | 44 | React.useEffect(() => { 45 | if (clearInput) { 46 | setInputValues(Array(noOfTextInput).fill(null)) 47 | // Focus the first element 48 | const ref = inputRefs[0].current?.focus() 49 | if (isInputCleared) { 50 | isInputCleared(true) 51 | } 52 | } 53 | }, [clearInput]) 54 | 55 | const onChangeHandler = async (value: string, index: number) => { 56 | const currentState = [...inputValues] 57 | currentState[index] = value 58 | setInputValues(currentState) 59 | lastValue.current = value 60 | lastRef.current = index 61 | } 62 | 63 | // skip on first render and then emit value updwards 64 | React.useEffect(() => { 65 | if ( 66 | didMount.current && 67 | !clearBoxesInput.current && 68 | lastRef.current !== null && 69 | lastValue.current !== null 70 | ) { 71 | onChangeValue(inputValues, lastValue.current, lastRef.current) 72 | const ref = inputRefs[lastRef.current + 1] 73 | if (lastValue.current !== '' && ref && ref.current) ref.current.focus() 74 | } else if (clearBoxesInput.current) { 75 | clearBoxesInput.current = false 76 | } else { 77 | didMount.current = true 78 | } 79 | }, [inputValues]) 80 | 81 | return ( 82 | 89 | {inputRefs.map((element, index) => { 90 | return ( 91 | onChangeHandler(text, index)} 101 | /> 102 | ) 103 | })} 104 | 105 | ) 106 | } 107 | 108 | export default NextTextInput 109 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["src"], 3 | "exclude": [ 4 | "node_modules", 5 | "babel.config.js", 6 | "metro.config.js", 7 | "jest.config.js" 8 | ], 9 | "compilerOptions": { 10 | "lib": ["es5", "es6", "esnext.asynciterable"], 11 | "allowSyntheticDefaultImports": false, 12 | "esModuleInterop": false, 13 | "jsx": "react", 14 | "moduleResolution": "node", 15 | "strict": true, 16 | "target": "esnext", 17 | "resolveJsonModule": true, 18 | "outDir": "./lib", 19 | "declaration": true 20 | } 21 | } -------------------------------------------------------------------------------- /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.12.13" 7 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz" 8 | integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== 9 | dependencies: 10 | "@babel/highlight" "^7.12.13" 11 | 12 | "@babel/helper-validator-identifier@^7.12.11": 13 | version "7.12.11" 14 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz" 15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 16 | 17 | "@babel/highlight@^7.12.13": 18 | version "7.12.13" 19 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz" 20 | integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.12.11" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@types/parse-json@^4.0.0": 27 | version "4.0.0" 28 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 29 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 30 | 31 | "@types/prop-types@*": 32 | version "15.7.3" 33 | resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz" 34 | integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== 35 | 36 | "@types/react-native@^0.64.0": 37 | version "0.64.12" 38 | resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.64.12.tgz#1c6a3226c26d7a5949cdf8878e6cfe95fe0951d6" 39 | integrity sha512-sw6WGSaL219zqrgdb4kQUtFB9iGXC/LmecLZ+UUWEgwYvD0YH81FqWYmONa2HuTkOFAsxu2bK4DspkWRUHIABQ== 40 | dependencies: 41 | "@types/react" "*" 42 | 43 | "@types/react@*": 44 | version "17.0.1" 45 | resolved "https://registry.npmjs.org/@types/react/-/react-17.0.1.tgz" 46 | integrity sha512-w8t9f53B2ei4jeOqf/gxtc2Sswnc3LBK5s0DyJcg5xd10tMHXts2N31cKjWfH9IC/JvEPa/YF1U4YeP1t4R6HQ== 47 | dependencies: 48 | "@types/prop-types" "*" 49 | csstype "^3.0.2" 50 | 51 | aggregate-error@^3.0.0: 52 | version "3.1.0" 53 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" 54 | integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== 55 | dependencies: 56 | clean-stack "^2.0.0" 57 | indent-string "^4.0.0" 58 | 59 | ansi-colors@^4.1.1: 60 | version "4.1.1" 61 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 62 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 63 | 64 | ansi-escapes@^4.3.0: 65 | version "4.3.1" 66 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 67 | integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== 68 | dependencies: 69 | type-fest "^0.11.0" 70 | 71 | ansi-regex@^5.0.0: 72 | version "5.0.0" 73 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" 74 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 75 | 76 | ansi-styles@^3.2.1: 77 | version "3.2.1" 78 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" 79 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 80 | dependencies: 81 | color-convert "^1.9.0" 82 | 83 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 84 | version "4.3.0" 85 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 86 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 87 | dependencies: 88 | color-convert "^2.0.1" 89 | 90 | astral-regex@^2.0.0: 91 | version "2.0.0" 92 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 93 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 94 | 95 | braces@^3.0.1: 96 | version "3.0.2" 97 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 98 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 99 | dependencies: 100 | fill-range "^7.0.1" 101 | 102 | callsites@^3.0.0: 103 | version "3.1.0" 104 | resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" 105 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 106 | 107 | chalk@^2.0.0: 108 | version "2.4.2" 109 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" 110 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 111 | dependencies: 112 | ansi-styles "^3.2.1" 113 | escape-string-regexp "^1.0.5" 114 | supports-color "^5.3.0" 115 | 116 | chalk@^4.1.0, chalk@^4.1.1: 117 | version "4.1.2" 118 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 119 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 120 | dependencies: 121 | ansi-styles "^4.1.0" 122 | supports-color "^7.1.0" 123 | 124 | clean-stack@^2.0.0: 125 | version "2.2.0" 126 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 127 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 128 | 129 | cli-cursor@^3.1.0: 130 | version "3.1.0" 131 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 132 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 133 | dependencies: 134 | restore-cursor "^3.1.0" 135 | 136 | cli-truncate@^2.1.0: 137 | version "2.1.0" 138 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 139 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 140 | dependencies: 141 | slice-ansi "^3.0.0" 142 | string-width "^4.2.0" 143 | 144 | color-convert@^1.9.0: 145 | version "1.9.3" 146 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" 147 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 148 | dependencies: 149 | color-name "1.1.3" 150 | 151 | color-convert@^2.0.1: 152 | version "2.0.1" 153 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 154 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 155 | dependencies: 156 | color-name "~1.1.4" 157 | 158 | color-name@1.1.3: 159 | version "1.1.3" 160 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" 161 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 162 | 163 | color-name@~1.1.4: 164 | version "1.1.4" 165 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 166 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 167 | 168 | colorette@^1.2.2: 169 | version "1.2.2" 170 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" 171 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== 172 | 173 | commander@^7.2.0: 174 | version "7.2.0" 175 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" 176 | integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 177 | 178 | cosmiconfig@^7.0.0: 179 | version "7.0.0" 180 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" 181 | integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== 182 | dependencies: 183 | "@types/parse-json" "^4.0.0" 184 | import-fresh "^3.2.1" 185 | parse-json "^5.0.0" 186 | path-type "^4.0.0" 187 | yaml "^1.10.0" 188 | 189 | cross-spawn@^7.0.3: 190 | version "7.0.3" 191 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 192 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 193 | dependencies: 194 | path-key "^3.1.0" 195 | shebang-command "^2.0.0" 196 | which "^2.0.1" 197 | 198 | csstype@^3.0.2: 199 | version "3.0.6" 200 | resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.6.tgz" 201 | integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw== 202 | 203 | debug@^4.3.1: 204 | version "4.3.2" 205 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 206 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 207 | dependencies: 208 | ms "2.1.2" 209 | 210 | emoji-regex@^8.0.0: 211 | version "8.0.0" 212 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 213 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 214 | 215 | enquirer@^2.3.6: 216 | version "2.3.6" 217 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 218 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 219 | dependencies: 220 | ansi-colors "^4.1.1" 221 | 222 | error-ex@^1.3.1: 223 | version "1.3.2" 224 | resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" 225 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 226 | dependencies: 227 | is-arrayish "^0.2.1" 228 | 229 | escape-string-regexp@^1.0.5: 230 | version "1.0.5" 231 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 232 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 233 | 234 | execa@^5.0.0: 235 | version "5.1.1" 236 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 237 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 238 | dependencies: 239 | cross-spawn "^7.0.3" 240 | get-stream "^6.0.0" 241 | human-signals "^2.1.0" 242 | is-stream "^2.0.0" 243 | merge-stream "^2.0.0" 244 | npm-run-path "^4.0.1" 245 | onetime "^5.1.2" 246 | signal-exit "^3.0.3" 247 | strip-final-newline "^2.0.0" 248 | 249 | fill-range@^7.0.1: 250 | version "7.0.1" 251 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 252 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 253 | dependencies: 254 | to-regex-range "^5.0.1" 255 | 256 | get-own-enumerable-property-symbols@^3.0.0: 257 | version "3.0.2" 258 | resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 259 | integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 260 | 261 | get-stream@^6.0.0: 262 | version "6.0.1" 263 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 264 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 265 | 266 | has-flag@^3.0.0: 267 | version "3.0.0" 268 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 269 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 270 | 271 | has-flag@^4.0.0: 272 | version "4.0.0" 273 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 274 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 275 | 276 | human-signals@^2.1.0: 277 | version "2.1.0" 278 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 279 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 280 | 281 | husky@^6.0.0: 282 | version "6.0.0" 283 | resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e" 284 | integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== 285 | 286 | import-fresh@^3.2.1: 287 | version "3.3.0" 288 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 289 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 290 | dependencies: 291 | parent-module "^1.0.0" 292 | resolve-from "^4.0.0" 293 | 294 | indent-string@^4.0.0: 295 | version "4.0.0" 296 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 297 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 298 | 299 | is-arrayish@^0.2.1: 300 | version "0.2.1" 301 | resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" 302 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 303 | 304 | is-fullwidth-code-point@^3.0.0: 305 | version "3.0.0" 306 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 307 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 308 | 309 | is-number@^7.0.0: 310 | version "7.0.0" 311 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 312 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 313 | 314 | is-obj@^1.0.1: 315 | version "1.0.1" 316 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 317 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 318 | 319 | is-regexp@^1.0.0: 320 | version "1.0.0" 321 | resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 322 | integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 323 | 324 | is-stream@^2.0.0: 325 | version "2.0.0" 326 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 327 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 328 | 329 | is-unicode-supported@^0.1.0: 330 | version "0.1.0" 331 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 332 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 333 | 334 | isexe@^2.0.0: 335 | version "2.0.0" 336 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 337 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 338 | 339 | js-tokens@^4.0.0: 340 | version "4.0.0" 341 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 342 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 343 | 344 | json-parse-even-better-errors@^2.3.0: 345 | version "2.3.1" 346 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 347 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 348 | 349 | lines-and-columns@^1.1.6: 350 | version "1.1.6" 351 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 352 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 353 | 354 | lint-staged@^11.1.2: 355 | version "11.1.2" 356 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90" 357 | integrity sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w== 358 | dependencies: 359 | chalk "^4.1.1" 360 | cli-truncate "^2.1.0" 361 | commander "^7.2.0" 362 | cosmiconfig "^7.0.0" 363 | debug "^4.3.1" 364 | enquirer "^2.3.6" 365 | execa "^5.0.0" 366 | listr2 "^3.8.2" 367 | log-symbols "^4.1.0" 368 | micromatch "^4.0.4" 369 | normalize-path "^3.0.0" 370 | please-upgrade-node "^3.2.0" 371 | string-argv "0.3.1" 372 | stringify-object "^3.3.0" 373 | 374 | listr2@^3.8.2: 375 | version "3.11.0" 376 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.11.0.tgz#9771b02407875aa78e73d6e0ff6541bbec0aaee9" 377 | integrity sha512-XLJVe2JgXCyQTa3FbSv11lkKExYmEyA4jltVo8z4FX10Vt1Yj8IMekBfwim0BSOM9uj1QMTJvDQQpHyuPbB/dQ== 378 | dependencies: 379 | cli-truncate "^2.1.0" 380 | colorette "^1.2.2" 381 | log-update "^4.0.0" 382 | p-map "^4.0.0" 383 | rxjs "^6.6.7" 384 | through "^2.3.8" 385 | wrap-ansi "^7.0.0" 386 | 387 | log-symbols@^4.1.0: 388 | version "4.1.0" 389 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 390 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 391 | dependencies: 392 | chalk "^4.1.0" 393 | is-unicode-supported "^0.1.0" 394 | 395 | log-update@^4.0.0: 396 | version "4.0.0" 397 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" 398 | integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 399 | dependencies: 400 | ansi-escapes "^4.3.0" 401 | cli-cursor "^3.1.0" 402 | slice-ansi "^4.0.0" 403 | wrap-ansi "^6.2.0" 404 | 405 | merge-stream@^2.0.0: 406 | version "2.0.0" 407 | resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" 408 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 409 | 410 | micromatch@^4.0.4: 411 | version "4.0.4" 412 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 413 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 414 | dependencies: 415 | braces "^3.0.1" 416 | picomatch "^2.2.3" 417 | 418 | mimic-fn@^2.1.0: 419 | version "2.1.0" 420 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 421 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 422 | 423 | ms@2.1.2: 424 | version "2.1.2" 425 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 426 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 427 | 428 | normalize-path@^3.0.0: 429 | version "3.0.0" 430 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 431 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 432 | 433 | npm-run-path@^4.0.1: 434 | version "4.0.1" 435 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 436 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 437 | dependencies: 438 | path-key "^3.0.0" 439 | 440 | onetime@^5.1.0, onetime@^5.1.2: 441 | version "5.1.2" 442 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 443 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 444 | dependencies: 445 | mimic-fn "^2.1.0" 446 | 447 | p-map@^4.0.0: 448 | version "4.0.0" 449 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 450 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 451 | dependencies: 452 | aggregate-error "^3.0.0" 453 | 454 | parent-module@^1.0.0: 455 | version "1.0.1" 456 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 457 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 458 | dependencies: 459 | callsites "^3.0.0" 460 | 461 | parse-json@^5.0.0: 462 | version "5.2.0" 463 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 464 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 465 | dependencies: 466 | "@babel/code-frame" "^7.0.0" 467 | error-ex "^1.3.1" 468 | json-parse-even-better-errors "^2.3.0" 469 | lines-and-columns "^1.1.6" 470 | 471 | path-key@^3.0.0, path-key@^3.1.0: 472 | version "3.1.1" 473 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 474 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 475 | 476 | path-type@^4.0.0: 477 | version "4.0.0" 478 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 479 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 480 | 481 | picomatch@^2.2.3: 482 | version "2.3.0" 483 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 484 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 485 | 486 | please-upgrade-node@^3.2.0: 487 | version "3.2.0" 488 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" 489 | integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== 490 | dependencies: 491 | semver-compare "^1.0.0" 492 | 493 | prettier@^2.0.5: 494 | version "2.2.1" 495 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" 496 | integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== 497 | 498 | resolve-from@^4.0.0: 499 | version "4.0.0" 500 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 501 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 502 | 503 | restore-cursor@^3.1.0: 504 | version "3.1.0" 505 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 506 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 507 | dependencies: 508 | onetime "^5.1.0" 509 | signal-exit "^3.0.2" 510 | 511 | rxjs@^6.6.7: 512 | version "6.6.7" 513 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" 514 | integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== 515 | dependencies: 516 | tslib "^1.9.0" 517 | 518 | semver-compare@^1.0.0: 519 | version "1.0.0" 520 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 521 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 522 | 523 | shebang-command@^2.0.0: 524 | version "2.0.0" 525 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 526 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 527 | dependencies: 528 | shebang-regex "^3.0.0" 529 | 530 | shebang-regex@^3.0.0: 531 | version "3.0.0" 532 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 533 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 534 | 535 | signal-exit@^3.0.2, signal-exit@^3.0.3: 536 | version "3.0.3" 537 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" 538 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 539 | 540 | slice-ansi@^3.0.0: 541 | version "3.0.0" 542 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 543 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 544 | dependencies: 545 | ansi-styles "^4.0.0" 546 | astral-regex "^2.0.0" 547 | is-fullwidth-code-point "^3.0.0" 548 | 549 | slice-ansi@^4.0.0: 550 | version "4.0.0" 551 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 552 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 553 | dependencies: 554 | ansi-styles "^4.0.0" 555 | astral-regex "^2.0.0" 556 | is-fullwidth-code-point "^3.0.0" 557 | 558 | string-argv@0.3.1: 559 | version "0.3.1" 560 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 561 | integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 562 | 563 | string-width@^4.1.0, string-width@^4.2.0: 564 | version "4.2.0" 565 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz" 566 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 567 | dependencies: 568 | emoji-regex "^8.0.0" 569 | is-fullwidth-code-point "^3.0.0" 570 | strip-ansi "^6.0.0" 571 | 572 | stringify-object@^3.3.0: 573 | version "3.3.0" 574 | resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" 575 | integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== 576 | dependencies: 577 | get-own-enumerable-property-symbols "^3.0.0" 578 | is-obj "^1.0.1" 579 | is-regexp "^1.0.0" 580 | 581 | strip-ansi@^6.0.0: 582 | version "6.0.0" 583 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" 584 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 585 | dependencies: 586 | ansi-regex "^5.0.0" 587 | 588 | strip-final-newline@^2.0.0: 589 | version "2.0.0" 590 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 591 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 592 | 593 | supports-color@^5.3.0: 594 | version "5.5.0" 595 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" 596 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 597 | dependencies: 598 | has-flag "^3.0.0" 599 | 600 | supports-color@^7.1.0: 601 | version "7.2.0" 602 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 603 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 604 | dependencies: 605 | has-flag "^4.0.0" 606 | 607 | through@^2.3.8: 608 | version "2.3.8" 609 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 610 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 611 | 612 | to-regex-range@^5.0.1: 613 | version "5.0.1" 614 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 615 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 616 | dependencies: 617 | is-number "^7.0.0" 618 | 619 | tslib@^1.9.0: 620 | version "1.14.1" 621 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 622 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 623 | 624 | type-fest@^0.11.0: 625 | version "0.11.0" 626 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 627 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 628 | 629 | typescript@^4.1.3: 630 | version "4.3.4" 631 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" 632 | integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== 633 | 634 | which@^2.0.1: 635 | version "2.0.2" 636 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 637 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 638 | dependencies: 639 | isexe "^2.0.0" 640 | 641 | wrap-ansi@^6.2.0: 642 | version "6.2.0" 643 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" 644 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 645 | dependencies: 646 | ansi-styles "^4.0.0" 647 | string-width "^4.1.0" 648 | strip-ansi "^6.0.0" 649 | 650 | wrap-ansi@^7.0.0: 651 | version "7.0.0" 652 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 653 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 654 | dependencies: 655 | ansi-styles "^4.0.0" 656 | string-width "^4.1.0" 657 | strip-ansi "^6.0.0" 658 | 659 | yaml@^1.10.0: 660 | version "1.10.0" 661 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" 662 | integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== 663 | --------------------------------------------------------------------------------