├── .editorconfig ├── .eslintrc.js ├── .gitattributes ├── .github ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug-report.yml │ ├── feature-request.yml │ ├── question.yml │ └── requested-change.yml ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── assign-to-project.yml │ ├── build-test.yml │ ├── create-release.yml │ └── publish-vs-code-extension.yml ├── .gitignore ├── .nvmrc ├── .vscode └── launch.json ├── .vscodeignore ├── CHANGELOG.md ├── DEVELOPERS.md ├── LICENSE ├── README.md ├── TROUBLESHOOTING.md ├── extension.code-workspace ├── extension ├── index.js ├── resources │ ├── dark │ │ ├── checked.svg │ │ ├── reset.svg │ │ ├── settings.svg │ │ ├── toggle-off.svg │ │ ├── toggle-on.svg │ │ └── unchecked.svg │ ├── icon.png │ ├── light │ │ ├── checked.svg │ │ ├── reset.svg │ │ ├── settings.svg │ │ ├── toggle-off.svg │ │ ├── toggle-on.svg │ │ └── unchecked.svg │ └── welcome.html ├── util.js ├── viewpane.js └── welcome.js ├── package-lock.json ├── package.json ├── package.nls.bg.json ├── package.nls.de.json ├── package.nls.es.json ├── package.nls.fr.json ├── package.nls.hu.json ├── package.nls.it.json ├── package.nls.ja.json ├── package.nls.json ├── package.nls.ko.json ├── package.nls.pt-br.json ├── package.nls.ru.json ├── package.nls.tr.json ├── package.nls.zh-cn.json └── package.nls.zh-tw.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | # Unix-style newlines with a newline ending every file 5 | [*] 6 | end_of_line = lf 7 | insert_final_newline = true 8 | indent_style = space 9 | indent_size = 2 10 | trim_trailing_whitespace = true 11 | 12 | [package.json] 13 | indent_style = space 14 | indent_size = 2 15 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parserOptions: { 4 | parser: 'babel-eslint', 5 | ecmaVersion: 8, 6 | }, 7 | env: { 8 | es6: true, 9 | node: true, 10 | browser: true, 11 | jest: true, 12 | }, 13 | plugins: ['prettier'], 14 | extends: ['eslint:recommended', 'prettier'], 15 | rules: { 16 | 'prettier/prettier': [ 17 | 'error', 18 | { 19 | singleQuote: true, 20 | bracketSpacing: true, 21 | semi: false, 22 | printWidth: 500, 23 | }, 24 | ], 25 | 'no-empty': [ 26 | 'error', 27 | { 28 | allowEmptyCatch: true, 29 | }, 30 | ], 31 | 'no-console': 0, 32 | 'no-control-regex': 0, 33 | 'no-useless-escape': 0, 34 | }, 35 | globals: {}, 36 | } 37 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at me@peterschmalfeldt.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Contributing Guide 2 | === 3 | 4 | Issues & Feature Requests 5 | --- 6 | 7 | [![Create Issue](https://img.shields.io/badge/Github-Create_Issue-red.svg?style=for-the-badge&logo=github&logoColor=ffffff&logoWidth=16)](https://github.com/sfccdevops/explorer-exclude-vscode-extension/issues/new/choose) 8 | 9 | ### Bug Fix 10 | 11 | > We're sorry things are not working as expected, and want to get things fixed ASAP. In order to help us do that, we need a few things from you. 12 | 13 | 1. Create a [New Issue](https://github.com/sfccdevops/explorer-exclude-vscode-extension/issues/new/choose) 14 | 2. Enter a Short but Descriptive Title for the Issue 15 | 3. Use the Template Provided and fill in as much as you can, if something does not apply, enter `N/A` 16 | 4. Look for the `Labels` section, and select `Bug Report` from the drop down menu 17 | 5. Click `Submit new issue` button 18 | 19 | ### Feature Request 20 | 21 | > Got an idea for a new feature? We'd love to hear it! In order to get this knocked out, we will need a few things from you. 22 | 23 | 1. Create a [New Issue](https://github.com/sfccdevops/explorer-exclude-vscode-extension/issues/new/choose) 24 | 2. Enter a Short but Descriptive Title for the Feature Request 25 | 3. Use the Template Provided and fill in as much as you can, if something does not apply, enter `N/A` ( you can delete the `Steps to Duplicate:` section as that does not apply ) 26 | 4. Look for the `Labels` section, and select `Feature Request` from the drop down menu 27 | 5. Click `Submit new issue` button 28 | 29 | Pull Requests 30 | --- 31 | 32 | [![Create Pull Request](https://img.shields.io/badge/Github-Create_Pull_Request-blue.svg?style=for-the-badge&logo=github&logoColor=ffffff&logoWidth=16)](https://github.com/sfccdevops/explorer-exclude-vscode-extension/compare) 33 | 34 | ### Bug Fix 35 | 36 | > Each Bug Fix reported on GitHub should have its own `fix/*` branch. The branch name should be formatted `fix/###-issue-name` where `###` is the GitHub Issue Number, and `issue-name` is a 1-3 word summary of the issue. 37 | 38 | 1. Checkout latest `develop` branch 39 | 2. Pull down the latest changes via `git pull` 40 | 3. Create a new branch with the structure `fix/*`, e.g. `fix/123-broken-form` 41 | 4. When you are ready to submit your code, submit a new Pull Request that merges your code into `develop` 42 | 5. Tag your new Pull Request with `Ready for Code Review` 43 | 44 | ### Feature Request 45 | 46 | > Each New Feature should reside in its own `feature/` branch. The branch name should be formatted `feature/###-feature-name` where `###` is the GitHub Issue Number, and `feature-name` is a 1-3 word summary of the feature. 47 | 48 | 1. Checkout latest `develop` branch 49 | 2. Pull down the latest changes via `git pull` 50 | 3. Create a new branch with the structure `feature/*`, e.g. `feature/123-search-form` 51 | 4. When you are ready to submit your code, submit a new Pull Request that merges your code into `develop` 52 | 5. Tag your new Pull Request with `Ready for Code Review` 53 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: sfccdevops 2 | patreon: peter_schmalfeldt 3 | custom: https://www.paypal.me/manifestinteractive 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.yml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: I would like to Report a Bug 3 | labels: [Bug Report] 4 | assignees: 5 | - manifestinteractive 6 | body: 7 | - type: checkboxes 8 | attributes: 9 | label: Is there an existing issue for this? 10 | description: Please search to see if an issue already exists for the bug you encountered. 11 | options: 12 | - label: I have searched the existing issues 13 | required: true 14 | - type: textarea 15 | attributes: 16 | label: Describe the Bug 17 | description: A clear and concise description of what the bug is. 18 | validations: 19 | required: true 20 | - type: textarea 21 | attributes: 22 | label: Extension Output 23 | description: Paste the `Explorer Exclude` Output Log to your ticket. 24 | placeholder: | 25 | 1. Select `View` > `Output` from the Main Menu 26 | 2. Select `Explorer Exclude` from Output Select List 27 | 3. Copy all Output from log and paste in this text field 28 | validations: 29 | required: true 30 | - type: textarea 31 | attributes: 32 | label: Steps To Reproduce 33 | description: Steps to reproduce the behavior. 34 | placeholder: | 35 | 1. Go to ... 36 | 2. Click on ... 37 | 3. Scroll down to ... 38 | 4. See error ... 39 | validations: 40 | required: true 41 | - type: textarea 42 | attributes: 43 | label: Expected Behavior 44 | description: A concise description of what you expected to happen. 45 | validations: 46 | required: false 47 | - type: textarea 48 | attributes: 49 | label: Screenshots 50 | description: If applicable, add screenshots to help explain your problem. 51 | validations: 52 | required: false 53 | - type: textarea 54 | attributes: 55 | label: Environment 56 | description: | 57 | examples: 58 | - **OS**: Ubuntu 20.04 59 | - **Node**: 13.14.0 60 | - **npm**: 7.6.3 61 | value: | 62 | - OS: 63 | - Node: 64 | - npm: 65 | render: markdown 66 | validations: 67 | required: false 68 | - type: textarea 69 | attributes: 70 | label: Additional Context 71 | description: | 72 | Links? References? Anything that will give us more context about the issue you are encountering! 73 | 74 | Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. 75 | validations: 76 | required: false 77 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.yml: -------------------------------------------------------------------------------- 1 | name: Feature Request 2 | description: This is a new Feature Request for this project 3 | labels: [Feature Request] 4 | assignees: 5 | - manifestinteractive 6 | body: 7 | - type: textarea 8 | attributes: 9 | label: Describe the Problem 10 | description: Is your feature request related to a problem? Please describe. 11 | placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | validations: 13 | required: true 14 | - type: textarea 15 | attributes: 16 | label: Describe the Solution 17 | description: Describe the solution you'd like 18 | placeholder: A clear and concise description of what you want to happen. 19 | validations: 20 | required: true 21 | - type: textarea 22 | attributes: 23 | label: Alternatives 24 | description: Describe alternatives you've considered 25 | placeholder: A clear and concise description of any alternative solutions or features you've considered. 26 | validations: 27 | required: false 28 | - type: textarea 29 | attributes: 30 | label: Additional Context 31 | description: | 32 | Add any other context or screenshots about the feature request here. 33 | 34 | Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. 35 | validations: 36 | required: false 37 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.yml: -------------------------------------------------------------------------------- 1 | name: Question 2 | description: I have a Question about this project 3 | labels: [Question] 4 | assignees: 5 | - manifestinteractive 6 | body: 7 | - type: textarea 8 | attributes: 9 | label: Question 10 | description: Please Write your Question Below. 11 | validations: 12 | required: true 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/requested-change.yml: -------------------------------------------------------------------------------- 1 | name: Requested Change 2 | description: This is a Requested Change to the project 3 | labels: [Requested Change] 4 | assignees: 5 | - manifestinteractive 6 | body: 7 | - type: textarea 8 | attributes: 9 | label: Describe the Problem 10 | description: Is your requested change related to a problem? Please describe. 11 | placeholder: A clear and concise description of what the request is. 12 | validations: 13 | required: true 14 | - type: textarea 15 | attributes: 16 | label: Describe the Solution 17 | description: Describe the solution you'd like 18 | placeholder: A clear and concise description of what you want to happen. 19 | validations: 20 | required: true 21 | - type: textarea 22 | attributes: 23 | label: Alternatives 24 | description: Describe alternatives you've considered 25 | placeholder: A clear and concise description of any alternative solutions or features you've considered. 26 | validations: 27 | required: false 28 | - type: textarea 29 | attributes: 30 | label: Additional Context 31 | description: | 32 | Add any other context or screenshots about the feature request here. 33 | 34 | Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. 35 | validations: 36 | required: false 37 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Overview 2 | --- 3 | 4 | TEXT 5 | 6 | Reviewer 7 | --- 8 | 9 | > Where should the reviewer start? How to Test? Background Context? etc ( required ) 10 | 11 | TEXT 12 | 13 | Checklist 14 | --- 15 | 16 | > I have tested each of the following, and they work as expected: ( required ) 17 | 18 | - [ ] Meets [Contributing Guide](https://github.com/sfccdevops/explorer-exclude-vscode-extension/blob/develop/.github/CONTRIBUTING.md) Requirements 19 | - [ ] Pulled in the Latest Code from the `develop` branch 20 | - [ ] Works on a Desktop / Laptop Device 21 | 22 | Documentation 23 | --- 24 | 25 | > Screenshots, Attachments, Linked GitHub Issues, etc ( optional ) 26 | 27 | 28 | 29 | #### What GIF best describes this PR or how it makes you feel? 30 | 31 | > Drag & Drop Something Fun Here ( optional ) 32 | -------------------------------------------------------------------------------- /.github/workflows/assign-to-project.yml: -------------------------------------------------------------------------------- 1 | name: Assign to Project 2 | on: 3 | issues: 4 | types: 5 | - opened 6 | pull_request: 7 | types: 8 | - opened 9 | env: 10 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 11 | jobs: 12 | assign_to_project: 13 | runs-on: ubuntu-latest 14 | name: Assign to Project 15 | steps: 16 | - name: Check GitHub Event Action 17 | uses: srggrs/assign-one-project-github-action@1.2.0 18 | if: github.event.action == 'opened' 19 | with: 20 | project: 'https://github.com/sfccdevops/explorer-exclude-vscode-extension/projects/1' 21 | -------------------------------------------------------------------------------- /.github/workflows/build-test.yml: -------------------------------------------------------------------------------- 1 | name: Build & Test 2 | on: 3 | push: 4 | branches: 5 | - develop 6 | pull_request: 7 | branches: 8 | - develop 9 | jobs: 10 | build_and_test: 11 | name: Build Application and Run Tests 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Check out Repository 15 | uses: actions/checkout@v2 16 | - name: Use Node.js 17 | uses: actions/setup-node@v1 18 | with: 19 | node-version: '14.x' 20 | - run: npm install 21 | - run: npm test 22 | -------------------------------------------------------------------------------- /.github/workflows/create-release.yml: -------------------------------------------------------------------------------- 1 | name: Create Release 2 | on: 3 | push: 4 | tags: 5 | - 'v*' 6 | jobs: 7 | release: 8 | if: startsWith(github.ref, 'refs/tags/') 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Build Changelog 12 | id: github_release 13 | uses: mikepenz/release-changelog-builder-action@v1 14 | env: 15 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 16 | - name: Create Release 17 | uses: actions/create-release@v1 18 | with: 19 | tag_name: ${{ github.ref }} 20 | release_name: Release ${{ github.ref }} 21 | body: ${{steps.github_release.outputs.changelog}} 22 | draft: false 23 | prerelease: false 24 | env: 25 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 26 | -------------------------------------------------------------------------------- /.github/workflows/publish-vs-code-extension.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Extension 2 | on: 3 | push: 4 | tags: 5 | - 'v*' 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - uses: actions/setup-node@v1 12 | with: 13 | node-version: 16 14 | - run: npm ci 15 | # - name: Publish to Open VSX Registry 16 | # uses: HaaLeo/publish-vscode-extension@v1 17 | # id: publishToOpenVSX 18 | # with: 19 | # pat: ${{ secrets.OPEN_VSX_TOKEN }} 20 | - name: Publish to Visual Studio Marketplace 21 | uses: HaaLeo/publish-vscode-extension@v1 22 | id: publishToMarketplace 23 | with: 24 | pat: ${{ secrets.VS_MARKETPLACE_TOKEN }} 25 | registryUrl: https://marketplace.visualstudio.com 26 | extensionFile: ${{ steps.publishToOpenVSX.outputs.vsixPath }} 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | !.nvmrc 2 | .vscode/settings.json 3 | *.code-workspace 4 | *.vsix 5 | node_modules 6 | !extension.code-workspace 7 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v14.19.0 2 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Run Extension", 6 | "type": "extensionHost", 7 | "request": "launch", 8 | "runtimeExecutable": "${execPath}", 9 | "args": ["--extensionDevelopmentPath=${workspaceFolder}"] 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .gitignore 3 | .github 4 | .editorconfig 5 | .eslintrc.js 6 | .gitattributes 7 | .gitignore 8 | .nvmrc 9 | *.vsix 10 | *.code-workspace 11 | DEVELOPERS.md 12 | TROUBLESHOOTING.md 13 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Change Log 2 | === 3 | 4 | > Here's our record of all notable changes made to to this project 5 | 6 | v1.3.2 7 | --- 8 | 9 | * Add additional fallback for Workspace Detection ( Thanks @bjrmatos ) 10 | * Move Missing Workspace Message to Panel rather than show alert ( Thanks @colas31 ) 11 | * Revert Glob Pattern Change that used OS Path Separator 12 | 13 | v1.3.1 14 | --- 15 | 16 | * Fixed Naming Issue in PackageJSON 17 | 18 | v1.3.0 19 | --- 20 | 21 | * Added system indicator to VS Code File Excludes that cannot be removed 22 | * Add the ability to not show picker and directly exclude selected file ( Thanks @rw3iss ) 23 | * Updated Workspace Detection to handle a few more unique use cases 24 | * Updated default null settings to {} vs null ( Thanks @Himadu2000 ) 25 | * Added JSON Settings Linter Fix ( Thanks @MatthewTh0 ) 26 | 27 | v1.2.0 28 | --- 29 | 30 | * Added new Hidden Items Pane Menu 31 | 32 | ![pane-menu](https://explorer-exclude.s3.amazonaws.com/pane-menu.gif?v=1.2.0) 33 | 34 | v1.1.0 35 | --- 36 | 37 | * Add Language Translations for [VS Code Supported Locales](https://code.visualstudio.com/docs/getstarted/locales#_available-locales) 38 | * Fix bug with Command Pallet showing Explorer Exclude as available commands when it should not 39 | 40 | v1.0.1 41 | --- 42 | 43 | * Extensions like Prophet Debugger were creating virtual folders in / for accessing log files, and this created a weird bug in the logic that tried to detect project paths 44 | * Added .github folder to help automate issue reporting 45 | * Updated logo with dark background for search results Marketplace page 46 | 47 | v1.0.0 48 | --- 49 | 50 | * Initial Release 51 | -------------------------------------------------------------------------------- /DEVELOPERS.md: -------------------------------------------------------------------------------- 1 | Developer Setup 2 | === 3 | 4 | Extension Development 5 | --- 6 | 7 | ### Downloading Extension 8 | 9 | > To get started developing this extension, you will first need to download the source code: 10 | 11 | ```bash 12 | git clone git@github.com:sfccdevops/explorer-exclude-vscode-extension.git 13 | cd explorer-exclude-vscode-extension 14 | npm install 15 | ``` 16 | 17 | ### Testing Extension 18 | 19 | > To develop this extension in VS Code: 20 | 21 | 1. Open File `extension.code-workspace` in VS Code 22 | 2. Run `npm install` in VS Code Terminal 23 | 3. Press `F5` to launch extension in a new VS Code window 24 | 25 | NOTE: The first time you press `F5` it may launch in an empty workspace. You will likely need to open an SFCC project into this new VS Code window in order to test the extension. 26 | 27 | Multilingual Support 28 | --- 29 | 30 | > Want this extension in another language? Translations for [VS Code Supported Locales](https://code.visualstudio.com/docs/getstarted/locales#_available-locales) can easily be added: 31 | 32 | **To make a Translation:** 33 | 34 | 1. Open `package.nls.json` 35 | 2. Save as a new file with language code, e.g. `Spanish` would be `package.nls.es.json` 36 | 3. Update JSON Values with your custom language 37 | 4. Double check everything works 38 | 5. Submit a Pull Request with a new translation file 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 SFCC DevOps 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Project Support 2 | === 3 | 4 | If you or your company enjoy using this project, please consider supporting my work and joining my discord. 💖 5 | 6 | [![Become a GitHub Sponsor](https://img.shields.io/badge/Sponsor-171515.svg?logo=github&logoColor=white&style=for-the-badge "Become a GitHub Sponsor")](https://github.com/sponsors/sfccdevops) 7 | [![Become a Patreon Sponsor](https://img.shields.io/badge/Sponsor-FF424D.svg?logo=patreon&logoColor=white&style=for-the-badge "Become a Patreon Sponsor")](https://patreon.com/peter_schmalfeldt) 8 | [![Donate via PayPal](https://img.shields.io/badge/Donate-169BD7.svg?logo=paypal&logoColor=white&style=for-the-badge "Donate via PayPal")](https://www.paypal.me/manifestinteractive) 9 | [![Join Discord Community](https://img.shields.io/badge/Community-5865F2.svg?logo=discord&logoColor=white&style=for-the-badge "Join Discord Community")](https://discord.gg/StrwxWqh5Y) 10 | 11 | ------ 12 | 13 | ![Logo](https://sfccdevops.s3.amazonaws.com/logo-128.png "Logo") 14 | 15 | Explorer Exclude - VS Code Extension 16 | --- 17 | 18 | > Context Menu and Explorer Panel to Manage Showing & Hiding Excluded Files & Folders ( for VS Code version 1.60 or newer ) 19 | 20 | ![screenshot](https://explorer-exclude.s3.amazonaws.com/screenshot.png?v=1.3.0) 21 | 22 | - [X] Easily Hide Files & Folders from Explorer, Search Results & Quick Open 23 | - [X] New Hidden Items Explorer Pane to Manage Hidden Items 24 | - [X] Works with Multiple Workspaces 25 | - [X] Quickly Toggle Visibility of Hidden Items 26 | - [X] Translations for [VS Code Supported Locales](https://code.visualstudio.com/docs/getstarted/locales#_available-locales): _( English, Simplified Chinese, Traditional Chinese, French, German, Italian, Spanish, Japanese, Korean, Russian, Bulgarian, Hungarian, Portuguese & Turkish )_ 27 | 28 | Usage 29 | --- 30 | 31 | #### Hiding Files & Folders 32 | 33 | Right-click on any File or Folder in Explorer List to Hide Items 34 | 35 | ![explorer](https://explorer-exclude.s3.amazonaws.com/explorer.gif?v=1.3.0) 36 | 37 | Select Filter Options you wish to Hide Files & Folders 38 | 39 | ![picker](https://explorer-exclude.s3.amazonaws.com/picker.gif?v=1.3.0) 40 | 41 | You can disable the filter option popup, and by default only allow the selected item to be hidden, by adding this setting in VSCode: 42 | 43 | `"explorerExclude.showPicker": false` 44 | 45 | #### Managing Hidden Files & Folders 46 | 47 | New `HIDDEN ITEMS` Explorer Pane to Manage Hidden Files: 48 | 49 | * Click an item in the Hidden Items pane to quickly toggle its visibility 50 | * Right-click an item to view Context Menu where you can Permanently Remove item 51 | * Use Hidden Items Menu to manage multiple items at once 52 | 53 | ![view-pane](https://explorer-exclude.s3.amazonaws.com/view-pane.gif?v=1.3.0) 54 | ![pane-menu](https://explorer-exclude.s3.amazonaws.com/pane-menu.gif?v=1.3.0) 55 | 56 | Need Help? 57 | --- 58 | 59 | > Check out or Troubleshooting Page for help with any known issues or report new ones. 60 | 61 | [![Create Issue](https://img.shields.io/badge/Get_Help-Troubleshooting-red.svg?style=for-the-badge&logo=github&logoColor=ffffff&logoWidth=16)](https://github.com/sfccdevops/explorer-exclude-vscode-extension/blob/develop/TROUBLESHOOTING.md) 62 | 63 | About the Author 64 | --- 65 | 66 | > [Peter Schmalfeldt](https://peterschmalfeldt.com/) is a Certified Senior Salesforce Commerce Cloud Developer with over 20 years of experience building eCommerce websites, providing everything you need to design, develop & deploy eCommerce applications for Web, Mobile & Desktop platforms. 67 | 68 | Disclaimer 69 | --- 70 | 71 | > The trademarks and product names of Salesforce®, including the mark Salesforce®, are the property of Salesforce.com. SFCC DevOps is not affiliated with Salesforce.com, nor does Salesforce.com sponsor or endorse the SFCC DevOps products or website. The use of the Salesforce® trademark on this project does not indicate an endorsement, recommendation, or business relationship between Salesforce.com and SFCC DevOps. 72 | -------------------------------------------------------------------------------- /TROUBLESHOOTING.md: -------------------------------------------------------------------------------- 1 | Troubleshooting 2 | === 3 | 4 | > This document contains a list of known issues, and how to solve them. 5 | 6 | `Nothing Shows Up After Update` 7 | --- 8 | 9 | This can happen if you had the extension installed before. To fix this: 10 | 11 | 1. Switch to `Extensions` in Left Column 12 | 2. Look for `Explorer Exclude` 13 | 3. Check to see if it has a `Reload Required` button, it if does, click it ( extension will not work until you do ) 14 | 15 | If that was not the case, you may need: 16 | 17 | 1. Uninstall `Explorer Exclude` Extension 18 | 2. Restart VS Code 19 | 3. Reinstall `Explorer Exclude` Extension 20 | 21 | `Unable to install Extension` 22 | --- 23 | 24 | If you are getting an error like this one: 25 | 26 | ``` 27 | Unable to install Extension 'sfccdevops.explorer-exclude-vscode-extension-1.3.0' as it is not compatible with Code '1.26.0'. 28 | ``` 29 | 30 | It is because you downloaded the Extension from the VS Code Marketplace Website manually ( and not through VS Code's internal extension listing ) and tried to install it into an older, unsupported version of VS Code. 31 | 32 | This extension requires VS Code v1.60 or newer. If you would like to install this extension, you will need to [update VS Code](https://code.visualstudio.com/download) to version v1.60 or newer. 33 | 34 | Need Help? 35 | === 36 | 37 | > Did not find what you are looking for? Check out our current reported issues to see if someone else is having the same problem. 38 | 39 | [![Create Issue](https://img.shields.io/badge/Get_Help-View_Issues-blue.svg?style=for-the-badge&logo=github&logoColor=ffffff&logoWidth=16)](https://github.com/sfccdevops/explorer-exclude-vscode-extension/issues) 40 | 41 | > Still did not find what you were looking for? 42 | 43 | [![Create Issue](https://img.shields.io/badge/Get_Help-Submit_Issue-red.svg?style=for-the-badge&logo=github&logoColor=ffffff&logoWidth=16)](https://github.com/sfccdevops/explorer-exclude-vscode-extension/issues/new/choose) 44 | 45 | **NOTE**: If you're reporting a new bug, add our `Explorer Exclude` Output Log to your ticket. You can access this log at anytime to see output generated by our extension: 46 | 47 | 1. Select `View` > `Output` from the Main Menu 48 | 2. Select `Explorer Exclude` from Output Select List 49 | 3. Copy all Output from log and paste it in the `Extension Output` section of the ticket 50 | -------------------------------------------------------------------------------- /extension.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ], 7 | "settings": { 8 | "cSpell.words": [ 9 | "mikepenz", 10 | "sfccdevops", 11 | "srggrs", 12 | "viewpane", 13 | "vsix" 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /extension/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const vscode = require('vscode') 4 | const { init, localize } = require('vscode-nls-i18n') 5 | 6 | const util = require('./util') 7 | const ViewPane = require('./viewpane') 8 | const WelcomePane = require('./welcome') 9 | 10 | /** 11 | * Handle Activating Extension 12 | * @param {*} context 13 | */ 14 | function activate(context) { 15 | // Initialize Localization 16 | init(context.extensionPath) 17 | 18 | const timeout = 25 19 | const pane = new ViewPane('explorerExclude.pane.items') 20 | 21 | // Get Extension Version Info 22 | const currentVersion = context.globalState.get('explorer-exclude.version') 23 | const packageVersion = vscode.extensions.getExtension('PeterSchmalfeldt.explorer-exclude').packageJSON.version 24 | 25 | // Check if there was a recent change to installed version 26 | if (currentVersion !== packageVersion) { 27 | // Update version number so we don't show this again until next update 28 | context.globalState.update('explorer-exclude.version', packageVersion) 29 | 30 | // Show Welcome Modal since this is a new version or install 31 | const welcome = new WelcomePane() 32 | welcome.show() 33 | } 34 | 35 | const disableAll = vscode.commands.registerCommand('explorer-exclude.disableAll', () => { 36 | util.logger('Disable All Excludes', 'debug') 37 | util.disableAll(function () { 38 | setTimeout(function () { 39 | pane.update(util.getExcludes()) 40 | }, timeout) 41 | }) 42 | }) 43 | 44 | const enableAll = vscode.commands.registerCommand('explorer-exclude.enableAll', () => { 45 | util.logger('Enable All Excludes', 'debug') 46 | util.enableAll(function () { 47 | setTimeout(function () { 48 | pane.update(util.getExcludes()) 49 | }, timeout) 50 | }) 51 | }) 52 | 53 | const exclude = vscode.commands.registerCommand('explorer-exclude.exclude', (uri) => { 54 | util.exclude(uri, function () { 55 | setTimeout(function () { 56 | pane.update(util.getExcludes()) 57 | }, timeout) 58 | }) 59 | }) 60 | 61 | const openSettings = vscode.commands.registerCommand('explorer-exclude.openSettings', () => { 62 | util.logger('Opening Explorer Exclude Settings', 'debug') 63 | vscode.commands.executeCommand('workbench.action.openSettings', 'explorerExclude.') 64 | setTimeout(function () { 65 | vscode.commands.executeCommand('workbench.action.openWorkspaceSettings') 66 | }, 1000) 67 | }) 68 | 69 | const remove = vscode.commands.registerCommand('explorer-exclude.remove', (uri) => { 70 | if (uri && uri.value) { 71 | const value = uri.value 72 | const key = value.substring(0, value.length - 2) 73 | 74 | util.logger(`Remove: ${key}`, 'debug') 75 | 76 | util.deleteExclude(key, function () { 77 | setTimeout(function () { 78 | pane.update(util.getExcludes()) 79 | }, timeout) 80 | }) 81 | } 82 | }) 83 | 84 | const reset = vscode.commands.registerCommand('explorer-exclude.reset', async () => { 85 | const value = await vscode.window.showInputBox({ 86 | prompt: localize('reset.prompt'), 87 | }) 88 | 89 | if (typeof value !== 'undefined') { 90 | util.logger('Reset Explorer Exclude', 'debug') 91 | 92 | util.reset(function () { 93 | setTimeout(function () { 94 | pane.update(util.getExcludes()) 95 | }, timeout) 96 | }) 97 | } 98 | }) 99 | 100 | const toggle = vscode.commands.registerCommand('explorer-exclude.toggle', (uri) => { 101 | util.toggleExclude(uri, function () { 102 | setTimeout(function () { 103 | pane.update(util.getExcludes()) 104 | }, timeout) 105 | }) 106 | }) 107 | 108 | const toggleAllOff = vscode.commands.registerCommand('explorer-exclude.toggleAllOff', () => { 109 | util.logger('Toggle All Excludes: OFF', 'debug') 110 | util.toggleAll(function () { 111 | setTimeout(function () { 112 | pane.update(util.getExcludes()) 113 | }, timeout) 114 | }) 115 | }) 116 | 117 | const toggleAllOn = vscode.commands.registerCommand('explorer-exclude.toggleAllOn', () => { 118 | util.logger('Toggle All Excludes: ON', 'debug') 119 | util.toggleAll(function () { 120 | setTimeout(function () { 121 | pane.update(util.getExcludes()) 122 | }, timeout) 123 | }) 124 | }) 125 | 126 | // Set Initial State of Extension 127 | vscode.commands.executeCommand('setContext', 'explorer-exclude.enabled', true) 128 | vscode.commands.executeCommand('setContext', 'explorer-exclude.hasLoaded', true) 129 | 130 | // Save Extension Context for later use 131 | util.saveContext(context) 132 | 133 | // Initialize Hidden Items Pane 134 | pane.update(util.getExcludes()) 135 | 136 | // Update VS Code Extension Subscriptions 137 | context.subscriptions.push(disableAll) 138 | context.subscriptions.push(enableAll) 139 | context.subscriptions.push(exclude) 140 | context.subscriptions.push(openSettings) 141 | context.subscriptions.push(remove) 142 | context.subscriptions.push(reset) 143 | context.subscriptions.push(toggle) 144 | context.subscriptions.push(toggleAllOff) 145 | context.subscriptions.push(toggleAllOn) 146 | } 147 | 148 | /** 149 | * Handle Deactivating Extension 150 | */ 151 | function deactivate() { 152 | vscode.commands.executeCommand('setContext', 'explorer-exclude.enabled', false) 153 | } 154 | 155 | module.exports = { 156 | activate, 157 | deactivate, 158 | } 159 | -------------------------------------------------------------------------------- /extension/resources/dark/checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 16 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /extension/resources/dark/reset.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /extension/resources/dark/settings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /extension/resources/dark/toggle-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /extension/resources/dark/toggle-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /extension/resources/dark/unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /extension/resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sfccdevops/explorer-exclude-vscode-extension/c8324ca8a97da4f28e535b23b3876868d38c5266/extension/resources/icon.png -------------------------------------------------------------------------------- /extension/resources/light/checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 16 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /extension/resources/light/reset.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /extension/resources/light/settings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /extension/resources/light/toggle-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /extension/resources/light/toggle-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /extension/resources/light/unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /extension/resources/welcome.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Explorer Exclude Welcome 7 | 60 | 61 | 62 |
{{README}}
63 | 64 |
{{CHANGELOG}}
65 | 66 |
{{TROUBLESHOOTING}}
67 | 68 | -------------------------------------------------------------------------------- /extension/util.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const fs = require('fs') 4 | const path = require('path') 5 | const util = require('util') 6 | const vscode = require('vscode') 7 | 8 | const { init, localize } = require('vscode-nls-i18n') 9 | 10 | // Create custom Output Channel to Log Helpful Messages 11 | const output = vscode.window.createOutputChannel('Explorer Exclude') 12 | 13 | // Setup Workspace Variables 14 | let workspace = vscode.workspace.rootPath 15 | let context = null 16 | 17 | /** 18 | * Custom Await Method for Processing Hidden File Config 19 | */ 20 | const _await = 21 | (this && this._await) || 22 | function (thisArg, _arguments, P, generator) { 23 | return new (P || (P = Promise))(function (resolve, reject) { 24 | function fulfilled(value) { 25 | try { 26 | step(generator.next(value)) 27 | } catch (err) { 28 | reject(err) 29 | } 30 | } 31 | function rejected(value) { 32 | try { 33 | step(generator['throw'](value)) 34 | } catch (err) { 35 | reject(err) 36 | } 37 | } 38 | function step(result) { 39 | result.done 40 | ? resolve(result.value) 41 | : new P(function (resolve) { 42 | resolve(result.value) 43 | }).then(fulfilled, rejected) 44 | } 45 | step((generator = generator.apply(thisArg, _arguments || [])).next()) 46 | }) 47 | } 48 | 49 | /** 50 | * Get VS Code Workspace Base 51 | * @param {*} context 52 | * @returns 53 | */ 54 | const getWorkspace = (context) => { 55 | // Initialize Localization 56 | init(context.extensionPath) 57 | 58 | let root 59 | let workspace 60 | 61 | // Check for missing VS Code Workspace, if present, otherwise use context path 62 | if (context && !vscode.workspace && !vscode.workspace.workspaceFolders) { 63 | workspace = vscode.workspace.rootPath ? vscode.workspace.rootPath : path.dirname(context.fsPath) 64 | } else { 65 | // We have a Workspace, now let's figure out if it's single or multiroot 66 | if (vscode.workspace && vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length === 1) { 67 | // There was only one Workspace, so we can just use it 68 | root = vscode.workspace.workspaceFolders[0] 69 | workspace = root && root.uri ? root.uri.fsPath : null 70 | } else if (vscode.workspace && vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 1) { 71 | // There is more than one Workspace, so let's grab the active one 72 | if (vscode.window.activeTextEditor) { 73 | // Since there is a file active, let's find the workspace from that file 74 | root = vscode.workspace.workspaceFolders.find((wsFolder) => { 75 | const relative = path.relative(wsFolder.uri.fsPath, vscode.window.activeTextEditor.document.uri.path) 76 | return relative && !relative.startsWith('..') && !path.isAbsolute(relative) 77 | }) 78 | 79 | // The file that is active does not belong to any of the workspace folders, so let's use the first workspace 80 | if (!root) { 81 | root = vscode.workspace.workspaceFolders[0] 82 | } 83 | 84 | workspace = root && root.uri ? root.uri.fsPath : null 85 | } else { 86 | // No file was open, so just grab the first available workspace 87 | root = vscode.workspace.workspaceFolders[0] 88 | workspace = root && root.uri ? root.uri.fsPath : null 89 | } 90 | } else if (context && vscode.workspace) { 91 | // Something else is going on, let's see if we can still figure it out 92 | try { 93 | root = vscode.workspace.getWorkspaceFolder(context) 94 | workspace = root && root.uri ? root.uri.fsPath : null 95 | } catch (err) { 96 | logger(localize('debug.logger.error', 'getWorkspace:fetch', err.toString()), 'error') 97 | } 98 | } 99 | } 100 | 101 | // If we did not get Workspace, let the user know 102 | if (!workspace) { 103 | const message = localize('debug.logger.missingWorkspace') 104 | logger(localize('debug.logger.error', 'getWorkspace', message), 'error') 105 | 106 | vscode.commands.executeCommand('setContext', 'explorer-exclude.missingWorkspace', true) 107 | vscode.commands.executeCommand('setContext', 'explorer-exclude.hasLoaded', true) 108 | } 109 | 110 | // Debug Cartridge Path 111 | logger(localize('debug.logger.workspace', workspace)) 112 | 113 | return workspace 114 | } 115 | 116 | /** 117 | * Check if Path Exists 118 | * @param {string} _path 119 | */ 120 | const ifExists = (_path) => { 121 | if (isUnavailable(_path)) { 122 | return Promise.reject(new Error(localize('error.ifExists', _path))) 123 | } 124 | return new Promise((res, rej) => { 125 | fs.access(_path, (error) => { 126 | if (util.isNullOrUndefined(error)) { 127 | res(true) 128 | } else { 129 | rej(error) 130 | } 131 | }) 132 | }) 133 | } 134 | 135 | /** 136 | * Check if path is defined 137 | * @param {string} _path 138 | */ 139 | const isUnavailable = (_path) => { 140 | return util.isNullOrUndefined(_path) || _path === '' 141 | } 142 | 143 | /** 144 | * Parse File Path 145 | * @param {string} _file 146 | * @param {string} _root 147 | */ 148 | const parseFilePath = (_file, _root = '') => { 149 | return _await(this, void 0, void 0, function* () { 150 | if (isUnavailable(_file)) { 151 | return Promise.reject(new Error(localize('error.parseFilePath', _file))) 152 | } 153 | 154 | try { 155 | yield ifExists(_file) 156 | 157 | const ext = path.extname(_file) 158 | const base = path.basename(_file) 159 | const dir = path.relative(_root, path.dirname(_file)) 160 | 161 | return { 162 | path: _file, 163 | ext, 164 | base, 165 | dir, 166 | } 167 | } catch (err) { 168 | logger(localize('debug.logger.error', 'parseFilePath', err.toString()), 'error') 169 | return Promise.reject(err) 170 | } 171 | }) 172 | } 173 | 174 | /** 175 | * Show Item Select Menu 176 | * @param {array} items 177 | */ 178 | const showPicker = (items) => { 179 | return vscode.window.showQuickPick(items, { 180 | placeHolder: localize('picker.placeholder'), 181 | canPickMany: true, 182 | }) 183 | } 184 | 185 | /** 186 | * Write Exclude Updates to Config File 187 | * @param {object} excludes 188 | * @param {function} callback 189 | * @param {string} message 190 | */ 191 | const updateConfig = (excludes, callback, message) => { 192 | try { 193 | vscode.commands.executeCommand('setContext', 'explorer-exclude.enabled', true) 194 | 195 | // Update Main VS Code File Exclude 196 | vscode.workspace 197 | .getConfiguration() 198 | .update('files.exclude', excludes, vscode.ConfigurationTarget.Workspace) 199 | .then(() => { 200 | // Remove Backup since we made a manual change 201 | vscode.workspace 202 | .getConfiguration() 203 | .update('explorerExclude.backup', {}, vscode.ConfigurationTarget.Workspace) 204 | .then(() => { 205 | if (message) { 206 | vscode.window.showInformationMessage(message) 207 | } 208 | 209 | if (typeof callback === 'function') { 210 | callback() 211 | } 212 | }) 213 | }) 214 | } catch (err) { 215 | logger(localize('debug.logger.error', 'updateConfig', err.toString()), 'error') 216 | vscode.window.showErrorMessage(err.message || err) 217 | } 218 | } 219 | 220 | /** 221 | * Delete Key from Exclude Config 222 | * @param {string} key 223 | * @param {function} callback 224 | */ 225 | function deleteExclude(key, callback) { 226 | if (!key) { 227 | return false 228 | } 229 | 230 | const excludes = vscode.workspace.getConfiguration().get('files.exclude', vscode.ConfigurationTarget.Workspace) || {} 231 | 232 | // Remove if already set 233 | if (key && Object.prototype.hasOwnProperty.call(excludes, key)) { 234 | const newExcludes = Object.keys(excludes) 235 | .filter((k) => k !== key) 236 | .reduce((obj, k) => { 237 | obj[k] = excludes[k] 238 | return obj 239 | }, {}) 240 | updateConfig(newExcludes, callback, localize('config.removedKey', key)) 241 | } 242 | } 243 | 244 | /** 245 | * Disable All 246 | * @param {function} callback 247 | */ 248 | function disableAll(callback) { 249 | const excludes = vscode.workspace.getConfiguration().get('files.exclude', vscode.ConfigurationTarget.Workspace) || {} 250 | 251 | for (let key in excludes) { 252 | if (Object.prototype.hasOwnProperty.call(excludes, key)) { 253 | excludes[key] = false 254 | } 255 | } 256 | 257 | updateConfig(excludes, callback) 258 | } 259 | 260 | /** 261 | * Enable All 262 | * @param {function} callback 263 | */ 264 | function enableAll(callback) { 265 | const excludes = vscode.workspace.getConfiguration().get('files.exclude', vscode.ConfigurationTarget.Workspace) || {} 266 | 267 | for (let key in excludes) { 268 | if (Object.prototype.hasOwnProperty.call(excludes, key)) { 269 | excludes[key] = true 270 | } 271 | } 272 | 273 | updateConfig(excludes, callback) 274 | } 275 | 276 | /** 277 | * VS Code Action - Handle Mapping URI Exclusion to possible Regex Pattern Matches 278 | * @param {string} uri 279 | * @param {function} callback 280 | */ 281 | function exclude(uri, callback) { 282 | return _await(this, void 0, void 0, function* () { 283 | try { 284 | const _path = uri.fsPath 285 | const _root = workspace 286 | const _meta = yield parseFilePath(_path, _root) 287 | 288 | let selections 289 | let options = [] 290 | 291 | let _showPicker = vscode.workspace.getConfiguration().get('explorerExclude.showPicker', vscode.ConfigurationTarget.Workspace) 292 | if (typeof _showPicker == 'undefined') { 293 | _showPicker = true 294 | } 295 | 296 | logger(`Using Picker: ${_showPicker ? 'YES' : 'NO'}`, 'debug') 297 | 298 | if (_showPicker) { 299 | Object.keys(_meta).forEach((key) => { 300 | let regex = undefined 301 | switch (key) { 302 | case 'path': 303 | break 304 | case 'ext': 305 | regex = _meta[key] ? `**/*${_meta[key]}` : undefined 306 | break 307 | case 'base': 308 | regex = _meta[key] 309 | break 310 | case 'dir': 311 | if (_showPicker) regex = _meta[key] ? `${_meta[key]}/*.*` : undefined 312 | break 313 | } 314 | if (regex) { 315 | options.push(regex) 316 | } 317 | }) 318 | 319 | if (_meta['dir'] && _meta['ext']) { 320 | options.push(`${_meta['dir']}/*${_meta['ext']}`) 321 | } else if (_meta['ext']) { 322 | options.push(`*${_meta['ext']}`) 323 | } 324 | 325 | if (_meta['base']) { 326 | options.push(`**/${_meta['base']}`) 327 | if (_meta['dir']) { 328 | options.push(`${_meta['dir']}/${_meta['base']}`) 329 | } 330 | } 331 | 332 | selections = yield showPicker(options.reverse()) 333 | } else { 334 | selections = [path.relative(_root, uri.fsPath)] 335 | } 336 | 337 | if (selections && selections.length > 0) { 338 | const excludes = vscode.workspace.getConfiguration().get('files.exclude', vscode.ConfigurationTarget.Workspace) || {} 339 | 340 | logger('Current Excludes:', 'debug') 341 | logger(excludes) 342 | 343 | logger('Adding Exclude:', 'debug') 344 | logger(selections) 345 | 346 | try { 347 | const newExcludes = Object.assign({}, excludes) 348 | Array.from(new Set(selections)) 349 | .filter((v) => v !== '*') 350 | .forEach((rule) => { 351 | newExcludes[rule] = true 352 | }) 353 | updateConfig(newExcludes, callback) 354 | } catch (err) { 355 | logger(localize('debug.logger.error', 'exclude:update', err.toString()), 'error') 356 | vscode.window.showErrorMessage(err.message || err) 357 | } 358 | } 359 | } catch (err) { 360 | logger(localize('debug.logger.error', 'exclude', err.toString()), 'error') 361 | vscode.window.showErrorMessage(err.message || err) 362 | } 363 | }) 364 | } 365 | 366 | /** 367 | * Get Excluded Fils 368 | */ 369 | function getExcludes() { 370 | if (!workspace || workspace === '') { 371 | return [] 372 | } 373 | 374 | const excludes = vscode.workspace.getConfiguration().get('files.exclude', vscode.ConfigurationTarget.Workspace) || {} 375 | 376 | let list = excludes ? Object.keys(excludes) : [] 377 | 378 | for (let i = 0; i < list.length; i++) { 379 | let enabled = excludes[list[i]] ? 1 : 0 380 | list[i] = `${list[i]}|${enabled}` 381 | } 382 | 383 | return list 384 | } 385 | 386 | /** 387 | * Get Resource Path 388 | * @param {string} file 389 | * @param {string} theme 390 | */ 391 | function getResourcePath(file, theme) { 392 | return theme ? context.asAbsolutePath(path.join('extension', 'resources', theme, file)) : context.asAbsolutePath(path.join('extension', 'resources', file)) 393 | } 394 | 395 | /** 396 | * Get Root Path 397 | * @param {string} file 398 | */ 399 | function getRootPath(file) { 400 | return context.asAbsolutePath(file) 401 | } 402 | 403 | /** 404 | * Log output to "SFCC Cartridge Overrides" Output Terminal 405 | * @param {String} message Debug Message 406 | * @param {String} type Debug Type 407 | */ 408 | function logger(message, type) { 409 | let icon = '' 410 | 411 | // Convert message to String if it was not already 412 | if (typeof message !== 'string') { 413 | message = JSON.stringify(message, null, 2) 414 | } 415 | 416 | // Prefix Logger Messages with Icons 417 | if (type === 'debug') { 418 | icon = '› ' 419 | } else if (type === 'error') { 420 | icon = '✖ ' 421 | } else if (type === 'success') { 422 | icon = '✔ ' 423 | } else if (type === 'warn') { 424 | icon = '⚠ ' 425 | } 426 | 427 | // Write Output to Terminal 428 | output.appendLine(`${icon}${message}`) 429 | } 430 | 431 | /** 432 | * Reset All 433 | * @param {function} callback 434 | */ 435 | function reset(callback) { 436 | updateConfig( 437 | { 438 | '**/.git': true, 439 | '**/.svn': true, 440 | '**/.hg': true, 441 | '**/CVS': true, 442 | '**/.DS_Store': true, 443 | '**/Thumbs.db': true, 444 | '**/*.git': true, 445 | }, 446 | callback 447 | ) 448 | } 449 | 450 | /** 451 | * Save VS Code Context for Pane Reference 452 | * @param {object} _context 453 | */ 454 | function saveContext(_context) { 455 | context = _context 456 | workspace = getWorkspace(_context) 457 | } 458 | 459 | /** 460 | * Toggle All Excludes 461 | * @param {Function} callback Callback Command 462 | */ 463 | function toggleAll(callback) { 464 | try { 465 | const excludes = vscode.workspace.getConfiguration().get('files.exclude', vscode.ConfigurationTarget.Workspace) 466 | const backup = vscode.workspace.getConfiguration().get('explorerExclude.backup', vscode.ConfigurationTarget.Workspace) 467 | const restore = JSON.stringify(backup) !== '{}' 468 | 469 | let newExcludes = Object.assign({}, excludes) 470 | 471 | if (!newExcludes) { 472 | newExcludes = {} 473 | } 474 | 475 | for (let key in newExcludes) { 476 | if (Object.prototype.hasOwnProperty.call(newExcludes, key)) { 477 | newExcludes[key] = false 478 | } 479 | } 480 | 481 | const newBackup = restore ? {} : excludes 482 | const newExclude = restore ? backup : newExcludes 483 | 484 | vscode.commands.executeCommand('setContext', 'explorer-exclude.enabled', restore) 485 | 486 | vscode.workspace 487 | .getConfiguration() 488 | .update('files.exclude', newExclude, vscode.ConfigurationTarget.Workspace) 489 | .then(() => { 490 | vscode.workspace 491 | .getConfiguration() 492 | .update('explorerExclude.backup', newBackup, vscode.ConfigurationTarget.Workspace) 493 | .then(() => { 494 | if (typeof callback === 'function') { 495 | callback() 496 | } 497 | }) 498 | }) 499 | } catch (err) { 500 | logger(localize('debug.logger.error', 'toggleAll', err.toString()), 'error') 501 | vscode.window.showErrorMessage(err.message || err) 502 | } 503 | } 504 | 505 | /** 506 | * Toggle Visibility of Excluded Pattern 507 | * @param {string} key 508 | * @param {function} callback 509 | */ 510 | function toggleExclude(key, callback) { 511 | if (!key) { 512 | return false 513 | } 514 | 515 | const excludes = vscode.workspace.getConfiguration().get('files.exclude', vscode.ConfigurationTarget.Workspace) || {} 516 | 517 | // Invert Selection 518 | if (key && Object.prototype.hasOwnProperty.call(excludes, key)) { 519 | logger(`Toggle: ${excludes[key] ? 'OFF' : 'ON'} | ${key}`, 'debug') 520 | excludes[key] = !excludes[key] 521 | updateConfig(excludes, callback) 522 | } 523 | } 524 | 525 | module.exports = { 526 | deleteExclude, 527 | disableAll, 528 | enableAll, 529 | exclude, 530 | getExcludes, 531 | getResourcePath, 532 | getRootPath, 533 | logger, 534 | reset, 535 | saveContext, 536 | toggleAll, 537 | toggleExclude, 538 | } 539 | -------------------------------------------------------------------------------- /extension/viewpane.js: -------------------------------------------------------------------------------- 1 | const jsonc_parser = require('jsonc-parser') 2 | const vscode = require('vscode') 3 | 4 | const { localize } = require('vscode-nls-i18n') 5 | 6 | const util = require('./util') 7 | 8 | class ViewPane { 9 | constructor(viewPaneName) { 10 | this.defaultExclude = ['**/.git', '**/.svn', '**/.hg', '**/CVS', '**/.DS_Store', '**/Thumbs.db', '**/*.git'] 11 | this.viewUpdatedEventEmitter = new vscode.EventEmitter() 12 | this.onDidChangeTreeData = this.viewUpdatedEventEmitter.event 13 | this.tree = { 14 | type: 'object', 15 | offset: 0, 16 | length: 0, 17 | children: [], 18 | } 19 | this.register(viewPaneName) 20 | this.registerEvents() 21 | } 22 | 23 | register(name = '') { 24 | vscode.window.registerTreeDataProvider(name, this) 25 | } 26 | 27 | registerEvents() { 28 | this.onDidChangeTreeData(() => {}) 29 | } 30 | 31 | update(list) { 32 | let treeString = JSON.stringify(list) 33 | this.tree = jsonc_parser.parseTree(treeString) 34 | this.viewUpdatedEventEmitter.fire() 35 | } 36 | 37 | getChildren() { 38 | return Promise.resolve(this.tree.children) 39 | } 40 | 41 | getTreeItem(node) { 42 | const value = node.value 43 | const enabled = parseInt(value[value.length - 1]) 44 | const title = value.substring(0, value.length - 2) 45 | const icon = enabled ? 'checked.svg' : 'unchecked.svg' 46 | 47 | let treeItem = new vscode.TreeItem(title, vscode.TreeItemCollapsibleState.None) 48 | 49 | treeItem.iconPath = { 50 | light: util.getResourcePath(icon, 'light'), 51 | dark: util.getResourcePath(icon, 'dark'), 52 | } 53 | treeItem.contextValue = title 54 | treeItem.tooltip = enabled ? localize('tooltip.show', title) : localize('tooltip.hide', title) 55 | treeItem.description = this.defaultExclude.indexOf(title) > -1 ? 'system' : '' 56 | treeItem.command = { 57 | command: 'explorer-exclude.toggle', 58 | title: title, 59 | arguments: [title], 60 | } 61 | 62 | return treeItem 63 | } 64 | } 65 | 66 | module.exports = ViewPane 67 | -------------------------------------------------------------------------------- /extension/welcome.js: -------------------------------------------------------------------------------- 1 | const vscode = require('vscode') 2 | const fs = require('fs') 3 | const marked = require('marked') 4 | 5 | const util = require('./util') 6 | 7 | class WelcomePane { 8 | constructor() {} 9 | 10 | show() { 11 | fs.readFile(util.getResourcePath('welcome.html'), function (err, html) { 12 | if (!err) { 13 | const panel = vscode.window.createWebviewPanel('explorerExclude', 'welcome', vscode.ViewColumn.One, {}) 14 | 15 | const README = fs.readFileSync(util.getRootPath('README.md'), 'utf8') 16 | const CHANGELOG = fs.readFileSync(util.getRootPath('CHANGELOG.md'), 'utf8') 17 | const TROUBLESHOOTING = fs.readFileSync(util.getRootPath('TROUBLESHOOTING.md'), 'utf8') 18 | 19 | let welcomePage = html.toString() 20 | 21 | welcomePage = welcomePage.replace('{{README}}', marked(README)) 22 | welcomePage = welcomePage.replace('{{CHANGELOG}}', marked(CHANGELOG)) 23 | welcomePage = welcomePage.replace('{{TROUBLESHOOTING}}', marked(TROUBLESHOOTING)) 24 | 25 | panel.title = 'Explorer Exclude Welcome' 26 | panel.webview.html = welcomePage 27 | } 28 | }) 29 | } 30 | } 31 | 32 | module.exports = WelcomePane 33 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "explorer-exclude", 3 | "version": "1.3.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.18.6", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 10 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.18.6" 14 | } 15 | }, 16 | "@babel/generator": { 17 | "version": "7.18.7", 18 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", 19 | "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", 20 | "dev": true, 21 | "requires": { 22 | "@babel/types": "^7.18.7", 23 | "@jridgewell/gen-mapping": "^0.3.2", 24 | "jsesc": "^2.5.1" 25 | } 26 | }, 27 | "@babel/helper-environment-visitor": { 28 | "version": "7.18.6", 29 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", 30 | "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", 31 | "dev": true 32 | }, 33 | "@babel/helper-function-name": { 34 | "version": "7.18.6", 35 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", 36 | "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", 37 | "dev": true, 38 | "requires": { 39 | "@babel/template": "^7.18.6", 40 | "@babel/types": "^7.18.6" 41 | } 42 | }, 43 | "@babel/helper-hoist-variables": { 44 | "version": "7.18.6", 45 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 46 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 47 | "dev": true, 48 | "requires": { 49 | "@babel/types": "^7.18.6" 50 | } 51 | }, 52 | "@babel/helper-split-export-declaration": { 53 | "version": "7.18.6", 54 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 55 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 56 | "dev": true, 57 | "requires": { 58 | "@babel/types": "^7.18.6" 59 | } 60 | }, 61 | "@babel/helper-validator-identifier": { 62 | "version": "7.18.6", 63 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", 64 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", 65 | "dev": true 66 | }, 67 | "@babel/highlight": { 68 | "version": "7.18.6", 69 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 70 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 71 | "dev": true, 72 | "requires": { 73 | "@babel/helper-validator-identifier": "^7.18.6", 74 | "chalk": "^2.0.0", 75 | "js-tokens": "^4.0.0" 76 | } 77 | }, 78 | "@babel/parser": { 79 | "version": "7.18.6", 80 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", 81 | "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", 82 | "dev": true 83 | }, 84 | "@babel/template": { 85 | "version": "7.18.6", 86 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", 87 | "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", 88 | "dev": true, 89 | "requires": { 90 | "@babel/code-frame": "^7.18.6", 91 | "@babel/parser": "^7.18.6", 92 | "@babel/types": "^7.18.6" 93 | } 94 | }, 95 | "@babel/traverse": { 96 | "version": "7.18.6", 97 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", 98 | "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", 99 | "dev": true, 100 | "requires": { 101 | "@babel/code-frame": "^7.18.6", 102 | "@babel/generator": "^7.18.6", 103 | "@babel/helper-environment-visitor": "^7.18.6", 104 | "@babel/helper-function-name": "^7.18.6", 105 | "@babel/helper-hoist-variables": "^7.18.6", 106 | "@babel/helper-split-export-declaration": "^7.18.6", 107 | "@babel/parser": "^7.18.6", 108 | "@babel/types": "^7.18.6", 109 | "debug": "^4.1.0", 110 | "globals": "^11.1.0" 111 | }, 112 | "dependencies": { 113 | "debug": { 114 | "version": "4.3.4", 115 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 116 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 117 | "dev": true, 118 | "requires": { 119 | "ms": "2.1.2" 120 | } 121 | }, 122 | "ms": { 123 | "version": "2.1.2", 124 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 125 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 126 | "dev": true 127 | } 128 | } 129 | }, 130 | "@babel/types": { 131 | "version": "7.18.7", 132 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", 133 | "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", 134 | "dev": true, 135 | "requires": { 136 | "@babel/helper-validator-identifier": "^7.18.6", 137 | "to-fast-properties": "^2.0.0" 138 | } 139 | }, 140 | "@eslint/eslintrc": { 141 | "version": "1.3.0", 142 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", 143 | "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", 144 | "dev": true, 145 | "requires": { 146 | "ajv": "^6.12.4", 147 | "debug": "^4.3.2", 148 | "espree": "^9.3.2", 149 | "globals": "^13.15.0", 150 | "ignore": "^5.2.0", 151 | "import-fresh": "^3.2.1", 152 | "js-yaml": "^4.1.0", 153 | "minimatch": "^3.1.2", 154 | "strip-json-comments": "^3.1.1" 155 | }, 156 | "dependencies": { 157 | "ajv": { 158 | "version": "6.12.6", 159 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 160 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 161 | "dev": true, 162 | "requires": { 163 | "fast-deep-equal": "^3.1.1", 164 | "fast-json-stable-stringify": "^2.0.0", 165 | "json-schema-traverse": "^0.4.1", 166 | "uri-js": "^4.2.2" 167 | } 168 | }, 169 | "debug": { 170 | "version": "4.3.4", 171 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 172 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 173 | "dev": true, 174 | "requires": { 175 | "ms": "2.1.2" 176 | } 177 | }, 178 | "fast-deep-equal": { 179 | "version": "3.1.3", 180 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 181 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 182 | "dev": true 183 | }, 184 | "globals": { 185 | "version": "13.16.0", 186 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", 187 | "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", 188 | "dev": true, 189 | "requires": { 190 | "type-fest": "^0.20.2" 191 | } 192 | }, 193 | "minimatch": { 194 | "version": "3.1.2", 195 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 196 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 197 | "dev": true, 198 | "requires": { 199 | "brace-expansion": "^1.1.7" 200 | } 201 | }, 202 | "ms": { 203 | "version": "2.1.2", 204 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 205 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 206 | "dev": true 207 | } 208 | } 209 | }, 210 | "@humanwhocodes/config-array": { 211 | "version": "0.9.5", 212 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", 213 | "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", 214 | "dev": true, 215 | "requires": { 216 | "@humanwhocodes/object-schema": "^1.2.1", 217 | "debug": "^4.1.1", 218 | "minimatch": "^3.0.4" 219 | }, 220 | "dependencies": { 221 | "debug": { 222 | "version": "4.3.4", 223 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 224 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 225 | "dev": true, 226 | "requires": { 227 | "ms": "2.1.2" 228 | } 229 | }, 230 | "ms": { 231 | "version": "2.1.2", 232 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 233 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 234 | "dev": true 235 | } 236 | } 237 | }, 238 | "@humanwhocodes/object-schema": { 239 | "version": "1.2.1", 240 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 241 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 242 | "dev": true 243 | }, 244 | "@jridgewell/gen-mapping": { 245 | "version": "0.3.2", 246 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 247 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 248 | "dev": true, 249 | "requires": { 250 | "@jridgewell/set-array": "^1.0.1", 251 | "@jridgewell/sourcemap-codec": "^1.4.10", 252 | "@jridgewell/trace-mapping": "^0.3.9" 253 | } 254 | }, 255 | "@jridgewell/resolve-uri": { 256 | "version": "3.1.0", 257 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 258 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 259 | "dev": true 260 | }, 261 | "@jridgewell/set-array": { 262 | "version": "1.1.2", 263 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 264 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 265 | "dev": true 266 | }, 267 | "@jridgewell/sourcemap-codec": { 268 | "version": "1.4.14", 269 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 270 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 271 | "dev": true 272 | }, 273 | "@jridgewell/trace-mapping": { 274 | "version": "0.3.14", 275 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", 276 | "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", 277 | "dev": true, 278 | "requires": { 279 | "@jridgewell/resolve-uri": "^3.0.3", 280 | "@jridgewell/sourcemap-codec": "^1.4.10" 281 | } 282 | }, 283 | "acorn": { 284 | "version": "8.7.1", 285 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", 286 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", 287 | "dev": true 288 | }, 289 | "acorn-jsx": { 290 | "version": "5.3.2", 291 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 292 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 293 | "dev": true 294 | }, 295 | "aggregate-error": { 296 | "version": "3.1.0", 297 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 298 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 299 | "dev": true, 300 | "requires": { 301 | "clean-stack": "^2.0.0", 302 | "indent-string": "^4.0.0" 303 | } 304 | }, 305 | "ajv": { 306 | "version": "6.10.0", 307 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", 308 | "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", 309 | "dev": true, 310 | "requires": { 311 | "fast-deep-equal": "^2.0.1", 312 | "fast-json-stable-stringify": "^2.0.0", 313 | "json-schema-traverse": "^0.4.1", 314 | "uri-js": "^4.2.2" 315 | } 316 | }, 317 | "ansi-escapes": { 318 | "version": "4.3.2", 319 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 320 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 321 | "dev": true, 322 | "requires": { 323 | "type-fest": "^0.21.3" 324 | }, 325 | "dependencies": { 326 | "type-fest": { 327 | "version": "0.21.3", 328 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 329 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 330 | "dev": true 331 | } 332 | } 333 | }, 334 | "ansi-regex": { 335 | "version": "5.0.1", 336 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 337 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 338 | "dev": true 339 | }, 340 | "ansi-styles": { 341 | "version": "3.2.1", 342 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 343 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 344 | "dev": true, 345 | "requires": { 346 | "color-convert": "^1.9.0" 347 | } 348 | }, 349 | "argparse": { 350 | "version": "2.0.1", 351 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 352 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 353 | "dev": true 354 | }, 355 | "astral-regex": { 356 | "version": "2.0.0", 357 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 358 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 359 | "dev": true 360 | }, 361 | "babel-eslint": { 362 | "version": "10.1.0", 363 | "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", 364 | "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", 365 | "dev": true, 366 | "requires": { 367 | "@babel/code-frame": "^7.0.0", 368 | "@babel/parser": "^7.7.0", 369 | "@babel/traverse": "^7.7.0", 370 | "@babel/types": "^7.7.0", 371 | "eslint-visitor-keys": "^1.0.0", 372 | "resolve": "^1.12.0" 373 | } 374 | }, 375 | "balanced-match": { 376 | "version": "1.0.0", 377 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 378 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 379 | "dev": true 380 | }, 381 | "brace-expansion": { 382 | "version": "1.1.11", 383 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 384 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 385 | "dev": true, 386 | "requires": { 387 | "balanced-match": "^1.0.0", 388 | "concat-map": "0.0.1" 389 | } 390 | }, 391 | "braces": { 392 | "version": "3.0.2", 393 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 394 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 395 | "dev": true, 396 | "requires": { 397 | "fill-range": "^7.0.1" 398 | } 399 | }, 400 | "callsites": { 401 | "version": "3.1.0", 402 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 403 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 404 | "dev": true 405 | }, 406 | "chalk": { 407 | "version": "2.4.2", 408 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 409 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 410 | "dev": true, 411 | "requires": { 412 | "ansi-styles": "^3.2.1", 413 | "escape-string-regexp": "^1.0.5", 414 | "supports-color": "^5.3.0" 415 | }, 416 | "dependencies": { 417 | "has-flag": { 418 | "version": "3.0.0", 419 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 420 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 421 | "dev": true 422 | }, 423 | "supports-color": { 424 | "version": "5.5.0", 425 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 426 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 427 | "dev": true, 428 | "requires": { 429 | "has-flag": "^3.0.0" 430 | } 431 | } 432 | } 433 | }, 434 | "clean-stack": { 435 | "version": "2.2.0", 436 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 437 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 438 | "dev": true 439 | }, 440 | "cli-cursor": { 441 | "version": "3.1.0", 442 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 443 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 444 | "dev": true, 445 | "requires": { 446 | "restore-cursor": "^3.1.0" 447 | } 448 | }, 449 | "cli-truncate": { 450 | "version": "3.1.0", 451 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", 452 | "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", 453 | "dev": true, 454 | "requires": { 455 | "slice-ansi": "^5.0.0", 456 | "string-width": "^5.0.0" 457 | } 458 | }, 459 | "color-convert": { 460 | "version": "1.9.3", 461 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 462 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 463 | "dev": true, 464 | "requires": { 465 | "color-name": "1.1.3" 466 | } 467 | }, 468 | "color-name": { 469 | "version": "1.1.3", 470 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 471 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 472 | "dev": true 473 | }, 474 | "colorette": { 475 | "version": "2.0.19", 476 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", 477 | "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", 478 | "dev": true 479 | }, 480 | "concat-map": { 481 | "version": "0.0.1", 482 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 483 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 484 | "dev": true 485 | }, 486 | "cross-spawn": { 487 | "version": "7.0.3", 488 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 489 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 490 | "dev": true, 491 | "requires": { 492 | "path-key": "^3.1.0", 493 | "shebang-command": "^2.0.0", 494 | "which": "^2.0.1" 495 | } 496 | }, 497 | "deep-is": { 498 | "version": "0.1.4", 499 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 500 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 501 | "dev": true 502 | }, 503 | "doctrine": { 504 | "version": "3.0.0", 505 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 506 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 507 | "dev": true, 508 | "requires": { 509 | "esutils": "^2.0.2" 510 | } 511 | }, 512 | "eastasianwidth": { 513 | "version": "0.2.0", 514 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 515 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 516 | "dev": true 517 | }, 518 | "emoji-regex": { 519 | "version": "9.2.2", 520 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 521 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 522 | "dev": true 523 | }, 524 | "escape-string-regexp": { 525 | "version": "1.0.5", 526 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 527 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 528 | "dev": true 529 | }, 530 | "eslint": { 531 | "version": "8.20.0", 532 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", 533 | "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", 534 | "dev": true, 535 | "requires": { 536 | "@eslint/eslintrc": "^1.3.0", 537 | "@humanwhocodes/config-array": "^0.9.2", 538 | "ajv": "^6.10.0", 539 | "chalk": "^4.0.0", 540 | "cross-spawn": "^7.0.2", 541 | "debug": "^4.3.2", 542 | "doctrine": "^3.0.0", 543 | "escape-string-regexp": "^4.0.0", 544 | "eslint-scope": "^7.1.1", 545 | "eslint-utils": "^3.0.0", 546 | "eslint-visitor-keys": "^3.3.0", 547 | "espree": "^9.3.2", 548 | "esquery": "^1.4.0", 549 | "esutils": "^2.0.2", 550 | "fast-deep-equal": "^3.1.3", 551 | "file-entry-cache": "^6.0.1", 552 | "functional-red-black-tree": "^1.0.1", 553 | "glob-parent": "^6.0.1", 554 | "globals": "^13.15.0", 555 | "ignore": "^5.2.0", 556 | "import-fresh": "^3.0.0", 557 | "imurmurhash": "^0.1.4", 558 | "is-glob": "^4.0.0", 559 | "js-yaml": "^4.1.0", 560 | "json-stable-stringify-without-jsonify": "^1.0.1", 561 | "levn": "^0.4.1", 562 | "lodash.merge": "^4.6.2", 563 | "minimatch": "^3.1.2", 564 | "natural-compare": "^1.4.0", 565 | "optionator": "^0.9.1", 566 | "regexpp": "^3.2.0", 567 | "strip-ansi": "^6.0.1", 568 | "strip-json-comments": "^3.1.0", 569 | "text-table": "^0.2.0", 570 | "v8-compile-cache": "^2.0.3" 571 | }, 572 | "dependencies": { 573 | "ansi-styles": { 574 | "version": "4.3.0", 575 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 576 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 577 | "dev": true, 578 | "requires": { 579 | "color-convert": "^2.0.1" 580 | } 581 | }, 582 | "chalk": { 583 | "version": "4.1.2", 584 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 585 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 586 | "dev": true, 587 | "requires": { 588 | "ansi-styles": "^4.1.0", 589 | "supports-color": "^7.1.0" 590 | } 591 | }, 592 | "color-convert": { 593 | "version": "2.0.1", 594 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 595 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 596 | "dev": true, 597 | "requires": { 598 | "color-name": "~1.1.4" 599 | } 600 | }, 601 | "color-name": { 602 | "version": "1.1.4", 603 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 604 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 605 | "dev": true 606 | }, 607 | "debug": { 608 | "version": "4.3.4", 609 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 610 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 611 | "dev": true, 612 | "requires": { 613 | "ms": "2.1.2" 614 | } 615 | }, 616 | "escape-string-regexp": { 617 | "version": "4.0.0", 618 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 619 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 620 | "dev": true 621 | }, 622 | "eslint-visitor-keys": { 623 | "version": "3.3.0", 624 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 625 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 626 | "dev": true 627 | }, 628 | "fast-deep-equal": { 629 | "version": "3.1.3", 630 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 631 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 632 | "dev": true 633 | }, 634 | "globals": { 635 | "version": "13.16.0", 636 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", 637 | "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", 638 | "dev": true, 639 | "requires": { 640 | "type-fest": "^0.20.2" 641 | } 642 | }, 643 | "has-flag": { 644 | "version": "4.0.0", 645 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 646 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 647 | "dev": true 648 | }, 649 | "minimatch": { 650 | "version": "3.1.2", 651 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 652 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 653 | "dev": true, 654 | "requires": { 655 | "brace-expansion": "^1.1.7" 656 | } 657 | }, 658 | "ms": { 659 | "version": "2.1.2", 660 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 661 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 662 | "dev": true 663 | }, 664 | "supports-color": { 665 | "version": "7.2.0", 666 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 667 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 668 | "dev": true, 669 | "requires": { 670 | "has-flag": "^4.0.0" 671 | } 672 | } 673 | } 674 | }, 675 | "eslint-config-prettier": { 676 | "version": "8.5.0", 677 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", 678 | "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", 679 | "dev": true 680 | }, 681 | "eslint-plugin-prettier": { 682 | "version": "4.2.1", 683 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", 684 | "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", 685 | "dev": true, 686 | "requires": { 687 | "prettier-linter-helpers": "^1.0.0" 688 | } 689 | }, 690 | "eslint-scope": { 691 | "version": "7.1.1", 692 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 693 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 694 | "dev": true, 695 | "requires": { 696 | "esrecurse": "^4.3.0", 697 | "estraverse": "^5.2.0" 698 | } 699 | }, 700 | "eslint-utils": { 701 | "version": "3.0.0", 702 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 703 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 704 | "dev": true, 705 | "requires": { 706 | "eslint-visitor-keys": "^2.0.0" 707 | }, 708 | "dependencies": { 709 | "eslint-visitor-keys": { 710 | "version": "2.1.0", 711 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 712 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 713 | "dev": true 714 | } 715 | } 716 | }, 717 | "eslint-visitor-keys": { 718 | "version": "1.3.0", 719 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 720 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 721 | "dev": true 722 | }, 723 | "espree": { 724 | "version": "9.3.2", 725 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", 726 | "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", 727 | "dev": true, 728 | "requires": { 729 | "acorn": "^8.7.1", 730 | "acorn-jsx": "^5.3.2", 731 | "eslint-visitor-keys": "^3.3.0" 732 | }, 733 | "dependencies": { 734 | "eslint-visitor-keys": { 735 | "version": "3.3.0", 736 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 737 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 738 | "dev": true 739 | } 740 | } 741 | }, 742 | "esquery": { 743 | "version": "1.4.0", 744 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 745 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 746 | "dev": true, 747 | "requires": { 748 | "estraverse": "^5.1.0" 749 | } 750 | }, 751 | "esrecurse": { 752 | "version": "4.3.0", 753 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 754 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 755 | "dev": true, 756 | "requires": { 757 | "estraverse": "^5.2.0" 758 | } 759 | }, 760 | "estraverse": { 761 | "version": "5.3.0", 762 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 763 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 764 | "dev": true 765 | }, 766 | "esutils": { 767 | "version": "2.0.3", 768 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 769 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 770 | "dev": true 771 | }, 772 | "execa": { 773 | "version": "6.1.0", 774 | "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", 775 | "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", 776 | "dev": true, 777 | "requires": { 778 | "cross-spawn": "^7.0.3", 779 | "get-stream": "^6.0.1", 780 | "human-signals": "^3.0.1", 781 | "is-stream": "^3.0.0", 782 | "merge-stream": "^2.0.0", 783 | "npm-run-path": "^5.1.0", 784 | "onetime": "^6.0.0", 785 | "signal-exit": "^3.0.7", 786 | "strip-final-newline": "^3.0.0" 787 | } 788 | }, 789 | "fast-deep-equal": { 790 | "version": "2.0.1", 791 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 792 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 793 | "dev": true 794 | }, 795 | "fast-diff": { 796 | "version": "1.2.0", 797 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", 798 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", 799 | "dev": true 800 | }, 801 | "fast-json-stable-stringify": { 802 | "version": "2.0.0", 803 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 804 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 805 | "dev": true 806 | }, 807 | "fast-levenshtein": { 808 | "version": "2.0.6", 809 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 810 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 811 | "dev": true 812 | }, 813 | "file-entry-cache": { 814 | "version": "6.0.1", 815 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 816 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 817 | "dev": true, 818 | "requires": { 819 | "flat-cache": "^3.0.4" 820 | } 821 | }, 822 | "fill-range": { 823 | "version": "7.0.1", 824 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 825 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 826 | "dev": true, 827 | "requires": { 828 | "to-regex-range": "^5.0.1" 829 | } 830 | }, 831 | "flat-cache": { 832 | "version": "3.0.4", 833 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 834 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 835 | "dev": true, 836 | "requires": { 837 | "flatted": "^3.1.0", 838 | "rimraf": "^3.0.2" 839 | } 840 | }, 841 | "flatted": { 842 | "version": "3.2.6", 843 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", 844 | "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", 845 | "dev": true 846 | }, 847 | "fs.realpath": { 848 | "version": "1.0.0", 849 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 850 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 851 | "dev": true 852 | }, 853 | "function-bind": { 854 | "version": "1.1.1", 855 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 856 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 857 | "dev": true 858 | }, 859 | "functional-red-black-tree": { 860 | "version": "1.0.1", 861 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 862 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 863 | "dev": true 864 | }, 865 | "get-stream": { 866 | "version": "6.0.1", 867 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 868 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 869 | "dev": true 870 | }, 871 | "glob": { 872 | "version": "7.1.4", 873 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 874 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 875 | "dev": true, 876 | "requires": { 877 | "fs.realpath": "^1.0.0", 878 | "inflight": "^1.0.4", 879 | "inherits": "2", 880 | "minimatch": "^3.0.4", 881 | "once": "^1.3.0", 882 | "path-is-absolute": "^1.0.0" 883 | } 884 | }, 885 | "glob-parent": { 886 | "version": "6.0.2", 887 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 888 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 889 | "dev": true, 890 | "requires": { 891 | "is-glob": "^4.0.3" 892 | } 893 | }, 894 | "globals": { 895 | "version": "11.12.0", 896 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 897 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 898 | "dev": true 899 | }, 900 | "has": { 901 | "version": "1.0.3", 902 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 903 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 904 | "dev": true, 905 | "requires": { 906 | "function-bind": "^1.1.1" 907 | } 908 | }, 909 | "human-signals": { 910 | "version": "3.0.1", 911 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", 912 | "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", 913 | "dev": true 914 | }, 915 | "ignore": { 916 | "version": "5.2.0", 917 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 918 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 919 | "dev": true 920 | }, 921 | "import-fresh": { 922 | "version": "3.3.0", 923 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 924 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 925 | "dev": true, 926 | "requires": { 927 | "parent-module": "^1.0.0", 928 | "resolve-from": "^4.0.0" 929 | } 930 | }, 931 | "imurmurhash": { 932 | "version": "0.1.4", 933 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 934 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 935 | "dev": true 936 | }, 937 | "indent-string": { 938 | "version": "4.0.0", 939 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 940 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 941 | "dev": true 942 | }, 943 | "inflight": { 944 | "version": "1.0.6", 945 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 946 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 947 | "dev": true, 948 | "requires": { 949 | "once": "^1.3.0", 950 | "wrappy": "1" 951 | } 952 | }, 953 | "inherits": { 954 | "version": "2.0.3", 955 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 956 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 957 | "dev": true 958 | }, 959 | "is-core-module": { 960 | "version": "2.9.0", 961 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", 962 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", 963 | "dev": true, 964 | "requires": { 965 | "has": "^1.0.3" 966 | } 967 | }, 968 | "is-extglob": { 969 | "version": "2.1.1", 970 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 971 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 972 | "dev": true 973 | }, 974 | "is-fullwidth-code-point": { 975 | "version": "4.0.0", 976 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", 977 | "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", 978 | "dev": true 979 | }, 980 | "is-glob": { 981 | "version": "4.0.3", 982 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 983 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 984 | "dev": true, 985 | "requires": { 986 | "is-extglob": "^2.1.1" 987 | } 988 | }, 989 | "is-number": { 990 | "version": "7.0.0", 991 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 992 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 993 | "dev": true 994 | }, 995 | "is-stream": { 996 | "version": "3.0.0", 997 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", 998 | "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", 999 | "dev": true 1000 | }, 1001 | "isexe": { 1002 | "version": "2.0.0", 1003 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1004 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1005 | "dev": true 1006 | }, 1007 | "js-tokens": { 1008 | "version": "4.0.0", 1009 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1010 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1011 | "dev": true 1012 | }, 1013 | "js-yaml": { 1014 | "version": "4.1.0", 1015 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1016 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1017 | "dev": true, 1018 | "requires": { 1019 | "argparse": "^2.0.1" 1020 | } 1021 | }, 1022 | "jsesc": { 1023 | "version": "2.5.2", 1024 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1025 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1026 | "dev": true 1027 | }, 1028 | "json-schema-traverse": { 1029 | "version": "0.4.1", 1030 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1031 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1032 | "dev": true 1033 | }, 1034 | "json-stable-stringify-without-jsonify": { 1035 | "version": "1.0.1", 1036 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1037 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1038 | "dev": true 1039 | }, 1040 | "jsonc-parser": { 1041 | "version": "3.1.0", 1042 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", 1043 | "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" 1044 | }, 1045 | "levn": { 1046 | "version": "0.4.1", 1047 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1048 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1049 | "dev": true, 1050 | "requires": { 1051 | "prelude-ls": "^1.2.1", 1052 | "type-check": "~0.4.0" 1053 | } 1054 | }, 1055 | "lilconfig": { 1056 | "version": "2.0.5", 1057 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", 1058 | "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", 1059 | "dev": true 1060 | }, 1061 | "lint-staged": { 1062 | "version": "13.0.3", 1063 | "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.3.tgz", 1064 | "integrity": "sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==", 1065 | "dev": true, 1066 | "requires": { 1067 | "cli-truncate": "^3.1.0", 1068 | "colorette": "^2.0.17", 1069 | "commander": "^9.3.0", 1070 | "debug": "^4.3.4", 1071 | "execa": "^6.1.0", 1072 | "lilconfig": "2.0.5", 1073 | "listr2": "^4.0.5", 1074 | "micromatch": "^4.0.5", 1075 | "normalize-path": "^3.0.0", 1076 | "object-inspect": "^1.12.2", 1077 | "pidtree": "^0.6.0", 1078 | "string-argv": "^0.3.1", 1079 | "yaml": "^2.1.1" 1080 | }, 1081 | "dependencies": { 1082 | "commander": { 1083 | "version": "9.3.0", 1084 | "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", 1085 | "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", 1086 | "dev": true 1087 | }, 1088 | "debug": { 1089 | "version": "4.3.4", 1090 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1091 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1092 | "dev": true, 1093 | "requires": { 1094 | "ms": "2.1.2" 1095 | } 1096 | }, 1097 | "ms": { 1098 | "version": "2.1.2", 1099 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1100 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1101 | "dev": true 1102 | } 1103 | } 1104 | }, 1105 | "listr2": { 1106 | "version": "4.0.5", 1107 | "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", 1108 | "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", 1109 | "dev": true, 1110 | "requires": { 1111 | "cli-truncate": "^2.1.0", 1112 | "colorette": "^2.0.16", 1113 | "log-update": "^4.0.0", 1114 | "p-map": "^4.0.0", 1115 | "rfdc": "^1.3.0", 1116 | "rxjs": "^7.5.5", 1117 | "through": "^2.3.8", 1118 | "wrap-ansi": "^7.0.0" 1119 | }, 1120 | "dependencies": { 1121 | "ansi-styles": { 1122 | "version": "4.3.0", 1123 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1124 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1125 | "dev": true, 1126 | "requires": { 1127 | "color-convert": "^2.0.1" 1128 | } 1129 | }, 1130 | "cli-truncate": { 1131 | "version": "2.1.0", 1132 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", 1133 | "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", 1134 | "dev": true, 1135 | "requires": { 1136 | "slice-ansi": "^3.0.0", 1137 | "string-width": "^4.2.0" 1138 | } 1139 | }, 1140 | "color-convert": { 1141 | "version": "2.0.1", 1142 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1143 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1144 | "dev": true, 1145 | "requires": { 1146 | "color-name": "~1.1.4" 1147 | } 1148 | }, 1149 | "color-name": { 1150 | "version": "1.1.4", 1151 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1152 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1153 | "dev": true 1154 | }, 1155 | "emoji-regex": { 1156 | "version": "8.0.0", 1157 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1158 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1159 | "dev": true 1160 | }, 1161 | "is-fullwidth-code-point": { 1162 | "version": "3.0.0", 1163 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1164 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1165 | "dev": true 1166 | }, 1167 | "slice-ansi": { 1168 | "version": "3.0.0", 1169 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", 1170 | "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", 1171 | "dev": true, 1172 | "requires": { 1173 | "ansi-styles": "^4.0.0", 1174 | "astral-regex": "^2.0.0", 1175 | "is-fullwidth-code-point": "^3.0.0" 1176 | } 1177 | }, 1178 | "string-width": { 1179 | "version": "4.2.3", 1180 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1181 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1182 | "dev": true, 1183 | "requires": { 1184 | "emoji-regex": "^8.0.0", 1185 | "is-fullwidth-code-point": "^3.0.0", 1186 | "strip-ansi": "^6.0.1" 1187 | } 1188 | } 1189 | } 1190 | }, 1191 | "lodash.merge": { 1192 | "version": "4.6.2", 1193 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1194 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1195 | "dev": true 1196 | }, 1197 | "log-update": { 1198 | "version": "4.0.0", 1199 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", 1200 | "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", 1201 | "dev": true, 1202 | "requires": { 1203 | "ansi-escapes": "^4.3.0", 1204 | "cli-cursor": "^3.1.0", 1205 | "slice-ansi": "^4.0.0", 1206 | "wrap-ansi": "^6.2.0" 1207 | }, 1208 | "dependencies": { 1209 | "ansi-styles": { 1210 | "version": "4.3.0", 1211 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1212 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1213 | "dev": true, 1214 | "requires": { 1215 | "color-convert": "^2.0.1" 1216 | } 1217 | }, 1218 | "color-convert": { 1219 | "version": "2.0.1", 1220 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1221 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1222 | "dev": true, 1223 | "requires": { 1224 | "color-name": "~1.1.4" 1225 | } 1226 | }, 1227 | "color-name": { 1228 | "version": "1.1.4", 1229 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1230 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1231 | "dev": true 1232 | }, 1233 | "emoji-regex": { 1234 | "version": "8.0.0", 1235 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1236 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1237 | "dev": true 1238 | }, 1239 | "is-fullwidth-code-point": { 1240 | "version": "3.0.0", 1241 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1242 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1243 | "dev": true 1244 | }, 1245 | "slice-ansi": { 1246 | "version": "4.0.0", 1247 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 1248 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 1249 | "dev": true, 1250 | "requires": { 1251 | "ansi-styles": "^4.0.0", 1252 | "astral-regex": "^2.0.0", 1253 | "is-fullwidth-code-point": "^3.0.0" 1254 | } 1255 | }, 1256 | "string-width": { 1257 | "version": "4.2.3", 1258 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1259 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1260 | "dev": true, 1261 | "requires": { 1262 | "emoji-regex": "^8.0.0", 1263 | "is-fullwidth-code-point": "^3.0.0", 1264 | "strip-ansi": "^6.0.1" 1265 | } 1266 | }, 1267 | "wrap-ansi": { 1268 | "version": "6.2.0", 1269 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 1270 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 1271 | "dev": true, 1272 | "requires": { 1273 | "ansi-styles": "^4.0.0", 1274 | "string-width": "^4.1.0", 1275 | "strip-ansi": "^6.0.0" 1276 | } 1277 | } 1278 | } 1279 | }, 1280 | "marked": { 1281 | "version": "4.0.18", 1282 | "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.18.tgz", 1283 | "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==" 1284 | }, 1285 | "merge-stream": { 1286 | "version": "2.0.0", 1287 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1288 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1289 | "dev": true 1290 | }, 1291 | "micromatch": { 1292 | "version": "4.0.5", 1293 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1294 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1295 | "dev": true, 1296 | "requires": { 1297 | "braces": "^3.0.2", 1298 | "picomatch": "^2.3.1" 1299 | } 1300 | }, 1301 | "mimic-fn": { 1302 | "version": "4.0.0", 1303 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", 1304 | "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", 1305 | "dev": true 1306 | }, 1307 | "minimatch": { 1308 | "version": "3.0.4", 1309 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1310 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1311 | "dev": true, 1312 | "requires": { 1313 | "brace-expansion": "^1.1.7" 1314 | } 1315 | }, 1316 | "natural-compare": { 1317 | "version": "1.4.0", 1318 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1319 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1320 | "dev": true 1321 | }, 1322 | "normalize-path": { 1323 | "version": "3.0.0", 1324 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1325 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1326 | "dev": true 1327 | }, 1328 | "npm-run-path": { 1329 | "version": "5.1.0", 1330 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", 1331 | "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", 1332 | "dev": true, 1333 | "requires": { 1334 | "path-key": "^4.0.0" 1335 | }, 1336 | "dependencies": { 1337 | "path-key": { 1338 | "version": "4.0.0", 1339 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", 1340 | "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", 1341 | "dev": true 1342 | } 1343 | } 1344 | }, 1345 | "object-inspect": { 1346 | "version": "1.12.2", 1347 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 1348 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 1349 | "dev": true 1350 | }, 1351 | "once": { 1352 | "version": "1.4.0", 1353 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1354 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1355 | "dev": true, 1356 | "requires": { 1357 | "wrappy": "1" 1358 | } 1359 | }, 1360 | "onetime": { 1361 | "version": "6.0.0", 1362 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", 1363 | "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", 1364 | "dev": true, 1365 | "requires": { 1366 | "mimic-fn": "^4.0.0" 1367 | } 1368 | }, 1369 | "optionator": { 1370 | "version": "0.9.1", 1371 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1372 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1373 | "dev": true, 1374 | "requires": { 1375 | "deep-is": "^0.1.3", 1376 | "fast-levenshtein": "^2.0.6", 1377 | "levn": "^0.4.1", 1378 | "prelude-ls": "^1.2.1", 1379 | "type-check": "^0.4.0", 1380 | "word-wrap": "^1.2.3" 1381 | } 1382 | }, 1383 | "p-map": { 1384 | "version": "4.0.0", 1385 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 1386 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 1387 | "dev": true, 1388 | "requires": { 1389 | "aggregate-error": "^3.0.0" 1390 | } 1391 | }, 1392 | "parent-module": { 1393 | "version": "1.0.1", 1394 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1395 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1396 | "dev": true, 1397 | "requires": { 1398 | "callsites": "^3.0.0" 1399 | } 1400 | }, 1401 | "path-is-absolute": { 1402 | "version": "1.0.1", 1403 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1404 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1405 | "dev": true 1406 | }, 1407 | "path-key": { 1408 | "version": "3.1.1", 1409 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1410 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1411 | "dev": true 1412 | }, 1413 | "path-parse": { 1414 | "version": "1.0.7", 1415 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1416 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1417 | "dev": true 1418 | }, 1419 | "picomatch": { 1420 | "version": "2.3.1", 1421 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1422 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1423 | "dev": true 1424 | }, 1425 | "pidtree": { 1426 | "version": "0.6.0", 1427 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", 1428 | "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", 1429 | "dev": true 1430 | }, 1431 | "prelude-ls": { 1432 | "version": "1.2.1", 1433 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1434 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1435 | "dev": true 1436 | }, 1437 | "prettier": { 1438 | "version": "2.7.1", 1439 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", 1440 | "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", 1441 | "dev": true 1442 | }, 1443 | "prettier-linter-helpers": { 1444 | "version": "1.0.0", 1445 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", 1446 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", 1447 | "dev": true, 1448 | "requires": { 1449 | "fast-diff": "^1.1.2" 1450 | } 1451 | }, 1452 | "punycode": { 1453 | "version": "2.1.1", 1454 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1455 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1456 | "dev": true 1457 | }, 1458 | "regexpp": { 1459 | "version": "3.2.0", 1460 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 1461 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 1462 | "dev": true 1463 | }, 1464 | "resolve": { 1465 | "version": "1.22.1", 1466 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1467 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1468 | "dev": true, 1469 | "requires": { 1470 | "is-core-module": "^2.9.0", 1471 | "path-parse": "^1.0.7", 1472 | "supports-preserve-symlinks-flag": "^1.0.0" 1473 | } 1474 | }, 1475 | "resolve-from": { 1476 | "version": "4.0.0", 1477 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1478 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1479 | "dev": true 1480 | }, 1481 | "restore-cursor": { 1482 | "version": "3.1.0", 1483 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1484 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1485 | "dev": true, 1486 | "requires": { 1487 | "onetime": "^5.1.0", 1488 | "signal-exit": "^3.0.2" 1489 | }, 1490 | "dependencies": { 1491 | "mimic-fn": { 1492 | "version": "2.1.0", 1493 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1494 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1495 | "dev": true 1496 | }, 1497 | "onetime": { 1498 | "version": "5.1.2", 1499 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1500 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1501 | "dev": true, 1502 | "requires": { 1503 | "mimic-fn": "^2.1.0" 1504 | } 1505 | } 1506 | } 1507 | }, 1508 | "rfdc": { 1509 | "version": "1.3.0", 1510 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 1511 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", 1512 | "dev": true 1513 | }, 1514 | "rimraf": { 1515 | "version": "3.0.2", 1516 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1517 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1518 | "dev": true, 1519 | "requires": { 1520 | "glob": "^7.1.3" 1521 | } 1522 | }, 1523 | "rxjs": { 1524 | "version": "7.5.5", 1525 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", 1526 | "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", 1527 | "dev": true, 1528 | "requires": { 1529 | "tslib": "^2.1.0" 1530 | } 1531 | }, 1532 | "shebang-command": { 1533 | "version": "2.0.0", 1534 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1535 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1536 | "dev": true, 1537 | "requires": { 1538 | "shebang-regex": "^3.0.0" 1539 | } 1540 | }, 1541 | "shebang-regex": { 1542 | "version": "3.0.0", 1543 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1544 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1545 | "dev": true 1546 | }, 1547 | "signal-exit": { 1548 | "version": "3.0.7", 1549 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1550 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1551 | "dev": true 1552 | }, 1553 | "slice-ansi": { 1554 | "version": "5.0.0", 1555 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", 1556 | "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", 1557 | "dev": true, 1558 | "requires": { 1559 | "ansi-styles": "^6.0.0", 1560 | "is-fullwidth-code-point": "^4.0.0" 1561 | }, 1562 | "dependencies": { 1563 | "ansi-styles": { 1564 | "version": "6.1.0", 1565 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", 1566 | "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", 1567 | "dev": true 1568 | } 1569 | } 1570 | }, 1571 | "string-argv": { 1572 | "version": "0.3.1", 1573 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", 1574 | "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", 1575 | "dev": true 1576 | }, 1577 | "string-width": { 1578 | "version": "5.1.2", 1579 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 1580 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1581 | "dev": true, 1582 | "requires": { 1583 | "eastasianwidth": "^0.2.0", 1584 | "emoji-regex": "^9.2.2", 1585 | "strip-ansi": "^7.0.1" 1586 | }, 1587 | "dependencies": { 1588 | "ansi-regex": { 1589 | "version": "6.0.1", 1590 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 1591 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 1592 | "dev": true 1593 | }, 1594 | "strip-ansi": { 1595 | "version": "7.0.1", 1596 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 1597 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 1598 | "dev": true, 1599 | "requires": { 1600 | "ansi-regex": "^6.0.1" 1601 | } 1602 | } 1603 | } 1604 | }, 1605 | "strip-ansi": { 1606 | "version": "6.0.1", 1607 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1608 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1609 | "dev": true, 1610 | "requires": { 1611 | "ansi-regex": "^5.0.1" 1612 | } 1613 | }, 1614 | "strip-final-newline": { 1615 | "version": "3.0.0", 1616 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", 1617 | "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", 1618 | "dev": true 1619 | }, 1620 | "strip-json-comments": { 1621 | "version": "3.1.1", 1622 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1623 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1624 | "dev": true 1625 | }, 1626 | "supports-preserve-symlinks-flag": { 1627 | "version": "1.0.0", 1628 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1629 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1630 | "dev": true 1631 | }, 1632 | "text-table": { 1633 | "version": "0.2.0", 1634 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1635 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 1636 | "dev": true 1637 | }, 1638 | "through": { 1639 | "version": "2.3.8", 1640 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1641 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 1642 | "dev": true 1643 | }, 1644 | "to-fast-properties": { 1645 | "version": "2.0.0", 1646 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1647 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 1648 | "dev": true 1649 | }, 1650 | "to-regex-range": { 1651 | "version": "5.0.1", 1652 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1653 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1654 | "dev": true, 1655 | "requires": { 1656 | "is-number": "^7.0.0" 1657 | } 1658 | }, 1659 | "tslib": { 1660 | "version": "2.4.0", 1661 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 1662 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 1663 | "dev": true 1664 | }, 1665 | "type-check": { 1666 | "version": "0.4.0", 1667 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1668 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1669 | "dev": true, 1670 | "requires": { 1671 | "prelude-ls": "^1.2.1" 1672 | } 1673 | }, 1674 | "type-fest": { 1675 | "version": "0.20.2", 1676 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1677 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1678 | "dev": true 1679 | }, 1680 | "uri-js": { 1681 | "version": "4.2.2", 1682 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1683 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1684 | "dev": true, 1685 | "requires": { 1686 | "punycode": "^2.1.0" 1687 | } 1688 | }, 1689 | "v8-compile-cache": { 1690 | "version": "2.3.0", 1691 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 1692 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 1693 | "dev": true 1694 | }, 1695 | "vscode-nls-i18n": { 1696 | "version": "0.2.4", 1697 | "resolved": "https://registry.npmjs.org/vscode-nls-i18n/-/vscode-nls-i18n-0.2.4.tgz", 1698 | "integrity": "sha512-1gf+s5qznJ6d5e5FavJ/sjzx/VdRMtZcVc8bjKo32mQPqAx+Bzgm0ur46/el1vAO4UGmCMQjlH8sHQdjEln7zQ==" 1699 | }, 1700 | "which": { 1701 | "version": "2.0.2", 1702 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1703 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1704 | "dev": true, 1705 | "requires": { 1706 | "isexe": "^2.0.0" 1707 | } 1708 | }, 1709 | "word-wrap": { 1710 | "version": "1.2.3", 1711 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1712 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1713 | "dev": true 1714 | }, 1715 | "wrap-ansi": { 1716 | "version": "7.0.0", 1717 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1718 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1719 | "dev": true, 1720 | "requires": { 1721 | "ansi-styles": "^4.0.0", 1722 | "string-width": "^4.1.0", 1723 | "strip-ansi": "^6.0.0" 1724 | }, 1725 | "dependencies": { 1726 | "ansi-styles": { 1727 | "version": "4.3.0", 1728 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1729 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1730 | "dev": true, 1731 | "requires": { 1732 | "color-convert": "^2.0.1" 1733 | } 1734 | }, 1735 | "color-convert": { 1736 | "version": "2.0.1", 1737 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1738 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1739 | "dev": true, 1740 | "requires": { 1741 | "color-name": "~1.1.4" 1742 | } 1743 | }, 1744 | "color-name": { 1745 | "version": "1.1.4", 1746 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1747 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1748 | "dev": true 1749 | }, 1750 | "emoji-regex": { 1751 | "version": "8.0.0", 1752 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1753 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1754 | "dev": true 1755 | }, 1756 | "is-fullwidth-code-point": { 1757 | "version": "3.0.0", 1758 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1759 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1760 | "dev": true 1761 | }, 1762 | "string-width": { 1763 | "version": "4.2.3", 1764 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1765 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1766 | "dev": true, 1767 | "requires": { 1768 | "emoji-regex": "^8.0.0", 1769 | "is-fullwidth-code-point": "^3.0.0", 1770 | "strip-ansi": "^6.0.1" 1771 | } 1772 | } 1773 | } 1774 | }, 1775 | "wrappy": { 1776 | "version": "1.0.2", 1777 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1778 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1779 | "dev": true 1780 | }, 1781 | "yaml": { 1782 | "version": "2.1.1", 1783 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz", 1784 | "integrity": "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==", 1785 | "dev": true 1786 | } 1787 | } 1788 | } 1789 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "explorer-exclude", 3 | "displayName": "Explorer Exclude", 4 | "version": "1.3.2", 5 | "description": "Explorer Exclude lets you easily Hide Files & Folders with Dynamic Filter Options. Add a New 'Hidden Items' Explorer Pane for you to Manage and Quickly Toggle Visibility of Hidden Items.", 6 | "license": "MIT", 7 | "publisher": "PeterSchmalfeldt", 8 | "categories": [ 9 | "Other" 10 | ], 11 | "main": "extension/index.js", 12 | "icon": "extension/resources/icon.png", 13 | "galleryBanner": { 14 | "color": "#1c1c1c", 15 | "theme": "dark" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/sfccdevops/explorer-exclude-vscode-extension" 20 | }, 21 | "bugs": { 22 | "url": "https://github.com/sfccdevops/explorer-exclude-vscode-extension/issues" 23 | }, 24 | "engines": { 25 | "vscode": "^1.60.0", 26 | "node": "^14.19.0" 27 | }, 28 | "keywords": [ 29 | "context-menu", 30 | "exclude", 31 | "explorer", 32 | "files", 33 | "folders", 34 | "hidden", 35 | "hide", 36 | "ignore", 37 | "pane", 38 | "show", 39 | "toggle", 40 | "workspace" 41 | ], 42 | "contributors": [ 43 | { 44 | "name": "Peter Schmalfeldt", 45 | "email": "me@peterschmalfeldt.com", 46 | "url": "https://peterschmalfeldt.com" 47 | } 48 | ], 49 | "activationEvents": [ 50 | "onCommand:explorer-exclude.disableAll", 51 | "onCommand:explorer-exclude.enableAll", 52 | "onCommand:explorer-exclude.enabled", 53 | "onCommand:explorer-exclude.exclude", 54 | "onCommand:explorer-exclude.hasLoaded", 55 | "onCommand:explorer-exclude.missingWorkspace", 56 | "onCommand:explorer-exclude.remove", 57 | "onCommand:explorer-exclude.reset", 58 | "onCommand:explorer-exclude.toggle", 59 | "onCommand:explorer-exclude.toggleAllOff", 60 | "onCommand:explorer-exclude.toggleAllOn", 61 | "onStartupFinished", 62 | "onView:extension" 63 | ], 64 | "contributes": { 65 | "configuration": [ 66 | { 67 | "title": "%extension.title%", 68 | "properties": { 69 | "explorerExclude.backup": { 70 | "order": 1, 71 | "type": [ 72 | "object", 73 | "null" 74 | ], 75 | "default": {}, 76 | "description": "%config.properties.backup%", 77 | "scope": "window" 78 | }, 79 | "explorerExclude.showPicker": { 80 | "order": 2, 81 | "type": "boolean", 82 | "default": true, 83 | "description": "%config.properties.showPicker%", 84 | "scope": "window" 85 | } 86 | } 87 | } 88 | ], 89 | "views": { 90 | "explorer": [ 91 | { 92 | "id": "explorerExclude.pane.items", 93 | "name": "%package.pane%" 94 | } 95 | ] 96 | }, 97 | "viewsWelcome": [ 98 | { 99 | "view": "explorerExclude.pane.items", 100 | "contents": "%package.loading%", 101 | "when": "!explorer-exclude.missingWorkspace && !explorer-exclude.hasLoaded" 102 | }, 103 | { 104 | "view": "explorerExclude.pane.items", 105 | "contents": "%debug.logger.missingWorkspace%", 106 | "when": "explorer-exclude.missingWorkspace" 107 | } 108 | ], 109 | "commands": [ 110 | { 111 | "command": "explorer-exclude.exclude", 112 | "title": "%package.exclude%" 113 | }, 114 | { 115 | "command": "explorer-exclude.remove", 116 | "title": "%package.remove%" 117 | }, 118 | { 119 | "command": "explorer-exclude.toggle", 120 | "title": "%package.toggle%" 121 | }, 122 | { 123 | "command": "explorer-exclude.toggleAllOn", 124 | "title": "%package.toggle%", 125 | "category": "ExplorerExclude", 126 | "icon": { 127 | "dark": "extension/resources/dark/toggle-on.svg", 128 | "light": "extension/resources/light/toggle-on.svg" 129 | } 130 | }, 131 | { 132 | "command": "explorer-exclude.toggleAllOff", 133 | "title": "%package.toggle%", 134 | "category": "ExplorerExclude", 135 | "icon": { 136 | "dark": "extension/resources/dark/toggle-off.svg", 137 | "light": "extension/resources/light/toggle-off.svg" 138 | } 139 | }, 140 | { 141 | "command": "explorer-exclude.disableAll", 142 | "title": "%package.disableAll%", 143 | "category": "ExplorerExclude", 144 | "icon": { 145 | "dark": "extension/resources/dark/unchecked.svg", 146 | "light": "extension/resources/light/unchecked.svg" 147 | } 148 | }, 149 | { 150 | "command": "explorer-exclude.enableAll", 151 | "title": "%package.enableAll%", 152 | "category": "ExplorerExclude", 153 | "icon": { 154 | "dark": "extension/resources/dark/checked.svg", 155 | "light": "extension/resources/light/checked.svg" 156 | } 157 | }, 158 | { 159 | "command": "explorer-exclude.reset", 160 | "title": "%package.reset%", 161 | "category": "ExplorerExclude", 162 | "icon": { 163 | "dark": "extension/resources/dark/reset.svg", 164 | "light": "extension/resources/light/reset.svg" 165 | } 166 | }, 167 | { 168 | "command": "explorer-exclude.openSettings", 169 | "title": "%command.openSettings.title%", 170 | "category": "ExplorerExclude", 171 | "icon": { 172 | "dark": "extension/resources/dark/settings.svg", 173 | "light": "extension/resources/light/settings.svg" 174 | } 175 | } 176 | ], 177 | "menus": { 178 | "explorer/context": [ 179 | { 180 | "command": "explorer-exclude.exclude", 181 | "group": "explorer-exclude@1", 182 | "when": "explorer-exclude.hasLoaded && !explorer-exclude.missingWorkspace && activeViewlet == 'workbench.view.explorer'" 183 | } 184 | ], 185 | "view/item/context": [ 186 | { 187 | "command": "explorer-exclude.remove", 188 | "group": "explorer-exclude@1", 189 | "when": "explorer-exclude.hasLoaded && !explorer-exclude.missingWorkspace && view == explorerExclude.pane.items && viewItem && viewItem != '**/.git' && viewItem != '**/.svn'&& viewItem != '**/.hg'&& viewItem != '**/CVS'&& viewItem != '**/.DS_Store' && viewItem != '**/Thumbs.db' && viewItem != '**/*.git'" 190 | } 191 | ], 192 | "view/title": [ 193 | { 194 | "command": "explorer-exclude.disableAll", 195 | "group": "navigation@10", 196 | "when": "explorer-exclude.hasLoaded && !explorer-exclude.missingWorkspace && view == explorerExclude.pane.items" 197 | }, 198 | { 199 | "command": "explorer-exclude.enableAll", 200 | "group": "navigation@11", 201 | "when": "explorer-exclude.hasLoaded && !explorer-exclude.missingWorkspace && view == explorerExclude.pane.items" 202 | }, 203 | { 204 | "command": "explorer-exclude.toggleAllOn", 205 | "group": "navigation@12", 206 | "when": "explorer-exclude.hasLoaded && !explorer-exclude.missingWorkspace && view == explorerExclude.pane.items && !explorer-exclude.enabled" 207 | }, 208 | { 209 | "command": "explorer-exclude.toggleAllOff", 210 | "group": "navigation@12", 211 | "when": "explorer-exclude.hasLoaded && !explorer-exclude.missingWorkspace && view == explorerExclude.pane.items && explorer-exclude.enabled" 212 | }, 213 | { 214 | "command": "explorer-exclude.reset", 215 | "group": "navigation@13", 216 | "when": "explorer-exclude.hasLoaded && !explorer-exclude.missingWorkspace && view == explorerExclude.pane.items" 217 | }, 218 | { 219 | "command": "explorer-exclude.openSettings", 220 | "group": "navigation@14", 221 | "when": "explorer-exclude.hasLoaded && !explorer-exclude.missingWorkspace && view == explorerExclude.pane.items" 222 | } 223 | ] 224 | } 225 | }, 226 | "scripts": { 227 | "test": "npm run -s test:lint && npm run -s test:unit", 228 | "test:unit": "echo 'No Unit Tests'", 229 | "test:lint": "eslint --ext .js ./extension --fix && echo '\n【ツ】CODE PERFECTION !!!\n'" 230 | }, 231 | "dependencies": { 232 | "jsonc-parser": "^3.1.0", 233 | "marked": "^4.0.18", 234 | "vscode-nls-i18n": "^0.2.4" 235 | }, 236 | "devDependencies": { 237 | "babel-eslint": "^10.1.0", 238 | "eslint": "^8.20.0", 239 | "eslint-config-prettier": "^8.5.0", 240 | "eslint-plugin-prettier": "^4.2.1", 241 | "lint-staged": "^13.0.3", 242 | "prettier": "^2.7.1" 243 | } 244 | } 245 | -------------------------------------------------------------------------------- /package.nls.bg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Bulgarian", 3 | "command.openSettings.title": "Актуализиране на настройките на разширението", 4 | "config.properties.backup": "Конфигурация на ресурси: Конфигурирайте файловете, като използвате глобални модели, за да имате винаги празен последен ред.", 5 | "config.properties.showPicker": "Показване на инструмента за избор на шаблон на файл, когато е активиран, или Изключване на точното съвпадение, когато е деактивиран.", 6 | "config.removedKey": "{0} бе премахнат от скритите елементи", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "Папката на работното пространство не е намерена. Отворете папка или работно пространство и опитайте отново.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} не съществува", 11 | "error.parseFilePath": "{0} не е налице", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Деактивиране на всички", 14 | "package.enableAll": "Активиране на всички", 15 | "package.exclude": "Добавяне към скрити елементи ...", 16 | "package.loading": "Зареждане на скрити елементи...", 17 | "package.pane": "Скрити елементи", 18 | "package.remove": "Премахване от скритите елементи", 19 | "package.reset": "Нулирайте скритите елементи", 20 | "package.toggle": "Превключване на видимостта", 21 | "picker.placeholder": "Какво бихте искали да скриете? Изберете всички приложими.", 22 | "reset.prompt": "Нулиране на скритите елементи? Това не може да бъде отменено.", 23 | "tooltip.hide": "Скриване на {0}", 24 | "tooltip.show": "Показване на {0}" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.de.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "German", 3 | "command.openSettings.title": "Erweiterungseinstellungen aktualisieren", 4 | "config.properties.backup": "Ressourcenkonfiguration: Konfigurieren Sie Dateien mit Glob-Mustern so, dass sie immer eine leere letzte Zeile haben.", 5 | "config.properties.showPicker": "Dateimusterauswahl anzeigen, wenn aktiviert, oder Exakte Übereinstimmung ausschließen, wenn deaktiviert.", 6 | "config.removedKey": "{0} aus ausgeblendeten Objekten entfernt", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "Arbeitsbereichsordner nicht gefunden. Öffnen Sie den Ordner oder Arbeitsbereich und versuchen Sie es erneut.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} existiert nicht", 11 | "error.parseFilePath": "{0} ist nicht verfügbar", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Alle deaktivieren", 14 | "package.enableAll": "Alles aktivieren", 15 | "package.exclude": "Zu ausgeblendeten Objekten hinzufügen ...", 16 | "package.loading": "Versteckte Elemente werden geladen ...", 17 | "package.pane": "Versteckte Gegenstände", 18 | "package.remove": "Aus ausgeblendeten Objekten entfernen", 19 | "package.reset": "Versteckte Objekte zurücksetzen", 20 | "package.toggle": "Sichtbarkeit umschalten", 21 | "picker.placeholder": "Was möchtest du verstecken? Wählen Sie alle zutreffenden.", 22 | "reset.prompt": "Versteckte Objekte zurücksetzen? Das kann nicht rückgängig gemacht werden.", 23 | "tooltip.hide": "{0} ausblenden", 24 | "tooltip.show": "{0} anzeigen" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.es.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Spanish", 3 | "command.openSettings.title": "Actualizar la configuración de la extensión", 4 | "config.properties.backup": "Configuración de recursos: configure archivos usando patrones globales para tener siempre una última línea vacía.", 5 | "config.properties.showPicker": "Mostrar selector de patrón de archivo cuando está habilitado o excluir coincidencia exacta cuando está deshabilitado.", 6 | "config.removedKey": "Se eliminó {0} de los elementos ocultos", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "Carpeta del espacio de trabajo no encontrada. Abra Carpeta o Área de trabajo y vuelva a intentarlo.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} no existe", 11 | "error.parseFilePath": "{0} no está disponible", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Desactivar todo", 14 | "package.enableAll": "Activar todo", 15 | "package.exclude": "Añadir a objetos ocultos ...", 16 | "package.loading": "Cargando elementos ocultos...", 17 | "package.pane": "Objetos ocultos", 18 | "package.remove": "Eliminar de los elementos ocultos", 19 | "package.reset": "Restablecer elementos ocultos", 20 | "package.toggle": "Alternar la visibilidad", 21 | "picker.placeholder": "¿Qué te gustaría esconder? Seleccione todas las que correspondan.", 22 | "reset.prompt": "¿Desea restablecer los elementos ocultos? Esto no se puede deshacer.", 23 | "tooltip.hide": "Ocultar {0}", 24 | "tooltip.show": "Show {0}" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "French", 3 | "command.openSettings.title": "Mettre à jour les paramètres d'extension", 4 | "config.properties.backup": "Configuration des ressources : configurez les fichiers à l'aide de modèles glob pour qu'ils aient toujours une dernière ligne vide.", 5 | "config.properties.showPicker": "Afficher le sélecteur de modèle de fichier lorsqu'il est activé ou exclure la correspondance exacte lorsqu'il est désactivé.", 6 | "config.removedKey": "Suppression de {0} des éléments masqués", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "Dossier d'espace de travail introuvable. Ouvrez le dossier ou l'espace de travail et réessayez.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} n'existe pas", 11 | "error.parseFilePath": "{0} n'est pas disponible", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Désactiver tous les", 14 | "package.enableAll": "Activer tout", 15 | "package.exclude": "Ajouter aux éléments cachés ...", 16 | "package.loading": "Chargement des éléments masqués...", 17 | "package.pane": "Objets Cachés", 18 | "package.remove": "Supprimer des éléments cachés", 19 | "package.reset": "Réinitialiser les éléments cachés", 20 | "package.toggle": "Basculer la visibilité", 21 | "picker.placeholder": "Que voudriez-vous cacher? Sélectionnez tout ce qui s'y rapporte.", 22 | "reset.prompt": "Réinitialiser les éléments cachés? Ça ne peut pas être annulé.", 23 | "tooltip.hide": "Masquer {0}", 24 | "tooltip.show": "Montrer {0}" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.hu.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Hungarian", 3 | "command.openSettings.title": "Frissítse a bővítmény beállításait", 4 | "config.properties.backup": "Erőforrás-konfiguráció: Állítsa be a fájlokat glob-mintákkal úgy, hogy az utolsó sor mindig üres legyen.", 5 | "config.properties.showPicker": "Fájlmintaválasztó megjelenítése, ha engedélyezve van, vagy Pontos egyezés kizárása, ha le van tiltva.", 6 | "config.removedKey": "{0} eltávolítása a rejtett elemekből", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "A munkaterület mappa nem található. Nyissa meg a mappát vagy a munkaterületet, és próbálja újra.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} nem létezik", 11 | "error.parseFilePath": "{0} nem érhető el", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Összes letiltása", 14 | "package.enableAll": "Az összes engedélyezése", 15 | "package.exclude": "Hozzáadás a rejtett elemekhez ...", 16 | "package.loading": "Rejtett elemek betöltése...", 17 | "package.pane": "Rejtett elemek", 18 | "package.remove": "Eltávolítás a rejtett elemekből", 19 | "package.reset": "A rejtett elemek visszaállítása", 20 | "package.toggle": "A láthatóság váltása", 21 | "picker.placeholder": "Mit szeretne elrejteni? Válassza ki az összes alkalmazást.", 22 | "reset.prompt": "A rejtett elemek visszaállítása? Ezt nem lehet visszacsinálni.", 23 | "tooltip.hide": "{0} elrejtése", 24 | "tooltip.show": "{0} megjelenítése" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.it.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Italian", 3 | "command.openSettings.title": "Aggiorna le impostazioni dell'estensione", 4 | "config.properties.backup": "Configurazione delle risorse: configura i file utilizzando i modelli glob per avere sempre un'ultima riga vuota.", 5 | "config.properties.showPicker": "Mostra Selettore modello file quando abilitato o Escludi corrispondenza esatta quando disabilitato.", 6 | "config.removedKey": "Rimosso {0} da oggetti nascosti", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "Cartella dell'area di lavoro non trovata. Apri la cartella o l'area di lavoro e riprova.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} non esiste", 11 | "error.parseFilePath": "{0} non è disponibile", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Disabilitare tutto", 14 | "package.enableAll": "Attiva tutto", 15 | "package.exclude": "Aggiungi a oggetti nascosti ...", 16 | "package.loading": "Caricamento di elementi nascosti...", 17 | "package.pane": "Oggetti nascosti", 18 | "package.remove": "Rimuovi da oggetti nascosti", 19 | "package.reset": "Reimposta elementi nascosti", 20 | "package.toggle": "Attiva / disattiva visibilità", 21 | "picker.placeholder": "Cosa ti piacerebbe nascondere? Seleziona tutto ciò che si applica.", 22 | "reset.prompt": "Reimposta elementi nascosti? Questo non può essere annullato.", 23 | "tooltip.hide": "Nascondi {0}", 24 | "tooltip.show": "Mostra {0}" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Japanese", 3 | "command.openSettings.title": "拡張設定の更新", 4 | "config.properties.backup": "リソース構成:globパターンを使用してファイルを構成し、常に最後の行が空になるようにします。", 5 | "config.properties.showPicker": "有効な場合はファイルパターンピッカーを表示し、無効な場合は完全一致を除外します。", 6 | "config.removedKey": "隠しアイテムから{0}を削除しました", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "ワークスペースフォルダが見つかりません。フォルダまたはワークスペースを開いて、再試行してください。", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0}は存在しません", 11 | "error.parseFilePath": "{0}は利用できません", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "すべて無効にします", 14 | "package.enableAll": "全て可能にする", 15 | "package.exclude": "隠しアイテムに追加...", 16 | "package.loading": "非表示のアイテムを読み込んでいます...", 17 | "package.pane": "隠しアイテム", 18 | "package.remove": "隠しアイテムから削除", 19 | "package.reset": "隠しアイテムをリセット", 20 | "package.toggle": "可視性を切り替える", 21 | "picker.placeholder": "何を隠したいですか?該当するものをすべて選択。", 22 | "reset.prompt": "隠しアイテムをリセットしますか?これは、元に戻すことはできません。", 23 | "tooltip.hide": "{0}を非表示", 24 | "tooltip.show": "{0}を表示" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "English", 3 | "command.openSettings.title": "Update Extension Settings", 4 | "config.properties.backup": "Resource configuration: Configure files using glob patterns to have an empty last line always.", 5 | "config.properties.showPicker": "Show File Pattern Picker when Enabled or Exclude Exact Match when disabled.", 6 | "config.removedKey": "Removed {0} from Hidden Items", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "Workspace Folder Not Found. Open Folder or Workspace and try again.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} does not exist", 11 | "error.parseFilePath": "{0} is not available", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Disable All", 14 | "package.enableAll": "Enable All", 15 | "package.exclude": "Add to Hidden Items ...", 16 | "package.loading": "Loading Hidden Items ...", 17 | "package.pane": "Hidden Items", 18 | "package.remove": "Remove from Hidden Items", 19 | "package.reset": "Reset Hidden Items", 20 | "package.toggle": "Toggle Visibility", 21 | "picker.placeholder": "What would you like to hide? Select all that apply.", 22 | "reset.prompt": "Reset Hidden Items? This cannot be undone.", 23 | "tooltip.hide": "Hide {0}", 24 | "tooltip.show": "Show {0}" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.ko.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Korean", 3 | "command.openSettings.title": "확장 설정 업데이트", 4 | "config.properties.backup": "리소스 구성: 항상 마지막 줄이 비어 있도록 glob 패턴을 사용하여 파일을 구성합니다.", 5 | "config.properties.showPicker": "활성화된 경우 파일 패턴 선택기를 표시하거나 비활성화된 경우 정확히 일치를 제외합니다.", 6 | "config.removedKey": "숨겨진 항목에서 {0}을 (를) 제거했습니다.", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "작업 공간 폴더를 찾을 수 없습니다. 폴더 또는 작업 공간을 열고 다시 시도하십시오.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0}이 (가) 존재하지 않습니다.", 11 | "error.parseFilePath": "{0}을 (를) 사용할 수 없습니다.", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "모두 사용 안함", 14 | "package.enableAll": "모두 사용", 15 | "package.exclude": "숨겨진 항목에 추가 ...", 16 | "package.loading": "숨겨진 항목 로드 중...", 17 | "package.pane": "숨겨진 항목", 18 | "package.remove": "숨겨진 항목에서 제거", 19 | "package.reset": "숨겨진 항목 재설정", 20 | "package.toggle": "공개 설정 / 해제", 21 | "picker.placeholder": "무엇을 숨기시겠습니까? 해당되는 모든 것들을 고르세요.", 22 | "reset.prompt": "숨겨진 항목 재설정? 이 취소 할 수 없습니다.", 23 | "tooltip.hide": "{0} 숨기기", 24 | "tooltip.show": "{0} 표시" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.pt-br.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Portuguese", 3 | "command.openSettings.title": "Atualizar configurações de extensão", 4 | "config.properties.backup": "Configuração de recursos: configure arquivos usando padrões glob para ter sempre uma última linha vazia.", 5 | "config.properties.showPicker": "Mostrar seletor de padrão de arquivo quando ativado ou Excluir correspondência exata quando desativado.", 6 | "config.removedKey": "Removido {0} dos itens ocultos", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "Pasta do espaço de trabalho não encontrada. Abra a pasta ou área de trabalho e tente novamente.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} não existe", 11 | "error.parseFilePath": "{0} não está disponível", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Desativar tudo", 14 | "package.enableAll": "Habilitar todos", 15 | "package.exclude": "Adicionar aos itens ocultos ...", 16 | "package.loading": "Carregando itens ocultos...", 17 | "package.pane": "Itens ocultos", 18 | "package.remove": "Remover de itens ocultos", 19 | "package.reset": "Redefinir itens ocultos", 20 | "package.toggle": "Alternar visibilidade", 21 | "picker.placeholder": "O que você gostaria de esconder? Selecione tudo que se aplica.", 22 | "reset.prompt": "Redefinir itens ocultos? Isto não pode ser desfeito.", 23 | "tooltip.hide": "Esconder {0}", 24 | "tooltip.show": "Mostrar {0}" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Russian", 3 | "command.openSettings.title": "Обновить настройки расширения", 4 | "config.properties.backup": "Конфигурация ресурсов: настройте файлы с использованием шаблонов универсальных объектов, чтобы последняя строка всегда была пустой.", 5 | "config.properties.showPicker": "Показывать средство выбора шаблона файла, если оно включено, или исключать точное совпадение, если оно отключено.", 6 | "config.removedKey": "Удалено {0} из скрытых предметов", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "Папка рабочей области не найдена. Откройте папку или рабочую область и повторите попытку.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} не существует", 11 | "error.parseFilePath": "{0} недоступен", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Отключить все", 14 | "package.enableAll": "Включить все", 15 | "package.exclude": "Добавить в скрытые объекты ...", 16 | "package.loading": "Загрузка скрытых элементов...", 17 | "package.pane": "Скрытые предметы", 18 | "package.remove": "Удалить из скрытых предметов", 19 | "package.reset": "Сбросить скрытые предметы", 20 | "package.toggle": "Переключить видимость", 21 | "picker.placeholder": "Что бы вы хотели скрыть? Выбрать все, что подходит.", 22 | "reset.prompt": "Сбросить скрытые предметы? Это не может быть отменено.", 23 | "tooltip.hide": "Скрыть {0}", 24 | "tooltip.show": "Показать {0}" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.tr.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Turkish", 3 | "command.openSettings.title": "Uzantı Ayarlarını Güncelle", 4 | "config.properties.backup": "Kaynak yapılandırması: Her zaman boş bir son satıra sahip olmak için glob kalıplarını kullanarak dosyaları yapılandırın.", 5 | "config.properties.showPicker": "Etkinleştirildiğinde Dosya Desen Seçici'yi göster veya devre dışı bırakıldığında Tam Eşleşmeyi Hariç Tut.", 6 | "config.removedKey": "Gizli Öğelerden {0} kaldırıldı", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "Çalışma Alanı Klasörü Bulunamadı. Klasör veya Çalışma Alanı'nı açın ve tekrar deneyin.", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0} mevcut değil", 11 | "error.parseFilePath": "{0} mevcut değil", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "Hepsini etkisiz hale getir", 14 | "package.enableAll": "Hepsini etkinleştir", 15 | "package.exclude": "Gizli Öğelere Ekle ...", 16 | "package.loading": "Gizli Öğeler Yükleniyor...", 17 | "package.pane": "Gizli Öğeler", 18 | "package.remove": "Gizli Öğelerden Kaldır", 19 | "package.reset": "Gizli Öğeleri Sıfırla", 20 | "package.toggle": "Görünürlüğü Değiştir", 21 | "picker.placeholder": "Ne saklamak istersiniz? Uygun olanları seçin.", 22 | "reset.prompt": "Gizli Öğeleri Sıfırla? Bu geri alınamaz.", 23 | "tooltip.hide": "{0} sakla", 24 | "tooltip.show": "{0} göster" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.zh-cn.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Chinese (Simplified)", 3 | "command.openSettings.title": "更新扩展设置", 4 | "config.properties.backup": "资源配置:使用模式配置文件以始终有一个空的最后一行。", 5 | "config.properties.showPicker": "启用时显示文件模式选择器或禁用时排除完全匹配。", 6 | "config.removedKey": "从隐藏项目中删除了{0}", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "未找到工作区文件夹。打开文件夹或工作区,然后重试。", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0}不存在", 11 | "error.parseFilePath": "{0}不可用", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "禁用所有", 14 | "package.enableAll": "全部启用", 15 | "package.exclude": "添加到隐藏物品...", 16 | "package.loading": "加载隐藏物品...", 17 | "package.pane": "隐藏物品", 18 | "package.remove": "从隐藏物品中删除", 19 | "package.reset": "重置隐藏的项目", 20 | "package.toggle": "切换可见性", 21 | "picker.placeholder": "你想隐藏什么?选择所有符合条件的。", 22 | "reset.prompt": "重置隐藏物品?这不能被撤消。", 23 | "tooltip.hide": "隐藏{0}", 24 | "tooltip.show": "显示{0}" 25 | } 26 | -------------------------------------------------------------------------------- /package.nls.zh-tw.json: -------------------------------------------------------------------------------- 1 | { 2 | "_language": "Chinese (Traditional)", 3 | "command.openSettings.title": "更新擴展設置", 4 | "config.properties.backup": "資源配置:使用模式配置文件以始終有一個空的最後一行。", 5 | "config.properties.showPicker": "啟用時顯示文件模式選擇器或禁用時排除完全匹配。", 6 | "config.removedKey": "從隱藏項目中刪除了{0}", 7 | "debug.logger.error": "⚠ ERROR: [{0}] {1}", 8 | "debug.logger.missingWorkspace": "未找到工作區文件夾。打開文件夾或工作區,然後重試。", 9 | "debug.logger.workspace": "\nWorkspace: {0}", 10 | "error.ifExists": "{0}不存在", 11 | "error.parseFilePath": "{0}不可用", 12 | "extension.title": "Explorer Exclude", 13 | "package.disableAll": "禁用所有", 14 | "package.enableAll": "全部啟用", 15 | "package.exclude": "添加到隱藏物品...", 16 | "package.loading": "加載隱藏物品...", 17 | "package.pane": "隱藏物品", 18 | "package.remove": "從隱藏物品中刪除", 19 | "package.reset": "重置隱藏的項目", 20 | "package.toggle": "切換可見性", 21 | "picker.placeholder": "你想隱藏什麼?選擇所有符合條件的。", 22 | "reset.prompt": "重置隱藏物品?這不能被撤消。", 23 | "tooltip.hide": "隱藏{0}", 24 | "tooltip.show": "顯示{0}" 25 | } 26 | --------------------------------------------------------------------------------