├── .babelrc ├── .flowconfig ├── .gitignore ├── .npmignore ├── .prettierrc ├── LICENSE ├── README.md ├── android-demo.gif ├── index.d.ts ├── ios-demo.gif ├── package-lock.json ├── package.json ├── src ├── component │ ├── swipeButtonsContainer.js │ ├── swipeContext.js │ ├── swipeItem.js │ └── swipeProvider.js └── index.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["module:metro-react-native-babel-preset", "@babel/preset-flow"] 3 | } 4 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | ; We fork some components by platform 3 | .*/*[.]android.js 4 | 5 | ; Ignore "BUCK" generated dirs 6 | /\.buckd/ 7 | 8 | ; Ignore polyfills 9 | node_modules/react-native/Libraries/polyfills/.* 10 | 11 | ; These should not be required directly 12 | ; require from fbjs/lib instead: require('fbjs/lib/warning') 13 | node_modules/warning/.* 14 | 15 | ; Flow doesn't support platforms 16 | .*/Libraries/Utilities/LoadingView.js 17 | 18 | [untyped] 19 | .*/node_modules/@react-native-community/cli/.*/.* 20 | 21 | [include] 22 | 23 | [libs] 24 | node_modules/react-native/interface.js 25 | node_modules/react-native/flow/ 26 | 27 | [options] 28 | emoji=true 29 | 30 | esproposal.optional_chaining=enable 31 | esproposal.nullish_coalescing=enable 32 | 33 | module.file_ext=.js 34 | module.file_ext=.json 35 | module.file_ext=.ios.js 36 | 37 | munge_underscores=true 38 | 39 | module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' 40 | module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' 41 | 42 | suppress_type=$FlowIssue 43 | suppress_type=$FlowFixMe 44 | suppress_type=$FlowFixMeProps 45 | suppress_type=$FlowFixMeState 46 | 47 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) 48 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ 49 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 50 | 51 | [lints] 52 | sketchy-null-number=warn 53 | sketchy-null-mixed=warn 54 | sketchy-number=warn 55 | untyped-type-import=warn 56 | nonstrict-import=warn 57 | deprecated-type=warn 58 | unsafe-getters-setters=warn 59 | inexact-spread=warn 60 | unnecessary-invariant=warn 61 | signature-verification-failure=warn 62 | deprecated-utility=error 63 | 64 | [strict] 65 | deprecated-type 66 | nonstrict-import 67 | sketchy-null 68 | unclear-type 69 | unsafe-getters-setters 70 | untyped-import 71 | untyped-type-import 72 | 73 | [version] 74 | ^0.113.0 75 | -------------------------------------------------------------------------------- /.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 | dist 55 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 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 | src 55 | android-demo.gif 56 | ios-demo.gif -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "semi": true, 4 | "printWidth": 120, 5 | "singleQuote": true, 6 | "trailingComma": "es5" 7 | } 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2018 Gavin Wang 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React Native Swipe Item 2 | 3 | A swipe item for react-native. Support both iOS and Android. 4 | 5 | 6 | 7 | 8 | 9 | ## Example 10 | 11 | See [react-native-swipe-item-demo](https://github.com/ambisign-gavin/react-native-swipe-item-demo). 12 | 13 | ## Installation 14 | 15 | ```sh 16 | 17 | npm i --save react-native-swipe-item 18 | 19 | ``` 20 | 21 | - **if you use react-native 0.62.0 or newer version, please install `0.5.0`.** 22 | 23 | ## Usage 24 | 25 | You can use the `SwipeButtonsContainer` to wrap buttons that you want to show when users swipe the item, and pass it to props. 26 | 27 | ```javascript 28 | import { SwipeItem, SwipeButtonsContainer, SwipeProvider } from 'react-native-swipe-item'; 29 | 30 | export default function SwipeButtonCustom() { 31 | 32 | const leftButton = ( 33 | 42 | console.log('left button clicked')} 44 | > 45 | Click me ! 46 | 47 | 48 | ); 49 | 50 | return ( 51 | 52 | 57 | 58 | Swipe me! 59 | 60 | 61 | 62 | ... 63 | 64 | 65 | ); 66 | } 67 | 68 | const styles = StyleSheet.create({ 69 | button: { 70 | width: '80%', 71 | height: 100, 72 | alignSelf: 'center', 73 | marginVertical: 5, 74 | }, 75 | swipeContentContainerStyle: { 76 | justifyContent: 'center', 77 | alignItems: 'center', 78 | backgroundColor: '#ffffff', 79 | borderRadius: 10, 80 | borderColor: '#e3e3e3', 81 | borderWidth: 1, 82 | } 83 | }); 84 | 85 | ``` 86 | 87 | ## Components 88 | 89 | * **SwipeProvider** `since v0.6.0` 90 | 91 | - [props](#SwipeProvider) 92 | 93 | * **SwipeItem** 94 | 95 | - [props](#SwipeItem) 96 | 97 | - [ref methods](#SwipeItemRefMethods) 98 | 99 | * **SwipeButtonsContainer** 100 | 101 | - [props](#SwipeButtonsContainer) 102 | 103 | ------ 104 | 105 | ### `SwipeProvider` Props 106 | 107 | * [mode](#SwipeProvider_mode) 108 | 109 | * [closeTrigger](#SwipeProvider_closeTrigger) 110 | 111 | **`mode`** 112 | 113 | Swipe items mode, default is `single`. 114 | 115 | | TYPE | REQUIRED | 116 | | --- | --- | 117 | | `single` \| `multiple` | No | 118 | 119 | * `single`: only allow one swipe item to be opened. The opened swipe item would be automatically closed when the new swipe item triggers the close event. (see the [closeTrigger](#SwipeProvider_closeTrigger) prop for more detail.) 120 | 121 | * `multiple`: allow multiple swipe items to be opened. 122 | 123 | --- 124 | 125 | **`closeTrigger`** 126 | 127 | The trigger for automatically closed swipe item , only works when the mode prop is single, default is `onItemMoved`. 128 | 129 | | TYPE | REQUIRED | 130 | | --- | --- | 131 | | `onItemMoved` \| `onButtonShowed` | No | 132 | 133 | * `onItemMoved`: when the swipe item is moved, the opened one will be closed. 134 | 135 | * `onButtonShowed`: when the swipe item button is showing, the opened one will be closed. 136 | 137 | --- 138 | 139 | 140 | ### `SwipeItem` Props 141 | 142 | * [style](#style) 143 | 144 | * [swipeContainerStyle](#swipeContainerStyle) 145 | 146 | * [leftButtons](#leftButtons) 147 | 148 | * [rightButtons](#rightButtons) 149 | 150 | * [containerView](#containerView) 151 | 152 | * [disableSwipeIfNoButton](#disableSwipeIfNoButton) 153 | 154 | * [swipeThreshold](#swipeThreshold) 155 | 156 | * [disableButtonScale](#disableButtonScale) 157 | 158 | * [onSwipeInitial](#onSwipeInitial) 159 | 160 | * [onLeftButtonsShowed](#onLeftButtonsShowed) 161 | 162 | * [onRightButtonsShowed](#onRightButtonsShowed) 163 | 164 | * [onMovedToOrigin](#onMovedToOrigin) 165 | 166 | **`style`** 167 | 168 | These styles will be applied to the swipe item layout. 169 | 170 | | TYPE | REQUIRED | 171 | | --- | --- | 172 | | style | No | 173 | 174 | --- 175 | 176 | **`swipeContainerStyle`** 177 | 178 | These styles will be applied to the swipe item container which user swipe. 179 | 180 | Example: 181 | 182 | ```js 183 | return ( 184 | 185 | 186 | ); 187 | } 188 | 189 | const styles = StyleSheet.create({ 190 | swipeContentContainerStyle: { 191 | justifyContent: 'center', 192 | alignItems: 'center', 193 | backgroundColor: '#ffffff', 194 | borderRadius: 10, 195 | borderColor: '#e3e3e3', 196 | borderWidth: 1, 197 | } 198 | }); 199 | ``` 200 | 201 | | TYPE | REQUIRED | 202 | | --- | --- | 203 | | style | No | 204 | 205 | --- 206 | 207 | **`leftButtons`** 208 | 209 | Buttons that want to show on the left when the item swiped to right. 210 | 211 | | TYPE | REQUIRED | 212 | | --- | --- | 213 | | `SwipeButtonsContainer` | No | 214 | 215 | --- 216 | 217 | **`rightButtons`** 218 | 219 | Buttons that want to show on the right when the item swiped to left. 220 | 221 | | TYPE | REQUIRED | 222 | | --- | --- | 223 | | `SwipeButtonsContainer` | No | 224 | 225 | --- 226 | 227 | **`containerView`** 228 | 229 | The component for the swipe item. 230 | 231 | * *Before RN 0.57.0, the child view would be clipped by parent view when the child view layout out of the parent. Recommend to use [ViewOverflow](https://github.com/entria/react-native-view-overflow) plugin to solve this problem.* 232 | 233 | Example: 234 | 235 | ```js 236 | import ViewOverflow from 'react-native-view-overflow'; 237 | ... 238 | ... 239 | export default function SwipeButtonCustom() { 240 | return ( 241 | 246 | 247 | Swipe me! 248 | 249 | 250 | ); 251 | } 252 | ... 253 | ``` 254 | 255 | | TYPE | REQUIRED | PLATFORM | 256 | | --- | --- | --- | 257 | | `ViewOverflow` | Yes | Android | 258 | 259 | --- 260 | 261 | **`onSwipeInitial`** 262 | 263 | This prop will be called when the item started swipe from the origin position, and the `SwipeItem` reference passed as an argument. 264 | 265 | --- 266 | 267 | **`onLeftButtonsShowed`** 268 | 269 | This prop will be called when left buttons showed, and the `SwipeItem` reference passed as an argument. 270 | 271 | --- 272 | 273 | **`onRightButtonsShowed`** 274 | 275 | This prop will be called when right buttons showed, and the `SwipeItem` reference passed as an argument. 276 | 277 | --- 278 | 279 | **`onMovedToOrigin`** 280 | 281 | This prop will be called when the item moved to the origin, and the `SwipeItem` reference passed as an argument. 282 | 283 | --- 284 | 285 | **`disableSwipeIfNoButton`** 286 | 287 | `since v0.4` 288 | 289 | Disable the swipe feature when there are no buttons. 290 | 291 | | TYPE | REQUIRED | 292 | | --- | --- | 293 | | `boolean` | No | 294 | 295 | --- 296 | 297 | **`swipeThreshold`** 298 | 299 | `since v0.7` 300 | 301 | The swipe item will be opened automatically when the position pass the threshold, and you can set the left and right buttons separately. 302 | 303 | | TYPE | REQUIRED | 304 | | --- | --- | 305 | | `{ left?: number, right?: number }` | No | 306 | 307 | --- 308 | 309 | **`disableButtonScale`** 310 | 311 | `since v0.7` 312 | 313 | You can disabled left or right or both button scale when swiping. 314 | 315 | | TYPE | REQUIRED | 316 | | --- | --- | 317 | | `{ left?: boolean, right?: boolean }` | No | 318 | 319 | 320 | --- 321 | 322 | ### `SwipeItem` Ref Methods 323 | 324 | * [close](#close) 325 | 326 | **`close`** 327 | 328 | Close the swipe item. 329 | 330 | Example: 331 | 332 | ``` 333 | 334 | const itemRef = useRef(null); 335 | ... 336 | itemRef.current.close(); 337 | ... 338 | 339 | ... 340 | 341 | 342 | ``` 343 | 344 | --- 345 | 346 | ### `SwipeButtonsContainer` Props 347 | 348 | **This component extends react-native View props.** 349 | 350 | 351 | ## License 352 | 353 | MIT 354 | -------------------------------------------------------------------------------- /android-demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ambisign-gavin/react-native-swipe-item/f8cf9536def67d119a08d6f61fbf0c6509adcde7/android-demo.gif -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'react-native-swipe-item' { 2 | import { ViewStyle, ViewProps } from 'react-native'; 3 | import { Component, ReactChild, ReactNode } from 'react'; 4 | 5 | export class SwipeButtonsContainer extends Component {} 6 | 7 | interface SwipeItemProps { 8 | children?: ReactNode; 9 | /** 10 | * Swipe item layout style 11 | */ 12 | style?: ViewStyle; 13 | /** 14 | * Swipe item style 15 | */ 16 | swipeContainerStyle?: ViewStyle; 17 | /** 18 | * Buttons that want to show on the left when the item swiped to right. 19 | */ 20 | leftButtons?: ReactNode; 21 | /** 22 | * Buttons that want to show on the right when the item swiped to right. 23 | */ 24 | rightButtons?: ReactNode; 25 | /** 26 | * The component for the swipe item. 27 | * More Information: https://github.com/ambisign-gavin/react-native-swipe-item#containerView 28 | */ 29 | containerView?: ReactNode; 30 | /** 31 | * will be triggered when the item started swipe from the origin position 32 | * @param {SwipeItem} swipeItem SwipeItem reference 33 | */ 34 | onSwipeInitial?: (swipeItem: SwipeItem) => void; 35 | /** 36 | * will be triggered when left buttons showed 37 | * @param {SwipeItem} swipeItem SwipeItem reference 38 | */ 39 | onLeftButtonsShowed?: (swipeItem: SwipeItem) => void; 40 | /** 41 | * will be triggered when right buttons showed 42 | * @param {SwipeItem} swipeItem SwipeItem reference 43 | */ 44 | onRightButtonsShowed?: (swipeItem: SwipeItem) => void; 45 | /** 46 | * will be triggered when the item moved to the origin position 47 | */ 48 | onMovedToOrigin?: (swipeItem: SwipeItem) => void; 49 | /** 50 | * disable the swipe feature when there are no buttons. 51 | */ 52 | disableSwipeIfNoButton?: boolean; 53 | /** 54 | * The swipe item will be opened automatically when the position pass the threshold, and you can set the left and right buttons separately. 55 | */ 56 | swipeThreshold?: { 57 | left?: number; 58 | right?: number; 59 | }; 60 | /** 61 | * you can disabled left or right or both button scale when swiping. 62 | */ 63 | disableButtonScale?: { 64 | left?: boolean; 65 | right?: boolean; 66 | }; 67 | } 68 | export class SwipeItem extends Component { 69 | /** 70 | * Close Swipe Item 71 | */ 72 | close(): void; 73 | } 74 | 75 | interface SwipeProviderProps { 76 | /** 77 | * Swipe items mode, default is single 78 | */ 79 | mode?: 'single' | 'multiple'; 80 | /** 81 | * The trigger for automatically closed swipe item , default is onItemMoved 82 | * `onItemMoved` - when the swipe item is moved, the opened one will be closed. 83 | * `onButtonShowed` - when the swipe item button is showing, the opened one will be closed. 84 | */ 85 | closeTrigger?: 'onItemMoved' | 'onButtonShowed'; 86 | } 87 | 88 | export class SwipeProvider extends Component {} 89 | } 90 | -------------------------------------------------------------------------------- /ios-demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ambisign-gavin/react-native-swipe-item/f8cf9536def67d119a08d6f61fbf0c6509adcde7/ios-demo.gif -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-swipe-item", 3 | "version": "0.7.0", 4 | "description": "The swipeale item for react-native", 5 | "main": "dist/index.js", 6 | "type": "index.d.ts", 7 | "scripts": { 8 | "clean": "rimraf dist", 9 | "build:es5": "babel src -d dist", 10 | "build:flow": "flow-copy-source -v src dist", 11 | "prepublish": "npm run clean && npm run build:es5 && npm run build:flow" 12 | }, 13 | "peerDependencies": { 14 | "react": ">=16.11.0", 15 | "react-native": ">=0.62.0" 16 | }, 17 | "devDependencies": { 18 | "@babel/cli": "^7.17.3", 19 | "@babel/core": "^7.17.5", 20 | "@babel/preset-flow": "^7.16.7", 21 | "flow-bin": "^0.113.0", 22 | "flow-copy-source": "^2.0.2", 23 | "metro-react-native-babel-preset": "^0.68.0", 24 | "rimraf": "^2.6.2" 25 | }, 26 | "license": "MIT", 27 | "keywords": [ 28 | "react-component", 29 | "react-native", 30 | "swipe", 31 | "swipe-item" 32 | ], 33 | "author": "Gavin Wang (https://github.com/ambisign-gavin)", 34 | "repository": { 35 | "type": "git", 36 | "url": "git@github.com:ambisign-gavin/react-native-swipe-item.git" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/component/swipeButtonsContainer.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import React, { type Node } from 'react'; 3 | import { Animated } from 'react-native'; 4 | 5 | type Props = { 6 | children?: Node, 7 | style?: mixed, 8 | }; 9 | 10 | export default class SwipeButtonsContainer extends React.Component { 11 | render() { 12 | const { style, children, ...other } = this.props; 13 | 14 | return ( 15 | 16 | {children} 17 | 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/component/swipeContext.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import React from 'react'; 3 | 4 | export type SwipeItemRef = { 5 | close: () => void, 6 | }; 7 | export type ItemCloseTrigger = 'onItemMoved' | 'onButtonShowed'; 8 | export type SwipeMode = 'single' | 'multiple'; 9 | 10 | export type SwipeContextType = { 11 | mode: SwipeMode, 12 | closeTrigger: ItemCloseTrigger, 13 | setOpenedItemRef: (ref: SwipeItemRef, trigger: ItemCloseTrigger) => void, 14 | removeOpenedItemRef: (ref: SwipeItemRef) => void, 15 | }; 16 | 17 | export const SwipeContext = React.createContext({ 18 | mode: 'single', 19 | closeTrigger: 'onItemMoved', 20 | setOpenedItemRef: () => {}, 21 | removeOpenedItemRef: () => {}, 22 | }); 23 | -------------------------------------------------------------------------------- /src/component/swipeItem.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import React, { type Element, type ComponentType } from 'react'; 3 | import { Animated, PanResponder, StyleSheet, View, Platform, I18nManager } from 'react-native'; 4 | import type { PanResponderInstance } from 'react-native/Libraries/Interaction/PanResponder'; 5 | import SwipeButtonsContainer from './swipeButtonsContainer'; 6 | import { SwipeContext } from './swipeContext'; 7 | 8 | type Props = { 9 | children?: any, 10 | style?: any, 11 | swipeContainerStyle?: any, 12 | leftButtons?: Element, 13 | rightButtons?: Element, 14 | containerView?: ComponentType<*>, 15 | onSwipeInitial?: (swipeItem: SwipeItem) => mixed, 16 | onLeftButtonsShowed?: (swipeItem: SwipeItem) => mixed, 17 | onRightButtonsShowed?: (swipeItem: SwipeItem) => mixed, 18 | onMovedToOrigin?: (swipeItem: SwipeItem) => mixed, 19 | disableSwipeIfNoButton: boolean, 20 | swipeThreshold?: { 21 | left?: number, 22 | right?: number, 23 | }, 24 | disableButtonScale?: { 25 | left?: boolean, 26 | right?: boolean, 27 | }, 28 | }; 29 | 30 | type States = {| 31 | panDistance: Animated.ValueXY, 32 | rightButtonTriggerPosition: number, 33 | leftButtonTriggerPosition: number, 34 | |}; 35 | 36 | declare var JSX: any; 37 | 38 | export default class SwipeItem extends React.Component { 39 | static contextType = SwipeContext; 40 | 41 | _swipeItem: SwipeItem = this; 42 | _panResponder: PanResponderInstance; 43 | _panDistanceOffset: { x: number, y: number } = { x: 0, y: 0 }; 44 | _isRightButtonShowing = false; 45 | _isLeftButtonShowing = false; 46 | _isGestureDisabled = false; 47 | 48 | state: States = { 49 | panDistance: new Animated.ValueXY(), 50 | rightButtonTriggerPosition: 0, 51 | leftButtonTriggerPosition: 0, 52 | }; 53 | 54 | constructor(props: Props) { 55 | super(props); 56 | this._panResponder = this._createPanResponderInstance(); 57 | this.state.panDistance.addListener((value) => { 58 | this._panDistanceOffset = value; 59 | }); 60 | } 61 | 62 | componentWillUnmount() { 63 | this.context && this.context.removeOpenedItemRef(this); 64 | this.state.panDistance.removeAllListeners(); 65 | } 66 | 67 | /** 68 | * create panResponder 69 | */ 70 | _createPanResponderInstance(): PanResponderInstance { 71 | let instance: PanResponderInstance = PanResponder.create({ 72 | onMoveShouldSetPanResponderCapture: (evt, gestureState) => { 73 | if (Math.abs(gestureState.dx) < 5) { 74 | return false; 75 | } 76 | if (this.props.disableSwipeIfNoButton) { 77 | if ( 78 | (!this.props.leftButtons && gestureState.dx > 0 && !this._isRightButtonShowing) || 79 | (!this.props.rightButtons && gestureState.dx < 0 && !this._isLeftButtonShowing) 80 | ) { 81 | return false; 82 | } 83 | } 84 | this._isGestureDisabled = false; 85 | const { x: offsetX } = this._panDistanceOffset; 86 | 87 | if (Math.round(offsetX) === 0) { 88 | this.props.onSwipeInitial && this.props.onSwipeInitial(this._swipeItem); 89 | 90 | this.context && this.context.setOpenedItemRef(this, 'onItemMoved'); 91 | } 92 | return true; 93 | }, 94 | onPanResponderGrant: (evt, gestureState) => { 95 | //setting pan distance offset, make sure next touch will not jump to touch position immediately 96 | this.state.panDistance.setOffset(this._panDistanceOffset); 97 | //initial panDistance 98 | this.state.panDistance.setValue({ x: 0, y: 0 }); 99 | }, 100 | onPanResponderMove: (evt, gestureState) => { 101 | if (this._isGestureDisabled) { 102 | return; 103 | } 104 | const { 105 | swipeThreshold = { 106 | right: Infinity, 107 | left: Infinity, 108 | }, 109 | } = this.props; 110 | 111 | const dx = gestureState.dx; 112 | 113 | if ( 114 | dx > 0 && 115 | dx > swipeThreshold.left && 116 | dx < this.state.leftButtonTriggerPosition && 117 | !this._isLeftButtonShowing 118 | ) { 119 | this._isGestureDisabled = true; 120 | 121 | Animated.spring(this.state.panDistance, { 122 | useNativeDriver: false, 123 | toValue: { 124 | x: this.state.leftButtonTriggerPosition, 125 | y: 0, 126 | }, 127 | }).start(); 128 | 129 | this._openLeftButton(); 130 | return; 131 | } 132 | if ( 133 | dx < 0 && 134 | Math.abs(dx) > swipeThreshold.right && 135 | Math.abs(dx) < Math.abs(this.state.rightButtonTriggerPosition) && 136 | !this._isRightButtonShowing 137 | ) { 138 | this._isGestureDisabled = true; 139 | 140 | Animated.spring(this.state.panDistance, { 141 | useNativeDriver: false, 142 | toValue: { 143 | x: this.state.rightButtonTriggerPosition, 144 | y: 0, 145 | }, 146 | }).start(); 147 | 148 | this._openRightButton(); 149 | return; 150 | } 151 | 152 | Animated.event( 153 | [ 154 | null, 155 | { 156 | dx: this.state.panDistance.x, 157 | }, 158 | ], 159 | { 160 | useNativeDriver: false, 161 | } 162 | )(evt, gestureState); 163 | }, 164 | onPanResponderRelease: (evt, gestureState) => { 165 | if (!this._isGestureDisabled) { 166 | this._moveToDestination(this._getSwipePositionDestinationValueX(gestureState.dx)); 167 | } 168 | }, 169 | onPanResponderTerminate: (evt, gestureState) => { 170 | if (!this._isGestureDisabled) { 171 | this._moveToDestination(this._getSwipePositionDestinationValueX(gestureState.dx)); 172 | } 173 | return true; 174 | }, 175 | onPanResponderTerminationRequest: (evt, gestureState) => { 176 | // On Android, the component will stick at the last swipe position when pan responder terminate 177 | // return true, at onPanResponderTerminate function will move the swipe component to origin position 178 | if (Platform.OS === 'android') { 179 | return true; 180 | } 181 | return false; 182 | }, 183 | }); 184 | return instance; 185 | } 186 | 187 | /** 188 | * move the swipe component to destination 189 | * @param {number} toX the x-axis of move destination 190 | */ 191 | _moveToDestination(toX: number) { 192 | if (Math.round(toX) === 0) { 193 | this._isLeftButtonShowing = false; 194 | this._isRightButtonShowing = false; 195 | this.context && this.context.removeOpenedItemRef(this); 196 | this.props.onMovedToOrigin && this.props.onMovedToOrigin(this._swipeItem); 197 | } 198 | //Merges the offset value into the base value and resets the offset to zero. 199 | this.state.panDistance.flattenOffset(); 200 | Animated.spring(this.state.panDistance, { 201 | useNativeDriver: false, 202 | toValue: { 203 | x: toX, 204 | y: 0, 205 | }, 206 | friction: 10, 207 | }).start(); 208 | } 209 | 210 | close() { 211 | this._moveToDestination(0); 212 | } 213 | 214 | _openRightButton(): void { 215 | this._isRightButtonShowing = true; 216 | this.props.onRightButtonsShowed && this.props.onRightButtonsShowed(this._swipeItem); 217 | 218 | this.context && this.context.setOpenedItemRef(this, 'onButtonShowed'); 219 | } 220 | 221 | _openLeftButton(): void { 222 | this._isLeftButtonShowing = true; 223 | this.props.onLeftButtonsShowed && this.props.onLeftButtonsShowed(this._swipeItem); 224 | 225 | this.context && this.context.setOpenedItemRef(this, 'onButtonShowed'); 226 | } 227 | 228 | /** 229 | * get the Swipe component's position after user release gesture 230 | * @param {number} panDistanceX the distance of x-axis for gesture 231 | */ 232 | _getSwipePositionDestinationValueX(panDistanceX: number): number { 233 | const { leftButtonTriggerPosition, rightButtonTriggerPosition } = this.state; 234 | 235 | let toValueX: number = 0; 236 | let panSide: string = panDistanceX > 0 ? 'right' : 'left'; 237 | let containerOffset: number = this._panDistanceOffset.x; 238 | 239 | if (panSide === 'right' && containerOffset > leftButtonTriggerPosition && !!this.props.leftButtons) { 240 | toValueX = leftButtonTriggerPosition; 241 | this._openLeftButton(); 242 | } 243 | 244 | if (panSide === 'left' && containerOffset < rightButtonTriggerPosition && !!this.props.rightButtons) { 245 | toValueX = rightButtonTriggerPosition; 246 | this._openRightButton(); 247 | } 248 | return toValueX; 249 | } 250 | 251 | _renderleftButtonsIfNotNull(): JSX.Element { 252 | const { leftButtons = null, disableButtonScale = { left: false } } = this.props; 253 | 254 | const { leftButtonTriggerPosition } = this.state; 255 | 256 | if (leftButtons == null) { 257 | return null; 258 | } 259 | const { style, children } = leftButtons.props; 260 | 261 | let scale = disableButtonScale.left 262 | ? 1 263 | : this.state.panDistance.x.interpolate({ 264 | inputRange: [-Infinity, -0.01, 0, leftButtonTriggerPosition, Infinity], 265 | outputRange: [0.01, 0.01, 0.7, 1, 1], 266 | }); 267 | 268 | let widthStyle = { 269 | transform: [{ scale }], 270 | }; 271 | 272 | return ( 273 | { 276 | this.setState({ 277 | leftButtonTriggerPosition: nativeEvent.layout.width, 278 | }); 279 | }} 280 | > 281 | {children} 282 | 283 | ); 284 | } 285 | 286 | _renderrightButtonsIfNotNull(): JSX.Element { 287 | const { rightButtons = null, disableButtonScale = { right: false } } = this.props; 288 | 289 | const { rightButtonTriggerPosition } = this.state; 290 | 291 | if (rightButtons == null) { 292 | return null; 293 | } 294 | 295 | const { style, children } = rightButtons.props; 296 | 297 | let scale = disableButtonScale.right 298 | ? 1 299 | : this.state.panDistance.x.interpolate({ 300 | inputRange: [-Infinity, rightButtonTriggerPosition, 0, 0.1, Infinity], 301 | outputRange: [1, 1, 0.7, 0.01, 0.01], 302 | }); 303 | 304 | let widthStyle = { 305 | transform: [{ scale }], 306 | }; 307 | 308 | return ( 309 | { 312 | this.setState({ 313 | rightButtonTriggerPosition: -1 * nativeEvent.layout.width, 314 | }); 315 | }} 316 | > 317 | {children} 318 | 319 | ); 320 | } 321 | 322 | render() { 323 | const panStyle = { 324 | transform: this.state.panDistance.getTranslateTransform(), 325 | }; 326 | 327 | const { style, swipeContainerStyle, containerView: ContainerView = View } = this.props; 328 | 329 | return ( 330 | 331 | 332 | 333 | {this._renderleftButtonsIfNotNull()} 334 | {this._renderrightButtonsIfNotNull()} 335 | 336 | 340 | {this.props.children} 341 | 342 | 343 | 344 | ); 345 | } 346 | } 347 | 348 | const containerStyles = StyleSheet.create({ 349 | rootContainer: { 350 | flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row', 351 | justifyContent: 'center', 352 | }, 353 | buttonsContainer: { 354 | height: '100%', 355 | width: '100%', 356 | position: 'absolute', 357 | flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row', 358 | top: 0, 359 | left: 0, 360 | }, 361 | swipeContainer: { 362 | height: '100%', 363 | width: '100%', 364 | }, 365 | }); 366 | 367 | const buttonViewStyles = StyleSheet.create({ 368 | container: { 369 | position: 'absolute', 370 | }, 371 | left: { 372 | left: 0, 373 | }, 374 | right: { 375 | right: 0, 376 | }, 377 | }); 378 | -------------------------------------------------------------------------------- /src/component/swipeProvider.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import React from 'react'; 3 | import type { SwipeItemRef, ItemCloseTrigger, SwipeMode, SwipeContextType } from './swipeContext'; 4 | import { SwipeContext } from './swipeContext'; 5 | 6 | type ProviderProps = { 7 | mode?: SwipeMode, 8 | closeTrigger?: ItemCloseTrigger, 9 | }; 10 | 11 | const SwipeProvider = React.memo((props) => { 12 | const { mode = 'single', closeTrigger = 'onItemMoved', ...others } = props; 13 | 14 | const openedItemRef = React.useRef(null); 15 | 16 | const value = React.useMemo( 17 | () => ({ 18 | mode, 19 | closeTrigger, 20 | setOpenedItemRef: (ref, trigger) => { 21 | if (trigger !== closeTrigger || mode === 'multiple') { 22 | return; 23 | } 24 | openedItemRef.current && openedItemRef.current.close(); 25 | openedItemRef.current = ref; 26 | }, 27 | removeOpenedItemRef: (ref) => { 28 | if (ref === openedItemRef.current) { 29 | openedItemRef.current = null; 30 | } 31 | }, 32 | }), 33 | [closeTrigger, mode] 34 | ); 35 | 36 | return ; 37 | }); 38 | 39 | export default SwipeProvider; 40 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import SwipeItem from './component/swipeItem'; 3 | import SwipeButtonsContainer from './component/swipeButtonsContainer'; 4 | import SwipeProvider from './component/swipeProvider'; 5 | 6 | export { SwipeItem, SwipeButtonsContainer, SwipeProvider }; 7 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.1.0": 6 | version "2.1.2" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" 8 | dependencies: 9 | "@jridgewell/trace-mapping" "^0.3.0" 10 | 11 | "@babel/cli@^7.17.3": 12 | version "7.17.6" 13 | resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.17.6.tgz#169e5935f1795f0b62ded5a2accafeedfe5c5363" 14 | dependencies: 15 | "@jridgewell/trace-mapping" "^0.3.4" 16 | commander "^4.0.1" 17 | convert-source-map "^1.1.0" 18 | fs-readdir-recursive "^1.1.0" 19 | glob "^7.0.0" 20 | make-dir "^2.1.0" 21 | slash "^2.0.0" 22 | source-map "^0.5.0" 23 | optionalDependencies: 24 | "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" 25 | chokidar "^3.4.0" 26 | 27 | "@babel/code-frame@^7.16.7": 28 | version "7.16.7" 29 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" 30 | dependencies: 31 | "@babel/highlight" "^7.16.7" 32 | 33 | "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": 34 | version "7.17.7" 35 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" 36 | 37 | "@babel/core@^7.14.0", "@babel/core@^7.17.5": 38 | version "7.17.8" 39 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" 40 | dependencies: 41 | "@ampproject/remapping" "^2.1.0" 42 | "@babel/code-frame" "^7.16.7" 43 | "@babel/generator" "^7.17.7" 44 | "@babel/helper-compilation-targets" "^7.17.7" 45 | "@babel/helper-module-transforms" "^7.17.7" 46 | "@babel/helpers" "^7.17.8" 47 | "@babel/parser" "^7.17.8" 48 | "@babel/template" "^7.16.7" 49 | "@babel/traverse" "^7.17.3" 50 | "@babel/types" "^7.17.0" 51 | convert-source-map "^1.7.0" 52 | debug "^4.1.0" 53 | gensync "^1.0.0-beta.2" 54 | json5 "^2.1.2" 55 | semver "^6.3.0" 56 | 57 | "@babel/generator@^7.17.3", "@babel/generator@^7.17.7": 58 | version "7.17.7" 59 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" 60 | dependencies: 61 | "@babel/types" "^7.17.0" 62 | jsesc "^2.5.1" 63 | source-map "^0.5.0" 64 | 65 | "@babel/helper-annotate-as-pure@^7.16.7": 66 | version "7.16.7" 67 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" 68 | dependencies: 69 | "@babel/types" "^7.16.7" 70 | 71 | "@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": 72 | version "7.16.7" 73 | resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" 74 | dependencies: 75 | "@babel/helper-explode-assignable-expression" "^7.16.7" 76 | "@babel/types" "^7.16.7" 77 | 78 | "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": 79 | version "7.17.7" 80 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" 81 | dependencies: 82 | "@babel/compat-data" "^7.17.7" 83 | "@babel/helper-validator-option" "^7.16.7" 84 | browserslist "^4.17.5" 85 | semver "^6.3.0" 86 | 87 | "@babel/helper-create-class-features-plugin@^7.16.7": 88 | version "7.17.6" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" 90 | dependencies: 91 | "@babel/helper-annotate-as-pure" "^7.16.7" 92 | "@babel/helper-environment-visitor" "^7.16.7" 93 | "@babel/helper-function-name" "^7.16.7" 94 | "@babel/helper-member-expression-to-functions" "^7.16.7" 95 | "@babel/helper-optimise-call-expression" "^7.16.7" 96 | "@babel/helper-replace-supers" "^7.16.7" 97 | "@babel/helper-split-export-declaration" "^7.16.7" 98 | 99 | "@babel/helper-create-regexp-features-plugin@^7.16.7": 100 | version "7.17.0" 101 | resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" 102 | dependencies: 103 | "@babel/helper-annotate-as-pure" "^7.16.7" 104 | regexpu-core "^5.0.1" 105 | 106 | "@babel/helper-define-polyfill-provider@^0.3.1": 107 | version "0.3.1" 108 | resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" 109 | dependencies: 110 | "@babel/helper-compilation-targets" "^7.13.0" 111 | "@babel/helper-module-imports" "^7.12.13" 112 | "@babel/helper-plugin-utils" "^7.13.0" 113 | "@babel/traverse" "^7.13.0" 114 | debug "^4.1.1" 115 | lodash.debounce "^4.0.8" 116 | resolve "^1.14.2" 117 | semver "^6.1.2" 118 | 119 | "@babel/helper-environment-visitor@^7.16.7": 120 | version "7.16.7" 121 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" 122 | dependencies: 123 | "@babel/types" "^7.16.7" 124 | 125 | "@babel/helper-explode-assignable-expression@^7.16.7": 126 | version "7.16.7" 127 | resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" 128 | dependencies: 129 | "@babel/types" "^7.16.7" 130 | 131 | "@babel/helper-function-name@^7.16.7": 132 | version "7.16.7" 133 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" 134 | dependencies: 135 | "@babel/helper-get-function-arity" "^7.16.7" 136 | "@babel/template" "^7.16.7" 137 | "@babel/types" "^7.16.7" 138 | 139 | "@babel/helper-get-function-arity@^7.16.7": 140 | version "7.16.7" 141 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" 142 | dependencies: 143 | "@babel/types" "^7.16.7" 144 | 145 | "@babel/helper-hoist-variables@^7.16.7": 146 | version "7.16.7" 147 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" 148 | dependencies: 149 | "@babel/types" "^7.16.7" 150 | 151 | "@babel/helper-member-expression-to-functions@^7.16.7": 152 | version "7.17.7" 153 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" 154 | dependencies: 155 | "@babel/types" "^7.17.0" 156 | 157 | "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": 158 | version "7.16.7" 159 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" 160 | dependencies: 161 | "@babel/types" "^7.16.7" 162 | 163 | "@babel/helper-module-transforms@^7.17.7": 164 | version "7.17.7" 165 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" 166 | dependencies: 167 | "@babel/helper-environment-visitor" "^7.16.7" 168 | "@babel/helper-module-imports" "^7.16.7" 169 | "@babel/helper-simple-access" "^7.17.7" 170 | "@babel/helper-split-export-declaration" "^7.16.7" 171 | "@babel/helper-validator-identifier" "^7.16.7" 172 | "@babel/template" "^7.16.7" 173 | "@babel/traverse" "^7.17.3" 174 | "@babel/types" "^7.17.0" 175 | 176 | "@babel/helper-optimise-call-expression@^7.16.7": 177 | version "7.16.7" 178 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" 179 | dependencies: 180 | "@babel/types" "^7.16.7" 181 | 182 | "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0": 183 | version "7.16.7" 184 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" 185 | 186 | "@babel/helper-remap-async-to-generator@^7.16.8": 187 | version "7.16.8" 188 | resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" 189 | dependencies: 190 | "@babel/helper-annotate-as-pure" "^7.16.7" 191 | "@babel/helper-wrap-function" "^7.16.8" 192 | "@babel/types" "^7.16.8" 193 | 194 | "@babel/helper-replace-supers@^7.16.7": 195 | version "7.16.7" 196 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" 197 | dependencies: 198 | "@babel/helper-environment-visitor" "^7.16.7" 199 | "@babel/helper-member-expression-to-functions" "^7.16.7" 200 | "@babel/helper-optimise-call-expression" "^7.16.7" 201 | "@babel/traverse" "^7.16.7" 202 | "@babel/types" "^7.16.7" 203 | 204 | "@babel/helper-simple-access@^7.17.7": 205 | version "7.17.7" 206 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" 207 | dependencies: 208 | "@babel/types" "^7.17.0" 209 | 210 | "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": 211 | version "7.16.0" 212 | resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" 213 | dependencies: 214 | "@babel/types" "^7.16.0" 215 | 216 | "@babel/helper-split-export-declaration@^7.16.7": 217 | version "7.16.7" 218 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" 219 | dependencies: 220 | "@babel/types" "^7.16.7" 221 | 222 | "@babel/helper-validator-identifier@^7.16.7": 223 | version "7.16.7" 224 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 225 | 226 | "@babel/helper-validator-option@^7.16.7": 227 | version "7.16.7" 228 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" 229 | 230 | "@babel/helper-wrap-function@^7.16.8": 231 | version "7.16.8" 232 | resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" 233 | dependencies: 234 | "@babel/helper-function-name" "^7.16.7" 235 | "@babel/template" "^7.16.7" 236 | "@babel/traverse" "^7.16.8" 237 | "@babel/types" "^7.16.8" 238 | 239 | "@babel/helpers@^7.17.8": 240 | version "7.17.8" 241 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" 242 | dependencies: 243 | "@babel/template" "^7.16.7" 244 | "@babel/traverse" "^7.17.3" 245 | "@babel/types" "^7.17.0" 246 | 247 | "@babel/highlight@^7.16.7": 248 | version "7.16.10" 249 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" 250 | dependencies: 251 | "@babel/helper-validator-identifier" "^7.16.7" 252 | chalk "^2.0.0" 253 | js-tokens "^4.0.0" 254 | 255 | "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8": 256 | version "7.17.8" 257 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" 258 | 259 | "@babel/plugin-proposal-async-generator-functions@^7.0.0": 260 | version "7.16.8" 261 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" 262 | dependencies: 263 | "@babel/helper-plugin-utils" "^7.16.7" 264 | "@babel/helper-remap-async-to-generator" "^7.16.8" 265 | "@babel/plugin-syntax-async-generators" "^7.8.4" 266 | 267 | "@babel/plugin-proposal-class-properties@^7.0.0": 268 | version "7.16.7" 269 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" 270 | dependencies: 271 | "@babel/helper-create-class-features-plugin" "^7.16.7" 272 | "@babel/helper-plugin-utils" "^7.16.7" 273 | 274 | "@babel/plugin-proposal-export-default-from@^7.0.0": 275 | version "7.16.7" 276 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz#a40ab158ca55627b71c5513f03d3469026a9e929" 277 | dependencies: 278 | "@babel/helper-plugin-utils" "^7.16.7" 279 | "@babel/plugin-syntax-export-default-from" "^7.16.7" 280 | 281 | "@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0": 282 | version "7.16.7" 283 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" 284 | dependencies: 285 | "@babel/helper-plugin-utils" "^7.16.7" 286 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 287 | 288 | "@babel/plugin-proposal-object-rest-spread@^7.0.0": 289 | version "7.17.3" 290 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" 291 | dependencies: 292 | "@babel/compat-data" "^7.17.0" 293 | "@babel/helper-compilation-targets" "^7.16.7" 294 | "@babel/helper-plugin-utils" "^7.16.7" 295 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 296 | "@babel/plugin-transform-parameters" "^7.16.7" 297 | 298 | "@babel/plugin-proposal-optional-catch-binding@^7.0.0": 299 | version "7.16.7" 300 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" 301 | dependencies: 302 | "@babel/helper-plugin-utils" "^7.16.7" 303 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 304 | 305 | "@babel/plugin-proposal-optional-chaining@^7.0.0": 306 | version "7.16.7" 307 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" 308 | dependencies: 309 | "@babel/helper-plugin-utils" "^7.16.7" 310 | "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" 311 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 312 | 313 | "@babel/plugin-syntax-async-generators@^7.8.4": 314 | version "7.8.4" 315 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 316 | dependencies: 317 | "@babel/helper-plugin-utils" "^7.8.0" 318 | 319 | "@babel/plugin-syntax-dynamic-import@^7.0.0": 320 | version "7.8.3" 321 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" 322 | dependencies: 323 | "@babel/helper-plugin-utils" "^7.8.0" 324 | 325 | "@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.16.7": 326 | version "7.16.7" 327 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz#fa89cf13b60de2c3f79acdc2b52a21174c6de060" 328 | dependencies: 329 | "@babel/helper-plugin-utils" "^7.16.7" 330 | 331 | "@babel/plugin-syntax-flow@^7.16.7", "@babel/plugin-syntax-flow@^7.2.0": 332 | version "7.16.7" 333 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" 334 | dependencies: 335 | "@babel/helper-plugin-utils" "^7.16.7" 336 | 337 | "@babel/plugin-syntax-jsx@^7.16.7": 338 | version "7.16.7" 339 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" 340 | dependencies: 341 | "@babel/helper-plugin-utils" "^7.16.7" 342 | 343 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 344 | version "7.8.3" 345 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 346 | dependencies: 347 | "@babel/helper-plugin-utils" "^7.8.0" 348 | 349 | "@babel/plugin-syntax-object-rest-spread@^7.8.3": 350 | version "7.8.3" 351 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 352 | dependencies: 353 | "@babel/helper-plugin-utils" "^7.8.0" 354 | 355 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 356 | version "7.8.3" 357 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 358 | dependencies: 359 | "@babel/helper-plugin-utils" "^7.8.0" 360 | 361 | "@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": 362 | version "7.8.3" 363 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 364 | dependencies: 365 | "@babel/helper-plugin-utils" "^7.8.0" 366 | 367 | "@babel/plugin-syntax-typescript@^7.16.7": 368 | version "7.16.7" 369 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" 370 | dependencies: 371 | "@babel/helper-plugin-utils" "^7.16.7" 372 | 373 | "@babel/plugin-transform-arrow-functions@^7.0.0": 374 | version "7.16.7" 375 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" 376 | dependencies: 377 | "@babel/helper-plugin-utils" "^7.16.7" 378 | 379 | "@babel/plugin-transform-async-to-generator@^7.0.0": 380 | version "7.16.8" 381 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" 382 | dependencies: 383 | "@babel/helper-module-imports" "^7.16.7" 384 | "@babel/helper-plugin-utils" "^7.16.7" 385 | "@babel/helper-remap-async-to-generator" "^7.16.8" 386 | 387 | "@babel/plugin-transform-block-scoping@^7.0.0": 388 | version "7.16.7" 389 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" 390 | dependencies: 391 | "@babel/helper-plugin-utils" "^7.16.7" 392 | 393 | "@babel/plugin-transform-classes@^7.0.0": 394 | version "7.16.7" 395 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" 396 | dependencies: 397 | "@babel/helper-annotate-as-pure" "^7.16.7" 398 | "@babel/helper-environment-visitor" "^7.16.7" 399 | "@babel/helper-function-name" "^7.16.7" 400 | "@babel/helper-optimise-call-expression" "^7.16.7" 401 | "@babel/helper-plugin-utils" "^7.16.7" 402 | "@babel/helper-replace-supers" "^7.16.7" 403 | "@babel/helper-split-export-declaration" "^7.16.7" 404 | globals "^11.1.0" 405 | 406 | "@babel/plugin-transform-computed-properties@^7.0.0": 407 | version "7.16.7" 408 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" 409 | dependencies: 410 | "@babel/helper-plugin-utils" "^7.16.7" 411 | 412 | "@babel/plugin-transform-destructuring@^7.0.0": 413 | version "7.17.7" 414 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" 415 | dependencies: 416 | "@babel/helper-plugin-utils" "^7.16.7" 417 | 418 | "@babel/plugin-transform-exponentiation-operator@^7.0.0": 419 | version "7.16.7" 420 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" 421 | dependencies: 422 | "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" 423 | "@babel/helper-plugin-utils" "^7.16.7" 424 | 425 | "@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.16.7": 426 | version "7.16.7" 427 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" 428 | dependencies: 429 | "@babel/helper-plugin-utils" "^7.16.7" 430 | "@babel/plugin-syntax-flow" "^7.16.7" 431 | 432 | "@babel/plugin-transform-for-of@^7.0.0": 433 | version "7.16.7" 434 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" 435 | dependencies: 436 | "@babel/helper-plugin-utils" "^7.16.7" 437 | 438 | "@babel/plugin-transform-function-name@^7.0.0": 439 | version "7.16.7" 440 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" 441 | dependencies: 442 | "@babel/helper-compilation-targets" "^7.16.7" 443 | "@babel/helper-function-name" "^7.16.7" 444 | "@babel/helper-plugin-utils" "^7.16.7" 445 | 446 | "@babel/plugin-transform-literals@^7.0.0": 447 | version "7.16.7" 448 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" 449 | dependencies: 450 | "@babel/helper-plugin-utils" "^7.16.7" 451 | 452 | "@babel/plugin-transform-modules-commonjs@^7.0.0": 453 | version "7.17.7" 454 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19" 455 | dependencies: 456 | "@babel/helper-module-transforms" "^7.17.7" 457 | "@babel/helper-plugin-utils" "^7.16.7" 458 | "@babel/helper-simple-access" "^7.17.7" 459 | babel-plugin-dynamic-import-node "^2.3.3" 460 | 461 | "@babel/plugin-transform-object-assign@^7.0.0": 462 | version "7.16.7" 463 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.7.tgz#5fe08d63dccfeb6a33aa2638faf98e5c584100f8" 464 | dependencies: 465 | "@babel/helper-plugin-utils" "^7.16.7" 466 | 467 | "@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.16.7": 468 | version "7.16.7" 469 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" 470 | dependencies: 471 | "@babel/helper-plugin-utils" "^7.16.7" 472 | 473 | "@babel/plugin-transform-react-display-name@^7.0.0": 474 | version "7.16.7" 475 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" 476 | dependencies: 477 | "@babel/helper-plugin-utils" "^7.16.7" 478 | 479 | "@babel/plugin-transform-react-jsx-self@^7.0.0": 480 | version "7.16.7" 481 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz#f432ad0cba14c4a1faf44f0076c69e42a4d4479e" 482 | dependencies: 483 | "@babel/helper-plugin-utils" "^7.16.7" 484 | 485 | "@babel/plugin-transform-react-jsx-source@^7.0.0": 486 | version "7.16.7" 487 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz#1879c3f23629d287cc6186a6c683154509ec70c0" 488 | dependencies: 489 | "@babel/helper-plugin-utils" "^7.16.7" 490 | 491 | "@babel/plugin-transform-react-jsx@^7.0.0": 492 | version "7.17.3" 493 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" 494 | dependencies: 495 | "@babel/helper-annotate-as-pure" "^7.16.7" 496 | "@babel/helper-module-imports" "^7.16.7" 497 | "@babel/helper-plugin-utils" "^7.16.7" 498 | "@babel/plugin-syntax-jsx" "^7.16.7" 499 | "@babel/types" "^7.17.0" 500 | 501 | "@babel/plugin-transform-regenerator@^7.0.0": 502 | version "7.16.7" 503 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" 504 | dependencies: 505 | regenerator-transform "^0.14.2" 506 | 507 | "@babel/plugin-transform-runtime@^7.0.0": 508 | version "7.17.0" 509 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" 510 | dependencies: 511 | "@babel/helper-module-imports" "^7.16.7" 512 | "@babel/helper-plugin-utils" "^7.16.7" 513 | babel-plugin-polyfill-corejs2 "^0.3.0" 514 | babel-plugin-polyfill-corejs3 "^0.5.0" 515 | babel-plugin-polyfill-regenerator "^0.3.0" 516 | semver "^6.3.0" 517 | 518 | "@babel/plugin-transform-shorthand-properties@^7.0.0": 519 | version "7.16.7" 520 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" 521 | dependencies: 522 | "@babel/helper-plugin-utils" "^7.16.7" 523 | 524 | "@babel/plugin-transform-spread@^7.0.0": 525 | version "7.16.7" 526 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" 527 | dependencies: 528 | "@babel/helper-plugin-utils" "^7.16.7" 529 | "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" 530 | 531 | "@babel/plugin-transform-sticky-regex@^7.0.0": 532 | version "7.16.7" 533 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" 534 | dependencies: 535 | "@babel/helper-plugin-utils" "^7.16.7" 536 | 537 | "@babel/plugin-transform-template-literals@^7.0.0": 538 | version "7.16.7" 539 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" 540 | dependencies: 541 | "@babel/helper-plugin-utils" "^7.16.7" 542 | 543 | "@babel/plugin-transform-typescript@^7.5.0": 544 | version "7.16.8" 545 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" 546 | dependencies: 547 | "@babel/helper-create-class-features-plugin" "^7.16.7" 548 | "@babel/helper-plugin-utils" "^7.16.7" 549 | "@babel/plugin-syntax-typescript" "^7.16.7" 550 | 551 | "@babel/plugin-transform-unicode-regex@^7.0.0": 552 | version "7.16.7" 553 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" 554 | dependencies: 555 | "@babel/helper-create-regexp-features-plugin" "^7.16.7" 556 | "@babel/helper-plugin-utils" "^7.16.7" 557 | 558 | "@babel/preset-flow@^7.16.7": 559 | version "7.16.7" 560 | resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.16.7.tgz#7fd831323ab25eeba6e4b77a589f680e30581cbd" 561 | dependencies: 562 | "@babel/helper-plugin-utils" "^7.16.7" 563 | "@babel/helper-validator-option" "^7.16.7" 564 | "@babel/plugin-transform-flow-strip-types" "^7.16.7" 565 | 566 | "@babel/runtime@^7.8.4": 567 | version "7.17.8" 568 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" 569 | dependencies: 570 | regenerator-runtime "^0.13.4" 571 | 572 | "@babel/template@^7.0.0", "@babel/template@^7.16.7": 573 | version "7.16.7" 574 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" 575 | dependencies: 576 | "@babel/code-frame" "^7.16.7" 577 | "@babel/parser" "^7.16.7" 578 | "@babel/types" "^7.16.7" 579 | 580 | "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3": 581 | version "7.17.3" 582 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" 583 | dependencies: 584 | "@babel/code-frame" "^7.16.7" 585 | "@babel/generator" "^7.17.3" 586 | "@babel/helper-environment-visitor" "^7.16.7" 587 | "@babel/helper-function-name" "^7.16.7" 588 | "@babel/helper-hoist-variables" "^7.16.7" 589 | "@babel/helper-split-export-declaration" "^7.16.7" 590 | "@babel/parser" "^7.17.3" 591 | "@babel/types" "^7.17.0" 592 | debug "^4.1.0" 593 | globals "^11.1.0" 594 | 595 | "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0": 596 | version "7.17.0" 597 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" 598 | dependencies: 599 | "@babel/helper-validator-identifier" "^7.16.7" 600 | to-fast-properties "^2.0.0" 601 | 602 | "@jridgewell/resolve-uri@^3.0.3": 603 | version "3.0.5" 604 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" 605 | 606 | "@jridgewell/sourcemap-codec@^1.4.10": 607 | version "1.4.11" 608 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" 609 | 610 | "@jridgewell/trace-mapping@^0.3.0", "@jridgewell/trace-mapping@^0.3.4": 611 | version "0.3.4" 612 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" 613 | dependencies: 614 | "@jridgewell/resolve-uri" "^3.0.3" 615 | "@jridgewell/sourcemap-codec" "^1.4.10" 616 | 617 | "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": 618 | version "2.1.8-no-fsevents.3" 619 | resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" 620 | 621 | "@types/color-name@^1.1.1": 622 | version "1.1.1" 623 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 624 | 625 | ansi-regex@^5.0.0: 626 | version "5.0.0" 627 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 628 | 629 | ansi-styles@^3.2.1: 630 | version "3.2.1" 631 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 632 | dependencies: 633 | color-convert "^1.9.0" 634 | 635 | ansi-styles@^4.0.0: 636 | version "4.2.1" 637 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 638 | dependencies: 639 | "@types/color-name" "^1.1.1" 640 | color-convert "^2.0.1" 641 | 642 | anymatch@~3.1.1: 643 | version "3.1.1" 644 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 645 | dependencies: 646 | normalize-path "^3.0.0" 647 | picomatch "^2.0.4" 648 | 649 | anymatch@~3.1.2: 650 | version "3.1.2" 651 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 652 | dependencies: 653 | normalize-path "^3.0.0" 654 | picomatch "^2.0.4" 655 | 656 | babel-plugin-dynamic-import-node@^2.3.3: 657 | version "2.3.3" 658 | resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" 659 | dependencies: 660 | object.assign "^4.1.0" 661 | 662 | babel-plugin-polyfill-corejs2@^0.3.0: 663 | version "0.3.1" 664 | resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" 665 | dependencies: 666 | "@babel/compat-data" "^7.13.11" 667 | "@babel/helper-define-polyfill-provider" "^0.3.1" 668 | semver "^6.1.1" 669 | 670 | babel-plugin-polyfill-corejs3@^0.5.0: 671 | version "0.5.2" 672 | resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" 673 | dependencies: 674 | "@babel/helper-define-polyfill-provider" "^0.3.1" 675 | core-js-compat "^3.21.0" 676 | 677 | babel-plugin-polyfill-regenerator@^0.3.0: 678 | version "0.3.1" 679 | resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" 680 | dependencies: 681 | "@babel/helper-define-polyfill-provider" "^0.3.1" 682 | 683 | balanced-match@^1.0.0: 684 | version "1.0.0" 685 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 686 | 687 | binary-extensions@^2.0.0: 688 | version "2.0.0" 689 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 690 | 691 | brace-expansion@^1.1.7: 692 | version "1.1.11" 693 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 694 | dependencies: 695 | balanced-match "^1.0.0" 696 | concat-map "0.0.1" 697 | 698 | braces@~3.0.2: 699 | version "3.0.2" 700 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 701 | dependencies: 702 | fill-range "^7.0.1" 703 | 704 | browserslist@^4.17.5, browserslist@^4.19.1: 705 | version "4.20.2" 706 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" 707 | dependencies: 708 | caniuse-lite "^1.0.30001317" 709 | electron-to-chromium "^1.4.84" 710 | escalade "^3.1.1" 711 | node-releases "^2.0.2" 712 | picocolors "^1.0.0" 713 | 714 | call-bind@^1.0.0: 715 | version "1.0.2" 716 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 717 | dependencies: 718 | function-bind "^1.1.1" 719 | get-intrinsic "^1.0.2" 720 | 721 | camelcase@^5.0.0: 722 | version "5.3.1" 723 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 724 | 725 | caniuse-lite@^1.0.30001317: 726 | version "1.0.30001319" 727 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz#eb4da4eb3ecdd409f7ba1907820061d56096e88f" 728 | 729 | chalk@^2.0.0: 730 | version "2.4.2" 731 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 732 | dependencies: 733 | ansi-styles "^3.2.1" 734 | escape-string-regexp "^1.0.5" 735 | supports-color "^5.3.0" 736 | 737 | chokidar@^3.0.0: 738 | version "3.3.1" 739 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" 740 | dependencies: 741 | anymatch "~3.1.1" 742 | braces "~3.0.2" 743 | glob-parent "~5.1.0" 744 | is-binary-path "~2.1.0" 745 | is-glob "~4.0.1" 746 | normalize-path "~3.0.0" 747 | readdirp "~3.3.0" 748 | optionalDependencies: 749 | fsevents "~2.1.2" 750 | 751 | chokidar@^3.4.0: 752 | version "3.5.3" 753 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 754 | dependencies: 755 | anymatch "~3.1.2" 756 | braces "~3.0.2" 757 | glob-parent "~5.1.2" 758 | is-binary-path "~2.1.0" 759 | is-glob "~4.0.1" 760 | normalize-path "~3.0.0" 761 | readdirp "~3.6.0" 762 | optionalDependencies: 763 | fsevents "~2.3.2" 764 | 765 | cliui@^6.0.0: 766 | version "6.0.0" 767 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" 768 | dependencies: 769 | string-width "^4.2.0" 770 | strip-ansi "^6.0.0" 771 | wrap-ansi "^6.2.0" 772 | 773 | color-convert@^1.9.0: 774 | version "1.9.3" 775 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 776 | dependencies: 777 | color-name "1.1.3" 778 | 779 | color-convert@^2.0.1: 780 | version "2.0.1" 781 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 782 | dependencies: 783 | color-name "~1.1.4" 784 | 785 | color-name@1.1.3: 786 | version "1.1.3" 787 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 788 | 789 | color-name@~1.1.4: 790 | version "1.1.4" 791 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 792 | 793 | commander@^4.0.1: 794 | version "4.1.1" 795 | resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" 796 | 797 | concat-map@0.0.1: 798 | version "0.0.1" 799 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 800 | 801 | convert-source-map@^1.1.0, convert-source-map@^1.7.0: 802 | version "1.8.0" 803 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 804 | dependencies: 805 | safe-buffer "~5.1.1" 806 | 807 | core-js-compat@^3.21.0: 808 | version "3.21.1" 809 | resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" 810 | dependencies: 811 | browserslist "^4.19.1" 812 | semver "7.0.0" 813 | 814 | debug@^4.1.0, debug@^4.1.1: 815 | version "4.3.4" 816 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 817 | dependencies: 818 | ms "2.1.2" 819 | 820 | decamelize@^1.2.0: 821 | version "1.2.0" 822 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 823 | 824 | define-properties@^1.1.3: 825 | version "1.1.3" 826 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 827 | dependencies: 828 | object-keys "^1.0.12" 829 | 830 | electron-to-chromium@^1.4.84: 831 | version "1.4.92" 832 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.92.tgz#88996e9aceb3a500710fd439abfa89b6cc1ac56c" 833 | 834 | emoji-regex@^8.0.0: 835 | version "8.0.0" 836 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 837 | 838 | escalade@^3.1.1: 839 | version "3.1.1" 840 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 841 | 842 | escape-string-regexp@^1.0.5: 843 | version "1.0.5" 844 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 845 | 846 | fill-range@^7.0.1: 847 | version "7.0.1" 848 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 849 | dependencies: 850 | to-regex-range "^5.0.1" 851 | 852 | find-up@^4.1.0: 853 | version "4.1.0" 854 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 855 | dependencies: 856 | locate-path "^5.0.0" 857 | path-exists "^4.0.0" 858 | 859 | flow-bin@^0.113.0: 860 | version "0.113.0" 861 | resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.113.0.tgz#6457d250dbc6f71ca51e75f00a96d23cde5d987a" 862 | 863 | flow-copy-source@^2.0.2: 864 | version "2.0.9" 865 | resolved "https://registry.yarnpkg.com/flow-copy-source/-/flow-copy-source-2.0.9.tgz#0c94ad842f2ae544d5a6b8ae720cee0b8678d742" 866 | dependencies: 867 | chokidar "^3.0.0" 868 | fs-extra "^8.1.0" 869 | glob "^7.0.0" 870 | kefir "^3.7.3" 871 | yargs "^15.0.1" 872 | 873 | fs-extra@^8.1.0: 874 | version "8.1.0" 875 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 876 | dependencies: 877 | graceful-fs "^4.2.0" 878 | jsonfile "^4.0.0" 879 | universalify "^0.1.0" 880 | 881 | fs-readdir-recursive@^1.1.0: 882 | version "1.1.0" 883 | resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" 884 | 885 | fs.realpath@^1.0.0: 886 | version "1.0.0" 887 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 888 | 889 | fsevents@~2.1.2: 890 | version "2.1.3" 891 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 892 | 893 | fsevents@~2.3.2: 894 | version "2.3.2" 895 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 896 | 897 | function-bind@^1.1.1: 898 | version "1.1.1" 899 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 900 | 901 | gensync@^1.0.0-beta.2: 902 | version "1.0.0-beta.2" 903 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 904 | 905 | get-caller-file@^2.0.1: 906 | version "2.0.5" 907 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 908 | 909 | get-intrinsic@^1.0.2: 910 | version "1.1.1" 911 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 912 | dependencies: 913 | function-bind "^1.1.1" 914 | has "^1.0.3" 915 | has-symbols "^1.0.1" 916 | 917 | glob-parent@~5.1.0: 918 | version "5.1.1" 919 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 920 | dependencies: 921 | is-glob "^4.0.1" 922 | 923 | glob-parent@~5.1.2: 924 | version "5.1.2" 925 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 926 | dependencies: 927 | is-glob "^4.0.1" 928 | 929 | glob@^7.0.0, glob@^7.1.3: 930 | version "7.1.6" 931 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 932 | dependencies: 933 | fs.realpath "^1.0.0" 934 | inflight "^1.0.4" 935 | inherits "2" 936 | minimatch "^3.0.4" 937 | once "^1.3.0" 938 | path-is-absolute "^1.0.0" 939 | 940 | globals@^11.1.0: 941 | version "11.12.0" 942 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 943 | 944 | graceful-fs@^4.1.6: 945 | version "4.1.15" 946 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 947 | 948 | graceful-fs@^4.2.0: 949 | version "4.2.3" 950 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 951 | 952 | has-flag@^3.0.0: 953 | version "3.0.0" 954 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 955 | 956 | has-symbols@^1.0.1: 957 | version "1.0.3" 958 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 959 | 960 | has@^1.0.3: 961 | version "1.0.3" 962 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 963 | dependencies: 964 | function-bind "^1.1.1" 965 | 966 | inflight@^1.0.4: 967 | version "1.0.6" 968 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 969 | dependencies: 970 | once "^1.3.0" 971 | wrappy "1" 972 | 973 | inherits@2: 974 | version "2.0.3" 975 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 976 | 977 | is-binary-path@~2.1.0: 978 | version "2.1.0" 979 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 980 | dependencies: 981 | binary-extensions "^2.0.0" 982 | 983 | is-core-module@^2.8.1: 984 | version "2.8.1" 985 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" 986 | dependencies: 987 | has "^1.0.3" 988 | 989 | is-extglob@^2.1.1: 990 | version "2.1.1" 991 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 992 | 993 | is-fullwidth-code-point@^3.0.0: 994 | version "3.0.0" 995 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 996 | 997 | is-glob@^4.0.1, is-glob@~4.0.1: 998 | version "4.0.1" 999 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1000 | dependencies: 1001 | is-extglob "^2.1.1" 1002 | 1003 | is-number@^7.0.0: 1004 | version "7.0.0" 1005 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1006 | 1007 | js-tokens@^4.0.0: 1008 | version "4.0.0" 1009 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1010 | 1011 | jsesc@^2.5.1: 1012 | version "2.5.2" 1013 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1014 | 1015 | jsesc@~0.5.0: 1016 | version "0.5.0" 1017 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1018 | 1019 | json5@^2.1.2: 1020 | version "2.2.1" 1021 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" 1022 | 1023 | jsonfile@^4.0.0: 1024 | version "4.0.0" 1025 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1026 | optionalDependencies: 1027 | graceful-fs "^4.1.6" 1028 | 1029 | kefir@^3.7.3: 1030 | version "3.8.6" 1031 | resolved "https://registry.yarnpkg.com/kefir/-/kefir-3.8.6.tgz#046f0dabd870ff7cbfe039995c9bca2c1e68ac36" 1032 | dependencies: 1033 | symbol-observable "1.0.4" 1034 | 1035 | locate-path@^5.0.0: 1036 | version "5.0.0" 1037 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1038 | dependencies: 1039 | p-locate "^4.1.0" 1040 | 1041 | lodash.debounce@^4.0.8: 1042 | version "4.0.8" 1043 | resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" 1044 | 1045 | make-dir@^2.1.0: 1046 | version "2.1.0" 1047 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" 1048 | dependencies: 1049 | pify "^4.0.1" 1050 | semver "^5.6.0" 1051 | 1052 | metro-react-native-babel-preset@^0.68.0: 1053 | version "0.68.0" 1054 | resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.68.0.tgz#5a896aeeabb4f0dc796724ed75efb3e05d81b02f" 1055 | dependencies: 1056 | "@babel/core" "^7.14.0" 1057 | "@babel/plugin-proposal-async-generator-functions" "^7.0.0" 1058 | "@babel/plugin-proposal-class-properties" "^7.0.0" 1059 | "@babel/plugin-proposal-export-default-from" "^7.0.0" 1060 | "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" 1061 | "@babel/plugin-proposal-object-rest-spread" "^7.0.0" 1062 | "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" 1063 | "@babel/plugin-proposal-optional-chaining" "^7.0.0" 1064 | "@babel/plugin-syntax-dynamic-import" "^7.0.0" 1065 | "@babel/plugin-syntax-export-default-from" "^7.0.0" 1066 | "@babel/plugin-syntax-flow" "^7.2.0" 1067 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" 1068 | "@babel/plugin-syntax-optional-chaining" "^7.0.0" 1069 | "@babel/plugin-transform-arrow-functions" "^7.0.0" 1070 | "@babel/plugin-transform-async-to-generator" "^7.0.0" 1071 | "@babel/plugin-transform-block-scoping" "^7.0.0" 1072 | "@babel/plugin-transform-classes" "^7.0.0" 1073 | "@babel/plugin-transform-computed-properties" "^7.0.0" 1074 | "@babel/plugin-transform-destructuring" "^7.0.0" 1075 | "@babel/plugin-transform-exponentiation-operator" "^7.0.0" 1076 | "@babel/plugin-transform-flow-strip-types" "^7.0.0" 1077 | "@babel/plugin-transform-for-of" "^7.0.0" 1078 | "@babel/plugin-transform-function-name" "^7.0.0" 1079 | "@babel/plugin-transform-literals" "^7.0.0" 1080 | "@babel/plugin-transform-modules-commonjs" "^7.0.0" 1081 | "@babel/plugin-transform-object-assign" "^7.0.0" 1082 | "@babel/plugin-transform-parameters" "^7.0.0" 1083 | "@babel/plugin-transform-react-display-name" "^7.0.0" 1084 | "@babel/plugin-transform-react-jsx" "^7.0.0" 1085 | "@babel/plugin-transform-react-jsx-self" "^7.0.0" 1086 | "@babel/plugin-transform-react-jsx-source" "^7.0.0" 1087 | "@babel/plugin-transform-regenerator" "^7.0.0" 1088 | "@babel/plugin-transform-runtime" "^7.0.0" 1089 | "@babel/plugin-transform-shorthand-properties" "^7.0.0" 1090 | "@babel/plugin-transform-spread" "^7.0.0" 1091 | "@babel/plugin-transform-sticky-regex" "^7.0.0" 1092 | "@babel/plugin-transform-template-literals" "^7.0.0" 1093 | "@babel/plugin-transform-typescript" "^7.5.0" 1094 | "@babel/plugin-transform-unicode-regex" "^7.0.0" 1095 | "@babel/template" "^7.0.0" 1096 | react-refresh "^0.4.0" 1097 | 1098 | minimatch@^3.0.4: 1099 | version "3.0.4" 1100 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1101 | dependencies: 1102 | brace-expansion "^1.1.7" 1103 | 1104 | ms@2.1.2: 1105 | version "2.1.2" 1106 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1107 | 1108 | node-releases@^2.0.2: 1109 | version "2.0.2" 1110 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" 1111 | 1112 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1113 | version "3.0.0" 1114 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1115 | 1116 | object-keys@^1.0.12, object-keys@^1.1.1: 1117 | version "1.1.1" 1118 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1119 | 1120 | object.assign@^4.1.0: 1121 | version "4.1.2" 1122 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1123 | dependencies: 1124 | call-bind "^1.0.0" 1125 | define-properties "^1.1.3" 1126 | has-symbols "^1.0.1" 1127 | object-keys "^1.1.1" 1128 | 1129 | once@^1.3.0: 1130 | version "1.4.0" 1131 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1132 | dependencies: 1133 | wrappy "1" 1134 | 1135 | p-limit@^2.2.0: 1136 | version "2.3.0" 1137 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1138 | dependencies: 1139 | p-try "^2.0.0" 1140 | 1141 | p-locate@^4.1.0: 1142 | version "4.1.0" 1143 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1144 | dependencies: 1145 | p-limit "^2.2.0" 1146 | 1147 | p-try@^2.0.0: 1148 | version "2.2.0" 1149 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1150 | 1151 | path-exists@^4.0.0: 1152 | version "4.0.0" 1153 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1154 | 1155 | path-is-absolute@^1.0.0: 1156 | version "1.0.1" 1157 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1158 | 1159 | path-parse@^1.0.7: 1160 | version "1.0.7" 1161 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1162 | 1163 | picocolors@^1.0.0: 1164 | version "1.0.0" 1165 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1166 | 1167 | picomatch@^2.0.4, picomatch@^2.0.7: 1168 | version "2.2.2" 1169 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1170 | 1171 | picomatch@^2.2.1: 1172 | version "2.3.1" 1173 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1174 | 1175 | pify@^4.0.1: 1176 | version "4.0.1" 1177 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 1178 | 1179 | react-refresh@^0.4.0: 1180 | version "0.4.3" 1181 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" 1182 | 1183 | readdirp@~3.3.0: 1184 | version "3.3.0" 1185 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" 1186 | dependencies: 1187 | picomatch "^2.0.7" 1188 | 1189 | readdirp@~3.6.0: 1190 | version "3.6.0" 1191 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1192 | dependencies: 1193 | picomatch "^2.2.1" 1194 | 1195 | regenerate-unicode-properties@^10.0.1: 1196 | version "10.0.1" 1197 | resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" 1198 | dependencies: 1199 | regenerate "^1.4.2" 1200 | 1201 | regenerate@^1.4.2: 1202 | version "1.4.2" 1203 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" 1204 | 1205 | regenerator-runtime@^0.13.4: 1206 | version "0.13.9" 1207 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 1208 | 1209 | regenerator-transform@^0.14.2: 1210 | version "0.14.5" 1211 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" 1212 | dependencies: 1213 | "@babel/runtime" "^7.8.4" 1214 | 1215 | regexpu-core@^5.0.1: 1216 | version "5.0.1" 1217 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" 1218 | dependencies: 1219 | regenerate "^1.4.2" 1220 | regenerate-unicode-properties "^10.0.1" 1221 | regjsgen "^0.6.0" 1222 | regjsparser "^0.8.2" 1223 | unicode-match-property-ecmascript "^2.0.0" 1224 | unicode-match-property-value-ecmascript "^2.0.0" 1225 | 1226 | regjsgen@^0.6.0: 1227 | version "0.6.0" 1228 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" 1229 | 1230 | regjsparser@^0.8.2: 1231 | version "0.8.4" 1232 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" 1233 | dependencies: 1234 | jsesc "~0.5.0" 1235 | 1236 | require-directory@^2.1.1: 1237 | version "2.1.1" 1238 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1239 | 1240 | require-main-filename@^2.0.0: 1241 | version "2.0.0" 1242 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1243 | 1244 | resolve@^1.14.2: 1245 | version "1.22.0" 1246 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 1247 | dependencies: 1248 | is-core-module "^2.8.1" 1249 | path-parse "^1.0.7" 1250 | supports-preserve-symlinks-flag "^1.0.0" 1251 | 1252 | rimraf@^2.6.2: 1253 | version "2.7.1" 1254 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 1255 | dependencies: 1256 | glob "^7.1.3" 1257 | 1258 | safe-buffer@~5.1.1: 1259 | version "5.1.2" 1260 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1261 | 1262 | semver@7.0.0: 1263 | version "7.0.0" 1264 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 1265 | 1266 | semver@^5.6.0: 1267 | version "5.7.1" 1268 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1269 | 1270 | semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: 1271 | version "6.3.0" 1272 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1273 | 1274 | set-blocking@^2.0.0: 1275 | version "2.0.0" 1276 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1277 | 1278 | slash@^2.0.0: 1279 | version "2.0.0" 1280 | resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" 1281 | 1282 | source-map@^0.5.0: 1283 | version "0.5.7" 1284 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1285 | 1286 | string-width@^4.1.0, string-width@^4.2.0: 1287 | version "4.2.0" 1288 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1289 | dependencies: 1290 | emoji-regex "^8.0.0" 1291 | is-fullwidth-code-point "^3.0.0" 1292 | strip-ansi "^6.0.0" 1293 | 1294 | strip-ansi@^6.0.0: 1295 | version "6.0.0" 1296 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1297 | dependencies: 1298 | ansi-regex "^5.0.0" 1299 | 1300 | supports-color@^5.3.0: 1301 | version "5.5.0" 1302 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1303 | dependencies: 1304 | has-flag "^3.0.0" 1305 | 1306 | supports-preserve-symlinks-flag@^1.0.0: 1307 | version "1.0.0" 1308 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1309 | 1310 | symbol-observable@1.0.4: 1311 | version "1.0.4" 1312 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" 1313 | 1314 | to-fast-properties@^2.0.0: 1315 | version "2.0.0" 1316 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1317 | 1318 | to-regex-range@^5.0.1: 1319 | version "5.0.1" 1320 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1321 | dependencies: 1322 | is-number "^7.0.0" 1323 | 1324 | unicode-canonical-property-names-ecmascript@^2.0.0: 1325 | version "2.0.0" 1326 | resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" 1327 | 1328 | unicode-match-property-ecmascript@^2.0.0: 1329 | version "2.0.0" 1330 | resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" 1331 | dependencies: 1332 | unicode-canonical-property-names-ecmascript "^2.0.0" 1333 | unicode-property-aliases-ecmascript "^2.0.0" 1334 | 1335 | unicode-match-property-value-ecmascript@^2.0.0: 1336 | version "2.0.0" 1337 | resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" 1338 | 1339 | unicode-property-aliases-ecmascript@^2.0.0: 1340 | version "2.0.0" 1341 | resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" 1342 | 1343 | universalify@^0.1.0: 1344 | version "0.1.2" 1345 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1346 | 1347 | which-module@^2.0.0: 1348 | version "2.0.0" 1349 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1350 | 1351 | wrap-ansi@^6.2.0: 1352 | version "6.2.0" 1353 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 1354 | dependencies: 1355 | ansi-styles "^4.0.0" 1356 | string-width "^4.1.0" 1357 | strip-ansi "^6.0.0" 1358 | 1359 | wrappy@1: 1360 | version "1.0.2" 1361 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1362 | 1363 | y18n@^4.0.0: 1364 | version "4.0.3" 1365 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" 1366 | 1367 | yargs-parser@^18.1.1: 1368 | version "18.1.3" 1369 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" 1370 | dependencies: 1371 | camelcase "^5.0.0" 1372 | decamelize "^1.2.0" 1373 | 1374 | yargs@^15.0.1: 1375 | version "15.3.1" 1376 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" 1377 | dependencies: 1378 | cliui "^6.0.0" 1379 | decamelize "^1.2.0" 1380 | find-up "^4.1.0" 1381 | get-caller-file "^2.0.1" 1382 | require-directory "^2.1.1" 1383 | require-main-filename "^2.0.0" 1384 | set-blocking "^2.0.0" 1385 | string-width "^4.2.0" 1386 | which-module "^2.0.0" 1387 | y18n "^4.0.0" 1388 | yargs-parser "^18.1.1" 1389 | --------------------------------------------------------------------------------