diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..65365be68e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + +[*] + +indent_style = space +indent_size = 2 + +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index bf4000ccaa..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -vendor/ -Components/Styles/ \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json index 85b493d131..48927607b9 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,26 +1,19 @@ { - "ecmaVersion": 7, - "plugins": [ - "react", - "react-native" - ], - "extends": ["eslint:recommended", "plugin:react/recommended"], - "parser": "babel-eslint", - "parserOptions": { - "sourceType": "module", - "ecmaFeatures": { - "jsx": true, - "classes": true - } - }, + "extends": ["@react-native-community", "prettier"], "rules": { - "react-native/no-unused-styles": 1, - "no-unused-vars": 1 - }, - "env": { - "es6": true + "prettier/prettier": [ + "error", + { + "quoteProps": "preserve", + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false + } + ], + "no-bitwise": 0, + "prefer-const": "warn", + "no-console": ["error", { "allow": ["warn", "error"] }] }, - "globals": { - "module": true - } -} \ No newline at end of file + "plugins": ["prettier"] +} diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000000..a5cd90298f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,76 @@ +name: 'Bug Report' +description: 'File a bug report' +labels: ['v3', 'bug', 'triage'] +body: + - type: 'markdown' + attributes: + value: | + ### Before reporting this bug, please... + 1. Check the latest documentation: https://docs.nativebase.io/ + 2. Check for existing open/closed issues for a possible duplicate before creating a new issue: https://github.com/GeekyAnts/NativeBase/issues + 3. Use the latest NativeBase release: https://github.com/GeekyAnts/NativeBase/releases + 4. Check examples from NativeBase KitchenSink https://github.com/GeekyAnts/NativeBase-KitchenSink + 5. For discussion purpose make use of NativeBase discord: https://discord.gg/TSgCw2UPmb + + ### Help us help you better + - type: 'input' + id: 'description' + attributes: + label: 'Description' + description: 'A clear and concise description of what you expected to happen.' + placeholder: | + What's the bug? And why it's a bug? + validations: + required: true + - type: 'input' + id: 'reproduction' + attributes: + label: 'CodeSandbox/Snack link' + description: | + It would be easier for us to debug if you can reproduce the error in a codesandbox link or a snack link. You can use the [codesandbox template](https://codesandbox.io/s/native-base-v3-template-mq6ox)/[snack template](https://snack.expo.io/@mdrehman/nativebase-template). + placeholder: 'https://codesandbox.io/%20%20or%20%20%20https://snack.expo.dev/' + validations: + required: true + - type: 'textarea' + id: 'steps' + attributes: + label: 'Steps to reproduce' + description: | + Let us know how we reproduce it too. + value: | + 1. Go to '...' + 2. Click on '...' + 3. Scroll down to '...' + 4. See error + - type: 'input' + id: 'nativebase-version' + attributes: + label: 'NativeBase Version' + description: 'The version of NativeBase you use.' + placeholder: '3.3.1' + validations: + required: true + - type: 'checkboxes' + id: 'platform' + attributes: + label: 'Platform' + description: 'The platform(s) this issue occurred on' + options: + - label: 'Android' + - label: 'CRA' + - label: 'Expo' + - label: 'iOS' + - label: 'Next' + - type: 'input' + id: 'other-platform' + attributes: + label: 'Other Platform' + description: 'Any other platform besides the above one(s)' + placeholder: 'extra platform(s)' + - type: 'textarea' + id: 'additional-information' + attributes: + label: 'Additional Information' + description: | + Use this section to provide any additional information you might have like screenshots, notes, or links to ideas. + placeholder: 'Any and every additional information is always welcome' diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..5369c78506 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Join us on Discord + url: https://discord.gg/kcbuQWQv + about: Be the part of the community diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000000..2fa7a30d72 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,54 @@ +name: 'Feature Request' +description: 'Request a feature or enhancement' +labels: ['v3', 'feature request', 'triage'] +body: + - type: 'markdown' + attributes: + value: | + Thanks for filing an issue! + + Please search open/closed issues before submitting. Someone might have asked the same thing before! + + ### Help us help you better + - type: 'textarea' + id: 'description' + attributes: + label: 'Description' + description: 'Describe your request as clearly as possible.' + placeholder: "We'll love to know in depth about this feature" + validations: + required: true + - type: 'textarea' + id: 'justification' + attributes: + label: 'Problem Statement' + description: | + Please provide valid reason(s) why this should be a part of NativeBase + + Does this feature meant to solve an existing problem, if so please mention it as well. + placeholder: 'Tell us What? Why? and How?' + validations: + required: true + - type: 'textarea' + id: 'proposed-solution' + attributes: + label: 'Proposed Solution or API' + description: | + Please provide code snippets, gists, or links to the ideal design or API. + placeholder: "We know whatever you're it is, its awesome" + validations: + required: true + - type: 'textarea' + id: 'alternatives' + attributes: + label: 'Alternatives' + description: | + What alternative solutions have you considered before making this request? + placeholder: 'Please share if you know any alternative solutions as well' + - type: 'textarea' + id: 'additional-information' + attributes: + label: 'Additional Information' + description: | + What resources (links, screenshots, etc.) do you have to assist this effort? + placeholder: 'Any and every additional information is always welcome' diff --git a/.github/auto_assign.yml b/.github/auto_assign.yml new file mode 100644 index 0000000000..edf24e1438 --- /dev/null +++ b/.github/auto_assign.yml @@ -0,0 +1,26 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: false + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - surajahmed + - rayan1810 + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 1 +# A list of assignees, overrides reviewers if set +# assignees: +# - assigneeA + +# A number of assignees to add to the pull request +# Set to 0 to add all of the assignees. +# Uses numberOfReviewers if unset. +# numberOfAssignees: 2 + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +# skipKeywords: +# - wip diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000000..073b9af6d2 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,17 @@ + + +## Summary + + + +## Changelog + + + +[CATEGORY] [TYPE] - Message + +## Test Plan + + diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..5c47e4676c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,26 @@ +name: Build + +on: + push: + branches: + - master + + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - uses: sonarsource/sonarqube-scan-action@master + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} + # If you wish to fail your job when the Quality Gate is red, uncomment the + # following lines. This would typically be used to fail a deployment. + # - uses: sonarsource/sonarqube-quality-gate-action@master + # timeout-minutes: 5 + # env: + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.gitignore b/.gitignore index 763d3c28c8..fc24e65763 100644 --- a/.gitignore +++ b/.gitignore @@ -1,77 +1,13 @@ -### OSX ### +# OSX +# .DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - - -### Node ### -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt +# XDE +.expo/ -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules -jspm_packages - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history - - -### Xcode ### # Xcode # -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - -## Build generated build/ -DerivedData/ - -## Various settings *.pbxuser !default.pbxuser *.mode1v3 @@ -80,54 +16,47 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata/ - -## Other -*.moved-aside +xcuserdata *.xccheckout -*.xcscmblueprint - - -### Android ### -# Built application files -*.apk -*.ap_ - -# Files for the Dalvik VM -*.dex - -# Java class files -*.class - -# Generated files -bin/ -gen/ -out/ - -# Gradle files -.gradle/ -build/ +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace -# Local configuration file (sdk path, etc) +# Android/IJ +# +.idea +.gradle local.properties +android.iml -# Proguard folder generated by Eclipse -proguard/ - -# Log Files -*.log - -# Android Studio Navigation editor temp files -.navigation/ - -# Android Studio captures folder -captures/ - -# Intellij -*.iml +# Cocoapods +# +RNBareExample/ios/Pods -# Keystore files -*.jks +# node.js +# +node_modules/ +npm-debug.log +yarn-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +android/app/libs +android/keystores/debug.keystore + +# Expo +.expo/* + +# generated by bob +lib/ +src/jest/mock.ts +node_modules -### Android Patch ### -gen-external-apklibs +# personal +.env +.npmrc \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000000..d5ac4e3cf0 --- /dev/null +++ b/.npmignore @@ -0,0 +1,21 @@ +# Dotfiles +.babelrc +.eslintignore +.eslintrc.json +.gitattributes +_config.yml + +# Documents +CONTRIBUTING.md +ISSUE_TEMPLATE.txt +img + +# Test cases +__tests__ +dist/__tests__ + +# Example +example/ +expo-example/ +next-example/ +RNBareExample/ diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..ff650592a1 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16.13.0 diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..16df911260 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,10 @@ +{ + "singleQuote": true, + "jsxBracketSameLine": false, + "useTabs": false, + "eslintIntegration": false, + "tslintIntegration": true, + "parser": "typescript", + "requireConfig": false, + "stylelintIntegration": false +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..7cdc87cfe0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,20 @@ +{ + "javascript.validate.enable": true, + "eslint.format.enable": false, + "eslint.run": "onType", + "tslint.enable": false, + "tslint.autoFixOnSave": true, + "flow.enabled": false, + "editor.tabSize": 2, + "editor.insertSpaces": true, + "editor.formatOnSave": true, + "flow.useNPMPackagedFlow": true, + "editor.formatOnPaste": false, + "prettier.jsxSingleQuote": true, + "prettier.singleQuote": true, + + // Path to a .prettierignore or similar file + "prettier.ignorePath": ".prettierignore", + // If true, puts the `>` of a multi-line jsx element at the end of the last line instead of being alone on the next line + "editor.wordWrap": "on" +} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..269f7df893 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at support@nativebase.io. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..08be6d71fb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,172 @@ +# Contributing to NativeBase + +We'd love for you to contribute to our source code and to make NativeBase even better than it is +today! Here are some guidelines we'd like you to follow: + +- [Code of Conduct](#coc) +- [Ways to Contribute](#wtc) +- [Questions and Problems](#question) +- [Issues and Bugs](#issue) +- [Feature Requests](#feature) +- [Issue Submission Guidelines](#submit) +- [Setting Up Development Environment ](#dev-env) +- [Pull Request Submission Guidelines](#submit-pr) +- [Improving Documentation](#docs) + +## Code of Conduct + +Help us keep NativeBase open and inclusive. Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md). + +## Ways to Contribute + +If you are eager to start contributing code right away, you can go through [NativeBase Bugs](https://github.com/GeekyAnts/NativeBase/issues?q=is%3Aopen+is%3Aissue+label%3Abug) that contain bugs. + +There are other ways you can contribute without writing a single line of code. Here are a few things you can do to help out: + +1. **Replying and handling open issues.** We get a lot of issues every day, and some of them may lack necessary information. You can help out by guiding people through the process of filling out the issue template, asking for clarifying information, or pointing them to existing issues that match their description of the problem. +2. **Reviewing pull requests for the docs.** Reviewing [documentation updates](https://github.com/GeekyAnts/nativebase-docs/pulls) can be as simple as checking for spelling and grammar. If you encounter situations that can be explained better in the docs, click **Edit** at the bottom left of most docs pages to get started with your own contribution. +3. **Help people write test plans.** Some pull requests sent to the main repository may lack a proper test plan. These help reviewers understand how the change was tested, and can speed up the time it takes for a contribution to be accepted. + +Each of these tasks is highly impactful, and maintainers will greatly appreciate your help. + +## Questions, Bugs, Features + +### Got a Question or Problem? + +Do not open issues for general support questions as we want to keep GitHub issues for bug reports +and feature requests. You've got much better chances of getting your question answered on dedicated +support platforms, the best being [Stack Overflow](http://stackoverflow.com/questions/tagged/native-base). + +Stack Overflow is a much better place to ask questions since: + +- there are thousands of people willing to help on Stack Overflow +- questions and answers stay available for public viewing so your question / answer might help + someone else +- Stack Overflow's voting system assures that the best answers are prominently visible. + +To save your and our time, we will systematically close all issues that are requests for general +support and redirect people to the section you are reading right now. + +### Found an Issue or Bug? + +If you find a bug in the source code, you can help us by submitting an issue to our +[GitHub Repository](https://github.com/GeekyAnts/NativeBase/issues). Even better, you can submit a Pull Request with a fix. + +**Please see the [Submission Guidelines](#submit) below.** + +### Missing a Feature? + +You can request a new feature by submitting an issue to our [GitHub Repository](https://github.com/GeekyAnts/NativeBase/issues). + +If you would like to implement a new feature then consider what kind of change it is: + +- **Major Changes** that you wish to contribute to the project should be discussed first in an + [GitHub issue](https://github.com/GeekyAnts/NativeBase/issues) that clearly outlines the changes and benefits of the feature. +- **Small Changes** can directly be crafted and submitted to the [GitHub Repository](https://github.com/GeekyAnts/NativeBase) + as a Pull Request. See the section about [Contributing Code](#submit-pr). + +## Issue Submission Guidelines + +Before you submit your issue search the archive, maybe your question was already answered. + +If your issue appears to be a bug, and hasn't been reported, open a new issue. Help us to maximize +the effort we can spend fixing issues and adding new features, by not reporting duplicate issues. + +The "[new issue](https://github.com/GeekyAnts/NativeBase/issues/new)" form contains a number of prompts that you should fill out to +make it easier to understand and categorize the issue. + +In general, providing the following information will increase the chances of your issue being dealt +with quickly: + +- **Issue Description** - if an error is being thrown a non-minified stack trace helps +- **Motivation for or Use Case** - explain why this is a bug for you +- **NativeBase Version(s)** - is it a regression? +- **Browsers and Operating System** - is this a problem with all browsers or only specific ones? +- **Reproduce the Error** - provide a live example (using [expo snack](https://snack.expo.io/) or an unambiguous set of steps. +- **Related Issues** - has a similar issue been reported before? +- **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be + causing the problem (line of code or commit) + +## Setting Up your Development Environment + +- Fork this repository. + +- Clone your fork of NativeBase: + + ```git + git clone git@github.com:${YOUR_USERNAME}/NativeBase.git + ``` + +- Navigate to NativeBase + + ``` + cd NativeBase/ + ``` + +- Add main repo remote: + + ```git + git remote add nativebase git@github.com:GeekyAnts/NativeBase.git + ``` + +- Install dependencies: + + ```bash + yarn + ``` + +- Move over to the TestBed Example App and install the dependencies : + + ```bash + cd example + yarn + ``` + +- Navigate back to your app: + + ```bash + cd .. + ``` + +- Start the Example App: + + ```bash + yarn example start + ``` + + - To start app directly on Web + ```bash + yarn example web + ``` + - To start app directly on IOS + ```bash + yarn example ios + ``` + - To start app directly on Android + ```bash + yarn example android + ``` + +and start making the changes. + +## Contributing Code + +Code-level contributions to NativeBase come in the form of [pull requests](https://help.github.com/en/articles/about-pull-requests). These are done by forking the repo and making changes locally. Directly in the repo, there is the [`Storybook Testbed` app](/example) that you can run on your device (or simulators) and use to test the changes you're making to NativeBase source. + +The process of proposing a change to NativeBase can be summarized as follows: + +1. Fork the NativeBase repository and create your branch from `master`. +2. Make the desired changes to NativeBase source. Use the `Storybook Testbed` app to test them out. +3. If you've added code that should be tested, add tests. +4. If you've changed APIs, update the documentation, which is available [here](https://github.com/GeekyAnts/nativebase-docs). +5. Ensure the test suite passes, either locally or on CI once you opened a pull request. +6. Make sure your code lints. To keep project away from disputes we make use of **ESLint**, which is really a handy linting tool that enforces strict coding styles and makes sure your files are free from dead code. Each module of NativeBase has bundled ESLint as a dev dependency and checks your code everytime you commit. +7. Push the changes to your fork. +8. Create a pull request to the NativeBase repository. +9. Review and address comments on your pull request. + +If all goes well, your pull request will be merged. If it is not merged, maintainers will do their best to explain the reason why. + +## Helping with Documentation + +The NativeBase documentation is hosted as part of the NativeBase website repository at https://github.com/GeekyAnts/nativebase-docs. The website itself is located at and it is built using [Docusaurus V2](https://v2.docusaurus.io/). If there's anything you'd like to change in the docs, you can get started by clicking on the "Edit" button located on the bottom left of most pages on the website. diff --git a/Components/Base/NativeBaseComponent.js b/Components/Base/NativeBaseComponent.js deleted file mode 100644 index 579f15828c..0000000000 --- a/Components/Base/NativeBaseComponent.js +++ /dev/null @@ -1,37 +0,0 @@ -/* @flow */ -'use strict'; - -import React, {Component} from 'react'; -import lightTheme from '../Themes/light'; - -export default class NativeBaseComponent extends Component { - static contextTypes = { - theme: React.PropTypes.object, - foregroundColor: React.PropTypes.string - } - - static propTypes = { - theme: React.PropTypes.object, - foregroundColor: React.PropTypes.string - } - - static childContextTypes = { - theme: React.PropTypes.object, - foregroundColor: React.PropTypes.string - } - - getChildContext() { - return { - theme: this.props.theme ? this.props.theme : this.getTheme(), - foregroundColor: this.props.foregroundColor ? this.props.foregroundColor : this.getTheme().textColor - }; - } - - getContextForegroundColor() { - return this.context.foregroundColor - } - - getTheme() { - return this.props.theme ? this.props.theme : this.context.theme || lightTheme - } -} \ No newline at end of file diff --git a/Components/Themes/dark.js b/Components/Themes/dark.js deleted file mode 100644 index 00919f5a88..0000000000 --- a/Components/Themes/dark.js +++ /dev/null @@ -1,93 +0,0 @@ -//import Color from 'color'; -import multiply from 'multiplier'; - -var fontSizeBase = 15; -var borderRadiusBase = 4; -var contentPadding = 10; - -module.exports = { - brandPrimary : "#428bca", - brandInfo: "#5bc0de", - brandSuccess: "#5cb85c", - brandDanger: "#d9534f", - brandWarning: "#f0ad4e", - brandSidebar: "#252932", - - inverseTextColor: "#000", - textColor: "#fff", - - fontSizeBase: 15, - - get fontSizeH1 () { - return multiply(fontSizeBase, 1.8); - }, - get fontSizeH2 () { - return multiply(fontSizeBase, 1.6); - }, - get fontSizeH3 () { - return multiply(fontSizeBase, 1.4); - }, - get btnTextSize () { - return multiply(fontSizeBase, 1.2); - }, - - borderRadiusBase: borderRadiusBase, - - get borderRadiusLarge () { - return multiply(fontSizeBase, 5.8); - }, - - toolbarHeight: 70, - toolbarDefaultBg: "#505052", - toolbarInverseBg: "#222", - - get btnPrimaryBg () { - return this.brandPrimary; - }, - get btnPrimaryColor () { - return this.textColor; - }, - get btnSuccessBg () { - return this.brandSuccess; - }, - get btnSuccessColor () { - return this.textColor; - }, - get btnDangerBg () { - return this.brandDanger; - }, - get btnDangerColor () { - return this.textColor; - }, - get btnInfoBg () { - return this.brandInfo; - }, - get btnInfoColor () { - return this.textColor; - }, - get btnWarningBg () { - return this.brandWarning; - }, - get btnWarningColor () { - return this.textColor; - }, - - - inputColor: "#fff", - inputBorderColor: "#fff", - inputHeightBase: 40, - inputGroupMarginBottom: 10, - inputColorPlaceholder: "rgba(256,256,256,0.8)", - inputPaddingLeft: 5, - get inputPaddingLeftIcon () { - return multiply(this.inputPaddingLeft, 8); - }, - - dropdownBg: "#fff", - dropdownLinkColor: "#414142", - - jumbotronPadding: 30, - jumbotronBg: "#C9C9CE", - - contentPadding: contentPadding -} \ No newline at end of file diff --git a/Components/Themes/light.js b/Components/Themes/light.js deleted file mode 100644 index f45432b630..0000000000 --- a/Components/Themes/light.js +++ /dev/null @@ -1,171 +0,0 @@ -import Color from 'color'; - -import {Platform} from 'react-native'; - -export default { - brandPrimary : "#5067FF", - brandInfo: "#5bc0de", - brandSuccess: "#5cb85c", - brandDanger: "#d9534f", - brandWarning: "#f0ad4e", - brandSidebar: "#252932", - - fontFamily: (Platform.OS === 'ios' ) ? 'HelveticaNeue' : 'Roboto', - btnFontFamily: (Platform.OS === 'ios' ) ? 'HelveticaNeue' : 'Roboto_medium', - iconFamily: 'Ionicons', - - inverseTextColor: "#fff", - textColor: "#000", - - subtitleColor: "#8e8e93", - - fontSizeBase: 15, - titleFontSize: (Platform.OS === 'ios' ) ? 17 : 19, - subTitleFontSize: (Platform.OS === 'ios' ) ? 12 : 14, - - inputFontSize: 15, - inputLineHeight: 24, - - get fontSizeH1 () { - return this.fontSizeBase*1.8; - }, - get fontSizeH2 () { - return this.fontSizeBase* 1.6; - }, - get fontSizeH3 () { - return this.fontSizeBase* 1.4; - }, - get btnTextSize () { - return (Platform.OS==='ios') ? this.fontSizeBase* 1.1 : this.fontSizeBase-1; - }, - get btnTextSizeLarge () { - return this.fontSizeBase* 1.5; - }, - get btnTextSizeSmall () { - return this.fontSizeBase* .8; - }, - get iconSizeLarge () { - return this.iconFontSize* 1.5; - }, - get iconSizeSmall () { - return this.iconFontSize* .6; - }, - - buttonPadding: 6, - - borderRadiusBase: (Platform.OS === 'ios' ) ? 5 : 2, - - get borderRadiusLarge () { - return this.fontSizeBase* 3.8; - }, - - footerHeight: 55, - toolbarHeight: (Platform.OS === 'ios' ) ? 64 : 56, - toolbarDefaultBg: (Platform.OS === 'ios' ) ? "#F8F8F8" : "#039BE5", - toolbarInverseBg: "#222", - - iosToolbarBtnColor: "#007aff", - - toolbarTextColor: (Platform.OS==='ios') ? '#000' : '#fff', - - checkboxBgColor: "#039BE5", - checkboxTickColor: "#fff", - - checkboxSize: 23, - - radioColor: "#7e7e7e", - radioBtnSize: (Platform.OS === 'ios') ? 25 : 23, - - tabBgColor: "#F8F8F8", - tabTextColor: "#fff", - - btnDisabledBg: '#b5b5b5', - btnDisabledClr: '#f1f1f1', - - cardDefaultBg: "#fff", - - get darkenHeader() { - return Color(this.tabBgColor).darken(0.03).hexString(); - }, - get btnPrimaryBg () { - return this.brandPrimary; - }, - get btnPrimaryColor () { - return this.inverseTextColor; - }, - get btnSuccessBg () { - return this.brandSuccess; - }, - get btnSuccessColor () { - return this.inverseTextColor; - }, - get btnDangerBg () { - return this.brandDanger; - }, - get btnDangerColor () { - return this.inverseTextColor; - }, - get btnInfoBg () { - return this.brandInfo; - }, - get btnInfoColor () { - return this.inverseTextColor; - }, - get btnWarningBg () { - return this.brandWarning; - }, - get btnWarningColor () { - return this.inverseTextColor; - }, - - borderWidth: 1, - iconMargin: 7, - - get inputColor () { - return this.textColor; - }, - get inputColorPlaceholder () { - return '#575757'; - }, - inputBorderColor: "#D9D5DC", - inputHeightBase: 40, - inputGroupMarginBottom: 10, - inputPaddingLeft: 5, - get inputPaddingLeftIcon () { - return this.inputPaddingLeft* 8; - }, - - btnLineHeight: 19, - - dropdownBg: "#000", - dropdownLinkColor: "#414142", - - jumbotronPadding: 30, - jumbotronBg: "#C9C9CE", - - contentPadding: 10, - - listBorderColor: "#ddd", - listDividerBg: "#ddd", - listItemPadding: 9, - listNoteColor: "#808080", - listNoteSize: 13, - - iconFontSize: (Platform.OS === 'ios' ) ? 30 : 28, - - badgeColor: "#fff", - badgeBg: "#ED1727", - - lineHeight: (Platform.OS === 'ios' ) ? 20 : 24, - iconLineHeight: (Platform.OS === 'ios' ) ? 37 : 30, - - toolbarIconSize: (Platform.OS === 'ios' ) ? 20 : 22, - - toolbarInputColor: "#CECDD2", - - defaultSpinnerColor: "#45D56E", - inverseSpinnerColor: "#1A191B", - - defaultProgressColor: "#E4202D", - inverseProgressColor: "#1A191B" -} diff --git a/Components/Widgets/Badge.js b/Components/Widgets/Badge.js deleted file mode 100644 index 934d25a456..0000000000 --- a/Components/Widgets/Badge.js +++ /dev/null @@ -1,48 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -import Text from "./Text"; - - -export default class BadgeNB extends NativeBaseComponent { - - prepareRootProps() { - - var type = { - - backgroundColor: this.props.primary ? this.getTheme().brandPrimary : this.props.success ? this.getTheme().brandSuccess : - this.props.info ? this.getTheme().brandInfo : this.props.warning ? this.getTheme().brandWarning : - this.props.danger ? this.getTheme().brandDanger : this.getTheme().badgeBg, - padding: 3, - paddingHorizontal: 10, - alignSelf: 'flex-start', - borderRadius: 13.5, - height: 27 - - - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - - } - render() { - return( - - {this.props.children} - - - ); - } - -} diff --git a/Components/Widgets/Button.js b/Components/Widgets/Button.js deleted file mode 100644 index 7ed48fe94d..0000000000 --- a/Components/Widgets/Button.js +++ /dev/null @@ -1,174 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import { TouchableOpacity, Platform } from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -import IconNB from './Icon'; -import Icon from './Icon'; -import Text from './Text'; -import _ from 'lodash'; - - -export default class Button extends NativeBaseComponent { - - getInitialStyle() { - return { - button: { - paddingVertical: this.getTheme().buttonPadding, - paddingHorizontal: this.getTheme().buttonPadding+2, - justifyContent: (this.props.block) ? 'center' : 'space-around', - flexDirection: 'row', - alignSelf: 'center', - alignItems: 'center', - backgroundColor: this.getTheme().btnPrimaryBg, - elevation: (this.props.transparent || this.props.bordered) ? 0 : 4, - shadowColor: (this.props.transparent || this.props.bordered) ? undefined : '#000', - shadowOffset: (this.props.transparent || this.props.bordered) ? undefined : {width: 0, height: 2}, - shadowOpacity: (this.props.transparent || this.props.bordered) ? undefined : 0.2, - shadowRadius: (this.props.transparent || this.props.bordered) ? undefined : 2 - } - } - } - - prepareRootProps() { - - var type = { - backgroundColor: (this.props.primary) ? this.getTheme().btnPrimaryBg : - ((this.props.transparent) || (this.props.bordered)) ? 'rgba(0,0,0,0)' : - (this.props.success) ? this.getTheme().btnSuccessBg : - (this.props.danger) ? this.getTheme().btnDangerBg : - (this.props.warning) ? this.getTheme().btnWarningBg : - (this.props.info) ? this.getTheme().btnInfoBg : - (this.props.backgroundColor) ? this.props.backgroundColor : - (this.props.disabled) ? this.getTheme().btnDisabledBg : - this.getInitialStyle().button.backgroundColor, - borderRadius: (this.props.rounded) ? this.getTheme().borderRadiusLarge : this.getTheme().borderRadiusBase, - borderWidth: (this.props.bordered) ? 1 : 0, - borderColor: (this.props.primary) ? this.getTheme().primary : - (this.props.success) ? this.getTheme().btnSuccessBg : - (this.props.danger) ? this.getTheme().btnDangerBg : - (this.props.warning) ? this.getTheme().btnWarningBg : - (this.props.info) ? this.getTheme().btnInfoBg : - this.getInitialStyle().button.backgroundColor, - height: (this.props.large) ? 60 : (this.props.small) ? 35 : 38, - alignSelf: (this.props.block) ? 'stretch' : 'flex-start' - } - - var addedProps = _.merge(this.getInitialStyle().button,type); - - var defaultProps = { - style: addedProps - } - - - return computeProps(this.props, defaultProps); - } - - getTextStyle() { - - var mergedStyle = {}; - var btnType = { - fontFamily: this.getTheme().btnFontFamily, - marginLeft: (this.iconPresent() && !this.props.iconRight) ? this.getTheme().iconMargin : 0, - marginRight: (this.iconPresent() && this.props.iconRight) ? this.getTheme().iconMargin : 0, - color: - ((this.props.bordered) && (this.props.primary)) ? this.getTheme().btnPrimaryBg : - ((this.props.bordered) && (this.props.success)) ? this.getTheme().btnSuccessBg : - ((this.props.bordered) && (this.props.danger)) ? this.getTheme().btnDangerBg : - ((this.props.bordered) && (this.props.warning)) ? this.getTheme().btnWarningBg : - ((this.props.bordered) && (this.props.info)) ? this.getTheme().btnInfoBg : - ((this.props.bordered)) ? this.getTheme().btnPrimaryBg : - (this.props.color) ? this.props.color : - (this.props.transparent) ? this.getContextForegroundColor() : - this.getTheme().inverseTextColor, - - fontSize: (this.props.large) ? this.getTheme().btnTextSizeLarge : (this.props.small) ? this.getTheme().btnTextSizeSmall : this.getTheme().btnTextSize, - - lineHeight: (this.props.large) ? 29 : (this.props.small) ? 16 : this.getTheme().btnLineHeight - } - - return _.merge(mergedStyle, btnType, this.props.textStyle); - } - - getIconProps(icon) { - - var defaultStyle = { - color: - ((this.props.bordered) && (this.props.primary)) ? this.getTheme().btnPrimaryBg : - ((this.props.bordered) && (this.props.success)) ? this.getTheme().btnSuccessBg : - ((this.props.bordered) && (this.props.danger)) ? this.getTheme().btnDangerBg : - ((this.props.bordered) && (this.props.warning)) ? this.getTheme().btnWarningBg : - ((this.props.bordered) && (this.props.info)) ? this.getTheme().btnInfoBg : - (this.props.bordered) ? this.getTheme().btnPrimaryBg : - (this.props.color) ? this.props.color : - (this.props.header) ? this.getTheme().toolbarTextColor : - (this.props.transparent) ? this.getContextForegroundColor() : - this.getTheme().inverseTextColor, - - fontSize: (this.props.large) ? this.getTheme().iconSizeLarge : (this.props.small) ? this.getTheme().iconSizeSmall : (this.props.inputButton) ? this.getTheme().toolbarIconSize : this.getTheme().iconFontSize-5, - lineHeight: (this.props.large) ? 52: (this.props.small || this.props.inputButton) ? 22 : this.getTheme().iconLineHeight-9 - } - - var defaultProps = { - style: defaultStyle - } - - return computeProps(icon.props, defaultProps); - } - iconPresent() { - var iconComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Icon) - iconComponentPresent = true; - }) - return iconComponentPresent; - } - renderChildren() { - if(typeof this.props.children == "string") { - return {(Platform.OS==='ios') ? this.props.children : this.props.children.toUpperCase()} - } - - else if(this.props.children.type == IconNB) { - return React.cloneElement(this.props.children, this.getIconProps(this.props.children)); - } - - else if(Array.isArray(this.props.children)) { - var newChildren = []; - - var childrenArray = React.Children.toArray(this.props.children); - - var iconElement = []; - iconElement = _.remove(childrenArray, function(item) { - if(item.type == IconNB) { - return true; - } - }); - if(this.props.iconRight) { - newChildren.push({(Platform.OS==='ios') ? childrenArray[0] : childrenArray[0].toUpperCase()}); - newChildren.push({React.cloneElement(iconElement[0], this.getIconProps(iconElement[0]))}); - } - - else if(this.props.iconLeft || iconElement) { - newChildren.push({React.cloneElement(iconElement[0], this.getIconProps(iconElement[0]))}); - newChildren.push({(Platform.OS==='ios') ? childrenArray[0] : childrenArray[0].toUpperCase()}); - } - - return newChildren; - - } - - else - return React.cloneElement(this.props.children); - - } - - render() { - return( - - {this.renderChildren()} - - ); - } -} diff --git a/Components/Widgets/Card.js b/Components/Widgets/Card.js deleted file mode 100644 index 9483c69921..0000000000 --- a/Components/Widgets/Card.js +++ /dev/null @@ -1,56 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - -export default class CardNB extends NativeBaseComponent { - - getInitialStyle() { - return { - card: { - flex: 1, - borderWidth: this.getTheme().borderWidth, - borderRadius: this.getTheme().borderRadiusBase, - borderColor: this.getTheme().listBorderColor, - flexWrap: 'wrap', - borderBottomWidth: 0, - backgroundColor: this.props.transparent? 'transparent' : this.getTheme().cardDefaultBg, - shadowColor: this.props.transparent ? undefined : '#000', - shadowOffset: this.props.transparent ? undefined : {width: 0, height: 2}, - shadowOpacity: this.props.transparent ? undefined : 0.1, - shadowRadius: this.props.transparent ? undefined : 1.5, - elevation: this.props.transparent ? undefined : 1 - } - } - } - - prepareRootProps() { - - var defaultProps = { - style: this.getInitialStyle().card - }; - - return computeProps(this.props, defaultProps); - - } - - renderChildren() { - var childrenArray = React.Children.map(this.props.children, (child) => { - return child; - }); - - return childrenArray; - } - - render() { - return( - - {this.renderChildren()} - - ); - } - -} diff --git a/Components/Widgets/CardItem.js b/Components/Widgets/CardItem.js deleted file mode 100644 index f48de7bd30..0000000000 --- a/Components/Widgets/CardItem.js +++ /dev/null @@ -1,292 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {Image} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -import Icon from './Icon'; -import Text from './Text'; -import View from './View'; -import Button from './Button'; -import Thumbnail from './Thumbnail'; - -export default class CardItemNB extends NativeBaseComponent { - - getInitialStyle() { - return { - listItem: { - borderBottomWidth: this.getTheme().borderWidth, - padding: (this.imagePresent() && !this.ifShowCase()) ? 0 : this.getTheme().listItemPadding, - backgroundColor: this.getTheme().listBg, - justifyContent: (this.buttonPresent()) ? 'space-between' : 'flex-start', - flexDirection: (this.thumbnailPresent() || this.iconPresent() || (this.notePresent() && this.ifShowCase())) ? 'row' : 'column', - borderColor: this.getTheme().listBorderColor - }, - listItemDivider: { - borderBottomWidth: this.getTheme().borderWidth, - padding: this.getTheme().listItemPadding, - backgroundColor: this.getTheme().listDividerBg, - justifyContent: (this.buttonPresent()) ? 'space-between' : 'flex-start', - flexDirection: 'row', - borderColor: this.getTheme().listBorderColor - }, - itemText: { - fontSize: this.ifShowCase() ? 14 : 15, - marginTop: this.ifShowCase() ? 10 : 0, - color: this.getContextForegroundColor() - }, - dividerItemText: { - fontSize: 16, - fontWeight: '500', - color: this.getContextForegroundColor() - }, - itemIcon: { - fontSize: this.getTheme().iconFontSize, - color: this.getContextForegroundColor() - }, - itemNote: { - fontSize: 15, - color: this.getTheme().listNoteColor, - fontWeight: '100', - flex: 1 - }, - itemSubNote: { - fontSize: 15, - color: '#999' - }, - thumbnail: { - alignSelf: 'center' - }, - fullImage: { - alignSelf: 'stretch', - height: this.ifShowCase() ? 120 : 300 - } - } - } - getRightStyle() { - return { - right : { - flex: 1, - paddingLeft: 10, - backgroundColor: 'transparent' - }, - right2 : { - flex: 1, - flexDirection: 'row', - paddingLeft: 10, - alignItems: 'center', - justifyContent: 'space-between', - backgroundColor: 'transparent' - }, - right3 : { - flex: 1, - flexDirection: 'column', - paddingLeft: 10, - justifyContent: 'flex-start', - backgroundColor: 'transparent' - } - } - } - - thumbnailPresent() { - var thumbnailComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Thumbnail) - thumbnailComponentPresent = true; - }) - - return thumbnailComponentPresent; - } - - imagePresent() { - var imagePresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Image) - imagePresent = true; - }) - - return imagePresent; - } - - iconPresent() { - var iconComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Icon) - iconComponentPresent = true; - }) - - return iconComponentPresent; - } - - buttonPresent() { - var buttonComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Button) - buttonComponentPresent = true; - }) - - return buttonComponentPresent; - } - - ifShowCase() { - var ifShowCase = false; - - if(this.props.cardBody) { - ifShowCase = true; - } - - - return ifShowCase; - } - - notePresent() { - var notePresent = false; - - React.Children.forEach(this.props.children, function (child) { - if(child.type == Text && child.props.note) - notePresent = true; - }); - - return notePresent; - } - - squareThumbs() { - var squareThumbs = false; - if (this.thumbnailPresent()) { - React.Children.forEach(this.props.children, function (child) { - if(child.props.square) - squareThumbs = true; - }); - } - - return squareThumbs; - } - - getChildProps(child) { - var defaultProps = {}; - if(child.type == Image && !Array.isArray(this.props.children)) { - defaultProps = { - resizeMode: 'stretch', - style: this.getInitialStyle().fullImage - } - } - else if(child.type == Button) { - defaultProps = { - small: true, - style: this.getInitialStyle().itemButton - } - } - else if(child.type == Text) { - if ((this.props.header) || (this.props.footer)) { - defaultProps = { - style: this.getInitialStyle().dividerItemText - } - } - else { - if(child.props.note && this.thumbnailPresent()) { - defaultProps = { - style: this.getInitialStyle().itemSubNote - } - } - else if(child.props.note) { - defaultProps = { - style: this.getInitialStyle().itemNote - } - } - else { - defaultProps = { - style: this.getInitialStyle().itemText - } - } - } - } - else if(child.type == Icon) { - defaultProps = { - style: this.getInitialStyle().itemIcon - } - } - else if(child.type == Thumbnail) { - defaultProps = { - style: this.getInitialStyle().thumbnail - } - } - else if(child.type == Image ) { - defaultProps = { - style: this.getInitialStyle().fullImage - } - } - else { - defaultProps = { - foregroundColor: this.getContextForegroundColor() - } - } - - return computeProps(child.props, defaultProps); - } - - prepareRootProps() { - var defaultProps = {}; - - if((this.props.header) || (this.props.footer)) { - - defaultProps = { - style: this.getInitialStyle().listItemDivider - }; - } - - else { - defaultProps = { - style: this.getInitialStyle().listItem - }; - } - - return computeProps(this.props, defaultProps); - } - - - - - renderChildren() { - var newChildren = []; - - if(!this.thumbnailPresent() && !this.iconPresent()) { - newChildren = React.Children.map(this.props.children, (child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - }); - } - else { - newChildren = []; - if(!Array.isArray(this.props.children)) { - newChildren.push( - - {React.cloneElement(this.props.children, this.getChildProps(this.props.children))} - - ); - } - else { - - var childrenArray = React.Children.toArray(this.props.children); - newChildren.push(React.cloneElement(childrenArray[0], this.getChildProps(childrenArray[0]))); - newChildren.push( - - {childrenArray.slice(1).map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - })} - - ); - } - } - - return newChildren; - } - - - render() { - return( - - {this.renderChildren()} - - ); - } -} diff --git a/Components/Widgets/Checkbox.js b/Components/Widgets/Checkbox.js deleted file mode 100644 index 11099971ca..0000000000 --- a/Components/Widgets/Checkbox.js +++ /dev/null @@ -1,34 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View, Platform} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import Icon from "./Icon"; - -export default class CheckBox extends NativeBaseComponent { - - getInitialStyle() { - return { - checkbox: { - borderRadius: (Platform.OS === 'ios') ? 13 : 2, - overflow: 'hidden', - width: this.getTheme().checkboxSize, - height: this.getTheme().checkboxSize, - borderWidth: (Platform.OS === 'ios') ? 1 : 2, - paddingLeft: (Platform.OS === 'ios') ? 5 : 2, - paddingBottom: (Platform.OS === 'ios') ? 0 : 5, - borderColor: this.getTheme().checkboxBgColor, - backgroundColor: this.props.checked ? this.getTheme().checkboxBgColor : 'transparent' - } - } - } - - render() { - return( - - - - ); - } -} diff --git a/Components/Widgets/Container.js b/Components/Widgets/Container.js deleted file mode 100644 index e6e985e3f7..0000000000 --- a/Components/Widgets/Container.js +++ /dev/null @@ -1,96 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View, Image} from 'react-native'; -import ViewNB from './View'; -import Header from './Header'; -import Content from './Content'; -import Footer from './Footer'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import _ from 'lodash'; -import computeProps from '../../Utils/computeProps'; - -export default class Container extends NativeBaseComponent { - - renderHeader() { - if(Array.isArray(this.props.children)) { - return _.find(this.props.children, function(item) { - if(item && item.type == Header) { - return true; - } - }); - } - - else { - if(this.props.children && this.props.children.type == Header) { - return this.props.children; - } - } - } - renderContent() { - if(Array.isArray(this.props.children)) { - - return _.find(this.props.children, function(item) { - if(item && (item.type == ViewNB || item.type == Content || item.type == Image || item.type == View)) { - - return true; - } - }); - } - - else { - if(this.props.children && (this.props.children.type == Content || this.props.children.type == ViewNB || this.props.children.type == View || this.props.children.type == Image)) { - return this.props.children; - } - } - } - renderFooter() { - if(Array.isArray(this.props.children)) { - return _.find(this.props.children, function(item) { - if(item && item.type == Footer) { - return true; - } - }); - } - - else { - if(this.props.children && this.props.children.type == Footer) { - return this.props.children; - } - } - } - prepareRootProps() { - - var type = { - flex: 1 - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - } - render() { - return( - - - - {this.renderHeader()} - - - - - {this.renderContent()} - - - - {this.renderFooter()} - - - ); - - } - -} diff --git a/Components/Widgets/Content.js b/Components/Widgets/Content.js deleted file mode 100644 index e07bb72e1c..0000000000 --- a/Components/Widgets/Content.js +++ /dev/null @@ -1,33 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - - -export default class Content extends NativeBaseComponent { - - prepareRootProps() { - - var type = { - backgroundColor: 'transparent', - flex: 1 - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - } - - render() { - const contentContainerStyle = this.props.contentContainerStyle || {}; - contentContainerStyle.padding = (this.props.padder) ? this.getTheme().contentPadding : 0; - return( - {this.props.children} - ); - } -} diff --git a/Components/Widgets/Footer.js b/Components/Widgets/Footer.js deleted file mode 100644 index 5f3ef47765..0000000000 --- a/Components/Widgets/Footer.js +++ /dev/null @@ -1,63 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - -export default class Footer extends NativeBaseComponent { - - getInitialStyle() { - return { - navbar: { - shadowColor: '#000', - shadowOffset: {width: 0, height: 2}, - shadowOpacity: 0.1, - shadowRadius: 1.5, - flexDirection: 'row', - alignItems: 'center', - justifyContent: (!Array.isArray(this.props.children)) ? 'center' : 'space-between', - height: this.getTheme().footerHeight, - backgroundColor: this.getTheme().footerDefaultBg - } - } - } - - prepareRootProps() { - - var defaultProps = { - style: this.getInitialStyle().navbar - }; - - return computeProps(this.props, defaultProps); - - } - - render() { - - return( - - { !Array.isArray(this.props.children) && - - {this.props.children} - } - - { Array.isArray(this.props.children) && - - {this.props.children[0]} - } - - { Array.isArray(this.props.children) && - - {this.props.children[1]} - } - - { Array.isArray(this.props.children) && - - {this.props.children[2]} - } - - ); - } -} diff --git a/Components/Widgets/H1.js b/Components/Widgets/H1.js deleted file mode 100644 index ff06518ba9..0000000000 --- a/Components/Widgets/H1.js +++ /dev/null @@ -1,30 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import Text from './Text'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - - -export default class H1NB extends NativeBaseComponent { - - prepareRootProps() { - - var type = { - color: this.getTheme().textColor, - fontSize: this.getTheme().fontSizeH1 - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - } - render() { - return( - {this.props.children} - ); - } -} diff --git a/Components/Widgets/H2.js b/Components/Widgets/H2.js deleted file mode 100644 index 5b3e672620..0000000000 --- a/Components/Widgets/H2.js +++ /dev/null @@ -1,31 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import Text from './Text'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - - -export default class H2NB extends NativeBaseComponent { - - prepareRootProps() { - - var type = { - color: this.getTheme().textColor, - fontSize: this.getTheme().fontSizeH2 - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - } - render() { - return( - {this.props.children} - ); - } - -} diff --git a/Components/Widgets/H3.js b/Components/Widgets/H3.js deleted file mode 100644 index 1e73d32403..0000000000 --- a/Components/Widgets/H3.js +++ /dev/null @@ -1,31 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import Text from './Text'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - - -export default class H3NB extends NativeBaseComponent { - - prepareRootProps() { - - var type = { - color: this.getTheme().textColor, - fontSize: this.getTheme().fontSizeH3 - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - } - render() { - return( - {this.props.children} - ); - } - -} diff --git a/Components/Widgets/Header.js b/Components/Widgets/Header.js deleted file mode 100644 index b682cc9964..0000000000 --- a/Components/Widgets/Header.js +++ /dev/null @@ -1,159 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import { Platform} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -import Button from "./Button"; -import View from "./View"; -import Title from "./Title"; -import InputGroup from "./InputGroup"; -import Subtitle from "./Subtitle"; -import _ from 'lodash'; - -export default class Header extends NativeBaseComponent { - - getInitialStyle() { - return { - navbar: { - backgroundColor: this.getTheme().toolbarDefaultBg, - justifyContent: (!Array.isArray(this.props.children)) ? 'center' : 'space-between', - flexDirection: 'row', - alignItems: 'center', - paddingHorizontal: 15, - paddingTop: (Platform.OS === 'ios' ) ? 15 : 0, - shadowColor: '#000', - shadowOffset: {width: 0, height: 2}, - shadowOpacity: 0.1, - shadowRadius: 1.5, - height: this.getTheme().toolbarHeight, - elevation: 3 - }, - iosToolbarSearch: { - backgroundColor: this.getTheme().toolbarInputColor, - borderRadius: this.props.rounded ? 25 : 2, - height: 30, - borderColor: 'transparent', - flex:1 - }, - androidToolbarSearch: { - backgroundColor: "#fff", - borderRadius: 2, - borderColor: 'transparent', - elevation: 2, - flex:1 - }, - toolbarButton: { - paddingHorizontal: 15 - } - } - } - - prepareRootProps() { - - var defaultProps = { - style: this.getInitialStyle().navbar - }; - - return computeProps(this.props, defaultProps); - - } - renderChildren() { - if(!Array.isArray(this.props.children)) { - return this.props.children; - } - - else if (Array.isArray(this.props.children)) { - var newChildren = []; - var childrenArray = React.Children.toArray(this.props.children); - - var buttons = []; - buttons = _.remove(childrenArray, function(item) { - if(item.type == Button) { - return true; - } - }); - - var title = []; - title = _.remove(childrenArray, function(item) { - if(item.type == Title) { - return true; - } - }); - - var subtitle = []; - subtitle = _.remove(childrenArray, function(item) { - if(item.type == Subtitle) { - return true; - } - }); - - var input = []; - input = _.remove(childrenArray, function(item) { - if(item.type == InputGroup) { - return true; - } - }); - - - if (this.props.searchBar) { - if (Platform.OS === 'ios') { - newChildren.push( - {React.cloneElement(input[0],{style: this.getInitialStyle().iosToolbarSearch, toolbar : true, key : 'inp'})} - ) - newChildren.push( - {React.cloneElement(buttons[0], {color: this.getTheme().iosToolbarBtnColor, style: this.getInitialStyle().toolbarButton})} - ) - } else { - newChildren.push( - {React.cloneElement(input[0],{style: this.getInitialStyle().androidToolbarSearch, atoolbar : true})} - ) - } - } - else { - if (Platform.OS === 'ios') { - newChildren.push( - {React.cloneElement(buttons[0], {color: this.getTheme().iosToolbarBtnColor, style: this.getInitialStyle().toolbarButton})} - ) - newChildren.push( - {[title[0],subtitle[0]]} - ) - if (buttons.length>1) { - for (let i = 1; i < buttons.length; i++) { - newChildren.push( - {React.cloneElement(buttons[i], {color: this.getTheme().iosToolbarBtnColor, style: this.getInitialStyle().toolbarButton})} - ) - } - } else { - newChildren.push() - } - } - else { - newChildren.push( - {React.cloneElement(buttons[0], {style: this.getInitialStyle().toolbarButton, header : true, textStyle: {color: this.getTheme().toolbarTextColor}})} - ) - newChildren.push( - {[title[0]]} - ) - for (let i = 1; i < buttons.length; i++) { - newChildren.push( - {React.cloneElement(buttons[i], {style: this.getInitialStyle().toolbarButton, header : true, textStyle: {color: this.getTheme().toolbarTextColor}})} - ) - - } - } - - } - return newChildren; - } - } - - render() { - return( - - {this.renderChildren()} - - ); - } -} diff --git a/Components/Widgets/Icon.js b/Components/Widgets/Icon.js deleted file mode 100644 index aaa731398a..0000000000 --- a/Components/Widgets/Icon.js +++ /dev/null @@ -1,71 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - -import variables from "../Themes/light"; - -import Ionicons from 'react-native-vector-icons/Ionicons'; -import Entypo from 'react-native-vector-icons/Entypo'; -import FontAwesome from 'react-native-vector-icons/FontAwesome'; -import Foundation from 'react-native-vector-icons/Foundation'; -import MaterialIcons from 'react-native-vector-icons/MaterialIcons'; -import Octicons from 'react-native-vector-icons/Octicons'; -import Zocial from 'react-native-vector-icons/Zocial'; - -var Icon; - -switch(variables.iconFamily) { - case "Ionicons": - Icon = Ionicons; - break; - case "Entypo": - Icon = Entypo; - break; - case "FontAwesome": - Icon = FontAwesome; - break; - case "Foundation": - Icon = Foundation; - break; - case "MaterialIcons": - Icon = MaterialIcons; - break; - case "Octicons": - Icon = Octicons; - break; - case "Zocial": - Icon = Zocial; - break; - default: - Icon = Ionicons; -} - - -export default class IconNB extends NativeBaseComponent { - - getInitialStyle() { - return { - icon: { - fontSize: this.getTheme().iconFontSize, - color: this.getContextForegroundColor() - } - } - } - prepareRootProps() { - var defaultProps = { - style: this.getInitialStyle().icon - }; - - return computeProps(this.props, defaultProps); - - } - - render() { - return( - - ); - } -} diff --git a/Components/Widgets/Input.js b/Components/Widgets/Input.js deleted file mode 100644 index 71734adda7..0000000000 --- a/Components/Widgets/Input.js +++ /dev/null @@ -1,38 +0,0 @@ -/* @flow */ -'use strict'; -import React from 'react'; -import {View, TextInput} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -export default class Input extends NativeBaseComponent { - - getInitialStyle() { - return { - input: { - height: this.getTheme().inputHeightBase, - color: this.getTheme().inputColor, - paddingLeft: 5, - paddingRight: 5, - fontSize: this.getTheme().inputFontSize, - lineHeight: this.getTheme().inputLineHeight - } - } - } - - prepareRootProps() { - var defaultProps = { - style: this.getInitialStyle().input - } - - return computeProps(this.props, defaultProps); - } - render() { - - return ( - - - - ); - } - -} diff --git a/Components/Widgets/InputGroup.js b/Components/Widgets/InputGroup.js deleted file mode 100644 index 40c6118aa7..0000000000 --- a/Components/Widgets/InputGroup.js +++ /dev/null @@ -1,209 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import Icon from './Icon'; -import Button from './Button'; -import computeProps from '../../Utils/computeProps'; -import Input from './Input'; -import _ from 'lodash'; - -export default class InputGroup extends NativeBaseComponent { - - getInitialStyle() { - return { - textInput: { - backgroundColor: 'transparent', - flexDirection: 'row', - borderColor: this.getTheme().inputBorderColor, - paddingRight: 5, - alignItems: 'center' - }, - outerBorder: { - position:'relative', - borderColor: 'white', - borderWidth: this.getTheme().borderWidth, - borderTopWidth: 0, - borderRightWidth: 0, - borderLeftWidth: 0 - }, - darkborder: { - borderColor: '#000' - }, - lightborder: { - borderColor: '#fff' - }, - underline: { - position:'relative', - borderWidth: this.getTheme().borderWidth, - borderTopWidth: 0, - borderRightWidth: 0, - borderLeftWidth: 0 - }, - - bordered: { - position:'relative', - borderWidth: this.getTheme().borderWidth - }, - - rounded: { - position:'relative', - borderWidth: this.getTheme().borderWidth, - borderRadius: 30 - } - } - } - - prepareRootProps() { - - var type = { - paddingLeft: (this.props.borderType === 'rounded' && !this.props.children.type == Icon) ? 15 : - (this.props.children.type == Icon ) ? this.getTheme().inputPaddingLeftIcon : 5 - } - - var defaultStyle = (this.props.borderType === 'regular') ? this.getInitialStyle().bordered : (this.props.borderType === 'rounded') ? this.getInitialStyle().rounded : this.getInitialStyle().underline; - - type = _.merge(type, defaultStyle); - - var addedProps = _.merge(this.getInitialStyle().textInput, type); - - var defaultProps = { - style: addedProps, - key: 'inpGroup' - } - - return computeProps(this.props, defaultProps); - } - - getIconProps(icon) { - - var defaultStyle = { - fontSize: (this.props.toolbar || this.props.atoolbar) ? this.getTheme().toolbarIconSize : 27, - alignSelf: 'center', - lineHeight: (this.props.toolbar || this.props.atoolbar) ? 24 : undefined, - paddingRight: 5, - marginLeft: (this.props.toolbar || this.props.atoolbar) ? 5 : undefined - } - - var defaultProps = { - style: defaultStyle, - key: 'icon' - } - - return computeProps(icon.props, defaultProps); - } - getButtonProps(button) { - - var defaultStyle = { - alignSelf: 'center', - paddingRight: 5, - marginLeft: (this.props.toolbar || this.props.atoolbar) ? 5 : undefined, - height: 30 - } - - var defaultProps = { - style: defaultStyle, - key: 'button', - inputButton: true - } - - return computeProps(button.props, defaultProps); - } - - - renderChildren() { - - var inputProps = {}; - var newChildren = []; - var childrenArray = React.Children.toArray(this.props.children); - - var iconElement = []; - iconElement = _.remove(childrenArray, function(item) { - if(item.type == Icon) { - return true; - } - }); - - var buttonElement = []; - - buttonElement = _.remove(childrenArray, function(item) { - if(item.type == Button) { - return true; - } - }); - - var inp = _.find(childrenArray, function(item) { - if(item && item.type == Input) { - return true; - } - }); - - if(inp) - inputProps = computeProps(this.props, inp.props); - else - inputProps = this.props; - - if(Array.isArray(this.props.children)) { - - if(this.props.iconRight) { - newChildren.push(); - newChildren.push(React.cloneElement(iconElement[0],this.getIconProps(iconElement[0]))); - } - else if(buttonElement.length>0) { - newChildren.push(React.cloneElement( - iconElement[0], - { - ...this.getIconProps(iconElement[0]), - key: 'icon0' - } - )); - newChildren.push(); - newChildren.push(React.cloneElement( - buttonElement[0], - { - ...this.getButtonProps(buttonElement[0]), - key: 'button1' - } - )); - } - else { - if (iconElement.length > 1) { - newChildren.push(React.cloneElement( - iconElement[0], - { - ...this.getIconProps(iconElement[0]), - key: 'icon0' - } - )); - newChildren.push(); - newChildren.push(React.cloneElement( - iconElement[1], - { - ...this.getIconProps(iconElement[1]), - key: 'icon1' - } - )); - } else { - newChildren.push(React.cloneElement(iconElement[0], this.getIconProps(iconElement[0]))); - newChildren.push(); - } - } - } - - else { - newChildren.push(); - } - - return newChildren; - } - - render() { - return ( - - {this.renderChildren()} - - ); - } -} diff --git a/Components/Widgets/List.js b/Components/Widgets/List.js deleted file mode 100644 index 65cacdab03..0000000000 --- a/Components/Widgets/List.js +++ /dev/null @@ -1,72 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View, ListView} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -import _ from 'lodash'; - -export default class ListNB extends NativeBaseComponent { - - getInitialStyle() { - return { - list: { - - }, - insetList: { - borderWidth: 1, - borderColor: this.getTheme().listBorderColor, - margin: 15, - borderBottomWidth: 0 - } - } - } - - - prepareRootProps() { - - var defaultProps = { - style: this.props.inset ? this.getInitialStyle().insetList : this.getInitialStyle().list - }; - - return computeProps(this.props, defaultProps); - } - - renderChildren() { - - var childrenArray = React.Children.toArray(this.props.children); - - var keyIndex = 0; - - childrenArray = childrenArray.map((child) => { - keyIndex++; - return React.cloneElement(child, {...child.props, key: keyIndex}); - }); - - var lastElement = _.last(childrenArray); - - // var modLastElement = React.cloneElement(lastElement, computeProps(lastElement.props, {last: true})); - - return _.concat(_.slice(childrenArray, 0, childrenArray.length - 1), lastElement); - } - - render() { - if(this.props.dataArray && this.props.renderRow) { - const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); - var dataSource = ds.cloneWithRows(this.props.dataArray); - return ( - - ); - } - else - return( - - {this.renderChildren()} - - ); - } -} diff --git a/Components/Widgets/ListItem.js b/Components/Widgets/ListItem.js deleted file mode 100644 index 6bc8666fcf..0000000000 --- a/Components/Widgets/ListItem.js +++ /dev/null @@ -1,496 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {Image, TouchableOpacity, Platform } from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -import Icon from './Icon'; -import Text from './Text'; -import View from './View'; -import Button from './Button'; -import Badge from './Badge'; -import Thumbnail from './Thumbnail'; -import CheckBox from './Checkbox'; -import Radio from './Radio'; -import InputGroup from './InputGroup'; -import _ from 'lodash'; - -export default class ListItemNB extends NativeBaseComponent { - - getInitialStyle() { - - return { - listItem: { - borderBottomWidth: this.getTheme().borderWidth, - marginLeft: 15, - padding: this.inputPresent() ? 0 : this.getTheme().listItemPadding, - paddingLeft: 2, - //borderRadius: 1, - justifyContent: ((this.props.iconRight && !this.props.iconLeft) || (this.props.iconRight && this.props.iconLeft)) ? 'space-between' : 'flex-start', - flexDirection: this.stackedPresent() ? 'column' : 'row', - alignItems: 'center', - borderColor: (this.inputPresent() && !this.inlinePresent() ) ? 'transparent' : this.getTheme().listBorderColor - }, - listItemDivider: { - borderBottomWidth: this.getTheme().borderWidth, - padding: this.getTheme().listItemPadding, - backgroundColor: this.getTheme().listDividerBg, - justifyContent: (this.buttonPresent()) ? 'space-between' : 'flex-start', - flexDirection: 'row', - borderColor: this.getTheme().listBorderColor - }, - itemText: { - fontSize: 16, - marginLeft: (this.props.iconLeft) ? 10 : 0, - color: this.getContextForegroundColor() - }, - dividerItemText: { - fontSize: 16, - fontWeight: '500' - }, - itemIcon: { - fontSize: this.getTheme().iconFontSize, - color: this.getContextForegroundColor(), - lineHeight: (Platform.OS === 'ios') ? 34 : undefined - }, - itemNote: { - fontSize: this.getTheme().listNoteSize, - color: this.getTheme().listNoteColor, - alignSelf: 'center', - fontWeight: '100', - flex: 1, - textAlign: 'right' - }, - itemSubNote: { - fontSize: this.getTheme().listNoteSize, - color: this.getTheme().listNoteColor, - lineHeight: 16 - }, - thumbnail: { - alignSelf: 'center' - }, - fullImage: { - width: 300, - height: 300 - }, - itemButton: {} - - } - } - getRightStyle() { - return { - right : { - flex: 1, - paddingLeft: 10 - - }, - right2 : { - flex: 1, - flexDirection: 'row', - paddingLeft: 10, - alignItems: 'center', - justifyContent: 'space-between' - - }, - right3 : { - flex: 1, - flexDirection: 'column', - paddingLeft: 10, - alignSelf: 'flex-start' - - } - } - } - - thumbnailPresent() { - var thumbnailComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Thumbnail) - thumbnailComponentPresent = true; - }) - - return thumbnailComponentPresent; - } - - checkBoxPresent() { - var checkBoxComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == CheckBox) - checkBoxComponentPresent = true; - }) - - return checkBoxComponentPresent; - } - - radioPresent() { - var radioComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Radio) - radioComponentPresent = true; - }) - - return radioComponentPresent; - } - - iconPresent() { - var iconComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Icon) - iconComponentPresent = true; - }) - - return iconComponentPresent; - } - badgePresent() { - var badgeComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Badge) - badgeComponentPresent = true; - }) - - return badgeComponentPresent; - } - - inputPresent() { - var inputComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == InputGroup) - inputComponentPresent = true; - }) - return inputComponentPresent; - } - - buttonPresent() { - var buttonComponentPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Button) - buttonComponentPresent = true; - }) - - return buttonComponentPresent; - } - - getChildProps(child) { - var defaultProps = {}; - - if(child.type == Image && !Array.isArray(this.props.children)) { - defaultProps = { - resizeMode: 'stretch', - style: this.getInitialStyle().fullImage - } - } - else if(child.type == Button) { - defaultProps = { - small: true, - style: this.getInitialStyle().itemButton - } - } - else if(child.type == InputGroup) { - - defaultProps = { - style: { - borderColor: this.getTheme().listBorderColor - }, - foregroundColor: this.getContextForegroundColor() - } - } - else if(child.type == Text) { - if (this.props.itemDivider) { - defaultProps = { - style: this.getInitialStyle().dividerItemText - } - } else { - if(child.props.note && this.thumbnailPresent()) { - defaultProps = { - style: this.getInitialStyle().itemSubNote - } - } - else if(child.props.note) { - defaultProps = { - style: this.getInitialStyle().itemNote - } - } - else { - defaultProps = { - style: this.getInitialStyle().itemText - } - } - - } - } - else if(child.type == Icon) { - defaultProps = { - style: this.getInitialStyle().itemIcon - } - } - else if(child.type == Thumbnail) { - defaultProps = { - style: this.getInitialStyle().thumbnail - } - } - else { - defaultProps = { - foregroundColor: this.getContextForegroundColor() - } - } - return computeProps(child.props, defaultProps); - } - - prepareRootProps() { - var defaultProps = {}; - - if(this.props.itemDivider) - defaultProps = { - style: this.getInitialStyle().listItemDivider - }; - - else - defaultProps = { - style: this.getInitialStyle().listItem - }; - return computeProps(this.props, defaultProps); - } - - - notePresent() { - - var notePresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == Text && child.props.note) - notePresent = true; - }) - return notePresent; - - } - - insetPresent() { - - var insetPresent = false; - React.Children.forEach(this.props.children, function (child) { - if(child.type == InputGroup && child.props.inset) - insetPresent = true; - }) - - return insetPresent; - - } - - - inlinePresent() { - var inlineComponentPresent = false; - if (this.inputPresent()) { - if (this.props.children.props.children.props && this.props.children.props.children.props.inlineLabel) { - inlineComponentPresent = true; - } - else - inlineComponentPresent = false; - } - return inlineComponentPresent; - } - - stackedPresent() { - var stackedComponentPresent = false; - if (this.inputPresent()) { - if (this.props.children.props.children.props && this.props.children.props.children.props.stackedLabel) { - stackedComponentPresent = true; - } - else - stackedComponentPresent = false; - } - - return stackedComponentPresent; - } - - - - squareThumbs() { - var squareThumbs = false; - if (this.thumbnailPresent()) { - React.Children.forEach(this.props.children, function (child) { - if(child.props.square) - squareThumbs = true; - }) - - } - return squareThumbs; - - } - - renderChildren() { - - var newChildren = []; - if(!Array.isArray(this.props.children) && !this.inlinePresent() && !this.stackedPresent() && !this.insetPresent()) { - newChildren.push( - - {React.cloneElement(this.props.children, this.getChildProps(this.props.children))} - - ); - } - - - else { - var childrenArray = React.Children.toArray(this.props.children); - var iconElement = []; - - if (this.props.iconLeft && !this.props.iconRight) { - - iconElement = _.remove(childrenArray, function(item) { - if(item.type == Icon) { - return true; - } - }); - newChildren.push(React.cloneElement(iconElement[0], {...this.getChildProps(iconElement[0]), key: 'listItem0'})); - newChildren.push( - {childrenArray.map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - })} - ); - } - else if (this.props.iconRight && !this.props.iconLeft) { - - iconElement = _.remove(childrenArray, function(item) { - if(item.type == Icon) { - return true; - } - }); - - newChildren.push( - {childrenArray.map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - })} - ); - newChildren.push(React.cloneElement(iconElement[0], {...this.getChildProps(iconElement[0]), key: 'listItem1'})); - } - else if (this.badgePresent()) { - - var badgeElement = _.remove(childrenArray, function(item) { - if(item.type == Badge) { - return true; - } - }); - - newChildren.push( - {childrenArray.map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - })} - ); - newChildren.push(React.cloneElement(badgeElement[0], {...this.getChildProps(badgeElement[0]), key: 'listItem1'})); - } - else if (this.props.iconRight && this.props.iconLeft) { - - iconElement = _.filter(childrenArray, function(item) { - if(item.type == Icon) { - return true; - } - }); - - newChildren.push( - {childrenArray.slice(0,2).map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - })} - ); - newChildren.push(React.cloneElement(iconElement[1], {...this.getChildProps(iconElement[1]), key: 'listItem1'})); - } - - else if (this.thumbnailPresent()) { - - iconElement = _.remove(childrenArray, function(item) { - if(item.type == Thumbnail) { - return true; - } - }); - newChildren.push(React.cloneElement(iconElement[0], {...this.getChildProps(iconElement[0]), key: 'listItem0'})); - newChildren.push( - {childrenArray.map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - })} - ); - } - else if (this.checkBoxPresent()) { - - iconElement = _.remove(childrenArray, function(item) { - if(item.type == CheckBox) { - return true; - } - }); - newChildren.push(React.cloneElement(iconElement[0], this.getChildProps(iconElement[0]))); - newChildren.push( - {childrenArray.map((child) => { - return React.cloneElement(child, this.getChildProps(child)); - })} - ); - } - else if (this.radioPresent()) { - - iconElement = _.remove(childrenArray, function(item) { - if(item.type == Radio) { - return true; - } - }); - newChildren.push( - {childrenArray.map((child) => { - return React.cloneElement(child, this.getChildProps(child)); - })} - ); - newChildren.push(React.cloneElement(iconElement[0], this.getChildProps(iconElement[0]))); - } - else if (this.inputPresent() && !this.inlinePresent() && !this.stackedPresent() && !this.insetPresent()) { - - - newChildren.push( - {childrenArray.map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - })} - ); - } - else if (this.inlinePresent()) { - - newChildren.push( - {this.props.children.props.children.props.label} - ); - newChildren.push( - {childrenArray.map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i, style:{borderWidth: 0}}); - })} - ); - } - else if (this.stackedPresent()) { - - newChildren.push( - {this.props.children.props.children.props.label} - ); - newChildren.push( - {childrenArray.map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i, style:{flex:1}}); - })} - ); - } - else if (this.insetPresent()) { - - - newChildren.push( - {childrenArray.map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - })} - ); - newChildren.push( - {childrenArray.map((child, i) => { - return React.cloneElement(child, {...this.getChildProps(child), key: i}); - })} - ); - } - } - - return newChildren; - } - - render() { - return( - - {this.renderChildren()} - - ); - } - -} diff --git a/Components/Widgets/Picker.ios.js b/Components/Widgets/Picker.ios.js deleted file mode 100644 index df84a0b962..0000000000 --- a/Components/Widgets/Picker.ios.js +++ /dev/null @@ -1,107 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {Picker, Modal} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -import View from "./View"; -import Text from "./Text"; -import List from "./List"; -import Icon from "./Icon"; -import Container from "./Container"; -import Content from "./Content"; -import ListItem from "./ListItem"; -import Button from "./Button"; -import Header from "./Header"; -import Title from "./Title"; -import _ from "lodash"; - -export default class PickerNB extends NativeBaseComponent { - constructor(props) { - super(props); - this.state = { - modalVisible : false, - current: this.getSelected().props.label - } - } - - getInitialStyle() { - return { - picker: { - // alignItems: 'flex-end' - }, - pickerItem: { - - } - } - } - _setModalVisible(visible) { - this.setState({modalVisible: visible}); - } - - prepareRootProps() { - - var defaultProps = { - style: this.getInitialStyle().picker, - itemStyle: this.getInitialStyle().pickerItem - }; - - return computeProps(this.props, defaultProps); - - } - - getSelected() { - const selected = _.find(this.props.children,(o) => { - return o.props.value == this.props.selectedValue; - }); - console.log("title", ); - return selected; - } - - render() { - return ( - - - {this._setModalVisible(false)}} - > - -
- - {this.props.iosHeader} - -
- - - {this._setModalVisible(false);this.props.onValueChange(child.props.value); this.setState({current: child.props.label})}} > - {child.props.label} - {(child.props.value===this.props.selectedValue) ? - () - : - () - } - - - }> - - -
-
-
- ); - } - -} - -PickerNB.Item = React.createClass({ - - render: function() { - return( - - ); - } -}); diff --git a/Components/Widgets/Picker.js b/Components/Widgets/Picker.js deleted file mode 100644 index 30116ae7b9..0000000000 --- a/Components/Widgets/Picker.js +++ /dev/null @@ -1,49 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {Picker} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - -export default class PickerNB extends NativeBaseComponent { - - getInitialStyle() { - return { - picker: { - // alignItems: 'flex-end' - }, - pickerItem: { - - } - } - } - prepareRootProps() { - - var defaultProps = { - style: this.getInitialStyle().picker, - itemStyle: this.getInitialStyle().pickerItem - }; - - return computeProps(this.props, defaultProps); - - } - - render() { - return( - - {this.props.children} - - ); - } - -} - -PickerNB.Item = React.createClass({ - - render: function() { - return( - - ); - } -}); diff --git a/Components/Widgets/ProgressBar.android.js b/Components/Widgets/ProgressBar.android.js deleted file mode 100644 index 4a2b598769..0000000000 --- a/Components/Widgets/ProgressBar.android.js +++ /dev/null @@ -1,36 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import ProgressBar from "ProgressBarAndroid"; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - - -export default class SpinnerNB extends NativeBaseComponent { - - prepareRootProps() { - - var type = { - height: 40 - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - - } - - - render() { - return( - - ); - } - -} diff --git a/Components/Widgets/ProgressBar.ios.js b/Components/Widgets/ProgressBar.ios.js deleted file mode 100644 index 7c48991ffd..0000000000 --- a/Components/Widgets/ProgressBar.ios.js +++ /dev/null @@ -1,23 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import { ProgressViewIOS} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -// import computeProps from '../../Utils/computeProps'; - - -export default class ProgressBarNB extends NativeBaseComponent { - - - - render() { - return( - - ); - } - -} diff --git a/Components/Widgets/Radio.js b/Components/Widgets/Radio.js deleted file mode 100644 index c8e15e8db3..0000000000 --- a/Components/Widgets/Radio.js +++ /dev/null @@ -1,28 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View, Platform} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import Icon from "./Icon"; - -export default class Radio extends NativeBaseComponent { - - getInitialStyle() { - return { - radio: {} - } - } - - render() { - return( - - {(Platform.OS === 'ios') ? - - : - - } - - ); - } -} diff --git a/Components/Widgets/Spinner.js b/Components/Widgets/Spinner.js deleted file mode 100644 index d820ddec24..0000000000 --- a/Components/Widgets/Spinner.js +++ /dev/null @@ -1,36 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import { ActivityIndicator } from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - - -export default class SpinnerNB extends NativeBaseComponent { - - prepareRootProps() { - - var type = { - height: 80 - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - - } - - - render() { - return( - - ); - } - -} diff --git a/Components/Widgets/Subtitle.js b/Components/Widgets/Subtitle.js deleted file mode 100644 index 7f2e546888..0000000000 --- a/Components/Widgets/Subtitle.js +++ /dev/null @@ -1,16 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {Text, View, Platform } from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; - - -export default class Subtitle extends NativeBaseComponent { - - render() { - return( - {this.props.children} - ); - } -} diff --git a/Components/Widgets/Switch.js b/Components/Widgets/Switch.js deleted file mode 100644 index e687c2b077..0000000000 --- a/Components/Widgets/Switch.js +++ /dev/null @@ -1,31 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {Switch} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - -export default class SwitchNB extends NativeBaseComponent { - - getInitialStyle() { - return { - switch: { - - } - } - } - prepareRootProps() { - var defaultProps = { - style: this.getInitialStyle().switch - }; - - return computeProps(this.props, defaultProps); - } - - render() { - return( - - ); - } -} diff --git a/Components/Widgets/Tabs.js b/Components/Widgets/Tabs.js deleted file mode 100644 index 15dc5fefe8..0000000000 --- a/Components/Widgets/Tabs.js +++ /dev/null @@ -1,37 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -import ScrollableTabView from './../vendor/react-native-scrollable-tab-view'; - -export default class TabNB extends NativeBaseComponent { - - getInitialStyle() { - return { - tab: { - flex: 1 - } - } - } - - prepareRootProps() { - - var defaultProps = { - style: this.getInitialStyle().tab - }; - - return computeProps(this.props, defaultProps); - - } - - render() { - return( - - {this.props.children} - - ); - } - -} diff --git a/Components/Widgets/Text.js b/Components/Widgets/Text.js deleted file mode 100644 index 35ac0f5580..0000000000 --- a/Components/Widgets/Text.js +++ /dev/null @@ -1,34 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {Text} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - - -export default class TextNB extends NativeBaseComponent { - - prepareRootProps() { - - var type = { - color: this.getContextForegroundColor(), - fontSize: this.getTheme().fontSizeBase, - lineHeight: this.getTheme().lineHeight, - fontFamily: this.getTheme().fontFamily - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - - } - render() { - return( - {this.props.children} - ); - } - -} diff --git a/Components/Widgets/Textarea.js b/Components/Widgets/Textarea.js deleted file mode 100644 index 76368382fe..0000000000 --- a/Components/Widgets/Textarea.js +++ /dev/null @@ -1,63 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View, TextInput} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; - -export default class Textarea extends NativeBaseComponent { - - getInitialStyle() { - // console.log("this.getContextForegroundColor()", this.getContextForegroundColor()); - // console.log("this.getTheme().borderWidth", this.getTheme().borderWidth); - return { - input: { - height: this.props.rowSpan*25, - color: this.getTheme().textColor, - paddingLeft: 5, - paddingRight: 5, - fontSize: 18 - } - } - } - getBorderStyle(){ - return { - underline: { - borderTopWidth: 0, - borderRightWidth: 0, - borderLeftWidth: 0, - marginTop: 5 - }, - - bordered: { - marginTop: 5 - }, - - rounded: { - borderRadius: 30, - marginTop: 5 - } - } - } - - prepareRootProps() { - - var defaultProps = { - style: this.getInitialStyle().input - } - - return computeProps(this.props, defaultProps); - - } - - render() { - - return ( - - - - ); - } - -} diff --git a/Components/Widgets/Thumbnail.js b/Components/Widgets/Thumbnail.js deleted file mode 100644 index c7564539c3..0000000000 --- a/Components/Widgets/Thumbnail.js +++ /dev/null @@ -1,48 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {Image} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import computeProps from '../../Utils/computeProps'; -import _ from 'lodash'; - -export default class ThumbnailNB extends NativeBaseComponent { - - getInitialStyle() { - return { - thumbnail: { - borderRadius: 15, - width: 30, - height: 30, - resizeMode: this.props.contain ? 'contain' : undefined - } - } - } - - prepareRootProps() { - var thumbnailStyle = {}; - if(this.props.circular) { - thumbnailStyle.width = this.props.size; - thumbnailStyle.height = this.props.size; - thumbnailStyle.borderRadius = this.props.size/2; - } - else if(this.props.square) { - thumbnailStyle.width = this.props.size; - thumbnailStyle.height = this.props.size; - thumbnailStyle.borderRadius = 0; - } - - var defaultProps = { - style: _.merge(this.getInitialStyle().thumbnail, thumbnailStyle) - }; - - return computeProps(this.props, defaultProps); - } - - render() { - return( - - ); - } -} diff --git a/Components/Widgets/Title.js b/Components/Widgets/Title.js deleted file mode 100644 index e810cf3144..0000000000 --- a/Components/Widgets/Title.js +++ /dev/null @@ -1,37 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import { Platform } from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; -import Text from "./Text"; -import View from "./View"; -import computeProps from '../../Utils/computeProps'; - - -export default class Title extends NativeBaseComponent { - - prepareRootProps() { - - var type = { - color: this.getTheme().toolbarTextColor, - fontSize: this.getTheme().titleFontSize, - fontFamily: this.getTheme().btnFontFamily, - fontWeight: (Platform.OS === 'ios') ? '500' : undefined, - alignSelf: (Platform.OS === 'ios' ) ? 'center' : 'flex-start' - } - - var defaultProps = { - style: type - } - - return computeProps(this.props, defaultProps); - - } - - render() { - return( - {this.props.children} - ); - } -} diff --git a/Components/Widgets/View.js b/Components/Widgets/View.js deleted file mode 100644 index 15d494cca1..0000000000 --- a/Components/Widgets/View.js +++ /dev/null @@ -1,17 +0,0 @@ -/* @flow */ -'use strict'; - -import React from 'react'; -import {View} from 'react-native'; -import NativeBaseComponent from '../Base/NativeBaseComponent'; - - -export default class ViewNB extends NativeBaseComponent { - - render() { - return( - - ); - } -} - diff --git a/Components/vendor/react-native-drawer/.eslintrc b/Components/vendor/react-native-drawer/.eslintrc deleted file mode 100644 index 227a972490..0000000000 --- a/Components/vendor/react-native-drawer/.eslintrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": ["rackt", "standard-react"], - "parser": "babel-eslint", - "rules": { - "array-bracket-spacing": 0, - "comma-dangle": 0, - "jsx-quotes": [ 2, "prefer-double" ], - "no-console": 0, - "no-multiple-empty-lines": 2, - "no-unused-vars": [0, { "vars": "all", "args": "none" }], - "object-curly-spacing": 0, - "space-before-blocks": [ 2, "always" ], - "space-before-function-paren": [ 2, { "anonymous": "always", "named": "never" } ], - "eol-last": 2 - }, - "plugins": [ - "react" - ] -} diff --git a/Components/vendor/react-native-drawer/.npmignore b/Components/vendor/react-native-drawer/.npmignore deleted file mode 100644 index e39721e20f..0000000000 --- a/Components/vendor/react-native-drawer/.npmignore +++ /dev/null @@ -1 +0,0 @@ -examples/* diff --git a/Components/vendor/react-native-drawer/README.md b/Components/vendor/react-native-drawer/README.md deleted file mode 100644 index 497bc707a3..0000000000 --- a/Components/vendor/react-native-drawer/README.md +++ /dev/null @@ -1,170 +0,0 @@ -## React Native Drawer - - -**NOTE** there have been some fairly major, and potentially buggy changes in 1.16.0. Please test it out and report feedback. We will troubleshoot asap. - -React native drawer, configurable to achieve material design style, slack style, parallax, and more. Works in both iOS and Android. - -[![npm version](https://img.shields.io/npm/v/react-native-drawer.svg?style=flat-square)](https://www.npmjs.com/package/react-native-drawer) -[![npm downloads](https://img.shields.io/npm/dm/react-native-drawer.svg?style=flat-square)](https://www.npmjs.com/package/react-native-drawer) - -**Android**: Android support has been added in v1.3.0! - -- [Installation](#installation) -- [Usage](#usage) -- [Examples](#examples) -- [Props](#props) -- [Demo](#demo) -- [Credits](#credits) - -### Installation -`npm install react-native-drawer` - -### Usage -```javascript -import Drawer from 'react-native-drawer' - -class Application extends Component { - closeControlPanel = () => { - this.drawer.close() - }; - openControlPanel = () => { - this.drawer.open() - }; - render () { - return ( - } - > - - - ) - } -}) -``` - -### Examples -```js -//Parallax Effect (slack style) -} - openDrawerOffset={100} - styles={{main: {shadowColor: "#000000", shadowOpacity: 0.4, shadowRadius: 3}}} - tweenHandler={Drawer.tweenPresets.parallax} - > -
- - -//Material Design Style Drawer -} - tapToClose={true} - openDrawerOffset={0.2} // 20% gap on the right side of drawer - panCloseMask={0.2} - closedDrawerOffset={-3} - styles={{ - drawer: {shadowColor: '#000000', shadowOpacity: 0.8, shadowRadius: 3}, - main: {paddingLeft: 3} - }} - tweenHandler={(ratio) => ({ - main: { opacity:(2-ratio)/2 } - })} - > -
- -``` - -### Props -This module supports a wide range of drawer styles, and hence has *a lot* of props. -##### Important -- `content` (React.Component) `null` - Menu component -- `type` (String: displace:overlay:static) `displace`- Type of drawer. -- `openDrawerOffset` (Number) `0` - Can either be a integer (pixel value) or decimal (ratio of screen width). Defines the right hand margin when the drawer is open. -- `closedDrawerOffset` (Number) `0` - Same as openDrawerOffset, except defines left hand margin when drawer is closed. -- `disabled` (Boolean) `false` - If true the drawer can not be opened and will not respond to pans. - -##### Animation / Tween -- `tweenHandler` (Function) `null` - Takes in the pan ratio (decimal 0 to 1) that represents the tween percent. Returns and object of native props to be set on the constituent views { drawer: {/*native props*/}, main: {/*native props*/} } -- `tweenDuration` (Integer) `250` - The duration of the open/close animation. - -##### Event Handlers -- `onOpen` (Function) - Will be called immediately after the drawer has entered the open state. -- `onClose` (Function) - Will be called immediately after the drawer has entered the closed state. - -##### Gestures -- `captureGestures` (Boolean) `false` - If true, will capture all gestures inside of the pan mask. Meaning child buttons and scroll views will not trigger. -- `acceptDoubleTap` (Boolean) `false` - Toggle drawer when double tap occurs within pan mask? -- `acceptTap` (Boolean) `false` - Toggle drawer when any tap occurs within pan mask? -- `acceptPan` (Boolean) `true` - Allow for drawer pan (on touch drag). Set to false to effectively disable the drawer while still allowing programmatic control. -- `tapToClose` (Boolean) `false` - Same as acceptTap, except only for close. -- `negotiatePan` (Boolean) `false` - If true, attempts to handle only horizontal swipes, making it play well with a child `ScrollView`. - -##### Additional Configurations -- `openDrawerThreshold` (Number) `.25` - Ratio of screen width that must be travelled to trigger a drawer open/close -- `panOpenMask` (Number) `.05` - Ratio of screen width that is valid for the start of a pan open action. -- `panCloseMask` (Number) `.25` - Ratio of screen width that is valid for the start of a pan close action. -- `initializeOpen` (Boolean) `false` - Initialize with drawer open? -- `side` (String left|right) `left` - which side the drawer should be on. - -##### Experimental & Deprecated Props -**Subject to change or deletion** -- `onOpenStart` (Boolean) callback fired at the start of an open animation -- `onCloseStart` (Boolean) callback fired at the start of a close animation -- `tweenEasing` (String) `linear` - A easing type supported by [tween-functions](https://www.npmjs.com/package/tween-functions) -- `relativeDrag` (Boolean) `true` - true -> open/close calculation based on pan dx : false -> calculation based on absolute pan position (i.e. touch location) -- `panStartCompensation` (Boolean) `false` - Should the drawer catch up to the finger drag position? - - -### Tween Handler -You can achieve pretty much any animation you want using the tween handler with the transformMatrix property. E.G. -```js -tweenHandler={(ratio) => { - var r0 = -ratio/6 - var r1 = 1-ratio/6 - var t = [ - r1, r0, 0, 0, - -r0, r1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - ] - return { - main: { - style: { - transformMatrix: t, - opacity: 1 - ratio/2, - }, - } - } -}} -``` -Will result in a skewed fade out animation. - -**warning:** Frame rate, and perceived smoothness will vary based on the complexity and speed of the animation. It will likely require some tweaking and compromise to get the animation just right. - -### Opening & Closing the Drawer Programmatically -Two options: -1. Using the Drawer Ref: -```js -onPress={() => {this.drawer.open()}} -``` -2. Using Context -```js -contextTypes = {drawer: React.PropTypes.object} -// later... -this.context.drawer.open() -``` - -### Demo -* `git clone https://github.com/rt2zz/react-native-drawer.git` -* `cd react-native-drawer/examples/RNDrawerDemo && npm install` -* Open ``./examples/RNDrawerDemo/RNDrawerDemo.xcodeproject` in xcode -* `command+r` (in xcode) - -### Credits -Component was adapted from and inspired by -[@khanghoang](https://github.com/khanghoang)'s [RNSideMenu](https://github.com/khanghoang/RNSideMenu) -*AND* -[@kureevalexey](https://twitter.com/kureevalexey)'s [react-native-side-menu](https://github.com/Kureev/react-native-side-menu) diff --git a/Components/vendor/react-native-drawer/index.js b/Components/vendor/react-native-drawer/index.js deleted file mode 100644 index ad1e6d8d1f..0000000000 --- a/Components/vendor/react-native-drawer/index.js +++ /dev/null @@ -1,529 +0,0 @@ -import React, {Component,PropTypes} from 'react'; -import { - PanResponder, - View, - StyleSheet, - Dimensions -} from 'react-native' -import tween from './tweener' - -let deviceScreen = Dimensions.get('window') - -class Drawer extends Component { - - _left = 0; - _prevLeft = 0; - _offsetOpen = 0; - _offsetClosed = 0; - _open = false; - _panning = false; - _tweenPending = false; - _activeTween = null; - _lastPress = 0; - _panStartTime = 0; - _syncAfterUpdate = false; - - static tweenPresets = { - parallax: (ratio, side = 'left') => { - let drawer = { [side] : -150 * (1 - ratio)} - return { drawer } - } - }; - - static propTypes = { - acceptDoubleTap: React.PropTypes.bool, - acceptPan: React.PropTypes.bool, - acceptTap: React.PropTypes.bool, - captureGestures: React.PropTypes.bool, - children: React.PropTypes.node, - closedDrawerOffset: React.PropTypes.number, - content: React.PropTypes.node, - deviceScreen: React.PropTypes.object, - disabled: React.PropTypes.bool, - initializeOpen: React.PropTypes.bool, - negotiatePan: React.PropTypes.bool, - onClose: React.PropTypes.func, - onCloseStart: React.PropTypes.func, - onOpen: React.PropTypes.func, - onOpenStart: React.PropTypes.func, - openDrawerOffset: React.PropTypes.number, - openDrawerThreshold: React.PropTypes.number, - panCloseMask: React.PropTypes.number, - panOpenMask: React.PropTypes.number, - panStartCompensation: React.PropTypes.bool, - relativeDrag: React.PropTypes.bool, - side: React.PropTypes.oneOf(['left', 'right']), - styles: React.PropTypes.object, - tapToClose: React.PropTypes.bool, - tweenDuration: React.PropTypes.number, - tweenEasing: React.PropTypes.string, - tweenHandler: React.PropTypes.func, - type: React.PropTypes.oneOf(['overlay', 'static', 'displace']), - }; - - static defaultProps = { - type: 'displace', - closedDrawerOffset: 0, - deviceScreen: deviceScreen, - openDrawerOffset: 0, - openDrawerThreshold: 0.25, - relativeDrag: true, - panStartCompensation: true, - panOpenMask: 0.25, - panCloseMask: 0.25, - captureGestures: false, - negotiatePan: false, - initializeOpen: false, - tweenHandler: null, - tweenDuration: 250, - tweenEasing: 'linear', - disabled: false, - acceptDoubleTap: false, - acceptTap: false, - acceptPan: true, - tapToClose: false, - styles: {}, - onOpen: () => {}, - onClose: () => {}, - side: 'left', - }; - - constructor(props) { - super(props) - // `this` keyword binding - No Autobinding in ES6 Classes - this.handleStartShouldSetPanResponderCapture = this.handleStartShouldSetPanResponderCapture.bind(this) - this.handleStartShouldSetPanResponder = this.handleStartShouldSetPanResponder.bind(this) - this.handleMoveShouldSetPanResponderCapture = this.handleMoveShouldSetPanResponderCapture.bind(this) - this.handleMoveShouldSetPanResponder = this.handleMoveShouldSetPanResponder.bind(this) - this.handlePanResponderMove = this.handlePanResponderMove.bind(this) - this.handlePanResponderEnd = this.handlePanResponderEnd.bind(this) - this.componentWillMount = this.componentWillMount.bind(this) - this.componentWillReceiveProps = this.componentWillReceiveProps.bind(this) - this.componentDidUpdate = this.componentDidUpdate.bind(this) - this.updatePosition = this.updatePosition.bind(this) - this.shouldOpenDrawer = this.shouldOpenDrawer.bind(this) - this.testPanResponderMask = this.testPanResponderMask.bind(this) - this.getMainView = this.getMainView.bind(this) - this.getDrawerView = this.getDrawerView.bind(this) - this.getOpenLeft = this.getOpenLeft.bind(this) - this.getClosedLeft = this.getClosedLeft.bind(this) - this.getMainWidth = this.getMainWidth.bind(this) - this.getDrawerWidth = this.getDrawerWidth.bind(this) - this.initialize = this.initialize.bind(this) - this.handleSetViewport = this.handleSetViewport.bind(this) - this.resync = this.resync.bind(this) - this.requiresResync = this.requiresResync.bind(this) - - this.propsWhomRequireUpdate = [ - 'closedDrawerOffset', - 'openDrawerOffset', - 'type' - ] - - this.state = { viewport: props.deviceScreen } - } - - static childContextTypes = { - drawer: PropTypes.any - }; - - getChildContext() { - return { drawer: this } - } - - componentWillMount() { - this.initialize(this.props) - } - - componentWillReceiveProps(nextProps) { - if (this.requiresResync(nextProps)) { - this.resync(null, nextProps) - } - } - - componentDidUpdate() { - if (this._syncAfterUpdate) { - this._syncAfterUpdate = false - this._open ? this.open() : this.close() - } - } - - updatePosition() { - let mainProps = {} - let drawerProps = {} - let ratio = (this._left - this._offsetClosed) / (this.getOpenLeft() - this._offsetClosed) - - switch (this.props.type) { - case 'overlay': - drawerProps[this.props.side] = -this.state.viewport.width + this._offsetOpen + this._left - mainProps[this.props.side] = this._offsetClosed - break - case 'static': - mainProps[this.props.side] = this._left - drawerProps[this.props.side] = 0 - break - case 'displace': - mainProps[this.props.side] = this._left - drawerProps[this.props.side] = -this.state.viewport.width + this._left + this._offsetOpen - break - } - - if (this.props.tweenHandler) { - let propsFrag = this.props.tweenHandler(ratio, this.props.side) - mainProps = Object.assign(mainProps, propsFrag.main) - drawerProps = Object.assign(drawerProps, propsFrag.drawer) - } - this.drawer.setNativeProps({style: drawerProps}) - this.main.setNativeProps({style: mainProps}) - } - - shouldOpenDrawer(dx) { - if (this._open) return dx < this.state.viewport.width * this.props.openDrawerThreshold - return dx > this.state.viewport.width * this.props.openDrawerThreshold - } - - handleStartShouldSetPanResponderCapture(e, gestureState) { - if (this.props.captureGestures) return this.processShouldSet(e, gestureState) - return false - } - - handleStartShouldSetPanResponder(e, gestureState) { - if (!this.props.captureGestures) return this.processShouldSet(e, gestureState) - return false - } - - processShouldSet = (e, gestureState) => { - let inMask = this.testPanResponderMask(e, gestureState) - if (inMask) { - let toggled = this.processTapGestures() - if (toggled) return false - if (this.props.captureGestures && this.props.acceptPan) return true - } - if (this.props.negotiatePan) return false - this._panStartTime = Date.now() - if (!inMask) return false - if (!this.props.acceptPan) return false - this.terminateActiveTween() - return true - }; - - handleMoveShouldSetPanResponderCapture(e, gestureState) { - if (this.props.captureGestures && this.props.negotiatePan) return this.handleMoveShouldSetPanResponder(e, gestureState) - return false - } - - handleMoveShouldSetPanResponder(e, gestureState) { - let inMask = this.testPanResponderMask(e, gestureState) - if (!inMask) return false - if (!this.props.acceptPan) return false - - if (!this.props.negotiatePan || this.props.disabled || !this.props.acceptPan || this._panning) return false - let swipeToLeft = (gestureState.dx < 0) ? true : false - let swipeToRight = (gestureState.dx > 0) ? true : false - let swipeUpDown = (Math.abs(gestureState.dy) >= Math.abs(gestureState.dx)) ? true : false - let swipeInCloseDirection = (this.props.side === 'left') ? swipeToLeft : swipeToRight - if (swipeUpDown || (this._open && !swipeInCloseDirection) || (!this._open && swipeInCloseDirection)) { - return false - } - - this.terminateActiveTween() - return true - } - - processTapGestures = () => { - if (this._activeTween) return false // disable tap gestures during tween - let minLastPressInterval = 500 - if (this.props.acceptTap) { - this._open ? this.close() : this.open() - return true - } - if (this.props.tapToClose && this._open) { - this.close() - return true - } - if (this.props.acceptDoubleTap) { - let now = new Date().getTime() - let timeDelta = now - this._lastPress - this._lastPress = now - if (timeDelta < minLastPressInterval) { - this._open ? this.close() : this.open() - return true - } - } - return false - }; - - testPanResponderMask(e, gestureState) { - if (this.props.disabled) return false - let x0 = e.nativeEvent.pageX - - let deltaOpen = this.props.side === 'left' ? deviceScreen.width - x0 : x0 - let deltaClose = this.props.side === 'left' ? x0 : deviceScreen.width - x0 - - let whenClosedMask = this.props.panOpenMask % 1 === 0 && this.props.panOpenMask > 1 ? this.props.panOpenMask : deviceScreen.width * this.props.panOpenMask - let whenOpenMask = this.props.panCloseMask % 1 === 0 && this.props.panCloseMask > 1 ? this.props.panCloseMask : deviceScreen.width * this.props.panCloseMask - if ( this._open && deltaOpen > whenOpenMask ) return false - if ( !this._open && deltaClose > whenClosedMask ) return false - return true - } - - handlePanResponderMove(e, gestureState) { - if (!this.props.acceptPan) return false - - //Math is ugly overly verbose here, probably can be greatly cleaned up - let dx = gestureState.dx - //Do nothing if we are panning the wrong way - if (this._open ^ dx < 0 ^ this.props.side === 'right') return false - - let absDx = Math.abs(dx) - let moveX = gestureState.moveX - let relMoveX = this.props.side === 'left' - ? this._open ? -this.state.viewport.width + moveX : moveX - : this._open ? -moveX : this.state.viewport.width - moveX - let delta = relMoveX - dx - let factor = absDx / Math.abs(relMoveX) - let adjustedDx = dx + delta * factor - let left = this.props.panStartCompensation ? this._prevLeft + adjustedDx : this._prevLeft + dx - left = Math.min(left, this.getOpenLeft()) - left = Math.max(left, this.getClosedLeft()) - this._left = left - this.updatePosition() - this._panning = true - } - - terminateActiveTween = () => { - if (this._activeTween) { - this._activeTween.terminate() - this._activeTween = null - } - }; - - open = () => { - this.props.onOpenStart && this.props.onOpenStart() - if (this._activeTween) return - this._activeTween = tween({ - start: this._left, - end: this.getOpenLeft(), - duration: this.props.tweenDuration, - easingType: this.props.tweenEasing, - onFrame: (tweenValue) => { - this._left = tweenValue - this.updatePosition() - }, - onEnd: () => { - this._activeTween = null - this._open = true - this._prevLeft = this._left - if (this.props.type === 'overlay') { - this.mainOverlay.setNativeProps({ style: { width: this.getMainWidth() }}) - } - this.props.onOpen() - } - }) - }; - - close = () => { - this.props.onCloseStart && this.props.onCloseStart() - if (this._activeTween) return - this._activeTween = tween({ - start: this._left, - end: this.getClosedLeft(), - easingType: this.props.tweenEasing, - duration: this.props.tweenDuration, - onFrame: (tweenValue) => { - this._left = tweenValue - this.updatePosition() - }, - onEnd: () => { - this._activeTween = null - this._open = false - this._prevLeft = this._left - if (this.props.type === 'overlay') this.mainOverlay.setNativeProps({ style: { width: 0 }}) - this.props.onClose() - } - }) - }; - - toggle = () => { - this._open ? this.close() : this.open() - }; - - handlePanResponderEnd(e, gestureState) { - if (Math.abs(gestureState.dx) < 50 && this._activeTween) return - - let absRelMoveX = this.props.side === 'left' - ? this._open ? this.state.viewport.width - gestureState.moveX : gestureState.moveX - : this._open ? gestureState.moveX : this.state.viewport.width - gestureState.moveX - let calcPos = this.props.relativeDrag ? Math.abs(gestureState.dx) : absRelMoveX - - this.shouldOpenDrawer(calcPos) ? this.open() : this.close() - - this.updatePosition() - this._prevLeft = this._left - this._panning = false - } - - getMainView() { - return ( - this.main = c} - style={[this.stylesheet.main, {height: this.getHeight(), width: this.getMainWidth()}]} - > - {this.props.children} - {this.props.type === 'overlay' - ? this.mainOverlay = c} - style={styles.mainOverlay} - /> - : null} - - ) - } - - getDrawerView() { - return ( - this.drawer = c} - style={[this.stylesheet.drawer, {height: this.getHeight(), width: this.getDrawerWidth()}]} - > - {this.props.content} - - ) - } - - getOpenLeft() { - return this.state.viewport.width - this._offsetOpen - } - - getClosedLeft() { - return this._offsetClosed - } - - getHeight() { - return this.state.viewport.height - } - - getMainWidth() { - return this.state.viewport.width - this._offsetClosed - } - - getDrawerWidth() { - return this.state.viewport.width - this._offsetOpen - } - - initialize(props) { - let fullWidth = this.state.viewport.width - this._offsetClosed = props.closedDrawerOffset % 1 === 0 ? props.closedDrawerOffset : props.closedDrawerOffset * fullWidth - this._offsetOpen = props.openDrawerOffset % 1 === 0 ? props.openDrawerOffset : props.openDrawerOffset * fullWidth - this._prevLeft = this._left - - let styles = { - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - } - - styles.main = Object.assign({ - position: 'absolute', - top: 0, - }, {borderWidth:0}, this.props.styles.main) - - styles.drawer = Object.assign({ - position: 'absolute', - top: 0, - }, {borderWidth:0}, this.props.styles.drawer) - - if (props.initializeOpen === true) { // open - this._open = true - this._left = fullWidth - this._offsetOpen - styles.main[this.props.side] = 0 - styles.drawer[this.props.side] = 0 - if (props.type === 'static') styles.main[this.props.side] = fullWidth - this._offsetOpen - if (props.type === 'displace') styles.main[this.props.side] = fullWidth - this._offsetOpen - } else { // closed - this._open = false - this._left = this._offsetClosed - styles.main[this.props.side] = this._offsetClosed - if (props.type === 'static') styles.drawer[this.props.side] = 0 - if (props.type === 'overlay') styles.drawer[this.props.side] = this._offsetClosed + this._offsetOpen - fullWidth - if (props.type === 'displace') styles.drawer[this.props.side] = - fullWidth + this._offsetClosed + this._offsetOpen - } - - if (this.main) { - this.drawer.setNativeProps({ style: {left: styles.drawer.left}}) - this.main.setNativeProps({ style: {left: styles.main.left}}) - } else { - this.stylesheet = StyleSheet.create(styles) - this.responder = PanResponder.create({ - onStartShouldSetPanResponder: this.handleStartShouldSetPanResponder, - onStartShouldSetPanResponderCapture: this.handleStartShouldSetPanResponderCapture, - onMoveShouldSetPanResponder: this.handleMoveShouldSetPanResponder, - onMoveShouldSetPanResponderCapture: this.handleMoveShouldSetPanResponderCapture, - onPanResponderMove: this.handlePanResponderMove, - onPanResponderRelease: this.handlePanResponderEnd, - }) - } - - this.resync(null, props) - } - - handleSetViewport(e) { - let viewport = e.nativeEvent.layout - let oldViewport = this.state.viewport - if (viewport.width === oldViewport.width && viewport.height === oldViewport.height) return - let didRotationChange = viewport.width !== oldViewport.width - this.resync(viewport, null, didRotationChange) - } - - resync(viewport, props, didRotationChange) { - if (didRotationChange) this._syncAfterUpdate = true - viewport = viewport || this.state.viewport - props = props || this.props - this._offsetClosed = props.closedDrawerOffset % 1 === 0 ? props.closedDrawerOffset : props.closedDrawerOffset * viewport.width - this._offsetOpen = props.openDrawerOffset % 1 === 0 ? props.openDrawerOffset : props.openDrawerOffset * viewport.width - this.setState({ viewport }) - } - - requiresResync(nextProps) { - for (let i = 0; i < this.propsWhomRequireUpdate.length; i++) { - let key = this.propsWhomRequireUpdate[i] - if (this.props[key] !== nextProps[key]) return true - } - } - - render() { - let first = this.props.type === 'overlay' ? this.getMainView() : this.getDrawerView() - let second = this.props.type === 'overlay' ? this.getDrawerView() : this.getMainView() - - return ( - - {first} - {second} - - ) - } - -} - -const styles = StyleSheet.create({ - mainOverlay: { - width: 0, - left: 0, - top: 0, - bottom: 0, - position: 'absolute', - backgroundColor: 'transparent' - } -}) - -module.exports = Drawer diff --git a/Components/vendor/react-native-drawer/package.json b/Components/vendor/react-native-drawer/package.json deleted file mode 100644 index 15d858551e..0000000000 --- a/Components/vendor/react-native-drawer/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "react-native-drawer", - "version": "1.16.7", - "description": "React Native Drawer", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/rt2zz/react-native-drawer.git" - }, - "dependencies": { - "tween-functions": "^1.0.1" - }, - "devDependencies": { - "babel-eslint": "^4.1.8", - "eslint": "^1.10.3", - "eslint-config-rackt": "^1.1.1", - "eslint-config-standard-react": "^1.2.1", - "eslint-plugin-react": "^3.14.0", - "eslint-plugin-standard": "^1.3.1" - }, - "keywords": [ - "react", - "react-native", - "react-component", - "drawer", - "side-menu", - "menu", - "ios", - "android", - "material design" - ], - "author": { - "name": "rt2zz", - "email": "zack@root-two.com" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/rt2zz/react-native-drawer/issues" - }, - "homepage": "https://github.com/rt2zz/react-native-drawer", - "gitHead": "bf49833f28e584c0b3fe8a6b796f2d3ed19a9ad5", - "_id": "react-native-drawer@1.16.7", - "_shasum": "3373b3482f089228414ef53cefb4ec1ca5853acf", - "_from": "react-native-drawer@>=1.16.6 <2.0.0", - "_npmVersion": "3.3.12", - "_nodeVersion": "5.1.0", - "_npmUser": { - "name": "rt2zz", - "email": "zstory@ucla.edu" - }, - "dist": { - "shasum": "3373b3482f089228414ef53cefb4ec1ca5853acf", - "tarball": "http://registry.npmjs.org/react-native-drawer/-/react-native-drawer-1.16.7.tgz" - }, - "maintainers": [ - { - "name": "rt2zz", - "email": "zstory@ucla.edu" - } - ], - "_npmOperationalInternal": { - "host": "packages-6-west.internal.npmjs.com", - "tmp": "tmp/react-native-drawer-1.16.7.tgz_1455848778816_0.6944303626660258" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/react-native-drawer/-/react-native-drawer-1.16.7.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/Components/vendor/react-native-drawer/tween/tween-functions/HISTORY.md b/Components/vendor/react-native-drawer/tween/tween-functions/HISTORY.md deleted file mode 100644 index 3c71fcefe2..0000000000 --- a/Components/vendor/react-native-drawer/tween/tween-functions/HISTORY.md +++ /dev/null @@ -1,14 +0,0 @@ -Legend: - -- [B]: Breaking -- [F]: Fix -- [I]: Improvement - -### 1.2.0 (November 20th 2015) -- [F] Fix return value of `easeInOutExpo`, `easeInElastic`, `easeOutElastic` and `easeInOutElastic`. 20b7790 - -### 1.1.0 (October 16th 2015) -- [F] Fix `easeInExpo` and `easeOutExpo`. #2 - -### 1.0.2 (May 25th 2015) -- Initial release. diff --git a/Components/vendor/react-native-drawer/tween/tween-functions/LICENSE.txt b/Components/vendor/react-native-drawer/tween/tween-functions/LICENSE.txt deleted file mode 100644 index be7a0609b1..0000000000 --- a/Components/vendor/react-native-drawer/tween/tween-functions/LICENSE.txt +++ /dev/null @@ -1,28 +0,0 @@ -TERMS OF USE - EASING EQUATIONS - -Open source under the BSD License. - -Copyright © 2001 Robert Penner -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list of -conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list -of conditions and the following disclaimer in the documentation and/or other materials -provided with the distribution. - -Neither the name of the author nor the names of contributors may be used to endorse -or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Components/vendor/react-native-drawer/tween/tween-functions/README.md b/Components/vendor/react-native-drawer/tween/tween-functions/README.md deleted file mode 100644 index 70fb735b79..0000000000 --- a/Components/vendor/react-native-drawer/tween/tween-functions/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Tween-functions - -Robert Penner's tweening functions as used in [React-tween-state](https://github.com/chenglou/react-tween-state) and [React-state-stream](https://github.com/chenglou/react-state-stream). - -Penner's original functions uses the change in value rather than final value as parameter. I much prefer the latter, so this is what this library will use. - -## API - -`tweenFunction.tweenName(currentTime, beginValue, endValue, totalDuration)` - -## Example - -```js -var tweenFunctions = require('tween-functions'); -tweenFunctions.easeInQuad(1, 0, 50, 5); // => 4 -``` - -List of available functions: - -- linear -- easeInQuad -- easeOutQuad -- easeInOutQuad -- easeInCubic -- easeOutCubic -- easeInOutCubic -- easeInQuart -- easeOutQuart -- easeInOutQuart -- easeInQuint -- easeOutQuint -- easeInOutQuint -- easeInSine -- easeOutSine -- easeInOutSine -- easeInExpo -- easeOutExpo -- easeInOutExpo -- easeInCirc -- easeOutCirc -- easeInOutCirc -- easeInElastic -- easeOutElastic -- easeInOutElastic -- easeInBack -- easeOutBack -- easeInOutBack -- easeInBounce -- easeOutBounce -- easeInOutBounce diff --git a/Components/vendor/react-native-drawer/tween/tween-functions/index.js b/Components/vendor/react-native-drawer/tween/tween-functions/index.js deleted file mode 100644 index 5bfed1ba94..0000000000 --- a/Components/vendor/react-native-drawer/tween/tween-functions/index.js +++ /dev/null @@ -1,249 +0,0 @@ -'use strict'; - -// t: current time, b: beginning value, _c: final value, d: total duration -var tweenFunctions = { - linear: function(t, b, _c, d) { - var c = _c - b; - return c * t / d + b; - }, - easeInQuad: function(t, b, _c, d) { - var c = _c - b; - return c * (t /= d) * t + b; - }, - easeOutQuad: function(t, b, _c, d) { - var c = _c - b; - return -c * (t /= d) * (t - 2) + b; - }, - easeInOutQuad: function(t, b, _c, d) { - var c = _c - b; - if ((t /= d / 2) < 1) { - return c / 2 * t * t + b; - } else { - return -c / 2 * ((--t) * (t - 2) - 1) + b; - } - }, - easeInCubic: function(t, b, _c, d) { - var c = _c - b; - return c * (t /= d) * t * t + b; - }, - easeOutCubic: function(t, b, _c, d) { - var c = _c - b; - return c * ((t = t / d - 1) * t * t + 1) + b; - }, - easeInOutCubic: function(t, b, _c, d) { - var c = _c - b; - if ((t /= d / 2) < 1) { - return c / 2 * t * t * t + b; - } else { - return c / 2 * ((t -= 2) * t * t + 2) + b; - } - }, - easeInQuart: function(t, b, _c, d) { - var c = _c - b; - return c * (t /= d) * t * t * t + b; - }, - easeOutQuart: function(t, b, _c, d) { - var c = _c - b; - return -c * ((t = t / d - 1) * t * t * t - 1) + b; - }, - easeInOutQuart: function(t, b, _c, d) { - var c = _c - b; - if ((t /= d / 2) < 1) { - return c / 2 * t * t * t * t + b; - } else { - return -c / 2 * ((t -= 2) * t * t * t - 2) + b; - } - }, - easeInQuint: function(t, b, _c, d) { - var c = _c - b; - return c * (t /= d) * t * t * t * t + b; - }, - easeOutQuint: function(t, b, _c, d) { - var c = _c - b; - return c * ((t = t / d - 1) * t * t * t * t + 1) + b; - }, - easeInOutQuint: function(t, b, _c, d) { - var c = _c - b; - if ((t /= d / 2) < 1) { - return c / 2 * t * t * t * t * t + b; - } else { - return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; - } - }, - easeInSine: function(t, b, _c, d) { - var c = _c - b; - return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; - }, - easeOutSine: function(t, b, _c, d) { - var c = _c - b; - return c * Math.sin(t / d * (Math.PI / 2)) + b; - }, - easeInOutSine: function(t, b, _c, d) { - var c = _c - b; - return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; - }, - easeInExpo: function(t, b, _c, d) { - var c = _c - b; - return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; - }, - easeOutExpo: function(t, b, _c, d) { - var c = _c - b; - return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; - }, - easeInOutExpo: function(t, b, _c, d) { - var c = _c - b; - if (t === 0) { - return b; - } - if (t === d) { - return b + c; - } - if ((t /= d / 2) < 1) { - return c / 2 * Math.pow(2, 10 * (t - 1)) + b; - } else { - return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b; - } - }, - easeInCirc: function(t, b, _c, d) { - var c = _c - b; - return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b; - }, - easeOutCirc: function(t, b, _c, d) { - var c = _c - b; - return c * Math.sqrt(1 - (t = t / d - 1) * t) + b; - }, - easeInOutCirc: function(t, b, _c, d) { - var c = _c - b; - if ((t /= d / 2) < 1) { - return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; - } else { - return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b; - } - }, - easeInElastic: function(t, b, _c, d) { - var c = _c - b; - var a, p, s; - s = 1.70158; - p = 0; - a = c; - if (t === 0) { - return b; - } else if ((t /= d) === 1) { - return b + c; - } - if (!p) { - p = d * 0.3; - } - if (a < Math.abs(c)) { - a = c; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(c / a); - } - return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; - }, - easeOutElastic: function(t, b, _c, d) { - var c = _c - b; - var a, p, s; - s = 1.70158; - p = 0; - a = c; - if (t === 0) { - return b; - } else if ((t /= d) === 1) { - return b + c; - } - if (!p) { - p = d * 0.3; - } - if (a < Math.abs(c)) { - a = c; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(c / a); - } - return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b; - }, - easeInOutElastic: function(t, b, _c, d) { - var c = _c - b; - var a, p, s; - s = 1.70158; - p = 0; - a = c; - if (t === 0) { - return b; - } else if ((t /= d / 2) === 2) { - return b + c; - } - if (!p) { - p = d * (0.3 * 1.5); - } - if (a < Math.abs(c)) { - a = c; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(c / a); - } - if (t < 1) { - return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; - } else { - return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b; - } - }, - easeInBack: function(t, b, _c, d, s) { - var c = _c - b; - if (s === void 0) { - s = 1.70158; - } - return c * (t /= d) * t * ((s + 1) * t - s) + b; - }, - easeOutBack: function(t, b, _c, d, s) { - var c = _c - b; - if (s === void 0) { - s = 1.70158; - } - return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; - }, - easeInOutBack: function(t, b, _c, d, s) { - var c = _c - b; - if (s === void 0) { - s = 1.70158; - } - if ((t /= d / 2) < 1) { - return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b; - } else { - return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b; - } - }, - easeInBounce: function(t, b, _c, d) { - var c = _c - b; - var v; - v = tweenFunctions.easeOutBounce(d - t, 0, c, d); - return c - v + b; - }, - easeOutBounce: function(t, b, _c, d) { - var c = _c - b; - if ((t /= d) < 1 / 2.75) { - return c * (7.5625 * t * t) + b; - } else if (t < 2 / 2.75) { - return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b; - } else if (t < 2.5 / 2.75) { - return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b; - } else { - return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b; - } - }, - easeInOutBounce: function(t, b, _c, d) { - var c = _c - b; - var v; - if (t < d / 2) { - v = tweenFunctions.easeInBounce(t * 2, 0, c, d); - return v * 0.5 + b; - } else { - v = tweenFunctions.easeOutBounce(t * 2 - d, 0, c, d); - return v * 0.5 + c * 0.5 + b; - } - } -}; - -module.exports = tweenFunctions; diff --git a/Components/vendor/react-native-drawer/tween/tween-functions/package.json b/Components/vendor/react-native-drawer/tween/tween-functions/package.json deleted file mode 100644 index afb8c0de32..0000000000 --- a/Components/vendor/react-native-drawer/tween/tween-functions/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "tween-functions", - "version": "1.2.0", - "description": "Robert Penner's easing functions, slightly modified", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/chenglou/tween-functions.git" - }, - "keywords": [ - "tween", - "ease", - "react", - "animation", - "easing", - "penner", - "bezier", - "interpolation" - ], - "author": { - "name": "chenglou" - }, - "license": "BSD", - "bugs": { - "url": "https://github.com/chenglou/tween-functions/issues" - }, - "homepage": "https://github.com/chenglou/tween-functions", - "gitHead": "e3d5f1edf2cdb9b7b623be4d1064f886136a70b3", - "_id": "tween-functions@1.2.0", - "_shasum": "1ae3a50e7c60bb3def774eac707acbca73bbc3ff", - "_from": "tween-functions@>=1.0.1 <2.0.0", - "_npmVersion": "2.14.6", - "_nodeVersion": "4.1.2", - "_npmUser": { - "name": "chenglou", - "email": "chenglou92@gmail.com" - }, - "maintainers": [ - { - "name": "chenglou", - "email": "chenglou92@gmail.com" - } - ], - "dist": { - "shasum": "1ae3a50e7c60bb3def774eac707acbca73bbc3ff", - "tarball": "http://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/Components/vendor/react-native-drawer/tweener.js b/Components/vendor/react-native-drawer/tweener.js deleted file mode 100644 index ceb9670de5..0000000000 --- a/Components/vendor/react-native-drawer/tweener.js +++ /dev/null @@ -1,37 +0,0 @@ -var easingTypes = require('./tween/tween-functions'); - -module.exports = function(config) { - return new Tween(config); -}; - -function Tween(config){ - this._rafLoop = this._rafLoop.bind(this); - this.terminate = this.terminate.bind(this); - - this._t0 = Date.now(); - this._config = config; - this._rafLoop(); -} - -Tween.prototype._rafLoop = function() { - if (this._break){ return; } - - var {duration, start, end, easingType} = this._config; - var now = Date.now(); - var elapsed = now - this._t0; - - if (elapsed >= duration){ - this._config.onFrame(end); - this._config.onEnd(); - return; - } - - var tweenVal = easingTypes[easingType](elapsed, start, end, duration); - this._config.onFrame(tweenVal); - - requestAnimationFrame(this._rafLoop); -}; - -Tween.prototype.terminate = function(){ - this._break = true; -}; diff --git a/Components/vendor/react-native-scrollable-tab-view/.npmignore b/Components/vendor/react-native-scrollable-tab-view/.npmignore deleted file mode 100755 index 97d22ec959..0000000000 --- a/Components/vendor/react-native-scrollable-tab-view/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -npm-debug.log -node_modules/ -.idea/ \ No newline at end of file diff --git a/Components/vendor/react-native-scrollable-tab-view/DefaultTabBar.js b/Components/vendor/react-native-scrollable-tab-view/DefaultTabBar.js deleted file mode 100755 index fe4d7865f3..0000000000 --- a/Components/vendor/react-native-scrollable-tab-view/DefaultTabBar.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; - -import React from 'react'; -import NativeBaseComponent from '../../Base/NativeBaseComponent'; - -import { - Dimensions, - StyleSheet, - Text, - TouchableHighlight, - View, - Animated, -} from 'react-native'; - -var deviceWidth = Dimensions.get('window').width; - -export default class DefaultTabBar extends NativeBaseComponent { - getInitialStyle() { - return { - tab: { - flex: 1, - alignItems: 'center', - justifyContent: 'center', - backgroundColor: this.getTheme().tabBgColor - }, - tabs: { - height: 45, - flexDirection: 'row', - justifyContent: 'space-around', - borderWidth: 1, - borderTopWidth: 0, - borderLeftWidth: 0, - borderRightWidth: 0, - borderBottomColor: '#ccc', - } - } - } - static propTypes = { - goToPage: React.PropTypes.func, - activeTab: React.PropTypes.number, - tabs: React.PropTypes.array - } - - renderTabOption(name, page) { - var isTabActive = this.props.activeTab === page; - - return ( - this.props.goToPage(page)}> - - {name} - - - ); - } - - render() { - var numberOfTabs = this.props.tabs.length; - var tabUnderlineStyle = { - position: 'absolute', - width: deviceWidth / numberOfTabs, - height: 4, - backgroundColor: this.getTheme().tabTextColor, - bottom: 0, - }; - - var left = this.props.scrollValue.interpolate({ - inputRange: [0, 1], outputRange: [0, deviceWidth / numberOfTabs] - }); - - return ( - - {this.props.tabs.map((tab, i) => this.renderTabOption(tab, i))} - - - ); - } -} diff --git a/Components/vendor/react-native-scrollable-tab-view/README.md b/Components/vendor/react-native-scrollable-tab-view/README.md deleted file mode 100755 index 07af5036cc..0000000000 --- a/Components/vendor/react-native-scrollable-tab-view/README.md +++ /dev/null @@ -1,159 +0,0 @@ -## react-native-scrollable-tab-view - -This is probably my favorite navigation pattern on Android, I wish it -were more common on iOS! This is a very simple JavaScript-only -implementation of it for React Native. For more information about how -the animations behind this work, check out the Rebound section of the -[React Native Animation Guide](https://facebook.github.io/react-native/docs/animations.html) - -## Add it to your project - -1. Run `npm install react-native-scrollable-tab-view --save` -2. `var ScrollableTabView = require('react-native-scrollable-tab-view');` - -## Demo - - - - -## Basic usage - -```javascript -var ScrollableTabView = require('react-native-scrollable-tab-view'); - -var App = React.createClass({ - render() { - return ( - - - - - - ); - } -} -``` - -## Injecting a custom tab bar - -Suppose we had a custom tab bar called `CustomTabBar`, we would inject -it into our `ScrollableTabView` like this: - -```javascript -var ScrollableTabView = require('react-native-scrollable-tab-view'); -var CustomTabBar = require('./CustomTabBar'); - -var App = React.createClass({ - render() { - return ( - }> - - - - - ); - } -} -``` - -Below is the default tab bar, renamed to CustomTabBar, you can use this -as a template for implementing your own. - -```javascript -var React = require('react-native'); -var { - StyleSheet, - Text, - View, - TouchableOpacity, -} = React; - -var deviceWidth = require('Dimensions').get('window').width; -var precomputeStyle = require('precomputeStyle'); -var TAB_UNDERLINE_REF = 'TAB_UNDERLINE'; - -var styles = StyleSheet.create({ - tab: { - flex: 1, - alignItems: 'center', - justifyContent: 'center', - paddingBottom: 10, - }, - - tabs: { - height: 50, - flexDirection: 'row', - marginTop: 20, - borderWidth: 1, - borderTopWidth: 0, - borderLeftWidth: 0, - borderRightWidth: 0, - borderBottomColor: '#ccc', - }, -}); - -var CustomTabBar = React.createClass({ - propTypes: { - goToPage: React.PropTypes.func, - activeTab: React.PropTypes.number, - tabs: React.PropTypes.array - }, - - renderTabOption(name, page) { - var isTabActive = this.props.activeTab === page; - - return ( - this.props.goToPage(page)} style={[styles.tab]}> - {name} - - ); - }, - - setAnimationValue(value) { - this.refs[TAB_UNDERLINE_REF].setNativeProps(precomputeStyle({ - left: (deviceWidth * value) / this.props.tabs.length - })); - }, - - render() { - var numberOfTabs = this.props.tabs.length; - var tabUnderlineStyle = { - position: 'absolute', - width: deviceWidth / numberOfTabs, - height: 4, - backgroundColor: 'navy', - bottom: 0, - }; - - return ( - - {this.props.tabs.map((tab, i) => this.renderTabOption(tab, i))} - - - ); - }, -}); - -module.exports = CustomTabBar; -``` - -## Props - -- **`renderTabBar`** _(Function:ReactComponent)_ - should return a component to use as - the tab bar. The component has `goToPage`, `tabs`, `activeTab` and - `ref` added to the props, and should implement `setAnimationValue` to - be able to animate itself along with the tab content. -- **`tabBarPosition`** _(String)_ - if `"top"`, the tab bar will render above the tabs. If `"bottom"`, the tab bar will render below the tabs. Defaults to `"top"`. -- **`onChangeTab`** _(Function)_ - function to call when tab changes, should accept 1 argument which is an Object containing two keys: `i`: the index of the tab that is selected, `ref`: the ref of the tab that is selected -- **`edgeHitWidth`** _(Integer)_ - region (in pixels) from the left & right edges of the screen that can trigger swipe. Default is 30, which is the same as the swipe-back gesture on iOS. -- **`hasTouch`** _(Function)_ - returns `true` when ScrollableTabView starts being panned and `false` when it is released. Not triggered when `locked` (Bool) is true. -- **`locked`** _(Bool)_ - dynamically disable scrolling between tabs. -- **`springTension`** _(Integer)_ - a number between `1` and `100`, controls the amount of tension on the spring that guides the scroll animation - see [example](http://facebook.github.io/rebound-js/examples/#graph-canvas). -- **`springFriction`** _(Integer)_ - a number between `1` and `30`, controls the amount of friction on the spring that guides the scroll animation - see [example](http://facebook.github.io/rebound-js/examples/#graph-canvas). -- **`clampSpring`** _(Bool)_ - if `true`, the spring will not bounce at all - if `false`, it will oscillate around the target value before settling. -- **`initialPage`** _(Integer)_ - the index of the initially selected tab, defaults to 0 === first tab. -- **`children`** _(ReactComponents)_ - each top-level child component should have a `tabLabel` prop that can be used by the tab bar component to render out the labels. The default tab bar expects it to be a string, but you can use anything you want if you make a custom tab bar. - ---- - -**MIT Licensed** diff --git a/Components/vendor/react-native-scrollable-tab-view/demo-fb.gif b/Components/vendor/react-native-scrollable-tab-view/demo-fb.gif deleted file mode 100755 index 380ee8e347..0000000000 Binary files a/Components/vendor/react-native-scrollable-tab-view/demo-fb.gif and /dev/null differ diff --git a/Components/vendor/react-native-scrollable-tab-view/demo.gif b/Components/vendor/react-native-scrollable-tab-view/demo.gif deleted file mode 100755 index 3092266476..0000000000 Binary files a/Components/vendor/react-native-scrollable-tab-view/demo.gif and /dev/null differ diff --git a/Components/vendor/react-native-scrollable-tab-view/index.js b/Components/vendor/react-native-scrollable-tab-view/index.js deleted file mode 100755 index f4334b4ab3..0000000000 --- a/Components/vendor/react-native-scrollable-tab-view/index.js +++ /dev/null @@ -1,132 +0,0 @@ -'use strict'; - -import React from 'react'; -import NativeBaseComponent from '../../Base/NativeBaseComponent'; -import { - Dimensions, - Text, - View, - TouchableOpacity, - PanResponder, - Animated, -} from 'react-native'; - -import DefaultTabBar from './DefaultTabBar'; -var deviceWidth = Dimensions.get('window').width; - -export default class ScrollableTabView extends NativeBaseComponent { - static defaultProps = { - ...NativeBaseComponent.defaultProps, - tabBarPosition: 'top', - edgeHitWidth: 30, - springTension: 50, - springFriction: 10 - }; - constructor(props) { - super(props); - var currentPage = this.props.initialPage || 0; - this.state = { - currentPage: currentPage, - scrollValue: new Animated.Value(currentPage) - } - } - - componentWillMount() { - var release = (e, gestureState) => { - var relativeGestureDistance = gestureState.dx / deviceWidth, - lastPageIndex = this.props.children.length - 1, - vx = gestureState.vx, - newPage = this.state.currentPage; - - if (relativeGestureDistance < -0.5 || (relativeGestureDistance < 0 && vx <= -0.5)) { - newPage = newPage + 1; - } else if (relativeGestureDistance > 0.5 || (relativeGestureDistance > 0 && vx >= 0.5)) { - newPage = newPage - 1; - } - - this.props.hasTouch && this.props.hasTouch(false); - this.goToPage(Math.max(0, Math.min(newPage, this.props.children.length - 1))); - } - - this._panResponder = PanResponder.create({ - // Claim responder if it's a horizontal pan - onMoveShouldSetPanResponder: (e, gestureState) => { - if (Math.abs(gestureState.dx) > Math.abs(gestureState.dy)) { - if ((gestureState.moveX <= this.props.edgeHitWidth || - gestureState.moveX >= deviceWidth - this.props.edgeHitWidth) && - this.props.locked !== true) { - this.props.hasTouch && this.props.hasTouch(true); - return true; - } - } - }, - - // Touch is released, scroll to the one that you're closest to - onPanResponderRelease: release, - onPanResponderTerminate: release, - - // Dragging, move the view with the touch - onPanResponderMove: (e, gestureState) => { - var dx = gestureState.dx; - var lastPageIndex = this.props.children.length - 1; - - // This is awkward because when we are scrolling we are offsetting the underlying view - // to the left (-x) - var offsetX = dx - (this.state.currentPage * deviceWidth); - this.state.scrollValue.setValue(-1 * offsetX / deviceWidth); - }, - }); - } - - goToPage(pageNumber) { - this.props.onChangeTab && this.props.onChangeTab({ - i: pageNumber, ref: this.props.children[pageNumber] - }); - - this.setState({ - currentPage: pageNumber - }); - - Animated.spring(this.state.scrollValue, {toValue: pageNumber, friction: this.props.springFriction, tension: this.props.springTension}).start(); - } - - renderTabBar(props) { - if (this.props.renderTabBar === false) { - return null; - } else if (this.props.renderTabBar) { - return React.cloneElement(this.props.renderTabBar(), props); - } else { - return ; - } - } - - render() { - var sceneContainerStyle = { - width: deviceWidth * this.props.children.length, - flex: 1, - flexDirection: 'row' - }; - - var translateX = this.state.scrollValue.interpolate({ - inputRange: [0, 1], outputRange: [0, -deviceWidth] - }); - - var tabBarProps = { - goToPage: this.goToPage.bind(this), - tabs: this.props.children.map((child) => child.props.tabLabel), - activeTab: this.state.currentPage, - scrollValue: this.state.scrollValue - }; - - return ( - - {this.props.tabBarPosition === 'top' ? this.renderTabBar(tabBarProps) : null} - - {this.props.children} - - {this.props.tabBarPosition === 'bottom' ? this.renderTabBar(tabBarProps) : null} - - ); - } -} diff --git a/Components/vendor/react-native-scrollable-tab-view/package.json b/Components/vendor/react-native-scrollable-tab-view/package.json deleted file mode 100755 index 3a30c91606..0000000000 --- a/Components/vendor/react-native-scrollable-tab-view/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "react-native-scrollable-tab-view", - "version": "0.2.2-alpha", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/brentvatne/react-native-scrollable-tab-view.git" - }, - "keywords": [ - "react-native-component", - "react-component", - "react-native", - "ios", - "tab", - "scrollable" - ], - "author": "Brent Vatne", - "license": "MIT", - "bugs": { - "url": "https://github.com/brentvatne/react-native-scrollable-tab-view/issues" - }, - "homepage": "https://github.com/brentvatne/react-native-scrollable-tab-view#readme", - "peerDependencies": { - "react-native": ">=0.9.0 || 0.9.0-rc || 0.10.0-rc || 0.11.0-rc" - }, - "dependencies": { - "rebound": "0.0.13" - } -} diff --git a/Fonts/Andale Mono.ttf b/Fonts/Andale Mono.ttf deleted file mode 100644 index e766a6e18b..0000000000 Binary files a/Fonts/Andale Mono.ttf and /dev/null differ diff --git a/Fonts/Arial Black.ttf b/Fonts/Arial Black.ttf deleted file mode 100644 index 88772774d7..0000000000 Binary files a/Fonts/Arial Black.ttf and /dev/null differ diff --git a/Fonts/Arial.ttf b/Fonts/Arial.ttf deleted file mode 100644 index ab68fb197d..0000000000 Binary files a/Fonts/Arial.ttf and /dev/null differ diff --git a/Fonts/Comic Sans MS.ttf b/Fonts/Comic Sans MS.ttf deleted file mode 100644 index 831e3d867a..0000000000 Binary files a/Fonts/Comic Sans MS.ttf and /dev/null differ diff --git a/Fonts/Courier New.ttf b/Fonts/Courier New.ttf deleted file mode 100644 index 633899d825..0000000000 Binary files a/Fonts/Courier New.ttf and /dev/null differ diff --git a/Fonts/Georgia.ttf b/Fonts/Georgia.ttf deleted file mode 100644 index d15700612a..0000000000 Binary files a/Fonts/Georgia.ttf and /dev/null differ diff --git a/Fonts/Microsoft Sans Serif.ttf b/Fonts/Microsoft Sans Serif.ttf deleted file mode 100644 index 8cb1d92f01..0000000000 Binary files a/Fonts/Microsoft Sans Serif.ttf and /dev/null differ diff --git a/Fonts/Roboto.ttf b/Fonts/Roboto.ttf deleted file mode 100755 index 3e6e2e7613..0000000000 Binary files a/Fonts/Roboto.ttf and /dev/null differ diff --git a/Fonts/Roboto_medium.ttf b/Fonts/Roboto_medium.ttf deleted file mode 100755 index aa00de0ef9..0000000000 Binary files a/Fonts/Roboto_medium.ttf and /dev/null differ diff --git a/Fonts/SF-UI-Text-Regular.otf b/Fonts/SF-UI-Text-Regular.otf deleted file mode 100644 index a36c8f62b0..0000000000 Binary files a/Fonts/SF-UI-Text-Regular.otf and /dev/null differ diff --git a/Fonts/Skia.ttf b/Fonts/Skia.ttf deleted file mode 100644 index 8bb197b99a..0000000000 Binary files a/Fonts/Skia.ttf and /dev/null differ diff --git a/Fonts/Times New Roman.ttf b/Fonts/Times New Roman.ttf deleted file mode 100644 index d7969c39ca..0000000000 Binary files a/Fonts/Times New Roman.ttf and /dev/null differ diff --git a/LICENSE b/LICENSE index 8dada3edaf..29e4268264 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,20 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +The MIT License (MIT) + +Copyright (c) 2021 GeekyAnts India Pvt Ltd + +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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +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. diff --git a/README.md b/README.md index 0e407b2659..3e72ff8f6d 100644 --- a/README.md +++ b/README.md @@ -1,232 +1,203 @@ -# NativeBase v0.5.2 -The missing piece of React Native +# ⛔️ DEPRECATED +# NativeBase ↔ gluestack +> 🚀 NativeBase is evolving into gluestack-ui! What was planned as NativeBase v4 is now available as gluestack-ui - our next-generation component library built for better performance, enhanced customization, and improved developer experience. Visit [gluestack.io](http://gluestack.io) to get started! -![logo](/img/logo.png) +## Important Notice: Evolution to gluestack-ui -Get on the mobile fast track with NativeBase, the fastest-growing platform and tool set for iOS and Android development. Get an introduction to NativeBase and work through an instance application that highlights React Native programming techniques. +NativeBase is entering maintenance mode as we evolve into gluestack-ui. This transition represents our commitment to providing the React Native community with more powerful, flexible, and performant UI components. If you are starting a new project with NativeBase, we recommend using [gluestack-ui](https://ui.gluestack.io/) instead. [Know More](https://nativebase.io/blogs/road-ahead-with-gluestack-ui). +# Nativebase Logo -# Contents +[![Financial Contributors on Open Collective](https://opencollective.com/NativeBase/all/badge.svg?label=financial+contributors)](https://opencollective.com/NativeBase) +[![](https://img.shields.io/discord/785491682719301643?label=Discord&logo=discord&logoColor=%237289DA)](https://discord.com/invite/TSgCw2UPmb) +[![npm next package](https://img.shields.io/npm/v/native-base/next.svg)](https://www.npmjs.com/package/native-base) +[![npm latest package](https://img.shields.io/npm/v/native-base/latest.svg)](https://www.npmjs.com/package/native-base) +[![npm downloads](https://img.shields.io/npm/dm/native-base.svg)](https://npm-stat.com/charts.html?package=native-base) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/GeekyAnts/NativeBase/blob/master/LICENSE) +[![Follow on Twitter](https://img.shields.io/twitter/follow/nativebase.svg?label=follow+NativeBase)](https://twitter.com/nativebase) +[![Github Stars](https://img.shields.io/github/stars/GeekyAnts/NativeBase)](https://img.shields.io/github/stars/GeekyAnts/NativeBase) -- [What is NativeBase?](#what-is-nativebase) -- [Testimonials](#testimonials) -- [Why NativeBase?](#why-nativebase) -- [Magic of NativeBase](#magic-of-nativebase) -- [Get Started](#get-started) -- [Components](#components) -- [Native Starter Kit](#native-starter-kit) -- [Featured Apps](#featured-apps) - - [Native Starter Pro](#native-starter-pro---v31) - - [Ecommerce Starter](#ecommerce-starter---v31) - - [Flat App Theme](#flat-app-theme---v30) -- [Quick Links to NativeBase](#quick-links-to-nativebase) -- [Documentation](#documentation) -- [Website](#website) +## NativeBase is a mobile-first, accessible component library for building a consistent design system across android, iOS & web. +[**Website**](https://nativebase.io/) +
+[**Documentation**](https://docs.nativebase.io/) +## Table of Contents -## What is NativeBase -[NativeBase](http://nativebase.io/) is a free and open source framework that enables developers to build high-quality mobile apps using [React Native](https://github.com/facebook/react-native) iOS and Android apps with a fusion of [ES6](http://es6-features.org/#Constants). NativeBase builds a layer on top of React Native that provides you with basic set of components for mobile application development. This helps you to build world-class application experiences on native platforms. +1. [Introduction](#1-introduction) +2. [Motivation](#2-motivation) +3. [Features](#3-features) +4. [Dependencies](#4-dependencies) +5. [Installation & Setup](#5-installation) +6. [Components](#6-components) +7. [Examples](#7-examples) +8. [KitchenSink App](#8-kitchensink-app) +9. [Tech Stack](#9-tech-stack) +10. [Compatible Versions](#10-compatible-versions) +11. [Contributors](#11-contributors) +12. [Changelog](#12-changelog) +13. [Community](#13-community) +14. [License](#14-license) +## 1. Introduction? -The applications stack of components is built using native UI components and because of that, there are no compromises with the User Experience of the applications. NativeBase is targeted specially on the look and feel, and UI interplay of your app. NativeBase without a doubt fits in well with mobile applications which cuts down one huge part of your app - The Front end. +[NativeBase](https://nativebase.io/) is a mobile-first, component library for React & React Native. Version 3.0 ships with complete ARIA integration, support for utility props and nearly 40 components that are consistent across Android, iOS and Web. Fast-track your dev process with NativeBase 3.0. -What is really great is that you can use shared UI cross-platform components, which will drastically increase your productivity. When using NativeBase, you can use any native third-party libraries out of the box. You do not need to use wrappers or do any other actions. The new additions to the native platform are available immediately. NativeBase provides amazing support for adding components, so that you will by no means hit a lifeless stop. [Read More. . .](http://nativebase.io/documentation) +**Recommended by [Awesome React Native](https://github.com/jondot/awesome-react-native)** -One import statement, and you get all NativeBase components. -``` -import { list of Components } from 'native-base'; -``` +> NativeBase was added to the list of Frameworks of Awesome React Native and it is used by numerous React lovers across the world. +## 2. Motivation +Building with React Native from scratch is a tedious process with multiple steps such as adding styling, interactions, state management, responsiveness, accessibility, etc. We wanted to build and ship accessible, high-quality apps quickly. +
-## Testimonials +Our inspirations include Material UI, Chakra UI, Ant Design, Braid Design System, Bootstrap, TailwindCSS & Flutter. -Some quotes from users of **NativeBase** +## 3. Features -**Recommended by** ![Microsoft](/img/microsoft-logo.png) -> If you're looking to get started with React Native + CodePush, and are looking for an awesome starter kit, you should check out Native Starter Pro - [Microsoft's react-native-code-push repo](https://github.com/Microsoft/react-native-code-push#example-apps--starters) +### **Out of the Box Accessibility** -**Recommended by [Awesome React Native](https://github.com/jondot/awesome-react-native)** ->NativeBase added into the list of [Frameworks](https://github.com/jondot/awesome-react-native#frameworks) of Awesome React Native. +Integrated with React ARIA and React Native ARIA, which provides React hooks. This enables you to build accessible design systems in no time. -**vitalets** ->Thanks for such useful library. +Out of the box accessibility -**robtweed** ->The components look great, and I'd love to use them. +### **Supporting Utility Props** -**chromakey** ->Thanks for a great library. I appreciate the quick fix! +Powered by [Styled System](https://styled-system.com) so you can rapidly build custom UI components with constraint-based utility style props. -**webinspired** ->Ran thru the demo.... it was amazing... +### **Rich Component Library** -**mrphu3074** ->NativeBase is rapid my prototype. +NativeBase offers around 40 components so you can build seamlessly. It includes button, checkbox, flex, stack and more. -**michshat** ->This framework looks really good - Thank you! +### **Highly Themeable** -**Nickman87** ->I'm trying out your nativeBase package as it looks like it can simplify a lot of my views. +Themeability is one of the core elements of NativeBase. You can customise your app theme and component styles to your heart's content. -**RezaRahmati** ->Great library. +Nativebase Logo +### **Available for Both Mobile and Web** +NativeBase 3.0 is powered by React Native Web so you can build consistent UIs across Web, Android and iOS. -## Why NativeBase? -
![with-and-without-nativebase](./img/with-and-without-nativebase.jpg)
+### **Responsiveness Made Easy** -Do you still have a question **Why NativeBase**? +Instead of manually adding responsiveness, NativeBase 3.0 allows you to provide object and array values to add responsive styles. -If yes then go ahead and watch this magic. +### **Now with** **Dark Mode** +Building apps with a dark mode setting just got a whole lot easier. NativeBase is now optimised for light and dark modes. +## 4. Dependencies +React Native, Expo -## Magic of NativeBase -
[![magic](./img/magic.png)](http://nativebase.io/docs/v0.2.1/assets/img/magic-with-nativebase-020.mp4)
+## 5. Installation -Click to watch the magic +NativeBase is supported in Expo or React Native CLI initiated apps. Web support is made possible by react-native-web. +Refer the [guides](https://docs.nativebase.io/installation) to setup NativeBase in your React app. +## 6. Components -## Get Started +NativeBase 3.0 is a rich component library with nearly 40 components. -To have NativeBase components running onto your native apps, all you need to do is create a fresh [React Native](https://github.com/facebook/react-native) project and install the [NativeBase](http://nativebase.io/) command line tools. +- [**Layout**](https://docs.nativebase.io/box) +- [**Forms**](https://docs.nativebase.io/button) +- [**Data Display**](https://docs.nativebase.io/badge) +- [**Feedback**](https://docs.nativebase.io/alert) +- [**Typography**](https://docs.nativebase.io/text) +- [**Overlay** ](https://docs.nativebase.io/alert-dialog) +- [**Disclosure**](https://docs.nativebase.io/action-sheet) +- [**Media & Icons**](https://docs.nativebase.io/avatar) +- [**Transition**](https://docs.nativebase.io/presence-transition) +- [**Other**](https://docs.nativebase.io/fab) -``` -react-native init AwesomeNativeBase +## 7. Examples -cd AwesomeNativeBase +[Check out the Todo-List example](https://docs.nativebase.io/todo-list) -npm install -``` +## 8. KitchenSink App -Include NativeBase into your React Native project. -``` -npm install native-base --save -``` +[Kitchen Sink](https://kitchensink.nativebase.io/) is a comprehensive demo app showcasing all the NativeBase components in action. It includes buttons, forms, icons, etc. -Now you are ready to get going with NativeBase. [Read More. . .](http://nativebase.io/documentation) +
+ Kitchensink App gif + Kitchensink App QR code +
+## 9. Tech Stack +JavaScript, React Native, Styled System +### Made with :heart: at [GeekyAnts](https://geekyants.com/?utm_source=nb-github&utm_medium=landing+page&utm_campaign=nativebase-github-cta) -## Components +NativeBase is an open-source project made by the tech-savvy geeks at GeekyAnts. +GeekyAnts is a group of React Native experts. Do [get in touch with us](https://geekyants.com/hire/?utm_source=nb-github&utm_medium=landing+page&utm_campaign=nativebase-github-hire-cta) for any help with your React Native project. Always happy to help! -[NativeBase](http://nativebase.io/) is made from effective building blocks referred to as components. The Components are constructed in pure [React Native](https://github.com/facebook/react-native) platform along with some JavaScript functionality with rich set of customisable properties. These components allow you to quickly build the perfect interface. +## 10. Compatible Versions -The most awaited feature, **platform precise components** with single codebase is now available with version 0.5.0 of NativeBase. Along with this, there comes in addition of set of **Fonts** to be readily integrated with your apps. [Read More. . .](http://nativebase.io/documentation) +| NativeBase | React Native | +| -------------------------------- | ---------------------------------------------------------- | +| v0.1.1 | v0.22 to v0.23 | +| v0.2.0 to v0.3.1 | v0.24 to v0.25 | +| v0.4.6 to v0.4.9 | v0.26.0 - v0.27.1 | +| v0.5.0 to v0.5.15 | v0.26.0 - v0.37.0 | +| v0.5.16 to v0.5.20 | v0.38.0 - v0.39.0 | +| v2.0.0-alpha1 to v2.1.3 | v0.38.0 to v0.43.0 | +| v2.1.4 to v2.1.5 | v0.44.0 to v0.45.0 | +| v2.2.0 | v0.44.0 to v0.45.0 | +| v2.2.1 | v0.46.0 and above | +| v2.3.0 to 2.6.1 | v0.46.0 and above (does not support React 16.0.0-alpha.13) | +| v2.7.0 | v0.56.0 and above | +| v3.0.0-next.36 to v3.0.0-next-41 | v0.63.0 and above | +| v3.0.0 to latest | v0.63.0 and above | -#### [**Live Demo**](http://nativebase.io/docs/v0.5.0/components-ios) +## 11. Contributors +### Code Contributors +This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)]. + +### Financial Contributors -## [Native Starter Kit](https://github.com/start-react/native-starter-kit) +Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/NativeBase/contribute)] -A simple starter project for [React Native](https://github.com/facebook/react-native) + [NativeBase](http://nativebase.io/) + [Redux](http://redux.js.org/) + [CodePush](https://github.com/Microsoft/react-native-code-push) + [React Native Navigator](https://facebook.github.io/react-native/docs/navigator.html) apps on iOS and Android. +#### Individuals -No need of reinventing the wheel. To have immediately something to continue building on, it would be best to start from some starter kit for getting React Native - based applications off the ground in a hurry. + -This is a starter kit that you can install on the fly to get the basic plumping of React Native with NativeBase, Redux and CodePush. +#### Organizations -[Take a look at the demo](https://github.com/start-react/native-starter-kit#screens) +Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/NativeBase/contribute)] + + + + + + + + + + +## 12. Changelog +[Check out the changelog in the official documentation](https://docs.nativebase.io/changelog) +## 13. Community +- [Facebook](https://www.facebook.com/nativebaseio) +- [Twitter](https://twitter.com/nativebase) +- [Discord](https://discord.com/invite/TSgCw2UPmb) +- [Stackoverflow](https://stackoverflow.com/questions/tagged/native-base) +- [Blog](https://nativebase.io/blogs) +- [YouTube](https://www.youtube.com/channel/UCoL_iTwpY07vDs91974z3xA/about) -## Featured Apps +## 14. License -Having tried with the free version, [Native Starter Kit](https://github.com/start-react/native-starter-kit) and appreciate our product? - -Get on the mobile fast track with the featured apps of NativeBase, to build high-quality iOS and Android mobile apps. - -Based on [React Native](https://facebook.github.io/react-native/) and [NativeBase](http://nativebase.io/docs/v0.4.6/), Native Starter Pro, Ecommerce Starter, Flat App Theme are beautifully designed with fusion of [Redux](https://github.com/reactjs/react-redux) and [ES6](http://es6-features.org/#Constants), responsive iOS and Android app source code to quickly get started on your next project. - - -### Native Starter Pro - v3.1 - -Native Starter Pro is best suited for developing apps that makes use of ready-made tools. The theme has several widget areas that allows you to extend your theme functionality with plugins. - -Native Starter Pro includes following ready-to-use and highly customizable components : - -- UI Elements: Button with various shapes and themes, Textbox, Form Elements, List, Full fledged collection of Icons -- Custom Elements: Header, Footer, Drawer, Spinner, ProgressBar, Modal, Ready to use Email Template, Interactive design of Calendar with fast swiping feature, Scroll between the tabs, Responsive Navigator, Chat Messenger -- Ready to use screens -- Easy theme customization -- [Read More](http://strapmobile.com/docs/native-starter-pro/v3.1/) - -**Quick links to Native Starter Pro** - -- *[Native Starter Pro Features](http://strapmobile.com/docs/native-starter-pro/v3.1/overview/whats-new-in-v3-1)* -- *[Native Starter Pro Components](http://strapmobile.com/docs/native-starter-pro/v3.1/components)* -- *[Native Starter Pro's App Generator](http://strapmobile.com/customizer/#/color)* -- *[Native Starter Pro Releases](http://strapmobile.com/native-starter-pro-releases/)* - - -### Ecommerce Starter - v3.1 - -Ecommerce Starter, a perfect starter kit for e-commerce apps. Readily available pages along with rich collection of UI elements. - -Ready to use screens: - -- SignUp/Login -- Tabs -- Fluid grid layout to advertise various brands for your products -- List-view and grid-view of product advertisements -- Product details in your cart -- [Read More](http://strapmobile.com/docs/react-native-ecommerce-starter/v3.1) - -**Quick links to Ecommerce Starter** - -- *[Ecommerce Starter Features](http://strapmobile.com/docs/react-native-ecommerce-starter/v3.1/overview/whats-new-in-v3-1)* -- *[Ecommerce Starter Components](http://strapmobile.com/docs/react-native-ecommerce-starter/v3.1/components)* -- *[Ecommerce Starter Releases](http://strapmobile.com/docs/react-native-ecommerce-starter/v3.1/release-notes)* - - -### Flat App Theme - v3.0 - -Flat App is basically a style of interface design emphasizing minimum use of stylistic elements, typography and flat colors. - -Ready to use screens: - -- UI Elements: Button with various shapes and themes, Textbox, Form Elements, List, Full fledged collection of Icons -- Custom Elements: Header, Footer, Drawer, Spinner, ProgressBar, Modal, Ready to use Email Template, Interactive design of Calendar with fast swiping feature, Scroll between the tabs, Responsive Navigator, Chat Messenger -- Ready to use screens: Channels, Stories, Comments, Carousel, etc -- Easy theme customization -- [Read More](http://strapmobile.com/docs/react-native-flat-app-theme/v3.0) - -**Quick links to Flat App Theme** - -- *[Flat App Theme Features](http://strapmobile.com/docs/react-native-flat-app-theme/v3.0/overview/whats-new-in-v3-0)* -- *[Flat App Theme Components](http://strapmobile.com/docs/react-native-flat-app-theme/v3.0/components)* -- *[Flat App Theme Releases](http://strapmobile.com/docs/react-native-flat-app-theme/v3.0/release-notes)* - - - - -## Quick Links to NativeBase - -* [NativeBase on Twitter](https://twitter.com/NativeBaseIO) -* [NativeBase Blog](https://medium.com/nativebase-io-blog) -* [NativeBase Documentation](http://nativebase.io/documentation) - - - - -## Documentation - -Go through [NativeBase Docs](http://nativebase.io/documentation) to play with NativeBase. - - - - -## Website -[http://nativebase.io/](http://nativebase.io/) +Licensed under the MIT License, Copyright © 2021 GeekyAnts. See [LICENSE](https://github.com/GeekyAnts/NativeBase/blob/master/LICENSE) for more information. diff --git a/RNBareExample/.buckconfig b/RNBareExample/.buckconfig new file mode 100644 index 0000000000..934256cb29 --- /dev/null +++ b/RNBareExample/.buckconfig @@ -0,0 +1,6 @@ + +[android] + target = Google Inc.:Google APIs:23 + +[maven_repositories] + central = https://repo1.maven.org/maven2 diff --git a/RNBareExample/.eslintrc.js b/RNBareExample/.eslintrc.js new file mode 100644 index 0000000000..40c6dcd05f --- /dev/null +++ b/RNBareExample/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: '@react-native-community', +}; diff --git a/RNBareExample/.gitattributes b/RNBareExample/.gitattributes new file mode 100644 index 0000000000..45a3dcb2a2 --- /dev/null +++ b/RNBareExample/.gitattributes @@ -0,0 +1,3 @@ +# Windows files should use crlf line endings +# https://help.github.com/articles/dealing-with-line-endings/ +*.bat text eol=crlf diff --git a/RNBareExample/.gitignore b/RNBareExample/.gitignore new file mode 100644 index 0000000000..ad572e632b --- /dev/null +++ b/RNBareExample/.gitignore @@ -0,0 +1,59 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +*.keystore +!debug.keystore + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots + +# Bundle artifact +*.jsbundle + +# CocoaPods +/ios/Pods/ diff --git a/RNBareExample/.prettierrc.js b/RNBareExample/.prettierrc.js new file mode 100644 index 0000000000..84196d95f4 --- /dev/null +++ b/RNBareExample/.prettierrc.js @@ -0,0 +1,7 @@ +module.exports = { + bracketSpacing: false, + jsxBracketSameLine: true, + singleQuote: true, + trailingComma: 'all', + arrowParens: 'avoid', +}; diff --git a/RNBareExample/.watchmanconfig b/RNBareExample/.watchmanconfig new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/RNBareExample/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/RNBareExample/App.tsx b/RNBareExample/App.tsx new file mode 100644 index 0000000000..bb77cc5b4d --- /dev/null +++ b/RNBareExample/App.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import {NativeBaseProvider, Box, Center} from 'native-base'; + +const config = { + dependencies: { + 'linear-gradient': require('react-native-linear-gradient').default, + }, +}; + +const App = () => { + return ( + +
+ + This is a Box with Linear Gradient + +
+
+ ); +}; + +export default App; diff --git a/RNBareExample/_editorconfig b/RNBareExample/_editorconfig new file mode 100644 index 0000000000..7c286132fe --- /dev/null +++ b/RNBareExample/_editorconfig @@ -0,0 +1,3 @@ +# Windows files +[*.bat] +end_of_line = crlf diff --git a/RNBareExample/android/app/_BUCK b/RNBareExample/android/app/_BUCK new file mode 100644 index 0000000000..74273dad7c --- /dev/null +++ b/RNBareExample/android/app/_BUCK @@ -0,0 +1,55 @@ +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") + +lib_deps = [] + +create_aar_targets(glob(["libs/*.aar"])) + +create_jar_targets(glob(["libs/*.jar"])) + +android_library( + name = "all-libs", + exported_deps = lib_deps, +) + +android_library( + name = "app-code", + srcs = glob([ + "src/main/java/**/*.java", + ]), + deps = [ + ":all-libs", + ":build_config", + ":res", + ], +) + +android_build_config( + name = "build_config", + package = "com.rnbareexample", +) + +android_resource( + name = "res", + package = "com.rnbareexample", + res = "src/main/res", +) + +android_binary( + name = "app", + keystore = "//android/keystores:debug", + manifest = "src/main/AndroidManifest.xml", + package_type = "debug", + deps = [ + ":app-code", + ], +) diff --git a/RNBareExample/android/app/build.gradle b/RNBareExample/android/app/build.gradle new file mode 100644 index 0000000000..da3e7055a8 --- /dev/null +++ b/RNBareExample/android/app/build.gradle @@ -0,0 +1,222 @@ +apply plugin: "com.android.application" + +import com.android.build.OutputFile + +/** + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets + * and bundleReleaseJsAndAssets). + * These basically call `react-native bundle` with the correct arguments during the Android build + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the + * bundle directly from the development server. Below you can see all the possible configurations + * and their defaults. If you decide to add a configuration block, make sure to add it before the + * `apply from: "../../node_modules/react-native/react.gradle"` line. + * + * project.ext.react = [ + * // the name of the generated asset file containing your JS bundle + * bundleAssetName: "index.android.bundle", + * + * // the entry file for bundle generation. If none specified and + * // "index.android.js" exists, it will be used. Otherwise "index.js" is + * // default. Can be overridden with ENTRY_FILE environment variable. + * entryFile: "index.android.js", + * + * // https://reactnative.dev/docs/performance#enable-the-ram-format + * bundleCommand: "ram-bundle", + * + * // whether to bundle JS and assets in debug mode + * bundleInDebug: false, + * + * // whether to bundle JS and assets in release mode + * bundleInRelease: true, + * + * // whether to bundle JS and assets in another build variant (if configured). + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants + * // The configuration property can be in the following formats + * // 'bundleIn${productFlavor}${buildType}' + * // 'bundleIn${buildType}' + * // bundleInFreeDebug: true, + * // bundleInPaidRelease: true, + * // bundleInBeta: true, + * + * // whether to disable dev mode in custom build variants (by default only disabled in release) + * // for example: to disable dev mode in the staging build type (if configured) + * devDisabledInStaging: true, + * // The configuration property can be in the following formats + * // 'devDisabledIn${productFlavor}${buildType}' + * // 'devDisabledIn${buildType}' + * + * // the root of your project, i.e. where "package.json" lives + * root: "../../", + * + * // where to put the JS bundle asset in debug mode + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", + * + * // where to put the JS bundle asset in release mode + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in debug mode + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in release mode + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", + * + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to + * // date; if you have any other folders that you want to ignore for performance reasons (gradle + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ + * // for example, you might want to remove it from here. + * inputExcludes: ["android/**", "ios/**"], + * + * // override which node gets called and with what additional arguments + * nodeExecutableAndArgs: ["node"], + * + * // supply additional arguments to the packager + * extraPackagerArgs: [] + * ] + */ + +project.ext.react = [ + enableHermes: false, // clean and rebuild if changing +] + +apply from: "../../node_modules/react-native/react.gradle" + +/** + * Set this to true to create two separate APKs instead of one: + * - An APK that only works on ARM devices + * - An APK that only works on x86 devices + * The advantage is the size of the APK is reduced by about 4MB. + * Upload all the APKs to the Play Store and people will download + * the correct one based on the CPU architecture of their device. + */ +def enableSeparateBuildPerCPUArchitecture = false + +/** + * Run Proguard to shrink the Java bytecode in release builds. + */ +def enableProguardInReleaseBuilds = false + +/** + * The preferred build flavor of JavaScriptCore. + * + * For example, to use the international variant, you can use: + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'org.webkit:android-jsc:+' + +/** + * Whether to enable the Hermes VM. + * + * This should be set on project.ext.react and mirrored here. If it is not set + * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode + * and the benefits of using Hermes will therefore be sharply reduced. + */ +def enableHermes = project.ext.react.get("enableHermes", false); + +android { + ndkVersion rootProject.ext.ndkVersion + + compileSdkVersion rootProject.ext.compileSdkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + applicationId "com.rnbareexample" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + } + splits { + abi { + reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK + include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" + } + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + // Caution! In production, you need to generate your own keystore file. + // see https://reactnative.dev/docs/signed-apk-android. + signingConfig signingConfigs.debug + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } + + // applicationVariants are e.g. debug, release + applicationVariants.all { variant -> + variant.outputs.each { output -> + // For each separate APK per architecture, set a unique version code as described here: + // https://developer.android.com/studio/build/configure-apk-splits.html + // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. + def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] + def abi = output.getFilter(OutputFile.ABI) + if (abi != null) { // null for the universal-debug, universal-release variants + output.versionCodeOverride = + defaultConfig.versionCode * 1000 + versionCodes.get(abi) + } + + } + } +} + +dependencies { + implementation fileTree(dir: "libs", include: ["*.jar"]) + //noinspection GradleDynamicVersion + implementation "com.facebook.react:react-native:+" // From node_modules + + implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" + + debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { + exclude group:'com.facebook.fbjni' + } + + debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { + exclude group:'com.facebook.flipper' + exclude group:'com.squareup.okhttp3', module:'okhttp' + } + + debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { + exclude group:'com.facebook.flipper' + } + + if (enableHermes) { + def hermesPath = "../../node_modules/hermes-engine/android/"; + debugImplementation files(hermesPath + "hermes-debug.aar") + releaseImplementation files(hermesPath + "hermes-release.aar") + } else { + implementation jscFlavor + } +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.compile + into 'libs' +} + +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) diff --git a/RNBareExample/android/app/build_defs.bzl b/RNBareExample/android/app/build_defs.bzl new file mode 100644 index 0000000000..fff270f8d1 --- /dev/null +++ b/RNBareExample/android/app/build_defs.bzl @@ -0,0 +1,19 @@ +"""Helper definitions to glob .aar and .jar targets""" + +def create_aar_targets(aarfiles): + for aarfile in aarfiles: + name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] + lib_deps.append(":" + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +def create_jar_targets(jarfiles): + for jarfile in jarfiles: + name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] + lib_deps.append(":" + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) diff --git a/RNBareExample/android/app/debug.keystore b/RNBareExample/android/app/debug.keystore new file mode 100644 index 0000000000..364e105ed3 Binary files /dev/null and b/RNBareExample/android/app/debug.keystore differ diff --git a/RNBareExample/android/app/proguard-rules.pro b/RNBareExample/android/app/proguard-rules.pro new file mode 100644 index 0000000000..11b025724a --- /dev/null +++ b/RNBareExample/android/app/proguard-rules.pro @@ -0,0 +1,10 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: diff --git a/RNBareExample/android/app/src/debug/AndroidManifest.xml b/RNBareExample/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000000..b2f3ad9fce --- /dev/null +++ b/RNBareExample/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/RNBareExample/android/app/src/debug/java/com/rnbareexample/ReactNativeFlipper.java b/RNBareExample/android/app/src/debug/java/com/rnbareexample/ReactNativeFlipper.java new file mode 100644 index 0000000000..737a7e8b21 --- /dev/null +++ b/RNBareExample/android/app/src/debug/java/com/rnbareexample/ReactNativeFlipper.java @@ -0,0 +1,72 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + *

This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. + */ +package com.rnbareexample; + +import android.content.Context; +import com.facebook.flipper.android.AndroidFlipperClient; +import com.facebook.flipper.android.utils.FlipperUtils; +import com.facebook.flipper.core.FlipperClient; +import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; +import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; +import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; +import com.facebook.flipper.plugins.inspector.DescriptorMapping; +import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; +import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; +import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; +import com.facebook.flipper.plugins.react.ReactFlipperPlugin; +import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.bridge.ReactContext; +import com.facebook.react.modules.network.NetworkingModule; +import okhttp3.OkHttpClient; + +public class ReactNativeFlipper { + public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { + if (FlipperUtils.shouldEnableFlipper(context)) { + final FlipperClient client = AndroidFlipperClient.getInstance(context); + + client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); + client.addPlugin(new ReactFlipperPlugin()); + client.addPlugin(new DatabasesFlipperPlugin(context)); + client.addPlugin(new SharedPreferencesFlipperPlugin(context)); + client.addPlugin(CrashReporterPlugin.getInstance()); + + NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); + NetworkingModule.setCustomClientBuilder( + new NetworkingModule.CustomClientBuilder() { + @Override + public void apply(OkHttpClient.Builder builder) { + builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); + } + }); + client.addPlugin(networkFlipperPlugin); + client.start(); + + // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized + // Hence we run if after all native modules have been initialized + ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); + if (reactContext == null) { + reactInstanceManager.addReactInstanceEventListener( + new ReactInstanceManager.ReactInstanceEventListener() { + @Override + public void onReactContextInitialized(ReactContext reactContext) { + reactInstanceManager.removeReactInstanceEventListener(this); + reactContext.runOnNativeModulesQueueThread( + new Runnable() { + @Override + public void run() { + client.addPlugin(new FrescoFlipperPlugin()); + } + }); + } + }); + } else { + client.addPlugin(new FrescoFlipperPlugin()); + } + } + } +} diff --git a/RNBareExample/android/app/src/main/AndroidManifest.xml b/RNBareExample/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..748befcaad --- /dev/null +++ b/RNBareExample/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + diff --git a/RNBareExample/android/app/src/main/assets/fonts/Merriweather-Regular.ttf b/RNBareExample/android/app/src/main/assets/fonts/Merriweather-Regular.ttf new file mode 100644 index 0000000000..18da9e5b0a Binary files /dev/null and b/RNBareExample/android/app/src/main/assets/fonts/Merriweather-Regular.ttf differ diff --git a/RNBareExample/android/app/src/main/assets/fonts/Roboto-Bold.ttf b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Bold.ttf new file mode 100644 index 0000000000..d998cf5b46 Binary files /dev/null and b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Bold.ttf differ diff --git a/RNBareExample/android/app/src/main/assets/fonts/Roboto-Italic.ttf b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Italic.ttf new file mode 100644 index 0000000000..5b390ff950 Binary files /dev/null and b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Italic.ttf differ diff --git a/RNBareExample/android/app/src/main/assets/fonts/Roboto-Light.ttf b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Light.ttf new file mode 100644 index 0000000000..35267989de Binary files /dev/null and b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Light.ttf differ diff --git a/RNBareExample/android/app/src/main/assets/fonts/Roboto-Medium.ttf b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Medium.ttf new file mode 100644 index 0000000000..f714a514d9 Binary files /dev/null and b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Medium.ttf differ diff --git a/RNBareExample/android/app/src/main/assets/fonts/Roboto-Regular.ttf b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Regular.ttf new file mode 100644 index 0000000000..2b6392ffe8 Binary files /dev/null and b/RNBareExample/android/app/src/main/assets/fonts/Roboto-Regular.ttf differ diff --git a/RNBareExample/android/app/src/main/java/com/rnbareexample/MainActivity.java b/RNBareExample/android/app/src/main/java/com/rnbareexample/MainActivity.java new file mode 100644 index 0000000000..7367c46465 --- /dev/null +++ b/RNBareExample/android/app/src/main/java/com/rnbareexample/MainActivity.java @@ -0,0 +1,15 @@ +package com.rnbareexample; + +import com.facebook.react.ReactActivity; + +public class MainActivity extends ReactActivity { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "RNBareExample"; + } +} diff --git a/RNBareExample/android/app/src/main/java/com/rnbareexample/MainApplication.java b/RNBareExample/android/app/src/main/java/com/rnbareexample/MainApplication.java new file mode 100644 index 0000000000..48dc137323 --- /dev/null +++ b/RNBareExample/android/app/src/main/java/com/rnbareexample/MainApplication.java @@ -0,0 +1,81 @@ +package com.rnbareexample; + +import android.app.Application; +import android.content.Context; +import com.facebook.react.PackageList; +import com.facebook.react.ReactApplication; +import com.BV.LinearGradient.LinearGradientPackage; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.soloader.SoLoader; +import java.lang.reflect.InvocationTargetException; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = + new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + @SuppressWarnings("UnnecessaryLocalVariable") + List packages = new PackageList(this).getPackages(); + // Packages that cannot be autolinked yet can be added manually here, for example: + // packages.add(new MyReactNativePackage()); + return packages; + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + } + + /** + * Loads Flipper in React Native templates. Call this in the onCreate method with something like + * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + * + * @param context + * @param reactInstanceManager + */ + private static void initializeFlipper( + Context context, ReactInstanceManager reactInstanceManager) { + if (BuildConfig.DEBUG) { + try { + /* + We use reflection here to pick up the class that initializes Flipper, + since Flipper library is not available in release mode + */ + Class aClass = Class.forName("com.rnbareexample.ReactNativeFlipper"); + aClass + .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) + .invoke(null, context, reactInstanceManager); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + } +} diff --git a/RNBareExample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/RNBareExample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000..a2f5908281 Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/RNBareExample/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/RNBareExample/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000..1b52399808 Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/RNBareExample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/RNBareExample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000..ff10afd6e1 Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/RNBareExample/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/RNBareExample/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000..115a4c768a Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/RNBareExample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/RNBareExample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000..dcd3cd8083 Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/RNBareExample/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/RNBareExample/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000..459ca609d3 Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/RNBareExample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/RNBareExample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000..8ca12fe024 Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/RNBareExample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/RNBareExample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000..8e19b410a1 Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/RNBareExample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/RNBareExample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000..b824ebdd48 Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/RNBareExample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/RNBareExample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000..4c19a13c23 Binary files /dev/null and b/RNBareExample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/RNBareExample/android/app/src/main/res/values/strings.xml b/RNBareExample/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000000..d2d75d0d1b --- /dev/null +++ b/RNBareExample/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + RNBareExample + diff --git a/RNBareExample/android/app/src/main/res/values/styles.xml b/RNBareExample/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000000..9fab0be743 --- /dev/null +++ b/RNBareExample/android/app/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/RNBareExample/android/build.gradle b/RNBareExample/android/build.gradle new file mode 100644 index 0000000000..93232f5fca --- /dev/null +++ b/RNBareExample/android/build.gradle @@ -0,0 +1,38 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + buildToolsVersion = "29.0.3" + minSdkVersion = 21 + compileSdkVersion = 29 + targetSdkVersion = 29 + ndkVersion = "20.1.5948944" + } + repositories { + google() + jcenter() + } + dependencies { + classpath("com.android.tools.build:gradle:4.1.0") + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + mavenLocal() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url("http://github.com/node_modules/react-native/android") + } + maven { + // Android JSC is installed from npm + url("http://github.com/node_modules/jsc-android/dist") + } + + google() + jcenter() + maven { url 'https://www.jitpack.io/' } + } +} diff --git a/RNBareExample/android/gradle.properties b/RNBareExample/android/gradle.properties new file mode 100644 index 0000000000..d21d03f2b4 --- /dev/null +++ b/RNBareExample/android/gradle.properties @@ -0,0 +1,28 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true + +# Version of flipper SDK to use with React Native +FLIPPER_VERSION=0.75.1 diff --git a/RNBareExample/android/gradle/wrapper/gradle-wrapper.jar b/RNBareExample/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000..e708b1c023 Binary files /dev/null and b/RNBareExample/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/RNBareExample/android/gradle/wrapper/gradle-wrapper.properties b/RNBareExample/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..14e30f7416 --- /dev/null +++ b/RNBareExample/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/RNBareExample/android/gradlew b/RNBareExample/android/gradlew new file mode 100755 index 0000000000..4f906e0c81 --- /dev/null +++ b/RNBareExample/android/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/RNBareExample/android/gradlew.bat b/RNBareExample/android/gradlew.bat new file mode 100644 index 0000000000..107acd32c4 --- /dev/null +++ b/RNBareExample/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/RNBareExample/android/settings.gradle b/RNBareExample/android/settings.gradle new file mode 100644 index 0000000000..bfbb518ddd --- /dev/null +++ b/RNBareExample/android/settings.gradle @@ -0,0 +1,5 @@ +rootProject.name = 'RNBareExample' +include ':react-native-linear-gradient' +project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android') +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) +include ':app' diff --git a/RNBareExample/app.json b/RNBareExample/app.json new file mode 100644 index 0000000000..b87213870f --- /dev/null +++ b/RNBareExample/app.json @@ -0,0 +1,4 @@ +{ + "name": "RNBareExample", + "displayName": "RNBareExample" +} \ No newline at end of file diff --git a/RNBareExample/assets/fonts/Merriweather-Regular.ttf b/RNBareExample/assets/fonts/Merriweather-Regular.ttf new file mode 100644 index 0000000000..18da9e5b0a Binary files /dev/null and b/RNBareExample/assets/fonts/Merriweather-Regular.ttf differ diff --git a/RNBareExample/assets/fonts/Roboto-Bold.ttf b/RNBareExample/assets/fonts/Roboto-Bold.ttf new file mode 100644 index 0000000000..d998cf5b46 Binary files /dev/null and b/RNBareExample/assets/fonts/Roboto-Bold.ttf differ diff --git a/RNBareExample/assets/fonts/Roboto-Italic.ttf b/RNBareExample/assets/fonts/Roboto-Italic.ttf new file mode 100644 index 0000000000..5b390ff950 Binary files /dev/null and b/RNBareExample/assets/fonts/Roboto-Italic.ttf differ diff --git a/RNBareExample/assets/fonts/Roboto-Light.ttf b/RNBareExample/assets/fonts/Roboto-Light.ttf new file mode 100644 index 0000000000..35267989de Binary files /dev/null and b/RNBareExample/assets/fonts/Roboto-Light.ttf differ diff --git a/RNBareExample/assets/fonts/Roboto-Medium.ttf b/RNBareExample/assets/fonts/Roboto-Medium.ttf new file mode 100644 index 0000000000..f714a514d9 Binary files /dev/null and b/RNBareExample/assets/fonts/Roboto-Medium.ttf differ diff --git a/RNBareExample/assets/fonts/Roboto-Regular.ttf b/RNBareExample/assets/fonts/Roboto-Regular.ttf new file mode 100644 index 0000000000..2b6392ffe8 Binary files /dev/null and b/RNBareExample/assets/fonts/Roboto-Regular.ttf differ diff --git a/RNBareExample/babel.config.js b/RNBareExample/babel.config.js new file mode 100644 index 0000000000..82d17f9380 --- /dev/null +++ b/RNBareExample/babel.config.js @@ -0,0 +1,20 @@ +const path = require('path'); +const pak = require('../package.json'); + +module.exports = function (api) { + api.cache(true); + return { + presets: ['module:metro-react-native-babel-preset'], + plugins: [ + [ + 'module-resolver', + { + alias: { + // For development, we want to alias the library to the source + [pak.name]: path.join(__dirname, '..', pak.source), + }, + }, + ], + ], + }; +}; diff --git a/RNBareExample/index.js b/RNBareExample/index.js new file mode 100644 index 0000000000..a850d031de --- /dev/null +++ b/RNBareExample/index.js @@ -0,0 +1,9 @@ +/** + * @format + */ + +import {AppRegistry} from 'react-native'; +import App from './App'; +import {name as appName} from './app.json'; + +AppRegistry.registerComponent(appName, () => App); diff --git a/RNBareExample/ios/Podfile b/RNBareExample/ios/Podfile new file mode 100644 index 0000000000..5d2cd8cd05 --- /dev/null +++ b/RNBareExample/ios/Podfile @@ -0,0 +1,31 @@ +require_relative '../node_modules/react-native/scripts/react_native_pods' +require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' + +platform :ios, '10.0' + +target 'RNBareExample' do + config = use_native_modules! + + use_react_native!( + :path => config[:reactNativePath], + # to enable hermes on iOS, change `false` to `true` and then install pods + :hermes_enabled => false + ) + + pod 'BVLinearGradient', :path => '../node_modules/react-native-linear-gradient' + + target 'RNBareExampleTests' do + inherit! :complete + # Pods for testing + end + + # Enables Flipper. + # + # Note that if you have use_frameworks! enabled, Flipper will not work and + # you should disable the next line. + use_flipper!() + + post_install do |installer| + react_native_post_install(installer) + end +end \ No newline at end of file diff --git a/RNBareExample/ios/Podfile.lock b/RNBareExample/ios/Podfile.lock new file mode 100644 index 0000000000..ef47367722 --- /dev/null +++ b/RNBareExample/ios/Podfile.lock @@ -0,0 +1,509 @@ +PODS: + - boost-for-react-native (1.63.0) + - BVLinearGradient (2.5.6): + - React + - CocoaAsyncSocket (7.6.5) + - DoubleConversion (1.1.6) + - FBLazyVector (0.64.1) + - FBReactNativeSpec (0.64.1): + - RCT-Folly (= 2020.01.13.00) + - RCTRequired (= 0.64.1) + - RCTTypeSafety (= 0.64.1) + - React-Core (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - Flipper (0.75.1): + - Flipper-Folly (~> 2.5) + - Flipper-RSocket (~> 1.3) + - Flipper-DoubleConversion (1.1.7) + - Flipper-Folly (2.5.3): + - boost-for-react-native + - Flipper-DoubleConversion + - Flipper-Glog + - libevent (~> 2.1.12) + - OpenSSL-Universal (= 1.1.180) + - Flipper-Glog (0.3.6) + - Flipper-PeerTalk (0.0.4) + - Flipper-RSocket (1.3.1): + - Flipper-Folly (~> 2.5) + - FlipperKit (0.75.1): + - FlipperKit/Core (= 0.75.1) + - FlipperKit/Core (0.75.1): + - Flipper (~> 0.75.1) + - FlipperKit/CppBridge + - FlipperKit/FBCxxFollyDynamicConvert + - FlipperKit/FBDefines + - FlipperKit/FKPortForwarding + - FlipperKit/CppBridge (0.75.1): + - Flipper (~> 0.75.1) + - FlipperKit/FBCxxFollyDynamicConvert (0.75.1): + - Flipper-Folly (~> 2.5) + - FlipperKit/FBDefines (0.75.1) + - FlipperKit/FKPortForwarding (0.75.1): + - CocoaAsyncSocket (~> 7.6) + - Flipper-PeerTalk (~> 0.0.4) + - FlipperKit/FlipperKitHighlightOverlay (0.75.1) + - FlipperKit/FlipperKitLayoutPlugin (0.75.1): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutTextSearchable + - YogaKit (~> 1.18) + - FlipperKit/FlipperKitLayoutTextSearchable (0.75.1) + - FlipperKit/FlipperKitNetworkPlugin (0.75.1): + - FlipperKit/Core + - FlipperKit/FlipperKitReactPlugin (0.75.1): + - FlipperKit/Core + - FlipperKit/FlipperKitUserDefaultsPlugin (0.75.1): + - FlipperKit/Core + - FlipperKit/SKIOSNetworkPlugin (0.75.1): + - FlipperKit/Core + - FlipperKit/FlipperKitNetworkPlugin + - glog (0.3.5) + - libevent (2.1.12) + - OpenSSL-Universal (1.1.180) + - RCT-Folly (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - glog + - RCT-Folly/Default (= 2020.01.13.00) + - RCT-Folly/Default (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - glog + - RCTRequired (0.64.1) + - RCTTypeSafety (0.64.1): + - FBLazyVector (= 0.64.1) + - RCT-Folly (= 2020.01.13.00) + - RCTRequired (= 0.64.1) + - React-Core (= 0.64.1) + - React (0.64.1): + - React-Core (= 0.64.1) + - React-Core/DevSupport (= 0.64.1) + - React-Core/RCTWebSocket (= 0.64.1) + - React-RCTActionSheet (= 0.64.1) + - React-RCTAnimation (= 0.64.1) + - React-RCTBlob (= 0.64.1) + - React-RCTImage (= 0.64.1) + - React-RCTLinking (= 0.64.1) + - React-RCTNetwork (= 0.64.1) + - React-RCTSettings (= 0.64.1) + - React-RCTText (= 0.64.1) + - React-RCTVibration (= 0.64.1) + - React-callinvoker (0.64.1) + - React-Core (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default (= 0.64.1) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/CoreModulesHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/Default (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/DevSupport (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default (= 0.64.1) + - React-Core/RCTWebSocket (= 0.64.1) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-jsinspector (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTActionSheetHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTAnimationHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTBlobHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTImageHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTLinkingHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTNetworkHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTSettingsHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTTextHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTVibrationHeaders (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-Core/RCTWebSocket (0.64.1): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default (= 0.64.1) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) + - Yoga + - React-CoreModules (0.64.1): + - FBReactNativeSpec (= 0.64.1) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.1) + - React-Core/CoreModulesHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - React-RCTImage (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-cxxreact (0.64.1): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - glog + - RCT-Folly (= 2020.01.13.00) + - React-callinvoker (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsinspector (= 0.64.1) + - React-perflogger (= 0.64.1) + - React-runtimeexecutor (= 0.64.1) + - React-jsi (0.64.1): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - glog + - RCT-Folly (= 2020.01.13.00) + - React-jsi/Default (= 0.64.1) + - React-jsi/Default (0.64.1): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - glog + - RCT-Folly (= 2020.01.13.00) + - React-jsiexecutor (0.64.1): + - DoubleConversion + - glog + - RCT-Folly (= 2020.01.13.00) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-perflogger (= 0.64.1) + - React-jsinspector (0.64.1) + - react-native-safe-area-context (3.2.0): + - React-Core + - React-perflogger (0.64.1) + - React-RCTActionSheet (0.64.1): + - React-Core/RCTActionSheetHeaders (= 0.64.1) + - React-RCTAnimation (0.64.1): + - FBReactNativeSpec (= 0.64.1) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.1) + - React-Core/RCTAnimationHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTBlob (0.64.1): + - FBReactNativeSpec (= 0.64.1) + - RCT-Folly (= 2020.01.13.00) + - React-Core/RCTBlobHeaders (= 0.64.1) + - React-Core/RCTWebSocket (= 0.64.1) + - React-jsi (= 0.64.1) + - React-RCTNetwork (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTImage (0.64.1): + - FBReactNativeSpec (= 0.64.1) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.1) + - React-Core/RCTImageHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - React-RCTNetwork (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTLinking (0.64.1): + - FBReactNativeSpec (= 0.64.1) + - React-Core/RCTLinkingHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTNetwork (0.64.1): + - FBReactNativeSpec (= 0.64.1) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.1) + - React-Core/RCTNetworkHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTSettings (0.64.1): + - FBReactNativeSpec (= 0.64.1) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.1) + - React-Core/RCTSettingsHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTText (0.64.1): + - React-Core/RCTTextHeaders (= 0.64.1) + - React-RCTVibration (0.64.1): + - FBReactNativeSpec (= 0.64.1) + - RCT-Folly (= 2020.01.13.00) + - React-Core/RCTVibrationHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-runtimeexecutor (0.64.1): + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (0.64.1): + - DoubleConversion + - glog + - RCT-Folly (= 2020.01.13.00) + - React-callinvoker (= 0.64.1) + - React-Core (= 0.64.1) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-perflogger (= 0.64.1) + - RNSVG (12.1.1): + - React + - Yoga (1.14.0) + - YogaKit (1.18.1): + - Yoga (~> 1.14) + +DEPENDENCIES: + - BVLinearGradient (from `../node_modules/react-native-linear-gradient`) + - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) + - Flipper (~> 0.75.1) + - Flipper-DoubleConversion (= 1.1.7) + - Flipper-Folly (~> 2.5.3) + - Flipper-Glog (= 0.3.6) + - Flipper-PeerTalk (~> 0.0.4) + - Flipper-RSocket (~> 1.3) + - FlipperKit (~> 0.75.1) + - FlipperKit/Core (~> 0.75.1) + - FlipperKit/CppBridge (~> 0.75.1) + - FlipperKit/FBCxxFollyDynamicConvert (~> 0.75.1) + - FlipperKit/FBDefines (~> 0.75.1) + - FlipperKit/FKPortForwarding (~> 0.75.1) + - FlipperKit/FlipperKitHighlightOverlay (~> 0.75.1) + - FlipperKit/FlipperKitLayoutPlugin (~> 0.75.1) + - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.75.1) + - FlipperKit/FlipperKitNetworkPlugin (~> 0.75.1) + - FlipperKit/FlipperKitReactPlugin (~> 0.75.1) + - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.75.1) + - FlipperKit/SKIOSNetworkPlugin (~> 0.75.1) + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Core (from `../node_modules/react-native/`) + - React-Core/DevSupport (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) + - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - RNSVG (from `../node_modules/react-native-svg`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - boost-for-react-native + - CocoaAsyncSocket + - Flipper + - Flipper-DoubleConversion + - Flipper-Folly + - Flipper-Glog + - Flipper-PeerTalk + - Flipper-RSocket + - FlipperKit + - libevent + - OpenSSL-Universal + - YogaKit + +EXTERNAL SOURCES: + BVLinearGradient: + :path: "../node_modules/react-native-linear-gradient" + DoubleConversion: + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + FBLazyVector: + :path: "../node_modules/react-native/Libraries/FBLazyVector" + FBReactNativeSpec: + :path: "../node_modules/react-native/React/FBReactNativeSpec" + glog: + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + RCT-Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTRequired: + :path: "../node_modules/react-native/Libraries/RCTRequired" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Core: + :path: "../node_modules/react-native/" + React-CoreModules: + :path: "../node_modules/react-native/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-jsi: + :path: "../node_modules/react-native/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native/ReactCommon/jsinspector" + react-native-safe-area-context: + :path: "../node_modules/react-native-safe-area-context" + React-perflogger: + :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-RCTActionSheet: + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTBlob: + :path: "../node_modules/react-native/Libraries/Blob" + React-RCTImage: + :path: "../node_modules/react-native/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native/Libraries/Network" + React-RCTSettings: + :path: "../node_modules/react-native/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native/Libraries/Vibration" + React-runtimeexecutor: + :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + ReactCommon: + :path: "../node_modules/react-native/ReactCommon" + RNSVG: + :path: "../node_modules/react-native-svg" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c + BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872 + CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 + DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de + FBLazyVector: 7b423f9e248eae65987838148c36eec1dbfe0b53 + FBReactNativeSpec: 5f6e2e27e4a0db2ea066dd223b5b9f94ec2f48be + Flipper: d3da1aa199aad94455ae725e9f3aa43f3ec17021 + Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 + Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c + Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 + Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 + Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154 + FlipperKit: 8a20b5c5fcf9436cac58551dc049867247f64b00 + glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62 + libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 + OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b + RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c + RCTRequired: ec2ebc96b7bfba3ca5c32740f5a0c6a014a274d2 + RCTTypeSafety: 22567f31e67c3e088c7ac23ea46ab6d4779c0ea5 + React: a241e3dbb1e91d06332f1dbd2b3ab26e1a4c4b9d + React-callinvoker: da4d1c6141696a00163960906bc8a55b985e4ce4 + React-Core: 46ba164c437d7dac607b470c83c8308b05799748 + React-CoreModules: 217bd14904491c7b9940ff8b34a3fe08013c2f14 + React-cxxreact: 0090588ae6660c4615d3629fdd5c768d0983add4 + React-jsi: 5de8204706bd872b78ea646aee5d2561ca1214b6 + React-jsiexecutor: 124e8f99992490d0d13e0649d950d3e1aae06fe9 + React-jsinspector: 500a59626037be5b3b3d89c5151bc3baa9abf1a9 + react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79 + React-perflogger: aad6d4b4a267936b3667260d1f649b6f6069a675 + React-RCTActionSheet: fc376be462c9c8d6ad82c0905442fd77f82a9d2a + React-RCTAnimation: ba0a1c3a2738be224a08092fa7f1b444ab77d309 + React-RCTBlob: f758d4403fc5828a326dc69e27b41e1a92f34947 + React-RCTImage: ce57088705f4a8d03f6594b066a59c29143ba73e + React-RCTLinking: 852a3a95c65fa63f657a4b4e2d3d83a815e00a7c + React-RCTNetwork: 9d7ccb8a08d522d71700b4fb677d9fa28cccd118 + React-RCTSettings: d8aaf4389ff06114dee8c42ef5f0f2915946011e + React-RCTText: 809c12ed6b261796ba056c04fcd20d8b90bcc81d + React-RCTVibration: 4b99a7f5c6c0abbc5256410cc5425fb8531986e1 + React-runtimeexecutor: ff951a0c241bfaefc4940a3f1f1a229e7cb32fa6 + ReactCommon: bedc99ed4dae329c4fcf128d0c31b9115e5365ca + RNSVG: 551acb6562324b1d52a4e0758f7ca0ec234e278f + Yoga: a7de31c64fe738607e7a3803e3f591a4b1df7393 + YogaKit: f782866e155069a2cca2517aafea43200b01fd5a + +PODFILE CHECKSUM: 482de712ad72f62685e5dda7b1e5b0f83984b5ae + +COCOAPODS: 1.10.1 diff --git a/RNBareExample/ios/RNBareExample.xcodeproj/project.pbxproj b/RNBareExample/ios/RNBareExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..b1fc54cfe0 --- /dev/null +++ b/RNBareExample/ios/RNBareExample.xcodeproj/project.pbxproj @@ -0,0 +1,720 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 00E356F31AD99517003FC87E /* RNBareExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* RNBareExampleTests.m */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 38BE891D962D4F349AF2917E /* Roboto-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D54F1726BC514FD686C64532 /* Roboto-Regular.ttf */; }; + 4664335C02E54CEEA39B7112 /* Merriweather-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4509DF3E719D42139C6957FB /* Merriweather-Regular.ttf */; }; + 4A2BEF80E0F0453CB2500790 /* Roboto-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3E1CF7D40B1D414988D3CC15 /* Roboto-Medium.ttf */; }; + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + 8EC97A0012A44B37A239430B /* Roboto-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EE3CE23D43B345559A3E9B05 /* Roboto-Bold.ttf */; }; + A407EFB79BE54725A37F6732 /* Roboto-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DF03166C76248F88B6F59F2 /* Roboto-Italic.ttf */; }; + CC958B3576C25F72C64CD117 /* libPods-RNBareExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11C0BDDBE1B1045431ABC4E5 /* libPods-RNBareExample.a */; }; + DE9675BE0B1F7B1E29B249D0 /* libPods-RNBareExample-RNBareExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 41168D7081D471981F679225 /* libPods-RNBareExample-RNBareExampleTests.a */; }; + F8E98893793F4862BBC06E24 /* Roboto-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7BA646F9875F4FCEBAB2D80B /* Roboto-Light.ttf */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = RNBareExample; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 00E356EE1AD99517003FC87E /* RNBareExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNBareExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* RNBareExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNBareExampleTests.m; sourceTree = ""; }; + 11C0BDDBE1B1045431ABC4E5 /* libPods-RNBareExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNBareExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07F961A680F5B00A75B9A /* RNBareExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RNBareExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RNBareExample/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = RNBareExample/AppDelegate.m; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RNBareExample/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RNBareExample/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = RNBareExample/main.m; sourceTree = ""; }; + 3DF03166C76248F88B6F59F2 /* Roboto-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-Italic.ttf"; path = "../assets/fonts/Roboto-Italic.ttf"; sourceTree = ""; }; + 3E1CF7D40B1D414988D3CC15 /* Roboto-Medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-Medium.ttf"; path = "../assets/fonts/Roboto-Medium.ttf"; sourceTree = ""; }; + 41168D7081D471981F679225 /* libPods-RNBareExample-RNBareExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNBareExample-RNBareExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4509DF3E719D42139C6957FB /* Merriweather-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Merriweather-Regular.ttf"; path = "../assets/fonts/Merriweather-Regular.ttf"; sourceTree = ""; }; + 48A3F3B34B71A627C36D23AE /* Pods-RNBareExample-RNBareExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNBareExample-RNBareExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-RNBareExample-RNBareExampleTests/Pods-RNBareExample-RNBareExampleTests.debug.xcconfig"; sourceTree = ""; }; + 6C3E26B903A9FBC8FEAD0366 /* Pods-RNBareExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNBareExample.release.xcconfig"; path = "Target Support Files/Pods-RNBareExample/Pods-RNBareExample.release.xcconfig"; sourceTree = ""; }; + 7BA646F9875F4FCEBAB2D80B /* Roboto-Light.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-Light.ttf"; path = "../assets/fonts/Roboto-Light.ttf"; sourceTree = ""; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = RNBareExample/LaunchScreen.storyboard; sourceTree = ""; }; + BE9748D91138D25975CC7644 /* Pods-RNBareExample-RNBareExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNBareExample-RNBareExampleTests.release.xcconfig"; path = "Target Support Files/Pods-RNBareExample-RNBareExampleTests/Pods-RNBareExample-RNBareExampleTests.release.xcconfig"; sourceTree = ""; }; + D54F1726BC514FD686C64532 /* Roboto-Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-Regular.ttf"; path = "../assets/fonts/Roboto-Regular.ttf"; sourceTree = ""; }; + DC9506A1E7FC0D9474DB233B /* Pods-RNBareExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNBareExample.debug.xcconfig"; path = "Target Support Files/Pods-RNBareExample/Pods-RNBareExample.debug.xcconfig"; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + EE3CE23D43B345559A3E9B05 /* Roboto-Bold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "Roboto-Bold.ttf"; path = "../assets/fonts/Roboto-Bold.ttf"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 00E356EB1AD99517003FC87E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DE9675BE0B1F7B1E29B249D0 /* libPods-RNBareExample-RNBareExampleTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CC958B3576C25F72C64CD117 /* libPods-RNBareExample.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00E356EF1AD99517003FC87E /* RNBareExampleTests */ = { + isa = PBXGroup; + children = ( + 00E356F21AD99517003FC87E /* RNBareExampleTests.m */, + 00E356F01AD99517003FC87E /* Supporting Files */, + ); + path = RNBareExampleTests; + sourceTree = ""; + }; + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* RNBareExample */ = { + isa = PBXGroup; + children = ( + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, + 13B07FB71A68108700A75B9A /* main.m */, + ); + name = RNBareExample; + sourceTree = ""; + }; + 159055EDF32C537E1DD2EA56 /* Pods */ = { + isa = PBXGroup; + children = ( + DC9506A1E7FC0D9474DB233B /* Pods-RNBareExample.debug.xcconfig */, + 6C3E26B903A9FBC8FEAD0366 /* Pods-RNBareExample.release.xcconfig */, + 48A3F3B34B71A627C36D23AE /* Pods-RNBareExample-RNBareExampleTests.debug.xcconfig */, + BE9748D91138D25975CC7644 /* Pods-RNBareExample-RNBareExampleTests.release.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 11C0BDDBE1B1045431ABC4E5 /* libPods-RNBareExample.a */, + 41168D7081D471981F679225 /* libPods-RNBareExample-RNBareExampleTests.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 42CCD72C7CF4497793037815 /* Resources */ = { + isa = PBXGroup; + children = ( + EE3CE23D43B345559A3E9B05 /* Roboto-Bold.ttf */, + 3DF03166C76248F88B6F59F2 /* Roboto-Italic.ttf */, + 7BA646F9875F4FCEBAB2D80B /* Roboto-Light.ttf */, + 3E1CF7D40B1D414988D3CC15 /* Roboto-Medium.ttf */, + D54F1726BC514FD686C64532 /* Roboto-Regular.ttf */, + 4509DF3E719D42139C6957FB /* Merriweather-Regular.ttf */, + ); + name = Resources; + path = ""; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* RNBareExample */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 00E356EF1AD99517003FC87E /* RNBareExampleTests */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + 159055EDF32C537E1DD2EA56 /* Pods */, + 42CCD72C7CF4497793037815 /* Resources */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* RNBareExample.app */, + 00E356EE1AD99517003FC87E /* RNBareExampleTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 00E356ED1AD99517003FC87E /* RNBareExampleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "RNBareExampleTests" */; + buildPhases = ( + 1E250219C895BEA3A3B522F8 /* [CP] Check Pods Manifest.lock */, + 00E356EA1AD99517003FC87E /* Sources */, + 00E356EB1AD99517003FC87E /* Frameworks */, + 00E356EC1AD99517003FC87E /* Resources */, + 80A9B916640DA44574A6BFE9 /* [CP] Embed Pods Frameworks */, + 4064C66412A1431AEB98707F /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 00E356F51AD99517003FC87E /* PBXTargetDependency */, + ); + name = RNBareExampleTests; + productName = RNBareExampleTests; + productReference = 00E356EE1AD99517003FC87E /* RNBareExampleTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 13B07F861A680F5B00A75B9A /* RNBareExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RNBareExample" */; + buildPhases = ( + 817A1C3BBB37E467A160595B /* [CP] Check Pods Manifest.lock */, + FD10A7F022414F080027D42C /* Start Packager */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 3461A323C30894E61CCBE9AB /* [CP] Embed Pods Frameworks */, + 5025BCA1300C603C2631117B /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RNBareExample; + productName = RNBareExample; + productReference = 13B07F961A680F5B00A75B9A /* RNBareExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1210; + TargetAttributes = { + 00E356ED1AD99517003FC87E = { + CreatedOnToolsVersion = 6.2; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1120; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RNBareExample" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* RNBareExample */, + 00E356ED1AD99517003FC87E /* RNBareExampleTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 00E356EC1AD99517003FC87E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 8EC97A0012A44B37A239430B /* Roboto-Bold.ttf in Resources */, + A407EFB79BE54725A37F6732 /* Roboto-Italic.ttf in Resources */, + F8E98893793F4862BBC06E24 /* Roboto-Light.ttf in Resources */, + 4A2BEF80E0F0453CB2500790 /* Roboto-Medium.ttf in Resources */, + 38BE891D962D4F349AF2917E /* Roboto-Regular.ttf in Resources */, + 4664335C02E54CEEA39B7112 /* Merriweather-Regular.ttf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; + }; + 1E250219C895BEA3A3B522F8 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNBareExample-RNBareExampleTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3461A323C30894E61CCBE9AB /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNBareExample/Pods-RNBareExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNBareExample/Pods-RNBareExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNBareExample/Pods-RNBareExample-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 4064C66412A1431AEB98707F /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNBareExample-RNBareExampleTests/Pods-RNBareExample-RNBareExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNBareExample-RNBareExampleTests/Pods-RNBareExample-RNBareExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNBareExample-RNBareExampleTests/Pods-RNBareExample-RNBareExampleTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 5025BCA1300C603C2631117B /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNBareExample/Pods-RNBareExample-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNBareExample/Pods-RNBareExample-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNBareExample/Pods-RNBareExample-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 80A9B916640DA44574A6BFE9 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNBareExample-RNBareExampleTests/Pods-RNBareExample-RNBareExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNBareExample-RNBareExampleTests/Pods-RNBareExample-RNBareExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNBareExample-RNBareExampleTests/Pods-RNBareExample-RNBareExampleTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 817A1C3BBB37E467A160595B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNBareExample-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + FD10A7F022414F080027D42C /* Start Packager */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Start Packager"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 00E356EA1AD99517003FC87E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00E356F31AD99517003FC87E /* RNBareExampleTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* RNBareExample */; + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 00E356F61AD99517003FC87E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 48A3F3B34B71A627C36D23AE /* Pods-RNBareExample-RNBareExampleTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = RNBareExampleTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNBareExample.app/RNBareExample"; + }; + name = Debug; + }; + 00E356F71AD99517003FC87E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BE9748D91138D25975CC7644 /* Pods-RNBareExample-RNBareExampleTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COPY_PHASE_STRIP = NO; + INFOPLIST_FILE = RNBareExampleTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RNBareExample.app/RNBareExample"; + }; + name = Release; + }; + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DC9506A1E7FC0D9474DB233B /* Pods-RNBareExample.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = RNBareExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = RNBareExample; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6C3E26B903A9FBC8FEAD0366 /* Pods-RNBareExample.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = RNBareExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = RNBareExample; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 "; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 "; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "RNBareExampleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00E356F61AD99517003FC87E /* Debug */, + 00E356F71AD99517003FC87E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RNBareExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RNBareExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/RNBareExample/ios/RNBareExample.xcodeproj/xcshareddata/xcschemes/RNBareExample.xcscheme b/RNBareExample/ios/RNBareExample.xcodeproj/xcshareddata/xcschemes/RNBareExample.xcscheme new file mode 100644 index 0000000000..70e6fbcbfd --- /dev/null +++ b/RNBareExample/ios/RNBareExample.xcodeproj/xcshareddata/xcschemes/RNBareExample.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/RNBareExample/ios/RNBareExample.xcworkspace/contents.xcworkspacedata b/RNBareExample/ios/RNBareExample.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000000..2ae85695cc --- /dev/null +++ b/RNBareExample/ios/RNBareExample.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/RNBareExample/ios/RNBareExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/RNBareExample/ios/RNBareExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000000..18d981003d --- /dev/null +++ b/RNBareExample/ios/RNBareExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/RNBareExample/ios/RNBareExample/AppDelegate.h b/RNBareExample/ios/RNBareExample/AppDelegate.h new file mode 100644 index 0000000000..ef1de86a2a --- /dev/null +++ b/RNBareExample/ios/RNBareExample/AppDelegate.h @@ -0,0 +1,8 @@ +#import +#import + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; + +@end diff --git a/RNBareExample/ios/RNBareExample/AppDelegate.m b/RNBareExample/ios/RNBareExample/AppDelegate.m new file mode 100644 index 0000000000..7794717407 --- /dev/null +++ b/RNBareExample/ios/RNBareExample/AppDelegate.m @@ -0,0 +1,62 @@ +#import "AppDelegate.h" + +#import +#import +#import + +#ifdef FB_SONARKIT_ENABLED +#import +#import +#import +#import +#import +#import + +static void InitializeFlipper(UIApplication *application) { + FlipperClient *client = [FlipperClient sharedClient]; + SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; + [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; + [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; + [client addPlugin:[FlipperKitReactPlugin new]]; + [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; + [client start]; +} +#endif + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ +#ifdef FB_SONARKIT_ENABLED + InitializeFlipper(application); +#endif + + RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; + RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge + moduleName:@"RNBareExample" + initialProperties:nil]; + + if (@available(iOS 13.0, *)) { + rootView.backgroundColor = [UIColor systemBackgroundColor]; + } else { + rootView.backgroundColor = [UIColor whiteColor]; + } + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + UIViewController *rootViewController = [UIViewController new]; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + return YES; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +@end diff --git a/RNBareExample/ios/RNBareExample/Images.xcassets/AppIcon.appiconset/Contents.json b/RNBareExample/ios/RNBareExample/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..118c98f746 --- /dev/null +++ b/RNBareExample/ios/RNBareExample/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/RNBareExample/ios/RNBareExample/Images.xcassets/Contents.json b/RNBareExample/ios/RNBareExample/Images.xcassets/Contents.json new file mode 100644 index 0000000000..2d92bd53fd --- /dev/null +++ b/RNBareExample/ios/RNBareExample/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/RNBareExample/ios/RNBareExample/Info.plist b/RNBareExample/ios/RNBareExample/Info.plist new file mode 100644 index 0000000000..536ac9637c --- /dev/null +++ b/RNBareExample/ios/RNBareExample/Info.plist @@ -0,0 +1,64 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + RNBareExample + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + UIAppFonts + + Roboto-Bold.ttf + Roboto-Italic.ttf + Roboto-Light.ttf + Roboto-Medium.ttf + Roboto-Regular.ttf + Merriweather-Regular.ttf + + + diff --git a/RNBareExample/ios/RNBareExample/LaunchScreen.storyboard b/RNBareExample/ios/RNBareExample/LaunchScreen.storyboard new file mode 100644 index 0000000000..08c5b4fed3 --- /dev/null +++ b/RNBareExample/ios/RNBareExample/LaunchScreen.storyboard @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/RNBareExample/ios/RNBareExample/main.m b/RNBareExample/ios/RNBareExample/main.m new file mode 100644 index 0000000000..b1df44b953 --- /dev/null +++ b/RNBareExample/ios/RNBareExample/main.m @@ -0,0 +1,9 @@ +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/RNBareExample/ios/RNBareExampleTests/Info.plist b/RNBareExample/ios/RNBareExampleTests/Info.plist new file mode 100644 index 0000000000..ba72822e87 --- /dev/null +++ b/RNBareExample/ios/RNBareExampleTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/RNBareExample/ios/RNBareExampleTests/RNBareExampleTests.m b/RNBareExample/ios/RNBareExampleTests/RNBareExampleTests.m new file mode 100644 index 0000000000..0cc609a620 --- /dev/null +++ b/RNBareExample/ios/RNBareExampleTests/RNBareExampleTests.m @@ -0,0 +1,65 @@ +#import +#import + +#import +#import + +#define TIMEOUT_SECONDS 600 +#define TEXT_TO_LOOK_FOR @"Welcome to React" + +@interface RNBareExampleTests : XCTestCase + +@end + +@implementation RNBareExampleTests + +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test +{ + if (test(view)) { + return YES; + } + for (UIView *subview in [view subviews]) { + if ([self findSubviewInView:subview matching:test]) { + return YES; + } + } + return NO; +} + +- (void)testRendersWelcomeScreen +{ + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; + BOOL foundElement = NO; + + __block NSString *redboxError = nil; +#ifdef DEBUG + RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { + if (level >= RCTLogLevelError) { + redboxError = message; + } + }); +#endif + + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + + foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { + return YES; + } + return NO; + }]; + } + +#ifdef DEBUG + RCTSetLogFunction(RCTDefaultLogFunction); +#endif + + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); +} + + +@end diff --git a/RNBareExample/metro.config.js b/RNBareExample/metro.config.js new file mode 100644 index 0000000000..8c2a792bfa --- /dev/null +++ b/RNBareExample/metro.config.js @@ -0,0 +1,38 @@ +const path = require('path'); +const blacklist = require('metro-config/src/defaults/blacklist'); +const escape = require('escape-string-regexp'); +const pak = require('../package.json'); + +const root = path.resolve(__dirname, '..'); + +const modules = Object.keys({ + ...pak.peerDependencies, +}); + +module.exports = { + projectRoot: __dirname, + watchFolders: [root], + + // We need to make sure that only one version is loaded for peerDependencies + // So we blacklist them at the root, and alias them to the versions in example's node_modules + resolver: { + blacklistRE: blacklist( + modules.map( + m => new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`), + ), + ), + extraNodeModules: modules.reduce((acc, name) => { + acc[name] = path.join(__dirname, 'node_modules', name); + return acc; + }, {}), + }, + + transformer: { + getTransformOptions: async () => ({ + transform: { + experimentalImportSupport: false, + inlineRequires: false, + }, + }), + }, +}; diff --git a/RNBareExample/package.json b/RNBareExample/package.json new file mode 100644 index 0000000000..aa18ee57c0 --- /dev/null +++ b/RNBareExample/package.json @@ -0,0 +1,48 @@ +{ + "name": "RNBareExample", + "version": "0.0.1", + "private": true, + "scripts": { + "android": "react-native run-android", + "ios": "react-native run-ios", + "start": "react-native start", + "test": "jest", + "lint": "eslint . --ext .js,.jsx,.ts,.tsx" + }, + "dependencies": { + "react": "17.0.1", + "react-native": "0.64.1", + "react-native-linear-gradient": "^2.5.6", + "react-native-safe-area-context": "^3.2.0", + "react-native-svg": "^12.1.1" + }, + "devDependencies": { + "@babel/core": "^7.12.9", + "@babel/runtime": "^7.12.5", + "@react-native-community/eslint-config": "^2.0.0", + "@types/jest": "^26.0.23", + "@types/react-native": "^0.64.5", + "@types/react-test-renderer": "^16.9.2", + "babel-jest": "^26.6.3", + "babel-plugin-module-resolver": "^4.1.0", + "eslint": "^7.14.0", + "jest": "^26.6.3", + "metro-react-native-babel-preset": "^0.64.0", + "react-test-renderer": "17.0.1", + "typescript": "^3.8.3" + }, + "resolutions": { + "@types/react": "^17" + }, + "jest": { + "preset": "react-native", + "moduleFileExtensions": [ + "ts", + "tsx", + "js", + "jsx", + "json", + "node" + ] + } +} diff --git a/RNBareExample/react-native.config.js b/RNBareExample/react-native.config.js new file mode 100644 index 0000000000..ef09f5bf0d --- /dev/null +++ b/RNBareExample/react-native.config.js @@ -0,0 +1,7 @@ +module.exports = { + project: { + ios: {}, + android: {}, + }, + assets: ['./assets/fonts'], +}; diff --git a/RNBareExample/tsconfig.json b/RNBareExample/tsconfig.json new file mode 100644 index 0000000000..c42278c502 --- /dev/null +++ b/RNBareExample/tsconfig.json @@ -0,0 +1,70 @@ +{ + "compilerOptions": { + "paths": { + "native-base": ["../src/index"] + }, + /* Basic Options */ + "target": "esnext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "lib": [ + "es2017" + ] /* Specify library files to be included in the compilation. */, + "allowJs": true /* Allow javascript files to be compiled. */, + // "checkJs": true, /* Report errors in .js files. */ + "jsx": "react-native" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "removeComments": true, /* Do not emit comments to output. */ + "noEmit": true /* Do not emit outputs. */, + // "incremental": true, /* Enable incremental compilation */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + "isolatedModules": true /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */, + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + "allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */, + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + "skipLibCheck": false /* Skip type checking of declaration files. */ + + /* Source Map Options */ + // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + }, + "exclude": [ + "node_modules", + "babel.config.js", + "metro.config.js", + "jest.config.js" + ] +} diff --git a/RNBareExample/yarn.lock b/RNBareExample/yarn.lock new file mode 100644 index 0000000000..5901dee213 --- /dev/null +++ b/RNBareExample/yarn.lock @@ -0,0 +1,6687 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" + integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== + +"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.12.9", "@babel/core@^7.7.5": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" + integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.3" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-module-transforms" "^7.14.2" + "@babel/helpers" "^7.14.0" + "@babel/parser" "^7.14.3" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.14.2", "@babel/generator@^7.14.3", "@babel/generator@^7.5.0": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" + integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== + dependencies: + "@babel/types" "^7.14.2" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" + integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" + integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" + integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== + dependencies: + "@babel/compat-data" "^7.13.15" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.3.tgz#832111bcf4f57ca57a4c5b1a000fc125abc6554a" + integrity sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.14.3" + "@babel/helper-split-export-declaration" "^7.12.13" + +"@babel/helper-create-regexp-features-plugin@^7.12.13": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz#149aa6d78c016e318c43e2409a0ae9c136a86688" + integrity sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.2.2": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" + integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-explode-assignable-expression@^7.12.13": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" + integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== + dependencies: + "@babel/types" "^7.13.0" + +"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2" + integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.14.2" + +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-member-expression-to-functions@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" + integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== + dependencies: + "@babel/types" "^7.13.12" + +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" + integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== + dependencies: + "@babel/types" "^7.13.12" + +"@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" + integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.14.0" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== + +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz#ca17b318b859d107f0e9b722d58cf12d94436600" + integrity sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + +"@babel/helper-simple-access@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" + integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== + dependencies: + "@babel/types" "^7.13.12" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== + +"@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + +"@babel/helpers@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" + integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.14.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.12.13", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3", "@babel/parser@^7.7.0": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" + integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== + +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.1.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" + integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.13.tgz#f110284108a9b2b96f01b15b3be9e54c2610a989" + integrity sha512-idIsBT+DGXdOHL82U+8bwX4goHm/z10g8sGGrQroh+HCRcm7mDv/luaGdWJQMTuCX2FsdXS7X0Nyyzp4znAPJA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-export-default-from" "^7.12.13" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.1.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz#425b11dc62fc26939a2ab42cbba680bdf5734546" + integrity sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz#e17d418f81cc103fedd4ce037e181c8056225abc" + integrity sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw== + dependencies: + "@babel/compat-data" "^7.14.0" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.14.2" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz#150d4e58e525b16a9a1431bd5326c4eed870d717" + integrity sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.1.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz#df8171a8b9c43ebf4c1dabe6311b432d83e1b34e" + integrity sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-dynamic-import@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.13.tgz#3c807d37efaf0a806f1deb556ccb3b2f562ae9c2" + integrity sha512-gVry0zqoums0hA+EniCYK3gABhjYSLX1dVuwYpPw9DrLNA4/GovXySHVg4FGRsZht09ON/5C2NVx3keq+qqVGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.13", "@babel/plugin-syntax-flow@^7.2.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" + integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" + integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" + integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" + integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz#761cb12ab5a88d640ad4af4aa81f820e6b5fdf5c" + integrity sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-classes@^7.0.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz#3f1196c5709f064c252ad056207d87b7aeb2d03d" + integrity sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" + integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" + integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-exponentiation-operator@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" + integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz#58177a48c209971e8234e99906cb6bd1122addd3" + integrity sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-flow" "^7.12.13" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" + integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-function-name@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" + integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" + integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" + integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.1.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" + integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== + dependencies: + "@babel/helper-module-transforms" "^7.14.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-simple-access" "^7.13.12" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-object-assign@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.13.tgz#d9b9200a69e03403a813e44a933ad9f4bddfd050" + integrity sha512-4QxDMc0lAOkIBSfCrnSGbAJ+4epDBF2XXwcLXuBcG1xl9u7LrktNVD4+LwhL47XuKVPQ7R25e/WdcV+h97HyZA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-object-super@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" + integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" + integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.2.tgz#2e854544d42ab3bb9c21f84e153d62e800fbd593" + integrity sha512-zCubvP+jjahpnFJvPaHPiGVfuVUjXHhFvJKQdNnsmSsiU9kR/rCZ41jHc++tERD2zV+p7Hr6is+t5b6iWTCqSw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60" + integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.2.tgz#2620b57e7de775c0687f65d464026d15812941da" + integrity sha512-OMorspVyjxghAjzgeAWc6O7W7vHbJhV69NeTGdl9Mxgz6PaweAuo7ffB9T5A1OQ9dGcw0As4SYMUhyNC4u7mVg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.3.tgz#0e26597805cf0862da735f264550933c38babb66" + integrity sha512-uuxuoUNVhdgYzERiHHFkE4dWoJx+UFVyuAl0aqN8P2/AKFHwqgUC5w2+4/PjpKXJsFgBlYAFXlUmDQ3k3DUkXw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/types" "^7.14.2" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" + integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-runtime@^7.0.0": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.3.tgz#1fd885a2d0de1d3c223795a4e9be72c2db4515cf" + integrity sha512-t960xbi8wpTFE623ef7sd+UpEC5T6EEguQlTBJDEO05+XwnIWVfuqLw/vdLWY6IdFmtZE+65CZAfByT39zRpkg== + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-plugin-utils" "^7.13.0" + babel-plugin-polyfill-corejs2 "^0.2.0" + babel-plugin-polyfill-corejs3 "^0.2.0" + babel-plugin-polyfill-regenerator "^0.2.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" + integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" + integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" + integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" + integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + +"@babel/plugin-transform-typescript@^7.13.0", "@babel/plugin-transform-typescript@^7.5.0": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.3.tgz#44f67f725a60cccee33d9d6fee5e4f338258f34f" + integrity sha512-G5Bb5pY6tJRTC4ag1visSgiDoGgJ1u1fMUgmc2ijLkcIdzP83Q1qyZX4ggFQ/SkR+PNOatkaYC+nKcTlpsX4ag== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.3" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-typescript" "^7.12.13" + +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" + integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/preset-flow@^7.0.0": + version "7.13.13" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.13.13.tgz#a61a1c149b3f77589d795287744393444d5cdd9e" + integrity sha512-MDtwtamMifqq3R2mC7l3A3uFalUb3NH5TIBQWjN/epEPlZktcLq4se3J+ivckKrLMGsR7H9LW8+pYuIUN9tsKg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-flow-strip-types" "^7.13.0" + +"@babel/preset-typescript@^7.1.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a" + integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-typescript" "^7.13.0" + +"@babel/register@^7.0.0": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.13.16.tgz#ae3ab0b55c8ec28763877383c454f01521d9a53d" + integrity sha512-dh2t11ysujTwByQjXNgJ48QZ2zcXKQVdV8s0TbeMI0flmtGWCdTwK9tJiACHXPLmncm5+ktNn/diojA45JE4jg== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.0" + source-map-support "^0.5.16" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" + integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.0.0", "@babel/template@^7.12.13", "@babel/template@^7.3.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.4": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" + integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.2" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.14.2" + "@babel/types" "^7.14.2" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" + integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@eslint/eslintrc@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" + integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@hapi/hoek@^9.0.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" + integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug== + +"@hapi/topo@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" + integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" + +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/create-cache-key-function@^26.5.0": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-26.6.2.tgz#04cf439207a4fd12418d8aee551cddc86f9ac5f5" + integrity sha512-LgEuqU1f/7WEIPYqwLPIvvHuc1sB6gMVbT6zWhin3txYUNYK/kGQrC1F2WR4gR34YlI9bBtViTm5z98RqVZAaw== + dependencies: + "@jest/types" "^26.6.2" + +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" + +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + dependencies: + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@react-native-community/cli-debugger-ui@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-5.0.1-alpha.1.tgz#09a856ccd2954cf16eea59b14dd26ae66720e4e6" + integrity sha512-o6msDywXU7q0dPKhCTo8IrpmJ+7o+kVghyHlrAndnb30p6vnm4pID5Yi7lHXGfs6bQXorKUWX8oD5xYwWkN8qw== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-hermes@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-5.0.1-alpha.1.tgz#3c3836d6e537baa7615618262f8da1686052667f" + integrity sha512-7FNhqeZCbON4vhzZpV8nx4gB3COJy2KGbVku376CnIAjMncxJhupqORWdMukP8jNuuvUZ1R0vj0L0+W/M5rY1w== + dependencies: + "@react-native-community/cli-platform-android" "^5.0.1-alpha.1" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" + chalk "^3.0.0" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" + +"@react-native-community/cli-platform-android@^5.0.1-alpha.0", "@react-native-community/cli-platform-android@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-5.0.1-alpha.1.tgz#343ea5b469ac696268ecc1961ee44b91d1367cd1" + integrity sha512-Fx9Tm0Z9sl5CD/VS8XWIY1gTgf28MMnAvyx0oj7yO4IzWuOpJPyWxTJITc80GAK6tlyijORv5kriYpXnquxQLg== + dependencies: + "@react-native-community/cli-tools" "^5.0.1-alpha.1" + chalk "^3.0.0" + execa "^1.0.0" + fs-extra "^8.1.0" + glob "^7.1.3" + jetifier "^1.6.2" + lodash "^4.17.15" + logkitty "^0.7.1" + slash "^3.0.0" + xmldoc "^1.1.2" + +"@react-native-community/cli-platform-ios@^5.0.1-alpha.0": + version "5.0.1-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-5.0.1-alpha.2.tgz#58ab0641355cbe68a0d1737dde8c7d66eb0c0e39" + integrity sha512-W15A75j+4bx6qbcapFia1A0M+W3JAt7Bc4VgEYvxDDRI62EsSHk1k6ZBNxs/j0cDPSYF9ZXHlRI+CWi3r9bTbQ== + dependencies: + "@react-native-community/cli-tools" "^5.0.1-alpha.1" + chalk "^3.0.0" + glob "^7.1.3" + js-yaml "^3.13.1" + lodash "^4.17.15" + plist "^3.0.1" + xcode "^2.0.0" + +"@react-native-community/cli-server-api@^5.0.1-alpha.2": + version "5.0.1-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-5.0.1-alpha.2.tgz#a82557273bad99d188682169892aaa4b283ba149" + integrity sha512-qzjoLF51GmvUHQrcJZE+wD3bTmgnTNOnGBU6z4terKmPdt/EBBSUkdXc6ScWWRF6oWP+xpxLZ//tKic2v2f+ag== + dependencies: + "@react-native-community/cli-debugger-ui" "^5.0.1-alpha.1" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.0" + nocache "^2.1.0" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^1.1.0" + +"@react-native-community/cli-tools@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-5.0.1-alpha.1.tgz#b8ceed3ee5f1c2c7d860518da3dd919dc5953870" + integrity sha512-TwQxtfEOxGf8n5+UYKVO5exm56TwEAsWjYcoWkUKcSsIBl6VwCR4s3qGB8Y63uLUN2wf9MKnzvsaX337GjMVTA== + dependencies: + chalk "^3.0.0" + lodash "^4.17.15" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + shell-quote "1.6.1" + +"@react-native-community/cli-types@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-5.0.1-alpha.1.tgz#e8cf69966cf4e0fb5dda9bc708a52980ed1f8896" + integrity sha512-RdsLU0Jf3HodFnAY+oxCJt3VlhaN4MxGhfISvjGzqdjq3kpzmxex3+7fi6QvS97Kd6G2cheOJAdgP5wcwxp3Ng== + dependencies: + ora "^3.4.0" + +"@react-native-community/cli@^5.0.1-alpha.0": + version "5.0.1-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-5.0.1-alpha.2.tgz#7e78378120fd4e264e4b577cbcf5e52b5beaa53b" + integrity sha512-PP22TVV2VyELXhAX4PcBisasssastSEx23XDklfPoCPIXD2QgGC7y39n/b5I9tOzKi2qYswCEAcDpwXYwevGOg== + dependencies: + "@react-native-community/cli-debugger-ui" "^5.0.1-alpha.1" + "@react-native-community/cli-hermes" "^5.0.1-alpha.1" + "@react-native-community/cli-server-api" "^5.0.1-alpha.2" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" + "@react-native-community/cli-types" "^5.0.1-alpha.1" + appdirsjs "^1.2.4" + chalk "^3.0.0" + command-exists "^1.2.8" + commander "^2.19.0" + cosmiconfig "^5.1.0" + deepmerge "^3.2.0" + envinfo "^7.7.2" + execa "^1.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + glob "^7.1.3" + graceful-fs "^4.1.3" + joi "^17.2.1" + leven "^3.1.0" + lodash "^4.17.15" + metro "^0.64.0" + metro-config "^0.64.0" + metro-core "^0.64.0" + metro-react-native-babel-transformer "^0.64.0" + metro-resolver "^0.64.0" + metro-runtime "^0.64.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + node-stream-zip "^1.9.1" + ora "^3.4.0" + pretty-format "^26.6.2" + prompts "^2.4.0" + semver "^6.3.0" + serve-static "^1.13.1" + strip-ansi "^5.2.0" + sudo-prompt "^9.0.0" + wcwidth "^1.0.1" + +"@react-native-community/eslint-config@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/eslint-config/-/eslint-config-2.0.0.tgz#35dcc529a274803fc4e0a6b3d6c274551fb91774" + integrity sha512-vHaMMfvMp9BWCQQ0lNIXibOJTcXIbYUQ8dSUsMOsrXgVkeVQJj88OwrKS00rQyqwMaC4/a6HuDiFzYUkGKOpVg== + dependencies: + "@react-native-community/eslint-plugin" "^1.1.0" + "@typescript-eslint/eslint-plugin" "^3.1.0" + "@typescript-eslint/parser" "^3.1.0" + babel-eslint "^10.1.0" + eslint-config-prettier "^6.10.1" + eslint-plugin-eslint-comments "^3.1.2" + eslint-plugin-flowtype "2.50.3" + eslint-plugin-jest "22.4.1" + eslint-plugin-prettier "3.1.2" + eslint-plugin-react "^7.20.0" + eslint-plugin-react-hooks "^4.0.4" + eslint-plugin-react-native "^3.8.1" + prettier "^2.0.2" + +"@react-native-community/eslint-plugin@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@react-native-community/eslint-plugin/-/eslint-plugin-1.1.0.tgz#e42b1bef12d2415411519fd528e64b593b1363dc" + integrity sha512-W/J0fNYVO01tioHjvYWQ9m6RgndVtbElzYozBq1ZPrHO/iCzlqoySHl4gO/fpCl9QEFjvJfjPgtPMTMlsoq5DQ== + +"@react-native/assets@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" + integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== + +"@react-native/normalize-color@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-1.0.0.tgz#c52a99d4fe01049102d47dc45d40cbde4f720ab6" + integrity sha512-xUNRvNmCl3UGCPbbHvfyFMnpvLPoOjDCcp5bT9m2k+TF/ZBklEQwhPZlkrxRx2NhgFh1X3a5uL7mJ7ZR+8G7Qg== + +"@react-native/polyfills@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-1.0.0.tgz#05bb0031533598f9458cf65a502b8df0eecae780" + integrity sha512-0jbp4RxjYopTsIdLl+/Fy2TiwVYHy4mgeu07DG4b/LyM0OS/+lPP5c9sbnt/AMlnF6qz2JRZpPpGw1eMNS6A4w== + +"@sideway/address@^4.1.0": + version "4.1.2" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1" + integrity sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.14" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" + integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.1.tgz#654f6c4f67568e24c23b367e947098c6206fa639" + integrity sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^26.0.23": + version "26.0.23" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7" + integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + +"@types/json-schema@^7.0.3": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + +"@types/node@*": + version "15.6.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.1.tgz#32d43390d5c62c5b6ec486a9bc9c59544de39a08" + integrity sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/prettier@^2.0.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" + integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/react-native@^0.64.5": + version "0.64.7" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.64.7.tgz#feffa6ec1504f28807eaf6e487e2edede8685b9a" + integrity sha512-YMkzol/Ii0UxlRjkjCU9ukWzJIHsNu5rON2jpDsIA9CJntrE4FxUjvzK3GsKTxGfhxazVZdR0Jlkf18Er1ynrA== + dependencies: + "@types/react" "*" + +"@types/react-test-renderer@^16.9.2": + version "16.9.5" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-16.9.5.tgz#edab67da470f7c3e997f58d55dcfe2643cc30a68" + integrity sha512-C4cN7C2uSSGOYelp2XfdtJb5TsCP+QiZ+0Bm4U3ZfUswN8oN9O/l86XO/OvBSFCmWY7w75fzsQvZ50eGkFN34A== + dependencies: + "@types/react" "^16" + +"@types/react@*", "@types/react@^16", "@types/react@^17": + version "17.0.8" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.8.tgz#fe76e3ba0fbb5602704110fd1e3035cf394778e3" + integrity sha512-3sx4c0PbXujrYAKwXxNONXUtRp9C+hE2di0IuxFyf5BELD+B+AXL8G7QrmSKhVwKZDbv0igiAjQAMhXj8Yg3aw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.1" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" + integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== + +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/yargs-parser@*": + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + +"@types/yargs@^15.0.0": + version "15.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" + integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^3.1.0": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" + integrity sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ== + dependencies: + "@typescript-eslint/experimental-utils" "3.10.1" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^3.1.0": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" + integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "3.10.1" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" + +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +absolute-path@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" + integrity sha1-p4di+9rftSl76ZsV01p4Wy8JW/c= + +accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4: + version "8.2.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" + integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b" + integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +appdirsjs@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.4.tgz#3ab582acc9fdfaaa0c1f81b3a25422ad4d95f9d4" + integrity sha512-WO5StDORR6JF/xYnXk/Fm0yu+iULaV5ULKuUw0Tu+jbgiTlSquaWBCgbpnsHLMXldf+fM3Gxn5p7vjond7He6w== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + +array-includes@^3.1.2, array-includes@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flatmap@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.4.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== + dependencies: + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-module-resolver@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz#22a4f32f7441727ec1fbf4967b863e1e3e9f33e2" + integrity sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA== + dependencies: + find-babel-config "^1.2.0" + glob "^7.1.6" + pkg-up "^3.1.0" + reselect "^4.0.0" + resolve "^1.13.1" + +babel-plugin-polyfill-corejs2@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" + integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.2.2" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz#7424a1682ee44baec817327710b1b094e5f8f7f5" + integrity sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.2" + core-js-compat "^3.9.1" + +babel-plugin-polyfill-regenerator@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" + integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.2" + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-fbjs@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" + integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.1.2, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +big-integer@^1.6.44: + version "1.6.48" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" + integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +bplist-creator@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.8.tgz#56b2a6e79e9aec3fc33bf831d09347d73794e79c" + integrity sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA== + dependencies: + stream-buffers "~2.2.0" + +bplist-parser@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.14.5, browserslist@^4.16.6: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +caniuse-lite@^1.0.30001219: + version "1.0.30001230" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz#8135c57459854b2240b57a4a6786044bdc5a9f71" + integrity sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^2.0.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" + integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^1.0.7, colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.9.1: + version "3.13.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.13.0.tgz#a88f5fa81d8e9b15d7f98abc4447a4dfca2a358f" + integrity sha512-jhbI2zpVskgfDC9mGRaDo1gagd0E0i/kYW0+WvibL/rafEHKAHO653hEXIxJHqRlRLITluXtRH3AGTL5qJmifQ== + dependencies: + browserslist "^4.16.6" + semver "7.0.0" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@^1.0.0-alpha.39: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" + integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +dayjs@^1.8.15: + version "1.10.5" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.5.tgz#5600df4548fc2453b3f163ebb2abbe965ccfb986" + integrity sha512-BUFis41ikLz+65iH6LHQCDm4YPMj5r1YFLdupPIyM4SGcXMmtiLQ7U37i+hGS8urIuqe7I/ou3IS1jVc4nbN4g== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decimal.js@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" + integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.723: + version "1.3.740" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.740.tgz#e38b7d2b848f632191b643e6dabca51be2162922" + integrity sha512-Mi2m55JrX2BFbNZGKYR+2ItcGnR4O5HhrvgoRRyZQlaMGQULqDhoGkLWHzJoshSzi7k1PUofxcDbNhlFrDZNhg== + +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +envinfo@^7.7.2: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +errorhandler@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.2.tgz#6eb518b640262e8ddcbd48e0bc8549f82efd48a7" + integrity sha512-byRiNIQXE6HWNySaU6JohoNXzYgbBjztwFnBLUTiJmWXjaU9bSq3urQLUlNLQ292tc+gc07zYZXNZjaOoAX3sw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@^6.10.1: + version "6.15.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" + integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== + dependencies: + get-stdin "^6.0.0" + +eslint-plugin-eslint-comments@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" + integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== + dependencies: + escape-string-regexp "^1.0.5" + ignore "^5.0.5" + +eslint-plugin-flowtype@2.50.3: + version "2.50.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz#61379d6dce1d010370acd6681740fd913d68175f" + integrity sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ== + dependencies: + lodash "^4.17.10" + +eslint-plugin-jest@22.4.1: + version "22.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.4.1.tgz#a5fd6f7a2a41388d16f527073b778013c5189a9c" + integrity sha512-gcLfn6P2PrFAVx3AobaOzlIEevpAEf9chTpFZz7bYfc7pz8XRv7vuKTIE4hxPKZSha6XWKKplDQ0x9Pq8xX2mg== + +eslint-plugin-prettier@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" + integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react-hooks@^4.0.4: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" + integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== + +eslint-plugin-react-native-globals@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz#ee1348bc2ceb912303ce6bdbd22e2f045ea86ea2" + integrity sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g== + +eslint-plugin-react-native@^3.8.1: + version "3.11.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-native/-/eslint-plugin-react-native-3.11.0.tgz#c73b0886abb397867e5e6689d3a6a418682e6bac" + integrity sha512-7F3OTwrtQPfPFd+VygqKA2VZ0f2fz0M4gJmry/TRE18JBb94/OtMxwbL7Oqwu7FGyrdeIOWnXQbBAveMcSTZIA== + dependencies: + "@babel/traverse" "^7.7.4" + eslint-plugin-react-native-globals "^0.1.1" + +eslint-plugin-react@^7.20.0: + version "7.23.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz#2d2291b0f95c03728b55869f01102290e792d494" + integrity sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw== + dependencies: + array-includes "^3.1.3" + array.prototype.flatmap "^1.2.4" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.3" + object.fromentries "^2.0.4" + object.values "^1.1.3" + prop-types "^15.7.2" + resolve "^2.0.0-next.3" + string.prototype.matchall "^4.0.4" + +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.14.0: + version "7.27.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.27.0.tgz#665a1506d8f95655c9274d84bd78f7166b07e9c7" + integrity sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.1" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +exec-sh@^0.3.2: + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== + dependencies: + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-babel-config@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" + integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + +flow-parser@0.*: + version "0.152.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.152.0.tgz#a627aec1fdcfa243e2016469e44284a98169b996" + integrity sha512-qRXGE3ztuhyI2ovi4Ixwq7/GUYvKX9wmFdwBof2q5pWHteuveexFrlbwZxSonC0dWz2znA6sW+vce4RXgYLnnQ== + +flow-parser@^0.121.0: + version "0.121.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f" + integrity sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^2.1.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globals@^13.6.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== + dependencies: + type-fest "^0.20.2" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hermes-engine@~0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.7.2.tgz#303cd99d23f68e708b223aec2d49d5872985388b" + integrity sha512-E2DkRaO97gwL98LPhgfkMqhHiNsrAjIfEk3wWYn2Y31xdkdWn0572H7RnVcGujMJVqZNJvtknxlpsUb8Wzc3KA== + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.0.5: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +image-size@^0.6.0: + version "0.6.3" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" + integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.2" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5, is-string@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== + dependencies: + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" + +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + dependencies: + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" + prompts "^2.0.1" + yargs "^15.4.1" + +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" + +jest-diff@^26.0.0, jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.5.2, jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + dependencies: + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^26.6.2" + is-generator-fn "^2.0.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" + +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + dependencies: + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + dependencies: + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" + slash "^3.0.0" + +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" + +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + natural-compare "^1.4.0" + pretty-format "^26.6.2" + semver "^7.3.2" + +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.5.2, jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" + +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== + dependencies: + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" + +jest-worker@^26.0.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== + dependencies: + "@jest/core" "^26.6.3" + import-local "^3.0.2" + jest-cli "^26.6.3" + +jetifier@^1.6.2: + version "1.6.8" + resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.8.tgz#e88068697875cbda98c32472902c4d3756247798" + integrity sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw== + +joi@^17.2.1: + version "17.4.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.0.tgz#b5c2277c8519e016316e49ababd41a1908d9ef20" + integrity sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.0" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsc-android@^245459.0.0: + version "245459.0.0" + resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-245459.0.0.tgz#e584258dd0b04c9159a27fb104cd5d491fd202c9" + integrity sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg== + +jscodeshift@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.11.0.tgz#4f95039408f3f06b0e39bb4d53bc3139f5330e2f" + integrity sha512-SdRK2C7jjs4k/kT2mwtO07KJN9RnjxtKn03d9JVj6c3j9WwaLcFYsICYDnLAzY0hp+wG2nxl+Cm2jWLiNVYb8g== + dependencies: + "@babel/core" "^7.1.6" + "@babel/parser" "^7.1.6" + "@babel/plugin-proposal-class-properties" "^7.1.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.1.0" + "@babel/plugin-proposal-optional-chaining" "^7.1.0" + "@babel/plugin-transform-modules-commonjs" "^7.1.0" + "@babel/preset-flow" "^7.0.0" + "@babel/preset-typescript" "^7.1.0" + "@babel/register" "^7.0.0" + babel-core "^7.0.0-bridge.0" + colors "^1.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.20.3" + temp "^0.8.1" + write-file-atomic "^2.3.0" + +jsdom@^16.4.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" + integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.5" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + optionalDependencies: + graceful-fs "^4.1.9" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +metro-babel-register@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.64.0.tgz#1a2d23f68da8b8ee42e78dca37ad21a5f4d3647d" + integrity sha512-Kf6YvE3kIRumGnjK0Q9LqGDIdnsX9eFGtNBmBuCVDuB9wGGA/5CgX8We8W7Y44dz1RGTcHJRhfw5iGg+pwC3aQ== + dependencies: + "@babel/core" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/register" "^7.0.0" + escape-string-regexp "^1.0.5" + +metro-babel-transformer@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.64.0.tgz#a21f8a989a5ea60c1109456e21bd4d9374194ea0" + integrity sha512-itZaxKTgmKGEZWxNzbSZBc22NngrMZzoUNuU92aHSTGkYi2WH4XlvzEHsstmIKHMsRVKl75cA+mNmgk4gBFJKw== + dependencies: + "@babel/core" "^7.0.0" + metro-source-map "0.64.0" + nullthrows "^1.1.1" + +metro-cache-key@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.64.0.tgz#98d0a94332453c4c52b74f72c07cc62a5c264c4f" + integrity sha512-O9B65G8L/fopck45ZhdRosyVZdMtUQuX5mBWEC1NRj02iWBIUPLmYMjrunqIe8vHipCMp3DtTCm/65IlBmO8jg== + +metro-cache@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.64.0.tgz#a769503e12521d9e9d95ce5840ffb2efdb4e8703" + integrity sha512-QvGfxe/1QQYM9XOlR8W1xqE9eHDw/AgJIgYGn/TxZxBu9Zga+Rgs1omeSZju45D8w5VWgMr83ma5kACgzvOecg== + dependencies: + metro-core "0.64.0" + mkdirp "^0.5.1" + rimraf "^2.5.4" + +metro-config@0.64.0, metro-config@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.64.0.tgz#b634fa05cffd06b1e50e4339c200f90a42924afb" + integrity sha512-QhM4asnX5KhlRWaugwVGNNXhX0Z85u5nK0UQ/A90bBb4xWyXqUe20e788VtdA75rkQiiI6wXTCIHWT0afbnjwQ== + dependencies: + cosmiconfig "^5.0.5" + jest-validate "^26.5.2" + metro "0.64.0" + metro-cache "0.64.0" + metro-core "0.64.0" + metro-runtime "0.64.0" + +metro-core@0.64.0, metro-core@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.64.0.tgz#7616b27acfe7baa476f6cd6bd9e70ae64fa62541" + integrity sha512-v8ZQ5j72EaUwamQ8pLfHlOHTyp7SbdazvHPzFGDpHnwIQqIT0Bw3Syg8R4regTlVG3ngpeSEAi005UITljmMcQ== + dependencies: + jest-haste-map "^26.5.2" + lodash.throttle "^4.1.1" + metro-resolver "0.64.0" + +metro-hermes-compiler@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.64.0.tgz#e6043d7aa924e5b2be99bd3f602e693685d15386" + integrity sha512-CLAjVDWGAoGhbi2ZyPHnH5YDdfrDIx6+tzFWfHGIMTZkYBXsYta9IfYXBV8lFb6BIbrXLjlXZAOoosknetMPOA== + +metro-inspector-proxy@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.64.0.tgz#9a481b3f49773d5418e028178efec68f861bec88" + integrity sha512-KywbH3GNSz9Iqw4UH3smgaV2dBHHYMISeN7ORntDL/G+xfgPc6vt13d+zFb907YpUcXj5N0vdoiAHI5V/0y8IA== + dependencies: + connect "^3.6.5" + debug "^2.2.0" + ws "^1.1.5" + yargs "^15.3.1" + +metro-minify-uglify@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.64.0.tgz#da6ab4dda030e3211f5924e7f41ed308d466068f" + integrity sha512-DRwRstqXR5qfte9Nuwoov5dRXxL7fJeVlO5fGyOajWeO3+AgPjvjXh/UcLJqftkMWTPGUFuzAD5/7JC5v5FLWw== + dependencies: + uglify-es "^3.1.9" + +metro-react-native-babel-preset@0.64.0, metro-react-native-babel-preset@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.64.0.tgz#76861408681dfda3c1d962eb31a8994918c976f8" + integrity sha512-HcZ0RWQRuJfpPiaHyFQJzcym+/dDIVUPwUAXWoub/C4GkGu+mPjp8vqK6g0FxokCnnI2TK0gZTza2IDfiNNscQ== + dependencies: + "@babel/core" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-assign" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + react-refresh "^0.4.0" + +metro-react-native-babel-transformer@0.64.0, metro-react-native-babel-transformer@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.64.0.tgz#eafef756972f20efdc51bd5361d55f8598355623" + integrity sha512-K1sHO3ODBFCr7uEiCQ4RvVr+cQg0EHQF8ChVPnecGh/WDD8udrTq9ECwB0dRfMjAvlsHtRUlJm6ZSI8UPgum2w== + dependencies: + "@babel/core" "^7.0.0" + babel-preset-fbjs "^3.3.0" + metro-babel-transformer "0.64.0" + metro-react-native-babel-preset "0.64.0" + metro-source-map "0.64.0" + nullthrows "^1.1.1" + +metro-resolver@0.64.0, metro-resolver@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.64.0.tgz#21126b44f31346ac2ce0b06b77ef65e8c9e2294a" + integrity sha512-cJ26Id8Zf+HmS/1vFwu71K3u7ep/+HeXXAJIeVDYf+niE7AWB9FijyMtAlQgbD8elWqv1leJCnQ/xHRFBfGKYA== + dependencies: + absolute-path "^0.0.0" + +metro-runtime@0.64.0, metro-runtime@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.64.0.tgz#cdaa1121d91041bf6345f2a69eb7c2fb289eff7b" + integrity sha512-m7XbWOaIOeFX7YcxUhmnOi6Pg8EaeL89xyZ+quZyZVF1aNoTr4w8FfbKxvijpjsytKHIZtd+43m2Wt5JrqyQmQ== + +metro-source-map@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.64.0.tgz#4310e17c3d4539c6369688022494ad66fa4d39a1" + integrity sha512-OCG2rtcp5cLEGYvAbfkl6mEc0J2FPRP4/UCEly+juBk7hawS9bCBMBfhJm/HIsvY1frk6nT2Vsl1O8YBbwyx2g== + dependencies: + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + invariant "^2.2.4" + metro-symbolicate "0.64.0" + nullthrows "^1.1.1" + ob1 "0.64.0" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.64.0.tgz#405c21438ab553c29f6841da52ca76ee87bb06ac" + integrity sha512-qIi+YRrDWnLVmydj6gwidYLPaBsakZRibGWSspuXgHAxOI3UuLwlo4dpQ73Et0gyHjI7ZvRMRY8JPiOntf9AQQ== + dependencies: + invariant "^2.2.4" + metro-source-map "0.64.0" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.64.0.tgz#41d3dce0f2966bbd79fea1ecff61bcc8a00e4665" + integrity sha512-iTIRBD/wBI98plfxj8jAoNUUXfXLNlyvcjPtshhpGvdwu9pzQilGfnDnOaaK+vbITcOk9w5oQectXyJwAqTr1A== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.64.0.tgz#f94429b2c42b13cb1c93be4c2e25e97f2d27ca60" + integrity sha512-wegRtK8GyLF6IPZRBJp+zsORgA4iX0h1DRpknyAMDCtSbJ4VU2xV/AojteOgAsDvY3ucAGsvfuZLNDJHUdUNHQ== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.3.0" + metro "0.64.0" + metro-babel-transformer "0.64.0" + metro-cache "0.64.0" + metro-cache-key "0.64.0" + metro-hermes-compiler "0.64.0" + metro-source-map "0.64.0" + metro-transform-plugins "0.64.0" + nullthrows "^1.1.1" + +metro@0.64.0, metro@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.64.0.tgz#0091a856cfbcc94dd576da563eee466e96186195" + integrity sha512-G2OC08Rzfs0kqnSEuKo2yZxR+/eNUpA93Ru45c60uN0Dw3HPrDi+ZBipgFftC6iLE0l+6hu8roFFIofotWxybw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/parser" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + absolute-path "^0.0.0" + accepts "^1.3.7" + async "^2.4.0" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + fs-extra "^1.0.0" + graceful-fs "^4.1.3" + image-size "^0.6.0" + invariant "^2.2.4" + jest-haste-map "^26.5.2" + jest-worker "^26.0.0" + lodash.throttle "^4.1.1" + metro-babel-register "0.64.0" + metro-babel-transformer "0.64.0" + metro-cache "0.64.0" + metro-cache-key "0.64.0" + metro-config "0.64.0" + metro-core "0.64.0" + metro-hermes-compiler "0.64.0" + metro-inspector-proxy "0.64.0" + metro-minify-uglify "0.64.0" + metro-react-native-babel-preset "0.64.0" + metro-resolver "0.64.0" + metro-runtime "0.64.0" + metro-source-map "0.64.0" + metro-symbolicate "0.64.0" + metro-transform-plugins "0.64.0" + metro-transform-worker "0.64.0" + mime-types "^2.1.27" + mkdirp "^0.5.1" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^2.5.4" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + temp "0.8.3" + throat "^5.0.0" + ws "^1.1.5" + yargs "^15.3.1" + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +mime-db@1.47.0, "mime-db@>= 1.43.0 < 2": + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24: + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== + dependencies: + mime-db "1.47.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +nocache@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f" + integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= + dependencies: + minimatch "^3.0.2" + +node-fetch@^2.2.0, node-fetch@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" + integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" + +node-releases@^1.1.71: + version "1.1.72" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" + integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== + +node-stream-zip@^1.9.1: + version "1.13.4" + resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.13.4.tgz#baafc329ffb9e27de84b6882d74e9f2cbe77e2a5" + integrity sha512-M2nPvnSWFFH+fgLIRZDqmhshmuzXcr+ce9BsHQX/30pXR+cEz/USMYmx9ZAFYy837W2QoDoNzhFtbZhfzaMk9A== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +ob1@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.64.0.tgz#f254a55a53ca395c4f9090e28a85483eac5eba19" + integrity sha512-CO1N+5dhvy+MoAwxz8+fymEUcwsT4a+wHhrHFb02LppcJdHxgcBWviwEhUwKOD2kLMQ7ijrrzybOqpGcqEtvpQ== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.10.3, object-inspect@^1.9.0: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" + integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + +object.fromentries@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= + +ora@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^2.0.0" + log-symbols "^2.2.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picomatch@^2.0.4, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.0, pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +plist@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.2.tgz#74bbf011124b90421c22d15779cee60060ba95bc" + integrity sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ== + dependencies: + base64-js "^1.5.1" + xmlbuilder "^9.0.7" + xmldom "^0.5.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.0.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" + integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== + +pretty-format@^26.0.0, pretty-format@^26.5.2, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1, prompts@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" + integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +react-devtools-core@^4.6.0: + version "4.13.5" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.13.5.tgz#803e9ae8f7ab46deaa04129b376f3f21b2eb6ef1" + integrity sha512-k+P5VSKM6P22Go9IQ8dJmjj9fbztvKt1iRDI/4wS5oTvd1EnytIJMYB59wZt+D3kgp64jklNX/MRmY42xAQ08g== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +"react-is@^16.12.0 || ^17.0.0", react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-native-codegen@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.0.6.tgz#b3173faa879cf71bfade8d030f9c4698388f6909" + integrity sha512-cMvrUelD81wiPitEPiwE/TCNscIVauXxmt4NTGcy18HrUd0WRWXfYzAQGXm0eI87u3NMudNhqFj2NISJenxQHg== + dependencies: + flow-parser "^0.121.0" + jscodeshift "^0.11.0" + nullthrows "^1.1.1" + +react-native-linear-gradient@^2.5.6: + version "2.5.6" + resolved "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.5.6.tgz#96215cbc5ec7a01247a20890888aa75b834d44a0" + integrity sha512-HDwEaXcQIuXXCV70O+bK1rizFong3wj+5Q/jSyifKFLg0VWF95xh8XQgfzXwtq0NggL9vNjPKXa016KuFu+VFg== + +react-native-safe-area-context@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-3.2.0.tgz#06113c6b208f982d68ab5c3cebd199ca93db6941" + integrity sha512-k2Nty4PwSnrg9HwrYeeE+EYqViYJoOFwEy9LxL5RIRfoqxAq/uQXNGwpUg2/u4gnKpBbEPa9eRh15KKMe/VHkA== + +react-native-svg@^12.1.1: + version "12.1.1" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-12.1.1.tgz#5f292410b8bcc07bbc52b2da7ceb22caf5bcaaee" + integrity sha512-NIAJ8jCnXGCqGWXkkJ1GTzO4a3Md5at5sagYV8Vh4MXYnL4z5Rh428Wahjhh+LIjx40EE5xM5YtwyJBqOIba2Q== + dependencies: + css-select "^2.1.0" + css-tree "^1.0.0-alpha.39" + +react-native@0.64.1: + version "0.64.1" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.64.1.tgz#cd38f5b47b085549686f34eb0c9dcd466f307635" + integrity sha512-jvSj+hNAfwvhaSmxd5KHJ5HidtG0pDXzoH6DaqNpU74g3CmAiA8vuk58B5yx/DYuffGq6PeMniAcwuh3Xp4biQ== + dependencies: + "@jest/create-cache-key-function" "^26.5.0" + "@react-native-community/cli" "^5.0.1-alpha.0" + "@react-native-community/cli-platform-android" "^5.0.1-alpha.0" + "@react-native-community/cli-platform-ios" "^5.0.1-alpha.0" + "@react-native/assets" "1.0.0" + "@react-native/normalize-color" "1.0.0" + "@react-native/polyfills" "1.0.0" + abort-controller "^3.0.0" + anser "^1.4.9" + base64-js "^1.1.2" + event-target-shim "^5.0.1" + hermes-engine "~0.7.0" + invariant "^2.2.4" + jsc-android "^245459.0.0" + metro-babel-register "0.64.0" + metro-react-native-babel-transformer "0.64.0" + metro-runtime "0.64.0" + metro-source-map "0.64.0" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.0.3" + prop-types "^15.7.2" + react-devtools-core "^4.6.0" + react-native-codegen "^0.0.6" + react-refresh "^0.4.0" + regenerator-runtime "^0.13.2" + scheduler "^0.20.1" + shelljs "^0.8.4" + stacktrace-parser "^0.1.3" + use-subscription "^1.0.0" + whatwg-fetch "^3.0.0" + ws "^6.1.4" + +react-refresh@^0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" + integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== + +react-shallow-renderer@^16.13.1: + version "16.14.1" + resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz#bf0d02df8a519a558fd9b8215442efa5c840e124" + integrity sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0" + +react-test-renderer@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3187e636c3063e6ae498aedf21ecf972721574c7" + integrity sha512-/dRae3mj6aObwkjCcxZPlxDFh73XZLgvwhhyON2haZGUEhiaY5EjfAdw+d/rQmlcFwdTpMXCSGVk374QbCTlrA== + dependencies: + object-assign "^4.1.1" + react-is "^17.0.1" + react-shallow-renderer "^16.13.1" + scheduler "^0.20.1" + +react@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +recast@^0.20.3: + version "0.20.4" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" + integrity sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ== + dependencies: + ast-types "0.14.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.9" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" + integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +reselect@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.18.1: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@^2.5.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sax@^1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.20.1: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1, semver@^7.3.2: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" + integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go= + +serve-static@^1.13.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shell-quote@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shelljs@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-plist@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.1.1.tgz#54367ca28bc5996a982c325c1c4a4c1a05f4047c" + integrity sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg== + dependencies: + bplist-creator "0.0.8" + bplist-parser "0.2.0" + plist "^3.0.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.16, source-map-support@^0.5.6: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== + +stacktrace-parser@^0.1.3: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-buffers@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" + integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da" + integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + get-intrinsic "^1.1.1" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^5.0.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + +temp@0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k= + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +temp@^0.8.1: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + +tsutils@^3.17.1: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^3.8.3: + version "3.9.9" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" + integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== + +uglify-es@^3.1.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0, universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use-subscription@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" + integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== + dependencies: + object-assign "^4.1.1" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" + integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg== + dependencies: + lodash "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^1.1.0, ws@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" + integrity sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w== + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +ws@^6.1.4: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7, ws@^7.4.5: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +xcode@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/xcode/-/xcode-2.1.0.tgz#bab64a7e954bb50ca8d19da7e09531c65a43ecfe" + integrity sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ== + dependencies: + simple-plist "^1.0.0" + uuid "^3.3.2" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlbuilder@^9.0.7: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xmldoc@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-1.1.2.tgz#6666e029fe25470d599cd30e23ff0d1ed50466d7" + integrity sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ== + dependencies: + sax "^1.2.1" + +xmldom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.5.0.tgz#193cb96b84aa3486127ea6272c4596354cb4962e" + integrity sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.1.0, yargs@^15.3.1, yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" diff --git a/Utils/computeProps.js b/Utils/computeProps.js deleted file mode 100644 index f24106e96b..0000000000 --- a/Utils/computeProps.js +++ /dev/null @@ -1,50 +0,0 @@ -'use_strict'; -import _ from 'lodash'; -import ReactNativePropRegistry from 'react/lib/ReactNativePropRegistry'; -// For compatibility with RN 0.25 -// import ReactNativePropRegistry from "react-native/Libraries/ReactNative/ReactNativePropRegistry"; -module.exports = function(incomingProps, defaultProps) { - // External props has a higher precedence - var computedProps = {}; - - incomingProps = _.clone(incomingProps); - delete incomingProps.children; - - var incomingPropsStyle = incomingProps.style; - delete incomingProps.style; - - // console.log(defaultProps, incomingProps); - if(incomingProps) - _.merge(computedProps, defaultProps, incomingProps); - else - computedProps = defaultProps; - // Pass the merged Style Object instead - if(incomingPropsStyle) { - - var computedPropsStyle = {}; - computedProps.style = {}; - if (Array.isArray(incomingPropsStyle)) { - _.forEach(incomingPropsStyle, (style)=>{ - if(typeof style == 'number') { - _.merge(computedPropsStyle, ReactNativePropRegistry.getByID(style)); - } else { - _.merge(computedPropsStyle, style); - } - }) - - } - else { - if(typeof incomingPropsStyle == 'number') { - computedPropsStyle = ReactNativePropRegistry.getByID(incomingPropsStyle); - } else { - computedPropsStyle = incomingPropsStyle; - } - } - - _.merge(computedProps.style, defaultProps.style, computedPropsStyle); - - - } - // console.log("computedProps ", computedProps); - return computedProps; -} \ No newline at end of file diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000000..0ade64dd81 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: ['module:metro-react-native-babel-preset'], + plugins: + process.env.NODE_ENV === 'production' ? ['transform-remove-console'] : [], +}; diff --git a/cli.js b/cli.js new file mode 100644 index 0000000000..dec46028a2 --- /dev/null +++ b/cli.js @@ -0,0 +1,69 @@ +const { exec } = require('child_process'); +const path = require('path'); +const fs = require('fs'); + +// Copy directory +function copyDir(src, dest) { + fs.mkdirSync(dest, { recursive: true }); + let entries = fs.readdirSync(src, { withFileTypes: true }); + + for (let entry of entries) { + let srcPath = path.join(src, entry.name); + let destPath = path.join(dest, entry.name); + + entry.isDirectory() + ? copyDir(srcPath, destPath) + : fs.copyFileSync(srcPath, destPath); + } +} + +const themeFolder = path.join(__dirname, 'src', 'theme'); +const outDirectory = path.join(process.cwd(), 'theme'); +const themeTemp = path.join(process.cwd(), 'theme-temp'); + +const transpileScript = `tsc ${themeTemp}/index.ts --target esnext --moduleResolution node --outDir ${outDirectory} --skipLibCheck true --allowSyntheticDefaultImports true`; + +const VALID_ARGS = ['eject:theme']; + +const ejectTheme = async () => { + await copyDir(themeFolder, themeTemp); + await promisifyExec(transpileScript); + fs.rmSync(themeTemp, { recursive: true, force: true }); + + console.log('Theme ejected successfully!'); + console.log('Theme folder is placed in ' + process.cwd() + ' directory.'); +}; + +const main = () => { + const myArgs = process.argv.slice(2); + invokeFunctionBasedOnArgs(myArgs[0]); +}; + +const invokeFunctionBasedOnArgs = (arg) => { + switch (arg) { + case VALID_ARGS[0]: { + ejectTheme(); + break; + } + default: { + console.log('No arguments matched. Valid arguments are ', VALID_ARGS); + break; + } + } +}; + +const promisifyExec = (command) => { + return new Promise((resolve, reject) => { + exec(command, (error, stdout, stderr) => { + console.log(stdout); + console.log(stderr); + if (error !== null) { + reject(error); + console.log(`exec error: ${error}`); + } + resolve(); + }); + }); +}; + +main(); diff --git a/example/.eslintrc.json b/example/.eslintrc.json new file mode 100644 index 0000000000..a6ec3dfa53 --- /dev/null +++ b/example/.eslintrc.json @@ -0,0 +1,19 @@ +{ + "extends": ["@react-native-community", "prettier"], + "rules": { + "prettier/prettier": [ + "error", + { + "quoteProps": "preserve", + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false + } + ], + "no-bitwise": 0, + "prefer-const": "warn", + "no-console": "off" + }, + "plugins": ["prettier"] +} diff --git a/example/.nvmrc b/example/.nvmrc new file mode 100644 index 0000000000..47fdc46173 --- /dev/null +++ b/example/.nvmrc @@ -0,0 +1 @@ +v14.19.0 \ No newline at end of file diff --git a/example/App.tsx b/example/App.tsx new file mode 100644 index 0000000000..bd8935f379 --- /dev/null +++ b/example/App.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import StoryBookUI from './storybook'; +import { useFonts } from 'expo-font'; + +export default () => { + const [loaded] = useFonts({ + 'Roboto-Bold': require('./assets/fonts/Roboto-Bold.ttf'), + 'Roboto-Italic': require('./assets/fonts/Roboto-Italic.ttf'), + 'Roboto-Light': require('./assets/fonts/Roboto-Light.ttf'), + 'Roboto-Regular': require('./assets/fonts/Roboto-Regular.ttf'), + 'Roboto-Medium': require('./assets/fonts/Roboto-Medium.ttf'), + + 'Montserrat-Bold': require('./assets/fonts/Montserrat-Bold.ttf'), + 'Montserrat-Italic': require('./assets/fonts/Montserrat-Italic.ttf'), + 'Montserrat-Light': require('./assets/fonts/Montserrat-Light.ttf'), + 'Montserrat-Regular': require('./assets/fonts/Montserrat-Regular.ttf'), + 'Montserrat-Medium': require('./assets/fonts/Montserrat-Medium.ttf'), + 'Montserrat-MediumItalic': require('./assets/fonts/Montserrat-MediumItalic.ttf'), + 'Montserrat-Black': require('./assets/fonts/Montserrat-Black.ttf'), + 'Montserrat-BlackItalic': require('./assets/fonts/Montserrat-BlackItalic.ttf'), + 'Montserrat-ExtraBold': require('./assets/fonts/Montserrat-ExtraBold.ttf'), + 'Montserrat-ExtraBoldItalic': require('./assets/fonts/Montserrat-ExtraBoldItalic.ttf'), + 'Montserrat-SemiBold': require('./assets/fonts/Montserrat-SemiBold.ttf'), + 'Montserrat-SemiBoldItalic': require('./assets/fonts/Montserrat-SemiBoldItalic.ttf'), + }); + + if (!loaded) return null; + + return ; +}; diff --git a/example/__mocks__/@react-native-async-storage/async-storage.js b/example/__mocks__/@react-native-async-storage/async-storage.js new file mode 100644 index 0000000000..12049fb348 --- /dev/null +++ b/example/__mocks__/@react-native-async-storage/async-storage.js @@ -0,0 +1,2 @@ +import DefaultValue from '@react-native-async-storage/async-storage/jest/async-storage-mock'; +export default DefaultValue; diff --git a/example/__mocks__/globalMock.js b/example/__mocks__/globalMock.js new file mode 100644 index 0000000000..4c4b207ef9 --- /dev/null +++ b/example/__mocks__/globalMock.js @@ -0,0 +1,12 @@ +jest.mock('global', () => ({ + ...global, + WebSocket: function WebSocket() {}, +})); + +jest.mock('react-native-keyboard-aware-scroll-view', () => { + const KeyboardAwareScrollView = ({ children }) => children; + return { KeyboardAwareScrollView }; +}); + +import mockAsyncStorage from '@react-native-async-storage/async-storage/jest/async-storage-mock'; +jest.mock('@react-native-async-storage/async-storage', () => mockAsyncStorage); diff --git a/example/app.json b/example/app.json new file mode 100644 index 0000000000..867b7ea62c --- /dev/null +++ b/example/app.json @@ -0,0 +1,19 @@ +{ + "name": "NativeBaseExample", + "displayName": "NativeBase Example", + "packagerOpts": { + "config": "metro.config.js" + }, + "expo": { + "name": "NativeBase Example", + "slug": "native-base-example", + "description": "Example app for Nativebase", + "privacy": "public", + "version": "1.0.0", + "platforms": ["ios", "android", "web"], + "ios": { + "supportsTablet": true + }, + "assetBundlePatterns": ["**/*"] + } +} \ No newline at end of file diff --git a/example/assets/fonts/Montserrat-Black.ttf b/example/assets/fonts/Montserrat-Black.ttf new file mode 100644 index 0000000000..437b1157cb Binary files /dev/null and b/example/assets/fonts/Montserrat-Black.ttf differ diff --git a/example/assets/fonts/Montserrat-BlackItalic.ttf b/example/assets/fonts/Montserrat-BlackItalic.ttf new file mode 100644 index 0000000000..52348354c2 Binary files /dev/null and b/example/assets/fonts/Montserrat-BlackItalic.ttf differ diff --git a/example/assets/fonts/Montserrat-Bold.ttf b/example/assets/fonts/Montserrat-Bold.ttf new file mode 100644 index 0000000000..221819bca0 Binary files /dev/null and b/example/assets/fonts/Montserrat-Bold.ttf differ diff --git a/example/assets/fonts/Montserrat-BoldItalic.ttf b/example/assets/fonts/Montserrat-BoldItalic.ttf new file mode 100644 index 0000000000..9ae2bd240f Binary files /dev/null and b/example/assets/fonts/Montserrat-BoldItalic.ttf differ diff --git a/example/assets/fonts/Montserrat-ExtraBold.ttf b/example/assets/fonts/Montserrat-ExtraBold.ttf new file mode 100644 index 0000000000..80ea8061b0 Binary files /dev/null and b/example/assets/fonts/Montserrat-ExtraBold.ttf differ diff --git a/example/assets/fonts/Montserrat-ExtraBoldItalic.ttf b/example/assets/fonts/Montserrat-ExtraBoldItalic.ttf new file mode 100644 index 0000000000..6c961e1cc9 Binary files /dev/null and b/example/assets/fonts/Montserrat-ExtraBoldItalic.ttf differ diff --git a/example/assets/fonts/Montserrat-Italic.ttf b/example/assets/fonts/Montserrat-Italic.ttf new file mode 100644 index 0000000000..eb4232a0c2 Binary files /dev/null and b/example/assets/fonts/Montserrat-Italic.ttf differ diff --git a/example/assets/fonts/Montserrat-Light.ttf b/example/assets/fonts/Montserrat-Light.ttf new file mode 100644 index 0000000000..990857de8e Binary files /dev/null and b/example/assets/fonts/Montserrat-Light.ttf differ diff --git a/example/assets/fonts/Montserrat-LightItalic.ttf b/example/assets/fonts/Montserrat-LightItalic.ttf new file mode 100644 index 0000000000..209604046b Binary files /dev/null and b/example/assets/fonts/Montserrat-LightItalic.ttf differ diff --git a/example/assets/fonts/Montserrat-Medium.ttf b/example/assets/fonts/Montserrat-Medium.ttf new file mode 100644 index 0000000000..6e079f6984 Binary files /dev/null and b/example/assets/fonts/Montserrat-Medium.ttf differ diff --git a/example/assets/fonts/Montserrat-MediumItalic.ttf b/example/assets/fonts/Montserrat-MediumItalic.ttf new file mode 100644 index 0000000000..0dc3ac9c29 Binary files /dev/null and b/example/assets/fonts/Montserrat-MediumItalic.ttf differ diff --git a/example/assets/fonts/Montserrat-Regular.ttf b/example/assets/fonts/Montserrat-Regular.ttf new file mode 100644 index 0000000000..8d443d5d56 Binary files /dev/null and b/example/assets/fonts/Montserrat-Regular.ttf differ diff --git a/example/assets/fonts/Montserrat-SemiBold.ttf b/example/assets/fonts/Montserrat-SemiBold.ttf new file mode 100644 index 0000000000..f8a43f2b20 Binary files /dev/null and b/example/assets/fonts/Montserrat-SemiBold.ttf differ diff --git a/example/assets/fonts/Montserrat-SemiBoldItalic.ttf b/example/assets/fonts/Montserrat-SemiBoldItalic.ttf new file mode 100644 index 0000000000..336c56ec0c Binary files /dev/null and b/example/assets/fonts/Montserrat-SemiBoldItalic.ttf differ diff --git a/example/assets/fonts/Roboto-Bold.ttf b/example/assets/fonts/Roboto-Bold.ttf new file mode 100644 index 0000000000..d998cf5b46 Binary files /dev/null and b/example/assets/fonts/Roboto-Bold.ttf differ diff --git a/example/assets/fonts/Roboto-Italic.ttf b/example/assets/fonts/Roboto-Italic.ttf new file mode 100644 index 0000000000..5b390ff950 Binary files /dev/null and b/example/assets/fonts/Roboto-Italic.ttf differ diff --git a/example/assets/fonts/Roboto-Light.ttf b/example/assets/fonts/Roboto-Light.ttf new file mode 100644 index 0000000000..35267989de Binary files /dev/null and b/example/assets/fonts/Roboto-Light.ttf differ diff --git a/example/assets/fonts/Roboto-Medium.ttf b/example/assets/fonts/Roboto-Medium.ttf new file mode 100644 index 0000000000..f714a514d9 Binary files /dev/null and b/example/assets/fonts/Roboto-Medium.ttf differ diff --git a/example/assets/fonts/Roboto-Regular.ttf b/example/assets/fonts/Roboto-Regular.ttf new file mode 100644 index 0000000000..2b6392ffe8 Binary files /dev/null and b/example/assets/fonts/Roboto-Regular.ttf differ diff --git a/example/babel.config.js b/example/babel.config.js new file mode 100644 index 0000000000..f3f36c55a4 --- /dev/null +++ b/example/babel.config.js @@ -0,0 +1,20 @@ +const path = require('path'); +const pak = require('../package.json'); + +module.exports = function (api) { + api.cache(true); + return { + presets: [['babel-preset-expo', { jsxRuntime: 'classic' }]], + plugins: [ + [ + 'module-resolver', + { + alias: { + // For development, we want to alias the library to the source + [pak.name]: path.join(__dirname, '..', pak.source), + }, + }, + ], + ], + }; +}; diff --git a/example/jest-android.config.js b/example/jest-android.config.js new file mode 100644 index 0000000000..8bdcf72128 --- /dev/null +++ b/example/jest-android.config.js @@ -0,0 +1,9 @@ +const config = { + preset: 'jest-expo/android', + transformIgnorePatterns: [ + '/../node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|@sentry/.*)', + ], + setupFilesAfterEnv: ['/__mocks__/globalMock.js'], +}; + +module.exports = config; diff --git a/example/jest-ios.config.js b/example/jest-ios.config.js new file mode 100644 index 0000000000..58beee102e --- /dev/null +++ b/example/jest-ios.config.js @@ -0,0 +1,9 @@ +const config = { + preset: 'jest-expo/ios', + transformIgnorePatterns: [ + '/../node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|@sentry/.*)', + ], + setupFilesAfterEnv: ['/__mocks__/globalMock.js'], +}; + +module.exports = config; diff --git a/example/jest.config.js b/example/jest.config.js new file mode 100644 index 0000000000..aee25eac6c --- /dev/null +++ b/example/jest.config.js @@ -0,0 +1,17 @@ +const config = { + projects: [{ preset: 'jest-expo/web' }, { preset: 'jest-expo/node' }], + transformIgnorePatterns: [ + '/../node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|@sentry/.*)', + ], + setupFilesAfterEnv: ['/__mocks__/globalMock.js'], + globals: { + window: {}, + }, + moduleNameMapper: { + '^.+\\.(css|less)$': '/__mocks__/styleMock.js', // replaces .css imports with an empty object + '\\.(jpg|png|gif|ttf|eot|svg)$': '/__mocks__/fileMock.js', // replaces file imports with a useless string + '^react($|/.+)': '/node_modules/react$1', // makes sure all React imports are running off of the one in this package. + }, +}; + +module.exports = config; diff --git a/example/metro.config.js b/example/metro.config.js new file mode 100644 index 0000000000..cee65a3b63 --- /dev/null +++ b/example/metro.config.js @@ -0,0 +1,39 @@ +const path = require('path'); +const blacklist = require('metro-config/src/defaults/exclusionList'); +const escape = require('escape-string-regexp'); +const pak = require('../package.json'); + +const root = path.resolve(__dirname, '..'); + +const modules = Object.keys({ + ...pak.peerDependencies, +}); + +module.exports = { + projectRoot: __dirname, + watchFolders: [root], + + // We need to make sure that only one version is loaded for peerDependencies + // So we blacklist them at the root, and alias them to the versions in example's node_modules + resolver: { + blacklistRE: blacklist( + modules.map( + (m) => + new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`) + ) + ), + extraNodeModules: modules.reduce((acc, name) => { + acc[name] = path.join(__dirname, 'node_modules', name); + return acc; + }, {}), + }, + + transformer: { + getTransformOptions: async () => ({ + transform: { + experimentalImportSupport: false, + inlineRequires: false, + }, + }), + }, +}; diff --git a/example/nativebase.config.ts b/example/nativebase.config.ts new file mode 100644 index 0000000000..526ba7a8b0 --- /dev/null +++ b/example/nativebase.config.ts @@ -0,0 +1,8 @@ +import { INativebaseConfig } from 'native-base'; + +export default { + dependencies: { + 'linear-gradient': require('expo-linear-gradient').LinearGradient, + }, + // strictMode: 'warn', +} as INativebaseConfig; diff --git a/example/package.json b/example/package.json new file mode 100644 index 0000000000..0a4209ef64 --- /dev/null +++ b/example/package.json @@ -0,0 +1,65 @@ +{ + "name": "native-base-example", + "description": "Example app for NativeBase", + "version": "0.0.3", + "main": "node_modules/expo/AppEntry.js", + "scripts": { + "start": "expo start", + "android": "expo start --android", + "ios": "expo start --ios", + "web": "expo start --web", + "eject": "expo eject", + "storybook": "start-storybook -p 7007", + "build-storybook": "build-storybook", + "postinstall": "patch-package", + "test": "bash scripts/test.sh", + "update-test": "yarn test -u" + }, + "dependencies": { + "@expo/vector-icons": "^13.0.0", + "@react-native-aria/overlays": "^0.2.9", + "@react-native-async-storage/async-storage": "~1.17.3", + "expo": "^46.0.0", + "expo-font": "~10.2.0", + "expo-linear-gradient": "~11.4.0", + "expo-splash-screen": "~0.16.2", + "expo-status-bar": "~1.4.0", + "formik": "^2.2.6", + "react": "18.0.0", + "react-hook-form": "^6.14.0", + "react-native": "0.69.6", + "react-native-keyboard-aware-scroll-view": "^0.9.4", + "react-native-safe-area-context": "4.3.1", + "react-native-svg": "12.3.0", + "react-native-web": "~0.18.7", + "webpack-dev-server": "3" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@babel/runtime": "^7.12.5", + "@expo/webpack-config": "^0.17.0", + "@storybook/addon-actions": "^5.3", + "@storybook/addon-knobs": "^5.3", + "@storybook/addon-links": "^5.3", + "@storybook/addon-ondevice-actions": "^5.3.23", + "@storybook/addon-ondevice-knobs": "^5.3.23", + "@storybook/addon-storyshots": "6.3", + "@storybook/react-native": "^5.3.23", + "@storybook/react-native-server": "^5.3.23", + "@types/react": "~18.0.0", + "@types/react-dom": "~18.0.0", + "@types/react-native": "~0.69.1", + "babel-loader": "^8.2.2", + "babel-plugin-module-resolver": "^4.0.0", + "core-js": "3.6.5", + "jest": "^26.6.3", + "jest-expo": "^46.0.0", + "metro-react-native-babel-preset": "^0.64.0", + "patch-package": "^6.2.2", + "postinstall-postinstall": "^2.1.0", + "react-dom": "18.0.0", + "react-test-renderer": "17.0.1", + "typescript": "^4.6.3" + }, + "private": false +} diff --git a/example/patches/core-js+3.6.5.patch b/example/patches/core-js+3.6.5.patch new file mode 100644 index 0000000000..449c5073d3 --- /dev/null +++ b/example/patches/core-js+3.6.5.patch @@ -0,0 +1,384 @@ +diff --git a/node_modules/core-js/modules/es.promise.js b/node_modules/core-js/modules/es.promise.js +index b79d2bc..e69de29 100644 +--- a/node_modules/core-js/modules/es.promise.js ++++ b/node_modules/core-js/modules/es.promise.js +@@ -1,379 +0,0 @@ +-'use strict'; +-var $ = require('../internals/export'); +-var IS_PURE = require('../internals/is-pure'); +-var global = require('../internals/global'); +-var getBuiltIn = require('../internals/get-built-in'); +-var NativePromise = require('../internals/native-promise-constructor'); +-var redefine = require('../internals/redefine'); +-var redefineAll = require('../internals/redefine-all'); +-var setToStringTag = require('../internals/set-to-string-tag'); +-var setSpecies = require('../internals/set-species'); +-var isObject = require('../internals/is-object'); +-var aFunction = require('../internals/a-function'); +-var anInstance = require('../internals/an-instance'); +-var classof = require('../internals/classof-raw'); +-var inspectSource = require('../internals/inspect-source'); +-var iterate = require('../internals/iterate'); +-var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); +-var speciesConstructor = require('../internals/species-constructor'); +-var task = require('../internals/task').set; +-var microtask = require('../internals/microtask'); +-var promiseResolve = require('../internals/promise-resolve'); +-var hostReportErrors = require('../internals/host-report-errors'); +-var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +-var perform = require('../internals/perform'); +-var InternalStateModule = require('../internals/internal-state'); +-var isForced = require('../internals/is-forced'); +-var wellKnownSymbol = require('../internals/well-known-symbol'); +-var V8_VERSION = require('../internals/engine-v8-version'); +- +-var SPECIES = wellKnownSymbol('species'); +-var PROMISE = 'Promise'; +-var getInternalState = InternalStateModule.get; +-var setInternalState = InternalStateModule.set; +-var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); +-var PromiseConstructor = NativePromise; +-var TypeError = global.TypeError; +-var document = global.document; +-var process = global.process; +-var $fetch = getBuiltIn('fetch'); +-var newPromiseCapability = newPromiseCapabilityModule.f; +-var newGenericPromiseCapability = newPromiseCapability; +-var IS_NODE = classof(process) == 'process'; +-var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); +-var UNHANDLED_REJECTION = 'unhandledrejection'; +-var REJECTION_HANDLED = 'rejectionhandled'; +-var PENDING = 0; +-var FULFILLED = 1; +-var REJECTED = 2; +-var HANDLED = 1; +-var UNHANDLED = 2; +-var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; +- +-var FORCED = isForced(PROMISE, function () { +- var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); +- if (!GLOBAL_CORE_JS_PROMISE) { +- // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables +- // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 +- // We can't detect it synchronously, so just check versions +- if (V8_VERSION === 66) return true; +- // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test +- if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true; +- } +- // We need Promise#finally in the pure version for preventing prototype pollution +- if (IS_PURE && !PromiseConstructor.prototype['finally']) return true; +- // We can't use @@species feature detection in V8 since it causes +- // deoptimization and performance degradation +- // https://github.com/zloirock/core-js/issues/679 +- if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false; +- // Detect correctness of subclassing with @@species support +- var promise = PromiseConstructor.resolve(1); +- var FakePromise = function (exec) { +- exec(function () { /* empty */ }, function () { /* empty */ }); +- }; +- var constructor = promise.constructor = {}; +- constructor[SPECIES] = FakePromise; +- return !(promise.then(function () { /* empty */ }) instanceof FakePromise); +-}); +- +-var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) { +- PromiseConstructor.all(iterable)['catch'](function () { /* empty */ }); +-}); +- +-// helpers +-var isThenable = function (it) { +- var then; +- return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +-}; +- +-var notify = function (promise, state, isReject) { +- if (state.notified) return; +- state.notified = true; +- var chain = state.reactions; +- microtask(function () { +- var value = state.value; +- var ok = state.state == FULFILLED; +- var index = 0; +- // variable length - can't use forEach +- while (chain.length > index) { +- var reaction = chain[index++]; +- var handler = ok ? reaction.ok : reaction.fail; +- var resolve = reaction.resolve; +- var reject = reaction.reject; +- var domain = reaction.domain; +- var result, then, exited; +- try { +- if (handler) { +- if (!ok) { +- if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state); +- state.rejection = HANDLED; +- } +- if (handler === true) result = value; +- else { +- if (domain) domain.enter(); +- result = handler(value); // can throw +- if (domain) { +- domain.exit(); +- exited = true; +- } +- } +- if (result === reaction.promise) { +- reject(TypeError('Promise-chain cycle')); +- } else if (then = isThenable(result)) { +- then.call(result, resolve, reject); +- } else resolve(result); +- } else reject(value); +- } catch (error) { +- if (domain && !exited) domain.exit(); +- reject(error); +- } +- } +- state.reactions = []; +- state.notified = false; +- if (isReject && !state.rejection) onUnhandled(promise, state); +- }); +-}; +- +-var dispatchEvent = function (name, promise, reason) { +- var event, handler; +- if (DISPATCH_EVENT) { +- event = document.createEvent('Event'); +- event.promise = promise; +- event.reason = reason; +- event.initEvent(name, false, true); +- global.dispatchEvent(event); +- } else event = { promise: promise, reason: reason }; +- if (handler = global['on' + name]) handler(event); +- else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); +-}; +- +-var onUnhandled = function (promise, state) { +- task.call(global, function () { +- var value = state.value; +- var IS_UNHANDLED = isUnhandled(state); +- var result; +- if (IS_UNHANDLED) { +- result = perform(function () { +- if (IS_NODE) { +- process.emit('unhandledRejection', value, promise); +- } else dispatchEvent(UNHANDLED_REJECTION, promise, value); +- }); +- // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should +- state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; +- if (result.error) throw result.value; +- } +- }); +-}; +- +-var isUnhandled = function (state) { +- return state.rejection !== HANDLED && !state.parent; +-}; +- +-var onHandleUnhandled = function (promise, state) { +- task.call(global, function () { +- if (IS_NODE) { +- process.emit('rejectionHandled', promise); +- } else dispatchEvent(REJECTION_HANDLED, promise, state.value); +- }); +-}; +- +-var bind = function (fn, promise, state, unwrap) { +- return function (value) { +- fn(promise, state, value, unwrap); +- }; +-}; +- +-var internalReject = function (promise, state, value, unwrap) { +- if (state.done) return; +- state.done = true; +- if (unwrap) state = unwrap; +- state.value = value; +- state.state = REJECTED; +- notify(promise, state, true); +-}; +- +-var internalResolve = function (promise, state, value, unwrap) { +- if (state.done) return; +- state.done = true; +- if (unwrap) state = unwrap; +- try { +- if (promise === value) throw TypeError("Promise can't be resolved itself"); +- var then = isThenable(value); +- if (then) { +- microtask(function () { +- var wrapper = { done: false }; +- try { +- then.call(value, +- bind(internalResolve, promise, wrapper, state), +- bind(internalReject, promise, wrapper, state) +- ); +- } catch (error) { +- internalReject(promise, wrapper, error, state); +- } +- }); +- } else { +- state.value = value; +- state.state = FULFILLED; +- notify(promise, state, false); +- } +- } catch (error) { +- internalReject(promise, { done: false }, error, state); +- } +-}; +- +-// constructor polyfill +-if (FORCED) { +- // 25.4.3.1 Promise(executor) +- PromiseConstructor = function Promise(executor) { +- anInstance(this, PromiseConstructor, PROMISE); +- aFunction(executor); +- Internal.call(this); +- var state = getInternalState(this); +- try { +- executor(bind(internalResolve, this, state), bind(internalReject, this, state)); +- } catch (error) { +- internalReject(this, state, error); +- } +- }; +- // eslint-disable-next-line no-unused-vars +- Internal = function Promise(executor) { +- setInternalState(this, { +- type: PROMISE, +- done: false, +- notified: false, +- parent: false, +- reactions: [], +- rejection: false, +- state: PENDING, +- value: undefined +- }); +- }; +- Internal.prototype = redefineAll(PromiseConstructor.prototype, { +- // `Promise.prototype.then` method +- // https://tc39.github.io/ecma262/#sec-promise.prototype.then +- then: function then(onFulfilled, onRejected) { +- var state = getInternalPromiseState(this); +- var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); +- reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; +- reaction.fail = typeof onRejected == 'function' && onRejected; +- reaction.domain = IS_NODE ? process.domain : undefined; +- state.parent = true; +- state.reactions.push(reaction); +- if (state.state != PENDING) notify(this, state, false); +- return reaction.promise; +- }, +- // `Promise.prototype.catch` method +- // https://tc39.github.io/ecma262/#sec-promise.prototype.catch +- 'catch': function (onRejected) { +- return this.then(undefined, onRejected); +- } +- }); +- OwnPromiseCapability = function () { +- var promise = new Internal(); +- var state = getInternalState(promise); +- this.promise = promise; +- this.resolve = bind(internalResolve, promise, state); +- this.reject = bind(internalReject, promise, state); +- }; +- newPromiseCapabilityModule.f = newPromiseCapability = function (C) { +- return C === PromiseConstructor || C === PromiseWrapper +- ? new OwnPromiseCapability(C) +- : newGenericPromiseCapability(C); +- }; +- +- if (!IS_PURE && typeof NativePromise == 'function') { +- nativeThen = NativePromise.prototype.then; +- +- // wrap native Promise#then for native async functions +- redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) { +- var that = this; +- return new PromiseConstructor(function (resolve, reject) { +- nativeThen.call(that, resolve, reject); +- }).then(onFulfilled, onRejected); +- // https://github.com/zloirock/core-js/issues/640 +- }, { unsafe: true }); +- +- // wrap fetch result +- if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, { +- // eslint-disable-next-line no-unused-vars +- fetch: function fetch(input /* , init */) { +- return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments)); +- } +- }); +- } +-} +- +-$({ global: true, wrap: true, forced: FORCED }, { +- Promise: PromiseConstructor +-}); +- +-setToStringTag(PromiseConstructor, PROMISE, false, true); +-setSpecies(PROMISE); +- +-PromiseWrapper = getBuiltIn(PROMISE); +- +-// statics +-$({ target: PROMISE, stat: true, forced: FORCED }, { +- // `Promise.reject` method +- // https://tc39.github.io/ecma262/#sec-promise.reject +- reject: function reject(r) { +- var capability = newPromiseCapability(this); +- capability.reject.call(undefined, r); +- return capability.promise; +- } +-}); +- +-$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, { +- // `Promise.resolve` method +- // https://tc39.github.io/ecma262/#sec-promise.resolve +- resolve: function resolve(x) { +- return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x); +- } +-}); +- +-$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, { +- // `Promise.all` method +- // https://tc39.github.io/ecma262/#sec-promise.all +- all: function all(iterable) { +- var C = this; +- var capability = newPromiseCapability(C); +- var resolve = capability.resolve; +- var reject = capability.reject; +- var result = perform(function () { +- var $promiseResolve = aFunction(C.resolve); +- var values = []; +- var counter = 0; +- var remaining = 1; +- iterate(iterable, function (promise) { +- var index = counter++; +- var alreadyCalled = false; +- values.push(undefined); +- remaining++; +- $promiseResolve.call(C, promise).then(function (value) { +- if (alreadyCalled) return; +- alreadyCalled = true; +- values[index] = value; +- --remaining || resolve(values); +- }, reject); +- }); +- --remaining || resolve(values); +- }); +- if (result.error) reject(result.value); +- return capability.promise; +- }, +- // `Promise.race` method +- // https://tc39.github.io/ecma262/#sec-promise.race +- race: function race(iterable) { +- var C = this; +- var capability = newPromiseCapability(C); +- var reject = capability.reject; +- var result = perform(function () { +- var $promiseResolve = aFunction(C.resolve); +- iterate(iterable, function (promise) { +- $promiseResolve.call(C, promise).then(capability.resolve, reject); +- }); +- }); +- if (result.error) reject(result.value); +- return capability.promise; +- } +-}); diff --git a/example/scripts/test.sh b/example/scripts/test.sh new file mode 100644 index 0000000000..2a53c32433 --- /dev/null +++ b/example/scripts/test.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +lowercase(){ + echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/" +} + +OS=`lowercase \`uname\`` + +case "$OS" in + msys*) rmdir /s /q node_modules/react node_modules/react-native ;; + cygwin*) rmdir /s /q node_modules/react node_modules/react-native ;; + *) rm -fR node_modules/react node_modules/react-native ;; +esac + +red=`tput setaf 1` +green=`tput setaf 2` +reset=`tput sgr0` + +#TODO:- run script with nvm use/ facing issues with yarn test working with npm run test +# script to be added +#unset PREFIX +# . ~/.nvm/nvm.sh +# nvm install v14.19.0 +# nvm use + +if [ $# -eq 0 ] + then + jest --config jest-ios.config.js --silent + jest --config jest-android.config.js --silent + NODEVERSION=$(node -v) + echo "you are using node version $NODEVERSION" + if [ $NODEVERSION != "v14.19.0" ] + then + echo "${red}Error! Node module v14.19.0 is not present or nvm is not installed + ${green}If you have node v14.19.0 run 'nvm use' + Else run 'nvm install v14.19.0'${reset} " + else + jest --silent + fi + + else + echo "Tests will be updated!" + jest --config jest-ios.config.js -u --silent + jest --config jest-android.config.js -u --silent + NODEVERSION=$(node -v) + echo "you are using node version $NODEVERSION" + if [ $NODEVERSION != "v14.19.0" ] + then + jest -u --silent + echo "${red}Error! Node module v14.19.0 is not present or nvm is not installed + ${green}If you have node v14.19.0 run 'nvm use' + Else run 'nvm install v14.19.0'${reset} " + else + jest -u --silent + fi + +fi + +yarn install --check-files \ No newline at end of file diff --git a/example/storybook/addons.ts b/example/storybook/addons.ts new file mode 100644 index 0000000000..3db392b445 --- /dev/null +++ b/example/storybook/addons.ts @@ -0,0 +1,4 @@ +import '@storybook/addon-actions/register'; +import '@storybook/addon-links/register'; +import '@storybook/addon-knobs/register'; +import '@storybook/addon-ondevice-actions/register'; diff --git a/example/storybook/index.ts b/example/storybook/index.ts new file mode 100644 index 0000000000..b7840e72a8 --- /dev/null +++ b/example/storybook/index.ts @@ -0,0 +1,34 @@ +// if you use expo remove this line +import { AppRegistry } from 'react-native'; + +import { + getStorybookUI, + configure, + addDecorator, +} from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; + +import './rn-addons'; +import AsyncStorage from '@react-native-async-storage/async-storage'; + +// enables knobs for all stories +addDecorator(withKnobs); + +// import stories +configure(() => { + require('./stories'); +}, module); + +// Refer to https://github.com/storybookjs/storybook/tree/master/app/react-native#start-command-parameters +// To find allowed options for getStorybookUI +const StorybookUIRoot = getStorybookUI({ + // DOC: Uncomment this to get normal app view + // onDeviceUI: false, + asyncStorage: AsyncStorage, +}); + +// If you are using React Native vanilla and after installation you don't see your app name here, write it manually. +// If you use Expo you should remove this line. +AppRegistry.registerComponent('%APP_NAME%', () => StorybookUIRoot); + +export default StorybookUIRoot; diff --git a/example/storybook/rn-addons.ts b/example/storybook/rn-addons.ts new file mode 100644 index 0000000000..4d30f92317 --- /dev/null +++ b/example/storybook/rn-addons.ts @@ -0,0 +1,2 @@ +import '@storybook/addon-ondevice-actions/register'; +import '@storybook/addon-ondevice-knobs/register'; diff --git a/example/storybook/stories/community-integrations/Formik/Basic.tsx b/example/storybook/stories/community-integrations/Formik/Basic.tsx new file mode 100644 index 0000000000..c73b9fe422 --- /dev/null +++ b/example/storybook/stories/community-integrations/Formik/Basic.tsx @@ -0,0 +1,81 @@ +import { Input, Button, FormControl } from 'native-base'; +import React from 'react'; +import { useFormik, FormikErrors } from 'formik'; + +type IFormFields = { + firstName?: string; + lastName?: string; + email?: string; +}; + +function validateEmail(email: string) { + var re = /\S+@\S+\.\S+/; + return re.test(email); +} + +export const Example = () => { + const formik = useFormik({ + initialValues: { + firstName: '', + lastName: '', + email: '', + }, + onSubmit: async (values) => { + console.log('Handle submit', values); + }, + validate: (values) => { + let errors: FormikErrors = {}; + if (!values.firstName) { + errors.firstName = 'Required'; + } else if (values.firstName.length > 15) { + errors.firstName = 'Max allowed characters 15'; + } + + if (!values.email) { + errors.email = 'Required'; + } else if (!validateEmail(values.email)) { + errors.email = 'Please enter a valid email address'; + } + + return errors; + }, + }); + const { handleChange, handleSubmit, errors, values } = formik; + + console.log(values); + + return ( + <> + + First Name + + {errors.firstName} + + + + Last Name + + + + + Email + + {errors.email} + + + + + ); +}; diff --git a/example/storybook/stories/community-integrations/Formik/index.tsx b/example/storybook/stories/community-integrations/Formik/index.tsx new file mode 100644 index 0000000000..8ae17fb447 --- /dev/null +++ b/example/storybook/stories/community-integrations/Formik/index.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../components/Wrapper'; +import { Example as Basic } from './Basic'; + +storiesOf('Formik', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ); diff --git a/example/storybook/stories/community-integrations/ReactHookForm/DemoForm.tsx b/example/storybook/stories/community-integrations/ReactHookForm/DemoForm.tsx new file mode 100644 index 0000000000..ddd7747762 --- /dev/null +++ b/example/storybook/stories/community-integrations/ReactHookForm/DemoForm.tsx @@ -0,0 +1,227 @@ +import { + VStack, + Input, + Button, + FormControl, + Heading, + Box, + Text, + Divider, + HStack, + TextArea, + Avatar, + Select, + Checkbox, + Icon, +} from 'native-base'; +import React from 'react'; +import { Ionicons, EvilIcons, AntDesign } from '@expo/vector-icons'; + +export const Example = () => { + const [language, setLanguage] = React.useState('eng'); + const [currency, setCurrency] = React.useState('usd'); + return ( + + + Account Settings + + + + + + + Personal Info + + + + + + + Name + + + + + + Email + + + + + + Bio + + + + + + + + ); +}; diff --git a/example/storybook/stories/components/Wrapper.tsx b/example/storybook/stories/components/Wrapper.tsx new file mode 100644 index 0000000000..3e05363671 --- /dev/null +++ b/example/storybook/stories/components/Wrapper.tsx @@ -0,0 +1,194 @@ +import React from 'react'; +import { + Box, + NativeBaseProvider, + useColorMode, + IconButton, + MoonIcon, + ColorMode, + useColorModeValue, + Tooltip, + SunIcon, + extendTheme, + Button, + Input, +} from 'native-base'; +import type { StorageManager } from 'native-base'; +import AsyncStorage from '@react-native-async-storage/async-storage'; + +import Config from '../../../nativebase.config'; + +const myTheme = extendTheme({ + space: { + mySpace: '29px', + }, + colors: { + blue1: { + '100': 'blue', + }, + }, + + components: { + Link: { + sizes: { + mysize: 10, + }, + }, + Button: { + variants: { + myBtn: { + padding: 10, + }, + myNewButton: ({ myPaddingX }: { myPaddingX: number }) => { + return { + padding: myPaddingX, + }; + }, + + // myNewButton1: (props: any) => { + // return { + // padding: props.padding, + // }; + // }, + }, + sizes: { + newsize: ({ mySize }: { mySize: number }) => { + return { + padding: mySize, + }; + }, + }, + }, + + Input: { + variants: { + newsize: ({ mySize }: { mySize: number }) => { + return { + padding: mySize, + }; + }, + + newsize1: (props: any) => { + return { + padding: props.padding, + }; + }, + }, + sizes: { + 'my-size': { + padding: 2, + }, + }, + }, + + Checkbox: { + sizes: { + myBtn: { + padding: 10, + }, + myNewButton: ({ myPadding }: { myPadding: any }) => { + return { + padding: myPadding, + }; + }, + }, + }, + + Box: { + variants: { + myBtn: { + padding: 10, + }, + }, + }, + }, +}); + +type MyThemeType = typeof myTheme; +declare module 'native-base' { + interface ICustomTheme extends MyThemeType {} +} + +function MyWrapper({ children }: any) { + const { colorMode, toggleColorMode } = useColorMode(); + + const bgColor = useColorModeValue(`gray.50`, `gray.800`); + + return ( + + + : } + size="lg" + /> + + {children} + + ); +} + +export function RenderTestButton() { + const [state, setState] = React.useState(1); + return ( + + + + + + + ); +}; diff --git a/example/storybook/stories/components/basic/KeyboardAvoidingView/Kitchensink-Basic.tsx b/example/storybook/stories/components/basic/KeyboardAvoidingView/Kitchensink-Basic.tsx new file mode 100644 index 0000000000..8b2bd8dc5b --- /dev/null +++ b/example/storybook/stories/components/basic/KeyboardAvoidingView/Kitchensink-Basic.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { + Input, + KeyboardAvoidingView, + Text, + Button, + VStack, + useBreakpointValue, +} from 'native-base'; +import { Platform } from 'react-native'; + +export const Example = () => { + const isLargeScreen = useBreakpointValue({ + base: false, + sm: false, + md: false, + lg: true, + }); + return ( + + {isLargeScreen ? ( + Please see the example in your mobile to observe the effect + ) : ( + + + Header + + + + + )} + + ); +}; diff --git a/example/storybook/stories/components/basic/KeyboardAvoidingView/index.tsx b/example/storybook/stories/components/basic/KeyboardAvoidingView/index.tsx new file mode 100644 index 0000000000..fc47a40de2 --- /dev/null +++ b/example/storybook/stories/components/basic/KeyboardAvoidingView/index.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from '../../Wrapper'; +import { Example as Basic } from './Basic'; + +storiesOf('KeyboardAvoidingView', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ); diff --git a/example/storybook/stories/components/basic/ScrollView/Basic.tsx b/example/storybook/stories/components/basic/ScrollView/Basic.tsx new file mode 100644 index 0000000000..cb7c23fced --- /dev/null +++ b/example/storybook/stories/components/basic/ScrollView/Basic.tsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { ScrollView, VStack, Center, useTheme, Heading } from 'native-base'; +export const Example = () => { + const { colors } = useTheme(); + return ( + +

+ Cyan +
+ + {Object.keys(colors.cyan).map((key, index) => { + if (index >= 1 && index <= 5) + return ( +
+ {key} +
+ ); + })} +
+
+ Yellow +
+ + {Object.keys(colors.cyan).map((key, index) => { + if (index >= 1 && index <= 5) + return ( +
+ {key} +
+ ); + })} +
+
+ Violet +
+ + {Object.keys(colors.violet).map((key, index) => { + if (index >= 1 && index <= 5) + return ( +
+ {key} +
+ ); + })} +
+ + ); +}; diff --git a/example/storybook/stories/components/basic/ScrollView/index.tsx b/example/storybook/stories/components/basic/ScrollView/index.tsx new file mode 100644 index 0000000000..a375200715 --- /dev/null +++ b/example/storybook/stories/components/basic/ScrollView/index.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import { Example as Basic } from './Basic'; + +storiesOf('ScrollView', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ); diff --git a/example/storybook/stories/components/basic/SectionList/Basic.tsx b/example/storybook/stories/components/basic/SectionList/Basic.tsx new file mode 100644 index 0000000000..6df3dbb685 --- /dev/null +++ b/example/storybook/stories/components/basic/SectionList/Basic.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import { SectionList, Heading, Center } from 'native-base'; +export const Example = () => { + const data = [ + { + title: 'Cyan', + data: ['cyan.100', 'cyan.200', 'cyan.300', 'cyan.400', 'cyan.500'], + }, + { + title: 'Yellow', + data: [ + 'yellow.100', + 'yellow.200', + 'yellow.300', + 'yellow.400', + 'yellow.500', + ], + }, + { + title: 'Violet', + data: [ + 'violet.100', + 'violet.200', + 'violet.300', + 'violet.400', + 'violet.500', + ], + }, + ]; + return ( +
+ item + index} + renderItem={({ item }) => ( +
+ {item.split('.')[1]} +
+ )} + renderSectionHeader={({ section: { title } }) => ( +
+ + {title} + +
+ )} + /> +
+ ); +}; diff --git a/example/storybook/stories/components/basic/SectionList/index.tsx b/example/storybook/stories/components/basic/SectionList/index.tsx new file mode 100644 index 0000000000..82eb464993 --- /dev/null +++ b/example/storybook/stories/components/basic/SectionList/index.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import { Example as Basic } from './Basic'; + +storiesOf('SectionList', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ); diff --git a/example/storybook/stories/components/basic/StatusBar/Basic.tsx b/example/storybook/stories/components/basic/StatusBar/Basic.tsx new file mode 100644 index 0000000000..67a0ec2a79 --- /dev/null +++ b/example/storybook/stories/components/basic/StatusBar/Basic.tsx @@ -0,0 +1,25 @@ +import React, { useState } from 'react'; +import { StatusBar, Box, Text, Button } from 'native-base'; + +export const Example = () => { + const [hidden, setHidden] = useState(false); + const changeStatusBarVisibility = () => setHidden(!hidden); + return ( + + + ); +}; diff --git a/example/storybook/stories/components/basic/StatusBar/index.tsx b/example/storybook/stories/components/basic/StatusBar/index.tsx new file mode 100644 index 0000000000..c0c4c322f9 --- /dev/null +++ b/example/storybook/stories/components/basic/StatusBar/index.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from '../../Wrapper'; +import { Example as Basic } from './Basic'; + +storiesOf('StatusBar', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ); diff --git a/example/storybook/stories/components/basic/View/Basic.tsx b/example/storybook/stories/components/basic/View/Basic.tsx new file mode 100644 index 0000000000..e11ac99ed7 --- /dev/null +++ b/example/storybook/stories/components/basic/View/Basic.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { View, Text, Heading } from 'native-base'; +export const Example = () => { + return ( + + + A component library for the{' '} + React Ecosystem + + + NativeBase is a simple, modular and accessible component library that + gives you building blocks to build you React applications. + + + ); +}; diff --git a/example/storybook/stories/components/basic/View/index.tsx b/example/storybook/stories/components/basic/View/index.tsx new file mode 100644 index 0000000000..ade68346dc --- /dev/null +++ b/example/storybook/stories/components/basic/View/index.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from '../../Wrapper'; +import { Example as Basic } from './Basic'; + +storiesOf('View', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ); diff --git a/example/storybook/stories/components/composites/Accordion/AccessingInternalState.tsx b/example/storybook/stories/components/composites/Accordion/AccessingInternalState.tsx new file mode 100644 index 0000000000..c219d770f6 --- /dev/null +++ b/example/storybook/stories/components/composites/Accordion/AccessingInternalState.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { Accordion, Box, Icon } from 'native-base'; +import { MaterialCommunityIcons } from '@expo/vector-icons'; + +export const Example = () => { + return ( + + + + + Section 1 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + {({ isExpanded }: any) => ( + <> + + {isExpanded ? 'Fire' : 'Snow'} + {isExpanded ? ( + + ) : ( + + )} + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + + + )} + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Accordion/Basic.tsx b/example/storybook/stories/components/composites/Accordion/Basic.tsx new file mode 100644 index 0000000000..c4407ee036 --- /dev/null +++ b/example/storybook/stories/components/composites/Accordion/Basic.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { Accordion, Box } from 'native-base'; +export const Example = () => { + return ( + + + + + Section 1 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 2 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 3 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Accordion/DefaultIndex.tsx b/example/storybook/stories/components/composites/Accordion/DefaultIndex.tsx new file mode 100644 index 0000000000..2cb83bf887 --- /dev/null +++ b/example/storybook/stories/components/composites/Accordion/DefaultIndex.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { Accordion, Box } from 'native-base'; +export const Example = () => { + return ( + + + + + Section 1 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 2 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 3 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Accordion/ExpandedStyle.tsx b/example/storybook/stories/components/composites/Accordion/ExpandedStyle.tsx new file mode 100644 index 0000000000..8e03905be6 --- /dev/null +++ b/example/storybook/stories/components/composites/Accordion/ExpandedStyle.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { Accordion, Box } from 'native-base'; +export const Example = () => { + return ( + + + + + Click me to see a different style + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + I'm Disabled 😢 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Accordion/Multiple.tsx b/example/storybook/stories/components/composites/Accordion/Multiple.tsx new file mode 100644 index 0000000000..148e057949 --- /dev/null +++ b/example/storybook/stories/components/composites/Accordion/Multiple.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { Accordion, Box } from 'native-base'; +export const Example = () => { + return ( + + + + + Section 1 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 2 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 3 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Accordion/Playground.tsx b/example/storybook/stories/components/composites/Accordion/Playground.tsx new file mode 100644 index 0000000000..56de355795 --- /dev/null +++ b/example/storybook/stories/components/composites/Accordion/Playground.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import { Accordion, Box } from 'native-base'; +import { boolean } from '@storybook/addon-knobs'; +export const Example = () => { + return ( + + + + + Section 1 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 2 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 3 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Accordion/Toggle.tsx b/example/storybook/stories/components/composites/Accordion/Toggle.tsx new file mode 100644 index 0000000000..feec7eeada --- /dev/null +++ b/example/storybook/stories/components/composites/Accordion/Toggle.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { Accordion, Box } from 'native-base'; +export const Example = () => { + return ( + + + + + Section 1 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 2 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + Section 3 title + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Accordion/index.tsx b/example/storybook/stories/components/composites/Accordion/index.tsx new file mode 100644 index 0000000000..1f990a808f --- /dev/null +++ b/example/storybook/stories/components/composites/Accordion/index.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import Usage from './Basic'; +import Playground from './Playground'; +import Multiple from './Multiple'; +import AccessingInternalState from './AccessingInternalState'; +import ExpandedStyle from './ExpandedStyle'; +import Toggle from './Toggle'; +import DefaultIndex from './DefaultIndex'; + +storiesOf('Accordion', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Playground', () => ) + .add('Usage', () => ) + .add('Multiple', () => ) + .add('Default Index', () => ) + .add('Toggle', () => ) + .add('Expanded Style', () => ) + + .add('Accessing Internal State', () => ); diff --git a/example/storybook/stories/components/composites/Actionsheet/Composition.tsx b/example/storybook/stories/components/composites/Actionsheet/Composition.tsx new file mode 100644 index 0000000000..a611aba99a --- /dev/null +++ b/example/storybook/stories/components/composites/Actionsheet/Composition.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { + Button, + Actionsheet, + useDisclose, + Box, + Text, + Center, +} from 'native-base'; + +export function Example() { + const { isOpen, onOpen, onClose } = useDisclose(); + return ( +
+ + + + + + Albums + + + Delete + Share + Play + Favourite + Cancel + + +
+ ); +} diff --git a/example/storybook/stories/components/composites/Actionsheet/CustomBackdrop.tsx b/example/storybook/stories/components/composites/Actionsheet/CustomBackdrop.tsx new file mode 100644 index 0000000000..445fbe8f4a --- /dev/null +++ b/example/storybook/stories/components/composites/Actionsheet/CustomBackdrop.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { Button, Actionsheet, useDisclose, Box, Text } from 'native-base'; + +export function Example() { + const { isOpen, onOpen, onClose } = useDisclose(); + return ( + <> + + + + + + Albums + + + Delete + Share + Play + Favourite + Cancel + + + + ); +} diff --git a/example/storybook/stories/components/composites/Actionsheet/DisableOverlay.tsx b/example/storybook/stories/components/composites/Actionsheet/DisableOverlay.tsx new file mode 100644 index 0000000000..c1e630e640 --- /dev/null +++ b/example/storybook/stories/components/composites/Actionsheet/DisableOverlay.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { + Button, + Actionsheet, + useDisclose, + Box, + Text, + Center, +} from 'native-base'; + +export function Example() { + const { isOpen, onOpen, onClose } = useDisclose(); + return ( +
+ + + + + + + Albums + + + Delete + Share + Play + Favourite + Cancel + + +
+ ); +} diff --git a/example/storybook/stories/components/composites/Actionsheet/Icon.tsx b/example/storybook/stories/components/composites/Actionsheet/Icon.tsx new file mode 100644 index 0000000000..ce14505555 --- /dev/null +++ b/example/storybook/stories/components/composites/Actionsheet/Icon.tsx @@ -0,0 +1,59 @@ +import React from 'react'; +import { + Button, + Actionsheet, + useDisclose, + Icon, + Box, + Text, + Center, +} from 'native-base'; +import { Path } from 'react-native-svg'; +import { MaterialIcons, Ionicons } from '@expo/vector-icons'; + +export function Example() { + const { isOpen, onOpen, onClose } = useDisclose(); + return ( +
+ + + + + + Albums + + + } + > + Delete + + } + > + Share + + } + > + Play + + } + > + Favourite + + + + + } + > + Cancel + + + +
+ ); +} diff --git a/example/storybook/stories/components/composites/Actionsheet/Usage.tsx b/example/storybook/stories/components/composites/Actionsheet/Usage.tsx new file mode 100644 index 0000000000..8c85ab566d --- /dev/null +++ b/example/storybook/stories/components/composites/Actionsheet/Usage.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { + Button, + Actionsheet, + useDisclose, + Text, + Box, + Center, +} from 'native-base'; + +export function Example() { + const { isOpen, onOpen, onClose } = useDisclose(); + return ( +
+ + + + + + Albums + + + Delete + Share + Play + Favourite + Cancel + + +
+ ); +} diff --git a/example/storybook/stories/components/composites/Actionsheet/index.tsx b/example/storybook/stories/components/composites/Actionsheet/index.tsx new file mode 100644 index 0000000000..bceb8ea3c5 --- /dev/null +++ b/example/storybook/stories/components/composites/Actionsheet/index.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from '../../Wrapper'; +import { Example as Icon } from './Icon'; +import { Example as Usage } from './Usage'; +import { Example as Composition } from './Composition'; +import { Example as DisableOverlay } from './DisableOverlay'; +import { Example as CustomBackdrop } from './CustomBackdrop'; + +storiesOf('Actionsheet', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Usage', () => ) + .add('Icon', () => ) + .add('DisableOverlay', () => ) + .add('Composition', () => ) + .add('Custom Backdrop', () => ); diff --git a/example/storybook/stories/components/composites/Alert/action.tsx b/example/storybook/stories/components/composites/Alert/action.tsx new file mode 100644 index 0000000000..edbe0f6610 --- /dev/null +++ b/example/storybook/stories/components/composites/Alert/action.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { + Alert, + Collapse, + Button, + VStack, + HStack, + IconButton, + CloseIcon, + Box, + Text, +} from 'native-base'; + +export function Example() { + const [show, setShow] = React.useState(true); + return ( + + + + + + + + + Please try again later! + + + } + _icon={{ color: 'coolGray.600' }} + onPress={() => setShow(false)} + /> + + + Your coupon could not be processed at this time. + + + + + + + ); +} diff --git a/example/storybook/stories/components/composites/Alert/basic.tsx b/example/storybook/stories/components/composites/Alert/basic.tsx new file mode 100644 index 0000000000..6c33323686 --- /dev/null +++ b/example/storybook/stories/components/composites/Alert/basic.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { + Alert, + VStack, + HStack, + IconButton, + CloseIcon, + Box, + Heading, + Center, +} from 'native-base'; + +export const Example = () => { + return ( +
+ + + + + + + We are going live in July! + + + } + _icon={{ color: 'coolGray.600' }} + /> + + + We are happy to announce that we are going live on July 28th. Get + ready! + + + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/Alert/colorScheme.tsx b/example/storybook/stories/components/composites/Alert/colorScheme.tsx new file mode 100644 index 0000000000..82dbb49ef5 --- /dev/null +++ b/example/storybook/stories/components/composites/Alert/colorScheme.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { + Stack, + Alert, + Text, + HStack, + VStack, + IconButton, + Box, + CloseIcon, +} from 'native-base'; + +export function Example() { + return ( + + {['red', 'orange', 'pink'].map((key: any) => ( + + + + + + + Please try again later! + + + } + _icon={{ color: 'coolGray.600' }} + /> + + + Your coupon could not be processed at this time. + + + + ))} + + ); +} diff --git a/example/storybook/stories/components/composites/Alert/composition.tsx b/example/storybook/stories/components/composites/Alert/composition.tsx new file mode 100644 index 0000000000..57ec7809e9 --- /dev/null +++ b/example/storybook/stories/components/composites/Alert/composition.tsx @@ -0,0 +1,71 @@ +import React from 'react'; +import { + Alert, + Box, + IconButton, + CloseIcon, + HStack, + VStack, + Text, + Center, +} from 'native-base'; + +export function Example() { + return ( +
+ + + + + + + + Application received! + + + } + _icon={{ color: 'coolGray.600' }} + /> + + + Your application has been received. We will review your + application and respond within the next 48 hours. + + + + + + + + Application received! + + + + Your application has been received. We will review your + application and respond within the next 48 hours. + + + + +
+ ); +} diff --git a/example/storybook/stories/components/composites/Alert/index.tsx b/example/storybook/stories/components/composites/Alert/index.tsx new file mode 100644 index 0000000000..1636da9a68 --- /dev/null +++ b/example/storybook/stories/components/composites/Alert/index.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +// import { Example as Playground } from './knobEnabled'; +import { Example as Composition } from './composition'; +import { Example as Basic } from './basic'; +import { Example as Usage } from './usage'; +import { Example as Variant } from './variant'; +import { Example as Status } from './status'; +import { Example as ColorScheme } from './colorScheme'; +import { Example as Action } from './action'; + +storiesOf('Alert', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + // .add('Playground', () => ) + .add('Basic', () => ) + .add('Usage', () => ) + .add('Status', () => ) + .add('ColorScheme', () => ) + .add('Variant', () => ) + .add('Composition', () => ) + .add('action', () => ); diff --git a/example/storybook/stories/components/composites/Alert/knobEnabled.tsx b/example/storybook/stories/components/composites/Alert/knobEnabled.tsx new file mode 100644 index 0000000000..ec96e36771 --- /dev/null +++ b/example/storybook/stories/components/composites/Alert/knobEnabled.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { Alert, Box, CloseIcon, IconButton, Text } from 'native-base'; +import { select } from '@storybook/addon-knobs'; + +export const Example = () => { + return ( + + } />} + actionProps={{ alignSelf: 'center' }} + > + + Error Alert + Description + + + ); +}; diff --git a/example/storybook/stories/components/composites/Alert/status.tsx b/example/storybook/stories/components/composites/Alert/status.tsx new file mode 100644 index 0000000000..011ab17017 --- /dev/null +++ b/example/storybook/stories/components/composites/Alert/status.tsx @@ -0,0 +1,57 @@ +import React from 'react'; +import { + Stack, + Alert, + IconButton, + HStack, + VStack, + CloseIcon, + Text, +} from 'native-base'; + +export function Example() { + const statusArray = [ + { + status: 'success', + title: 'Selection successfully moved!', + }, + { + status: 'error', + title: 'Please try again later!', + }, + { + status: 'info', + title: 'We are going live in July!', + }, + { + status: 'warning', + title: 'Poor internet connection.', + }, + ]; + return ( + + {statusArray.map((status) => { + return ( + + + + + + + {status.title} + + + } + _icon={{ color: 'coolGray.600' }} + /> + + + + ); + })} + + ); +} diff --git a/example/storybook/stories/components/composites/Alert/usage.tsx b/example/storybook/stories/components/composites/Alert/usage.tsx new file mode 100644 index 0000000000..a19a2cc0e8 --- /dev/null +++ b/example/storybook/stories/components/composites/Alert/usage.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { + Alert, + VStack, + HStack, + IconButton, + CloseIcon, + Box, + Text, + Center, +} from 'native-base'; +export function Example() { + return ( +
+ + + + + + + We are going live in July! + + + } + _icon={{ color: 'coolGray.600' }} + /> + + + We are happy to announce that we are going live on July 28th. Get + ready! + + + +
+ ); +} diff --git a/example/storybook/stories/components/composites/Alert/variant.tsx b/example/storybook/stories/components/composites/Alert/variant.tsx new file mode 100644 index 0000000000..476560f06f --- /dev/null +++ b/example/storybook/stories/components/composites/Alert/variant.tsx @@ -0,0 +1,84 @@ +import React from 'react'; +import { + Stack, + Alert, + HStack, + VStack, + Text, + Divider, + ScrollView, +} from 'native-base'; + +export function Example() { + const getTextColor = ( + variant: + | 'solid' + | 'left-accent' + | 'top-accent' + | 'outline' + | 'subtle' + | 'outline-light' + ) => { + switch (variant) { + case 'left-accent': + case 'top-accent': + case 'subtle': + return 'coolGray.800'; + case 'solid': + return 'warmGray.50'; + } + }; + + return ( + + + {[ + 'solid', + 'left-accent', + 'top-accent', + 'outline', + 'subtle', + 'outline-light', + ].map((key: any) => { + return ( + <> + + {key} + + + + + + + + Selection successfully moved! + + + + + + + + ); + })} + + + ); +} diff --git a/example/storybook/stories/components/composites/AlertDialog/Basic.tsx b/example/storybook/stories/components/composites/AlertDialog/Basic.tsx new file mode 100644 index 0000000000..58c1076e90 --- /dev/null +++ b/example/storybook/stories/components/composites/AlertDialog/Basic.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { AlertDialog, Button, Center } from 'native-base'; + +export const Example = () => { + const [isOpen, setIsOpen] = React.useState(false); + const onClose = () => setIsOpen(false); + const cancelRef = React.useRef(null); + return ( +
+ + + + + Delete Customer + + This will remove all data relating to Alex. This action cannot be + reversed. Deleted data can not be recovered. + + + + + + + + + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/AlertDialog/Transition.tsx b/example/storybook/stories/components/composites/AlertDialog/Transition.tsx new file mode 100644 index 0000000000..d6bde8658b --- /dev/null +++ b/example/storybook/stories/components/composites/AlertDialog/Transition.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { AlertDialog, Button, Center } from 'native-base'; +import type { TouchableOpacity } from 'react-native'; + +export const Example = () => { + const [isOpen, setIsOpen] = React.useState(false); + const onClose = () => setIsOpen(false); + const cancelRef = React.useRef(null); + return ( +
+ + + + Discard Changes? + + Are you sure you want to discard all of your notes? 44 words will be + deleted. + + + + + + + + + + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/AlertDialog/index.tsx b/example/storybook/stories/components/composites/AlertDialog/index.tsx new file mode 100644 index 0000000000..9e53514330 --- /dev/null +++ b/example/storybook/stories/components/composites/AlertDialog/index.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import { Example as Basic } from './Basic'; +import { Example as Transition } from './Transition'; + +storiesOf('AlertDialog', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ) + .add('Transition', () => ); diff --git a/example/storybook/stories/components/composites/AppBar/AppBarExamples.tsx b/example/storybook/stories/components/composites/AppBar/AppBarExamples.tsx new file mode 100644 index 0000000000..c4e9b246a1 --- /dev/null +++ b/example/storybook/stories/components/composites/AppBar/AppBarExamples.tsx @@ -0,0 +1,171 @@ +import React from 'react'; +import { + AppBar, + IconButton, + Icon, + Text, + HStack, + VStack, + Button, +} from 'native-base'; +import { TouchableOpacity } from 'react-native'; + +export default function Examples() { + return ( + + + + + + + ); +} + +function Material() { + return ( + + + + + + + + + Title + + + Subtitle + + + + + + + + + + + ); +} + +function IOSLike() { + return ( + + + + + + + Back + + + + + + + + Header + + + + + + + + ); +} + +function Customized() { + return ( + + + } + /> + + + + Library + + + + } + /> + + + ); +} + +function CustomizedWithBorder() { + return ( + + + } /> + + + + Home + + + + } /> + } + /> + } + /> + + + ); +} + +const LeftArrowIconButton = () => { + return ( + + } + /> + ); +}; + +const HeartIcon = () => { + return ( + + } + /> + ); +}; +const SearchIcon = () => { + return ( + } + /> + ); +}; +const MoreIcon = () => { + return } />; +}; diff --git a/example/storybook/stories/components/composites/AppBar/index.tsx b/example/storybook/stories/components/composites/AppBar/index.tsx new file mode 100644 index 0000000000..dcbccee470 --- /dev/null +++ b/example/storybook/stories/components/composites/AppBar/index.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; + +import Examples from './AppBarExamples'; + +storiesOf('AppBar', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Examples', () => ); diff --git a/example/storybook/stories/components/composites/AspectRatio/Basic.tsx b/example/storybook/stories/components/composites/AspectRatio/Basic.tsx new file mode 100644 index 0000000000..1559884536 --- /dev/null +++ b/example/storybook/stories/components/composites/AspectRatio/Basic.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { AspectRatio, Box } from 'native-base'; + +export const Example = () => { + return ( + + + + ); +}; diff --git a/example/storybook/stories/components/composites/AspectRatio/EmbedImage.tsx b/example/storybook/stories/components/composites/AspectRatio/EmbedImage.tsx new file mode 100644 index 0000000000..c9ee1220d5 --- /dev/null +++ b/example/storybook/stories/components/composites/AspectRatio/EmbedImage.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { AspectRatio, Image } from 'native-base'; +export const Example = () => { + return ( + + Picture of a Flower + + ); +}; diff --git a/example/storybook/stories/components/composites/AspectRatio/index.tsx b/example/storybook/stories/components/composites/AspectRatio/index.tsx new file mode 100644 index 0000000000..adc591c959 --- /dev/null +++ b/example/storybook/stories/components/composites/AspectRatio/index.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import { Example as Basic } from './Basic'; +import { Example as EmbedImage } from './EmbedImage'; + +storiesOf('AspectRatio', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ) + .add('EmbedImage', () => ); diff --git a/example/storybook/stories/components/composites/Avatar/AvatarBadge.tsx b/example/storybook/stories/components/composites/Avatar/AvatarBadge.tsx new file mode 100644 index 0000000000..28a55ba3a9 --- /dev/null +++ b/example/storybook/stories/components/composites/Avatar/AvatarBadge.tsx @@ -0,0 +1,75 @@ +import React from 'react'; +import { Avatar, VStack } from 'native-base'; + +export const Example = () => { + return ( + + + NB + + + + NB + + + + NB + + + + NB + + + + NB + + + + NB + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Avatar/AvatarGroup.tsx b/example/storybook/stories/components/composites/Avatar/AvatarGroup.tsx new file mode 100644 index 0000000000..56fdc11b71 --- /dev/null +++ b/example/storybook/stories/components/composites/Avatar/AvatarGroup.tsx @@ -0,0 +1,83 @@ +import React from 'react'; +import { Avatar, Center } from 'native-base'; + +export const Example = () => { + return ( +
+ + + AJ + + + TE + + + JB + + + TS + + + AJ + + + TE + + + JB + + + TS + + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/Avatar/Fallback.tsx b/example/storybook/stories/components/composites/Avatar/Fallback.tsx new file mode 100644 index 0000000000..ad5782c2b0 --- /dev/null +++ b/example/storybook/stories/components/composites/Avatar/Fallback.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { Avatar, HStack } from 'native-base'; + +export const Example = () => { + return ( + + + RS + + + MR + + + -- + + + ); +}; diff --git a/example/storybook/stories/components/composites/Avatar/index.tsx b/example/storybook/stories/components/composites/Avatar/index.tsx new file mode 100644 index 0000000000..153c1fd9f0 --- /dev/null +++ b/example/storybook/stories/components/composites/Avatar/index.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import { Example as Playground } from './knobEnabled'; +import { Example as Usage } from './usage'; +import { Example as Size } from './size'; +import { Example as Fallback } from './Fallback'; +import { Example as AvatarBadge } from './AvatarBadge'; +import { Example as AvatarGroup } from './AvatarGroup'; + +storiesOf('Avatar', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Playground', () => ) + .add('Usage', () => ) + .add('Size', () => ) + .add('Fallback', () => ) + .add('AvatarBadge', () => ) + .add('AvatarGroup', () => ); diff --git a/example/storybook/stories/components/composites/Avatar/knobEnabled.tsx b/example/storybook/stories/components/composites/Avatar/knobEnabled.tsx new file mode 100644 index 0000000000..8f12bc454c --- /dev/null +++ b/example/storybook/stories/components/composites/Avatar/knobEnabled.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { Avatar } from 'native-base'; +import { select, number, text } from '@storybook/addon-knobs'; + +export const Example = () => { + return ( + + {text('name', 'NB')} + + + ); +}; diff --git a/example/storybook/stories/components/composites/Avatar/size.tsx b/example/storybook/stories/components/composites/Avatar/size.tsx new file mode 100644 index 0000000000..05be0cb0e5 --- /dev/null +++ b/example/storybook/stories/components/composites/Avatar/size.tsx @@ -0,0 +1,77 @@ +import React from 'react'; +import { Avatar, VStack, Center } from 'native-base'; + +export const Example = () => { + return ( +
+ + + AJ + + + HS + + + RS + + + AK + + + GG + + + RB + + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/Avatar/usage.tsx b/example/storybook/stories/components/composites/Avatar/usage.tsx new file mode 100644 index 0000000000..fca94a902b --- /dev/null +++ b/example/storybook/stories/components/composites/Avatar/usage.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { Avatar, HStack } from 'native-base'; + +export const Example = () => { + return ( + + + AJ + + + TE + + + JB + + + TS + + + ); +}; diff --git a/example/storybook/stories/components/composites/Badge/color.tsx b/example/storybook/stories/components/composites/Badge/color.tsx new file mode 100644 index 0000000000..a6ae32772c --- /dev/null +++ b/example/storybook/stories/components/composites/Badge/color.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { Badge, HStack } from 'native-base'; + +export function Example() { + return ( + + SUCCESS + DANGER + INFO + DARK + + ); +} diff --git a/example/storybook/stories/components/composites/Badge/composition.tsx b/example/storybook/stories/components/composites/Badge/composition.tsx new file mode 100644 index 0000000000..f5e39afdba --- /dev/null +++ b/example/storybook/stories/components/composites/Badge/composition.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Badge, Button, VStack, Box } from 'native-base'; + +export function Example() { + return ( + + + + 2 + + + + + ); +} diff --git a/example/storybook/stories/components/composites/Badge/icons.tsx b/example/storybook/stories/components/composites/Badge/icons.tsx new file mode 100644 index 0000000000..361a8474d6 --- /dev/null +++ b/example/storybook/stories/components/composites/Badge/icons.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Badge, Stack, AddIcon } from 'native-base'; + +export const Example = () => { + return ( + + }> + SUCCESS + + } + > + SUCCESS + + + ); +}; diff --git a/example/storybook/stories/components/composites/Badge/index.tsx b/example/storybook/stories/components/composites/Badge/index.tsx new file mode 100644 index 0000000000..1efb334204 --- /dev/null +++ b/example/storybook/stories/components/composites/Badge/index.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import { Example as Usage } from './usage'; +import { Example as Color } from './color'; +import { Example as Playground } from './knobEnabled'; +import { Example as Variants } from './variants'; +import { Example as Composition } from './composition'; +import { Example as Icon } from './icons'; + +storiesOf('Badge', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Playground', () => ) + .add('Usage', () => ) + .add('Icon', () => ) + .add('Color', () => ) + .add('Variants', () => ) + .add('Composition', () => ); diff --git a/example/storybook/stories/components/composites/Badge/knobEnabled.tsx b/example/storybook/stories/components/composites/Badge/knobEnabled.tsx new file mode 100644 index 0000000000..07e073d9cc --- /dev/null +++ b/example/storybook/stories/components/composites/Badge/knobEnabled.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { Badge } from 'native-base'; +import { select, text } from '@storybook/addon-knobs'; + +export function Example() { + return ( + + NATIVEBASE + + ); +} diff --git a/example/storybook/stories/components/composites/Badge/usage.tsx b/example/storybook/stories/components/composites/Badge/usage.tsx new file mode 100644 index 0000000000..327a103bc3 --- /dev/null +++ b/example/storybook/stories/components/composites/Badge/usage.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { Badge, Box } from 'native-base'; + +export function Example() { + return ( + + NEW FEATURE + + ); +} diff --git a/example/storybook/stories/components/composites/Badge/variants.tsx b/example/storybook/stories/components/composites/Badge/variants.tsx new file mode 100644 index 0000000000..8f0df5554a --- /dev/null +++ b/example/storybook/stories/components/composites/Badge/variants.tsx @@ -0,0 +1,31 @@ +//@ts-nocheck +import React from 'react'; +import { Badge, HStack, VStack, Box } from 'native-base'; + +export function Example() { + return ( + + + {['solid', 'outline', 'subtle'].map((key) => ( + + + DEFAULT + + + SUCCESS + + + ERROR + + + INFO + + + WARNING + + + ))} + + + ); +} diff --git a/example/storybook/stories/components/composites/Breadcrumb/Basic.tsx b/example/storybook/stories/components/composites/Breadcrumb/Basic.tsx new file mode 100644 index 0000000000..1cfa9ac49f --- /dev/null +++ b/example/storybook/stories/components/composites/Breadcrumb/Basic.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { Breadcrumb, Box, Heading } from 'native-base'; +export const Example = () => { + return ( + + Default Breadcrumb + + + + + Home (This is currently active) + + + + + + Docs + + + + + Github + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Breadcrumb/Collapsible.tsx b/example/storybook/stories/components/composites/Breadcrumb/Collapsible.tsx new file mode 100644 index 0000000000..8ccb29bf5c --- /dev/null +++ b/example/storybook/stories/components/composites/Breadcrumb/Collapsible.tsx @@ -0,0 +1,102 @@ +import React, { useState } from 'react'; +import { Breadcrumb, Box, Heading, HStack, Button } from 'native-base'; +import { + MaterialCommunityIcons, + MaterialIcons, + AntDesign, +} from '@expo/vector-icons'; + +export const Example = () => { + const [collapsed, setCollapsed] = useState(true); + return ( + <> + + Breadcrumb Collapsible + { + setCollapsed(!collapsed); + }} + > + + + + } + mr={1} + size="xs" + _current={{ color: 'blue.500' }} + /> + + Home + + + + + + + + } + mr={1} + size="xs" + _current={{ color: 'blue.500' }} + /> + + Discord + + + + + + + + Docs + + + + + + } + mr={1} + size="xs" + _current={{ color: 'red.500' }} + /> + + Github (This is currently active) + + + + + + + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Breadcrumb/ComponentSeparator.tsx b/example/storybook/stories/components/composites/Breadcrumb/ComponentSeparator.tsx new file mode 100644 index 0000000000..64e4e7dcb9 --- /dev/null +++ b/example/storybook/stories/components/composites/Breadcrumb/ComponentSeparator.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { Breadcrumb, Box, Heading, Icon } from 'native-base'; +import { Ionicons } from '@expo/vector-icons'; +export const Example = () => { + return ( + + Breadcrumb with Custom Separator + } size={5} /> + } + > + + Home (This is currently active) + + + + Docs + + + + + Github + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Breadcrumb/Composition.tsx b/example/storybook/stories/components/composites/Breadcrumb/Composition.tsx new file mode 100644 index 0000000000..548c83b98c --- /dev/null +++ b/example/storybook/stories/components/composites/Breadcrumb/Composition.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import { Breadcrumb, Box, Heading, HStack } from 'native-base'; +import { + MaterialCommunityIcons, + MaterialIcons, + AntDesign, +} from '@expo/vector-icons'; + +export const Example = () => { + return ( + + Breadcrumb Composition + + + + + } + mr={1} + size="xs" + /> + + Home + + + + + + + + + Docs + + + + + + + } + mr={1} + size="xs" + /> + + Github (This is currently active) + + + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Breadcrumb/Separators.tsx b/example/storybook/stories/components/composites/Breadcrumb/Separators.tsx new file mode 100644 index 0000000000..1d5c7eba28 --- /dev/null +++ b/example/storybook/stories/components/composites/Breadcrumb/Separators.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { Breadcrumb, Box, Heading } from 'native-base'; +export const Example = () => { + return ( + + Breadcrumb with String Separator + + + + + Home (This is currently active) + + + + + + Docs + + + + + Github + + + + + ); +}; diff --git a/example/storybook/stories/components/composites/Breadcrumb/index.tsx b/example/storybook/stories/components/composites/Breadcrumb/index.tsx new file mode 100644 index 0000000000..9b3c4eb472 --- /dev/null +++ b/example/storybook/stories/components/composites/Breadcrumb/index.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import { Example as Basic } from './Basic'; +import { Example as Separators } from './Separators'; +import { Example as ComponentSeparator } from './ComponentSeparator'; +import { Example as Composition } from './Composition'; +import { Example as Collapsible } from './Collapsible'; + +storiesOf('Breadcrumb', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ) + .add('Separators', () => ) + .add('ComponentSeparator', () => ) + .add('Composition', () => ) + .add('Collapsible', () => ); diff --git a/example/storybook/stories/components/composites/Card/Basic.tsx b/example/storybook/stories/components/composites/Card/Basic.tsx new file mode 100644 index 0000000000..d5c007479e --- /dev/null +++ b/example/storybook/stories/components/composites/Card/Basic.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Card, HStack, Heading, Text, Spacer, Flex } from 'native-base'; + +export function Example() { + return ( + + + + Open Source + + + + 1 month ago + + + + NativeBase + + + NativeBase is a component library that enables devs to build universal + design systems. + + + + Read More + + + + ); +} diff --git a/example/storybook/stories/components/composites/Card/index.tsx b/example/storybook/stories/components/composites/Card/index.tsx new file mode 100644 index 0000000000..589bff6951 --- /dev/null +++ b/example/storybook/stories/components/composites/Card/index.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import { Example as Basic } from './Basic'; + +storiesOf('Card', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ); diff --git a/example/storybook/stories/components/composites/Center/Basic.tsx b/example/storybook/stories/components/composites/Center/Basic.tsx new file mode 100644 index 0000000000..2e1c55dc91 --- /dev/null +++ b/example/storybook/stories/components/composites/Center/Basic.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { Center } from 'native-base'; +export function Example() { + return ( +
+
+ This is the Center +
+
+ ); +} diff --git a/example/storybook/stories/components/composites/Center/SquareCircle.tsx b/example/storybook/stories/components/composites/Center/SquareCircle.tsx new file mode 100644 index 0000000000..63c39761e6 --- /dev/null +++ b/example/storybook/stories/components/composites/Center/SquareCircle.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { Circle, Square, Box, HStack, Icon } from 'native-base'; +import { MaterialIcons } from '@expo/vector-icons'; +export function Example() { + return ( + + + } color="white" size={5} /> + + + + 20 + + + + ); +} diff --git a/example/storybook/stories/components/composites/Center/WithIcons.tsx b/example/storybook/stories/components/composites/Center/WithIcons.tsx new file mode 100644 index 0000000000..67a035c108 --- /dev/null +++ b/example/storybook/stories/components/composites/Center/WithIcons.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { Center, Box, HStack, Icon } from 'native-base'; +import { MaterialIcons } from '@expo/vector-icons'; + +export function Example() { + return ( + +
+ } color="white" size={6} /> +
+
+ + 20 + +
+
+ ); +} diff --git a/example/storybook/stories/components/composites/Center/index.tsx b/example/storybook/stories/components/composites/Center/index.tsx new file mode 100644 index 0000000000..2d3012ffaf --- /dev/null +++ b/example/storybook/stories/components/composites/Center/index.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import { Example as Basic } from './Basic'; +import { Example as WithIcons } from './WithIcons'; +import { Example as SquareCircle } from './SquareCircle'; + +storiesOf('Center', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ) + .add('WithIcons', () => ) + .add('SquareCircle', () => ); diff --git a/example/storybook/stories/components/composites/CircularProgress/Basic.tsx b/example/storybook/stories/components/composites/CircularProgress/Basic.tsx new file mode 100644 index 0000000000..96a82b25f2 --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/Basic.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { CircularProgress, Heading, Center } from 'native-base'; +export const Example = () => { + return ( +
+ Default CircularProgress + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/CircularProgress/ColorScheme.tsx b/example/storybook/stories/components/composites/CircularProgress/ColorScheme.tsx new file mode 100644 index 0000000000..792bef09e4 --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/ColorScheme.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { CircularProgress, Heading, Center, VStack } from 'native-base'; +export const Example = () => { + return ( +
+ Changing the ColorSchemes + + + + + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/CircularProgress/Colors.tsx b/example/storybook/stories/components/composites/CircularProgress/Colors.tsx new file mode 100644 index 0000000000..2c5bd5c14b --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/Colors.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import { CircularProgress, Heading, Center } from 'native-base'; +import { text } from '@storybook/addon-knobs'; +export const Example = () => { + return ( +
+ Changing the color + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/CircularProgress/Indeterminate.tsx b/example/storybook/stories/components/composites/CircularProgress/Indeterminate.tsx new file mode 100644 index 0000000000..dbc86822fc --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/Indeterminate.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { CircularProgress, Center, Heading } from 'native-base'; +export const Example = () => { + return ( +
+ Indeterminate Progress + + 60% + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/CircularProgress/Label.tsx b/example/storybook/stories/components/composites/CircularProgress/Label.tsx new file mode 100644 index 0000000000..649d5f279d --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/Label.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { CircularProgress, Heading, Center } from 'native-base'; +export const Example = () => { + return ( +
+ Adding label + 60% +
+ ); +}; diff --git a/example/storybook/stories/components/composites/CircularProgress/MinMax.tsx b/example/storybook/stories/components/composites/CircularProgress/MinMax.tsx new file mode 100644 index 0000000000..f28689b47f --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/MinMax.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { CircularProgress, Heading, Center, Box, Text } from 'native-base'; +import { number } from '@storybook/addon-knobs'; +export const Example = () => { + return ( +
+ Adding Min and Max + + 550 / 1000 + + + Min: 100 + Max: 1000 + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/CircularProgress/Sizes.tsx b/example/storybook/stories/components/composites/CircularProgress/Sizes.tsx new file mode 100644 index 0000000000..b5d53b1c47 --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/Sizes.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { CircularProgress, Heading, Center, VStack } from 'native-base'; +export const Example = () => { + return ( +
+ Changing the sizes + + + + + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/CircularProgress/Thickness.tsx b/example/storybook/stories/components/composites/CircularProgress/Thickness.tsx new file mode 100644 index 0000000000..2da78934f5 --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/Thickness.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { CircularProgress, Heading, Center } from 'native-base'; +export const Example = () => { + return ( +
+ Changing the thickness + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/CircularProgress/TrackColor.tsx b/example/storybook/stories/components/composites/CircularProgress/TrackColor.tsx new file mode 100644 index 0000000000..17a29dbb0c --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/TrackColor.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { CircularProgress, Heading, Center } from 'native-base'; +import { text } from '@storybook/addon-knobs'; +export const Example = () => { + return ( +
+ Changing the TrackColor + +
+ ); +}; diff --git a/example/storybook/stories/components/composites/CircularProgress/index.tsx b/example/storybook/stories/components/composites/CircularProgress/index.tsx new file mode 100644 index 0000000000..bda605e537 --- /dev/null +++ b/example/storybook/stories/components/composites/CircularProgress/index.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react-native'; +import { withKnobs } from '@storybook/addon-knobs'; +import Wrapper from './../../Wrapper'; +import Basic from './Basic'; +import Colors from './Colors'; +import Sizes from './Sizes'; +import Label from './Label'; +import Thickness from './Thickness'; +import Indeterminate from './Indeterminate'; +import TrackColor from './TrackColor'; +import MinMax from './MinMax'; +import ColorScheme from './ColorScheme'; + +storiesOf('CircularProgress', module) + .addDecorator(withKnobs) + .addDecorator((getStory: any) => {getStory()}) + .add('Basic', () => ) + .add('ColorScheme', () => ) + .add('Colors', () => ) + .add('TrackColor', () => ) + .add('Label', () =>