From c366a7588c85ae7aa62d42592cfd46232970898b Mon Sep 17 00:00:00 2001 From: t <28008958+taeh98@users.noreply.github.com> Date: Mon, 2 Oct 2023 22:23:37 +0100 Subject: [PATCH] chore: added templates etc to enable contributions --- .eslintrc.yaml | 4 +- .github/ISSUE_TEMPLATE/BUG_REPORT.md | 174 ++++++++++++++++++ .github/ISSUE_TEMPLATE/FEATURE_REQUEST.md | 110 +++++++++++ .github/ISSUE_TEMPLATE/QUESTION_OR_HELP.md | 149 +++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 4 + .github/PULL_REQUEST_TEMPLATE.md | 119 ++++++++++++ .github/assets/images/screenshots/badges.png | Bin 0 -> 10080 bytes .github/assets/images/screenshots/basic.png | Bin 0 -> 7411 bytes .../screenshots/dark_theme_parent_items.png | Bin 0 -> 15356 bytes .github/workflows/ci.yml | 28 +-- CONTRIBUTING.md | 146 +++++++++++++++ README.md | 76 +++----- examples/App.tsx | 1 + .../typescript-class-example.tsx | 1 + examples/package-lock.json | 69 ++++--- examples/package.json | 2 +- package-lock.json | 158 ++++++++-------- package.json | 4 +- update_reformat.sh | 65 +++++++ 19 files changed, 924 insertions(+), 186 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/BUG_REPORT.md create mode 100644 .github/ISSUE_TEMPLATE/FEATURE_REQUEST.md create mode 100644 .github/ISSUE_TEMPLATE/QUESTION_OR_HELP.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/assets/images/screenshots/badges.png create mode 100644 .github/assets/images/screenshots/basic.png create mode 100644 .github/assets/images/screenshots/dark_theme_parent_items.png create mode 100644 CONTRIBUTING.md create mode 100644 update_reformat.sh diff --git a/.eslintrc.yaml b/.eslintrc.yaml index 3198d4e..6386cc9 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -81,7 +81,7 @@ rules: - error - 300 max-lines-per-function: - - error + - warn - max: 20 no-console: error no-duplicate-imports: error @@ -100,7 +100,7 @@ rules: - .js - .jsx react/prop-types: error - sort-imports: error + sort-imports: warn sort-keys: - error - asc diff --git a/.github/ISSUE_TEMPLATE/BUG_REPORT.md b/.github/ISSUE_TEMPLATE/BUG_REPORT.md new file mode 100644 index 0000000..ee5a2c5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/BUG_REPORT.md @@ -0,0 +1,174 @@ +--- +name: "πŸ› Bug Report" +about: Report a bug in the library. +title: 'Bug: ' +labels: [ 'bug report' ] +--- + + + +## βœ… Checklist + +- [ ] I have searched + through [this library's GitHub issues](https://github.com/hossein-zare/react-native-dropdown-picker/issues) + and am satisfied that this bug report is not a duplicate +- [ ] I have checked that my bug is present + in [the latest version of this library](https://www.npmjs.com/package/react-native-dropdown-picker) +- [ ] I have + searched [this library's GitHub issues](https://github.com/hossein-zare/react-native-dropdown-picker/issues) + and [this library's docs](https://hossein-zare.github.io/react-native-dropdown-picker-website/docs) + and am satisfied that this is indeed a bug rather than simply something I + don't know how to do (if so, make a question/help issue instead) +- [ ] My bug comes from this library and not others, e.g. React Native or + another dependency in my project +- [ ] I understand that each bug should be submitted in its own issue. + Therefore, this issue will contain only one bug, and I will submit any + different bugs in their own, separate issues + +## πŸ€” Summary + + + +## ⚠️ The problem + +### Desired (expected, correct) behaviour + + + +### Actual (unexpected, incorrect) behaviour + + + +### Screenshots/screen recording + + + +### Conditions + + + +### Code + + + +### Log/error output + + + +## πŸ’» Environment + +### react-native-dropdown-picker version + + + +### Node and npm versions + + + +### React, React Native, and Expo versions + + + +### Package.json contents + + + +### Platform/s + + + +### JavaScript or TypeScript + + + +### Class component or function component + + + +## πŸ” Reproducing the bug + +### Steps To Reproduce + +1. Do this +2. Then this +3. .... +4. Bug appears + + + +### Minimal reproducible example + + + +Link to minimal reproducible example: + +## 🏁 Final details + +### Steps to fix + + + +### Additional context/info + + diff --git a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md new file mode 100644 index 0000000..f20c527 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md @@ -0,0 +1,110 @@ +--- +name: "πŸš€ Feature request" +about: Request a new feature to be added to this library. +title: 'Feature request: ' +labels: [ 'feature request' ] +--- + + + +## βœ… Checklist + +- [ ] I have searched + through [this library's GitHub issues](https://github.com/hossein-zare/react-native-dropdown-picker/issues) + and am satisfied that this feature request is not a duplicate +- [ ] I have searched + through [this library's GitHub issues](https://github.com/hossein-zare/react-native-dropdown-picker/issues) + and + read [this library's docs](https://hossein-zare.github.io/react-native-dropdown-picker-website) + and am satisfied that this feature request is not implemented in the most + recent version of the library +- [ ] I understand that each feature request should be submitted in its own + issue. Therefore, this issue will contain only one feature request, and I will + submit any different feature requests in their own, separate issues + +## πŸ€” Overview + +### Summary + + + +### User story + + + +## πŸ’‘ Details + +### What + + + +### Who + + + +### When + + + +### Why + + + +### How + + + +## 🏁 Final details + +### Similar/same functionality elsewhere + + + +### Possible alternatives + + + +### Additional context/info + + diff --git a/.github/ISSUE_TEMPLATE/QUESTION_OR_HELP.md b/.github/ISSUE_TEMPLATE/QUESTION_OR_HELP.md new file mode 100644 index 0000000..454d67b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/QUESTION_OR_HELP.md @@ -0,0 +1,149 @@ +--- +name: "❓ Question or help" +about: Ask a question or for help using the library. +title: 'Question/help: ' +labels: [ 'help needed' ] +--- + + + +## βœ… Checklist + +- [ ] I have searched through + the [other issues for this library](https://github.com/hossein-zare/react-native-dropdown-picker/issues) + and am satisfied that my problem is not a duplicate. +- [ ] I have checked and + read [this library's docs](https://hossein-zare.github.io/react-native-dropdown-picker-website) + to try and resolve my problem by myself +- [ ] I have checked and + read [this library's GitHub issues](https://github.com/hossein-zare/react-native-dropdown-picker/issues) + to try and resolve my problem by myself +- [ ] I have checked and + read [Stack Overflow](https://stackoverflow.com/questions/tagged/react-native-dropdown-picker) + to try and resolve my problem by myself +- [ ] My problem relates to this library and not others, e.g. React Native or + another dependency in my project +- [ ] I understand that each question/problem should be submitted in its own + issue. Therefore, this issue will contain only one such problem, and I will + submit any different problems in their own, separate issues + +### Relevant docs pages + + + +### Relevant issues + + + +### Relevant Stack Overflow questions + + + +## πŸ€” Summary + +### Overview + + + +### User story + + + +## ⚠️ The problem + +### What I need help with + + + +### Code + + + +### Log/error output + + + +### Screenshots + + + +## πŸ’» Environment + +### react-native-dropdown-picker version + + + +### Node and npm versions + + + +### React, React Native, and Expo versions + + + +### Package.json contents + + + +### Platform/s + + + +### JavaScript or TypeScript + + + +### Class component or function component + + + +## 🏁 Additional context/info + + diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..b56dffb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,4 @@ +contact_links: + - name: πŸ“ƒ Documentation Issue + url: https://github.com/hossein-zare/react-native-dropdown-picker-website + about: If something is missing or incorrect in our docs, please file an issue here. \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..2a7fdd4 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,119 @@ + + +# πŸ‘‘ Title + + + +Fixes/implements/resolves # + +## βœ… Checklist + + + +- [ ] I have + followed [the contributing guidance](https://github.com/hossein-zare/react-native-dropdown-picker/blob/dev-5.x/CONTRIBUTING.md). +- [ ] I have + read [this library's docs](https://hossein-zare.github.io/react-native-dropdown-picker-website/docs), + and it is still sensible to make these changes +- [ ] I have + read [this library's GitHub issues](https://github.com/hossein-zare/react-native-dropdown-picker/issues), + and it is still sensible to make these changes +- [ ] + I [made an issue](https://github.com/hossein-zare/react-native-dropdown-picker/issues) + for the new feature/bug fix/etc this PR implements +- [ ] + This [PR is linked to its relevant issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) +- [ ] I + have [tested my changes and this library as a whole with npm pack](https://dev.to/scooperdev/use-npm-pack-to-test-your-packages-locally-486e), + and everything works +- [ ] My changes pass all the + repo's [CI/status checks](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks), + including the Prettier and ESLint checks +- [ ] I + have [squashed all my changes into one commit](https://www.geeksforgeeks.org/git-squash/) +- [ ] My single commit message conforms + to [the Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/#summary) +- [ ] I added/changed automated tests to ensure my feature works correctly and + continues to do so +- [ ] I + have [kept my changes up-to-date with those in the `dev-5.x` (default) branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch) +- [ ] My changes do not require changing this library's docs: they are + up-to-date and comprehensive even with my changes +- [ ] My changes require this library's docs to be updated and/or completed to + include all relevant and up-to-date information +- [ ] I have made a separate PR + in [the docs repo](https://github.com/hossein-zare/react-native-dropdown-picker-website) + to update them in light of this PR +- [ ] I understand that each atomic change (e.g. fixing one bug or adding one + feature) should be submitted in its own PR. Therefore, this PR will contain + only one such atomic change, and I will submit any different changes in their + own, separate PRs + +## πŸ“ˆ Changes made + +### What + + + +### Why + + + +### How + + + +### Tests + + + +## 🏁 Final details + +### Relevant docs pages + + + +### Help required + + + +### Additional context/info + + diff --git a/.github/assets/images/screenshots/badges.png b/.github/assets/images/screenshots/badges.png new file mode 100644 index 0000000000000000000000000000000000000000..58278115cc0c1ec00f02fafa000b840d1974e380 GIT binary patch literal 10080 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 literal 0 HcmV?d00001 diff --git a/.github/assets/images/screenshots/basic.png b/.github/assets/images/screenshots/basic.png new file mode 100644 index 0000000000000000000000000000000000000000..d13464a3da9d082f09216c96dc92b8a2522c5af2 GIT binary patch literal 7411 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 literal 0 HcmV?d00001 diff --git a/.github/assets/images/screenshots/dark_theme_parent_items.png b/.github/assets/images/screenshots/dark_theme_parent_items.png new file mode 100644 index 0000000000000000000000000000000000000000..b75536bc57eb073237406a5abef7dc4330540e80 GIT binary patch literal 15356 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 l{{1)q!)dpFHtLE|OZ804z+5i|d~+8^ML|Qp if grep @@ -86,31 +86,37 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Check spelling with typos uses: crate-ci/typos@master with: config: .typos.toml - lint_markdown_files: - name: Lint Markdown files + run-misc-lints: + name: Lint misc. filetypes runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: articulate/actions-markdownlint@v1 + - uses: actions/checkout@v4 + - name: Lint YAML files with yamllint + uses: ibiqlik/action-yamllint@v3 + - name: Lint Markdown files with MarkdownLint + uses: articulate/actions-markdownlint@v1 with: files: '*.md' ignore: '**/node_modules' + - name: Lint shell script files with ShellCheck + uses: azohra/shell-linter@latest commitlint: name: Enforce Conventional Commits runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Check the commits conform to the Conventional Commits specification with commitlint uses: wagoid/commitlint-github-action@v5 # TODO: check commits squashed into one (i.e. all changes in a PR are in one commit after last one in primary branch) -# TODO: use release-please to increment version number, update changelog, and publish releases automatically if CI passes \ No newline at end of file +# TODO: use semver to increase version numbers and update changelog automatically +# TODO: publish new release automatically if version increased and CI passes (use release-please?) \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ba250f0 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,146 @@ +# πŸ’– Contributing to [React Native Dropdown Picker](https://github.com/hossein-zare/react-native-dropdown-picker) + +Thank you for considering contributing to this library! This guide will walk you +through how to do so successfully πŸ˜ƒ + +## πŸ€” Overview + +### 🌍 General guidance + +You should +read [GitHub's general guidance on contributing to projects](https://docs.github.com/en/get-started/quickstart/contributing-to-projects) +and [guidance on collaborating with pull requests](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests). + +### πŸ“„ Documentation + +Good and thorough documentation is important to enabling people to use a +library. Therefore, it would be greatly appreciated if +you [contributed to this library's documentation](https://github.com/hossein-zare/react-native-dropdown-picker-website). + +### πŸ§ͺ Experimenting + +To easily and quickly test changes before needing to add them to version +control or submit them for acceptance into this library, you can +use [patch-package](https://www.npmjs.com/package/patch-package). It will let +you edit this library in your own project's npm dependencies to see which +changes work. + +## πŸ› οΈ How to contribute changes + +### βœ… Sensibility + +Read [this library's docs](https://hossein-zare.github.io/react-native-dropdown-picker-website/docs) +and +search [its GitHub issues](https://github.com/hossein-zare/react-native-dropdown-picker/issues) +to ensure your intended changes make sense. + +### 🚩 Make an issue + +Before submitting any changes, document them +in [an issue](https://github.com/hossein-zare/react-native-dropdown-picker/issues/new/choose). +For example, this might be a feature request issue for the feature you will +create or a bug report for the bug you will fix. If the issue already exists, +e.g. a bug report for the same bug you'll fix or a feature request for the same +feature you're building, skip this step. Don't make a duplicate issue. + +### 🍴 Forking + +To start work on your changes to be +submitted, [fork and clone](https://docs.github.com/en/get-started/quickstart/fork-a-repo) +this library. You should +then [create a new branch](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging) +on your fork dedicated to the changes you're making. You should +read [GitHub's docs about branches](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches). +Make sure you use a separate branch (β‡’ PR) for each atomic change (e.g. adding +one feature or fixing one bug) you are making. If you want to make multiple, do +so in separate branches, and submit them in separate PRs. Otherwise, your PRs +will bloat, and it will be hard to review, manage, and keep track of them. + +### πŸ‘©πŸΎβ€πŸ’» Make changes + +Make the changes you require to this library in your fork. Test them +with `npm pack`. It will let you build this library as if for release on npm +locally, so you can include it as a dependency in another npm package to test +it. +Read [this article](https://dev.to/scooperdev/use-npm-pack-to-test-your-packages-locally-486e) +for more information on how to use `npm pack` to test your changed version of +this library locally. + +Once you have ensured your changes work as +required, [commit your changes](https://git-scm.com/docs/git-commit) +and [push them to your fork](https://docs.github.com/en/get-started/using-git/pushing-commits-to-a-remote-repository). +Then ensure that your changes pass +our [continuous integration (CI) workflow](https://docs.github.com/en/actions/automating-builds-and-tests/about-continuous-integration). +They will show up to you +as [status checks](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). +To do this, you may need +to [fix ESLint issues](https://eslint.org/docs/latest/use/command-line-interface#--fix) +and [reformat your code with Prettier](https://prettier.io/docs/en/cli#--write). + +Use the script `update_reformat.sh` to automatically update this library's +dependencies and reformat its code. This will help you pass our CI checks. + +Whenever applicable, add or update automated tests to check your changes work +and that they will continue to do so in the future. You +should [squash the commits you made](https://www.geeksforgeeks.org/git-squash/) +containing your changes into one single commit that conforms +to [the Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/#summary). + +Ensure your changes are up-to-date with those in the `dev-5.x` (default) branch. +This will mean your commit will come immediately after the last one in +the `dev-5.x` (default) branch if you +run [git log](https://git-scm.com/docs/git-log). +Read [GitHub's guidance on keeping your pull request in sync with the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/keeping-your-pull-request-in-sync-with-the-base-branch). +Doing this will prevent merge conflicts that will stop your changes being able +to be merged. + +Once you've done all this, you're ready to submit a Pull Request (PR). + +### πŸš€ Make a Pull Request + +To submit your changes for review and to have them added to this library, you +must make +a [pull request (PR)](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). +You will be ready to do so after following the instructions in the "Make +changes" section. + +You can make a PR into this +library [here](https://github.com/hossein-zare/react-native-dropdown-picker/compare). +Ensure +you [link the issue you made earlier (and any others that are relevant) to your PR](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#manually-linking-a-pull-request-to-an-issue-using-the-pull-request-sidebar). + +PRs should be made against and merged into +the [`dev-5.x`](https://github.com/hossein-zare/react-native-dropdown-picker) +branch, which is set as the `default` branch on GitHub. + +You can also make +a [draft PR](https://github.blog/2019-02-14-introducing-draft-pull-requests/) +before the changes are completely finished as per the "Make changes" section. +This might be useful if you need feedback on your changes early on and before +finalizing for merging. + +Once you have made a PR, you will then get feedback from the maintainers of the +repo. This will help ensure your changes are ready to be merged. + +If required, make a separate +PR [in the docs](https://github.com/hossein-zare/react-native-dropdown-picker-website) +if your changes make its contents incorrect or if information regarding your +changes is missing from them altogether. + +## 🏁 Release process + +Releases are currently made from +the [`5.x`](https://github.com/hossein-zare/react-native-dropdown-picker/tree/5.x) +branch. To make a new release, follow these steps: + +1. Verify the development branch has all the changes desired in the release and + works well +2. Make and merge a final PR into the development branch that increments the + version number in `package.json` +3. Make and merge a PR from the development branch to the release branch +4. Using the GitHub web UI, draft a new release using the tag name `vx.x.x` + (replace the `x` values as appropriate). Use the release branch as the + target, with the release name being `vx.x.x` (again, with appropriate + numbers in place of `x`) +5. Verify in the GitHub Actions panel for the repository that `npm publish` + succeeded diff --git a/README.md b/README.md index 56539f6..5f4014d 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,29 @@ # React Native Dropdown Picker -[![react-native-dropdown-picker is released under the MIT license.](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/hossein-zare/react-native-dropdown-picker/blob/dev-5.x/LICENSE) +[![GitHub repo](https://img.shields.io/badge/GitHub_repo-grey?logo=github)](https://github.com/hossein-zare/react-native-dropdown-picker) +[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fhossein-zare%2Freact-native-dropdown-picker%2Fbadge%3Fref%3Ddev-5.x&style=flat)](https://actions-badge.atrox.dev/hossein-zare/react-native-dropdown-picker/goto?ref=dev-5.x) +[![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen)](https://github.com/hossein-zare/react-native-dropdown-picker/blob/dev-5.x/CONTRIBUTING.md) +[![react-native-dropdown-picker is released under the MIT license.](https://img.shields.io/github/license/hossein-zare/react-native-dropdown-picker)](https://github.com/hossein-zare/react-native-dropdown-picker/blob/dev-5.x/LICENSE) [![Current npm package version.](https://img.shields.io/npm/v/react-native-dropdown-picker?color=brightgreen&label=npm%20package)](https://www.npmjs.org/package/react-native-dropdown-picker) - -[//]: # (TODO: add badge linking to GitHub repo) +![Weekly npm downloads](https://img.shields.io/npm/dw/react-native-dropdown-picker) +[![Documentation](https://img.shields.io/badge/Documentation-grey)](https://hossein-zare.github.io/react-native-dropdown-picker-website/docs) --- -## Screenshots +## πŸ“± Screenshots -

