├── .editorconfig ├── .github └── workflows │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .vscode ├── launch.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── eslint.config.mjs ├── fixtures ├── line_length_expected │ ├── keepOnlyDuplicateLines │ ├── keepOnlyNotDuplicateLines │ ├── removeDuplicateLines │ ├── sortLines │ ├── sortLinesCaseInsensitive │ ├── sortLinesCaseInsensitiveUnique │ ├── sortLinesLineLength │ ├── sortLinesLineLengthReverse │ ├── sortLinesNatural │ ├── sortLinesReverse │ ├── sortLinesShuffle │ ├── sortLinesUnique │ ├── sortLinesVariableLength │ └── sortLinesVariableLengthReverse ├── line_length_fixture ├── shuffled_lowercase_expected │ ├── keepOnlyDuplicateLines │ ├── keepOnlyNotDuplicateLines │ ├── removeDuplicateLines │ ├── sortLines │ ├── sortLinesCaseInsensitive │ ├── sortLinesCaseInsensitiveUnique │ ├── sortLinesLineLength │ ├── sortLinesLineLengthReverse │ ├── sortLinesNatural │ ├── sortLinesReverse │ ├── sortLinesShuffle │ ├── sortLinesUnique │ ├── sortLinesVariableLength │ └── sortLinesVariableLengthReverse ├── shuffled_lowercase_fixture ├── unicode_expected │ ├── keepOnlyDuplicateLines │ ├── keepOnlyNotDuplicateLines │ ├── removeDuplicateLines │ ├── sortLines │ ├── sortLinesCaseInsensitive │ ├── sortLinesCaseInsensitiveUnique │ ├── sortLinesLineLength │ ├── sortLinesLineLengthReverse │ ├── sortLinesNatural │ ├── sortLinesReverse │ ├── sortLinesShuffle │ ├── sortLinesUnique │ ├── sortLinesVariableLength │ └── sortLinesVariableLengthReverse ├── unicode_fixture ├── variables_expected │ ├── keepOnlyDuplicateLines │ ├── keepOnlyNotDuplicateLines │ ├── removeDuplicateLines │ ├── sortLines │ ├── sortLinesCaseInsensitive │ ├── sortLinesCaseInsensitiveUnique │ ├── sortLinesLineLength │ ├── sortLinesLineLengthReverse │ ├── sortLinesNatural │ ├── sortLinesReverse │ ├── sortLinesShuffle │ ├── sortLinesUnique │ ├── sortLinesVariableLength │ └── sortLinesVariableLengthReverse └── variables_fixture ├── images ├── icon.png ├── install-animation.gif └── usage-animation.gif ├── package-lock.json ├── package.json ├── src ├── extension.ts ├── sort-lines.ts └── test │ ├── runTest.ts │ └── suite │ ├── index.ts │ └── sort-lines.test.ts ├── tsconfig.json └── webpack.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [fixtures/**/*] 12 | insert_final_newline = false 13 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | ci: 7 | strategy: 8 | matrix: 9 | os: [macos-latest, ubuntu-latest, windows-latest] 10 | runs-on: ${{ matrix.os }} 11 | steps: 12 | - uses: actions/checkout@v4 13 | - name: Use Node.js 20.x 14 | uses: actions/setup-node@v4 15 | with: 16 | node-version: 20.x 17 | cache: npm 18 | - name: Install and build 19 | run: | 20 | npm ci 21 | npm run compile 22 | env: 23 | CI: true 24 | - name: Test 25 | run: npm test 26 | if: runner.os != 'Linux' 27 | - name: Test on Linux 28 | run: xvfb-run -a npm test 29 | if: runner.os == 'Linux' 30 | - name: Lint 31 | run: npm run lint 32 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - name: Use Node.js 20.x 14 | uses: actions/setup-node@v4 15 | with: 16 | node-version: 20.x 17 | registry-url: 'https://npm.pkg.github.com' 18 | cache: npm 19 | - name: Install and build 20 | run: npm ci 21 | env: 22 | CI: true 23 | - name: Build 24 | run: npm run compile 25 | env: 26 | CI: true 27 | - name: Build web 28 | run: npm run package-web 29 | env: 30 | CI: true 31 | - name: Publish with vsce 32 | run: | 33 | npm install --global @vscode/vsce 34 | # Try to publish and ignore any errors (that version was already published) 35 | vsce publish -p $VSCE_TOKEN || true 36 | env: 37 | VSCE_TOKEN: ${{ secrets.VSCE_TOKEN }} 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | out/ 4 | .vscode-test/ 5 | *.vsix 6 | yarn.lock 7 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "runtimeExecutable": "${execPath}", 13 | "args": [ 14 | "--extensionDevelopmentPath=${workspaceFolder}" 15 | ], 16 | "outFiles": [ 17 | "${workspaceFolder}/out/**/*.js" 18 | ], 19 | "preLaunchTask": "npm: watch" 20 | }, 21 | { 22 | "name": "Extension Tests", 23 | "type": "extensionHost", 24 | "request": "launch", 25 | "runtimeExecutable": "${execPath}", 26 | "args": [ 27 | "--extensionDevelopmentPath=${workspaceFolder}", 28 | "--extensionTestsPath=${workspaceFolder}/out/test" 29 | ], 30 | "outFiles": [ 31 | "${workspaceFolder}/out/test/**/*.js" 32 | ], 33 | "preLaunchTask": "npm: watch" 34 | }, 35 | { 36 | "name": "Run Web Extension in VS Code", 37 | "type": "pwa-extensionHost", 38 | "debugWebWorkerHost": true, 39 | "request": "launch", 40 | "args": [ 41 | "--extensionDevelopmentPath=${workspaceFolder}", 42 | "--extensionDevelopmentKind=web" 43 | ], 44 | "outFiles": [ 45 | "${workspaceFolder}/dist/web/**/*.js" 46 | ], 47 | "preLaunchTask": "npm: watch-web" 48 | } 49 | ] 50 | } 51 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "npm", 6 | "script": "watch", 7 | "problemMatcher": "$tsc-watch", 8 | "isBackground": true, 9 | "presentation": { 10 | "reveal": "never" 11 | }, 12 | "group": { 13 | "kind": "build", 14 | "isDefault": true 15 | } 16 | }, 17 | { 18 | "type": "npm", 19 | "script": "watch-web", 20 | "group": "build", 21 | "isBackground": true, 22 | "problemMatcher": ["$ts-webpack-watch"] 23 | } 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | out/**/*.map 5 | src/** 6 | .gitignore 7 | tsconfig.json 8 | vsc-extension-quickstart.md 9 | tslint.json 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 1.12.0 2 | 3 | - Add an editor context menu containing all commands ([#140](https://github.com/Tyriar/vscode-sort-lines/pull/140)) via [tisilent](https://github.com/tisilent) 4 | - Added `sortLines.keepOnlyNotDuplicateLines` command ([#132](https://github.com/Tyriar/vscode-sort-lines/pull/132)) via [almeidaxan](https://github.com/almeidaxan) 5 | - Fixed GitHub Actions CI ([#142](https://github.com/Tyriar/vscode-sort-lines/pull/142)) via [dotnetCarpenter](https://github.com/dotnetCarpenter) 6 | 7 | ## 1.11.0 8 | 9 | - Added `sortLines.ignoreUnselectedLastLine` which will ignore the last line if it's only selected because of the trailing \n on the previous line. This allows selecting lines to be sorted by clicking and dragging the editor line numbers ([#124](https://github.com/Tyriar/vscode-sort-lines/pull/124)) via [@gdlx](https://github.com/gdlx) 10 | 11 | ## 1.10.2 12 | 13 | - Update VS Code engine version 14 | 15 | ## 1.10.1 16 | 17 | - Fix published build artifacts 18 | 19 | ## 1.10.0 20 | 21 | - Added `sortLines.keepOnlyDuplicateLines` command which does the inverse of `sortLines.removeDuplicateLines` ([#116](https://github.com/Tyriar/vscode-sort-lines/pull/116)) via [@pit00](https://github.com/pit00) 22 | 23 | ## 1.9.1 24 | 25 | - The extension now supports vscode.dev and github.dev. 26 | 27 | ## 1.9.0 28 | 29 | - Update icon to play well with dark backgrounds ([#51](https://github.com/Tyriar/vscode-sort-lines/pull/51)) via [@Pustur](https://github.com/Pustur) 30 | - New context menu item ([#52](https://github.com/Tyriar/vscode-sort-lines/pull/52)) via [@petty](https://github.com/petty) 31 | - Add tests for shuffle sorts ([#56](https://github.com/Tyriar/vscode-sort-lines/pull/56)) via [@merelj](https://github.com/merelj) 32 | - Migrate to GitHub Actions and automate release ([#56](https://github.com/Tyriar/vscode-sort-lines/pull/60), [#61](https://github.com/Tyriar/vscode-sort-lines/pull/61), [#63](https://github.com/Tyriar/vscode-sort-lines/pull/63)) via [@Tyriar](https://github.com/Tyriar) 33 | - Upgrade to TypeScript 3.7, Mocha 6 and new VS Code test framework ([#62](https://github.com/Tyriar/vscode-sort-lines/pull/62)) via [@Tyriar](https://github.com/Tyriar) 34 | - New remove duplicate lines command ([#57](https://github.com/Tyriar/vscode-sort-lines/pull/57)) via [@merelj](https://github.com/merelj) 35 | - Enable TypeScript strict mode ([#64](https://github.com/Tyriar/vscode-sort-lines/pull/64)) via [@Tyriar](https://github.com/Tyriar) 36 | - Make sorts aware of multi-length characters ([#65](https://github.com/Tyriar/vscode-sort-lines/pull/65)) via [@Tyriar](https://github.com/Tyriar) 37 | - Make all commands use stable sorts ([#66](https://github.com/Tyriar/vscode-sort-lines/pull/66)) via [@Tyriar](https://github.com/Tyriar) 38 | 39 | ## 1.8.0 40 | 41 | - Added `sortLines.sortEntireFile` setting (defaults to false) that sorts the entire file when there is no selection [#43](https://github.com/Tyriar/vscode-sort-lines/pull/43) via [@chrsmutti](https://github.com/chrsmutti) 42 | 43 | ## 1.7.0 44 | 45 | - Added `sortLines.filterBlankLines` setting (defaults to false) [#35](https://github.com/Tyriar/vscode-sort-lines/pull/35) via [@SoftwareApe](https://github.com/SoftwareApe) 46 | 47 | ## 1.6.0 48 | 49 | - Added `sortLines.sortLinesVariableLength` and `sortLines.sortLinesVariableLengthReverse` commands to sort by variable length [#30](https://github.com/Tyriar/vscode-sort-lines/pull/30) via [@labithiotis](https://github.com/labithiotis) 50 | - Added `sortLines.sortLinesCaseInsensitiveUnique` command to sort case insensitively and remove duplicates [#29](https://github.com/Tyriar/vscode-sort-lines/pull/29) via [@lynxnake](https://github.com/lynxnake) 51 | - Convert to TypeScript 52 | - Add TSLint 53 | - Add CI 54 | - Add tests 55 | 56 | ## 1.5.0 57 | 58 | - Added `sortLines.sortLinesNatural` command sort lines alphabetically but group together digits [#26](https://github.com/Tyriar/vscode-sort-lines/pull/26) via [@Gerrit-K](https://github.com/Gerrit-K) 59 | - Remove backtick from install heading [#23](https://github.com/Tyriar/vscode-sort-lines/pull/23) via [@wald-tq](https://github.com/wald-tq) 60 | - Made a note in the README about default keybinding overriding toggle breakpoint [#22](https://github.com/Tyriar/vscode-sort-lines/issues/22) via [@Tyriar](https://github.com/Tyriar) 61 | 62 | ## 1.4.1 63 | 64 | - Added `sortLines.sortLinesLineLengthReverse` command to sort lines by line length (descending) [#21](https://github.com/Tyriar/vscode-sort-lines/pull/21) via [@prplx](https://github.com/prplx) 65 | - Improved clarity of command titles [#20](https://github.com/Tyriar/vscode-sort-lines/pull/20) via [@Eldaw](https://github.com/Eldaw) 66 | 67 | ## 1.3.0 68 | 69 | - Added `sortLines.sortLinesShuffle` command to shuffle lines randomly [#12](https://github.com/Tyriar/vscode-sort-lines/pull/12) via [@mhavas](https://github.com/mhavas). 70 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015, Daniel Imms (http://www.growingwiththeweb.com) 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 | # Functionality 2 | 3 | Sort lines of text in Visual Studio Code. The following types of sorting are supported: 4 | 5 | | Command | Title | Comments 6 | |---|---|---| 7 | | sortLines.sortLines | Sort lines (ascending, case sensitive) | Keybound to F9\* 8 | | sortLines.sortLinesCaseInsensitive | Sort lines (ascending, case insensitive) | 9 | | sortLines.sortLinesCaseInsensitiveUnique | Sort lines (unique ascending, case insensitive) | 10 | | sortLines.sortLinesReverse | Sort lines (descending, case sensitive) | Reverse character code based sort 11 | | sortLines.sortLinesLineLength | Sort lines (line length ascending) | 12 | | sortLines.sortLinesLineLengthReverse | Sort lines (line length descending) | 13 | | sortLines.sortLinesVariableLength | Sort lines (variable length ascending) | 14 | | sortLines.sortLinesVariableLengthReverse | Sort lines (variable length descending) | 15 | | sortLines.sortLinesNatural | Sort lines (natural) | Sorts alphabetically but groups multi-digit numbers ([Wikipedia](https://en.wikipedia.org/wiki/Natural_sort_order)) 16 | | sortLines.sortLinesUnique | Sort lines (unique ascending, case sensitive) | Regular character code keeping only unique items 17 | | sortLines.sortLinesShuffle | Sort lines (shuffle) | 18 | | sortLines.removeDuplicateLines | Sort lines (remove duplicate lines) 19 | | sortLines.keepOnlyDuplicateLines | Sort lines (keep only duplicate lines) 20 | 21 | \* *Note that this overrides the toggle breakpoint keybinding, you can unbind it by adding this to your `keybindings.json` file:* 22 | 23 | `{ "key": "f9", "command": "-sortLines.sortLines", "when": "editorTextFocus" }` 24 | 25 | # Settings 26 | 27 | | Name | Description | Default 28 | |---|---|---| 29 | | sortLines.filterBlankLines | _(boolean)_ Filter out blank (empty or whitespace-only) lines. | false 30 | | sortLines.sortEntireFile | _(boolean)_ Sort entire file if no selection is active. | false 31 | 32 | # Install 33 | 34 | 1. Open VS Code 35 | 2. Press F1 36 | 3. Type "install" 37 | 4. Select "Extensions: Install Extension". 38 | 5. Select sort-lines from the list 39 | 40 | ![Install animation](images/install-animation.gif) 41 | 42 | # Usage 43 | 44 | Select the lines to sort, press F1 type sort and select the desired sort. The regular sort has the default hotkey F9. 45 | 46 | ![Usage animation](images/usage-animation.gif) 47 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import eslint from '@eslint/js'; 2 | import tseslint from 'typescript-eslint'; 3 | 4 | export default tseslint.config( 5 | eslint.configs.recommended, 6 | ...tseslint.configs.recommended, 7 | ); 8 | -------------------------------------------------------------------------------- /fixtures/line_length_expected/keepOnlyDuplicateLines: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tyriar/vscode-sort-lines/eaf02bb141f1853d571b1e97574c6857e80a727c/fixtures/line_length_expected/keepOnlyDuplicateLines -------------------------------------------------------------------------------- /fixtures/line_length_expected/keepOnlyNotDuplicateLines: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | drill 8 | duck 9 | grand 10 | hello 11 | help 12 | puck 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/line_length_expected/removeDuplicateLines: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | drill 8 | duck 9 | grand 10 | hello 11 | help 12 | puck 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLines: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | drill 8 | duck 9 | grand 10 | hello 11 | help 12 | puck 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesCaseInsensitive: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | drill 8 | duck 9 | grand 10 | hello 11 | help 12 | puck 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesCaseInsensitiveUnique: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | drill 8 | duck 9 | grand 10 | hello 11 | help 12 | puck 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesLineLength: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | duck 8 | help 9 | puck 10 | drill 11 | grand 12 | hello 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesLineLengthReverse: -------------------------------------------------------------------------------- 1 | drill 2 | grand 3 | hello 4 | quill 5 | trill 6 | zebra 7 | back 8 | band 9 | blah 10 | buck 11 | burp 12 | deck 13 | duck 14 | help 15 | puck -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesNatural: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | drill 8 | duck 9 | grand 10 | hello 11 | help 12 | puck 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesReverse: -------------------------------------------------------------------------------- 1 | zebra 2 | trill 3 | quill 4 | puck 5 | help 6 | hello 7 | grand 8 | duck 9 | drill 10 | deck 11 | burp 12 | buck 13 | blah 14 | band 15 | back -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesShuffle: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | drill 8 | duck 9 | grand 10 | zebra 11 | hello 12 | help 13 | puck 14 | quill 15 | trill -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesUnique: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | drill 8 | duck 9 | grand 10 | hello 11 | help 12 | puck 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesVariableLength: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | duck 8 | help 9 | puck 10 | drill 11 | grand 12 | hello 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/line_length_expected/sortLinesVariableLengthReverse: -------------------------------------------------------------------------------- 1 | drill 2 | grand 3 | hello 4 | quill 5 | trill 6 | zebra 7 | back 8 | band 9 | blah 10 | buck 11 | burp 12 | deck 13 | duck 14 | help 15 | puck -------------------------------------------------------------------------------- /fixtures/line_length_fixture: -------------------------------------------------------------------------------- 1 | back 2 | band 3 | blah 4 | buck 5 | burp 6 | deck 7 | drill 8 | duck 9 | grand 10 | hello 11 | help 12 | puck 13 | quill 14 | trill 15 | zebra -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/keepOnlyDuplicateLines: -------------------------------------------------------------------------------- 1 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/keepOnlyNotDuplicateLines: -------------------------------------------------------------------------------- 1 | cc 2 | d 3 | aa 4 | c 5 | b 6 | bb 7 | a -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/removeDuplicateLines: -------------------------------------------------------------------------------- 1 | cc 2 | d 3 | aa 4 | c 5 | b 6 | bb 7 | a 8 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLines: -------------------------------------------------------------------------------- 1 | a 2 | aa 3 | b 4 | bb 5 | c 6 | cc 7 | d 8 | dd 9 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesCaseInsensitive: -------------------------------------------------------------------------------- 1 | a 2 | aa 3 | b 4 | bb 5 | c 6 | cc 7 | d 8 | dd 9 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesCaseInsensitiveUnique: -------------------------------------------------------------------------------- 1 | a 2 | aa 3 | b 4 | bb 5 | c 6 | cc 7 | d 8 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesLineLength: -------------------------------------------------------------------------------- 1 | d 2 | c 3 | b 4 | a 5 | cc 6 | aa 7 | bb 8 | dd 9 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesLineLengthReverse: -------------------------------------------------------------------------------- 1 | cc 2 | aa 3 | bb 4 | dd 5 | dd 6 | d 7 | c 8 | b 9 | a -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesNatural: -------------------------------------------------------------------------------- 1 | a 2 | aa 3 | b 4 | bb 5 | c 6 | cc 7 | d 8 | dd 9 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesReverse: -------------------------------------------------------------------------------- 1 | dd 2 | dd 3 | d 4 | cc 5 | c 6 | bb 7 | b 8 | aa 9 | a -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesShuffle: -------------------------------------------------------------------------------- 1 | cc 2 | d 3 | aa 4 | c 5 | b 6 | bb 7 | a 8 | dd 9 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesUnique: -------------------------------------------------------------------------------- 1 | a 2 | aa 3 | b 4 | bb 5 | c 6 | cc 7 | d 8 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesVariableLength: -------------------------------------------------------------------------------- 1 | d 2 | c 3 | b 4 | a 5 | cc 6 | aa 7 | bb 8 | dd 9 | dd -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_expected/sortLinesVariableLengthReverse: -------------------------------------------------------------------------------- 1 | cc 2 | aa 3 | bb 4 | dd 5 | dd 6 | d 7 | c 8 | b 9 | a -------------------------------------------------------------------------------- /fixtures/shuffled_lowercase_fixture: -------------------------------------------------------------------------------- 1 | cc 2 | d 3 | aa 4 | c 5 | b 6 | bb 7 | a 8 | dd 9 | dd -------------------------------------------------------------------------------- /fixtures/unicode_expected/keepOnlyDuplicateLines: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tyriar/vscode-sort-lines/eaf02bb141f1853d571b1e97574c6857e80a727c/fixtures/unicode_expected/keepOnlyDuplicateLines -------------------------------------------------------------------------------- /fixtures/unicode_expected/keepOnlyNotDuplicateLines: -------------------------------------------------------------------------------- 1 | 012345 2 | 0123456789 3 | 𝟘𝟙𝟚𝟛 -------------------------------------------------------------------------------- /fixtures/unicode_expected/removeDuplicateLines: -------------------------------------------------------------------------------- 1 | 012345 2 | 0123456789 3 | 𝟘𝟙𝟚𝟛 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLines: -------------------------------------------------------------------------------- 1 | 012345 2 | 0123456789 3 | 𝟘𝟙𝟚𝟛 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesCaseInsensitive: -------------------------------------------------------------------------------- 1 | 𝟘𝟙𝟚𝟛 2 | 012345 3 | 0123456789 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesCaseInsensitiveUnique: -------------------------------------------------------------------------------- 1 | 𝟘𝟙𝟚𝟛 2 | 012345 3 | 0123456789 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesLineLength: -------------------------------------------------------------------------------- 1 | 𝟘𝟙𝟚𝟛 2 | 012345 3 | 0123456789 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesLineLengthReverse: -------------------------------------------------------------------------------- 1 | 0123456789 2 | 012345 3 | 𝟘𝟙𝟚𝟛 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesNatural: -------------------------------------------------------------------------------- 1 | 𝟘𝟙𝟚𝟛 2 | 012345 3 | 0123456789 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesReverse: -------------------------------------------------------------------------------- 1 | 𝟘𝟙𝟚𝟛 2 | 0123456789 3 | 012345 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesShuffle: -------------------------------------------------------------------------------- 1 | 012345 2 | 0123456789 3 | 𝟘𝟙𝟚𝟛 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesUnique: -------------------------------------------------------------------------------- 1 | 012345 2 | 0123456789 3 | 𝟘𝟙𝟚𝟛 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesVariableLength: -------------------------------------------------------------------------------- 1 | 𝟘𝟙𝟚𝟛 2 | 012345 3 | 0123456789 -------------------------------------------------------------------------------- /fixtures/unicode_expected/sortLinesVariableLengthReverse: -------------------------------------------------------------------------------- 1 | 0123456789 2 | 012345 3 | 𝟘𝟙𝟚𝟛 -------------------------------------------------------------------------------- /fixtures/unicode_fixture: -------------------------------------------------------------------------------- 1 | 012345 2 | 0123456789 3 | 𝟘𝟙𝟚𝟛 -------------------------------------------------------------------------------- /fixtures/variables_expected/keepOnlyDuplicateLines: -------------------------------------------------------------------------------- 1 | var test2 = 1221134; -------------------------------------------------------------------------------- /fixtures/variables_expected/keepOnlyNotDuplicateLines: -------------------------------------------------------------------------------- 1 | var test10 = 1; 2 | var test100 = 100; -------------------------------------------------------------------------------- /fixtures/variables_expected/removeDuplicateLines: -------------------------------------------------------------------------------- 1 | var test10 = 1; 2 | var test2 = 1221134; 3 | var test100 = 100; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLines: -------------------------------------------------------------------------------- 1 | var test10 = 1; 2 | var test100 = 100; 3 | var test2 = 1221134; 4 | var test2 = 1221134; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesCaseInsensitive: -------------------------------------------------------------------------------- 1 | var test10 = 1; 2 | var test100 = 100; 3 | var test2 = 1221134; 4 | var test2 = 1221134; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesCaseInsensitiveUnique: -------------------------------------------------------------------------------- 1 | var test10 = 1; 2 | var test100 = 100; 3 | var test2 = 1221134; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesLineLength: -------------------------------------------------------------------------------- 1 | var test10 = 1; 2 | var test100 = 100; 3 | var test2 = 1221134; 4 | var test2 = 1221134; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesLineLengthReverse: -------------------------------------------------------------------------------- 1 | var test2 = 1221134; 2 | var test2 = 1221134; 3 | var test100 = 100; 4 | var test10 = 1; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesNatural: -------------------------------------------------------------------------------- 1 | var test2 = 1221134; 2 | var test2 = 1221134; 3 | var test10 = 1; 4 | var test100 = 100; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesReverse: -------------------------------------------------------------------------------- 1 | var test2 = 1221134; 2 | var test2 = 1221134; 3 | var test100 = 100; 4 | var test10 = 1; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesShuffle: -------------------------------------------------------------------------------- 1 | var test10 = 1; 2 | var test2 = 1221134; 3 | var test100 = 100; 4 | var test2 = 1221134; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesUnique: -------------------------------------------------------------------------------- 1 | var test10 = 1; 2 | var test100 = 100; 3 | var test2 = 1221134; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesVariableLength: -------------------------------------------------------------------------------- 1 | var test2 = 1221134; 2 | var test2 = 1221134; 3 | var test10 = 1; 4 | var test100 = 100; -------------------------------------------------------------------------------- /fixtures/variables_expected/sortLinesVariableLengthReverse: -------------------------------------------------------------------------------- 1 | var test100 = 100; 2 | var test10 = 1; 3 | var test2 = 1221134; 4 | var test2 = 1221134; -------------------------------------------------------------------------------- /fixtures/variables_fixture: -------------------------------------------------------------------------------- 1 | var test10 = 1; 2 | var test2 = 1221134; 3 | var test100 = 100; 4 | var test2 = 1221134; -------------------------------------------------------------------------------- /images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tyriar/vscode-sort-lines/eaf02bb141f1853d571b1e97574c6857e80a727c/images/icon.png -------------------------------------------------------------------------------- /images/install-animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tyriar/vscode-sort-lines/eaf02bb141f1853d571b1e97574c6857e80a727c/images/install-animation.gif -------------------------------------------------------------------------------- /images/usage-animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tyriar/vscode-sort-lines/eaf02bb141f1853d571b1e97574c6857e80a727c/images/usage-animation.gif -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sort-lines", 3 | "version": "1.12.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "sort-lines", 9 | "version": "1.12.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@eslint/js": "^9.14.0", 13 | "@types/eslint__js": "^8.42.3", 14 | "@types/glob": "^8.1.0", 15 | "@types/mocha": "^10.0.9", 16 | "@types/node": "^20.14.8", 17 | "@types/vscode": "^1.95.0", 18 | "@types/webpack-env": "^1.18.5", 19 | "@vscode/test-electron": "^2.4.1", 20 | "eslint": "^9.14.0", 21 | "mocha": "^10.8.2", 22 | "ts-loader": "^9.5.1", 23 | "typescript": "^5.6.3", 24 | "typescript-eslint": "^8.13.0", 25 | "webpack": "^5.96.1", 26 | "webpack-cli": "^5.1.4" 27 | }, 28 | "engines": { 29 | "vscode": "^1.79.0" 30 | } 31 | }, 32 | "node_modules/@discoveryjs/json-ext": { 33 | "version": "0.5.7", 34 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", 35 | "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", 36 | "dev": true, 37 | "license": "MIT", 38 | "engines": { 39 | "node": ">=10.0.0" 40 | } 41 | }, 42 | "node_modules/@eslint-community/eslint-utils": { 43 | "version": "4.4.1", 44 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", 45 | "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", 46 | "dev": true, 47 | "license": "MIT", 48 | "dependencies": { 49 | "eslint-visitor-keys": "^3.4.3" 50 | }, 51 | "engines": { 52 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 53 | }, 54 | "funding": { 55 | "url": "https://opencollective.com/eslint" 56 | }, 57 | "peerDependencies": { 58 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 59 | } 60 | }, 61 | "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { 62 | "version": "3.4.3", 63 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 64 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 65 | "dev": true, 66 | "license": "Apache-2.0", 67 | "engines": { 68 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 69 | }, 70 | "funding": { 71 | "url": "https://opencollective.com/eslint" 72 | } 73 | }, 74 | "node_modules/@eslint-community/regexpp": { 75 | "version": "4.12.1", 76 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", 77 | "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", 78 | "dev": true, 79 | "license": "MIT", 80 | "engines": { 81 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 82 | } 83 | }, 84 | "node_modules/@eslint/config-array": { 85 | "version": "0.19.0", 86 | "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", 87 | "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", 88 | "dev": true, 89 | "license": "Apache-2.0", 90 | "dependencies": { 91 | "@eslint/object-schema": "^2.1.4", 92 | "debug": "^4.3.1", 93 | "minimatch": "^3.1.2" 94 | }, 95 | "engines": { 96 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 97 | } 98 | }, 99 | "node_modules/@eslint/core": { 100 | "version": "0.9.0", 101 | "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", 102 | "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", 103 | "dev": true, 104 | "license": "Apache-2.0", 105 | "engines": { 106 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 107 | } 108 | }, 109 | "node_modules/@eslint/eslintrc": { 110 | "version": "3.2.0", 111 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", 112 | "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", 113 | "dev": true, 114 | "license": "MIT", 115 | "dependencies": { 116 | "ajv": "^6.12.4", 117 | "debug": "^4.3.2", 118 | "espree": "^10.0.1", 119 | "globals": "^14.0.0", 120 | "ignore": "^5.2.0", 121 | "import-fresh": "^3.2.1", 122 | "js-yaml": "^4.1.0", 123 | "minimatch": "^3.1.2", 124 | "strip-json-comments": "^3.1.1" 125 | }, 126 | "engines": { 127 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 128 | }, 129 | "funding": { 130 | "url": "https://opencollective.com/eslint" 131 | } 132 | }, 133 | "node_modules/@eslint/js": { 134 | "version": "9.15.0", 135 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", 136 | "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", 137 | "dev": true, 138 | "license": "MIT", 139 | "engines": { 140 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 141 | } 142 | }, 143 | "node_modules/@eslint/object-schema": { 144 | "version": "2.1.4", 145 | "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", 146 | "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", 147 | "dev": true, 148 | "license": "Apache-2.0", 149 | "engines": { 150 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 151 | } 152 | }, 153 | "node_modules/@eslint/plugin-kit": { 154 | "version": "0.2.3", 155 | "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", 156 | "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", 157 | "dev": true, 158 | "license": "Apache-2.0", 159 | "dependencies": { 160 | "levn": "^0.4.1" 161 | }, 162 | "engines": { 163 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 164 | } 165 | }, 166 | "node_modules/@humanfs/core": { 167 | "version": "0.19.1", 168 | "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", 169 | "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", 170 | "dev": true, 171 | "license": "Apache-2.0", 172 | "engines": { 173 | "node": ">=18.18.0" 174 | } 175 | }, 176 | "node_modules/@humanfs/node": { 177 | "version": "0.16.6", 178 | "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", 179 | "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", 180 | "dev": true, 181 | "license": "Apache-2.0", 182 | "dependencies": { 183 | "@humanfs/core": "^0.19.1", 184 | "@humanwhocodes/retry": "^0.3.0" 185 | }, 186 | "engines": { 187 | "node": ">=18.18.0" 188 | } 189 | }, 190 | "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { 191 | "version": "0.3.1", 192 | "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", 193 | "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", 194 | "dev": true, 195 | "license": "Apache-2.0", 196 | "engines": { 197 | "node": ">=18.18" 198 | }, 199 | "funding": { 200 | "type": "github", 201 | "url": "https://github.com/sponsors/nzakas" 202 | } 203 | }, 204 | "node_modules/@humanwhocodes/module-importer": { 205 | "version": "1.0.1", 206 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 207 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 208 | "dev": true, 209 | "license": "Apache-2.0", 210 | "engines": { 211 | "node": ">=12.22" 212 | }, 213 | "funding": { 214 | "type": "github", 215 | "url": "https://github.com/sponsors/nzakas" 216 | } 217 | }, 218 | "node_modules/@humanwhocodes/retry": { 219 | "version": "0.4.1", 220 | "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", 221 | "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", 222 | "dev": true, 223 | "license": "Apache-2.0", 224 | "engines": { 225 | "node": ">=18.18" 226 | }, 227 | "funding": { 228 | "type": "github", 229 | "url": "https://github.com/sponsors/nzakas" 230 | } 231 | }, 232 | "node_modules/@jridgewell/gen-mapping": { 233 | "version": "0.3.5", 234 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", 235 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 236 | "dev": true, 237 | "license": "MIT", 238 | "dependencies": { 239 | "@jridgewell/set-array": "^1.2.1", 240 | "@jridgewell/sourcemap-codec": "^1.4.10", 241 | "@jridgewell/trace-mapping": "^0.3.24" 242 | }, 243 | "engines": { 244 | "node": ">=6.0.0" 245 | } 246 | }, 247 | "node_modules/@jridgewell/resolve-uri": { 248 | "version": "3.1.2", 249 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 250 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 251 | "dev": true, 252 | "license": "MIT", 253 | "engines": { 254 | "node": ">=6.0.0" 255 | } 256 | }, 257 | "node_modules/@jridgewell/set-array": { 258 | "version": "1.2.1", 259 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 260 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 261 | "dev": true, 262 | "license": "MIT", 263 | "engines": { 264 | "node": ">=6.0.0" 265 | } 266 | }, 267 | "node_modules/@jridgewell/source-map": { 268 | "version": "0.3.6", 269 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", 270 | "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", 271 | "dev": true, 272 | "license": "MIT", 273 | "dependencies": { 274 | "@jridgewell/gen-mapping": "^0.3.5", 275 | "@jridgewell/trace-mapping": "^0.3.25" 276 | } 277 | }, 278 | "node_modules/@jridgewell/sourcemap-codec": { 279 | "version": "1.5.0", 280 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 281 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 282 | "dev": true, 283 | "license": "MIT" 284 | }, 285 | "node_modules/@jridgewell/trace-mapping": { 286 | "version": "0.3.25", 287 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 288 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 289 | "dev": true, 290 | "license": "MIT", 291 | "dependencies": { 292 | "@jridgewell/resolve-uri": "^3.1.0", 293 | "@jridgewell/sourcemap-codec": "^1.4.14" 294 | } 295 | }, 296 | "node_modules/@nodelib/fs.scandir": { 297 | "version": "2.1.5", 298 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 299 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 300 | "dev": true, 301 | "license": "MIT", 302 | "dependencies": { 303 | "@nodelib/fs.stat": "2.0.5", 304 | "run-parallel": "^1.1.9" 305 | }, 306 | "engines": { 307 | "node": ">= 8" 308 | } 309 | }, 310 | "node_modules/@nodelib/fs.stat": { 311 | "version": "2.0.5", 312 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 313 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 314 | "dev": true, 315 | "license": "MIT", 316 | "engines": { 317 | "node": ">= 8" 318 | } 319 | }, 320 | "node_modules/@nodelib/fs.walk": { 321 | "version": "1.2.8", 322 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 323 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 324 | "dev": true, 325 | "license": "MIT", 326 | "dependencies": { 327 | "@nodelib/fs.scandir": "2.1.5", 328 | "fastq": "^1.6.0" 329 | }, 330 | "engines": { 331 | "node": ">= 8" 332 | } 333 | }, 334 | "node_modules/@types/eslint": { 335 | "version": "9.6.1", 336 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", 337 | "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", 338 | "dev": true, 339 | "license": "MIT", 340 | "dependencies": { 341 | "@types/estree": "*", 342 | "@types/json-schema": "*" 343 | } 344 | }, 345 | "node_modules/@types/eslint__js": { 346 | "version": "8.42.3", 347 | "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", 348 | "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", 349 | "dev": true, 350 | "license": "MIT", 351 | "dependencies": { 352 | "@types/eslint": "*" 353 | } 354 | }, 355 | "node_modules/@types/eslint-scope": { 356 | "version": "3.7.7", 357 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", 358 | "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", 359 | "dev": true, 360 | "license": "MIT", 361 | "dependencies": { 362 | "@types/eslint": "*", 363 | "@types/estree": "*" 364 | } 365 | }, 366 | "node_modules/@types/estree": { 367 | "version": "1.0.6", 368 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 369 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 370 | "dev": true, 371 | "license": "MIT" 372 | }, 373 | "node_modules/@types/glob": { 374 | "version": "8.1.0", 375 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", 376 | "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", 377 | "dev": true, 378 | "license": "MIT", 379 | "dependencies": { 380 | "@types/minimatch": "^5.1.2", 381 | "@types/node": "*" 382 | } 383 | }, 384 | "node_modules/@types/json-schema": { 385 | "version": "7.0.15", 386 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 387 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 388 | "dev": true, 389 | "license": "MIT" 390 | }, 391 | "node_modules/@types/minimatch": { 392 | "version": "5.1.2", 393 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", 394 | "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", 395 | "dev": true, 396 | "license": "MIT" 397 | }, 398 | "node_modules/@types/mocha": { 399 | "version": "10.0.9", 400 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.9.tgz", 401 | "integrity": "sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==", 402 | "dev": true, 403 | "license": "MIT" 404 | }, 405 | "node_modules/@types/node": { 406 | "version": "20.17.6", 407 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz", 408 | "integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==", 409 | "dev": true, 410 | "license": "MIT", 411 | "dependencies": { 412 | "undici-types": "~6.19.2" 413 | } 414 | }, 415 | "node_modules/@types/vscode": { 416 | "version": "1.95.0", 417 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.95.0.tgz", 418 | "integrity": "sha512-0LBD8TEiNbet3NvWsmn59zLzOFu/txSlGxnv5yAFHCrhG9WvAnR3IvfHzMOs2aeWqgvNjq9pO99IUw8d3n+unw==", 419 | "dev": true, 420 | "license": "MIT" 421 | }, 422 | "node_modules/@types/webpack-env": { 423 | "version": "1.18.5", 424 | "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz", 425 | "integrity": "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==", 426 | "dev": true, 427 | "license": "MIT" 428 | }, 429 | "node_modules/@typescript-eslint/eslint-plugin": { 430 | "version": "8.15.0", 431 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz", 432 | "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==", 433 | "dev": true, 434 | "license": "MIT", 435 | "dependencies": { 436 | "@eslint-community/regexpp": "^4.10.0", 437 | "@typescript-eslint/scope-manager": "8.15.0", 438 | "@typescript-eslint/type-utils": "8.15.0", 439 | "@typescript-eslint/utils": "8.15.0", 440 | "@typescript-eslint/visitor-keys": "8.15.0", 441 | "graphemer": "^1.4.0", 442 | "ignore": "^5.3.1", 443 | "natural-compare": "^1.4.0", 444 | "ts-api-utils": "^1.3.0" 445 | }, 446 | "engines": { 447 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 448 | }, 449 | "funding": { 450 | "type": "opencollective", 451 | "url": "https://opencollective.com/typescript-eslint" 452 | }, 453 | "peerDependencies": { 454 | "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", 455 | "eslint": "^8.57.0 || ^9.0.0" 456 | }, 457 | "peerDependenciesMeta": { 458 | "typescript": { 459 | "optional": true 460 | } 461 | } 462 | }, 463 | "node_modules/@typescript-eslint/parser": { 464 | "version": "8.15.0", 465 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz", 466 | "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==", 467 | "dev": true, 468 | "license": "BSD-2-Clause", 469 | "dependencies": { 470 | "@typescript-eslint/scope-manager": "8.15.0", 471 | "@typescript-eslint/types": "8.15.0", 472 | "@typescript-eslint/typescript-estree": "8.15.0", 473 | "@typescript-eslint/visitor-keys": "8.15.0", 474 | "debug": "^4.3.4" 475 | }, 476 | "engines": { 477 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 478 | }, 479 | "funding": { 480 | "type": "opencollective", 481 | "url": "https://opencollective.com/typescript-eslint" 482 | }, 483 | "peerDependencies": { 484 | "eslint": "^8.57.0 || ^9.0.0" 485 | }, 486 | "peerDependenciesMeta": { 487 | "typescript": { 488 | "optional": true 489 | } 490 | } 491 | }, 492 | "node_modules/@typescript-eslint/scope-manager": { 493 | "version": "8.15.0", 494 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz", 495 | "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==", 496 | "dev": true, 497 | "license": "MIT", 498 | "dependencies": { 499 | "@typescript-eslint/types": "8.15.0", 500 | "@typescript-eslint/visitor-keys": "8.15.0" 501 | }, 502 | "engines": { 503 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 504 | }, 505 | "funding": { 506 | "type": "opencollective", 507 | "url": "https://opencollective.com/typescript-eslint" 508 | } 509 | }, 510 | "node_modules/@typescript-eslint/type-utils": { 511 | "version": "8.15.0", 512 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz", 513 | "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==", 514 | "dev": true, 515 | "license": "MIT", 516 | "dependencies": { 517 | "@typescript-eslint/typescript-estree": "8.15.0", 518 | "@typescript-eslint/utils": "8.15.0", 519 | "debug": "^4.3.4", 520 | "ts-api-utils": "^1.3.0" 521 | }, 522 | "engines": { 523 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 524 | }, 525 | "funding": { 526 | "type": "opencollective", 527 | "url": "https://opencollective.com/typescript-eslint" 528 | }, 529 | "peerDependencies": { 530 | "eslint": "^8.57.0 || ^9.0.0" 531 | }, 532 | "peerDependenciesMeta": { 533 | "typescript": { 534 | "optional": true 535 | } 536 | } 537 | }, 538 | "node_modules/@typescript-eslint/types": { 539 | "version": "8.15.0", 540 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz", 541 | "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==", 542 | "dev": true, 543 | "license": "MIT", 544 | "engines": { 545 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 546 | }, 547 | "funding": { 548 | "type": "opencollective", 549 | "url": "https://opencollective.com/typescript-eslint" 550 | } 551 | }, 552 | "node_modules/@typescript-eslint/typescript-estree": { 553 | "version": "8.15.0", 554 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz", 555 | "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==", 556 | "dev": true, 557 | "license": "BSD-2-Clause", 558 | "dependencies": { 559 | "@typescript-eslint/types": "8.15.0", 560 | "@typescript-eslint/visitor-keys": "8.15.0", 561 | "debug": "^4.3.4", 562 | "fast-glob": "^3.3.2", 563 | "is-glob": "^4.0.3", 564 | "minimatch": "^9.0.4", 565 | "semver": "^7.6.0", 566 | "ts-api-utils": "^1.3.0" 567 | }, 568 | "engines": { 569 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 570 | }, 571 | "funding": { 572 | "type": "opencollective", 573 | "url": "https://opencollective.com/typescript-eslint" 574 | }, 575 | "peerDependenciesMeta": { 576 | "typescript": { 577 | "optional": true 578 | } 579 | } 580 | }, 581 | "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { 582 | "version": "2.0.1", 583 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 584 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 585 | "dev": true, 586 | "license": "MIT", 587 | "dependencies": { 588 | "balanced-match": "^1.0.0" 589 | } 590 | }, 591 | "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 592 | "version": "9.0.5", 593 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 594 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 595 | "dev": true, 596 | "license": "ISC", 597 | "dependencies": { 598 | "brace-expansion": "^2.0.1" 599 | }, 600 | "engines": { 601 | "node": ">=16 || 14 >=14.17" 602 | }, 603 | "funding": { 604 | "url": "https://github.com/sponsors/isaacs" 605 | } 606 | }, 607 | "node_modules/@typescript-eslint/utils": { 608 | "version": "8.15.0", 609 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz", 610 | "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==", 611 | "dev": true, 612 | "license": "MIT", 613 | "dependencies": { 614 | "@eslint-community/eslint-utils": "^4.4.0", 615 | "@typescript-eslint/scope-manager": "8.15.0", 616 | "@typescript-eslint/types": "8.15.0", 617 | "@typescript-eslint/typescript-estree": "8.15.0" 618 | }, 619 | "engines": { 620 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 621 | }, 622 | "funding": { 623 | "type": "opencollective", 624 | "url": "https://opencollective.com/typescript-eslint" 625 | }, 626 | "peerDependencies": { 627 | "eslint": "^8.57.0 || ^9.0.0" 628 | }, 629 | "peerDependenciesMeta": { 630 | "typescript": { 631 | "optional": true 632 | } 633 | } 634 | }, 635 | "node_modules/@typescript-eslint/visitor-keys": { 636 | "version": "8.15.0", 637 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz", 638 | "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==", 639 | "dev": true, 640 | "license": "MIT", 641 | "dependencies": { 642 | "@typescript-eslint/types": "8.15.0", 643 | "eslint-visitor-keys": "^4.2.0" 644 | }, 645 | "engines": { 646 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 647 | }, 648 | "funding": { 649 | "type": "opencollective", 650 | "url": "https://opencollective.com/typescript-eslint" 651 | } 652 | }, 653 | "node_modules/@vscode/test-electron": { 654 | "version": "2.4.1", 655 | "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.4.1.tgz", 656 | "integrity": "sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==", 657 | "dev": true, 658 | "license": "MIT", 659 | "dependencies": { 660 | "http-proxy-agent": "^7.0.2", 661 | "https-proxy-agent": "^7.0.5", 662 | "jszip": "^3.10.1", 663 | "ora": "^7.0.1", 664 | "semver": "^7.6.2" 665 | }, 666 | "engines": { 667 | "node": ">=16" 668 | } 669 | }, 670 | "node_modules/@webassemblyjs/ast": { 671 | "version": "1.14.1", 672 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", 673 | "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", 674 | "dev": true, 675 | "license": "MIT", 676 | "dependencies": { 677 | "@webassemblyjs/helper-numbers": "1.13.2", 678 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2" 679 | } 680 | }, 681 | "node_modules/@webassemblyjs/floating-point-hex-parser": { 682 | "version": "1.13.2", 683 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", 684 | "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", 685 | "dev": true, 686 | "license": "MIT" 687 | }, 688 | "node_modules/@webassemblyjs/helper-api-error": { 689 | "version": "1.13.2", 690 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", 691 | "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", 692 | "dev": true, 693 | "license": "MIT" 694 | }, 695 | "node_modules/@webassemblyjs/helper-buffer": { 696 | "version": "1.14.1", 697 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", 698 | "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", 699 | "dev": true, 700 | "license": "MIT" 701 | }, 702 | "node_modules/@webassemblyjs/helper-numbers": { 703 | "version": "1.13.2", 704 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", 705 | "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", 706 | "dev": true, 707 | "license": "MIT", 708 | "dependencies": { 709 | "@webassemblyjs/floating-point-hex-parser": "1.13.2", 710 | "@webassemblyjs/helper-api-error": "1.13.2", 711 | "@xtuc/long": "4.2.2" 712 | } 713 | }, 714 | "node_modules/@webassemblyjs/helper-wasm-bytecode": { 715 | "version": "1.13.2", 716 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", 717 | "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", 718 | "dev": true, 719 | "license": "MIT" 720 | }, 721 | "node_modules/@webassemblyjs/helper-wasm-section": { 722 | "version": "1.14.1", 723 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", 724 | "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", 725 | "dev": true, 726 | "license": "MIT", 727 | "dependencies": { 728 | "@webassemblyjs/ast": "1.14.1", 729 | "@webassemblyjs/helper-buffer": "1.14.1", 730 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 731 | "@webassemblyjs/wasm-gen": "1.14.1" 732 | } 733 | }, 734 | "node_modules/@webassemblyjs/ieee754": { 735 | "version": "1.13.2", 736 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", 737 | "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", 738 | "dev": true, 739 | "license": "MIT", 740 | "dependencies": { 741 | "@xtuc/ieee754": "^1.2.0" 742 | } 743 | }, 744 | "node_modules/@webassemblyjs/leb128": { 745 | "version": "1.13.2", 746 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", 747 | "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", 748 | "dev": true, 749 | "license": "Apache-2.0", 750 | "dependencies": { 751 | "@xtuc/long": "4.2.2" 752 | } 753 | }, 754 | "node_modules/@webassemblyjs/utf8": { 755 | "version": "1.13.2", 756 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", 757 | "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", 758 | "dev": true, 759 | "license": "MIT" 760 | }, 761 | "node_modules/@webassemblyjs/wasm-edit": { 762 | "version": "1.14.1", 763 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", 764 | "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", 765 | "dev": true, 766 | "license": "MIT", 767 | "dependencies": { 768 | "@webassemblyjs/ast": "1.14.1", 769 | "@webassemblyjs/helper-buffer": "1.14.1", 770 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 771 | "@webassemblyjs/helper-wasm-section": "1.14.1", 772 | "@webassemblyjs/wasm-gen": "1.14.1", 773 | "@webassemblyjs/wasm-opt": "1.14.1", 774 | "@webassemblyjs/wasm-parser": "1.14.1", 775 | "@webassemblyjs/wast-printer": "1.14.1" 776 | } 777 | }, 778 | "node_modules/@webassemblyjs/wasm-gen": { 779 | "version": "1.14.1", 780 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", 781 | "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", 782 | "dev": true, 783 | "license": "MIT", 784 | "dependencies": { 785 | "@webassemblyjs/ast": "1.14.1", 786 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 787 | "@webassemblyjs/ieee754": "1.13.2", 788 | "@webassemblyjs/leb128": "1.13.2", 789 | "@webassemblyjs/utf8": "1.13.2" 790 | } 791 | }, 792 | "node_modules/@webassemblyjs/wasm-opt": { 793 | "version": "1.14.1", 794 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", 795 | "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", 796 | "dev": true, 797 | "license": "MIT", 798 | "dependencies": { 799 | "@webassemblyjs/ast": "1.14.1", 800 | "@webassemblyjs/helper-buffer": "1.14.1", 801 | "@webassemblyjs/wasm-gen": "1.14.1", 802 | "@webassemblyjs/wasm-parser": "1.14.1" 803 | } 804 | }, 805 | "node_modules/@webassemblyjs/wasm-parser": { 806 | "version": "1.14.1", 807 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", 808 | "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", 809 | "dev": true, 810 | "license": "MIT", 811 | "dependencies": { 812 | "@webassemblyjs/ast": "1.14.1", 813 | "@webassemblyjs/helper-api-error": "1.13.2", 814 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 815 | "@webassemblyjs/ieee754": "1.13.2", 816 | "@webassemblyjs/leb128": "1.13.2", 817 | "@webassemblyjs/utf8": "1.13.2" 818 | } 819 | }, 820 | "node_modules/@webassemblyjs/wast-printer": { 821 | "version": "1.14.1", 822 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", 823 | "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", 824 | "dev": true, 825 | "license": "MIT", 826 | "dependencies": { 827 | "@webassemblyjs/ast": "1.14.1", 828 | "@xtuc/long": "4.2.2" 829 | } 830 | }, 831 | "node_modules/@webpack-cli/configtest": { 832 | "version": "2.1.1", 833 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", 834 | "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", 835 | "dev": true, 836 | "license": "MIT", 837 | "engines": { 838 | "node": ">=14.15.0" 839 | }, 840 | "peerDependencies": { 841 | "webpack": "5.x.x", 842 | "webpack-cli": "5.x.x" 843 | } 844 | }, 845 | "node_modules/@webpack-cli/info": { 846 | "version": "2.0.2", 847 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", 848 | "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", 849 | "dev": true, 850 | "license": "MIT", 851 | "engines": { 852 | "node": ">=14.15.0" 853 | }, 854 | "peerDependencies": { 855 | "webpack": "5.x.x", 856 | "webpack-cli": "5.x.x" 857 | } 858 | }, 859 | "node_modules/@webpack-cli/serve": { 860 | "version": "2.0.5", 861 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", 862 | "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", 863 | "dev": true, 864 | "license": "MIT", 865 | "engines": { 866 | "node": ">=14.15.0" 867 | }, 868 | "peerDependencies": { 869 | "webpack": "5.x.x", 870 | "webpack-cli": "5.x.x" 871 | }, 872 | "peerDependenciesMeta": { 873 | "webpack-dev-server": { 874 | "optional": true 875 | } 876 | } 877 | }, 878 | "node_modules/@xtuc/ieee754": { 879 | "version": "1.2.0", 880 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 881 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 882 | "dev": true, 883 | "license": "BSD-3-Clause" 884 | }, 885 | "node_modules/@xtuc/long": { 886 | "version": "4.2.2", 887 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 888 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 889 | "dev": true, 890 | "license": "Apache-2.0" 891 | }, 892 | "node_modules/acorn": { 893 | "version": "8.14.0", 894 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 895 | "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 896 | "dev": true, 897 | "license": "MIT", 898 | "bin": { 899 | "acorn": "bin/acorn" 900 | }, 901 | "engines": { 902 | "node": ">=0.4.0" 903 | } 904 | }, 905 | "node_modules/acorn-jsx": { 906 | "version": "5.3.2", 907 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 908 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 909 | "dev": true, 910 | "license": "MIT", 911 | "peerDependencies": { 912 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 913 | } 914 | }, 915 | "node_modules/agent-base": { 916 | "version": "7.1.1", 917 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", 918 | "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", 919 | "dev": true, 920 | "license": "MIT", 921 | "dependencies": { 922 | "debug": "^4.3.4" 923 | }, 924 | "engines": { 925 | "node": ">= 14" 926 | } 927 | }, 928 | "node_modules/ajv": { 929 | "version": "6.12.6", 930 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 931 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 932 | "dev": true, 933 | "license": "MIT", 934 | "dependencies": { 935 | "fast-deep-equal": "^3.1.1", 936 | "fast-json-stable-stringify": "^2.0.0", 937 | "json-schema-traverse": "^0.4.1", 938 | "uri-js": "^4.2.2" 939 | }, 940 | "funding": { 941 | "type": "github", 942 | "url": "https://github.com/sponsors/epoberezkin" 943 | } 944 | }, 945 | "node_modules/ajv-keywords": { 946 | "version": "3.5.2", 947 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 948 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 949 | "dev": true, 950 | "license": "MIT", 951 | "peerDependencies": { 952 | "ajv": "^6.9.1" 953 | } 954 | }, 955 | "node_modules/ansi-colors": { 956 | "version": "4.1.3", 957 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 958 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 959 | "dev": true, 960 | "license": "MIT", 961 | "engines": { 962 | "node": ">=6" 963 | } 964 | }, 965 | "node_modules/ansi-regex": { 966 | "version": "6.1.0", 967 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 968 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 969 | "dev": true, 970 | "license": "MIT", 971 | "engines": { 972 | "node": ">=12" 973 | }, 974 | "funding": { 975 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 976 | } 977 | }, 978 | "node_modules/ansi-styles": { 979 | "version": "4.3.0", 980 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 981 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 982 | "dev": true, 983 | "license": "MIT", 984 | "dependencies": { 985 | "color-convert": "^2.0.1" 986 | }, 987 | "engines": { 988 | "node": ">=8" 989 | }, 990 | "funding": { 991 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 992 | } 993 | }, 994 | "node_modules/anymatch": { 995 | "version": "3.1.3", 996 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 997 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 998 | "dev": true, 999 | "license": "ISC", 1000 | "dependencies": { 1001 | "normalize-path": "^3.0.0", 1002 | "picomatch": "^2.0.4" 1003 | }, 1004 | "engines": { 1005 | "node": ">= 8" 1006 | } 1007 | }, 1008 | "node_modules/argparse": { 1009 | "version": "2.0.1", 1010 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1011 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1012 | "dev": true, 1013 | "license": "Python-2.0" 1014 | }, 1015 | "node_modules/balanced-match": { 1016 | "version": "1.0.2", 1017 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1018 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1019 | "dev": true, 1020 | "license": "MIT" 1021 | }, 1022 | "node_modules/base64-js": { 1023 | "version": "1.5.1", 1024 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1025 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1026 | "dev": true, 1027 | "funding": [ 1028 | { 1029 | "type": "github", 1030 | "url": "https://github.com/sponsors/feross" 1031 | }, 1032 | { 1033 | "type": "patreon", 1034 | "url": "https://www.patreon.com/feross" 1035 | }, 1036 | { 1037 | "type": "consulting", 1038 | "url": "https://feross.org/support" 1039 | } 1040 | ], 1041 | "license": "MIT" 1042 | }, 1043 | "node_modules/binary-extensions": { 1044 | "version": "2.3.0", 1045 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 1046 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 1047 | "dev": true, 1048 | "license": "MIT", 1049 | "engines": { 1050 | "node": ">=8" 1051 | }, 1052 | "funding": { 1053 | "url": "https://github.com/sponsors/sindresorhus" 1054 | } 1055 | }, 1056 | "node_modules/bl": { 1057 | "version": "5.1.0", 1058 | "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", 1059 | "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", 1060 | "dev": true, 1061 | "license": "MIT", 1062 | "dependencies": { 1063 | "buffer": "^6.0.3", 1064 | "inherits": "^2.0.4", 1065 | "readable-stream": "^3.4.0" 1066 | } 1067 | }, 1068 | "node_modules/bl/node_modules/readable-stream": { 1069 | "version": "3.6.2", 1070 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 1071 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 1072 | "dev": true, 1073 | "license": "MIT", 1074 | "dependencies": { 1075 | "inherits": "^2.0.3", 1076 | "string_decoder": "^1.1.1", 1077 | "util-deprecate": "^1.0.1" 1078 | }, 1079 | "engines": { 1080 | "node": ">= 6" 1081 | } 1082 | }, 1083 | "node_modules/brace-expansion": { 1084 | "version": "1.1.11", 1085 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1086 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1087 | "dev": true, 1088 | "license": "MIT", 1089 | "dependencies": { 1090 | "balanced-match": "^1.0.0", 1091 | "concat-map": "0.0.1" 1092 | } 1093 | }, 1094 | "node_modules/braces": { 1095 | "version": "3.0.3", 1096 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1097 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1098 | "dev": true, 1099 | "license": "MIT", 1100 | "dependencies": { 1101 | "fill-range": "^7.1.1" 1102 | }, 1103 | "engines": { 1104 | "node": ">=8" 1105 | } 1106 | }, 1107 | "node_modules/browser-stdout": { 1108 | "version": "1.3.1", 1109 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 1110 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 1111 | "dev": true, 1112 | "license": "ISC" 1113 | }, 1114 | "node_modules/browserslist": { 1115 | "version": "4.24.2", 1116 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", 1117 | "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", 1118 | "dev": true, 1119 | "funding": [ 1120 | { 1121 | "type": "opencollective", 1122 | "url": "https://opencollective.com/browserslist" 1123 | }, 1124 | { 1125 | "type": "tidelift", 1126 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1127 | }, 1128 | { 1129 | "type": "github", 1130 | "url": "https://github.com/sponsors/ai" 1131 | } 1132 | ], 1133 | "license": "MIT", 1134 | "dependencies": { 1135 | "caniuse-lite": "^1.0.30001669", 1136 | "electron-to-chromium": "^1.5.41", 1137 | "node-releases": "^2.0.18", 1138 | "update-browserslist-db": "^1.1.1" 1139 | }, 1140 | "bin": { 1141 | "browserslist": "cli.js" 1142 | }, 1143 | "engines": { 1144 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1145 | } 1146 | }, 1147 | "node_modules/buffer": { 1148 | "version": "6.0.3", 1149 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 1150 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 1151 | "dev": true, 1152 | "funding": [ 1153 | { 1154 | "type": "github", 1155 | "url": "https://github.com/sponsors/feross" 1156 | }, 1157 | { 1158 | "type": "patreon", 1159 | "url": "https://www.patreon.com/feross" 1160 | }, 1161 | { 1162 | "type": "consulting", 1163 | "url": "https://feross.org/support" 1164 | } 1165 | ], 1166 | "license": "MIT", 1167 | "dependencies": { 1168 | "base64-js": "^1.3.1", 1169 | "ieee754": "^1.2.1" 1170 | } 1171 | }, 1172 | "node_modules/buffer-from": { 1173 | "version": "1.1.2", 1174 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1175 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1176 | "dev": true, 1177 | "license": "MIT" 1178 | }, 1179 | "node_modules/callsites": { 1180 | "version": "3.1.0", 1181 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1182 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1183 | "dev": true, 1184 | "license": "MIT", 1185 | "engines": { 1186 | "node": ">=6" 1187 | } 1188 | }, 1189 | "node_modules/camelcase": { 1190 | "version": "6.3.0", 1191 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 1192 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 1193 | "dev": true, 1194 | "license": "MIT", 1195 | "engines": { 1196 | "node": ">=10" 1197 | }, 1198 | "funding": { 1199 | "url": "https://github.com/sponsors/sindresorhus" 1200 | } 1201 | }, 1202 | "node_modules/caniuse-lite": { 1203 | "version": "1.0.30001680", 1204 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", 1205 | "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", 1206 | "dev": true, 1207 | "funding": [ 1208 | { 1209 | "type": "opencollective", 1210 | "url": "https://opencollective.com/browserslist" 1211 | }, 1212 | { 1213 | "type": "tidelift", 1214 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1215 | }, 1216 | { 1217 | "type": "github", 1218 | "url": "https://github.com/sponsors/ai" 1219 | } 1220 | ], 1221 | "license": "CC-BY-4.0" 1222 | }, 1223 | "node_modules/chalk": { 1224 | "version": "4.1.2", 1225 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1226 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1227 | "dev": true, 1228 | "license": "MIT", 1229 | "dependencies": { 1230 | "ansi-styles": "^4.1.0", 1231 | "supports-color": "^7.1.0" 1232 | }, 1233 | "engines": { 1234 | "node": ">=10" 1235 | }, 1236 | "funding": { 1237 | "url": "https://github.com/chalk/chalk?sponsor=1" 1238 | } 1239 | }, 1240 | "node_modules/chokidar": { 1241 | "version": "3.6.0", 1242 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 1243 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 1244 | "dev": true, 1245 | "license": "MIT", 1246 | "dependencies": { 1247 | "anymatch": "~3.1.2", 1248 | "braces": "~3.0.2", 1249 | "glob-parent": "~5.1.2", 1250 | "is-binary-path": "~2.1.0", 1251 | "is-glob": "~4.0.1", 1252 | "normalize-path": "~3.0.0", 1253 | "readdirp": "~3.6.0" 1254 | }, 1255 | "engines": { 1256 | "node": ">= 8.10.0" 1257 | }, 1258 | "funding": { 1259 | "url": "https://paulmillr.com/funding/" 1260 | }, 1261 | "optionalDependencies": { 1262 | "fsevents": "~2.3.2" 1263 | } 1264 | }, 1265 | "node_modules/chokidar/node_modules/glob-parent": { 1266 | "version": "5.1.2", 1267 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1268 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1269 | "dev": true, 1270 | "license": "ISC", 1271 | "dependencies": { 1272 | "is-glob": "^4.0.1" 1273 | }, 1274 | "engines": { 1275 | "node": ">= 6" 1276 | } 1277 | }, 1278 | "node_modules/chrome-trace-event": { 1279 | "version": "1.0.4", 1280 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", 1281 | "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", 1282 | "dev": true, 1283 | "license": "MIT", 1284 | "engines": { 1285 | "node": ">=6.0" 1286 | } 1287 | }, 1288 | "node_modules/cli-cursor": { 1289 | "version": "4.0.0", 1290 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", 1291 | "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", 1292 | "dev": true, 1293 | "license": "MIT", 1294 | "dependencies": { 1295 | "restore-cursor": "^4.0.0" 1296 | }, 1297 | "engines": { 1298 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1299 | }, 1300 | "funding": { 1301 | "url": "https://github.com/sponsors/sindresorhus" 1302 | } 1303 | }, 1304 | "node_modules/cli-spinners": { 1305 | "version": "2.9.2", 1306 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", 1307 | "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", 1308 | "dev": true, 1309 | "license": "MIT", 1310 | "engines": { 1311 | "node": ">=6" 1312 | }, 1313 | "funding": { 1314 | "url": "https://github.com/sponsors/sindresorhus" 1315 | } 1316 | }, 1317 | "node_modules/cliui": { 1318 | "version": "7.0.4", 1319 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1320 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1321 | "dev": true, 1322 | "license": "ISC", 1323 | "dependencies": { 1324 | "string-width": "^4.2.0", 1325 | "strip-ansi": "^6.0.0", 1326 | "wrap-ansi": "^7.0.0" 1327 | } 1328 | }, 1329 | "node_modules/cliui/node_modules/ansi-regex": { 1330 | "version": "5.0.1", 1331 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1332 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1333 | "dev": true, 1334 | "license": "MIT", 1335 | "engines": { 1336 | "node": ">=8" 1337 | } 1338 | }, 1339 | "node_modules/cliui/node_modules/emoji-regex": { 1340 | "version": "8.0.0", 1341 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1342 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1343 | "dev": true, 1344 | "license": "MIT" 1345 | }, 1346 | "node_modules/cliui/node_modules/string-width": { 1347 | "version": "4.2.3", 1348 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1349 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1350 | "dev": true, 1351 | "license": "MIT", 1352 | "dependencies": { 1353 | "emoji-regex": "^8.0.0", 1354 | "is-fullwidth-code-point": "^3.0.0", 1355 | "strip-ansi": "^6.0.1" 1356 | }, 1357 | "engines": { 1358 | "node": ">=8" 1359 | } 1360 | }, 1361 | "node_modules/cliui/node_modules/strip-ansi": { 1362 | "version": "6.0.1", 1363 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1364 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1365 | "dev": true, 1366 | "license": "MIT", 1367 | "dependencies": { 1368 | "ansi-regex": "^5.0.1" 1369 | }, 1370 | "engines": { 1371 | "node": ">=8" 1372 | } 1373 | }, 1374 | "node_modules/clone-deep": { 1375 | "version": "4.0.1", 1376 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", 1377 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", 1378 | "dev": true, 1379 | "license": "MIT", 1380 | "dependencies": { 1381 | "is-plain-object": "^2.0.4", 1382 | "kind-of": "^6.0.2", 1383 | "shallow-clone": "^3.0.0" 1384 | }, 1385 | "engines": { 1386 | "node": ">=6" 1387 | } 1388 | }, 1389 | "node_modules/color-convert": { 1390 | "version": "2.0.1", 1391 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1392 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1393 | "dev": true, 1394 | "license": "MIT", 1395 | "dependencies": { 1396 | "color-name": "~1.1.4" 1397 | }, 1398 | "engines": { 1399 | "node": ">=7.0.0" 1400 | } 1401 | }, 1402 | "node_modules/color-name": { 1403 | "version": "1.1.4", 1404 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1405 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1406 | "dev": true, 1407 | "license": "MIT" 1408 | }, 1409 | "node_modules/colorette": { 1410 | "version": "2.0.20", 1411 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", 1412 | "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", 1413 | "dev": true, 1414 | "license": "MIT" 1415 | }, 1416 | "node_modules/commander": { 1417 | "version": "2.20.3", 1418 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1419 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1420 | "dev": true, 1421 | "license": "MIT" 1422 | }, 1423 | "node_modules/concat-map": { 1424 | "version": "0.0.1", 1425 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1426 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1427 | "dev": true, 1428 | "license": "MIT" 1429 | }, 1430 | "node_modules/core-util-is": { 1431 | "version": "1.0.3", 1432 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 1433 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 1434 | "dev": true, 1435 | "license": "MIT" 1436 | }, 1437 | "node_modules/cross-spawn": { 1438 | "version": "7.0.6", 1439 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1440 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1441 | "dev": true, 1442 | "license": "MIT", 1443 | "dependencies": { 1444 | "path-key": "^3.1.0", 1445 | "shebang-command": "^2.0.0", 1446 | "which": "^2.0.1" 1447 | }, 1448 | "engines": { 1449 | "node": ">= 8" 1450 | } 1451 | }, 1452 | "node_modules/debug": { 1453 | "version": "4.3.7", 1454 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", 1455 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", 1456 | "dev": true, 1457 | "license": "MIT", 1458 | "dependencies": { 1459 | "ms": "^2.1.3" 1460 | }, 1461 | "engines": { 1462 | "node": ">=6.0" 1463 | }, 1464 | "peerDependenciesMeta": { 1465 | "supports-color": { 1466 | "optional": true 1467 | } 1468 | } 1469 | }, 1470 | "node_modules/decamelize": { 1471 | "version": "4.0.0", 1472 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 1473 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 1474 | "dev": true, 1475 | "license": "MIT", 1476 | "engines": { 1477 | "node": ">=10" 1478 | }, 1479 | "funding": { 1480 | "url": "https://github.com/sponsors/sindresorhus" 1481 | } 1482 | }, 1483 | "node_modules/deep-is": { 1484 | "version": "0.1.4", 1485 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1486 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1487 | "dev": true, 1488 | "license": "MIT" 1489 | }, 1490 | "node_modules/diff": { 1491 | "version": "5.2.0", 1492 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 1493 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 1494 | "dev": true, 1495 | "license": "BSD-3-Clause", 1496 | "engines": { 1497 | "node": ">=0.3.1" 1498 | } 1499 | }, 1500 | "node_modules/eastasianwidth": { 1501 | "version": "0.2.0", 1502 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1503 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1504 | "dev": true, 1505 | "license": "MIT" 1506 | }, 1507 | "node_modules/electron-to-chromium": { 1508 | "version": "1.5.63", 1509 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.63.tgz", 1510 | "integrity": "sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==", 1511 | "dev": true, 1512 | "license": "ISC" 1513 | }, 1514 | "node_modules/emoji-regex": { 1515 | "version": "10.4.0", 1516 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", 1517 | "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", 1518 | "dev": true, 1519 | "license": "MIT" 1520 | }, 1521 | "node_modules/enhanced-resolve": { 1522 | "version": "5.17.1", 1523 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", 1524 | "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", 1525 | "dev": true, 1526 | "license": "MIT", 1527 | "dependencies": { 1528 | "graceful-fs": "^4.2.4", 1529 | "tapable": "^2.2.0" 1530 | }, 1531 | "engines": { 1532 | "node": ">=10.13.0" 1533 | } 1534 | }, 1535 | "node_modules/envinfo": { 1536 | "version": "7.14.0", 1537 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", 1538 | "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", 1539 | "dev": true, 1540 | "license": "MIT", 1541 | "bin": { 1542 | "envinfo": "dist/cli.js" 1543 | }, 1544 | "engines": { 1545 | "node": ">=4" 1546 | } 1547 | }, 1548 | "node_modules/es-module-lexer": { 1549 | "version": "1.5.4", 1550 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", 1551 | "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", 1552 | "dev": true, 1553 | "license": "MIT" 1554 | }, 1555 | "node_modules/escalade": { 1556 | "version": "3.2.0", 1557 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1558 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1559 | "dev": true, 1560 | "license": "MIT", 1561 | "engines": { 1562 | "node": ">=6" 1563 | } 1564 | }, 1565 | "node_modules/escape-string-regexp": { 1566 | "version": "4.0.0", 1567 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1568 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1569 | "dev": true, 1570 | "license": "MIT", 1571 | "engines": { 1572 | "node": ">=10" 1573 | }, 1574 | "funding": { 1575 | "url": "https://github.com/sponsors/sindresorhus" 1576 | } 1577 | }, 1578 | "node_modules/eslint": { 1579 | "version": "9.15.0", 1580 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", 1581 | "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", 1582 | "dev": true, 1583 | "license": "MIT", 1584 | "dependencies": { 1585 | "@eslint-community/eslint-utils": "^4.2.0", 1586 | "@eslint-community/regexpp": "^4.12.1", 1587 | "@eslint/config-array": "^0.19.0", 1588 | "@eslint/core": "^0.9.0", 1589 | "@eslint/eslintrc": "^3.2.0", 1590 | "@eslint/js": "9.15.0", 1591 | "@eslint/plugin-kit": "^0.2.3", 1592 | "@humanfs/node": "^0.16.6", 1593 | "@humanwhocodes/module-importer": "^1.0.1", 1594 | "@humanwhocodes/retry": "^0.4.1", 1595 | "@types/estree": "^1.0.6", 1596 | "@types/json-schema": "^7.0.15", 1597 | "ajv": "^6.12.4", 1598 | "chalk": "^4.0.0", 1599 | "cross-spawn": "^7.0.5", 1600 | "debug": "^4.3.2", 1601 | "escape-string-regexp": "^4.0.0", 1602 | "eslint-scope": "^8.2.0", 1603 | "eslint-visitor-keys": "^4.2.0", 1604 | "espree": "^10.3.0", 1605 | "esquery": "^1.5.0", 1606 | "esutils": "^2.0.2", 1607 | "fast-deep-equal": "^3.1.3", 1608 | "file-entry-cache": "^8.0.0", 1609 | "find-up": "^5.0.0", 1610 | "glob-parent": "^6.0.2", 1611 | "ignore": "^5.2.0", 1612 | "imurmurhash": "^0.1.4", 1613 | "is-glob": "^4.0.0", 1614 | "json-stable-stringify-without-jsonify": "^1.0.1", 1615 | "lodash.merge": "^4.6.2", 1616 | "minimatch": "^3.1.2", 1617 | "natural-compare": "^1.4.0", 1618 | "optionator": "^0.9.3" 1619 | }, 1620 | "bin": { 1621 | "eslint": "bin/eslint.js" 1622 | }, 1623 | "engines": { 1624 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1625 | }, 1626 | "funding": { 1627 | "url": "https://eslint.org/donate" 1628 | }, 1629 | "peerDependencies": { 1630 | "jiti": "*" 1631 | }, 1632 | "peerDependenciesMeta": { 1633 | "jiti": { 1634 | "optional": true 1635 | } 1636 | } 1637 | }, 1638 | "node_modules/eslint-scope": { 1639 | "version": "8.2.0", 1640 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", 1641 | "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", 1642 | "dev": true, 1643 | "license": "BSD-2-Clause", 1644 | "dependencies": { 1645 | "esrecurse": "^4.3.0", 1646 | "estraverse": "^5.2.0" 1647 | }, 1648 | "engines": { 1649 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1650 | }, 1651 | "funding": { 1652 | "url": "https://opencollective.com/eslint" 1653 | } 1654 | }, 1655 | "node_modules/eslint-visitor-keys": { 1656 | "version": "4.2.0", 1657 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", 1658 | "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", 1659 | "dev": true, 1660 | "license": "Apache-2.0", 1661 | "engines": { 1662 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1663 | }, 1664 | "funding": { 1665 | "url": "https://opencollective.com/eslint" 1666 | } 1667 | }, 1668 | "node_modules/espree": { 1669 | "version": "10.3.0", 1670 | "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", 1671 | "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", 1672 | "dev": true, 1673 | "license": "BSD-2-Clause", 1674 | "dependencies": { 1675 | "acorn": "^8.14.0", 1676 | "acorn-jsx": "^5.3.2", 1677 | "eslint-visitor-keys": "^4.2.0" 1678 | }, 1679 | "engines": { 1680 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1681 | }, 1682 | "funding": { 1683 | "url": "https://opencollective.com/eslint" 1684 | } 1685 | }, 1686 | "node_modules/esquery": { 1687 | "version": "1.6.0", 1688 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 1689 | "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 1690 | "dev": true, 1691 | "license": "BSD-3-Clause", 1692 | "dependencies": { 1693 | "estraverse": "^5.1.0" 1694 | }, 1695 | "engines": { 1696 | "node": ">=0.10" 1697 | } 1698 | }, 1699 | "node_modules/esrecurse": { 1700 | "version": "4.3.0", 1701 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1702 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1703 | "dev": true, 1704 | "license": "BSD-2-Clause", 1705 | "dependencies": { 1706 | "estraverse": "^5.2.0" 1707 | }, 1708 | "engines": { 1709 | "node": ">=4.0" 1710 | } 1711 | }, 1712 | "node_modules/estraverse": { 1713 | "version": "5.3.0", 1714 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1715 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1716 | "dev": true, 1717 | "license": "BSD-2-Clause", 1718 | "engines": { 1719 | "node": ">=4.0" 1720 | } 1721 | }, 1722 | "node_modules/esutils": { 1723 | "version": "2.0.3", 1724 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1725 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1726 | "dev": true, 1727 | "license": "BSD-2-Clause", 1728 | "engines": { 1729 | "node": ">=0.10.0" 1730 | } 1731 | }, 1732 | "node_modules/events": { 1733 | "version": "3.3.0", 1734 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1735 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1736 | "dev": true, 1737 | "license": "MIT", 1738 | "engines": { 1739 | "node": ">=0.8.x" 1740 | } 1741 | }, 1742 | "node_modules/fast-deep-equal": { 1743 | "version": "3.1.3", 1744 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1745 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1746 | "dev": true, 1747 | "license": "MIT" 1748 | }, 1749 | "node_modules/fast-glob": { 1750 | "version": "3.3.2", 1751 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 1752 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 1753 | "dev": true, 1754 | "license": "MIT", 1755 | "dependencies": { 1756 | "@nodelib/fs.stat": "^2.0.2", 1757 | "@nodelib/fs.walk": "^1.2.3", 1758 | "glob-parent": "^5.1.2", 1759 | "merge2": "^1.3.0", 1760 | "micromatch": "^4.0.4" 1761 | }, 1762 | "engines": { 1763 | "node": ">=8.6.0" 1764 | } 1765 | }, 1766 | "node_modules/fast-glob/node_modules/glob-parent": { 1767 | "version": "5.1.2", 1768 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1769 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1770 | "dev": true, 1771 | "license": "ISC", 1772 | "dependencies": { 1773 | "is-glob": "^4.0.1" 1774 | }, 1775 | "engines": { 1776 | "node": ">= 6" 1777 | } 1778 | }, 1779 | "node_modules/fast-json-stable-stringify": { 1780 | "version": "2.1.0", 1781 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1782 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1783 | "dev": true, 1784 | "license": "MIT" 1785 | }, 1786 | "node_modules/fast-levenshtein": { 1787 | "version": "2.0.6", 1788 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1789 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1790 | "dev": true, 1791 | "license": "MIT" 1792 | }, 1793 | "node_modules/fastest-levenshtein": { 1794 | "version": "1.0.16", 1795 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", 1796 | "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", 1797 | "dev": true, 1798 | "license": "MIT", 1799 | "engines": { 1800 | "node": ">= 4.9.1" 1801 | } 1802 | }, 1803 | "node_modules/fastq": { 1804 | "version": "1.17.1", 1805 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 1806 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 1807 | "dev": true, 1808 | "license": "ISC", 1809 | "dependencies": { 1810 | "reusify": "^1.0.4" 1811 | } 1812 | }, 1813 | "node_modules/file-entry-cache": { 1814 | "version": "8.0.0", 1815 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", 1816 | "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 1817 | "dev": true, 1818 | "license": "MIT", 1819 | "dependencies": { 1820 | "flat-cache": "^4.0.0" 1821 | }, 1822 | "engines": { 1823 | "node": ">=16.0.0" 1824 | } 1825 | }, 1826 | "node_modules/fill-range": { 1827 | "version": "7.1.1", 1828 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1829 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1830 | "dev": true, 1831 | "license": "MIT", 1832 | "dependencies": { 1833 | "to-regex-range": "^5.0.1" 1834 | }, 1835 | "engines": { 1836 | "node": ">=8" 1837 | } 1838 | }, 1839 | "node_modules/find-up": { 1840 | "version": "5.0.0", 1841 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1842 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1843 | "dev": true, 1844 | "license": "MIT", 1845 | "dependencies": { 1846 | "locate-path": "^6.0.0", 1847 | "path-exists": "^4.0.0" 1848 | }, 1849 | "engines": { 1850 | "node": ">=10" 1851 | }, 1852 | "funding": { 1853 | "url": "https://github.com/sponsors/sindresorhus" 1854 | } 1855 | }, 1856 | "node_modules/flat": { 1857 | "version": "5.0.2", 1858 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1859 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1860 | "dev": true, 1861 | "license": "BSD-3-Clause", 1862 | "bin": { 1863 | "flat": "cli.js" 1864 | } 1865 | }, 1866 | "node_modules/flat-cache": { 1867 | "version": "4.0.1", 1868 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", 1869 | "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 1870 | "dev": true, 1871 | "license": "MIT", 1872 | "dependencies": { 1873 | "flatted": "^3.2.9", 1874 | "keyv": "^4.5.4" 1875 | }, 1876 | "engines": { 1877 | "node": ">=16" 1878 | } 1879 | }, 1880 | "node_modules/flatted": { 1881 | "version": "3.3.2", 1882 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", 1883 | "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", 1884 | "dev": true, 1885 | "license": "ISC" 1886 | }, 1887 | "node_modules/fs.realpath": { 1888 | "version": "1.0.0", 1889 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1890 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1891 | "dev": true, 1892 | "license": "ISC" 1893 | }, 1894 | "node_modules/fsevents": { 1895 | "version": "2.3.3", 1896 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1897 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1898 | "dev": true, 1899 | "hasInstallScript": true, 1900 | "license": "MIT", 1901 | "optional": true, 1902 | "os": [ 1903 | "darwin" 1904 | ], 1905 | "engines": { 1906 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1907 | } 1908 | }, 1909 | "node_modules/function-bind": { 1910 | "version": "1.1.2", 1911 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1912 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1913 | "dev": true, 1914 | "license": "MIT", 1915 | "funding": { 1916 | "url": "https://github.com/sponsors/ljharb" 1917 | } 1918 | }, 1919 | "node_modules/get-caller-file": { 1920 | "version": "2.0.5", 1921 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1922 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1923 | "dev": true, 1924 | "license": "ISC", 1925 | "engines": { 1926 | "node": "6.* || 8.* || >= 10.*" 1927 | } 1928 | }, 1929 | "node_modules/glob": { 1930 | "version": "8.1.0", 1931 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1932 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1933 | "deprecated": "Glob versions prior to v9 are no longer supported", 1934 | "dev": true, 1935 | "license": "ISC", 1936 | "dependencies": { 1937 | "fs.realpath": "^1.0.0", 1938 | "inflight": "^1.0.4", 1939 | "inherits": "2", 1940 | "minimatch": "^5.0.1", 1941 | "once": "^1.3.0" 1942 | }, 1943 | "engines": { 1944 | "node": ">=12" 1945 | }, 1946 | "funding": { 1947 | "url": "https://github.com/sponsors/isaacs" 1948 | } 1949 | }, 1950 | "node_modules/glob-parent": { 1951 | "version": "6.0.2", 1952 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1953 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1954 | "dev": true, 1955 | "license": "ISC", 1956 | "dependencies": { 1957 | "is-glob": "^4.0.3" 1958 | }, 1959 | "engines": { 1960 | "node": ">=10.13.0" 1961 | } 1962 | }, 1963 | "node_modules/glob-to-regexp": { 1964 | "version": "0.4.1", 1965 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 1966 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 1967 | "dev": true, 1968 | "license": "BSD-2-Clause" 1969 | }, 1970 | "node_modules/glob/node_modules/brace-expansion": { 1971 | "version": "2.0.1", 1972 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1973 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1974 | "dev": true, 1975 | "license": "MIT", 1976 | "dependencies": { 1977 | "balanced-match": "^1.0.0" 1978 | } 1979 | }, 1980 | "node_modules/glob/node_modules/minimatch": { 1981 | "version": "5.1.6", 1982 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1983 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1984 | "dev": true, 1985 | "license": "ISC", 1986 | "dependencies": { 1987 | "brace-expansion": "^2.0.1" 1988 | }, 1989 | "engines": { 1990 | "node": ">=10" 1991 | } 1992 | }, 1993 | "node_modules/globals": { 1994 | "version": "14.0.0", 1995 | "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", 1996 | "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", 1997 | "dev": true, 1998 | "license": "MIT", 1999 | "engines": { 2000 | "node": ">=18" 2001 | }, 2002 | "funding": { 2003 | "url": "https://github.com/sponsors/sindresorhus" 2004 | } 2005 | }, 2006 | "node_modules/graceful-fs": { 2007 | "version": "4.2.11", 2008 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 2009 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 2010 | "dev": true, 2011 | "license": "ISC" 2012 | }, 2013 | "node_modules/graphemer": { 2014 | "version": "1.4.0", 2015 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 2016 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 2017 | "dev": true, 2018 | "license": "MIT" 2019 | }, 2020 | "node_modules/has-flag": { 2021 | "version": "4.0.0", 2022 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2023 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2024 | "dev": true, 2025 | "license": "MIT", 2026 | "engines": { 2027 | "node": ">=8" 2028 | } 2029 | }, 2030 | "node_modules/hasown": { 2031 | "version": "2.0.2", 2032 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 2033 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 2034 | "dev": true, 2035 | "license": "MIT", 2036 | "dependencies": { 2037 | "function-bind": "^1.1.2" 2038 | }, 2039 | "engines": { 2040 | "node": ">= 0.4" 2041 | } 2042 | }, 2043 | "node_modules/he": { 2044 | "version": "1.2.0", 2045 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 2046 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 2047 | "dev": true, 2048 | "license": "MIT", 2049 | "bin": { 2050 | "he": "bin/he" 2051 | } 2052 | }, 2053 | "node_modules/http-proxy-agent": { 2054 | "version": "7.0.2", 2055 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", 2056 | "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", 2057 | "dev": true, 2058 | "license": "MIT", 2059 | "dependencies": { 2060 | "agent-base": "^7.1.0", 2061 | "debug": "^4.3.4" 2062 | }, 2063 | "engines": { 2064 | "node": ">= 14" 2065 | } 2066 | }, 2067 | "node_modules/https-proxy-agent": { 2068 | "version": "7.0.5", 2069 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", 2070 | "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", 2071 | "dev": true, 2072 | "license": "MIT", 2073 | "dependencies": { 2074 | "agent-base": "^7.0.2", 2075 | "debug": "4" 2076 | }, 2077 | "engines": { 2078 | "node": ">= 14" 2079 | } 2080 | }, 2081 | "node_modules/ieee754": { 2082 | "version": "1.2.1", 2083 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 2084 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 2085 | "dev": true, 2086 | "funding": [ 2087 | { 2088 | "type": "github", 2089 | "url": "https://github.com/sponsors/feross" 2090 | }, 2091 | { 2092 | "type": "patreon", 2093 | "url": "https://www.patreon.com/feross" 2094 | }, 2095 | { 2096 | "type": "consulting", 2097 | "url": "https://feross.org/support" 2098 | } 2099 | ], 2100 | "license": "BSD-3-Clause" 2101 | }, 2102 | "node_modules/ignore": { 2103 | "version": "5.3.2", 2104 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 2105 | "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 2106 | "dev": true, 2107 | "license": "MIT", 2108 | "engines": { 2109 | "node": ">= 4" 2110 | } 2111 | }, 2112 | "node_modules/immediate": { 2113 | "version": "3.0.6", 2114 | "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 2115 | "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", 2116 | "dev": true, 2117 | "license": "MIT" 2118 | }, 2119 | "node_modules/import-fresh": { 2120 | "version": "3.3.0", 2121 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 2122 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 2123 | "dev": true, 2124 | "license": "MIT", 2125 | "dependencies": { 2126 | "parent-module": "^1.0.0", 2127 | "resolve-from": "^4.0.0" 2128 | }, 2129 | "engines": { 2130 | "node": ">=6" 2131 | }, 2132 | "funding": { 2133 | "url": "https://github.com/sponsors/sindresorhus" 2134 | } 2135 | }, 2136 | "node_modules/import-local": { 2137 | "version": "3.2.0", 2138 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", 2139 | "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", 2140 | "dev": true, 2141 | "license": "MIT", 2142 | "dependencies": { 2143 | "pkg-dir": "^4.2.0", 2144 | "resolve-cwd": "^3.0.0" 2145 | }, 2146 | "bin": { 2147 | "import-local-fixture": "fixtures/cli.js" 2148 | }, 2149 | "engines": { 2150 | "node": ">=8" 2151 | }, 2152 | "funding": { 2153 | "url": "https://github.com/sponsors/sindresorhus" 2154 | } 2155 | }, 2156 | "node_modules/imurmurhash": { 2157 | "version": "0.1.4", 2158 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2159 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2160 | "dev": true, 2161 | "license": "MIT", 2162 | "engines": { 2163 | "node": ">=0.8.19" 2164 | } 2165 | }, 2166 | "node_modules/inflight": { 2167 | "version": "1.0.6", 2168 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2169 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 2170 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 2171 | "dev": true, 2172 | "license": "ISC", 2173 | "dependencies": { 2174 | "once": "^1.3.0", 2175 | "wrappy": "1" 2176 | } 2177 | }, 2178 | "node_modules/inherits": { 2179 | "version": "2.0.4", 2180 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2181 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2182 | "dev": true, 2183 | "license": "ISC" 2184 | }, 2185 | "node_modules/interpret": { 2186 | "version": "3.1.1", 2187 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", 2188 | "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", 2189 | "dev": true, 2190 | "license": "MIT", 2191 | "engines": { 2192 | "node": ">=10.13.0" 2193 | } 2194 | }, 2195 | "node_modules/is-binary-path": { 2196 | "version": "2.1.0", 2197 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 2198 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 2199 | "dev": true, 2200 | "license": "MIT", 2201 | "dependencies": { 2202 | "binary-extensions": "^2.0.0" 2203 | }, 2204 | "engines": { 2205 | "node": ">=8" 2206 | } 2207 | }, 2208 | "node_modules/is-core-module": { 2209 | "version": "2.15.1", 2210 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", 2211 | "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", 2212 | "dev": true, 2213 | "license": "MIT", 2214 | "dependencies": { 2215 | "hasown": "^2.0.2" 2216 | }, 2217 | "engines": { 2218 | "node": ">= 0.4" 2219 | }, 2220 | "funding": { 2221 | "url": "https://github.com/sponsors/ljharb" 2222 | } 2223 | }, 2224 | "node_modules/is-extglob": { 2225 | "version": "2.1.1", 2226 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2227 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2228 | "dev": true, 2229 | "license": "MIT", 2230 | "engines": { 2231 | "node": ">=0.10.0" 2232 | } 2233 | }, 2234 | "node_modules/is-fullwidth-code-point": { 2235 | "version": "3.0.0", 2236 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2237 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2238 | "dev": true, 2239 | "license": "MIT", 2240 | "engines": { 2241 | "node": ">=8" 2242 | } 2243 | }, 2244 | "node_modules/is-glob": { 2245 | "version": "4.0.3", 2246 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2247 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2248 | "dev": true, 2249 | "license": "MIT", 2250 | "dependencies": { 2251 | "is-extglob": "^2.1.1" 2252 | }, 2253 | "engines": { 2254 | "node": ">=0.10.0" 2255 | } 2256 | }, 2257 | "node_modules/is-interactive": { 2258 | "version": "2.0.0", 2259 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", 2260 | "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", 2261 | "dev": true, 2262 | "license": "MIT", 2263 | "engines": { 2264 | "node": ">=12" 2265 | }, 2266 | "funding": { 2267 | "url": "https://github.com/sponsors/sindresorhus" 2268 | } 2269 | }, 2270 | "node_modules/is-number": { 2271 | "version": "7.0.0", 2272 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2273 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2274 | "dev": true, 2275 | "license": "MIT", 2276 | "engines": { 2277 | "node": ">=0.12.0" 2278 | } 2279 | }, 2280 | "node_modules/is-plain-obj": { 2281 | "version": "2.1.0", 2282 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 2283 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 2284 | "dev": true, 2285 | "license": "MIT", 2286 | "engines": { 2287 | "node": ">=8" 2288 | } 2289 | }, 2290 | "node_modules/is-plain-object": { 2291 | "version": "2.0.4", 2292 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 2293 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2294 | "dev": true, 2295 | "license": "MIT", 2296 | "dependencies": { 2297 | "isobject": "^3.0.1" 2298 | }, 2299 | "engines": { 2300 | "node": ">=0.10.0" 2301 | } 2302 | }, 2303 | "node_modules/is-unicode-supported": { 2304 | "version": "0.1.0", 2305 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 2306 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 2307 | "dev": true, 2308 | "license": "MIT", 2309 | "engines": { 2310 | "node": ">=10" 2311 | }, 2312 | "funding": { 2313 | "url": "https://github.com/sponsors/sindresorhus" 2314 | } 2315 | }, 2316 | "node_modules/isarray": { 2317 | "version": "1.0.0", 2318 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2319 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 2320 | "dev": true, 2321 | "license": "MIT" 2322 | }, 2323 | "node_modules/isexe": { 2324 | "version": "2.0.0", 2325 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2326 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2327 | "dev": true, 2328 | "license": "ISC" 2329 | }, 2330 | "node_modules/isobject": { 2331 | "version": "3.0.1", 2332 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2333 | "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", 2334 | "dev": true, 2335 | "license": "MIT", 2336 | "engines": { 2337 | "node": ">=0.10.0" 2338 | } 2339 | }, 2340 | "node_modules/jest-worker": { 2341 | "version": "27.5.1", 2342 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", 2343 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", 2344 | "dev": true, 2345 | "license": "MIT", 2346 | "dependencies": { 2347 | "@types/node": "*", 2348 | "merge-stream": "^2.0.0", 2349 | "supports-color": "^8.0.0" 2350 | }, 2351 | "engines": { 2352 | "node": ">= 10.13.0" 2353 | } 2354 | }, 2355 | "node_modules/jest-worker/node_modules/supports-color": { 2356 | "version": "8.1.1", 2357 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2358 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2359 | "dev": true, 2360 | "license": "MIT", 2361 | "dependencies": { 2362 | "has-flag": "^4.0.0" 2363 | }, 2364 | "engines": { 2365 | "node": ">=10" 2366 | }, 2367 | "funding": { 2368 | "url": "https://github.com/chalk/supports-color?sponsor=1" 2369 | } 2370 | }, 2371 | "node_modules/js-yaml": { 2372 | "version": "4.1.0", 2373 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2374 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2375 | "dev": true, 2376 | "license": "MIT", 2377 | "dependencies": { 2378 | "argparse": "^2.0.1" 2379 | }, 2380 | "bin": { 2381 | "js-yaml": "bin/js-yaml.js" 2382 | } 2383 | }, 2384 | "node_modules/json-buffer": { 2385 | "version": "3.0.1", 2386 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 2387 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 2388 | "dev": true, 2389 | "license": "MIT" 2390 | }, 2391 | "node_modules/json-parse-even-better-errors": { 2392 | "version": "2.3.1", 2393 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 2394 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 2395 | "dev": true, 2396 | "license": "MIT" 2397 | }, 2398 | "node_modules/json-schema-traverse": { 2399 | "version": "0.4.1", 2400 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2401 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2402 | "dev": true, 2403 | "license": "MIT" 2404 | }, 2405 | "node_modules/json-stable-stringify-without-jsonify": { 2406 | "version": "1.0.1", 2407 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2408 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2409 | "dev": true, 2410 | "license": "MIT" 2411 | }, 2412 | "node_modules/jszip": { 2413 | "version": "3.10.1", 2414 | "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", 2415 | "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", 2416 | "dev": true, 2417 | "license": "(MIT OR GPL-3.0-or-later)", 2418 | "dependencies": { 2419 | "lie": "~3.3.0", 2420 | "pako": "~1.0.2", 2421 | "readable-stream": "~2.3.6", 2422 | "setimmediate": "^1.0.5" 2423 | } 2424 | }, 2425 | "node_modules/keyv": { 2426 | "version": "4.5.4", 2427 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 2428 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 2429 | "dev": true, 2430 | "license": "MIT", 2431 | "dependencies": { 2432 | "json-buffer": "3.0.1" 2433 | } 2434 | }, 2435 | "node_modules/kind-of": { 2436 | "version": "6.0.3", 2437 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2438 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 2439 | "dev": true, 2440 | "license": "MIT", 2441 | "engines": { 2442 | "node": ">=0.10.0" 2443 | } 2444 | }, 2445 | "node_modules/levn": { 2446 | "version": "0.4.1", 2447 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2448 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2449 | "dev": true, 2450 | "license": "MIT", 2451 | "dependencies": { 2452 | "prelude-ls": "^1.2.1", 2453 | "type-check": "~0.4.0" 2454 | }, 2455 | "engines": { 2456 | "node": ">= 0.8.0" 2457 | } 2458 | }, 2459 | "node_modules/lie": { 2460 | "version": "3.3.0", 2461 | "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", 2462 | "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", 2463 | "dev": true, 2464 | "license": "MIT", 2465 | "dependencies": { 2466 | "immediate": "~3.0.5" 2467 | } 2468 | }, 2469 | "node_modules/loader-runner": { 2470 | "version": "4.3.0", 2471 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", 2472 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", 2473 | "dev": true, 2474 | "license": "MIT", 2475 | "engines": { 2476 | "node": ">=6.11.5" 2477 | } 2478 | }, 2479 | "node_modules/locate-path": { 2480 | "version": "6.0.0", 2481 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2482 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2483 | "dev": true, 2484 | "license": "MIT", 2485 | "dependencies": { 2486 | "p-locate": "^5.0.0" 2487 | }, 2488 | "engines": { 2489 | "node": ">=10" 2490 | }, 2491 | "funding": { 2492 | "url": "https://github.com/sponsors/sindresorhus" 2493 | } 2494 | }, 2495 | "node_modules/lodash.merge": { 2496 | "version": "4.6.2", 2497 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2498 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2499 | "dev": true, 2500 | "license": "MIT" 2501 | }, 2502 | "node_modules/log-symbols": { 2503 | "version": "4.1.0", 2504 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 2505 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 2506 | "dev": true, 2507 | "license": "MIT", 2508 | "dependencies": { 2509 | "chalk": "^4.1.0", 2510 | "is-unicode-supported": "^0.1.0" 2511 | }, 2512 | "engines": { 2513 | "node": ">=10" 2514 | }, 2515 | "funding": { 2516 | "url": "https://github.com/sponsors/sindresorhus" 2517 | } 2518 | }, 2519 | "node_modules/merge-stream": { 2520 | "version": "2.0.0", 2521 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2522 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 2523 | "dev": true, 2524 | "license": "MIT" 2525 | }, 2526 | "node_modules/merge2": { 2527 | "version": "1.4.1", 2528 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2529 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2530 | "dev": true, 2531 | "license": "MIT", 2532 | "engines": { 2533 | "node": ">= 8" 2534 | } 2535 | }, 2536 | "node_modules/micromatch": { 2537 | "version": "4.0.8", 2538 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 2539 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 2540 | "dev": true, 2541 | "license": "MIT", 2542 | "dependencies": { 2543 | "braces": "^3.0.3", 2544 | "picomatch": "^2.3.1" 2545 | }, 2546 | "engines": { 2547 | "node": ">=8.6" 2548 | } 2549 | }, 2550 | "node_modules/mime-db": { 2551 | "version": "1.52.0", 2552 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2553 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 2554 | "dev": true, 2555 | "license": "MIT", 2556 | "engines": { 2557 | "node": ">= 0.6" 2558 | } 2559 | }, 2560 | "node_modules/mime-types": { 2561 | "version": "2.1.35", 2562 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2563 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2564 | "dev": true, 2565 | "license": "MIT", 2566 | "dependencies": { 2567 | "mime-db": "1.52.0" 2568 | }, 2569 | "engines": { 2570 | "node": ">= 0.6" 2571 | } 2572 | }, 2573 | "node_modules/mimic-fn": { 2574 | "version": "2.1.0", 2575 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2576 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2577 | "dev": true, 2578 | "license": "MIT", 2579 | "engines": { 2580 | "node": ">=6" 2581 | } 2582 | }, 2583 | "node_modules/minimatch": { 2584 | "version": "3.1.2", 2585 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2586 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2587 | "dev": true, 2588 | "license": "ISC", 2589 | "dependencies": { 2590 | "brace-expansion": "^1.1.7" 2591 | }, 2592 | "engines": { 2593 | "node": "*" 2594 | } 2595 | }, 2596 | "node_modules/mocha": { 2597 | "version": "10.8.2", 2598 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", 2599 | "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", 2600 | "dev": true, 2601 | "license": "MIT", 2602 | "dependencies": { 2603 | "ansi-colors": "^4.1.3", 2604 | "browser-stdout": "^1.3.1", 2605 | "chokidar": "^3.5.3", 2606 | "debug": "^4.3.5", 2607 | "diff": "^5.2.0", 2608 | "escape-string-regexp": "^4.0.0", 2609 | "find-up": "^5.0.0", 2610 | "glob": "^8.1.0", 2611 | "he": "^1.2.0", 2612 | "js-yaml": "^4.1.0", 2613 | "log-symbols": "^4.1.0", 2614 | "minimatch": "^5.1.6", 2615 | "ms": "^2.1.3", 2616 | "serialize-javascript": "^6.0.2", 2617 | "strip-json-comments": "^3.1.1", 2618 | "supports-color": "^8.1.1", 2619 | "workerpool": "^6.5.1", 2620 | "yargs": "^16.2.0", 2621 | "yargs-parser": "^20.2.9", 2622 | "yargs-unparser": "^2.0.0" 2623 | }, 2624 | "bin": { 2625 | "_mocha": "bin/_mocha", 2626 | "mocha": "bin/mocha.js" 2627 | }, 2628 | "engines": { 2629 | "node": ">= 14.0.0" 2630 | } 2631 | }, 2632 | "node_modules/mocha/node_modules/brace-expansion": { 2633 | "version": "2.0.1", 2634 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2635 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2636 | "dev": true, 2637 | "license": "MIT", 2638 | "dependencies": { 2639 | "balanced-match": "^1.0.0" 2640 | } 2641 | }, 2642 | "node_modules/mocha/node_modules/minimatch": { 2643 | "version": "5.1.6", 2644 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 2645 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 2646 | "dev": true, 2647 | "license": "ISC", 2648 | "dependencies": { 2649 | "brace-expansion": "^2.0.1" 2650 | }, 2651 | "engines": { 2652 | "node": ">=10" 2653 | } 2654 | }, 2655 | "node_modules/mocha/node_modules/supports-color": { 2656 | "version": "8.1.1", 2657 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2658 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2659 | "dev": true, 2660 | "license": "MIT", 2661 | "dependencies": { 2662 | "has-flag": "^4.0.0" 2663 | }, 2664 | "engines": { 2665 | "node": ">=10" 2666 | }, 2667 | "funding": { 2668 | "url": "https://github.com/chalk/supports-color?sponsor=1" 2669 | } 2670 | }, 2671 | "node_modules/ms": { 2672 | "version": "2.1.3", 2673 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2674 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2675 | "dev": true, 2676 | "license": "MIT" 2677 | }, 2678 | "node_modules/natural-compare": { 2679 | "version": "1.4.0", 2680 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2681 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2682 | "dev": true, 2683 | "license": "MIT" 2684 | }, 2685 | "node_modules/neo-async": { 2686 | "version": "2.6.2", 2687 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 2688 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 2689 | "dev": true, 2690 | "license": "MIT" 2691 | }, 2692 | "node_modules/node-releases": { 2693 | "version": "2.0.18", 2694 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", 2695 | "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", 2696 | "dev": true, 2697 | "license": "MIT" 2698 | }, 2699 | "node_modules/normalize-path": { 2700 | "version": "3.0.0", 2701 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2702 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2703 | "dev": true, 2704 | "license": "MIT", 2705 | "engines": { 2706 | "node": ">=0.10.0" 2707 | } 2708 | }, 2709 | "node_modules/once": { 2710 | "version": "1.4.0", 2711 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2712 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2713 | "dev": true, 2714 | "license": "ISC", 2715 | "dependencies": { 2716 | "wrappy": "1" 2717 | } 2718 | }, 2719 | "node_modules/onetime": { 2720 | "version": "5.1.2", 2721 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 2722 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 2723 | "dev": true, 2724 | "license": "MIT", 2725 | "dependencies": { 2726 | "mimic-fn": "^2.1.0" 2727 | }, 2728 | "engines": { 2729 | "node": ">=6" 2730 | }, 2731 | "funding": { 2732 | "url": "https://github.com/sponsors/sindresorhus" 2733 | } 2734 | }, 2735 | "node_modules/optionator": { 2736 | "version": "0.9.4", 2737 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 2738 | "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 2739 | "dev": true, 2740 | "license": "MIT", 2741 | "dependencies": { 2742 | "deep-is": "^0.1.3", 2743 | "fast-levenshtein": "^2.0.6", 2744 | "levn": "^0.4.1", 2745 | "prelude-ls": "^1.2.1", 2746 | "type-check": "^0.4.0", 2747 | "word-wrap": "^1.2.5" 2748 | }, 2749 | "engines": { 2750 | "node": ">= 0.8.0" 2751 | } 2752 | }, 2753 | "node_modules/ora": { 2754 | "version": "7.0.1", 2755 | "resolved": "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz", 2756 | "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==", 2757 | "dev": true, 2758 | "license": "MIT", 2759 | "dependencies": { 2760 | "chalk": "^5.3.0", 2761 | "cli-cursor": "^4.0.0", 2762 | "cli-spinners": "^2.9.0", 2763 | "is-interactive": "^2.0.0", 2764 | "is-unicode-supported": "^1.3.0", 2765 | "log-symbols": "^5.1.0", 2766 | "stdin-discarder": "^0.1.0", 2767 | "string-width": "^6.1.0", 2768 | "strip-ansi": "^7.1.0" 2769 | }, 2770 | "engines": { 2771 | "node": ">=16" 2772 | }, 2773 | "funding": { 2774 | "url": "https://github.com/sponsors/sindresorhus" 2775 | } 2776 | }, 2777 | "node_modules/ora/node_modules/chalk": { 2778 | "version": "5.3.0", 2779 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", 2780 | "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", 2781 | "dev": true, 2782 | "license": "MIT", 2783 | "engines": { 2784 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 2785 | }, 2786 | "funding": { 2787 | "url": "https://github.com/chalk/chalk?sponsor=1" 2788 | } 2789 | }, 2790 | "node_modules/ora/node_modules/is-unicode-supported": { 2791 | "version": "1.3.0", 2792 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", 2793 | "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", 2794 | "dev": true, 2795 | "license": "MIT", 2796 | "engines": { 2797 | "node": ">=12" 2798 | }, 2799 | "funding": { 2800 | "url": "https://github.com/sponsors/sindresorhus" 2801 | } 2802 | }, 2803 | "node_modules/ora/node_modules/log-symbols": { 2804 | "version": "5.1.0", 2805 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", 2806 | "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", 2807 | "dev": true, 2808 | "license": "MIT", 2809 | "dependencies": { 2810 | "chalk": "^5.0.0", 2811 | "is-unicode-supported": "^1.1.0" 2812 | }, 2813 | "engines": { 2814 | "node": ">=12" 2815 | }, 2816 | "funding": { 2817 | "url": "https://github.com/sponsors/sindresorhus" 2818 | } 2819 | }, 2820 | "node_modules/p-limit": { 2821 | "version": "3.1.0", 2822 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2823 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2824 | "dev": true, 2825 | "license": "MIT", 2826 | "dependencies": { 2827 | "yocto-queue": "^0.1.0" 2828 | }, 2829 | "engines": { 2830 | "node": ">=10" 2831 | }, 2832 | "funding": { 2833 | "url": "https://github.com/sponsors/sindresorhus" 2834 | } 2835 | }, 2836 | "node_modules/p-locate": { 2837 | "version": "5.0.0", 2838 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2839 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2840 | "dev": true, 2841 | "license": "MIT", 2842 | "dependencies": { 2843 | "p-limit": "^3.0.2" 2844 | }, 2845 | "engines": { 2846 | "node": ">=10" 2847 | }, 2848 | "funding": { 2849 | "url": "https://github.com/sponsors/sindresorhus" 2850 | } 2851 | }, 2852 | "node_modules/p-try": { 2853 | "version": "2.2.0", 2854 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2855 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2856 | "dev": true, 2857 | "license": "MIT", 2858 | "engines": { 2859 | "node": ">=6" 2860 | } 2861 | }, 2862 | "node_modules/pako": { 2863 | "version": "1.0.11", 2864 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 2865 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 2866 | "dev": true, 2867 | "license": "(MIT AND Zlib)" 2868 | }, 2869 | "node_modules/parent-module": { 2870 | "version": "1.0.1", 2871 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2872 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2873 | "dev": true, 2874 | "license": "MIT", 2875 | "dependencies": { 2876 | "callsites": "^3.0.0" 2877 | }, 2878 | "engines": { 2879 | "node": ">=6" 2880 | } 2881 | }, 2882 | "node_modules/path-exists": { 2883 | "version": "4.0.0", 2884 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2885 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2886 | "dev": true, 2887 | "license": "MIT", 2888 | "engines": { 2889 | "node": ">=8" 2890 | } 2891 | }, 2892 | "node_modules/path-key": { 2893 | "version": "3.1.1", 2894 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2895 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2896 | "dev": true, 2897 | "license": "MIT", 2898 | "engines": { 2899 | "node": ">=8" 2900 | } 2901 | }, 2902 | "node_modules/path-parse": { 2903 | "version": "1.0.7", 2904 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2905 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2906 | "dev": true, 2907 | "license": "MIT" 2908 | }, 2909 | "node_modules/picocolors": { 2910 | "version": "1.1.1", 2911 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2912 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2913 | "dev": true, 2914 | "license": "ISC" 2915 | }, 2916 | "node_modules/picomatch": { 2917 | "version": "2.3.1", 2918 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2919 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2920 | "dev": true, 2921 | "license": "MIT", 2922 | "engines": { 2923 | "node": ">=8.6" 2924 | }, 2925 | "funding": { 2926 | "url": "https://github.com/sponsors/jonschlinkert" 2927 | } 2928 | }, 2929 | "node_modules/pkg-dir": { 2930 | "version": "4.2.0", 2931 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 2932 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 2933 | "dev": true, 2934 | "license": "MIT", 2935 | "dependencies": { 2936 | "find-up": "^4.0.0" 2937 | }, 2938 | "engines": { 2939 | "node": ">=8" 2940 | } 2941 | }, 2942 | "node_modules/pkg-dir/node_modules/find-up": { 2943 | "version": "4.1.0", 2944 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 2945 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 2946 | "dev": true, 2947 | "license": "MIT", 2948 | "dependencies": { 2949 | "locate-path": "^5.0.0", 2950 | "path-exists": "^4.0.0" 2951 | }, 2952 | "engines": { 2953 | "node": ">=8" 2954 | } 2955 | }, 2956 | "node_modules/pkg-dir/node_modules/locate-path": { 2957 | "version": "5.0.0", 2958 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 2959 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 2960 | "dev": true, 2961 | "license": "MIT", 2962 | "dependencies": { 2963 | "p-locate": "^4.1.0" 2964 | }, 2965 | "engines": { 2966 | "node": ">=8" 2967 | } 2968 | }, 2969 | "node_modules/pkg-dir/node_modules/p-limit": { 2970 | "version": "2.3.0", 2971 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2972 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2973 | "dev": true, 2974 | "license": "MIT", 2975 | "dependencies": { 2976 | "p-try": "^2.0.0" 2977 | }, 2978 | "engines": { 2979 | "node": ">=6" 2980 | }, 2981 | "funding": { 2982 | "url": "https://github.com/sponsors/sindresorhus" 2983 | } 2984 | }, 2985 | "node_modules/pkg-dir/node_modules/p-locate": { 2986 | "version": "4.1.0", 2987 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 2988 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 2989 | "dev": true, 2990 | "license": "MIT", 2991 | "dependencies": { 2992 | "p-limit": "^2.2.0" 2993 | }, 2994 | "engines": { 2995 | "node": ">=8" 2996 | } 2997 | }, 2998 | "node_modules/prelude-ls": { 2999 | "version": "1.2.1", 3000 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3001 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3002 | "dev": true, 3003 | "license": "MIT", 3004 | "engines": { 3005 | "node": ">= 0.8.0" 3006 | } 3007 | }, 3008 | "node_modules/process-nextick-args": { 3009 | "version": "2.0.1", 3010 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 3011 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 3012 | "dev": true, 3013 | "license": "MIT" 3014 | }, 3015 | "node_modules/punycode": { 3016 | "version": "2.3.1", 3017 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 3018 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 3019 | "dev": true, 3020 | "license": "MIT", 3021 | "engines": { 3022 | "node": ">=6" 3023 | } 3024 | }, 3025 | "node_modules/queue-microtask": { 3026 | "version": "1.2.3", 3027 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3028 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3029 | "dev": true, 3030 | "funding": [ 3031 | { 3032 | "type": "github", 3033 | "url": "https://github.com/sponsors/feross" 3034 | }, 3035 | { 3036 | "type": "patreon", 3037 | "url": "https://www.patreon.com/feross" 3038 | }, 3039 | { 3040 | "type": "consulting", 3041 | "url": "https://feross.org/support" 3042 | } 3043 | ], 3044 | "license": "MIT" 3045 | }, 3046 | "node_modules/randombytes": { 3047 | "version": "2.1.0", 3048 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3049 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3050 | "dev": true, 3051 | "license": "MIT", 3052 | "dependencies": { 3053 | "safe-buffer": "^5.1.0" 3054 | } 3055 | }, 3056 | "node_modules/readable-stream": { 3057 | "version": "2.3.8", 3058 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 3059 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 3060 | "dev": true, 3061 | "license": "MIT", 3062 | "dependencies": { 3063 | "core-util-is": "~1.0.0", 3064 | "inherits": "~2.0.3", 3065 | "isarray": "~1.0.0", 3066 | "process-nextick-args": "~2.0.0", 3067 | "safe-buffer": "~5.1.1", 3068 | "string_decoder": "~1.1.1", 3069 | "util-deprecate": "~1.0.1" 3070 | } 3071 | }, 3072 | "node_modules/readdirp": { 3073 | "version": "3.6.0", 3074 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3075 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3076 | "dev": true, 3077 | "license": "MIT", 3078 | "dependencies": { 3079 | "picomatch": "^2.2.1" 3080 | }, 3081 | "engines": { 3082 | "node": ">=8.10.0" 3083 | } 3084 | }, 3085 | "node_modules/rechoir": { 3086 | "version": "0.8.0", 3087 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", 3088 | "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", 3089 | "dev": true, 3090 | "license": "MIT", 3091 | "dependencies": { 3092 | "resolve": "^1.20.0" 3093 | }, 3094 | "engines": { 3095 | "node": ">= 10.13.0" 3096 | } 3097 | }, 3098 | "node_modules/require-directory": { 3099 | "version": "2.1.1", 3100 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3101 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 3102 | "dev": true, 3103 | "license": "MIT", 3104 | "engines": { 3105 | "node": ">=0.10.0" 3106 | } 3107 | }, 3108 | "node_modules/resolve": { 3109 | "version": "1.22.8", 3110 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 3111 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 3112 | "dev": true, 3113 | "license": "MIT", 3114 | "dependencies": { 3115 | "is-core-module": "^2.13.0", 3116 | "path-parse": "^1.0.7", 3117 | "supports-preserve-symlinks-flag": "^1.0.0" 3118 | }, 3119 | "bin": { 3120 | "resolve": "bin/resolve" 3121 | }, 3122 | "funding": { 3123 | "url": "https://github.com/sponsors/ljharb" 3124 | } 3125 | }, 3126 | "node_modules/resolve-cwd": { 3127 | "version": "3.0.0", 3128 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 3129 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 3130 | "dev": true, 3131 | "license": "MIT", 3132 | "dependencies": { 3133 | "resolve-from": "^5.0.0" 3134 | }, 3135 | "engines": { 3136 | "node": ">=8" 3137 | } 3138 | }, 3139 | "node_modules/resolve-cwd/node_modules/resolve-from": { 3140 | "version": "5.0.0", 3141 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 3142 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 3143 | "dev": true, 3144 | "license": "MIT", 3145 | "engines": { 3146 | "node": ">=8" 3147 | } 3148 | }, 3149 | "node_modules/resolve-from": { 3150 | "version": "4.0.0", 3151 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3152 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3153 | "dev": true, 3154 | "license": "MIT", 3155 | "engines": { 3156 | "node": ">=4" 3157 | } 3158 | }, 3159 | "node_modules/restore-cursor": { 3160 | "version": "4.0.0", 3161 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", 3162 | "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", 3163 | "dev": true, 3164 | "license": "MIT", 3165 | "dependencies": { 3166 | "onetime": "^5.1.0", 3167 | "signal-exit": "^3.0.2" 3168 | }, 3169 | "engines": { 3170 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 3171 | }, 3172 | "funding": { 3173 | "url": "https://github.com/sponsors/sindresorhus" 3174 | } 3175 | }, 3176 | "node_modules/reusify": { 3177 | "version": "1.0.4", 3178 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3179 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3180 | "dev": true, 3181 | "license": "MIT", 3182 | "engines": { 3183 | "iojs": ">=1.0.0", 3184 | "node": ">=0.10.0" 3185 | } 3186 | }, 3187 | "node_modules/run-parallel": { 3188 | "version": "1.2.0", 3189 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3190 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3191 | "dev": true, 3192 | "funding": [ 3193 | { 3194 | "type": "github", 3195 | "url": "https://github.com/sponsors/feross" 3196 | }, 3197 | { 3198 | "type": "patreon", 3199 | "url": "https://www.patreon.com/feross" 3200 | }, 3201 | { 3202 | "type": "consulting", 3203 | "url": "https://feross.org/support" 3204 | } 3205 | ], 3206 | "license": "MIT", 3207 | "dependencies": { 3208 | "queue-microtask": "^1.2.2" 3209 | } 3210 | }, 3211 | "node_modules/safe-buffer": { 3212 | "version": "5.1.2", 3213 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3214 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3215 | "dev": true, 3216 | "license": "MIT" 3217 | }, 3218 | "node_modules/schema-utils": { 3219 | "version": "3.3.0", 3220 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", 3221 | "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", 3222 | "dev": true, 3223 | "license": "MIT", 3224 | "dependencies": { 3225 | "@types/json-schema": "^7.0.8", 3226 | "ajv": "^6.12.5", 3227 | "ajv-keywords": "^3.5.2" 3228 | }, 3229 | "engines": { 3230 | "node": ">= 10.13.0" 3231 | }, 3232 | "funding": { 3233 | "type": "opencollective", 3234 | "url": "https://opencollective.com/webpack" 3235 | } 3236 | }, 3237 | "node_modules/semver": { 3238 | "version": "7.6.3", 3239 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", 3240 | "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 3241 | "dev": true, 3242 | "license": "ISC", 3243 | "bin": { 3244 | "semver": "bin/semver.js" 3245 | }, 3246 | "engines": { 3247 | "node": ">=10" 3248 | } 3249 | }, 3250 | "node_modules/serialize-javascript": { 3251 | "version": "6.0.2", 3252 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 3253 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 3254 | "dev": true, 3255 | "license": "BSD-3-Clause", 3256 | "dependencies": { 3257 | "randombytes": "^2.1.0" 3258 | } 3259 | }, 3260 | "node_modules/setimmediate": { 3261 | "version": "1.0.5", 3262 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 3263 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", 3264 | "dev": true, 3265 | "license": "MIT" 3266 | }, 3267 | "node_modules/shallow-clone": { 3268 | "version": "3.0.1", 3269 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", 3270 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", 3271 | "dev": true, 3272 | "license": "MIT", 3273 | "dependencies": { 3274 | "kind-of": "^6.0.2" 3275 | }, 3276 | "engines": { 3277 | "node": ">=8" 3278 | } 3279 | }, 3280 | "node_modules/shebang-command": { 3281 | "version": "2.0.0", 3282 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3283 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3284 | "dev": true, 3285 | "license": "MIT", 3286 | "dependencies": { 3287 | "shebang-regex": "^3.0.0" 3288 | }, 3289 | "engines": { 3290 | "node": ">=8" 3291 | } 3292 | }, 3293 | "node_modules/shebang-regex": { 3294 | "version": "3.0.0", 3295 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3296 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3297 | "dev": true, 3298 | "license": "MIT", 3299 | "engines": { 3300 | "node": ">=8" 3301 | } 3302 | }, 3303 | "node_modules/signal-exit": { 3304 | "version": "3.0.7", 3305 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3306 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3307 | "dev": true, 3308 | "license": "ISC" 3309 | }, 3310 | "node_modules/source-map": { 3311 | "version": "0.7.4", 3312 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", 3313 | "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", 3314 | "dev": true, 3315 | "license": "BSD-3-Clause", 3316 | "engines": { 3317 | "node": ">= 8" 3318 | } 3319 | }, 3320 | "node_modules/source-map-support": { 3321 | "version": "0.5.21", 3322 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 3323 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 3324 | "dev": true, 3325 | "license": "MIT", 3326 | "dependencies": { 3327 | "buffer-from": "^1.0.0", 3328 | "source-map": "^0.6.0" 3329 | } 3330 | }, 3331 | "node_modules/source-map-support/node_modules/source-map": { 3332 | "version": "0.6.1", 3333 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3334 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3335 | "dev": true, 3336 | "license": "BSD-3-Clause", 3337 | "engines": { 3338 | "node": ">=0.10.0" 3339 | } 3340 | }, 3341 | "node_modules/stdin-discarder": { 3342 | "version": "0.1.0", 3343 | "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", 3344 | "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", 3345 | "dev": true, 3346 | "license": "MIT", 3347 | "dependencies": { 3348 | "bl": "^5.0.0" 3349 | }, 3350 | "engines": { 3351 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 3352 | }, 3353 | "funding": { 3354 | "url": "https://github.com/sponsors/sindresorhus" 3355 | } 3356 | }, 3357 | "node_modules/string_decoder": { 3358 | "version": "1.1.1", 3359 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3360 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3361 | "dev": true, 3362 | "license": "MIT", 3363 | "dependencies": { 3364 | "safe-buffer": "~5.1.0" 3365 | } 3366 | }, 3367 | "node_modules/string-width": { 3368 | "version": "6.1.0", 3369 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", 3370 | "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", 3371 | "dev": true, 3372 | "license": "MIT", 3373 | "dependencies": { 3374 | "eastasianwidth": "^0.2.0", 3375 | "emoji-regex": "^10.2.1", 3376 | "strip-ansi": "^7.0.1" 3377 | }, 3378 | "engines": { 3379 | "node": ">=16" 3380 | }, 3381 | "funding": { 3382 | "url": "https://github.com/sponsors/sindresorhus" 3383 | } 3384 | }, 3385 | "node_modules/strip-ansi": { 3386 | "version": "7.1.0", 3387 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 3388 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 3389 | "dev": true, 3390 | "license": "MIT", 3391 | "dependencies": { 3392 | "ansi-regex": "^6.0.1" 3393 | }, 3394 | "engines": { 3395 | "node": ">=12" 3396 | }, 3397 | "funding": { 3398 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 3399 | } 3400 | }, 3401 | "node_modules/strip-json-comments": { 3402 | "version": "3.1.1", 3403 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3404 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3405 | "dev": true, 3406 | "license": "MIT", 3407 | "engines": { 3408 | "node": ">=8" 3409 | }, 3410 | "funding": { 3411 | "url": "https://github.com/sponsors/sindresorhus" 3412 | } 3413 | }, 3414 | "node_modules/supports-color": { 3415 | "version": "7.2.0", 3416 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3417 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3418 | "dev": true, 3419 | "license": "MIT", 3420 | "dependencies": { 3421 | "has-flag": "^4.0.0" 3422 | }, 3423 | "engines": { 3424 | "node": ">=8" 3425 | } 3426 | }, 3427 | "node_modules/supports-preserve-symlinks-flag": { 3428 | "version": "1.0.0", 3429 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 3430 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 3431 | "dev": true, 3432 | "license": "MIT", 3433 | "engines": { 3434 | "node": ">= 0.4" 3435 | }, 3436 | "funding": { 3437 | "url": "https://github.com/sponsors/ljharb" 3438 | } 3439 | }, 3440 | "node_modules/tapable": { 3441 | "version": "2.2.1", 3442 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 3443 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 3444 | "dev": true, 3445 | "license": "MIT", 3446 | "engines": { 3447 | "node": ">=6" 3448 | } 3449 | }, 3450 | "node_modules/terser": { 3451 | "version": "5.36.0", 3452 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", 3453 | "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", 3454 | "dev": true, 3455 | "license": "BSD-2-Clause", 3456 | "dependencies": { 3457 | "@jridgewell/source-map": "^0.3.3", 3458 | "acorn": "^8.8.2", 3459 | "commander": "^2.20.0", 3460 | "source-map-support": "~0.5.20" 3461 | }, 3462 | "bin": { 3463 | "terser": "bin/terser" 3464 | }, 3465 | "engines": { 3466 | "node": ">=10" 3467 | } 3468 | }, 3469 | "node_modules/terser-webpack-plugin": { 3470 | "version": "5.3.10", 3471 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", 3472 | "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", 3473 | "dev": true, 3474 | "license": "MIT", 3475 | "dependencies": { 3476 | "@jridgewell/trace-mapping": "^0.3.20", 3477 | "jest-worker": "^27.4.5", 3478 | "schema-utils": "^3.1.1", 3479 | "serialize-javascript": "^6.0.1", 3480 | "terser": "^5.26.0" 3481 | }, 3482 | "engines": { 3483 | "node": ">= 10.13.0" 3484 | }, 3485 | "funding": { 3486 | "type": "opencollective", 3487 | "url": "https://opencollective.com/webpack" 3488 | }, 3489 | "peerDependencies": { 3490 | "webpack": "^5.1.0" 3491 | }, 3492 | "peerDependenciesMeta": { 3493 | "@swc/core": { 3494 | "optional": true 3495 | }, 3496 | "esbuild": { 3497 | "optional": true 3498 | }, 3499 | "uglify-js": { 3500 | "optional": true 3501 | } 3502 | } 3503 | }, 3504 | "node_modules/to-regex-range": { 3505 | "version": "5.0.1", 3506 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3507 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3508 | "dev": true, 3509 | "license": "MIT", 3510 | "dependencies": { 3511 | "is-number": "^7.0.0" 3512 | }, 3513 | "engines": { 3514 | "node": ">=8.0" 3515 | } 3516 | }, 3517 | "node_modules/ts-api-utils": { 3518 | "version": "1.4.0", 3519 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", 3520 | "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", 3521 | "dev": true, 3522 | "license": "MIT", 3523 | "engines": { 3524 | "node": ">=16" 3525 | }, 3526 | "peerDependencies": { 3527 | "typescript": ">=4.2.0" 3528 | } 3529 | }, 3530 | "node_modules/ts-loader": { 3531 | "version": "9.5.1", 3532 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", 3533 | "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", 3534 | "dev": true, 3535 | "license": "MIT", 3536 | "dependencies": { 3537 | "chalk": "^4.1.0", 3538 | "enhanced-resolve": "^5.0.0", 3539 | "micromatch": "^4.0.0", 3540 | "semver": "^7.3.4", 3541 | "source-map": "^0.7.4" 3542 | }, 3543 | "engines": { 3544 | "node": ">=12.0.0" 3545 | }, 3546 | "peerDependencies": { 3547 | "typescript": "*", 3548 | "webpack": "^5.0.0" 3549 | } 3550 | }, 3551 | "node_modules/type-check": { 3552 | "version": "0.4.0", 3553 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3554 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3555 | "dev": true, 3556 | "license": "MIT", 3557 | "dependencies": { 3558 | "prelude-ls": "^1.2.1" 3559 | }, 3560 | "engines": { 3561 | "node": ">= 0.8.0" 3562 | } 3563 | }, 3564 | "node_modules/typescript": { 3565 | "version": "5.6.3", 3566 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", 3567 | "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", 3568 | "dev": true, 3569 | "license": "Apache-2.0", 3570 | "bin": { 3571 | "tsc": "bin/tsc", 3572 | "tsserver": "bin/tsserver" 3573 | }, 3574 | "engines": { 3575 | "node": ">=14.17" 3576 | } 3577 | }, 3578 | "node_modules/typescript-eslint": { 3579 | "version": "8.15.0", 3580 | "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz", 3581 | "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==", 3582 | "dev": true, 3583 | "license": "MIT", 3584 | "dependencies": { 3585 | "@typescript-eslint/eslint-plugin": "8.15.0", 3586 | "@typescript-eslint/parser": "8.15.0", 3587 | "@typescript-eslint/utils": "8.15.0" 3588 | }, 3589 | "engines": { 3590 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 3591 | }, 3592 | "funding": { 3593 | "type": "opencollective", 3594 | "url": "https://opencollective.com/typescript-eslint" 3595 | }, 3596 | "peerDependencies": { 3597 | "eslint": "^8.57.0 || ^9.0.0" 3598 | }, 3599 | "peerDependenciesMeta": { 3600 | "typescript": { 3601 | "optional": true 3602 | } 3603 | } 3604 | }, 3605 | "node_modules/undici-types": { 3606 | "version": "6.19.8", 3607 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", 3608 | "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", 3609 | "dev": true, 3610 | "license": "MIT" 3611 | }, 3612 | "node_modules/update-browserslist-db": { 3613 | "version": "1.1.1", 3614 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", 3615 | "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", 3616 | "dev": true, 3617 | "funding": [ 3618 | { 3619 | "type": "opencollective", 3620 | "url": "https://opencollective.com/browserslist" 3621 | }, 3622 | { 3623 | "type": "tidelift", 3624 | "url": "https://tidelift.com/funding/github/npm/browserslist" 3625 | }, 3626 | { 3627 | "type": "github", 3628 | "url": "https://github.com/sponsors/ai" 3629 | } 3630 | ], 3631 | "license": "MIT", 3632 | "dependencies": { 3633 | "escalade": "^3.2.0", 3634 | "picocolors": "^1.1.0" 3635 | }, 3636 | "bin": { 3637 | "update-browserslist-db": "cli.js" 3638 | }, 3639 | "peerDependencies": { 3640 | "browserslist": ">= 4.21.0" 3641 | } 3642 | }, 3643 | "node_modules/uri-js": { 3644 | "version": "4.4.1", 3645 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3646 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3647 | "dev": true, 3648 | "license": "BSD-2-Clause", 3649 | "dependencies": { 3650 | "punycode": "^2.1.0" 3651 | } 3652 | }, 3653 | "node_modules/util-deprecate": { 3654 | "version": "1.0.2", 3655 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3656 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 3657 | "dev": true, 3658 | "license": "MIT" 3659 | }, 3660 | "node_modules/watchpack": { 3661 | "version": "2.4.2", 3662 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", 3663 | "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", 3664 | "dev": true, 3665 | "license": "MIT", 3666 | "dependencies": { 3667 | "glob-to-regexp": "^0.4.1", 3668 | "graceful-fs": "^4.1.2" 3669 | }, 3670 | "engines": { 3671 | "node": ">=10.13.0" 3672 | } 3673 | }, 3674 | "node_modules/webpack": { 3675 | "version": "5.96.1", 3676 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", 3677 | "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", 3678 | "dev": true, 3679 | "license": "MIT", 3680 | "dependencies": { 3681 | "@types/eslint-scope": "^3.7.7", 3682 | "@types/estree": "^1.0.6", 3683 | "@webassemblyjs/ast": "^1.12.1", 3684 | "@webassemblyjs/wasm-edit": "^1.12.1", 3685 | "@webassemblyjs/wasm-parser": "^1.12.1", 3686 | "acorn": "^8.14.0", 3687 | "browserslist": "^4.24.0", 3688 | "chrome-trace-event": "^1.0.2", 3689 | "enhanced-resolve": "^5.17.1", 3690 | "es-module-lexer": "^1.2.1", 3691 | "eslint-scope": "5.1.1", 3692 | "events": "^3.2.0", 3693 | "glob-to-regexp": "^0.4.1", 3694 | "graceful-fs": "^4.2.11", 3695 | "json-parse-even-better-errors": "^2.3.1", 3696 | "loader-runner": "^4.2.0", 3697 | "mime-types": "^2.1.27", 3698 | "neo-async": "^2.6.2", 3699 | "schema-utils": "^3.2.0", 3700 | "tapable": "^2.1.1", 3701 | "terser-webpack-plugin": "^5.3.10", 3702 | "watchpack": "^2.4.1", 3703 | "webpack-sources": "^3.2.3" 3704 | }, 3705 | "bin": { 3706 | "webpack": "bin/webpack.js" 3707 | }, 3708 | "engines": { 3709 | "node": ">=10.13.0" 3710 | }, 3711 | "funding": { 3712 | "type": "opencollective", 3713 | "url": "https://opencollective.com/webpack" 3714 | }, 3715 | "peerDependenciesMeta": { 3716 | "webpack-cli": { 3717 | "optional": true 3718 | } 3719 | } 3720 | }, 3721 | "node_modules/webpack-cli": { 3722 | "version": "5.1.4", 3723 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", 3724 | "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", 3725 | "dev": true, 3726 | "license": "MIT", 3727 | "dependencies": { 3728 | "@discoveryjs/json-ext": "^0.5.0", 3729 | "@webpack-cli/configtest": "^2.1.1", 3730 | "@webpack-cli/info": "^2.0.2", 3731 | "@webpack-cli/serve": "^2.0.5", 3732 | "colorette": "^2.0.14", 3733 | "commander": "^10.0.1", 3734 | "cross-spawn": "^7.0.3", 3735 | "envinfo": "^7.7.3", 3736 | "fastest-levenshtein": "^1.0.12", 3737 | "import-local": "^3.0.2", 3738 | "interpret": "^3.1.1", 3739 | "rechoir": "^0.8.0", 3740 | "webpack-merge": "^5.7.3" 3741 | }, 3742 | "bin": { 3743 | "webpack-cli": "bin/cli.js" 3744 | }, 3745 | "engines": { 3746 | "node": ">=14.15.0" 3747 | }, 3748 | "funding": { 3749 | "type": "opencollective", 3750 | "url": "https://opencollective.com/webpack" 3751 | }, 3752 | "peerDependencies": { 3753 | "webpack": "5.x.x" 3754 | }, 3755 | "peerDependenciesMeta": { 3756 | "@webpack-cli/generators": { 3757 | "optional": true 3758 | }, 3759 | "webpack-bundle-analyzer": { 3760 | "optional": true 3761 | }, 3762 | "webpack-dev-server": { 3763 | "optional": true 3764 | } 3765 | } 3766 | }, 3767 | "node_modules/webpack-cli/node_modules/commander": { 3768 | "version": "10.0.1", 3769 | "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", 3770 | "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", 3771 | "dev": true, 3772 | "license": "MIT", 3773 | "engines": { 3774 | "node": ">=14" 3775 | } 3776 | }, 3777 | "node_modules/webpack-merge": { 3778 | "version": "5.10.0", 3779 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", 3780 | "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", 3781 | "dev": true, 3782 | "license": "MIT", 3783 | "dependencies": { 3784 | "clone-deep": "^4.0.1", 3785 | "flat": "^5.0.2", 3786 | "wildcard": "^2.0.0" 3787 | }, 3788 | "engines": { 3789 | "node": ">=10.0.0" 3790 | } 3791 | }, 3792 | "node_modules/webpack-sources": { 3793 | "version": "3.2.3", 3794 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", 3795 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", 3796 | "dev": true, 3797 | "license": "MIT", 3798 | "engines": { 3799 | "node": ">=10.13.0" 3800 | } 3801 | }, 3802 | "node_modules/webpack/node_modules/eslint-scope": { 3803 | "version": "5.1.1", 3804 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 3805 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 3806 | "dev": true, 3807 | "license": "BSD-2-Clause", 3808 | "dependencies": { 3809 | "esrecurse": "^4.3.0", 3810 | "estraverse": "^4.1.1" 3811 | }, 3812 | "engines": { 3813 | "node": ">=8.0.0" 3814 | } 3815 | }, 3816 | "node_modules/webpack/node_modules/estraverse": { 3817 | "version": "4.3.0", 3818 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 3819 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 3820 | "dev": true, 3821 | "license": "BSD-2-Clause", 3822 | "engines": { 3823 | "node": ">=4.0" 3824 | } 3825 | }, 3826 | "node_modules/which": { 3827 | "version": "2.0.2", 3828 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3829 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3830 | "dev": true, 3831 | "license": "ISC", 3832 | "dependencies": { 3833 | "isexe": "^2.0.0" 3834 | }, 3835 | "bin": { 3836 | "node-which": "bin/node-which" 3837 | }, 3838 | "engines": { 3839 | "node": ">= 8" 3840 | } 3841 | }, 3842 | "node_modules/wildcard": { 3843 | "version": "2.0.1", 3844 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", 3845 | "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", 3846 | "dev": true, 3847 | "license": "MIT" 3848 | }, 3849 | "node_modules/word-wrap": { 3850 | "version": "1.2.5", 3851 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 3852 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 3853 | "dev": true, 3854 | "license": "MIT", 3855 | "engines": { 3856 | "node": ">=0.10.0" 3857 | } 3858 | }, 3859 | "node_modules/workerpool": { 3860 | "version": "6.5.1", 3861 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", 3862 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", 3863 | "dev": true, 3864 | "license": "Apache-2.0" 3865 | }, 3866 | "node_modules/wrap-ansi": { 3867 | "version": "7.0.0", 3868 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3869 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3870 | "dev": true, 3871 | "license": "MIT", 3872 | "dependencies": { 3873 | "ansi-styles": "^4.0.0", 3874 | "string-width": "^4.1.0", 3875 | "strip-ansi": "^6.0.0" 3876 | }, 3877 | "engines": { 3878 | "node": ">=10" 3879 | }, 3880 | "funding": { 3881 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 3882 | } 3883 | }, 3884 | "node_modules/wrap-ansi/node_modules/ansi-regex": { 3885 | "version": "5.0.1", 3886 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3887 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3888 | "dev": true, 3889 | "license": "MIT", 3890 | "engines": { 3891 | "node": ">=8" 3892 | } 3893 | }, 3894 | "node_modules/wrap-ansi/node_modules/emoji-regex": { 3895 | "version": "8.0.0", 3896 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3897 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 3898 | "dev": true, 3899 | "license": "MIT" 3900 | }, 3901 | "node_modules/wrap-ansi/node_modules/string-width": { 3902 | "version": "4.2.3", 3903 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3904 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3905 | "dev": true, 3906 | "license": "MIT", 3907 | "dependencies": { 3908 | "emoji-regex": "^8.0.0", 3909 | "is-fullwidth-code-point": "^3.0.0", 3910 | "strip-ansi": "^6.0.1" 3911 | }, 3912 | "engines": { 3913 | "node": ">=8" 3914 | } 3915 | }, 3916 | "node_modules/wrap-ansi/node_modules/strip-ansi": { 3917 | "version": "6.0.1", 3918 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3919 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3920 | "dev": true, 3921 | "license": "MIT", 3922 | "dependencies": { 3923 | "ansi-regex": "^5.0.1" 3924 | }, 3925 | "engines": { 3926 | "node": ">=8" 3927 | } 3928 | }, 3929 | "node_modules/wrappy": { 3930 | "version": "1.0.2", 3931 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3932 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3933 | "dev": true, 3934 | "license": "ISC" 3935 | }, 3936 | "node_modules/y18n": { 3937 | "version": "5.0.8", 3938 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3939 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3940 | "dev": true, 3941 | "license": "ISC", 3942 | "engines": { 3943 | "node": ">=10" 3944 | } 3945 | }, 3946 | "node_modules/yargs": { 3947 | "version": "16.2.0", 3948 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3949 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3950 | "dev": true, 3951 | "license": "MIT", 3952 | "dependencies": { 3953 | "cliui": "^7.0.2", 3954 | "escalade": "^3.1.1", 3955 | "get-caller-file": "^2.0.5", 3956 | "require-directory": "^2.1.1", 3957 | "string-width": "^4.2.0", 3958 | "y18n": "^5.0.5", 3959 | "yargs-parser": "^20.2.2" 3960 | }, 3961 | "engines": { 3962 | "node": ">=10" 3963 | } 3964 | }, 3965 | "node_modules/yargs-parser": { 3966 | "version": "20.2.9", 3967 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 3968 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 3969 | "dev": true, 3970 | "license": "ISC", 3971 | "engines": { 3972 | "node": ">=10" 3973 | } 3974 | }, 3975 | "node_modules/yargs-unparser": { 3976 | "version": "2.0.0", 3977 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 3978 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 3979 | "dev": true, 3980 | "license": "MIT", 3981 | "dependencies": { 3982 | "camelcase": "^6.0.0", 3983 | "decamelize": "^4.0.0", 3984 | "flat": "^5.0.2", 3985 | "is-plain-obj": "^2.1.0" 3986 | }, 3987 | "engines": { 3988 | "node": ">=10" 3989 | } 3990 | }, 3991 | "node_modules/yargs/node_modules/ansi-regex": { 3992 | "version": "5.0.1", 3993 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3994 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3995 | "dev": true, 3996 | "license": "MIT", 3997 | "engines": { 3998 | "node": ">=8" 3999 | } 4000 | }, 4001 | "node_modules/yargs/node_modules/emoji-regex": { 4002 | "version": "8.0.0", 4003 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 4004 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 4005 | "dev": true, 4006 | "license": "MIT" 4007 | }, 4008 | "node_modules/yargs/node_modules/string-width": { 4009 | "version": "4.2.3", 4010 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4011 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4012 | "dev": true, 4013 | "license": "MIT", 4014 | "dependencies": { 4015 | "emoji-regex": "^8.0.0", 4016 | "is-fullwidth-code-point": "^3.0.0", 4017 | "strip-ansi": "^6.0.1" 4018 | }, 4019 | "engines": { 4020 | "node": ">=8" 4021 | } 4022 | }, 4023 | "node_modules/yargs/node_modules/strip-ansi": { 4024 | "version": "6.0.1", 4025 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4026 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4027 | "dev": true, 4028 | "license": "MIT", 4029 | "dependencies": { 4030 | "ansi-regex": "^5.0.1" 4031 | }, 4032 | "engines": { 4033 | "node": ">=8" 4034 | } 4035 | }, 4036 | "node_modules/yocto-queue": { 4037 | "version": "0.1.0", 4038 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 4039 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 4040 | "dev": true, 4041 | "license": "MIT", 4042 | "engines": { 4043 | "node": ">=10" 4044 | }, 4045 | "funding": { 4046 | "url": "https://github.com/sponsors/sindresorhus" 4047 | } 4048 | } 4049 | } 4050 | } 4051 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sort-lines", 3 | "displayName": "Sort lines", 4 | "description": "Sorts lines of text", 5 | "version": "1.12.0", 6 | "license": "MIT", 7 | "bugs": { 8 | "url": "https://github.com/Tyriar/vscode-sort-lines/issues" 9 | }, 10 | "type": "commonjs", 11 | "scripts": { 12 | "vscode:prepublish": "npm run compile", 13 | "compile": "tsc -p ./", 14 | "lint": "eslint ./src/*.ts", 15 | "watch": "tsc -watch -p ./", 16 | "pretest": "npm run compile", 17 | "test": "node ./out/test/runTest.js", 18 | "compile-web": "webpack", 19 | "watch-web": "webpack --watch", 20 | "package-web": "webpack --mode production --devtool hidden-source-map" 21 | }, 22 | "homepage": "https://github.com/Tyriar/vscode-sort-lines", 23 | "repository": { 24 | "type": "git", 25 | "url": "https://github.com/Tyriar/vscode-sort-lines" 26 | }, 27 | "publisher": "Tyriar", 28 | "engines": { 29 | "vscode": "^1.79.0" 30 | }, 31 | "categories": [ 32 | "Other" 33 | ], 34 | "activationEvents": [], 35 | "main": "./out/extension", 36 | "browser": "./dist/web/extension.js", 37 | "contributes": { 38 | "commands": [ 39 | { 40 | "command": "sortLines.sortLines", 41 | "title": "Sort lines (ascending, case sensitive)" 42 | }, 43 | { 44 | "command": "sortLines.sortLinesCaseInsensitive", 45 | "title": "Sort lines (ascending, case insensitive)" 46 | }, 47 | { 48 | "command": "sortLines.sortLinesCaseInsensitiveUnique", 49 | "title": "Sort lines (unique ascending, case insensitive)" 50 | }, 51 | { 52 | "command": "sortLines.sortLinesReverse", 53 | "title": "Sort lines (descending, case sensitive)" 54 | }, 55 | { 56 | "command": "sortLines.sortLinesLineLength", 57 | "title": "Sort lines (line length ascending)" 58 | }, 59 | { 60 | "command": "sortLines.sortLinesLineLengthReverse", 61 | "title": "Sort lines (line length descending)" 62 | }, 63 | { 64 | "command": "sortLines.sortLinesVariableLength", 65 | "title": "Sort lines (variable length ascending)" 66 | }, 67 | { 68 | "command": "sortLines.sortLinesVariableLengthReverse", 69 | "title": "Sort lines (variable length descending)" 70 | }, 71 | { 72 | "command": "sortLines.sortLinesNatural", 73 | "title": "Sort lines (natural)" 74 | }, 75 | { 76 | "command": "sortLines.sortLinesUnique", 77 | "title": "Sort lines (unique ascending, case sensitive)" 78 | }, 79 | { 80 | "command": "sortLines.removeDuplicateLines", 81 | "title": "Sort lines (remove duplicate lines)" 82 | }, 83 | { 84 | "command": "sortLines.keepOnlyDuplicateLines", 85 | "title": "Sort lines (keep only duplicated lines)" 86 | }, 87 | { 88 | "command": "sortLines.keepOnlyNotDuplicateLines", 89 | "title": "Sort lines (keep only not duplicated lines)" 90 | }, 91 | { 92 | "command": "sortLines.sortLinesShuffle", 93 | "title": "Sort lines (shuffle)" 94 | } 95 | ], 96 | "configuration": { 97 | "type": "object", 98 | "title": "Sort Lines", 99 | "properties": { 100 | "sortLines.filterBlankLines": { 101 | "type": "boolean", 102 | "default": false, 103 | "description": "Filter out blank (empty or whitespace-only) lines." 104 | }, 105 | "sortLines.ignoreUnselectedLastLine": { 106 | "type": "boolean", 107 | "default": false, 108 | "description": "Ignore unselected last line. Allows selection by line numbers." 109 | }, 110 | "sortLines.sortEntireFile": { 111 | "type": "boolean", 112 | "default": false, 113 | "description": "Sort entire file if no selection is active." 114 | } 115 | } 116 | }, 117 | "keybindings": [ 118 | { 119 | "command": "sortLines.sortLines", 120 | "key": "f9", 121 | "when": "editorTextFocus" 122 | } 123 | ], 124 | "menus": { 125 | "editor/context": [ 126 | { 127 | "command": "sortLines.sortLines", 128 | "when": "editorTextFocus && !editorReadonly", 129 | "group": "sortLines@1" 130 | }, 131 | { 132 | "submenu": "sortLines", 133 | "when": "editorTextFocus && !editorReadonly", 134 | "group": "sortLines@2" 135 | } 136 | ], 137 | "sortLines": [ 138 | { 139 | "command": "sortLines.sortLines", 140 | "group": "2_sortLines@1" 141 | }, 142 | { 143 | "command": "sortLines.sortLinesCaseInsensitive", 144 | "group": "2_sortLines@2" 145 | }, 146 | { 147 | "command": "sortLines.sortLinesCaseInsensitiveUnique", 148 | "group": "2_sortLines@3" 149 | }, 150 | { 151 | "command": "sortLines.sortLinesReverse", 152 | "group": "2_sortLines@4" 153 | }, 154 | { 155 | "command": "sortLines.sortLinesLineLength", 156 | "group": "2_sortLines@5" 157 | }, 158 | { 159 | "command": "sortLines.sortLinesLineLengthReverse", 160 | "group": "2_sortLines@6" 161 | }, 162 | { 163 | "command": "sortLines.sortLinesVariableLength", 164 | "group": "2_sortLines@7" 165 | }, 166 | { 167 | "command": "sortLines.sortLinesVariableLengthReverse", 168 | "group": "2_sortLines@8" 169 | }, 170 | { 171 | "command": "sortLines.sortLinesNatural", 172 | "group": "2_sortLines@9" 173 | }, 174 | { 175 | "command": "sortLines.sortLinesUnique", 176 | "group": "2_sortLines@10" 177 | }, 178 | { 179 | "command": "sortLines.removeDuplicateLines", 180 | "group": "2_sortLines@11" 181 | }, 182 | { 183 | "command": "sortLines.keepOnlyDuplicateLines", 184 | "group": "2_sortLines@12" 185 | }, 186 | { 187 | "command": "sortLines.keepOnlyNotDuplicateLines", 188 | "group": "2_sortLines@13" 189 | }, 190 | { 191 | "command": "sortLines.sortLinesShuffle", 192 | "group": "2_sortLines@14" 193 | } 194 | ] 195 | }, 196 | "submenus": [ 197 | { 198 | "id": "sortLines", 199 | "label": "Sort lines" 200 | } 201 | ] 202 | }, 203 | "devDependencies": { 204 | "@eslint/js": "^9.14.0", 205 | "@types/eslint__js": "^8.42.3", 206 | "@types/glob": "^8.1.0", 207 | "@types/mocha": "^10.0.9", 208 | "@types/node": "^20.14.8", 209 | "@types/vscode": "^1.95.0", 210 | "@types/webpack-env": "^1.18.5", 211 | "@vscode/test-electron": "^2.4.1", 212 | "eslint": "^9.14.0", 213 | "mocha": "^10.8.2", 214 | "ts-loader": "^9.5.1", 215 | "typescript-eslint": "^8.13.0", 216 | "typescript": "^5.6.3", 217 | "webpack-cli": "^5.1.4", 218 | "webpack": "^5.96.1" 219 | }, 220 | "icon": "images/icon.png" 221 | } 222 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import * as sortLines from './sort-lines'; 3 | 4 | export function activate(context: vscode.ExtensionContext): void { 5 | const commands = [ 6 | vscode.commands.registerCommand('sortLines.sortLines', sortLines.sortNormal), 7 | vscode.commands.registerCommand('sortLines.sortLinesReverse', sortLines.sortReverse), 8 | vscode.commands.registerCommand('sortLines.sortLinesCaseInsensitive', sortLines.sortCaseInsensitive), 9 | vscode.commands.registerCommand('sortLines.sortLinesCaseInsensitiveUnique', sortLines.sortCaseInsensitiveUnique), 10 | vscode.commands.registerCommand('sortLines.sortLinesLineLength', sortLines.sortLineLength), 11 | vscode.commands.registerCommand('sortLines.sortLinesLineLengthReverse', sortLines.sortLineLengthReverse), 12 | vscode.commands.registerCommand('sortLines.sortLinesVariableLength', sortLines.sortVariableLength), 13 | vscode.commands.registerCommand('sortLines.sortLinesVariableLengthReverse', sortLines.sortVariableLengthReverse), 14 | vscode.commands.registerCommand('sortLines.sortLinesNatural', sortLines.sortNatural), 15 | vscode.commands.registerCommand('sortLines.sortLinesUnique', sortLines.sortUnique), 16 | vscode.commands.registerCommand('sortLines.sortLinesShuffle', sortLines.sortShuffle), 17 | vscode.commands.registerCommand('sortLines.removeDuplicateLines', sortLines.removeDuplicateLines), 18 | vscode.commands.registerCommand('sortLines.keepOnlyDuplicateLines', sortLines.keepOnlyDuplicateLines), 19 | vscode.commands.registerCommand('sortLines.keepOnlyNotDuplicateLines', sortLines.keepOnlyNotDuplicateLines) 20 | ]; 21 | 22 | commands.forEach(command => context.subscriptions.push(command)); 23 | } 24 | -------------------------------------------------------------------------------- /src/sort-lines.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | type ArrayTransformer = (lines: string[]) => string[]; 4 | type SortingAlgorithm = (a: string, b: string) => number; 5 | 6 | function makeSorter(algorithm?: SortingAlgorithm): ArrayTransformer { 7 | return function(lines: string[]): string[] { 8 | return lines.sort(algorithm); 9 | }; 10 | } 11 | 12 | function sortActiveSelection(transformers: ArrayTransformer[]): Thenable | undefined { 13 | const textEditor = vscode.window.activeTextEditor; 14 | if (!textEditor) { 15 | return undefined; 16 | } 17 | const selection = textEditor.selection; 18 | 19 | if (selection.isEmpty && vscode.workspace.getConfiguration('sortLines').get('sortEntireFile') === true) { 20 | return sortLines(textEditor, 0, textEditor.document.lineCount - 1, transformers); 21 | } 22 | 23 | if (selection.isSingleLine) { 24 | return undefined; 25 | } 26 | 27 | let endLine = selection.end.line; 28 | 29 | // Ignore unselected last line 30 | if (selection.end.character === 0 && vscode.workspace.getConfiguration('sortLines').get('ignoreUnselectedLastLine') === true) { 31 | endLine -= 1; 32 | } 33 | return sortLines(textEditor, selection.start.line, endLine, transformers); 34 | } 35 | 36 | function sortLines(textEditor: vscode.TextEditor, startLine: number, endLine: number, transformers: ArrayTransformer[]): Thenable { 37 | let lines: string[] = []; 38 | for (let i = startLine; i <= endLine; i++) { 39 | lines.push(textEditor.document.lineAt(i).text); 40 | } 41 | 42 | // Remove blank lines in selection 43 | if (vscode.workspace.getConfiguration('sortLines').get('filterBlankLines') === true) { 44 | removeBlanks(lines); 45 | } 46 | 47 | lines = transformers.reduce((currentLines, transform) => transform(currentLines), lines); 48 | 49 | return textEditor.edit(editBuilder => { 50 | const range = new vscode.Range(startLine, 0, endLine, textEditor.document.lineAt(endLine).text.length); 51 | editBuilder.replace(range, lines.join('\n')); 52 | }); 53 | } 54 | 55 | function removeDuplicates(lines: string[]): string[] { 56 | return Array.from(new Set(lines)); 57 | } 58 | 59 | function keepOnlyDuplicates(lines: string[]): string[] { 60 | return Array.from(new Set(lines.filter((element, index, array) => array.indexOf(element) !== index))); 61 | } 62 | 63 | function keepOnlyNotDuplicates(lines: string[]): string[] { 64 | return Array.from(new Set(lines.filter((element, index, array) => (array.lastIndexOf(element) === array.indexOf(element))))); 65 | } 66 | 67 | function removeBlanks(lines: string[]): void { 68 | for (let i = 0; i < lines.length; ++i) { 69 | if (lines[i].trim() === '') { 70 | lines.splice(i, 1); 71 | i--; 72 | } 73 | } 74 | } 75 | 76 | function reverseCompare(a: string, b: string): number { 77 | if (a === b) { 78 | return 0; 79 | } 80 | return a < b ? 1 : -1; 81 | } 82 | 83 | function caseInsensitiveCompare(a: string, b: string): number { 84 | return a.localeCompare(b, undefined, {sensitivity: 'base'}); 85 | } 86 | 87 | function lineLengthCompare(a: string, b: string): number { 88 | // Use Array.from so that multi-char characters count as 1 each 89 | const aLength = Array.from(a).length; 90 | const bLength = Array.from(b).length; 91 | if (aLength === bLength) { 92 | return 0; 93 | } 94 | return aLength > bLength ? 1 : -1; 95 | } 96 | 97 | function lineLengthReverseCompare(a: string, b: string): number { 98 | return lineLengthCompare(a, b) * -1; 99 | } 100 | 101 | function variableLengthCompare(a: string, b: string): number { 102 | return lineLengthCompare(getVariableCharacters(a), getVariableCharacters(b)); 103 | } 104 | 105 | function variableLengthReverseCompare(a: string, b: string): number { 106 | return variableLengthCompare(a, b) * -1; 107 | } 108 | 109 | let intlCollator: Intl.Collator; 110 | function naturalCompare(a: string, b: string): number { 111 | if (!intlCollator) { 112 | intlCollator = new Intl.Collator(undefined, {numeric: true}); 113 | } 114 | return intlCollator.compare(a, b); 115 | } 116 | 117 | function getVariableCharacters(line: string): string { 118 | const match = line.match(/(.*)=/); 119 | if (!match) { 120 | return line; 121 | } 122 | const last = match.pop(); 123 | if (!last) { 124 | return line; 125 | } 126 | return last; 127 | } 128 | 129 | function shuffleSorter(lines: string[]): string[] { 130 | for (let i = lines.length - 1; i > 0; i--) { 131 | const rand = Math.floor(Math.random() * (i + 1)); 132 | [lines[i], lines[rand]] = [lines[rand], lines[i]]; 133 | } 134 | return lines; 135 | } 136 | 137 | const transformerSequences = { 138 | sortNormal: [makeSorter()], 139 | sortUnique: [makeSorter(), removeDuplicates], 140 | sortReverse: [makeSorter(reverseCompare)], 141 | sortCaseInsensitive: [makeSorter(caseInsensitiveCompare)], 142 | sortCaseInsensitiveUnique: [makeSorter(caseInsensitiveCompare), removeDuplicates], 143 | sortLineLength: [makeSorter(lineLengthCompare)], 144 | sortLineLengthReverse: [makeSorter(lineLengthReverseCompare)], 145 | sortVariableLength: [makeSorter(variableLengthCompare)], 146 | sortVariableLengthReverse: [makeSorter(variableLengthReverseCompare)], 147 | sortNatural: [makeSorter(naturalCompare)], 148 | sortShuffle: [shuffleSorter], 149 | removeDuplicateLines: [removeDuplicates], 150 | keepOnlyDuplicateLines: [keepOnlyDuplicates], 151 | keepOnlyNotDuplicateLines: [keepOnlyNotDuplicates] 152 | }; 153 | 154 | export const sortNormal = () => sortActiveSelection(transformerSequences.sortNormal); 155 | export const sortUnique = () => sortActiveSelection(transformerSequences.sortUnique); 156 | export const sortReverse = () => sortActiveSelection(transformerSequences.sortReverse); 157 | export const sortCaseInsensitive = () => sortActiveSelection(transformerSequences.sortCaseInsensitive); 158 | export const sortCaseInsensitiveUnique = () => sortActiveSelection(transformerSequences.sortCaseInsensitiveUnique); 159 | export const sortLineLength = () => sortActiveSelection(transformerSequences.sortLineLength); 160 | export const sortLineLengthReverse = () => sortActiveSelection(transformerSequences.sortLineLengthReverse); 161 | export const sortVariableLength = () => sortActiveSelection(transformerSequences.sortVariableLength); 162 | export const sortVariableLengthReverse = () => sortActiveSelection(transformerSequences.sortVariableLengthReverse); 163 | export const sortNatural = () => sortActiveSelection(transformerSequences.sortNatural); 164 | export const sortShuffle = () => sortActiveSelection(transformerSequences.sortShuffle); 165 | export const removeDuplicateLines = () => sortActiveSelection(transformerSequences.removeDuplicateLines); 166 | export const keepOnlyDuplicateLines = () => sortActiveSelection(transformerSequences.keepOnlyDuplicateLines); 167 | export const keepOnlyNotDuplicateLines = () => sortActiveSelection(transformerSequences.keepOnlyNotDuplicateLines); 168 | -------------------------------------------------------------------------------- /src/test/runTest.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | 3 | import { runTests } from '@vscode/test-electron'; 4 | 5 | async function main() { 6 | try { 7 | // The folder containing the Extension Manifest package.json 8 | // Passed to `--extensionDevelopmentPath` 9 | const extensionDevelopmentPath = path.resolve(__dirname, '../../'); 10 | 11 | // The path to test runner 12 | // Passed to --extensionTestsPath 13 | const extensionTestsPath = path.resolve(__dirname, './suite/index'); 14 | 15 | // Download VS Code, unzip it and run the integration test 16 | await runTests({ extensionDevelopmentPath, extensionTestsPath }); 17 | } catch (err) { 18 | console.error('Failed to run tests'); 19 | process.exit(1); 20 | } 21 | } 22 | 23 | main(); 24 | -------------------------------------------------------------------------------- /src/test/suite/index.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as Mocha from 'mocha'; 3 | import * as glob from 'glob'; 4 | 5 | export function run(): Promise { 6 | // Create the mocha test 7 | const mocha = new Mocha({ 8 | ui: 'tdd', 9 | color: true 10 | }); 11 | 12 | const testsRoot = path.resolve(__dirname, '..'); 13 | 14 | return new Promise((c, e) => { 15 | glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { 16 | if (err) { 17 | return e(err); 18 | } 19 | 20 | // Add files to the test suite 21 | files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); 22 | 23 | try { 24 | // Run the mocha test 25 | mocha.run(failures => { 26 | if (failures > 0) { 27 | e(new Error(`${failures} tests failed.`)); 28 | } else { 29 | c(); 30 | } 31 | }); 32 | } catch (err) { 33 | console.error(err); 34 | e(err); 35 | } 36 | }); 37 | }); 38 | } 39 | -------------------------------------------------------------------------------- /src/test/suite/sort-lines.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | import * as path from 'path'; 3 | import * as fs from 'fs'; 4 | import { commands, window, Range, Selection, Uri, TextDocument, TextEditor } from 'vscode'; 5 | 6 | function selectAllText(editor: TextEditor): void { 7 | const selection = new Selection(0, 0, editor.document.lineCount - 1, editor.document.lineAt(editor.document.lineCount - 1).text.length); 8 | editor.selection = selection; 9 | } 10 | 11 | function getAllText(document: TextDocument): string { 12 | return document.getText(new Range(0, 0, document.lineCount - 1, document.lineAt(document.lineCount - 1).text.length)); 13 | } 14 | 15 | const fixtureDir = path.join(__dirname, '../../../fixtures'); 16 | const fixtures = fs.readdirSync(fixtureDir).filter(v => v.search('_fixture$') !== -1).map(f => f.replace('_fixture', '')); 17 | const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../../package.json'), 'utf8')); 18 | const extCommands: string[] = packageJson.contributes.commands.map((c: { command: string } | undefined) => { 19 | if (!c) { 20 | throw new Error('Command without an id encountered'); 21 | } 22 | return c.command.replace('sortLines.', ''); 23 | }); 24 | const expectedExists: { [fixture: string]: { [command: string]: boolean } } = {}; 25 | 26 | Math.random = function(): 0.9 { return 0.9; }; 27 | 28 | suite('Sort Lines', () => { 29 | suite('All command fixtures exist', () => { 30 | fixtures.forEach(fixture => { 31 | test(fixture, () => { 32 | expectedExists[fixture] = {}; 33 | extCommands.forEach(extCommand => { 34 | const exists = fs.existsSync(path.join(fixtureDir, `${fixture}_expected/${extCommand}`)); 35 | expectedExists[fixture][extCommand] = exists; 36 | assert.ok(exists, `Expected result of fixture ${fixture} for command ${extCommand} does not exist. Create the expected result in fixtures/${fixture}_expected/${extCommand}.`); 37 | }); 38 | }); 39 | }); 40 | }); 41 | 42 | extCommands.forEach(extCommand => { 43 | suite(extCommand, () => { 44 | fixtures.forEach(fixture => { 45 | test(fixture, done => { 46 | if (!expectedExists[fixture][extCommand]) { 47 | done(new Error(`Could not find expected text for fixture ${fixture}`)); 48 | return; 49 | } 50 | commands.executeCommand('workbench.action.closeActiveEditor').then(() => { 51 | return window.showTextDocument(Uri.file(path.join(fixtureDir, `${fixture}_fixture`))).then(editor => { 52 | selectAllText(editor); 53 | commands.executeCommand(`sortLines.${extCommand}`).then(() => { 54 | const expectedPath = path.join(fixtureDir, `${fixture}_expected/${extCommand}`); 55 | const expected = fs.readFileSync(expectedPath, 'utf8'); 56 | const actual = getAllText(editor.document); 57 | if (actual !== expected) { 58 | done(Error(`Command output is not expected\n\nExpected:\n${expected}\n\nActual:\n${actual}`)); 59 | } else { 60 | done(); 61 | } 62 | }); 63 | }); 64 | }); 65 | }); 66 | }); 67 | }); 68 | }); 69 | }); 70 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es2018" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src", 11 | "noUnusedLocals": true, 12 | "strict": true 13 | }, 14 | "exclude": [ 15 | "node_modules", 16 | ".vscode-test" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const webpack = require('webpack'); 3 | 4 | /** @typedef {import('webpack').Configuration} WebpackConfig **/ 5 | /** @type WebpackConfig */ 6 | const webExtensionConfig = { 7 | mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') 8 | target: 'webworker', // extensions run in a webworker context 9 | entry: { 10 | extension: './src/extension.ts', // source of the web extension main file 11 | }, 12 | output: { 13 | filename: '[name].js', 14 | path: path.join(__dirname, './dist/web'), 15 | libraryTarget: 'commonjs', 16 | devtoolModuleFilenameTemplate: '../../[resource-path]' 17 | }, 18 | resolve: { 19 | mainFields: ['browser', 'module', 'main'], // look for `browser` entry point in imported node modules 20 | extensions: ['.ts', '.js'], // support ts-files and js-files 21 | alias: { 22 | // provides alternate implementation for node module and source files 23 | }, 24 | fallback: { 25 | // Webpack 5 no longer polyfills Node.js core modules automatically. 26 | // see https://webpack.js.org/configuration/resolve/#resolvefallback 27 | // for the list of Node.js core module polyfills. 28 | assert: require.resolve('assert') 29 | } 30 | }, 31 | module: { 32 | rules: [ 33 | { 34 | test: /\.ts$/, 35 | exclude: /node_modules/, 36 | use: [ 37 | { 38 | loader: 'ts-loader' 39 | } 40 | ] 41 | } 42 | ] 43 | }, 44 | plugins: [ 45 | new webpack.ProvidePlugin({ 46 | process: 'process/browser' // provide a shim for the global `process` variable 47 | }) 48 | ], 49 | externals: { 50 | vscode: 'commonjs vscode' // ignored because it doesn't exist 51 | }, 52 | performance: { 53 | hints: false 54 | }, 55 | devtool: 'nosources-source-map' // create a source map that points to the original source file 56 | }; 57 | module.exports = [webExtensionConfig]; 58 | --------------------------------------------------------------------------------