├── .eslintrc.json ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── package-lock.json ├── package.json ├── snippets └── php.json ├── src ├── extension.ts └── test │ ├── runTest.ts │ └── suite │ ├── extension.test.ts │ └── index.ts ├── tsconfig.json └── vsc-extension-quickstart.md /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "parserOptions": { 5 | "ecmaVersion": 6, 6 | "sourceType": "module" 7 | }, 8 | "plugins": [ 9 | "@typescript-eslint" 10 | ], 11 | "rules": { 12 | "@typescript-eslint/naming-convention": "warn", 13 | "@typescript-eslint/semi": "warn", 14 | "curly": "warn", 15 | "eqeqeq": "warn", 16 | "no-throw-literal": "warn", 17 | "semi": "off" 18 | }, 19 | "ignorePatterns": [ 20 | "out", 21 | "dist", 22 | "**/*.d.ts" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | dist 3 | node_modules 4 | .vscode-test/ 5 | *.vsix 6 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "dbaeumer.vscode-eslint" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.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": "Run Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "args": [ 13 | "--extensionDevelopmentPath=${workspaceFolder}" 14 | ], 15 | "outFiles": [ 16 | "${workspaceFolder}/out/**/*.js" 17 | ], 18 | "preLaunchTask": "${defaultBuildTask}" 19 | }, 20 | { 21 | "name": "Extension Tests", 22 | "type": "extensionHost", 23 | "request": "launch", 24 | "args": [ 25 | "--extensionDevelopmentPath=${workspaceFolder}", 26 | "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" 27 | ], 28 | "outFiles": [ 29 | "${workspaceFolder}/out/test/**/*.js" 30 | ], 31 | "preLaunchTask": "${defaultBuildTask}" 32 | } 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | }, 9 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 10 | "typescript.tsc.autoDetect": "off" 11 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": { 15 | "kind": "build", 16 | "isDefault": true 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | src/** 4 | .gitignore 5 | .yarnrc 6 | vsc-extension-quickstart.md 7 | **/tsconfig.json 8 | **/.eslintrc.json 9 | **/*.map 10 | **/*.ts 11 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to the "perfex-dev-tools" extension will be documented in this file. 4 | 5 | Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. 6 | 7 | ## [Unreleased] 8 | 9 | - Initial release -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Abraham José Cordero Pérez 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 | # perfex-dev-tools 2 | 3 | ## Description 4 | Perfex Dev Tools is a VSCode extension designed to facilitate the development of modules and themes for Perfex CRM. It provides scaffolding tools and useful code snippets to streamline the development process. 5 | 6 | ## Features 7 | - **Module Creation**: Create new modules with a predefined structure using the command palette. 8 | - **Code Snippets**: Access a variety of snippets for common tasks in Perfex CRM module development. 9 | 10 | ## Installation 11 | 1. Open VSCode. 12 | 2. Navigate to the Extensions view by clicking the Extensions icon in the Activity Bar or pressing `Ctrl+Shift+X`. 13 | 3. Search for "Perfex Dev Tools". 14 | 4. Click Install. 15 | 16 | ## Usage 17 | 18 | ### Creating a New Module 19 | 1. Open the Command Palette (`Ctrl+Shift+P`). 20 | 2. Type `PX make module` and press Enter. 21 | 3. Enter the module name when prompted. 22 | 4. The extension will generate a new module with the necessary files and structure. 23 | 24 | ### Available Snippets 25 | Perfex Dev Tools includes several PHP snippets to assist in module development. Below are some examples: 26 | 27 | #### Module Activation Hook 28 | ```php 29 | /** 30 | * Register activation module hook 31 | */ 32 | register_activation_hook(MODULE_NAME, 'module_activation_hook'); 33 | function module_activation_hook() 34 | { 35 | require_once(__DIR__ + '/install.php'); 36 | } 37 | ``` 38 | Trigger: `pxModuleActivationHook` 39 | 40 | #### Register Language Files 41 | ```php 42 | register_language_files(MODULE_NAME, [MODULE_NAME]); 43 | ``` 44 | Trigger: `pxRegisterLanguageFiles` 45 | 46 | #### Init Menu Items 47 | ```php 48 | hooks()->add_action('admin_init', 'module_init_menu_items'); 49 | function module_init_menu_items() 50 | { 51 | if (is_admin()) { 52 | $CI = &get_instance(); 53 | $CI->app_menu->add_sidebar_menu_item('module-options', [ 54 | 'collapse' => true, 55 | 'name' => _l('module'), 56 | 'position' => 40, 57 | 'icon' => 'fa fa-cogs', 58 | ]); 59 | $CI->app_menu->add_sidebar_children_item('module-options', [ 60 | 'slug' => 'module-guide-options', 61 | 'name' => _l('module_guide'), 62 | 'href' => 'example.com', 63 | 'position' => 10, 64 | ]); 65 | } 66 | } 67 | ``` 68 | Trigger: `pxInitMenuItems` 69 | 70 | #### Add Settings Tab 71 | ```php 72 | hooks()->add_action('admin_init', 'module_add_settings_tab'); 73 | function module_add_settings_tab() 74 | { 75 | $CI = &get_instance(); 76 | $CI->app_tabs->add_settings_tab('module_settings', [ 77 | 'name' => _l('module_settings'), 78 | 'view' => MODULE_NAME + '/module_settings_view', 79 | 'position' => 101, 80 | ]); 81 | } 82 | ``` 83 | Trigger: `pxAddSettingsTab` 84 | 85 | #### Register Staff Capabilities 86 | ```php 87 | hooks()->add_action('admin_init', 'module_register_staff_capabilities'); 88 | function module_register_staff_capabilities() 89 | { 90 | $capabilities = []; 91 | $capabilities['capabilities'] = [ 92 | 'view' => _l('permission_view') + '(' + _l('permission_global') + ')', 93 | 'create' => _l('permission_create'), 94 | 'edit' => _l('permission_edit'), 95 | 'delete' => _l('permission_delete'), 96 | ]; 97 | register_staff_capabilities('module_capabilities', $capabilities, _l('module_capabilities')); 98 | } 99 | ``` 100 | Trigger: `pxRegisterStaffCapabilities` 101 | 102 | #### Clients Init Hook 103 | ```php 104 | hooks()->add_action('clients_init', 'module_clients_init'); 105 | 106 | function module_clients_init() { 107 | $button = get_option('module_button_option'); 108 | if ($button != '' && is_client_logged_in()) { 109 | add_theme_menu_item('module-client', [ 110 | 'name' => _l($button), 111 | 'href' => site_url('#'), 112 | 'position' => 99, 113 | ]); 114 | } 115 | } 116 | ``` 117 | Trigger: `pxClientsInitHook` 118 | 119 | ## Configuration 120 | ```json 121 | { 122 | "name": "perfex-dev-tools", 123 | "displayName": "perfex-dev-tools", 124 | "description": "Extension que facilite el desarrollo de módulos y temas, que tenga scaffolding y snippets", 125 | "version": "0.0.1", 126 | "engines": { 127 | "vscode": "^1.91.0" 128 | }, 129 | "categories": [ 130 | "Other" 131 | ], 132 | "activationEvents": [ 133 | "onCommand:perfex-dev-tools.createModule" 134 | ], 135 | "main": "./out/extension.js", 136 | "contributes": { 137 | "commands": [ 138 | { 139 | "command": "perfex-dev-tools.createModule", 140 | "title": "PX make module" 141 | } 142 | ], 143 | "snippets": [ 144 | { 145 | "language": "php", 146 | "path": "./snippets/php.json" 147 | } 148 | ] 149 | }, 150 | "scripts": { 151 | "vscode:prepublish": "npm run compile", 152 | "compile": "tsc -p ./", 153 | "watch": "tsc -watch -p ./", 154 | "pretest": "npm run compile && npm run lint", 155 | "lint": "eslint src --ext ts", 156 | "test": "node ./out/test/runTest.js" 157 | }, 158 | "devDependencies": { 159 | "@types/vscode": "^1.91.0", 160 | "@types/glob": "^8.0.0", 161 | "@types/mocha": "^10.0.0", 162 | "@types/node": "16.x", 163 | "@typescript-eslint/eslint-plugin": "^5.42.0", 164 | "@typescript-eslint/parser": "^5.42.0", 165 | "eslint": "^8.26.0", 166 | "glob": "^8.0.3", 167 | "mocha": "^10.1.0", 168 | "typescript": "^4.8.4", 169 | "@vscode/test-electron": "^2.2.0" 170 | } 171 | } 172 | ``` 173 | 174 | ## Contribution 175 | If you find any issues or have suggestions for improvements, please open an issue or a pull request on the [GitHub repository](https://github.com/your-repo-link). 176 | 177 | ## License 178 | This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. 179 | 180 | ## Acknowledgments 181 | Special thanks to the Perfex CRM community for their continuous support and feedback. 182 | 183 | --- 184 | 185 | Enjoy coding with Perfex Dev Tools! If you have any questions or need further assistance, feel free to reach out. -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "perfex-dev-tools", 3 | "version": "0.0.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "perfex-dev-tools", 9 | "version": "0.0.1", 10 | "devDependencies": { 11 | "@types/glob": "^8.0.0", 12 | "@types/mocha": "^10.0.0", 13 | "@types/node": "16.x", 14 | "@types/vscode": "^1.91.0", 15 | "@typescript-eslint/eslint-plugin": "^5.42.0", 16 | "@typescript-eslint/parser": "^5.42.0", 17 | "@vscode/test-electron": "^2.2.0", 18 | "eslint": "^8.26.0", 19 | "glob": "^8.0.3", 20 | "mocha": "^10.1.0", 21 | "typescript": "^4.8.4" 22 | }, 23 | "engines": { 24 | "vscode": "^1.91.0" 25 | } 26 | }, 27 | "node_modules/@eslint-community/eslint-utils": { 28 | "version": "4.4.0", 29 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 30 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 31 | "dev": true, 32 | "dependencies": { 33 | "eslint-visitor-keys": "^3.3.0" 34 | }, 35 | "engines": { 36 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 37 | }, 38 | "peerDependencies": { 39 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 40 | } 41 | }, 42 | "node_modules/@eslint-community/regexpp": { 43 | "version": "4.11.0", 44 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", 45 | "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", 46 | "dev": true, 47 | "engines": { 48 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 49 | } 50 | }, 51 | "node_modules/@eslint/eslintrc": { 52 | "version": "2.1.4", 53 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 54 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 55 | "dev": true, 56 | "dependencies": { 57 | "ajv": "^6.12.4", 58 | "debug": "^4.3.2", 59 | "espree": "^9.6.0", 60 | "globals": "^13.19.0", 61 | "ignore": "^5.2.0", 62 | "import-fresh": "^3.2.1", 63 | "js-yaml": "^4.1.0", 64 | "minimatch": "^3.1.2", 65 | "strip-json-comments": "^3.1.1" 66 | }, 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/js": { 75 | "version": "8.57.0", 76 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", 77 | "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", 78 | "dev": true, 79 | "engines": { 80 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 81 | } 82 | }, 83 | "node_modules/@humanwhocodes/config-array": { 84 | "version": "0.11.14", 85 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", 86 | "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", 87 | "deprecated": "Use @eslint/config-array instead", 88 | "dev": true, 89 | "dependencies": { 90 | "@humanwhocodes/object-schema": "^2.0.2", 91 | "debug": "^4.3.1", 92 | "minimatch": "^3.0.5" 93 | }, 94 | "engines": { 95 | "node": ">=10.10.0" 96 | } 97 | }, 98 | "node_modules/@humanwhocodes/module-importer": { 99 | "version": "1.0.1", 100 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 101 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 102 | "dev": true, 103 | "engines": { 104 | "node": ">=12.22" 105 | }, 106 | "funding": { 107 | "type": "github", 108 | "url": "https://github.com/sponsors/nzakas" 109 | } 110 | }, 111 | "node_modules/@humanwhocodes/object-schema": { 112 | "version": "2.0.3", 113 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", 114 | "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", 115 | "deprecated": "Use @eslint/object-schema instead", 116 | "dev": true 117 | }, 118 | "node_modules/@nodelib/fs.scandir": { 119 | "version": "2.1.5", 120 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 121 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 122 | "dev": true, 123 | "dependencies": { 124 | "@nodelib/fs.stat": "2.0.5", 125 | "run-parallel": "^1.1.9" 126 | }, 127 | "engines": { 128 | "node": ">= 8" 129 | } 130 | }, 131 | "node_modules/@nodelib/fs.stat": { 132 | "version": "2.0.5", 133 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 134 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 135 | "dev": true, 136 | "engines": { 137 | "node": ">= 8" 138 | } 139 | }, 140 | "node_modules/@nodelib/fs.walk": { 141 | "version": "1.2.8", 142 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 143 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 144 | "dev": true, 145 | "dependencies": { 146 | "@nodelib/fs.scandir": "2.1.5", 147 | "fastq": "^1.6.0" 148 | }, 149 | "engines": { 150 | "node": ">= 8" 151 | } 152 | }, 153 | "node_modules/@types/glob": { 154 | "version": "8.1.0", 155 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", 156 | "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", 157 | "dev": true, 158 | "dependencies": { 159 | "@types/minimatch": "^5.1.2", 160 | "@types/node": "*" 161 | } 162 | }, 163 | "node_modules/@types/json-schema": { 164 | "version": "7.0.15", 165 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 166 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 167 | "dev": true 168 | }, 169 | "node_modules/@types/minimatch": { 170 | "version": "5.1.2", 171 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", 172 | "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", 173 | "dev": true 174 | }, 175 | "node_modules/@types/mocha": { 176 | "version": "10.0.7", 177 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", 178 | "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", 179 | "dev": true 180 | }, 181 | "node_modules/@types/node": { 182 | "version": "16.18.101", 183 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.101.tgz", 184 | "integrity": "sha512-AAsx9Rgz2IzG8KJ6tXd6ndNkVcu+GYB6U/SnFAaokSPNx2N7dcIIfnighYUNumvj6YS2q39Dejz5tT0NCV7CWA==", 185 | "dev": true 186 | }, 187 | "node_modules/@types/semver": { 188 | "version": "7.5.8", 189 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", 190 | "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", 191 | "dev": true 192 | }, 193 | "node_modules/@types/vscode": { 194 | "version": "1.91.0", 195 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.91.0.tgz", 196 | "integrity": "sha512-PgPr+bUODjG3y+ozWUCyzttqR9EHny9sPAfJagddQjDwdtf66y2sDKJMnFZRuzBA2YtBGASqJGPil8VDUPvO6A==", 197 | "dev": true 198 | }, 199 | "node_modules/@typescript-eslint/eslint-plugin": { 200 | "version": "5.62.0", 201 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", 202 | "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", 203 | "dev": true, 204 | "dependencies": { 205 | "@eslint-community/regexpp": "^4.4.0", 206 | "@typescript-eslint/scope-manager": "5.62.0", 207 | "@typescript-eslint/type-utils": "5.62.0", 208 | "@typescript-eslint/utils": "5.62.0", 209 | "debug": "^4.3.4", 210 | "graphemer": "^1.4.0", 211 | "ignore": "^5.2.0", 212 | "natural-compare-lite": "^1.4.0", 213 | "semver": "^7.3.7", 214 | "tsutils": "^3.21.0" 215 | }, 216 | "engines": { 217 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 218 | }, 219 | "funding": { 220 | "type": "opencollective", 221 | "url": "https://opencollective.com/typescript-eslint" 222 | }, 223 | "peerDependencies": { 224 | "@typescript-eslint/parser": "^5.0.0", 225 | "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 226 | }, 227 | "peerDependenciesMeta": { 228 | "typescript": { 229 | "optional": true 230 | } 231 | } 232 | }, 233 | "node_modules/@typescript-eslint/parser": { 234 | "version": "5.62.0", 235 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", 236 | "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", 237 | "dev": true, 238 | "dependencies": { 239 | "@typescript-eslint/scope-manager": "5.62.0", 240 | "@typescript-eslint/types": "5.62.0", 241 | "@typescript-eslint/typescript-estree": "5.62.0", 242 | "debug": "^4.3.4" 243 | }, 244 | "engines": { 245 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 246 | }, 247 | "funding": { 248 | "type": "opencollective", 249 | "url": "https://opencollective.com/typescript-eslint" 250 | }, 251 | "peerDependencies": { 252 | "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 253 | }, 254 | "peerDependenciesMeta": { 255 | "typescript": { 256 | "optional": true 257 | } 258 | } 259 | }, 260 | "node_modules/@typescript-eslint/scope-manager": { 261 | "version": "5.62.0", 262 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", 263 | "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", 264 | "dev": true, 265 | "dependencies": { 266 | "@typescript-eslint/types": "5.62.0", 267 | "@typescript-eslint/visitor-keys": "5.62.0" 268 | }, 269 | "engines": { 270 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 271 | }, 272 | "funding": { 273 | "type": "opencollective", 274 | "url": "https://opencollective.com/typescript-eslint" 275 | } 276 | }, 277 | "node_modules/@typescript-eslint/type-utils": { 278 | "version": "5.62.0", 279 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", 280 | "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", 281 | "dev": true, 282 | "dependencies": { 283 | "@typescript-eslint/typescript-estree": "5.62.0", 284 | "@typescript-eslint/utils": "5.62.0", 285 | "debug": "^4.3.4", 286 | "tsutils": "^3.21.0" 287 | }, 288 | "engines": { 289 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 290 | }, 291 | "funding": { 292 | "type": "opencollective", 293 | "url": "https://opencollective.com/typescript-eslint" 294 | }, 295 | "peerDependencies": { 296 | "eslint": "*" 297 | }, 298 | "peerDependenciesMeta": { 299 | "typescript": { 300 | "optional": true 301 | } 302 | } 303 | }, 304 | "node_modules/@typescript-eslint/types": { 305 | "version": "5.62.0", 306 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", 307 | "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", 308 | "dev": true, 309 | "engines": { 310 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 311 | }, 312 | "funding": { 313 | "type": "opencollective", 314 | "url": "https://opencollective.com/typescript-eslint" 315 | } 316 | }, 317 | "node_modules/@typescript-eslint/typescript-estree": { 318 | "version": "5.62.0", 319 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", 320 | "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", 321 | "dev": true, 322 | "dependencies": { 323 | "@typescript-eslint/types": "5.62.0", 324 | "@typescript-eslint/visitor-keys": "5.62.0", 325 | "debug": "^4.3.4", 326 | "globby": "^11.1.0", 327 | "is-glob": "^4.0.3", 328 | "semver": "^7.3.7", 329 | "tsutils": "^3.21.0" 330 | }, 331 | "engines": { 332 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 333 | }, 334 | "funding": { 335 | "type": "opencollective", 336 | "url": "https://opencollective.com/typescript-eslint" 337 | }, 338 | "peerDependenciesMeta": { 339 | "typescript": { 340 | "optional": true 341 | } 342 | } 343 | }, 344 | "node_modules/@typescript-eslint/utils": { 345 | "version": "5.62.0", 346 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", 347 | "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", 348 | "dev": true, 349 | "dependencies": { 350 | "@eslint-community/eslint-utils": "^4.2.0", 351 | "@types/json-schema": "^7.0.9", 352 | "@types/semver": "^7.3.12", 353 | "@typescript-eslint/scope-manager": "5.62.0", 354 | "@typescript-eslint/types": "5.62.0", 355 | "@typescript-eslint/typescript-estree": "5.62.0", 356 | "eslint-scope": "^5.1.1", 357 | "semver": "^7.3.7" 358 | }, 359 | "engines": { 360 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 361 | }, 362 | "funding": { 363 | "type": "opencollective", 364 | "url": "https://opencollective.com/typescript-eslint" 365 | }, 366 | "peerDependencies": { 367 | "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 368 | } 369 | }, 370 | "node_modules/@typescript-eslint/visitor-keys": { 371 | "version": "5.62.0", 372 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", 373 | "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", 374 | "dev": true, 375 | "dependencies": { 376 | "@typescript-eslint/types": "5.62.0", 377 | "eslint-visitor-keys": "^3.3.0" 378 | }, 379 | "engines": { 380 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 381 | }, 382 | "funding": { 383 | "type": "opencollective", 384 | "url": "https://opencollective.com/typescript-eslint" 385 | } 386 | }, 387 | "node_modules/@ungap/structured-clone": { 388 | "version": "1.2.0", 389 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 390 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 391 | "dev": true 392 | }, 393 | "node_modules/@vscode/test-electron": { 394 | "version": "2.4.1", 395 | "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.4.1.tgz", 396 | "integrity": "sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==", 397 | "dev": true, 398 | "dependencies": { 399 | "http-proxy-agent": "^7.0.2", 400 | "https-proxy-agent": "^7.0.5", 401 | "jszip": "^3.10.1", 402 | "ora": "^7.0.1", 403 | "semver": "^7.6.2" 404 | }, 405 | "engines": { 406 | "node": ">=16" 407 | } 408 | }, 409 | "node_modules/acorn": { 410 | "version": "8.12.1", 411 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", 412 | "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", 413 | "dev": true, 414 | "bin": { 415 | "acorn": "bin/acorn" 416 | }, 417 | "engines": { 418 | "node": ">=0.4.0" 419 | } 420 | }, 421 | "node_modules/acorn-jsx": { 422 | "version": "5.3.2", 423 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 424 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 425 | "dev": true, 426 | "peerDependencies": { 427 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 428 | } 429 | }, 430 | "node_modules/agent-base": { 431 | "version": "7.1.1", 432 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", 433 | "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", 434 | "dev": true, 435 | "dependencies": { 436 | "debug": "^4.3.4" 437 | }, 438 | "engines": { 439 | "node": ">= 14" 440 | } 441 | }, 442 | "node_modules/ajv": { 443 | "version": "6.12.6", 444 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 445 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 446 | "dev": true, 447 | "dependencies": { 448 | "fast-deep-equal": "^3.1.1", 449 | "fast-json-stable-stringify": "^2.0.0", 450 | "json-schema-traverse": "^0.4.1", 451 | "uri-js": "^4.2.2" 452 | }, 453 | "funding": { 454 | "type": "github", 455 | "url": "https://github.com/sponsors/epoberezkin" 456 | } 457 | }, 458 | "node_modules/ansi-colors": { 459 | "version": "4.1.3", 460 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 461 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 462 | "dev": true, 463 | "engines": { 464 | "node": ">=6" 465 | } 466 | }, 467 | "node_modules/ansi-regex": { 468 | "version": "5.0.1", 469 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 470 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 471 | "dev": true, 472 | "engines": { 473 | "node": ">=8" 474 | } 475 | }, 476 | "node_modules/ansi-styles": { 477 | "version": "4.3.0", 478 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 479 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 480 | "dev": true, 481 | "dependencies": { 482 | "color-convert": "^2.0.1" 483 | }, 484 | "engines": { 485 | "node": ">=8" 486 | }, 487 | "funding": { 488 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 489 | } 490 | }, 491 | "node_modules/anymatch": { 492 | "version": "3.1.3", 493 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 494 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 495 | "dev": true, 496 | "dependencies": { 497 | "normalize-path": "^3.0.0", 498 | "picomatch": "^2.0.4" 499 | }, 500 | "engines": { 501 | "node": ">= 8" 502 | } 503 | }, 504 | "node_modules/argparse": { 505 | "version": "2.0.1", 506 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 507 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 508 | "dev": true 509 | }, 510 | "node_modules/array-union": { 511 | "version": "2.1.0", 512 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 513 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 514 | "dev": true, 515 | "engines": { 516 | "node": ">=8" 517 | } 518 | }, 519 | "node_modules/balanced-match": { 520 | "version": "1.0.2", 521 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 522 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 523 | "dev": true 524 | }, 525 | "node_modules/base64-js": { 526 | "version": "1.5.1", 527 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 528 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 529 | "dev": true, 530 | "funding": [ 531 | { 532 | "type": "github", 533 | "url": "https://github.com/sponsors/feross" 534 | }, 535 | { 536 | "type": "patreon", 537 | "url": "https://www.patreon.com/feross" 538 | }, 539 | { 540 | "type": "consulting", 541 | "url": "https://feross.org/support" 542 | } 543 | ] 544 | }, 545 | "node_modules/binary-extensions": { 546 | "version": "2.3.0", 547 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 548 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 549 | "dev": true, 550 | "engines": { 551 | "node": ">=8" 552 | }, 553 | "funding": { 554 | "url": "https://github.com/sponsors/sindresorhus" 555 | } 556 | }, 557 | "node_modules/bl": { 558 | "version": "5.1.0", 559 | "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", 560 | "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", 561 | "dev": true, 562 | "dependencies": { 563 | "buffer": "^6.0.3", 564 | "inherits": "^2.0.4", 565 | "readable-stream": "^3.4.0" 566 | } 567 | }, 568 | "node_modules/bl/node_modules/readable-stream": { 569 | "version": "3.6.2", 570 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 571 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 572 | "dev": true, 573 | "dependencies": { 574 | "inherits": "^2.0.3", 575 | "string_decoder": "^1.1.1", 576 | "util-deprecate": "^1.0.1" 577 | }, 578 | "engines": { 579 | "node": ">= 6" 580 | } 581 | }, 582 | "node_modules/brace-expansion": { 583 | "version": "1.1.11", 584 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 585 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 586 | "dev": true, 587 | "dependencies": { 588 | "balanced-match": "^1.0.0", 589 | "concat-map": "0.0.1" 590 | } 591 | }, 592 | "node_modules/braces": { 593 | "version": "3.0.3", 594 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 595 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 596 | "dev": true, 597 | "dependencies": { 598 | "fill-range": "^7.1.1" 599 | }, 600 | "engines": { 601 | "node": ">=8" 602 | } 603 | }, 604 | "node_modules/browser-stdout": { 605 | "version": "1.3.1", 606 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 607 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 608 | "dev": true 609 | }, 610 | "node_modules/buffer": { 611 | "version": "6.0.3", 612 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 613 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 614 | "dev": true, 615 | "funding": [ 616 | { 617 | "type": "github", 618 | "url": "https://github.com/sponsors/feross" 619 | }, 620 | { 621 | "type": "patreon", 622 | "url": "https://www.patreon.com/feross" 623 | }, 624 | { 625 | "type": "consulting", 626 | "url": "https://feross.org/support" 627 | } 628 | ], 629 | "dependencies": { 630 | "base64-js": "^1.3.1", 631 | "ieee754": "^1.2.1" 632 | } 633 | }, 634 | "node_modules/callsites": { 635 | "version": "3.1.0", 636 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 637 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 638 | "dev": true, 639 | "engines": { 640 | "node": ">=6" 641 | } 642 | }, 643 | "node_modules/camelcase": { 644 | "version": "6.3.0", 645 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 646 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 647 | "dev": true, 648 | "engines": { 649 | "node": ">=10" 650 | }, 651 | "funding": { 652 | "url": "https://github.com/sponsors/sindresorhus" 653 | } 654 | }, 655 | "node_modules/chalk": { 656 | "version": "4.1.2", 657 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 658 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 659 | "dev": true, 660 | "dependencies": { 661 | "ansi-styles": "^4.1.0", 662 | "supports-color": "^7.1.0" 663 | }, 664 | "engines": { 665 | "node": ">=10" 666 | }, 667 | "funding": { 668 | "url": "https://github.com/chalk/chalk?sponsor=1" 669 | } 670 | }, 671 | "node_modules/chokidar": { 672 | "version": "3.6.0", 673 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 674 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 675 | "dev": true, 676 | "dependencies": { 677 | "anymatch": "~3.1.2", 678 | "braces": "~3.0.2", 679 | "glob-parent": "~5.1.2", 680 | "is-binary-path": "~2.1.0", 681 | "is-glob": "~4.0.1", 682 | "normalize-path": "~3.0.0", 683 | "readdirp": "~3.6.0" 684 | }, 685 | "engines": { 686 | "node": ">= 8.10.0" 687 | }, 688 | "funding": { 689 | "url": "https://paulmillr.com/funding/" 690 | }, 691 | "optionalDependencies": { 692 | "fsevents": "~2.3.2" 693 | } 694 | }, 695 | "node_modules/chokidar/node_modules/glob-parent": { 696 | "version": "5.1.2", 697 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 698 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 699 | "dev": true, 700 | "dependencies": { 701 | "is-glob": "^4.0.1" 702 | }, 703 | "engines": { 704 | "node": ">= 6" 705 | } 706 | }, 707 | "node_modules/cli-cursor": { 708 | "version": "4.0.0", 709 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", 710 | "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", 711 | "dev": true, 712 | "dependencies": { 713 | "restore-cursor": "^4.0.0" 714 | }, 715 | "engines": { 716 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 717 | }, 718 | "funding": { 719 | "url": "https://github.com/sponsors/sindresorhus" 720 | } 721 | }, 722 | "node_modules/cli-spinners": { 723 | "version": "2.9.2", 724 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", 725 | "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", 726 | "dev": true, 727 | "engines": { 728 | "node": ">=6" 729 | }, 730 | "funding": { 731 | "url": "https://github.com/sponsors/sindresorhus" 732 | } 733 | }, 734 | "node_modules/cliui": { 735 | "version": "7.0.4", 736 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 737 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 738 | "dev": true, 739 | "dependencies": { 740 | "string-width": "^4.2.0", 741 | "strip-ansi": "^6.0.0", 742 | "wrap-ansi": "^7.0.0" 743 | } 744 | }, 745 | "node_modules/cliui/node_modules/emoji-regex": { 746 | "version": "8.0.0", 747 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 748 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 749 | "dev": true 750 | }, 751 | "node_modules/cliui/node_modules/string-width": { 752 | "version": "4.2.3", 753 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 754 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 755 | "dev": true, 756 | "dependencies": { 757 | "emoji-regex": "^8.0.0", 758 | "is-fullwidth-code-point": "^3.0.0", 759 | "strip-ansi": "^6.0.1" 760 | }, 761 | "engines": { 762 | "node": ">=8" 763 | } 764 | }, 765 | "node_modules/color-convert": { 766 | "version": "2.0.1", 767 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 768 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 769 | "dev": true, 770 | "dependencies": { 771 | "color-name": "~1.1.4" 772 | }, 773 | "engines": { 774 | "node": ">=7.0.0" 775 | } 776 | }, 777 | "node_modules/color-name": { 778 | "version": "1.1.4", 779 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 780 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 781 | "dev": true 782 | }, 783 | "node_modules/concat-map": { 784 | "version": "0.0.1", 785 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 786 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 787 | "dev": true 788 | }, 789 | "node_modules/core-util-is": { 790 | "version": "1.0.3", 791 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 792 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 793 | "dev": true 794 | }, 795 | "node_modules/cross-spawn": { 796 | "version": "7.0.3", 797 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 798 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 799 | "dev": true, 800 | "dependencies": { 801 | "path-key": "^3.1.0", 802 | "shebang-command": "^2.0.0", 803 | "which": "^2.0.1" 804 | }, 805 | "engines": { 806 | "node": ">= 8" 807 | } 808 | }, 809 | "node_modules/debug": { 810 | "version": "4.3.5", 811 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", 812 | "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", 813 | "dev": true, 814 | "dependencies": { 815 | "ms": "2.1.2" 816 | }, 817 | "engines": { 818 | "node": ">=6.0" 819 | }, 820 | "peerDependenciesMeta": { 821 | "supports-color": { 822 | "optional": true 823 | } 824 | } 825 | }, 826 | "node_modules/decamelize": { 827 | "version": "4.0.0", 828 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 829 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 830 | "dev": true, 831 | "engines": { 832 | "node": ">=10" 833 | }, 834 | "funding": { 835 | "url": "https://github.com/sponsors/sindresorhus" 836 | } 837 | }, 838 | "node_modules/deep-is": { 839 | "version": "0.1.4", 840 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 841 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 842 | "dev": true 843 | }, 844 | "node_modules/diff": { 845 | "version": "5.2.0", 846 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 847 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 848 | "dev": true, 849 | "engines": { 850 | "node": ">=0.3.1" 851 | } 852 | }, 853 | "node_modules/dir-glob": { 854 | "version": "3.0.1", 855 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 856 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 857 | "dev": true, 858 | "dependencies": { 859 | "path-type": "^4.0.0" 860 | }, 861 | "engines": { 862 | "node": ">=8" 863 | } 864 | }, 865 | "node_modules/doctrine": { 866 | "version": "3.0.0", 867 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 868 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 869 | "dev": true, 870 | "dependencies": { 871 | "esutils": "^2.0.2" 872 | }, 873 | "engines": { 874 | "node": ">=6.0.0" 875 | } 876 | }, 877 | "node_modules/eastasianwidth": { 878 | "version": "0.2.0", 879 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 880 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 881 | "dev": true 882 | }, 883 | "node_modules/emoji-regex": { 884 | "version": "10.3.0", 885 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", 886 | "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", 887 | "dev": true 888 | }, 889 | "node_modules/escalade": { 890 | "version": "3.1.2", 891 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 892 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 893 | "dev": true, 894 | "engines": { 895 | "node": ">=6" 896 | } 897 | }, 898 | "node_modules/escape-string-regexp": { 899 | "version": "4.0.0", 900 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 901 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 902 | "dev": true, 903 | "engines": { 904 | "node": ">=10" 905 | }, 906 | "funding": { 907 | "url": "https://github.com/sponsors/sindresorhus" 908 | } 909 | }, 910 | "node_modules/eslint": { 911 | "version": "8.57.0", 912 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", 913 | "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", 914 | "dev": true, 915 | "dependencies": { 916 | "@eslint-community/eslint-utils": "^4.2.0", 917 | "@eslint-community/regexpp": "^4.6.1", 918 | "@eslint/eslintrc": "^2.1.4", 919 | "@eslint/js": "8.57.0", 920 | "@humanwhocodes/config-array": "^0.11.14", 921 | "@humanwhocodes/module-importer": "^1.0.1", 922 | "@nodelib/fs.walk": "^1.2.8", 923 | "@ungap/structured-clone": "^1.2.0", 924 | "ajv": "^6.12.4", 925 | "chalk": "^4.0.0", 926 | "cross-spawn": "^7.0.2", 927 | "debug": "^4.3.2", 928 | "doctrine": "^3.0.0", 929 | "escape-string-regexp": "^4.0.0", 930 | "eslint-scope": "^7.2.2", 931 | "eslint-visitor-keys": "^3.4.3", 932 | "espree": "^9.6.1", 933 | "esquery": "^1.4.2", 934 | "esutils": "^2.0.2", 935 | "fast-deep-equal": "^3.1.3", 936 | "file-entry-cache": "^6.0.1", 937 | "find-up": "^5.0.0", 938 | "glob-parent": "^6.0.2", 939 | "globals": "^13.19.0", 940 | "graphemer": "^1.4.0", 941 | "ignore": "^5.2.0", 942 | "imurmurhash": "^0.1.4", 943 | "is-glob": "^4.0.0", 944 | "is-path-inside": "^3.0.3", 945 | "js-yaml": "^4.1.0", 946 | "json-stable-stringify-without-jsonify": "^1.0.1", 947 | "levn": "^0.4.1", 948 | "lodash.merge": "^4.6.2", 949 | "minimatch": "^3.1.2", 950 | "natural-compare": "^1.4.0", 951 | "optionator": "^0.9.3", 952 | "strip-ansi": "^6.0.1", 953 | "text-table": "^0.2.0" 954 | }, 955 | "bin": { 956 | "eslint": "bin/eslint.js" 957 | }, 958 | "engines": { 959 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 960 | }, 961 | "funding": { 962 | "url": "https://opencollective.com/eslint" 963 | } 964 | }, 965 | "node_modules/eslint-scope": { 966 | "version": "5.1.1", 967 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 968 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 969 | "dev": true, 970 | "dependencies": { 971 | "esrecurse": "^4.3.0", 972 | "estraverse": "^4.1.1" 973 | }, 974 | "engines": { 975 | "node": ">=8.0.0" 976 | } 977 | }, 978 | "node_modules/eslint-visitor-keys": { 979 | "version": "3.4.3", 980 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 981 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 982 | "dev": true, 983 | "engines": { 984 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 985 | }, 986 | "funding": { 987 | "url": "https://opencollective.com/eslint" 988 | } 989 | }, 990 | "node_modules/eslint/node_modules/eslint-scope": { 991 | "version": "7.2.2", 992 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 993 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 994 | "dev": true, 995 | "dependencies": { 996 | "esrecurse": "^4.3.0", 997 | "estraverse": "^5.2.0" 998 | }, 999 | "engines": { 1000 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1001 | }, 1002 | "funding": { 1003 | "url": "https://opencollective.com/eslint" 1004 | } 1005 | }, 1006 | "node_modules/eslint/node_modules/estraverse": { 1007 | "version": "5.3.0", 1008 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1009 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1010 | "dev": true, 1011 | "engines": { 1012 | "node": ">=4.0" 1013 | } 1014 | }, 1015 | "node_modules/espree": { 1016 | "version": "9.6.1", 1017 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 1018 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 1019 | "dev": true, 1020 | "dependencies": { 1021 | "acorn": "^8.9.0", 1022 | "acorn-jsx": "^5.3.2", 1023 | "eslint-visitor-keys": "^3.4.1" 1024 | }, 1025 | "engines": { 1026 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1027 | }, 1028 | "funding": { 1029 | "url": "https://opencollective.com/eslint" 1030 | } 1031 | }, 1032 | "node_modules/esquery": { 1033 | "version": "1.6.0", 1034 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 1035 | "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 1036 | "dev": true, 1037 | "dependencies": { 1038 | "estraverse": "^5.1.0" 1039 | }, 1040 | "engines": { 1041 | "node": ">=0.10" 1042 | } 1043 | }, 1044 | "node_modules/esquery/node_modules/estraverse": { 1045 | "version": "5.3.0", 1046 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1047 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1048 | "dev": true, 1049 | "engines": { 1050 | "node": ">=4.0" 1051 | } 1052 | }, 1053 | "node_modules/esrecurse": { 1054 | "version": "4.3.0", 1055 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1056 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1057 | "dev": true, 1058 | "dependencies": { 1059 | "estraverse": "^5.2.0" 1060 | }, 1061 | "engines": { 1062 | "node": ">=4.0" 1063 | } 1064 | }, 1065 | "node_modules/esrecurse/node_modules/estraverse": { 1066 | "version": "5.3.0", 1067 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1068 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1069 | "dev": true, 1070 | "engines": { 1071 | "node": ">=4.0" 1072 | } 1073 | }, 1074 | "node_modules/estraverse": { 1075 | "version": "4.3.0", 1076 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1077 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1078 | "dev": true, 1079 | "engines": { 1080 | "node": ">=4.0" 1081 | } 1082 | }, 1083 | "node_modules/esutils": { 1084 | "version": "2.0.3", 1085 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1086 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1087 | "dev": true, 1088 | "engines": { 1089 | "node": ">=0.10.0" 1090 | } 1091 | }, 1092 | "node_modules/fast-deep-equal": { 1093 | "version": "3.1.3", 1094 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1095 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1096 | "dev": true 1097 | }, 1098 | "node_modules/fast-glob": { 1099 | "version": "3.3.2", 1100 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 1101 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 1102 | "dev": true, 1103 | "dependencies": { 1104 | "@nodelib/fs.stat": "^2.0.2", 1105 | "@nodelib/fs.walk": "^1.2.3", 1106 | "glob-parent": "^5.1.2", 1107 | "merge2": "^1.3.0", 1108 | "micromatch": "^4.0.4" 1109 | }, 1110 | "engines": { 1111 | "node": ">=8.6.0" 1112 | } 1113 | }, 1114 | "node_modules/fast-glob/node_modules/glob-parent": { 1115 | "version": "5.1.2", 1116 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1117 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1118 | "dev": true, 1119 | "dependencies": { 1120 | "is-glob": "^4.0.1" 1121 | }, 1122 | "engines": { 1123 | "node": ">= 6" 1124 | } 1125 | }, 1126 | "node_modules/fast-json-stable-stringify": { 1127 | "version": "2.1.0", 1128 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1129 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1130 | "dev": true 1131 | }, 1132 | "node_modules/fast-levenshtein": { 1133 | "version": "2.0.6", 1134 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1135 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1136 | "dev": true 1137 | }, 1138 | "node_modules/fastq": { 1139 | "version": "1.17.1", 1140 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 1141 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 1142 | "dev": true, 1143 | "dependencies": { 1144 | "reusify": "^1.0.4" 1145 | } 1146 | }, 1147 | "node_modules/file-entry-cache": { 1148 | "version": "6.0.1", 1149 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1150 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1151 | "dev": true, 1152 | "dependencies": { 1153 | "flat-cache": "^3.0.4" 1154 | }, 1155 | "engines": { 1156 | "node": "^10.12.0 || >=12.0.0" 1157 | } 1158 | }, 1159 | "node_modules/fill-range": { 1160 | "version": "7.1.1", 1161 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1162 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1163 | "dev": true, 1164 | "dependencies": { 1165 | "to-regex-range": "^5.0.1" 1166 | }, 1167 | "engines": { 1168 | "node": ">=8" 1169 | } 1170 | }, 1171 | "node_modules/find-up": { 1172 | "version": "5.0.0", 1173 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1174 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1175 | "dev": true, 1176 | "dependencies": { 1177 | "locate-path": "^6.0.0", 1178 | "path-exists": "^4.0.0" 1179 | }, 1180 | "engines": { 1181 | "node": ">=10" 1182 | }, 1183 | "funding": { 1184 | "url": "https://github.com/sponsors/sindresorhus" 1185 | } 1186 | }, 1187 | "node_modules/flat": { 1188 | "version": "5.0.2", 1189 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1190 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1191 | "dev": true, 1192 | "bin": { 1193 | "flat": "cli.js" 1194 | } 1195 | }, 1196 | "node_modules/flat-cache": { 1197 | "version": "3.2.0", 1198 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 1199 | "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 1200 | "dev": true, 1201 | "dependencies": { 1202 | "flatted": "^3.2.9", 1203 | "keyv": "^4.5.3", 1204 | "rimraf": "^3.0.2" 1205 | }, 1206 | "engines": { 1207 | "node": "^10.12.0 || >=12.0.0" 1208 | } 1209 | }, 1210 | "node_modules/flatted": { 1211 | "version": "3.3.1", 1212 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", 1213 | "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", 1214 | "dev": true 1215 | }, 1216 | "node_modules/fs.realpath": { 1217 | "version": "1.0.0", 1218 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1219 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1220 | "dev": true 1221 | }, 1222 | "node_modules/fsevents": { 1223 | "version": "2.3.3", 1224 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1225 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1226 | "dev": true, 1227 | "hasInstallScript": true, 1228 | "optional": true, 1229 | "os": [ 1230 | "darwin" 1231 | ], 1232 | "engines": { 1233 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1234 | } 1235 | }, 1236 | "node_modules/get-caller-file": { 1237 | "version": "2.0.5", 1238 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1239 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1240 | "dev": true, 1241 | "engines": { 1242 | "node": "6.* || 8.* || >= 10.*" 1243 | } 1244 | }, 1245 | "node_modules/glob": { 1246 | "version": "8.1.0", 1247 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1248 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1249 | "deprecated": "Glob versions prior to v9 are no longer supported", 1250 | "dev": true, 1251 | "dependencies": { 1252 | "fs.realpath": "^1.0.0", 1253 | "inflight": "^1.0.4", 1254 | "inherits": "2", 1255 | "minimatch": "^5.0.1", 1256 | "once": "^1.3.0" 1257 | }, 1258 | "engines": { 1259 | "node": ">=12" 1260 | }, 1261 | "funding": { 1262 | "url": "https://github.com/sponsors/isaacs" 1263 | } 1264 | }, 1265 | "node_modules/glob-parent": { 1266 | "version": "6.0.2", 1267 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1268 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1269 | "dev": true, 1270 | "dependencies": { 1271 | "is-glob": "^4.0.3" 1272 | }, 1273 | "engines": { 1274 | "node": ">=10.13.0" 1275 | } 1276 | }, 1277 | "node_modules/glob/node_modules/brace-expansion": { 1278 | "version": "2.0.1", 1279 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1280 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1281 | "dev": true, 1282 | "dependencies": { 1283 | "balanced-match": "^1.0.0" 1284 | } 1285 | }, 1286 | "node_modules/glob/node_modules/minimatch": { 1287 | "version": "5.1.6", 1288 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1289 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1290 | "dev": true, 1291 | "dependencies": { 1292 | "brace-expansion": "^2.0.1" 1293 | }, 1294 | "engines": { 1295 | "node": ">=10" 1296 | } 1297 | }, 1298 | "node_modules/globals": { 1299 | "version": "13.24.0", 1300 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 1301 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 1302 | "dev": true, 1303 | "dependencies": { 1304 | "type-fest": "^0.20.2" 1305 | }, 1306 | "engines": { 1307 | "node": ">=8" 1308 | }, 1309 | "funding": { 1310 | "url": "https://github.com/sponsors/sindresorhus" 1311 | } 1312 | }, 1313 | "node_modules/globby": { 1314 | "version": "11.1.0", 1315 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1316 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1317 | "dev": true, 1318 | "dependencies": { 1319 | "array-union": "^2.1.0", 1320 | "dir-glob": "^3.0.1", 1321 | "fast-glob": "^3.2.9", 1322 | "ignore": "^5.2.0", 1323 | "merge2": "^1.4.1", 1324 | "slash": "^3.0.0" 1325 | }, 1326 | "engines": { 1327 | "node": ">=10" 1328 | }, 1329 | "funding": { 1330 | "url": "https://github.com/sponsors/sindresorhus" 1331 | } 1332 | }, 1333 | "node_modules/graphemer": { 1334 | "version": "1.4.0", 1335 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 1336 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 1337 | "dev": true 1338 | }, 1339 | "node_modules/has-flag": { 1340 | "version": "4.0.0", 1341 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1342 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1343 | "dev": true, 1344 | "engines": { 1345 | "node": ">=8" 1346 | } 1347 | }, 1348 | "node_modules/he": { 1349 | "version": "1.2.0", 1350 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1351 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1352 | "dev": true, 1353 | "bin": { 1354 | "he": "bin/he" 1355 | } 1356 | }, 1357 | "node_modules/http-proxy-agent": { 1358 | "version": "7.0.2", 1359 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", 1360 | "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", 1361 | "dev": true, 1362 | "dependencies": { 1363 | "agent-base": "^7.1.0", 1364 | "debug": "^4.3.4" 1365 | }, 1366 | "engines": { 1367 | "node": ">= 14" 1368 | } 1369 | }, 1370 | "node_modules/https-proxy-agent": { 1371 | "version": "7.0.5", 1372 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", 1373 | "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", 1374 | "dev": true, 1375 | "dependencies": { 1376 | "agent-base": "^7.0.2", 1377 | "debug": "4" 1378 | }, 1379 | "engines": { 1380 | "node": ">= 14" 1381 | } 1382 | }, 1383 | "node_modules/ieee754": { 1384 | "version": "1.2.1", 1385 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1386 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1387 | "dev": true, 1388 | "funding": [ 1389 | { 1390 | "type": "github", 1391 | "url": "https://github.com/sponsors/feross" 1392 | }, 1393 | { 1394 | "type": "patreon", 1395 | "url": "https://www.patreon.com/feross" 1396 | }, 1397 | { 1398 | "type": "consulting", 1399 | "url": "https://feross.org/support" 1400 | } 1401 | ] 1402 | }, 1403 | "node_modules/ignore": { 1404 | "version": "5.3.1", 1405 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 1406 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 1407 | "dev": true, 1408 | "engines": { 1409 | "node": ">= 4" 1410 | } 1411 | }, 1412 | "node_modules/immediate": { 1413 | "version": "3.0.6", 1414 | "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 1415 | "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", 1416 | "dev": true 1417 | }, 1418 | "node_modules/import-fresh": { 1419 | "version": "3.3.0", 1420 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1421 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1422 | "dev": true, 1423 | "dependencies": { 1424 | "parent-module": "^1.0.0", 1425 | "resolve-from": "^4.0.0" 1426 | }, 1427 | "engines": { 1428 | "node": ">=6" 1429 | }, 1430 | "funding": { 1431 | "url": "https://github.com/sponsors/sindresorhus" 1432 | } 1433 | }, 1434 | "node_modules/imurmurhash": { 1435 | "version": "0.1.4", 1436 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1437 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1438 | "dev": true, 1439 | "engines": { 1440 | "node": ">=0.8.19" 1441 | } 1442 | }, 1443 | "node_modules/inflight": { 1444 | "version": "1.0.6", 1445 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1446 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1447 | "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.", 1448 | "dev": true, 1449 | "dependencies": { 1450 | "once": "^1.3.0", 1451 | "wrappy": "1" 1452 | } 1453 | }, 1454 | "node_modules/inherits": { 1455 | "version": "2.0.4", 1456 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1457 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1458 | "dev": true 1459 | }, 1460 | "node_modules/is-binary-path": { 1461 | "version": "2.1.0", 1462 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1463 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1464 | "dev": true, 1465 | "dependencies": { 1466 | "binary-extensions": "^2.0.0" 1467 | }, 1468 | "engines": { 1469 | "node": ">=8" 1470 | } 1471 | }, 1472 | "node_modules/is-extglob": { 1473 | "version": "2.1.1", 1474 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1475 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1476 | "dev": true, 1477 | "engines": { 1478 | "node": ">=0.10.0" 1479 | } 1480 | }, 1481 | "node_modules/is-fullwidth-code-point": { 1482 | "version": "3.0.0", 1483 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1484 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1485 | "dev": true, 1486 | "engines": { 1487 | "node": ">=8" 1488 | } 1489 | }, 1490 | "node_modules/is-glob": { 1491 | "version": "4.0.3", 1492 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1493 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1494 | "dev": true, 1495 | "dependencies": { 1496 | "is-extglob": "^2.1.1" 1497 | }, 1498 | "engines": { 1499 | "node": ">=0.10.0" 1500 | } 1501 | }, 1502 | "node_modules/is-interactive": { 1503 | "version": "2.0.0", 1504 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", 1505 | "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", 1506 | "dev": true, 1507 | "engines": { 1508 | "node": ">=12" 1509 | }, 1510 | "funding": { 1511 | "url": "https://github.com/sponsors/sindresorhus" 1512 | } 1513 | }, 1514 | "node_modules/is-number": { 1515 | "version": "7.0.0", 1516 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1517 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1518 | "dev": true, 1519 | "engines": { 1520 | "node": ">=0.12.0" 1521 | } 1522 | }, 1523 | "node_modules/is-path-inside": { 1524 | "version": "3.0.3", 1525 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1526 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1527 | "dev": true, 1528 | "engines": { 1529 | "node": ">=8" 1530 | } 1531 | }, 1532 | "node_modules/is-plain-obj": { 1533 | "version": "2.1.0", 1534 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1535 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1536 | "dev": true, 1537 | "engines": { 1538 | "node": ">=8" 1539 | } 1540 | }, 1541 | "node_modules/is-unicode-supported": { 1542 | "version": "0.1.0", 1543 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1544 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1545 | "dev": true, 1546 | "engines": { 1547 | "node": ">=10" 1548 | }, 1549 | "funding": { 1550 | "url": "https://github.com/sponsors/sindresorhus" 1551 | } 1552 | }, 1553 | "node_modules/isarray": { 1554 | "version": "1.0.0", 1555 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1556 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 1557 | "dev": true 1558 | }, 1559 | "node_modules/isexe": { 1560 | "version": "2.0.0", 1561 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1562 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1563 | "dev": true 1564 | }, 1565 | "node_modules/js-yaml": { 1566 | "version": "4.1.0", 1567 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1568 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1569 | "dev": true, 1570 | "dependencies": { 1571 | "argparse": "^2.0.1" 1572 | }, 1573 | "bin": { 1574 | "js-yaml": "bin/js-yaml.js" 1575 | } 1576 | }, 1577 | "node_modules/json-buffer": { 1578 | "version": "3.0.1", 1579 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1580 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 1581 | "dev": true 1582 | }, 1583 | "node_modules/json-schema-traverse": { 1584 | "version": "0.4.1", 1585 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1586 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1587 | "dev": true 1588 | }, 1589 | "node_modules/json-stable-stringify-without-jsonify": { 1590 | "version": "1.0.1", 1591 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1592 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1593 | "dev": true 1594 | }, 1595 | "node_modules/jszip": { 1596 | "version": "3.10.1", 1597 | "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", 1598 | "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", 1599 | "dev": true, 1600 | "dependencies": { 1601 | "lie": "~3.3.0", 1602 | "pako": "~1.0.2", 1603 | "readable-stream": "~2.3.6", 1604 | "setimmediate": "^1.0.5" 1605 | } 1606 | }, 1607 | "node_modules/keyv": { 1608 | "version": "4.5.4", 1609 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 1610 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 1611 | "dev": true, 1612 | "dependencies": { 1613 | "json-buffer": "3.0.1" 1614 | } 1615 | }, 1616 | "node_modules/levn": { 1617 | "version": "0.4.1", 1618 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1619 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1620 | "dev": true, 1621 | "dependencies": { 1622 | "prelude-ls": "^1.2.1", 1623 | "type-check": "~0.4.0" 1624 | }, 1625 | "engines": { 1626 | "node": ">= 0.8.0" 1627 | } 1628 | }, 1629 | "node_modules/lie": { 1630 | "version": "3.3.0", 1631 | "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", 1632 | "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", 1633 | "dev": true, 1634 | "dependencies": { 1635 | "immediate": "~3.0.5" 1636 | } 1637 | }, 1638 | "node_modules/locate-path": { 1639 | "version": "6.0.0", 1640 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1641 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1642 | "dev": true, 1643 | "dependencies": { 1644 | "p-locate": "^5.0.0" 1645 | }, 1646 | "engines": { 1647 | "node": ">=10" 1648 | }, 1649 | "funding": { 1650 | "url": "https://github.com/sponsors/sindresorhus" 1651 | } 1652 | }, 1653 | "node_modules/lodash.merge": { 1654 | "version": "4.6.2", 1655 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1656 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1657 | "dev": true 1658 | }, 1659 | "node_modules/log-symbols": { 1660 | "version": "4.1.0", 1661 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1662 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1663 | "dev": true, 1664 | "dependencies": { 1665 | "chalk": "^4.1.0", 1666 | "is-unicode-supported": "^0.1.0" 1667 | }, 1668 | "engines": { 1669 | "node": ">=10" 1670 | }, 1671 | "funding": { 1672 | "url": "https://github.com/sponsors/sindresorhus" 1673 | } 1674 | }, 1675 | "node_modules/merge2": { 1676 | "version": "1.4.1", 1677 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1678 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1679 | "dev": true, 1680 | "engines": { 1681 | "node": ">= 8" 1682 | } 1683 | }, 1684 | "node_modules/micromatch": { 1685 | "version": "4.0.7", 1686 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", 1687 | "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 1688 | "dev": true, 1689 | "dependencies": { 1690 | "braces": "^3.0.3", 1691 | "picomatch": "^2.3.1" 1692 | }, 1693 | "engines": { 1694 | "node": ">=8.6" 1695 | } 1696 | }, 1697 | "node_modules/mimic-fn": { 1698 | "version": "2.1.0", 1699 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1700 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1701 | "dev": true, 1702 | "engines": { 1703 | "node": ">=6" 1704 | } 1705 | }, 1706 | "node_modules/minimatch": { 1707 | "version": "3.1.2", 1708 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1709 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1710 | "dev": true, 1711 | "dependencies": { 1712 | "brace-expansion": "^1.1.7" 1713 | }, 1714 | "engines": { 1715 | "node": "*" 1716 | } 1717 | }, 1718 | "node_modules/mocha": { 1719 | "version": "10.6.0", 1720 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.6.0.tgz", 1721 | "integrity": "sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==", 1722 | "dev": true, 1723 | "dependencies": { 1724 | "ansi-colors": "^4.1.3", 1725 | "browser-stdout": "^1.3.1", 1726 | "chokidar": "^3.5.3", 1727 | "debug": "^4.3.5", 1728 | "diff": "^5.2.0", 1729 | "escape-string-regexp": "^4.0.0", 1730 | "find-up": "^5.0.0", 1731 | "glob": "^8.1.0", 1732 | "he": "^1.2.0", 1733 | "js-yaml": "^4.1.0", 1734 | "log-symbols": "^4.1.0", 1735 | "minimatch": "^5.1.6", 1736 | "ms": "^2.1.3", 1737 | "serialize-javascript": "^6.0.2", 1738 | "strip-json-comments": "^3.1.1", 1739 | "supports-color": "^8.1.1", 1740 | "workerpool": "^6.5.1", 1741 | "yargs": "^16.2.0", 1742 | "yargs-parser": "^20.2.9", 1743 | "yargs-unparser": "^2.0.0" 1744 | }, 1745 | "bin": { 1746 | "_mocha": "bin/_mocha", 1747 | "mocha": "bin/mocha.js" 1748 | }, 1749 | "engines": { 1750 | "node": ">= 14.0.0" 1751 | } 1752 | }, 1753 | "node_modules/mocha/node_modules/brace-expansion": { 1754 | "version": "2.0.1", 1755 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1756 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1757 | "dev": true, 1758 | "dependencies": { 1759 | "balanced-match": "^1.0.0" 1760 | } 1761 | }, 1762 | "node_modules/mocha/node_modules/minimatch": { 1763 | "version": "5.1.6", 1764 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1765 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1766 | "dev": true, 1767 | "dependencies": { 1768 | "brace-expansion": "^2.0.1" 1769 | }, 1770 | "engines": { 1771 | "node": ">=10" 1772 | } 1773 | }, 1774 | "node_modules/mocha/node_modules/ms": { 1775 | "version": "2.1.3", 1776 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1777 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1778 | "dev": true 1779 | }, 1780 | "node_modules/mocha/node_modules/supports-color": { 1781 | "version": "8.1.1", 1782 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1783 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1784 | "dev": true, 1785 | "dependencies": { 1786 | "has-flag": "^4.0.0" 1787 | }, 1788 | "engines": { 1789 | "node": ">=10" 1790 | }, 1791 | "funding": { 1792 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1793 | } 1794 | }, 1795 | "node_modules/ms": { 1796 | "version": "2.1.2", 1797 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1798 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1799 | "dev": true 1800 | }, 1801 | "node_modules/natural-compare": { 1802 | "version": "1.4.0", 1803 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1804 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1805 | "dev": true 1806 | }, 1807 | "node_modules/natural-compare-lite": { 1808 | "version": "1.4.0", 1809 | "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", 1810 | "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", 1811 | "dev": true 1812 | }, 1813 | "node_modules/normalize-path": { 1814 | "version": "3.0.0", 1815 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1816 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1817 | "dev": true, 1818 | "engines": { 1819 | "node": ">=0.10.0" 1820 | } 1821 | }, 1822 | "node_modules/once": { 1823 | "version": "1.4.0", 1824 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1825 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1826 | "dev": true, 1827 | "dependencies": { 1828 | "wrappy": "1" 1829 | } 1830 | }, 1831 | "node_modules/onetime": { 1832 | "version": "5.1.2", 1833 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1834 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1835 | "dev": true, 1836 | "dependencies": { 1837 | "mimic-fn": "^2.1.0" 1838 | }, 1839 | "engines": { 1840 | "node": ">=6" 1841 | }, 1842 | "funding": { 1843 | "url": "https://github.com/sponsors/sindresorhus" 1844 | } 1845 | }, 1846 | "node_modules/optionator": { 1847 | "version": "0.9.4", 1848 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 1849 | "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 1850 | "dev": true, 1851 | "dependencies": { 1852 | "deep-is": "^0.1.3", 1853 | "fast-levenshtein": "^2.0.6", 1854 | "levn": "^0.4.1", 1855 | "prelude-ls": "^1.2.1", 1856 | "type-check": "^0.4.0", 1857 | "word-wrap": "^1.2.5" 1858 | }, 1859 | "engines": { 1860 | "node": ">= 0.8.0" 1861 | } 1862 | }, 1863 | "node_modules/ora": { 1864 | "version": "7.0.1", 1865 | "resolved": "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz", 1866 | "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==", 1867 | "dev": true, 1868 | "dependencies": { 1869 | "chalk": "^5.3.0", 1870 | "cli-cursor": "^4.0.0", 1871 | "cli-spinners": "^2.9.0", 1872 | "is-interactive": "^2.0.0", 1873 | "is-unicode-supported": "^1.3.0", 1874 | "log-symbols": "^5.1.0", 1875 | "stdin-discarder": "^0.1.0", 1876 | "string-width": "^6.1.0", 1877 | "strip-ansi": "^7.1.0" 1878 | }, 1879 | "engines": { 1880 | "node": ">=16" 1881 | }, 1882 | "funding": { 1883 | "url": "https://github.com/sponsors/sindresorhus" 1884 | } 1885 | }, 1886 | "node_modules/ora/node_modules/ansi-regex": { 1887 | "version": "6.0.1", 1888 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 1889 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 1890 | "dev": true, 1891 | "engines": { 1892 | "node": ">=12" 1893 | }, 1894 | "funding": { 1895 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 1896 | } 1897 | }, 1898 | "node_modules/ora/node_modules/chalk": { 1899 | "version": "5.3.0", 1900 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", 1901 | "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", 1902 | "dev": true, 1903 | "engines": { 1904 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 1905 | }, 1906 | "funding": { 1907 | "url": "https://github.com/chalk/chalk?sponsor=1" 1908 | } 1909 | }, 1910 | "node_modules/ora/node_modules/is-unicode-supported": { 1911 | "version": "1.3.0", 1912 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", 1913 | "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", 1914 | "dev": true, 1915 | "engines": { 1916 | "node": ">=12" 1917 | }, 1918 | "funding": { 1919 | "url": "https://github.com/sponsors/sindresorhus" 1920 | } 1921 | }, 1922 | "node_modules/ora/node_modules/log-symbols": { 1923 | "version": "5.1.0", 1924 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", 1925 | "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", 1926 | "dev": true, 1927 | "dependencies": { 1928 | "chalk": "^5.0.0", 1929 | "is-unicode-supported": "^1.1.0" 1930 | }, 1931 | "engines": { 1932 | "node": ">=12" 1933 | }, 1934 | "funding": { 1935 | "url": "https://github.com/sponsors/sindresorhus" 1936 | } 1937 | }, 1938 | "node_modules/ora/node_modules/strip-ansi": { 1939 | "version": "7.1.0", 1940 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 1941 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 1942 | "dev": true, 1943 | "dependencies": { 1944 | "ansi-regex": "^6.0.1" 1945 | }, 1946 | "engines": { 1947 | "node": ">=12" 1948 | }, 1949 | "funding": { 1950 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 1951 | } 1952 | }, 1953 | "node_modules/p-limit": { 1954 | "version": "3.1.0", 1955 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1956 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1957 | "dev": true, 1958 | "dependencies": { 1959 | "yocto-queue": "^0.1.0" 1960 | }, 1961 | "engines": { 1962 | "node": ">=10" 1963 | }, 1964 | "funding": { 1965 | "url": "https://github.com/sponsors/sindresorhus" 1966 | } 1967 | }, 1968 | "node_modules/p-locate": { 1969 | "version": "5.0.0", 1970 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1971 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1972 | "dev": true, 1973 | "dependencies": { 1974 | "p-limit": "^3.0.2" 1975 | }, 1976 | "engines": { 1977 | "node": ">=10" 1978 | }, 1979 | "funding": { 1980 | "url": "https://github.com/sponsors/sindresorhus" 1981 | } 1982 | }, 1983 | "node_modules/pako": { 1984 | "version": "1.0.11", 1985 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 1986 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 1987 | "dev": true 1988 | }, 1989 | "node_modules/parent-module": { 1990 | "version": "1.0.1", 1991 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1992 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1993 | "dev": true, 1994 | "dependencies": { 1995 | "callsites": "^3.0.0" 1996 | }, 1997 | "engines": { 1998 | "node": ">=6" 1999 | } 2000 | }, 2001 | "node_modules/path-exists": { 2002 | "version": "4.0.0", 2003 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2004 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2005 | "dev": true, 2006 | "engines": { 2007 | "node": ">=8" 2008 | } 2009 | }, 2010 | "node_modules/path-is-absolute": { 2011 | "version": "1.0.1", 2012 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2013 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2014 | "dev": true, 2015 | "engines": { 2016 | "node": ">=0.10.0" 2017 | } 2018 | }, 2019 | "node_modules/path-key": { 2020 | "version": "3.1.1", 2021 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2022 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2023 | "dev": true, 2024 | "engines": { 2025 | "node": ">=8" 2026 | } 2027 | }, 2028 | "node_modules/path-type": { 2029 | "version": "4.0.0", 2030 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2031 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2032 | "dev": true, 2033 | "engines": { 2034 | "node": ">=8" 2035 | } 2036 | }, 2037 | "node_modules/picomatch": { 2038 | "version": "2.3.1", 2039 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2040 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2041 | "dev": true, 2042 | "engines": { 2043 | "node": ">=8.6" 2044 | }, 2045 | "funding": { 2046 | "url": "https://github.com/sponsors/jonschlinkert" 2047 | } 2048 | }, 2049 | "node_modules/prelude-ls": { 2050 | "version": "1.2.1", 2051 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2052 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2053 | "dev": true, 2054 | "engines": { 2055 | "node": ">= 0.8.0" 2056 | } 2057 | }, 2058 | "node_modules/process-nextick-args": { 2059 | "version": "2.0.1", 2060 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2061 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 2062 | "dev": true 2063 | }, 2064 | "node_modules/punycode": { 2065 | "version": "2.3.1", 2066 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 2067 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 2068 | "dev": true, 2069 | "engines": { 2070 | "node": ">=6" 2071 | } 2072 | }, 2073 | "node_modules/queue-microtask": { 2074 | "version": "1.2.3", 2075 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2076 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2077 | "dev": true, 2078 | "funding": [ 2079 | { 2080 | "type": "github", 2081 | "url": "https://github.com/sponsors/feross" 2082 | }, 2083 | { 2084 | "type": "patreon", 2085 | "url": "https://www.patreon.com/feross" 2086 | }, 2087 | { 2088 | "type": "consulting", 2089 | "url": "https://feross.org/support" 2090 | } 2091 | ] 2092 | }, 2093 | "node_modules/randombytes": { 2094 | "version": "2.1.0", 2095 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2096 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2097 | "dev": true, 2098 | "dependencies": { 2099 | "safe-buffer": "^5.1.0" 2100 | } 2101 | }, 2102 | "node_modules/readable-stream": { 2103 | "version": "2.3.8", 2104 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 2105 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 2106 | "dev": true, 2107 | "dependencies": { 2108 | "core-util-is": "~1.0.0", 2109 | "inherits": "~2.0.3", 2110 | "isarray": "~1.0.0", 2111 | "process-nextick-args": "~2.0.0", 2112 | "safe-buffer": "~5.1.1", 2113 | "string_decoder": "~1.1.1", 2114 | "util-deprecate": "~1.0.1" 2115 | } 2116 | }, 2117 | "node_modules/readdirp": { 2118 | "version": "3.6.0", 2119 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2120 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2121 | "dev": true, 2122 | "dependencies": { 2123 | "picomatch": "^2.2.1" 2124 | }, 2125 | "engines": { 2126 | "node": ">=8.10.0" 2127 | } 2128 | }, 2129 | "node_modules/require-directory": { 2130 | "version": "2.1.1", 2131 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2132 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 2133 | "dev": true, 2134 | "engines": { 2135 | "node": ">=0.10.0" 2136 | } 2137 | }, 2138 | "node_modules/resolve-from": { 2139 | "version": "4.0.0", 2140 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2141 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2142 | "dev": true, 2143 | "engines": { 2144 | "node": ">=4" 2145 | } 2146 | }, 2147 | "node_modules/restore-cursor": { 2148 | "version": "4.0.0", 2149 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", 2150 | "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", 2151 | "dev": true, 2152 | "dependencies": { 2153 | "onetime": "^5.1.0", 2154 | "signal-exit": "^3.0.2" 2155 | }, 2156 | "engines": { 2157 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2158 | }, 2159 | "funding": { 2160 | "url": "https://github.com/sponsors/sindresorhus" 2161 | } 2162 | }, 2163 | "node_modules/reusify": { 2164 | "version": "1.0.4", 2165 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2166 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2167 | "dev": true, 2168 | "engines": { 2169 | "iojs": ">=1.0.0", 2170 | "node": ">=0.10.0" 2171 | } 2172 | }, 2173 | "node_modules/rimraf": { 2174 | "version": "3.0.2", 2175 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2176 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2177 | "deprecated": "Rimraf versions prior to v4 are no longer supported", 2178 | "dev": true, 2179 | "dependencies": { 2180 | "glob": "^7.1.3" 2181 | }, 2182 | "bin": { 2183 | "rimraf": "bin.js" 2184 | }, 2185 | "funding": { 2186 | "url": "https://github.com/sponsors/isaacs" 2187 | } 2188 | }, 2189 | "node_modules/rimraf/node_modules/glob": { 2190 | "version": "7.2.3", 2191 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2192 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2193 | "deprecated": "Glob versions prior to v9 are no longer supported", 2194 | "dev": true, 2195 | "dependencies": { 2196 | "fs.realpath": "^1.0.0", 2197 | "inflight": "^1.0.4", 2198 | "inherits": "2", 2199 | "minimatch": "^3.1.1", 2200 | "once": "^1.3.0", 2201 | "path-is-absolute": "^1.0.0" 2202 | }, 2203 | "engines": { 2204 | "node": "*" 2205 | }, 2206 | "funding": { 2207 | "url": "https://github.com/sponsors/isaacs" 2208 | } 2209 | }, 2210 | "node_modules/run-parallel": { 2211 | "version": "1.2.0", 2212 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2213 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2214 | "dev": true, 2215 | "funding": [ 2216 | { 2217 | "type": "github", 2218 | "url": "https://github.com/sponsors/feross" 2219 | }, 2220 | { 2221 | "type": "patreon", 2222 | "url": "https://www.patreon.com/feross" 2223 | }, 2224 | { 2225 | "type": "consulting", 2226 | "url": "https://feross.org/support" 2227 | } 2228 | ], 2229 | "dependencies": { 2230 | "queue-microtask": "^1.2.2" 2231 | } 2232 | }, 2233 | "node_modules/safe-buffer": { 2234 | "version": "5.1.2", 2235 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2236 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2237 | "dev": true 2238 | }, 2239 | "node_modules/semver": { 2240 | "version": "7.6.2", 2241 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", 2242 | "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", 2243 | "dev": true, 2244 | "bin": { 2245 | "semver": "bin/semver.js" 2246 | }, 2247 | "engines": { 2248 | "node": ">=10" 2249 | } 2250 | }, 2251 | "node_modules/serialize-javascript": { 2252 | "version": "6.0.2", 2253 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 2254 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 2255 | "dev": true, 2256 | "dependencies": { 2257 | "randombytes": "^2.1.0" 2258 | } 2259 | }, 2260 | "node_modules/setimmediate": { 2261 | "version": "1.0.5", 2262 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 2263 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", 2264 | "dev": true 2265 | }, 2266 | "node_modules/shebang-command": { 2267 | "version": "2.0.0", 2268 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2269 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2270 | "dev": true, 2271 | "dependencies": { 2272 | "shebang-regex": "^3.0.0" 2273 | }, 2274 | "engines": { 2275 | "node": ">=8" 2276 | } 2277 | }, 2278 | "node_modules/shebang-regex": { 2279 | "version": "3.0.0", 2280 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2281 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2282 | "dev": true, 2283 | "engines": { 2284 | "node": ">=8" 2285 | } 2286 | }, 2287 | "node_modules/signal-exit": { 2288 | "version": "3.0.7", 2289 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2290 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 2291 | "dev": true 2292 | }, 2293 | "node_modules/slash": { 2294 | "version": "3.0.0", 2295 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2296 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2297 | "dev": true, 2298 | "engines": { 2299 | "node": ">=8" 2300 | } 2301 | }, 2302 | "node_modules/stdin-discarder": { 2303 | "version": "0.1.0", 2304 | "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", 2305 | "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", 2306 | "dev": true, 2307 | "dependencies": { 2308 | "bl": "^5.0.0" 2309 | }, 2310 | "engines": { 2311 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2312 | }, 2313 | "funding": { 2314 | "url": "https://github.com/sponsors/sindresorhus" 2315 | } 2316 | }, 2317 | "node_modules/string_decoder": { 2318 | "version": "1.1.1", 2319 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2320 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2321 | "dev": true, 2322 | "dependencies": { 2323 | "safe-buffer": "~5.1.0" 2324 | } 2325 | }, 2326 | "node_modules/string-width": { 2327 | "version": "6.1.0", 2328 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", 2329 | "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", 2330 | "dev": true, 2331 | "dependencies": { 2332 | "eastasianwidth": "^0.2.0", 2333 | "emoji-regex": "^10.2.1", 2334 | "strip-ansi": "^7.0.1" 2335 | }, 2336 | "engines": { 2337 | "node": ">=16" 2338 | }, 2339 | "funding": { 2340 | "url": "https://github.com/sponsors/sindresorhus" 2341 | } 2342 | }, 2343 | "node_modules/string-width/node_modules/ansi-regex": { 2344 | "version": "6.0.1", 2345 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 2346 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 2347 | "dev": true, 2348 | "engines": { 2349 | "node": ">=12" 2350 | }, 2351 | "funding": { 2352 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 2353 | } 2354 | }, 2355 | "node_modules/string-width/node_modules/strip-ansi": { 2356 | "version": "7.1.0", 2357 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 2358 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 2359 | "dev": true, 2360 | "dependencies": { 2361 | "ansi-regex": "^6.0.1" 2362 | }, 2363 | "engines": { 2364 | "node": ">=12" 2365 | }, 2366 | "funding": { 2367 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 2368 | } 2369 | }, 2370 | "node_modules/strip-ansi": { 2371 | "version": "6.0.1", 2372 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2373 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2374 | "dev": true, 2375 | "dependencies": { 2376 | "ansi-regex": "^5.0.1" 2377 | }, 2378 | "engines": { 2379 | "node": ">=8" 2380 | } 2381 | }, 2382 | "node_modules/strip-json-comments": { 2383 | "version": "3.1.1", 2384 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2385 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2386 | "dev": true, 2387 | "engines": { 2388 | "node": ">=8" 2389 | }, 2390 | "funding": { 2391 | "url": "https://github.com/sponsors/sindresorhus" 2392 | } 2393 | }, 2394 | "node_modules/supports-color": { 2395 | "version": "7.2.0", 2396 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2397 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2398 | "dev": true, 2399 | "dependencies": { 2400 | "has-flag": "^4.0.0" 2401 | }, 2402 | "engines": { 2403 | "node": ">=8" 2404 | } 2405 | }, 2406 | "node_modules/text-table": { 2407 | "version": "0.2.0", 2408 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2409 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2410 | "dev": true 2411 | }, 2412 | "node_modules/to-regex-range": { 2413 | "version": "5.0.1", 2414 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2415 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2416 | "dev": true, 2417 | "dependencies": { 2418 | "is-number": "^7.0.0" 2419 | }, 2420 | "engines": { 2421 | "node": ">=8.0" 2422 | } 2423 | }, 2424 | "node_modules/tslib": { 2425 | "version": "1.14.1", 2426 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 2427 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 2428 | "dev": true 2429 | }, 2430 | "node_modules/tsutils": { 2431 | "version": "3.21.0", 2432 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 2433 | "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 2434 | "dev": true, 2435 | "dependencies": { 2436 | "tslib": "^1.8.1" 2437 | }, 2438 | "engines": { 2439 | "node": ">= 6" 2440 | }, 2441 | "peerDependencies": { 2442 | "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" 2443 | } 2444 | }, 2445 | "node_modules/type-check": { 2446 | "version": "0.4.0", 2447 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2448 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2449 | "dev": true, 2450 | "dependencies": { 2451 | "prelude-ls": "^1.2.1" 2452 | }, 2453 | "engines": { 2454 | "node": ">= 0.8.0" 2455 | } 2456 | }, 2457 | "node_modules/type-fest": { 2458 | "version": "0.20.2", 2459 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2460 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2461 | "dev": true, 2462 | "engines": { 2463 | "node": ">=10" 2464 | }, 2465 | "funding": { 2466 | "url": "https://github.com/sponsors/sindresorhus" 2467 | } 2468 | }, 2469 | "node_modules/typescript": { 2470 | "version": "4.9.5", 2471 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 2472 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 2473 | "dev": true, 2474 | "bin": { 2475 | "tsc": "bin/tsc", 2476 | "tsserver": "bin/tsserver" 2477 | }, 2478 | "engines": { 2479 | "node": ">=4.2.0" 2480 | } 2481 | }, 2482 | "node_modules/uri-js": { 2483 | "version": "4.4.1", 2484 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2485 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2486 | "dev": true, 2487 | "dependencies": { 2488 | "punycode": "^2.1.0" 2489 | } 2490 | }, 2491 | "node_modules/util-deprecate": { 2492 | "version": "1.0.2", 2493 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2494 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2495 | "dev": true 2496 | }, 2497 | "node_modules/which": { 2498 | "version": "2.0.2", 2499 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2500 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2501 | "dev": true, 2502 | "dependencies": { 2503 | "isexe": "^2.0.0" 2504 | }, 2505 | "bin": { 2506 | "node-which": "bin/node-which" 2507 | }, 2508 | "engines": { 2509 | "node": ">= 8" 2510 | } 2511 | }, 2512 | "node_modules/word-wrap": { 2513 | "version": "1.2.5", 2514 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 2515 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 2516 | "dev": true, 2517 | "engines": { 2518 | "node": ">=0.10.0" 2519 | } 2520 | }, 2521 | "node_modules/workerpool": { 2522 | "version": "6.5.1", 2523 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", 2524 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", 2525 | "dev": true 2526 | }, 2527 | "node_modules/wrap-ansi": { 2528 | "version": "7.0.0", 2529 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2530 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2531 | "dev": true, 2532 | "dependencies": { 2533 | "ansi-styles": "^4.0.0", 2534 | "string-width": "^4.1.0", 2535 | "strip-ansi": "^6.0.0" 2536 | }, 2537 | "engines": { 2538 | "node": ">=10" 2539 | }, 2540 | "funding": { 2541 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2542 | } 2543 | }, 2544 | "node_modules/wrap-ansi/node_modules/emoji-regex": { 2545 | "version": "8.0.0", 2546 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2547 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2548 | "dev": true 2549 | }, 2550 | "node_modules/wrap-ansi/node_modules/string-width": { 2551 | "version": "4.2.3", 2552 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2553 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2554 | "dev": true, 2555 | "dependencies": { 2556 | "emoji-regex": "^8.0.0", 2557 | "is-fullwidth-code-point": "^3.0.0", 2558 | "strip-ansi": "^6.0.1" 2559 | }, 2560 | "engines": { 2561 | "node": ">=8" 2562 | } 2563 | }, 2564 | "node_modules/wrappy": { 2565 | "version": "1.0.2", 2566 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2567 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2568 | "dev": true 2569 | }, 2570 | "node_modules/y18n": { 2571 | "version": "5.0.8", 2572 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2573 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2574 | "dev": true, 2575 | "engines": { 2576 | "node": ">=10" 2577 | } 2578 | }, 2579 | "node_modules/yargs": { 2580 | "version": "16.2.0", 2581 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2582 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2583 | "dev": true, 2584 | "dependencies": { 2585 | "cliui": "^7.0.2", 2586 | "escalade": "^3.1.1", 2587 | "get-caller-file": "^2.0.5", 2588 | "require-directory": "^2.1.1", 2589 | "string-width": "^4.2.0", 2590 | "y18n": "^5.0.5", 2591 | "yargs-parser": "^20.2.2" 2592 | }, 2593 | "engines": { 2594 | "node": ">=10" 2595 | } 2596 | }, 2597 | "node_modules/yargs-parser": { 2598 | "version": "20.2.9", 2599 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 2600 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 2601 | "dev": true, 2602 | "engines": { 2603 | "node": ">=10" 2604 | } 2605 | }, 2606 | "node_modules/yargs-unparser": { 2607 | "version": "2.0.0", 2608 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 2609 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 2610 | "dev": true, 2611 | "dependencies": { 2612 | "camelcase": "^6.0.0", 2613 | "decamelize": "^4.0.0", 2614 | "flat": "^5.0.2", 2615 | "is-plain-obj": "^2.1.0" 2616 | }, 2617 | "engines": { 2618 | "node": ">=10" 2619 | } 2620 | }, 2621 | "node_modules/yargs/node_modules/emoji-regex": { 2622 | "version": "8.0.0", 2623 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2624 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2625 | "dev": true 2626 | }, 2627 | "node_modules/yargs/node_modules/string-width": { 2628 | "version": "4.2.3", 2629 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2630 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2631 | "dev": true, 2632 | "dependencies": { 2633 | "emoji-regex": "^8.0.0", 2634 | "is-fullwidth-code-point": "^3.0.0", 2635 | "strip-ansi": "^6.0.1" 2636 | }, 2637 | "engines": { 2638 | "node": ">=8" 2639 | } 2640 | }, 2641 | "node_modules/yocto-queue": { 2642 | "version": "0.1.0", 2643 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2644 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2645 | "dev": true, 2646 | "engines": { 2647 | "node": ">=10" 2648 | }, 2649 | "funding": { 2650 | "url": "https://github.com/sponsors/sindresorhus" 2651 | } 2652 | } 2653 | } 2654 | } 2655 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "perfex-dev-tools", 3 | "displayName": "perfex-dev-tools", 4 | "description": "extension que facilite el desarrollo de modulos y temas, que tenga scaffolding y snippets", 5 | "publisher": "AbrahamJosCorderoPrez", 6 | "version": "0.0.1", 7 | "engines": { 8 | "vscode": "^1.91.0" 9 | }, 10 | "categories": [ 11 | "Other" 12 | ], 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/abcoder0101/perfex-dev-tools.git" 16 | }, 17 | "activationEvents": [ 18 | "onCommand:perfex-dev-tools.createModule" 19 | ], 20 | "main": "./out/extension.js", 21 | "contributes": { 22 | "commands": [ 23 | { 24 | "command": "perfex-dev-tools.createModule", 25 | "title": "PX make module" 26 | } 27 | ], 28 | "snippets": [ 29 | { 30 | "language": "php", 31 | "path": "./snippets/php.json" 32 | } 33 | ] 34 | }, 35 | "scripts": { 36 | "vscode:prepublish": "npm run compile", 37 | "compile": "tsc -p ./", 38 | "watch": "tsc -watch -p ./", 39 | "pretest": "npm run compile && npm run lint", 40 | "lint": "eslint src --ext ts", 41 | "test": "node ./out/test/runTest.js" 42 | }, 43 | "devDependencies": { 44 | "@types/vscode": "^1.91.0", 45 | "@types/glob": "^8.0.0", 46 | "@types/mocha": "^10.0.0", 47 | "@types/node": "16.x", 48 | "@typescript-eslint/eslint-plugin": "^5.42.0", 49 | "@typescript-eslint/parser": "^5.42.0", 50 | "eslint": "^8.26.0", 51 | "glob": "^8.0.3", 52 | "mocha": "^10.1.0", 53 | "typescript": "^4.8.4", 54 | "@vscode/test-electron": "^2.2.0" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /snippets/php.json: -------------------------------------------------------------------------------- 1 | { 2 | "Module Activation Hook": { 3 | "prefix": "pxModuleActivationHook", 4 | "body": [ 5 | 6 | "/**", 7 | "* Register activation module hook", 8 | "*/", 9 | "register_activation_hook(MODULE_NAME, 'module_activation_hook');", 10 | "function module_activation_hook()", 11 | "{", 12 | " require_once(__DIR__ + '/install.php');", 13 | "}" 14 | ], 15 | "description": "Snippet for module activation hook." 16 | }, 17 | "Register Language Files": { 18 | "prefix": "pxRegisterLanguageFiles", 19 | "body": [ 20 | 21 | "register_language_files(MODULE_NAME, [MODULE_NAME]);" 22 | ], 23 | "description": "Snippet for registering language files." 24 | }, 25 | "Init Menu Items": { 26 | "prefix": "pxInitMenuItems", 27 | "body": [ 28 | 29 | "hooks()->add_action('admin_init', 'module_init_menu_items');", 30 | "function module_init_menu_items()", 31 | "{", 32 | " if (is_admin()) {", 33 | " \\$CI = &get_instance();", 34 | " \\$CI->app_menu->add_sidebar_menu_item('module-options', [", 35 | " 'collapse' => true,", 36 | " 'name' => _l('module'),", 37 | " 'position' => 40,", 38 | " 'icon' => 'fa fa-cogs',", 39 | " ]);", 40 | " \\$CI->app_menu->add_sidebar_children_item('module-options', [", 41 | " 'slug' => 'module-guide-options',", 42 | " 'name' => _l('module_guide'),", 43 | " 'href' => 'example.com',", 44 | " 'position' => 10,", 45 | " ]);", 46 | " }", 47 | "}" 48 | ], 49 | "description": "Snippet for initializing menu items." 50 | }, 51 | "Add Settings Tab": { 52 | "prefix": "pxAddSettingsTab", 53 | "body": [ 54 | 55 | "hooks()->add_action('admin_init', 'module_add_settings_tab');", 56 | "function module_add_settings_tab()", 57 | "{", 58 | " \\$CI = &get_instance();", 59 | " \\$CI->app_tabs->add_settings_tab('module_settings', [", 60 | " 'name' => _l('module_settings'),", 61 | " 'view' => MODULE_NAME + '/module_settings_view',", 62 | " 'position' => 101,", 63 | " ]);", 64 | "}" 65 | ], 66 | "description": "Snippet for adding a settings tab." 67 | }, 68 | "Register Staff Capabilities": { 69 | "prefix": "pxRegisterStaffCapabilities", 70 | "body": [ 71 | 72 | "hooks()->add_action('admin_init', 'module_register_staff_capabilities');", 73 | "function module_register_staff_capabilities()", 74 | "{", 75 | " \\$capabilities = [];", 76 | " \\$capabilities['capabilities'] = [", 77 | " 'view' => _l('permission_view') + '(' + _l('permission_global') + ')',", 78 | " 'create' => _l('permission_create'),", 79 | " 'edit' => _l('permission_edit'),", 80 | " 'delete' => _l('permission_delete'),", 81 | " ];", 82 | " register_staff_capabilities('module_capabilities', \\$capabilities, _l('module_capabilities'));", 83 | "}" 84 | ], 85 | "description": "Snippet for registering staff capabilities." 86 | }, 87 | "Clients Init Hook": { 88 | "prefix": "pxClientsInitHook", 89 | "body": [ 90 | 91 | "hooks()->add_action('clients_init', 'module_clients_init');", 92 | "", 93 | "function module_clients_init() {", 94 | " \\$button = get_option('module_button_option');", 95 | " if (\\$button != '' && is_client_logged_in()) {", 96 | " add_theme_menu_item('module-client', [", 97 | " 'name' => _l(\\$button),", 98 | " 'href' => site_url('#'),", 99 | " 'position' => 99,", 100 | " ]);", 101 | " }", 102 | "}" 103 | ], 104 | "description": "Snippet for clients init hook." 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import * as fs from 'fs'; 3 | import * as path from 'path'; 4 | 5 | export function activate(context: vscode.ExtensionContext) { 6 | let createModuleCommand = vscode.commands.registerCommand('perfex-dev-tools.createModule', async () => { 7 | // Solicitar el nombre del módulo al usuario 8 | const moduleName = await vscode.window.showInputBox({ prompt: 'Enter Module Name' }); 9 | if (!moduleName) { 10 | vscode.window.showErrorMessage('Module name is required'); 11 | return; 12 | } 13 | 14 | const moduleDescription = 'Default module description'; 15 | const moduleVersion = '1.0.0'; 16 | const moduleRequires = '1.0.0'; 17 | 18 | const workspaceFolders = vscode.workspace.workspaceFolders; 19 | if (workspaceFolders) { 20 | const rootPath = workspaceFolders[0].uri.fsPath; 21 | const moduleDirPath = path.join(rootPath, 'modules', moduleName); 22 | 23 | // Crear el directorio del módulo 24 | if (!fs.existsSync(moduleDirPath)) { 25 | fs.mkdirSync(moduleDirPath); 26 | } else { 27 | vscode.window.showWarningMessage(`Module ${moduleName} already exists.`); 28 | return; 29 | } 30 | 31 | // Crear el archivo de inicialización del módulo con la cabecera y datos por defecto 32 | const initFilePath = path.join(moduleDirPath, `${moduleName}.php`); 33 | const initFileContent = ``; 91 | 92 | fs.writeFileSync(initFilePath, initFileContent); 93 | 94 | vscode.window.showInformationMessage(`Module ${moduleName} created successfully!`); 95 | } 96 | }); 97 | 98 | context.subscriptions.push(createModuleCommand); 99 | } 100 | 101 | export function deactivate() {} 102 | -------------------------------------------------------------------------------- /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/extension.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | 3 | // You can import and use all API from the 'vscode' module 4 | // as well as import your extension to test it 5 | import * as vscode from 'vscode'; 6 | // import * as myExtension from '../../extension'; 7 | 8 | suite('Extension Test Suite', () => { 9 | vscode.window.showInformationMessage('Start all tests.'); 10 | 11 | test('Sample test', () => { 12 | assert.strictEqual(-1, [1, 2, 3].indexOf(5)); 13 | assert.strictEqual(-1, [1, 2, 3].indexOf(0)); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "ES2020", 5 | "outDir": "out", 6 | "lib": [ 7 | "ES2020" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src", 11 | "strict": true /* enable all strict type-checking options */ 12 | /* Additional Checks */ 13 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 14 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 15 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /vsc-extension-quickstart.md: -------------------------------------------------------------------------------- 1 | # Welcome to your VS Code Extension 2 | 3 | ## What's in the folder 4 | 5 | * This folder contains all of the files necessary for your extension. 6 | * `package.json` - this is the manifest file in which you declare your extension and command. 7 | * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. 8 | * `src/extension.ts` - this is the main file where you will provide the implementation of your command. 9 | * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. 10 | * We pass the function containing the implementation of the command as the second parameter to `registerCommand`. 11 | 12 | ## Get up and running straight away 13 | 14 | * Press `F5` to open a new window with your extension loaded. 15 | * Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. 16 | * Set breakpoints in your code inside `src/extension.ts` to debug your extension. 17 | * Find output from your extension in the debug console. 18 | 19 | ## Make changes 20 | 21 | * You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. 22 | * You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. 23 | 24 | ## Explore the API 25 | 26 | * You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. 27 | 28 | ## Run tests 29 | 30 | * Open the debug viewlet (`Ctrl+Shift+D` or `Cmd+Shift+D` on Mac) and from the launch configuration dropdown pick `Extension Tests`. 31 | * Press `F5` to run the tests in a new window with your extension loaded. 32 | * See the output of the test result in the debug console. 33 | * Make changes to `src/test/suite/extension.test.ts` or create new test files inside the `test/suite` folder. 34 | * The provided test runner will only consider files matching the name pattern `**.test.ts`. 35 | * You can create folders inside the `test` folder to structure your tests any way you want. 36 | 37 | ## Go further 38 | 39 | * [Follow UX guidelines](https://code.visualstudio.com/api/ux-guidelines/overview) to create extensions that seamlessly integrate with VS Code's native interface and patterns. 40 | * Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). 41 | * [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace. 42 | * Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). 43 | --------------------------------------------------------------------------------