- Screenshot showing basic dropdown - Screenshot showing badges - Screenshot showing dark theme and parent items -

+[![Screenshot showing basic dropdown](.github/assets/images/screenshots/basic.png)](https://user-images.githubusercontent.com/56504893/116790110-e0b36880-aac7-11eb-9ebd-196acee64f7a.png) +[![Screenshot showing badges](.github/assets/images/screenshots/badges.png)](https://user-images.githubusercontent.com/56504893/116789802-faec4700-aac5-11eb-837b-86f18cbfcf3d.png) +[![Screenshot showing dark theme and parent items](.github/assets/images/screenshots/dark_theme_parent_items.png)](https://user-images.githubusercontent.com/56504893/116789839-2c651280-aac6-11eb-99e0-b43b608ed8c7.png) The above screenshots were taken from [this example](https://snack.expo.dev/8mHmLfcZf). -## Usage +## πŸ‘‹ Usage ### Basic usage -The following code shows basic usage of the library: +The following code shows basic usage of this library: ```javascript import React, {useState} from 'react'; @@ -77,15 +75,15 @@ export default function App() { You can find more examples in the `examples` subdirectory. This subdirectory is a working [Expo](https://github.com/expo/expo) project demonstrating this -library. It shows how to use the library with class components as well as with +library. It shows how to use this library with class components as well as with function components, and in TypeScript as well as in JavaScript. Navigate into the `examples` subdirectory, run `npm install`, and then run `npx expo start` to see the examples working. For further information on how to use this library, -read [the relevant documentation](https://hossein-zare.github.io/react-native-dropdown-picker-website/docs/usage). +read [the documentation on usage](https://hossein-zare.github.io/react-native-dropdown-picker-website/docs/usage). -## Further documentation +## πŸ“„ Further documentation The docs can be read at: [https://hossein-zare.github.io/react-native-dropdown-picker-website](https://hossein-zare.github.io/react-native-dropdown-picker-website) @@ -93,43 +91,13 @@ at: [https://hossein-zare.github.io/react-native-dropdown-picker-website](https: The docs can be edited at: [https://github.com/hossein-zare/react-native-dropdown-picker-website](https://github.com/hossein-zare/react-native-dropdown-picker-website) -## Merge and Release Process - -### Branches in use - -#### Development - -PRs should be made against and merged into -the [`dev-5.x`](https://github.com/hossein-zare/react-native-dropdown-picker) -branch, which is set as the `default` branch on GitHub. - -#### Release - -Releases are currently made from -the [`5.x`](https://github.com/hossein-zare/react-native-dropdown-picker/tree/5.x) -branch. - -### Release Process +## πŸ˜• Support and issues -To make a new release, follow these steps: +If you have questions or need help, you +can [ask a question on Stack Overflow](https://stackoverflow.com/questions/tagged/react-native-dropdown-picker) +or [make a GitHub issue](https://github.com/hossein-zare/react-native-dropdown-picker/issues/new/choose). +You can also make a GitHub issue to report a bug or make a feature request. -* Verify the development branch has all the changes desired in the release and - works well -* You can test changes to the library and experiment easily - with [patch-package](https://www.npmjs.com/package/patch-package) -* Once you have made changes, and after finalizing them, use `npm pack` - to [test your new, changed version of the library locally and check it works correctly](https://dev.to/scooperdev/use-npm-pack-to-test-your-packages-locally-486e) -* Make and merge a final PR into the development branch that increments the - version number in `package.json` -* Make and merge a PR from the development branch to the release branch -* Using the GitHub web UI, draft a new release using the tag name `vx.x.x` - (replace the `x` values as appropriate). Use the release branch as the - target, with the release name being `vx.x.x` (again, with appropriate - numbers in place of `x`) -* Verify in the GitHub Actions panel for the repository that `npm publish` - succeeded +## πŸš€οΈ Contributing -[//]: # (TODO: make templates for pull requests and issues, and CONTRIBUTING.md - include check people read docs and past issues before submitting new issues - ensure PRs tested with npm pack: https://dev.to/scooperdev/use-npm-pack-to-test-your-packages-locally-486e -) +See [CONTRIBUTING.md](https://github.com/hossein-zare/react-native-dropdown-picker/blob/dev-5.x/CONTRIBUTING.md). diff --git a/examples/App.tsx b/examples/App.tsx index 17b45b1..3773bc9 100644 --- a/examples/App.tsx +++ b/examples/App.tsx @@ -66,6 +66,7 @@ const EXAMPLE_COMPONENT_ITEMS: Array> = [ ]; type Props = Record; + interface State { currentExample: ExampleComponent; examplePickerOpen: boolean; diff --git a/examples/example-src-files/typescript-class-example.tsx b/examples/example-src-files/typescript-class-example.tsx index 51f448b..e9c8c2e 100644 --- a/examples/example-src-files/typescript-class-example.tsx +++ b/examples/example-src-files/typescript-class-example.tsx @@ -5,6 +5,7 @@ import DropDownPicker, { ItemType } from 'react-native-dropdown-picker'; interface Props { multiple: boolean; } + interface State { open: boolean; singleValue: string | null; diff --git a/examples/package-lock.json b/examples/package-lock.json index 4182973..5a6b8d1 100644 --- a/examples/package-lock.json +++ b/examples/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "dependencies": { "expo": "^49.0.13", - "expo-status-bar": "~1.7.1", + "expo-status-bar": "~1.6.0", "react": "18.2.0", "react-native": "0.72.5", "react-native-dropdown-picker": "^5.4.6" @@ -5865,9 +5865,9 @@ } }, "node_modules/@types/node": { - "version": "20.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", - "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==" + "version": "20.8.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz", + "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==" }, "node_modules/@types/prop-types": { "version": "15.7.8", @@ -6676,9 +6676,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001541", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz", - "integrity": "sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==", + "version": "1.0.30001543", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001543.tgz", + "integrity": "sha512-qxdO8KPWPQ+Zk6bvNpPeQIOH47qZSYdFZd6dXQzb2KzhnSXju4Kd7H1PkSJx6NICSMgo/IhRZRhhfPTHYpJUCA==", "funding": [ { "type": "opencollective", @@ -6964,11 +6964,11 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/core-js-compat": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", - "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "dependencies": { - "browserslist": "^4.21.10" + "browserslist": "^4.22.1" }, "funding": { "type": "opencollective", @@ -7255,9 +7255,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.537", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz", - "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==" + "version": "1.4.540", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.540.tgz", + "integrity": "sha512-aoCqgU6r9+o9/S7wkcSbmPRFi7OWZWiXS9rtjEd+Ouyu/Xyw5RSq2XN8s5Qp8IaFOLiRrhQCphCIjAxgG3eCAg==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -7628,9 +7628,9 @@ } }, "node_modules/expo-status-bar": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.7.1.tgz", - "integrity": "sha512-Wkm9uCmuQQBSU+l/AekWAQ1d0FYw560yL116+OAKJDyKBOUpPURoWkFbabM1EDxv+5scTuSThr/CvsA0nsSCow==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.6.0.tgz", + "integrity": "sha512-e//Oi2WPdomMlMDD3skE4+1ZarKCJ/suvcB4Jo/nO427niKug5oppcPNYO+csR6y3ZglGuypS+3pp/hJ+Xp6fQ==" }, "node_modules/fast-glob": { "version": "3.3.1", @@ -7648,17 +7648,17 @@ } }, "node_modules/fast-xml-parser": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.1.tgz", - "integrity": "sha512-viVv3xb8D+SiS1W4cv4tva3bni08kAkx0gQnWrykMM8nXPc1FxqZPU00dCEVjkiCg4HoXd2jC4x29Nzg/l2DAA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", + "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==", "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" } ], "dependencies": { @@ -8052,12 +8052,9 @@ } }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "engines": { "node": ">= 0.4.0" } @@ -11706,9 +11703,9 @@ } }, "node_modules/react-devtools-core": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.0.tgz", - "integrity": "sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg==", + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.4.tgz", + "integrity": "sha512-IUZKLv3CimeM07G3vX4H4loxVpByrzq3HvfTX7v9migalwvLs9ZY5D3S3pKR33U+GguYfBBdMMZyToFhsSE/iQ==", "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" @@ -12768,9 +12765,9 @@ } }, "node_modules/terser": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", - "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz", + "integrity": "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", diff --git a/examples/package.json b/examples/package.json index f4a177d..204f7d2 100644 --- a/examples/package.json +++ b/examples/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "expo": "^49.0.13", - "expo-status-bar": "~1.7.1", + "expo-status-bar": "~1.6.0", "react": "18.2.0", "react-native": "0.72.5", "react-native-dropdown-picker": "^5.4.6" diff --git a/package-lock.json b/package-lock.json index 3caf14a..90841e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,8 +14,8 @@ "devDependencies": { "@types/react": "^18.2.24", "@types/react-native": "^0.72.3", - "@typescript-eslint/eslint-plugin": "^6.7.3", - "@typescript-eslint/parser": "^6.7.3", + "@typescript-eslint/eslint-plugin": "^6.7.4", + "@typescript-eslint/parser": "^6.7.4", "eslint": "^8.50.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.1.0", @@ -2324,9 +2324,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz", - "integrity": "sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -3004,9 +3004,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", - "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==", + "version": "20.8.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz", + "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==", "peer": true }, "node_modules/@types/prop-types": { @@ -3070,16 +3070,16 @@ "peer": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz", - "integrity": "sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.4.tgz", + "integrity": "sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.3", - "@typescript-eslint/type-utils": "6.7.3", - "@typescript-eslint/utils": "6.7.3", - "@typescript-eslint/visitor-keys": "6.7.3", + "@typescript-eslint/scope-manager": "6.7.4", + "@typescript-eslint/type-utils": "6.7.4", + "@typescript-eslint/utils": "6.7.4", + "@typescript-eslint/visitor-keys": "6.7.4", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -3105,15 +3105,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz", - "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.4.tgz", + "integrity": "sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.7.3", - "@typescript-eslint/types": "6.7.3", - "@typescript-eslint/typescript-estree": "6.7.3", - "@typescript-eslint/visitor-keys": "6.7.3", + "@typescript-eslint/scope-manager": "6.7.4", + "@typescript-eslint/types": "6.7.4", + "@typescript-eslint/typescript-estree": "6.7.4", + "@typescript-eslint/visitor-keys": "6.7.4", "debug": "^4.3.4" }, "engines": { @@ -3133,13 +3133,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz", - "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.4.tgz", + "integrity": "sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.3", - "@typescript-eslint/visitor-keys": "6.7.3" + "@typescript-eslint/types": "6.7.4", + "@typescript-eslint/visitor-keys": "6.7.4" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3150,13 +3150,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz", - "integrity": "sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.4.tgz", + "integrity": "sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.3", - "@typescript-eslint/utils": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.4", + "@typescript-eslint/utils": "6.7.4", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -3177,9 +3177,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz", - "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.4.tgz", + "integrity": "sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3190,13 +3190,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz", - "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.4.tgz", + "integrity": "sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.3", - "@typescript-eslint/visitor-keys": "6.7.3", + "@typescript-eslint/types": "6.7.4", + "@typescript-eslint/visitor-keys": "6.7.4", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3217,17 +3217,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.3.tgz", - "integrity": "sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.4.tgz", + "integrity": "sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.3", - "@typescript-eslint/types": "6.7.3", - "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/scope-manager": "6.7.4", + "@typescript-eslint/types": "6.7.4", + "@typescript-eslint/typescript-estree": "6.7.4", "semver": "^7.5.4" }, "engines": { @@ -3242,12 +3242,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz", - "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.4.tgz", + "integrity": "sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/types": "6.7.4", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -3962,9 +3962,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001541", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz", - "integrity": "sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==", + "version": "1.0.30001543", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001543.tgz", + "integrity": "sha512-qxdO8KPWPQ+Zk6bvNpPeQIOH47qZSYdFZd6dXQzb2KzhnSXju4Kd7H1PkSJx6NICSMgo/IhRZRhhfPTHYpJUCA==", "funding": [ { "type": "opencollective", @@ -4217,12 +4217,12 @@ "peer": true }, "node_modules/core-js-compat": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", - "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", "peer": true, "dependencies": { - "browserslist": "^4.21.10" + "browserslist": "^4.22.1" }, "funding": { "type": "opencollective", @@ -4484,9 +4484,9 @@ "peer": true }, "node_modules/electron-to-chromium": { - "version": "1.4.537", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz", - "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==", + "version": "1.4.540", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.540.tgz", + "integrity": "sha512-aoCqgU6r9+o9/S7wkcSbmPRFi7OWZWiXS9rtjEd+Ouyu/Xyw5RSq2XN8s5Qp8IaFOLiRrhQCphCIjAxgG3eCAg==", "peer": true }, "node_modules/emoji-regex": { @@ -5314,17 +5314,17 @@ "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.1.tgz", - "integrity": "sha512-viVv3xb8D+SiS1W4cv4tva3bni08kAkx0gQnWrykMM8nXPc1FxqZPU00dCEVjkiCg4HoXd2jC4x29Nzg/l2DAA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", + "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==", "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" } ], "peer": true, @@ -5527,7 +5527,8 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -5723,12 +5724,9 @@ "dev": true }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "engines": { "node": ">= 0.4.0" } @@ -8454,9 +8452,9 @@ } }, "node_modules/react-devtools-core": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.0.tgz", - "integrity": "sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg==", + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.4.tgz", + "integrity": "sha512-IUZKLv3CimeM07G3vX4H4loxVpByrzq3HvfTX7v9migalwvLs9ZY5D3S3pKR33U+GguYfBBdMMZyToFhsSE/iQ==", "peer": true, "dependencies": { "shell-quote": "^1.6.1", @@ -9493,9 +9491,9 @@ } }, "node_modules/terser": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", - "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz", + "integrity": "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==", "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", diff --git a/package.json b/package.json index 0da2c51..a34d11e 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,8 @@ "devDependencies": { "@types/react": "^18.2.24", "@types/react-native": "^0.72.3", - "@typescript-eslint/eslint-plugin": "^6.7.3", - "@typescript-eslint/parser": "^6.7.3", + "@typescript-eslint/eslint-plugin": "^6.7.4", + "@typescript-eslint/parser": "^6.7.4", "eslint": "^8.50.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.1.0", diff --git a/update_reformat.sh b/update_reformat.sh new file mode 100644 index 0000000..2ccb56c --- /dev/null +++ b/update_reformat.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +if [ $# -ne 1 ] || [ "$1" != "-y" ] +# if num arguments supplied !== 1 or single argument supplied !== "-y" +# give feedback to user and check they want to run the script + then + echo "This script will automatically update this library's dependencies and reformat its codeπŸ˜ƒ" + echo "In the future, pass a single argument of \"-y\" to assume \"yes\" as the answer to the prompt and run non-interactively." + + while [ "$yn" != "Y" ] && [ "$yn" != "y" ] && [ "$yn" != "N" ] && [ "$yn" != "n" ] + do + + read -r -p "Do you wish run this script? (y/n): " yn + case $yn in + [Yy]* ) echo "Running script";; + [Nn]* ) echo "Exiting script"; exit 0;; + * ) echo "Please answer y for yes or n for no.";; + esac + + done +fi + +echo "β˜• Script starting. This library's dependencies will be updated and its code will be reformatted. Go get a coffee or sit back and relax!" + +echo "πŸ”„ Step 1 of 2: updating dependencies." + +echo "πŸ”„ Updating dependencies, part 1 of 3: pulling from git." + +git fetch +git pull + +echo "πŸ”„ Updating dependencies, part 2 of 3: updating dependencies of examples subdirectory." + +cd examples || exit 1 +npx --yes npm-check-updates -u --timeout 400000 +npm update +npm audit fix +npm install expo@latest +npx --yes expo install --fix +npx --yes sort-package-json +npm install +npx --yes expo install --check + +echo "πŸ”„ Updating dependencies, part 3 of 3: updating dependencies of react-native-dropdown-picker." + +cd .. || exit 1 +npx --yes npm-check-updates -u --timeout 400000 +npm update +npm audit fix +npx --yes sort-package-json +npm install + +echo "✍️ Step 2 of 2: Reformatting code." + +echo "✍️ Reformatting code, part 1 of 2: starting first pass." + +npx eslint --fix . --config .eslintrc.yaml --ignore-path .eslintignore +npx prettier --write . --config .prettierrc.yaml --ignore-path .prettierignore + +echo "✍️ Reformatting code, part 2 of 2: starting second pass." + +npx eslint --fix . --config .eslintrc.yaml --ignore-path .eslintignore +npx prettier --write . --config .prettierrc.yaml --ignore-path .prettierignore + +echo "βœ… Done!" \ No newline at end of file